diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 03f98f91938d..dc60d74efe1b 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,7 +2,7 @@ name: "Push multi-arch docker image to GAR" on: push: - branches: [ taiko ] + branches: [taiko, devnet-genesis-pacaya] tags: - "v*" @@ -19,9 +19,9 @@ jobs: platform: linux/amd64 - runner: arc-runner-set-arm64 platform: linux/arm64 - + runs-on: ${{ matrix.runner }} - + steps: - name: Prepare Environment run: | @@ -80,7 +80,7 @@ jobs: with: context: . cache-from: type=gha - cache-to: type=gha,mode=max + cache-to: type=gha,mode=max platforms: ${{ matrix.platform }} push: true tags: ${{ env.REGISTRY_IMAGE }} diff --git a/consensus/taiko/consensus.go b/consensus/taiko/consensus.go index 3ec5255c134d..46a4fedbb080 100644 --- a/consensus/taiko/consensus.go +++ b/consensus/taiko/consensus.go @@ -10,10 +10,12 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/consensus" + "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/tracing" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rpc" @@ -34,6 +36,9 @@ var ( AnchorV2Selector = crypto.Keccak256( []byte("anchorV2(uint64,bytes32,uint32,(uint8,uint8,uint32,uint64,uint32))"), )[:4] + AnchorV3Selector = crypto.Keccak256( + []byte("anchorV3(uint64,bytes32,bytes32,uint32,(uint8,uint8,uint32,uint64,uint32),bytes32[])"), + )[:4] AnchorGasLimit = uint64(250_000) ) @@ -41,11 +46,12 @@ var ( type Taiko struct { chainConfig *params.ChainConfig taikoL2Address common.Address + chainDB ethdb.Database } var _ = new(Taiko) -func New(chainConfig *params.ChainConfig) *Taiko { +func New(chainConfig *params.ChainConfig, chainDB ethdb.Database) *Taiko { taikoL2AddressPrefix := strings.TrimPrefix(chainConfig.ChainID.String(), "0") return &Taiko{ @@ -56,6 +62,7 @@ func New(chainConfig *params.ChainConfig) *Taiko { strings.Repeat("0", common.AddressLength*2-len(taikoL2AddressPrefix)-len(TaikoL2AddressSuffix)) + TaikoL2AddressSuffix, ), + chainDB: chainDB, } } @@ -82,7 +89,7 @@ func (t *Taiko) VerifyHeader(chain consensus.ChainHeaderReader, header *types.He return consensus.ErrUnknownAncestor } // Sanity checks passed, do a proper verification - return t.verifyHeader(chain, header, parent, time.Now().Unix()) + return t.verifyHeader(header, parent, time.Now().Unix()) } // VerifyHeaders is similar to VerifyHeader, but verifies a batch of headers @@ -109,7 +116,7 @@ func (t *Taiko) VerifyHeaders(chain consensus.ChainHeaderReader, headers []*type if parent == nil { err = consensus.ErrUnknownAncestor } else { - err = t.verifyHeader(chain, header, parent, unixNow) + err = t.verifyHeader(header, parent, unixNow) } select { case <-abort: @@ -121,11 +128,7 @@ func (t *Taiko) VerifyHeaders(chain consensus.ChainHeaderReader, headers []*type return abort, results } -func (t *Taiko) verifyHeader(chain consensus.ChainHeaderReader, header, parent *types.Header, unixNow int64) error { - if header.Time > uint64(unixNow) { - return consensus.ErrFutureBlock - } - +func (t *Taiko) verifyHeader(header, parent *types.Header, unixNow int64) error { // Ensure that the header's extra-data section is of a reasonable size (<= 32 bytes) if uint64(len(header.Extra)) > params.MaximumExtraDataSize { return fmt.Errorf("extra-data too long: %d > %d", len(header.Extra), params.MaximumExtraDataSize) @@ -171,6 +174,16 @@ func (t *Taiko) verifyHeader(chain consensus.ChainHeaderReader, header, parent * return ErrEmptyWithdrawalsHash } + l1Origin, err := rawdb.ReadL1Origin(t.chainDB, header.Number) + if err != nil { + return err + } + + // If the current block is not a preconfirmation block, then check the timestamp. + if l1Origin != nil && !l1Origin.IsPreconfBlock() && header.Time > uint64(unixNow) { + return consensus.ErrFutureBlock + } + return nil } @@ -290,7 +303,9 @@ func (t *Taiko) ValidateAnchorTx(tx *types.Transaction, header *types.Header) (b return false, nil } - if !bytes.HasPrefix(tx.Data(), AnchorSelector) && !bytes.HasPrefix(tx.Data(), AnchorV2Selector) { + if !bytes.HasPrefix(tx.Data(), AnchorSelector) && + !bytes.HasPrefix(tx.Data(), AnchorV2Selector) && + !bytes.HasPrefix(tx.Data(), AnchorV3Selector) { return false, nil } diff --git a/consensus/taiko/consensus_test.go b/consensus/taiko/consensus_test.go index 3e06ac658129..ba4785ff1d42 100644 --- a/consensus/taiko/consensus_test.go +++ b/consensus/taiko/consensus_test.go @@ -39,7 +39,7 @@ func init() { config.ArrowGlacierBlock = nil config.Ethash = nil config.Taiko = true - testEngine = taiko.New(config) + testEngine = taiko.New(config, rawdb.NewMemoryDatabase()) taikoL2AddressPrefix := strings.TrimPrefix(config.ChainID.String(), "0") diff --git a/core/rawdb/gen_taiko_l1_origin.go b/core/rawdb/gen_taiko_l1_origin.go index 6cbd6c3cdbc0..24659f7d4ccb 100644 --- a/core/rawdb/gen_taiko_l1_origin.go +++ b/core/rawdb/gen_taiko_l1_origin.go @@ -18,8 +18,8 @@ func (l L1Origin) MarshalJSON() ([]byte, error) { type L1Origin struct { BlockID *math.HexOrDecimal256 `json:"blockID" gencodec:"required"` L2BlockHash common.Hash `json:"l2BlockHash"` - L1BlockHeight *math.HexOrDecimal256 `json:"l1BlockHeight" gencodec:"required"` - L1BlockHash common.Hash `json:"l1BlockHash" gencodec:"required"` + L1BlockHeight *math.HexOrDecimal256 `json:"l1BlockHeight" rlp:"optional"` + L1BlockHash common.Hash `json:"l1BlockHash" rlp:"optional"` } var enc L1Origin enc.BlockID = (*math.HexOrDecimal256)(l.BlockID) @@ -34,8 +34,8 @@ func (l *L1Origin) UnmarshalJSON(input []byte) error { type L1Origin struct { BlockID *math.HexOrDecimal256 `json:"blockID" gencodec:"required"` L2BlockHash *common.Hash `json:"l2BlockHash"` - L1BlockHeight *math.HexOrDecimal256 `json:"l1BlockHeight" gencodec:"required"` - L1BlockHash *common.Hash `json:"l1BlockHash" gencodec:"required"` + L1BlockHeight *math.HexOrDecimal256 `json:"l1BlockHeight" rlp:"optional"` + L1BlockHash *common.Hash `json:"l1BlockHash" rlp:"optional"` } var dec L1Origin if err := json.Unmarshal(input, &dec); err != nil { @@ -48,13 +48,11 @@ func (l *L1Origin) UnmarshalJSON(input []byte) error { if dec.L2BlockHash != nil { l.L2BlockHash = *dec.L2BlockHash } - if dec.L1BlockHeight == nil { - return errors.New("missing required field 'l1BlockHeight' for L1Origin") + if dec.L1BlockHeight != nil { + l.L1BlockHeight = (*big.Int)(dec.L1BlockHeight) } - l.L1BlockHeight = (*big.Int)(dec.L1BlockHeight) - if dec.L1BlockHash == nil { - return errors.New("missing required field 'l1BlockHash' for L1Origin") + if dec.L1BlockHash != nil { + l.L1BlockHash = *dec.L1BlockHash } - l.L1BlockHash = *dec.L1BlockHash return nil } diff --git a/core/rawdb/taiko_l1_origin.go b/core/rawdb/taiko_l1_origin.go index aaa5c14832f3..7204643a9fe3 100644 --- a/core/rawdb/taiko_l1_origin.go +++ b/core/rawdb/taiko_l1_origin.go @@ -31,8 +31,8 @@ func l1OriginKey(blockID *big.Int) []byte { type L1Origin struct { BlockID *big.Int `json:"blockID" gencodec:"required"` L2BlockHash common.Hash `json:"l2BlockHash"` - L1BlockHeight *big.Int `json:"l1BlockHeight" gencodec:"required"` - L1BlockHash common.Hash `json:"l1BlockHash" gencodec:"required"` + L1BlockHeight *big.Int `json:"l1BlockHeight" rlp:"optional"` + L1BlockHash common.Hash `json:"l1BlockHash" rlp:"optional"` } type l1OriginMarshaling struct { @@ -40,6 +40,11 @@ type l1OriginMarshaling struct { L1BlockHeight *math.HexOrDecimal256 } +// IsPreconfBlock returns true if the L1Origin is for a preconfirmation block. +func (l *L1Origin) IsPreconfBlock() bool { + return l.L1BlockHeight == nil +} + // WriteL1Origin stores a L1Origin into the database. func WriteL1Origin(db ethdb.KeyValueWriter, blockID *big.Int, l1Origin *L1Origin) { data, err := rlp.EncodeToBytes(l1Origin) diff --git a/core/taiko_genesis.go b/core/taiko_genesis.go index 0803749f38e1..a2c88cd0b3d3 100644 --- a/core/taiko_genesis.go +++ b/core/taiko_genesis.go @@ -11,6 +11,7 @@ import ( var ( InternalDevnetOntakeBlock = new(big.Int).SetUint64(0) + PreconfDevnetOntakeBlock = common.Big0 HeklaOntakeBlock = new(big.Int).SetUint64(840_512) MainnetOntakeBlock = new(big.Int).SetUint64(538_304) ) @@ -54,6 +55,10 @@ func TaikoGenesisBlock(networkID uint64) *Genesis { chainConfig.ChainID = params.HeklaNetworkID chainConfig.OntakeBlock = HeklaOntakeBlock allocJSON = taikoGenesis.HeklaGenesisAllocJSON + case params.PreconfDevnetNetworkID.Uint64(): + chainConfig.ChainID = params.PreconfDevnetNetworkID + chainConfig.OntakeBlock = PreconfDevnetOntakeBlock + allocJSON = taikoGenesis.PreconfDevnetGenesisAllocJSON default: chainConfig.ChainID = params.TaikoInternalL2ANetworkID chainConfig.OntakeBlock = InternalDevnetOntakeBlock diff --git a/core/taiko_genesis/genesis_alloc.go b/core/taiko_genesis/genesis_alloc.go index dbaf56f8dc6e..ca9634635203 100644 --- a/core/taiko_genesis/genesis_alloc.go +++ b/core/taiko_genesis/genesis_alloc.go @@ -33,3 +33,6 @@ var HeklaGenesisAllocJSON []byte //go:embed mainnet.json var MainnetGenesisAllocJSON []byte + +//go:embed preconf_devnet.json +var PreconfDevnetGenesisAllocJSON []byte diff --git a/core/taiko_genesis/internal_l2a.json b/core/taiko_genesis/internal_l2a.json index 0b3610f0fe48..21af87fa4784 100644 --- a/core/taiko_genesis/internal_l2a.json +++ b/core/taiko_genesis/internal_l2a.json @@ -120,15 +120,15 @@ "balance": "0x3782dace9d90000000" }, "0x0167001000000000000000000000000000000006": { - "contractName": "SharedAddressManagerImpl", + "contractName": "SharedResolverImpl", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610300578063a86f9d9e1461031d578063d8f4648f1461033c578063e07baba61461035b578063e30c397814610391578063f2fde38b146103ae575f5ffd5b80635c975abb14610290578063715018a6146102b057806379ba5097146102c45780638456cb59146102d85780638abf6077146102ec575f5ffd5b80633ab76e9f116100ee5780633ab76e9f146102095780633eb6b8cf146102285780633f4ba83a146102475780634f1ef2861461025b57806352d1902d1461026e575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c65780633659cfe6146101ea575b5f5ffd5b348015610135575f5ffd5b5061013e6103cd565b005b34801561014b575f5ffd5b5061013e61015a36600461119f565b61047d565b34801561016a575f5ffd5b506101a96101793660046111d5565b6001600160401b03919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d1575f5ffd5b506101da610544565b60405190151581526020016101bd565b3480156101f5575f5ffd5b5061013e61020436600461119f565b61055c565b348015610214575f5ffd5b506097546101a9906001600160a01b031681565b348015610233575f5ffd5b506101a961024236600461120c565b610623565b348015610252575f5ffd5b5061013e610637565b61013e610269366004611259565b61064b565b348015610279575f5ffd5b50610282610700565b6040519081526020016101bd565b34801561029b575f5ffd5b506101da60c954610100900460ff1660021490565b3480156102bb575f5ffd5b5061013e6107b1565b3480156102cf575f5ffd5b5061013e6107c2565b3480156102e3575f5ffd5b5061013e610839565b3480156102f7575f5ffd5b506101a961084c565b34801561030b575f5ffd5b506033546001600160a01b03166101a9565b348015610328575f5ffd5b506101a961033736600461131c565b61085a565b348015610347575f5ffd5b5061013e610356366004611346565b61086d565b348015610366575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101bd565b34801561039c575f5ffd5b506065546001600160a01b03166101a9565b3480156103b9575f5ffd5b5061013e6103c836600461119f565b610949565b6103d56109ba565b5f54600290610100900460ff161580156103f557505f5460ff8083169116105b61041a5760405162461bcd60e51b815260040161041190611383565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff161580801561049b57505f54600160ff909116105b806104b45750303b1580156104b457505f5460ff166001145b6104d05760405162461bcd60e51b815260040161041190611383565b5f805460ff1916600117905580156104f1575f805461ff0019166101001790555b6104fb8230610a14565b8015610540575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261055360c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000061630036105a45760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000000066001600160a01b03166105d6610a53565b6001600160a01b0316146105fc5760405162461bcd60e51b81526004016104119061141d565b61060581610a6e565b604080515f8082526020820190925261062091839190610a76565b50565b5f61062f848484610be0565b949350505050565b61063f610c3c565b610649335f610ccc565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000061630036106935760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000000066001600160a01b03166106c5610a53565b6001600160a01b0316146106eb5760405162461bcd60e51b81526004016104119061141d565b6106f482610a6e565b61054082826001610a76565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000000006161461079f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610411565b505f5160206115565f395f51905f5290565b6107b96109ba565b6106495f610ce5565b60655433906001600160a01b031681146108305760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610411565b61062081610ce5565b610841610cfe565b610649336001610ccc565b5f610855610a53565b905090565b5f610866468484610be0565b9392505050565b6108756109ba565b6001600160401b0383165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108c65760405163a883089360e01b815260040160405180910390fd5b6001600160401b0384165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109516109ba565b606580546001600160a01b0383166001600160a01b031990911681179091556109826033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106495760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610411565b806001600160a01b038116610a3c5760405163538ba4f960e01b815260040160405180910390fd5b610a4583610d6f565b610a4e82610dcd565b505050565b5f5160206115565f395f51905f52546001600160a01b031690565b6106206109ba565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610aa957610a4e83610e3d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b03575060408051601f3d908101601f19168201909252610b0091810190611469565b60015b610b665760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610411565b5f5160206115565f395f51905f528114610bd45760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610411565b50610a4e838383610ed8565b5f610beb8484610f02565b90508180610c0157506001600160a01b03811615155b84849091610c3357604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610411565b50509392505050565b610c5060c954610100900460ff1660021490565b610c6d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561062081610fa4565b610d1260c954610100900460ff1660021490565b15610d305760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cc2565b5f54610100900460ff16610d955760405162461bcd60e51b815260040161041190611480565b610d9d610ff5565b610dbb6001600160a01b03821615610db55781610ce5565b33610ce5565b5060c9805461ff001916610100179055565b5f54610100900460ff16610df35760405162461bcd60e51b815260040161041190611480565b6001600160401b03461115610e1b5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381163b610eaa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610411565b5f5160206115565f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610ee18361101b565b5f82511180610eed5750805b15610a4e57610efc838361105a565b50505050565b6097545f906001600160a01b031680610f2e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f80573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062f91906114cb565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166106495760405162461bcd60e51b815260040161041190611480565b61102481610e3d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061086683836040518060600160405280602781526020016115766027913960605f5f856001600160a01b0316856040516110969190611508565b5f60405180830381855af49150503d805f81146110ce576040519150601f19603f3d011682016040523d82523d5f602084013e6110d3565b606091505b50915091506110e4868383876110ee565b9695505050505050565b6060831561115c5782515f03611155576001600160a01b0385163b6111555760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610411565b508161062f565b61062f83838151156111715781518083602001fd5b8060405162461bcd60e51b81526004016104119190611523565b6001600160a01b0381168114610620575f5ffd5b5f602082840312156111af575f5ffd5b81356108668161118b565b80356001600160401b03811681146111d0575f5ffd5b919050565b5f5f604083850312156111e6575f5ffd5b6111ef836111ba565b946020939093013593505050565b803580151581146111d0575f5ffd5b5f5f5f6060848603121561121e575f5ffd5b611227846111ba565b92506020840135915061123c604085016111fd565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561126a575f5ffd5b82356112758161118b565b915060208301356001600160401b0381111561128f575f5ffd5b8301601f8101851361129f575f5ffd5b80356001600160401b038111156112b8576112b8611245565b604051601f8201601f19908116603f011681016001600160401b03811182821017156112e6576112e6611245565b6040528181528282016020018710156112fd575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f6040838503121561132d575f5ffd5b8235915061133d602084016111fd565b90509250929050565b5f5f5f60608486031215611358575f5ffd5b611361846111ba565b92506020840135915060408401356113788161118b565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215611479575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156114db575f5ffd5b81516108668161118b565b5f5b838110156115005781810151838201526020016114e8565b50505f910152565b5f82516115198184602087016114e6565b9190910192915050565b602081525f82518060208401526115418160408501602087016114e6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c7f05ce9711ed9d578d8b6db6831e3b98ae749a3ad958172933eaf0e1d0d180164736f6c634300081b0033", + "code": "0x608060405260043610610110575f3560e01c80636c6563f61161009d5780638da5cb5b116100625780638da5cb5b1461029a578063a86f9d9e146102b7578063b490d87f146102d6578063e30c3978146102f5578063f2fde38b14610312575f5ffd5b80636c6563f61461022b578063715018a61461024a57806379ba50971461025e5780638456cb59146102725780638abf607714610286575f5ffd5b80633eb6b8cf116100e35780633eb6b8cf146101a35780633f4ba83a146101c25780634f1ef286146101d657806352d1902d146101e95780635c975abb1461020b575f5ffd5b806304f3bcec1461011457806319ab453c1461013f5780633075db56146101605780633659cfe614610184575b5f5ffd5b34801561011f575f5ffd5b50305b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014a575f5ffd5b5061015e610159366004610fac565b610331565b005b34801561016b575f5ffd5b50610174610443565b6040519015158152602001610136565b34801561018f575f5ffd5b5061015e61019e366004610fac565b61045b565b3480156101ae575f5ffd5b506101226101bd366004610fdb565b610522565b3480156101cd575f5ffd5b5061015e6105af565b61015e6101e4366004611036565b610633565b3480156101f4575f5ffd5b506101fd6106e8565b604051908152602001610136565b348015610216575f5ffd5b5061017460c954610100900460ff1660021490565b348015610236575f5ffd5b506101226102453660046110fc565b610799565b348015610255575f5ffd5b5061015e6107e3565b348015610269575f5ffd5b5061015e6107f4565b34801561027d575f5ffd5b5061015e61086b565b348015610291575f5ffd5b506101226108ea565b3480156102a5575f5ffd5b506033546001600160a01b0316610122565b3480156102c2575f5ffd5b506101226102d1366004611125565b6108f8565b3480156102e1575f5ffd5b5061015e6102f036600461114f565b610971565b348015610300575f5ffd5b506065546001600160a01b0316610122565b34801561031d575f5ffd5b5061015e61032c366004610fac565b6109f2565b5f54610100900460ff161580801561034f57505f54600160ff909116105b806103685750303b15801561036857505f5460ff166001145b6103d05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156103f1575f805461ff0019166101001790555b6103fa82610a63565b801561043f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261045260c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000061630036104a35760405162461bcd60e51b81526004016103c790611185565b7f00000000000000000000000001670010000000000000000000000000000000066001600160a01b03166104d5610ac1565b6001600160a01b0316146104fb5760405162461bcd60e51b81526004016103c7906111d1565b61050481610adc565b604080515f8082526020820190925261051f91839190610ae4565b50565b5f30604051633632b1fb60e11b815267ffffffffffffffff861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015610581573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a5919061121d565b90505b9392505050565b6105c360c954610100900460ff1660021490565b6105e05760405163bae6e2a960e01b815260040160405180910390fd5b6105f460c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610631335f610c53565b565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000000000616300361067b5760405162461bcd60e51b81526004016103c790611185565b7f00000000000000000000000001670010000000000000000000000000000000066001600160a01b03166106ad610ac1565b6001600160a01b0316146106d35760405162461bcd60e51b81526004016103c7906111d1565b6106dc82610adc565b61043f82826001610ae4565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000616146107875760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103c7565b505f51602061130a5f395f51905f5290565b5f83815260fb602090815260408083208584529091529020546001600160a01b0316801515806107c65750815b6105a857604051631692906160e11b815260040160405180910390fd5b6107eb610c6c565b6106315f610cc6565b60655433906001600160a01b031681146108625760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016103c7565b61051f81610cc6565b61087f60c954610100900460ff1660021490565b1561089d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610631336001610c53565b5f6108f3610ac1565b905090565b5f30604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa15801561094d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a8919061121d565b610979610c6c565b5f83815260fb6020908152604080832085845282529182902080546001600160a01b038581166001600160a01b0319831681179093558451928352169181018290529091849186917f3fd0559a7b01eb7106f9d9ce79ec76bb44f608a295878cce50856e54dba83d35910160405180910390a350505050565b6109fa610c6c565b606580546001600160a01b0383166001600160a01b03199091168117909155610a2b6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f54610100900460ff16610a895760405162461bcd60e51b81526004016103c790611238565b610a91610cdf565b610aaf6001600160a01b03821615610aa95781610cc6565b33610cc6565b5060c9805461ff001916610100179055565b5f51602061130a5f395f51905f52546001600160a01b031690565b61051f610c6c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610b1c57610b1783610d05565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b76575060408051601f3d908101601f19168201909252610b7391810190611283565b60015b610bd95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016103c7565b5f51602061130a5f395f51905f528114610c475760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016103c7565b50610b17838383610da0565b604051630c2b8f8f60e11b815260040160405180910390fd5b6033546001600160a01b031633146106315760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c7565b606580546001600160a01b031916905561051f81610dca565b5f54610100900460ff166106315760405162461bcd60e51b81526004016103c790611238565b6001600160a01b0381163b610d725760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103c7565b5f51602061130a5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610da983610e1b565b5f82511180610db55750805b15610b1757610dc48383610e5a565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610e2481610d05565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606105a8838360405180606001604052806027815260200161132a6027913960605f5f856001600160a01b031685604051610e9691906112bc565b5f60405180830381855af49150503d805f8114610ece576040519150601f19603f3d011682016040523d82523d5f602084013e610ed3565b606091505b5091509150610ee486838387610eee565b9695505050505050565b60608315610f5c5782515f03610f55576001600160a01b0385163b610f555760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103c7565b5081610f66565b610f668383610f6e565b949350505050565b815115610f7e5781518083602001fd5b8060405162461bcd60e51b81526004016103c791906112d7565b6001600160a01b038116811461051f575f5ffd5b5f60208284031215610fbc575f5ffd5b81356105a881610f98565b80358015158114610fd6575f5ffd5b919050565b5f5f5f60608486031215610fed575f5ffd5b833567ffffffffffffffff81168114611004575f5ffd5b92506020840135915061101960408501610fc7565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215611047575f5ffd5b823561105281610f98565b9150602083013567ffffffffffffffff81111561106d575f5ffd5b8301601f8101851361107d575f5ffd5b803567ffffffffffffffff81111561109757611097611022565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156110c6576110c6611022565b6040528181528282016020018710156110dd575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f6060848603121561110e575f5ffd5b833592506020840135915061101960408501610fc7565b5f5f60408385031215611136575f5ffd5b8235915061114660208401610fc7565b90509250929050565b5f5f5f60608486031215611161575f5ffd5b8335925060208401359150604084013561117a81610f98565b809150509250925092565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f6020828403121561122d575f5ffd5b81516105a881610f98565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611293575f5ffd5b5051919050565b5f5b838110156112b457818101518382015260200161129c565b50505f910152565b5f82516112cd81846020870161129a565b9190910192915050565b602081525f82518060208401526112f581604085016020870161129a565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f17011760bcb447c31d558e05abbd733f146fe783752e77e1869d49352df3de164736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000000006": { - "contractName": "SharedAddressManager", + "contractName": "SharedResolver", "storage": { "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", @@ -151,7 +151,7 @@ "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x60806040526004361061021d575f3560e01c806382b5e8891161011e578063b8acae0e116100a8578063e07baba61161006d578063e07baba61461066b578063e30c3978146106a2578063eefbf17e146106bf578063f09a4016146106e5578063f2fde38b14610704575f5ffd5b8063b8acae0e146105af578063be880c81146105ce578063c012fa77146105e4578063d0496d6a14610603578063d1aaa5df1461064b575f5ffd5b80638e3881a9116100ee5780638e3881a9146104fe578063913b16cb1461053c5780639efc7a2e1461055b578063a730cdfb1461057a578063a86f9d9e14610590575f5ffd5b806382b5e8891461049a5780638456cb59146104b95780638abf6077146104cd5780638da5cb5b146104e1575f5ffd5b80633f4ba83a116101aa5780635c975abb1161016f5780635c975abb146103ff57806360620c6b1461041f578063715018a61461043e57806379ba5097146104525780637cbadfaa14610466575f5ffd5b80633f4ba83a14610381578063422770fa146103955780634f1ef286146103b957806352d1902d146103cc5780635862f6e1146103e0575f5ffd5b80633075db56116101f05780633075db56146102ad5780633659cfe6146102d15780633ab76e9f146102f05780633c6cf473146103275780633eb6b8cf14610362575f5ffd5b80630432873c14610221578063069489a2146102425780631bdb0037146102565780632035065e14610280575b5f5ffd5b34801561022c575f5ffd5b5061024061023b366004612f9c565b610723565b005b34801561024d575f5ffd5b50610240610a21565b610269610264366004612fea565b610ad8565b604051610277929190613176565b60405180910390f35b34801561028b575f5ffd5b5061029f61029a36600461318e565b610e8e565b60405161027792919061324b565b3480156102b8575f5ffd5b506102c161134e565b6040519015158152602001610277565b3480156102dc575f5ffd5b506102406102eb36600461329a565b611366565b3480156102fb575f5ffd5b5060975461030f906001600160a01b031681565b6040516001600160a01b039091168152602001610277565b348015610332575f5ffd5b506103556103413660046132b5565b60fc6020525f908152604090205460ff1681565b60405161027791906132cc565b34801561036d575f5ffd5b5061030f61037c3660046132f0565b61142d565b34801561038c575f5ffd5b50610240611443565b3480156103a0575f5ffd5b506103ab62030d4081565b604051908152602001610277565b6102406103c73660046133f3565b611457565b3480156103d7575f5ffd5b506103ab611510565b3480156103eb575f5ffd5b506102c16103fa36600461318e565b6115c2565b34801561040a575f5ffd5b506102c160c954610100900460ff1660021490565b34801561042a575f5ffd5b506102c1610439366004612fea565b61162d565b348015610449575f5ffd5b506102406116fb565b34801561045d575f5ffd5b5061024061170c565b348015610471575f5ffd5b506104856104803660046132b5565b611783565b60405163ffffffff9091168152602001610277565b3480156104a5575f5ffd5b506102406104b436600461329a565b6117a1565b3480156104c4575f5ffd5b50610240611821565b3480156104d8575f5ffd5b5061030f611834565b3480156104ec575f5ffd5b506033546001600160a01b031661030f565b348015610509575f5ffd5b5061051d61051836600461343f565b611842565b6040805192151583526001600160a01b03909116602083015201610277565b348015610547575f5ffd5b50610240610556366004612fea565b61186e565b348015610566575f5ffd5b5061024061057536600461318e565b611a5d565b348015610585575f5ffd5b506104856201d4c081565b34801561059b575f5ffd5b5061030f6105aa366004613458565b611d61565b3480156105ba575f5ffd5b506102c16105c936600461318e565b611d6d565b3480156105d9575f5ffd5b50610485620c350081565b3480156105ef575f5ffd5b506103ab6105fe36600461357b565b611dce565b34801561060e575f5ffd5b50610617611dfd565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610277565b348015610656575f5ffd5b506103ab6106653660046132b5565b60031890565b348015610676575f5ffd5b5060c9546201000090046001600160401b03165b6040516001600160401b039091168152602001610277565b3480156106ad575f5ffd5b506065546001600160a01b031661030f565b3480156106ca575f5ffd5b5060fb5461068a90600160401b90046001600160401b031681565b3480156106f0575f5ffd5b506102406106ff3660046135ac565b611ea4565b34801561070f575f5ffd5b5061024061071e36600461329a565b611f6b565b61073360e0830160c0840161343f565b46816001600160401b03161461075c57604051631c6c777560e31b815260040160405180910390fd5b61076c60a084016080850161343f565b6001600160401b038116158061078a575046816001600160401b0316145b156107a857604051631c6c777560e31b815260040160405180910390fd5b6107bc60c954610100900460ff1660021490565b156107da5760405163bae6e2a960e01b815260040160405180910390fd5b60026107e860c95460ff1690565b60ff16036108095760405163dfc60d8560e01b815260040160405180910390fd5b6108136002611fdc565b5f6108206105fe866135d8565b905061082d816001611ff2565b61083b856101200135612044565b610858576040516335856fbd60e21b815260040160405180910390fd5b5f61087d866108786d7369676e616c5f7365727669636560901b5f611d61565b6120e5565b156108c8576108c18661012001356188b860405180602001604052805f8152508960e00160208101906108b0919061329a565b6001600160a01b03169291906121dc565b9050610942565b6108d860608701604088016135e3565b63ffffffff1615806108e75750845b801561091557506108ff610100870160e0880161329a565b6001600160a01b0316336001600160a01b031614155b15610933576040516372b6e1c360e11b815260040160405180910390fd5b61093f86835a5f612219565b90505b80156109585761095382600261233d565b610a0f565b84156109f65761096982600361233d565b6109846d7369676e616c5f7365727669636560901b5f611d61565b60405163019b28af60e61b81526003841860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af11580156109cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f091906135fc565b50610a0f565b60405163161e3ead60e01b815260040160405180910390fd5b5050610a1b6001611fdc565b50505050565b610a296123fa565b5f54600290610100900460ff16158015610a4957505f5460ff8083169116105b610a6e5760405162461bcd60e51b8152600401610a6590613613565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610b3e60c0840160a0850161329a565b6001600160a01b038116610b655760405163538ba4f960e01b815260040160405180910390fd5b610b76610100850160e0860161329a565b6001600160a01b038116610b9d5760405163538ba4f960e01b815260040160405180910390fd5b610bad60e0860160c0870161343f565b6001600160401b0381161580610bcb575046816001600160401b0316145b15610be957604051631c6c777560e31b815260040160405180910390fd5b610bfd60c954610100900460ff1660021490565b15610c1b5760405163bae6e2a960e01b815260040160405180910390fd5b6002610c2960c95460ff1690565b60ff1603610c4a5760405163dfc60d8560e01b815260040160405180910390fd5b610c546002611fdc565b610c6460608701604088016135e3565b63ffffffff165f03610cac57610c80604087016020880161343f565b6001600160401b031615610ca75760405163c9f5178760e01b815260040160405180910390fd5b610cd4565b610cb586612454565b5f03610cd4576040516308c2ad5360e01b815260040160405180910390fd5b5f610ce861051860e0890160c08a0161343f565b50905080610d0957604051631c6c777560e31b815260040160405180910390fd5b34610d1a6040890160208a0161343f565b610d32906001600160401b03166101208a0135613675565b14610d5057604051634ac2abdf60e11b815260040160405180910390fd5b610d59876135d8565b60fb8054919650600160401b9091046001600160401b0316906008610d7d83613688565b82546101009290920a6001600160401b03818102199093169183160217909155908116865233606087015246166080860152610db885611dce565b9550857fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351786604051610dea91906136b2565b60405180910390a2610e0d6d7369676e616c5f7365727669636560901b5f611d61565b6001600160a01b03166366ca2bc0876040518263ffffffff1660e01b8152600401610e3a91815260200190565b6020604051808303815f875af1158015610e56573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7a91906135fc565b5050610e866001611fdc565b505050915091565b5f5f610ea460c954610100900460ff1660021490565b15610ec25760405163bae6e2a960e01b815260040160405180910390fd5b6002610ed060c95460ff1690565b60ff1603610ef15760405163dfc60d8560e01b815260040160405180910390fd5b610efb6002611fdc565b5f5a905046610f1060e0880160c0890161343f565b6001600160401b031614610f3757604051631c6c777560e31b815260040160405180910390fd5b610f4760a087016080880161343f565b6001600160401b03161580610f73575046610f6860a088016080890161343f565b6001600160401b0316145b15610f9157604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610fc5610100880160e0890161329a565b6001600160a01b031633148015606083015261103457610feb60608801604089016135e3565b63ffffffff165f03611010576040516372b6e1c360e11b815260040160405180910390fd5b62030d4085111561103457604051631e3b03c960e01b815260040160405180910390fd5b5f6110416105fe896135d8565b905061104d815f611ff2565b5f6110696d7369676e616c5f7365727669636560901b5f611d61565b63ffffffff881660208501529050611093818361108c60a08d0160808e0161343f565b8b8b6124a7565b63ffffffff166040808501919091526110d2906110b5908b0160208c0161343f565b6110cd906001600160401b03166101208c0135613675565b612044565b6110ef576040516335856fbd60e21b815260040160405180910390fd5b5f6110fa8a836120e5565b156111135750600295506001945061012089013561115a565b5f8460600151611123575a61112c565b61112c8b612454565b905061113e8b85838860600151612219565b1561114f57600297505f9650611158565b60019750600296505b505b61116a60408b0160208c0161343f565b6001600160401b0316156112cb5761118860408b0160208c0161343f565b61119b906001600160401b031682613675565b9050836060015180156111c257506111b960608b0160408c016135e3565b63ffffffff1615155b156112cb57604084015163ffffffff16614e20025a6111ff6111e86101408e018e6136c4565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168801919091036201d4c00181168087525f9183916112289183919061255216565b0390505f61123c60608e0160408f016135e3565b63ffffffff168d6020016020810190611255919061343f565b6001600160401b031683028161126d5761126d61370d565b0490505f48830290505f6112b18f602001602081019061128d919061343f565b6001600160401b0316848410156112a95784840160011c6112ab565b845b90612567565b958690039590506112c533826188b861257b565b50505050505b6112f3816188b86112e36101008e0160e08f0161329a565b6001600160a01b0316919061257b565b6112fd838861233d565b827f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8b8660405161132f9291906138a5565b60405180910390a250505050506113466001611fdc565b935093915050565b5f600261135d60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000011630036113ae5760405162461bcd60e51b8152600401610a65906138f9565b7f00000000000000000000000001670010000000000000000000000000000000016001600160a01b03166113e06125be565b6001600160a01b0316146114065760405162461bcd60e51b8152600401610a6590613945565b61140f816125d9565b604080515f8082526020820190925261142a918391906125e1565b50565b5f61143984848461274b565b90505b9392505050565b61144b6127a7565b611455335f612837565b565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000000000116300361149f5760405162461bcd60e51b8152600401610a65906138f9565b7f00000000000000000000000001670010000000000000000000000000000000016001600160a01b03166114d16125be565b6001600160a01b0316146114f75760405162461bcd60e51b8152600401610a6590613945565b611500826125d9565b61150c828260016125e1565b5050565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000116146115af5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a65565b505f516020613b5f5f395f51905f525b90565b5f466115d460a086016080870161343f565b6001600160401b0316146115e957505f61143c565b6114396116076d7369676e616c5f7365727669636560901b5f611d61565b6116166106656105fe886135d8565b61162660e0880160c0890161343f565b86866128e4565b5f4661163f60a084016080850161343f565b6001600160401b03161461165457505f919050565b61166f6d7369676e616c5f7365727669636560901b5f611d61565b6001600160a01b03166332676bc63061168a6105fe866135d8565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa1580156116d1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f59190613991565b92915050565b6117036123fa565b6114555f612966565b60655433906001600160a01b0316811461177a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a65565b61142a81612966565b5f6116f5620c35006101a06020601f8601819004020160041b6139ac565b806001600160a01b0381166117c95760405163538ba4f960e01b815260040160405180910390fd5b6040516317066a5760e21b81523060048201526001600160a01b03831690635c19a95c906024015f604051808303815f87803b158015611807575f5ffd5b505af1158015611819573d5f5f3e3d5ffd5b505050505050565b61182961297f565b611455336001612837565b5f61183d6125be565b905090565b5f5f611859836562726964676560d01b600161142d565b6001600160a01b038116151594909350915050565b61187e60e0820160c0830161343f565b46816001600160401b0316146118a757604051631c6c777560e31b815260040160405180910390fd5b6118b760a083016080840161343f565b6001600160401b03811615806118d5575046816001600160401b0316145b156118f357604051631c6c777560e31b815260040160405180910390fd5b61190760c954610100900460ff1660021490565b156119255760405163bae6e2a960e01b815260040160405180910390fd5b600261193360c95460ff1690565b60ff16036119545760405163dfc60d8560e01b815260040160405180910390fd5b61195e6002611fdc565b61196f610100840160e0850161329a565b6001600160a01b0316336001600160a01b0316146119a0576040516372b6e1c360e11b815260040160405180910390fd5b5f6119ad6105fe856135d8565b90506119ba816001611ff2565b6119c581600361233d565b6119e06d7369676e616c5f7365727669636560901b5f611d61565b60405163019b28af60e61b81526003831860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af1158015611a28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4c91906135fc565b5050611a586001611fdc565b505050565b611a6d60a084016080850161343f565b46816001600160401b031614611a9657604051631c6c777560e31b815260040160405180910390fd5b611aa660e0850160c0860161343f565b6001600160401b0381161580611ac4575046816001600160401b0316145b15611ae257604051631c6c777560e31b815260040160405180910390fd5b611af660c954610100900460ff1660021490565b15611b145760405163bae6e2a960e01b815260040160405180910390fd5b6002611b2260c95460ff1690565b60ff1603611b435760405163dfc60d8560e01b815260040160405180910390fd5b611b4d6002611fdc565b5f611b5a6105fe876135d8565b9050611b66815f611ff2565b5f611b826d7369676e616c5f7365727669636560901b5f611d61565b604051631933b5e360e11b8152306004820152602481018490529091506001600160a01b038216906332676bc690604401602060405180830381865afa158015611bce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf29190613991565b611c0f5760405163ab035ad560e01b815260040160405180910390fd5b611c2e8160038418611c2760e08b0160c08c0161343f565b89896124a7565b50611c3a82600461233d565b611c48876101200135612044565b611c65576040516335856fbd60e21b815260040160405180910390fd5b611c8e62bc399d60e11b611c7f60808a0160608b0161329a565b6001600160a01b0316906129f0565b15611d3257611cad8230611ca860a08b0160808c0161343f565b612ac0565b611cbd608088016060890161329a565b6001600160a01b0316630178733a88610120013589856040518463ffffffff1660e01b8152600401611cf09291906139c8565b5f604051808303818588803b158015611d07575f5ffd5b505af1158015611d19573d5f5f3e3d5ffd5b5050505050611d2d5f195f1b5f1980612ac0565b611d4e565b611d4e6101208801356188b86112e360c08b0160a08c0161329a565b5050611d5a6001611fdc565b5050505050565b5f61143c46848461274b565b5f46611d7f60e0860160c0870161343f565b6001600160401b031614611d9457505f61143c565b611439611db26d7369676e616c5f7365727669636560901b5f611d61565b611dbe6105fe876135d8565b61162660a088016080890161343f565b5f81604051602001611de091906139e9565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611e74604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611e86575080515f19145b156115bf57604051635ceed17360e01b815260040160405180910390fd5b5f54610100900460ff1615808015611ec257505f54600160ff909116105b80611edb5750303b158015611edb57505f5460ff166001145b611ef75760405162461bcd60e51b8152600401610a6590613613565b5f805460ff191660011790558015611f18575f805461ff0019166101001790555b611f228383612b15565b8015611a58575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b611f736123fa565b606580546001600160a01b0383166001600160a01b03199091168117909155611fa46033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b80600481111561200457612004613223565b5f83815260fc602052604090205460ff16600481111561202657612026613223565b1461150c576040516319d893ad60e21b815260040160405180910390fd5b5f5f6120616c38bab7ba30afb6b0b730b3b2b960991b6001611d61565b90506001600160a01b03811661207a5750600192915050565b6040516315c638fb60e31b81525f6004820152602481018490526001600160a01b0382169063ae31c7d8906044015f604051808303815f87803b1580156120bf575f5ffd5b505af19250505080156120d0575060015b6120dc57505f92915050565b50600192915050565b5f806120f96101208501610100860161329a565b6001600160a01b03160361210f575060016116f5565b306121226101208501610100860161329a565b6001600160a01b031603612138575060016116f5565b6001600160a01b0382166121546101208501610100860161329a565b6001600160a01b03160361216a575060016116f5565b600461217a6101408501856136c4565b9050101580156121b15750637f07c94760e01b61219b6101408501856136c4565b6121a491613a1f565b6001600160e01b03191614155b801561143c575061143c6121cd6101208501610100860161329a565b6001600160a01b03163b151590565b5f6001600160a01b03851661220457604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f3061222b608087016060880161329a565b6001600160a01b03160361224157612241613a57565b610120850135158015612261575061225d6101408601866136c4565b1590505b1561226e57506001612335565b825f0361227c57505f612335565b6122a084612290608088016060890161329a565b611ca860a0890160808a0161343f565b5f6122b36101208701610100880161329a565b90506101208601355f6122ca6101408901896136c4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a90508515612324576123248188612b4f565b6123305f198080612ac0565b505050505b949350505050565b80600481111561234f5761234f613223565b5f83815260fc602052604090205460ff16600481111561237157612371613223565b0361238f576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff191660018360048111156123b9576123b9613223565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516123ee91906132cc565b60405180910390a25050565b6033546001600160a01b031633146114555760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a65565b5f8061246e6124676101408501856136c4565b9050611783565b63ffffffff1690508061249f61248a60608601604087016135e3565b63ffffffff168361255290919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed856124cc876562726964676560d01b5f61142d565b8887876040518663ffffffff1660e01b81526004016124ef959493929190613a6b565b6020604051808303815f875af1925050508015612529575060408051601f3d908101601f19168201909252612526918101906135fc565b60015b612546576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f818311612560578161143c565b5090919050565b5f818311612575578261143c565b50919050565b815f0361258757505050565b6125a183838360405180602001604052805f8152506121dc565b611a5857604051634c67134d60e11b815260040160405180910390fd5b5f516020613b5f5f395f51905f52546001600160a01b031690565b61142a6123fa565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561261457611a5883612b63565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561266e575060408051601f3d908101601f1916820190925261266b918101906135fc565b60015b6126d15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a65565b5f516020613b5f5f395f51905f52811461273f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a65565b50611a58838383612bfe565b5f6127568484612c22565b9050818061276c57506001600160a01b03811615155b8484909161279e57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610a65565b50509392505050565b6127bb60c954610100900460ff1660021490565b6127d85760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6033546001600160a01b038381169116148061287f575061286a6d636861696e5f7761746368646f6760901b6001611d61565b6001600160a01b0316826001600160a01b0316145b15612888575050565b8080156128c257506128ad6e6272696467655f7761746368646f6760881b6001611d61565b6001600160a01b0316826001600160a01b0316145b156128cb575050565b604051630d85cccf60e11b815260040160405180910390fd5b5f856001600160a01b031663ce9d082085612909876562726964676560d01b5f61142d565b8887876040518663ffffffff1660e01b815260040161292c959493929190613a6b565b5f6040518083038186803b158015612942575f5ffd5b505afa925050508015612953575060015b61295e57505f612549565b506001612549565b606580546001600160a01b031916905561142a81612cc4565b61299360c954610100900460ff1660021490565b156129b15760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161282d565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251612a4c9190613aac565b5f60405180830381855afa9150503d805f8114612a84576040519150601f19603f3d011682016040523d82523d5f602084013e612a89565b606091505b5091509150818015612a9c575080516020145b15612ab85780806020019051810190612ab59190613991565b92505b505092915050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b806001600160a01b038116612b3d5760405163538ba4f960e01b815260040160405180910390fd5b612b4683612d15565b611a5882612d73565b612b5a603f82613ac7565b82101561150c57fe5b6001600160a01b0381163b612bd05760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a65565b5f516020613b5f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b612c0783612de3565b5f82511180612c135750805b15611a5857610a1b8383612e22565b6097545f906001600160a01b031680612c4e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015612ca0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123359190613ae6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16612d3b5760405162461bcd60e51b8152600401610a6590613b01565b612d43612e47565b612d616001600160a01b03821615612d5b5781612966565b33612966565b5060c9805461ff001916610100179055565b5f54610100900460ff16612d995760405162461bcd60e51b8152600401610a6590613b01565b6001600160401b03461115612dc15760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b612dec81612b63565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061143c8383604051806060016040528060278152602001613b7f60279139612e6d565b5f54610100900460ff166114555760405162461bcd60e51b8152600401610a6590613b01565b60605f5f856001600160a01b031685604051612e899190613aac565b5f60405180830381855af49150503d805f8114612ec1576040519150601f19603f3d011682016040523d82523d5f602084013e612ec6565b606091505b5091509150612ed786838387612ee1565b9695505050505050565b60608315612f4f5782515f03612f48576001600160a01b0385163b612f485760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a65565b5081612335565b6123358383815115612f645781518083602001fd5b8060405162461bcd60e51b8152600401610a659190613b4c565b5f6101608284031215612575575f5ffd5b801515811461142a575f5ffd5b5f5f60408385031215612fad575f5ffd5b82356001600160401b03811115612fc2575f5ffd5b612fce85828601612f7e565b9250506020830135612fdf81612f8f565b809150509250929050565b5f60208284031215612ffa575f5ffd5b81356001600160401b0381111561300f575f5ffd5b61233584828501612f7e565b5f5b8381101561303557818101518382015260200161301d565b50505f910152565b5f815180845261305481602086016020860161301b565b601f01601f19169290920160200192915050565b80516001600160401b031682525f602082015161309060208501826001600160401b03169052565b5060408201516130a8604085018263ffffffff169052565b5060608201516130c360608501826001600160a01b03169052565b5060808201516130de60808501826001600160401b03169052565b5060a08201516130f960a08501826001600160a01b03169052565b5060c082015161311460c08501826001600160401b03169052565b5060e082015161312f60e08501826001600160a01b03169052565b5061010082015161314c6101008501826001600160a01b03169052565b5061012082015161012084015261014082015161016061014085015261233561016085018261303d565b828152604060208201525f6114396040830184613068565b5f5f5f604084860312156131a0575f5ffd5b83356001600160401b038111156131b5575f5ffd5b6131c186828701612f7e565b93505060208401356001600160401b038111156131dc575f5ffd5b8401601f810186136131ec575f5ffd5b80356001600160401b03811115613201575f5ffd5b866020828401011115613212575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b6005811061324757613247613223565b9052565b604081016132598285613237565b6004831061326957613269613223565b8260208301529392505050565b6001600160a01b038116811461142a575f5ffd5b803561329581613276565b919050565b5f602082840312156132aa575f5ffd5b813561143c81613276565b5f602082840312156132c5575f5ffd5b5035919050565b602081016116f58284613237565b80356001600160401b0381168114613295575f5ffd5b5f5f5f60608486031215613302575f5ffd5b61330b846132da565b925060208401359150604084013561332281612f8f565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b03811182821017156133645761336461332d565b60405290565b5f82601f830112613379575f5ffd5b81356001600160401b038111156133925761339261332d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156133c0576133c061332d565b6040528181528382016020018510156133d7575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215613404575f5ffd5b823561340f81613276565b915060208301356001600160401b03811115613429575f5ffd5b6134358582860161336a565b9150509250929050565b5f6020828403121561344f575f5ffd5b61143c826132da565b5f5f60408385031215613469575f5ffd5b823591506020830135612fdf81612f8f565b803563ffffffff81168114613295575f5ffd5b5f610160828403121561349f575f5ffd5b6134a7613341565b90506134b2826132da565b81526134c0602083016132da565b60208201526134d16040830161347b565b60408201526134e26060830161328a565b60608201526134f3608083016132da565b608082015261350460a0830161328a565b60a082015261351560c083016132da565b60c082015261352660e0830161328a565b60e0820152613538610100830161328a565b61010082015261012082810135908201526101408201356001600160401b03811115613562575f5ffd5b61356e8482850161336a565b6101408301525092915050565b5f6020828403121561358b575f5ffd5b81356001600160401b038111156135a0575f5ffd5b6123358482850161348e565b5f5f604083850312156135bd575f5ffd5b82356135c881613276565b91506020830135612fdf81613276565b5f6116f5368361348e565b5f602082840312156135f3575f5ffd5b61143c8261347b565b5f6020828403121561360c575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156116f5576116f5613661565b5f6001600160401b0382166001600160401b0381036136a9576136a9613661565b60010192915050565b602081525f61143c6020830184613068565b5f5f8335601e198436030181126136d9575f5ffd5b8301803591506001600160401b038211156136f2575f5ffd5b602001915036819003821315613706575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e19843603018112613736575f5ffd5b83016020810192503590506001600160401b03811115613754575f5ffd5b803603821315613706575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6137a482613797836132da565b6001600160401b03169052565b5f6137b1602083016132da565b6001600160401b031660208401526137cb6040830161347b565b63ffffffff1660408401526137e26060830161328a565b6001600160a01b031660608401526137fc608083016132da565b6001600160401b0316608084015261381660a0830161328a565b6001600160a01b031660a084015261383060c083016132da565b6001600160401b031660c084015261384a60e0830161328a565b6001600160a01b031660e0840152613865610100830161328a565b6001600160a01b0316610100840152610120828101359084015261388d610140830183613721565b610160610140860152612ab561016086018284613762565b60a081525f6138b760a083018561378a565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f602082840312156139a1575f5ffd5b815161143c81612f8f565b63ffffffff81811683821601908111156116f5576116f5613661565b604081525f6139da604083018561378a565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f61143c6080830184613068565b80356001600160e01b03198116906004841015613a50576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f613aa1608083018486613762565b979650505050505050565b5f8251613abd81846020870161301b565b9190910192915050565b5f82613ae157634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215613af6575f5ffd5b815161143c81613276565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602081525f61143c602083018461303d56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208f1ee3575833061eb334e638532a2bf98d9286a70bca4ab3eb1d88f5bc25656564736f6c634300081b0033", + "code": "0x608060405260043610610212575f3560e01c806379ba50971161011e578063a730cdfb116100a8578063d0496d6a1161006d578063d0496d6a14610622578063d1aaa5df1461066a578063e30c39781461068a578063eefbf17e146106a7578063f2fde38b146106e5575f5ffd5b8063a730cdfb14610599578063a86f9d9e146105af578063b8acae0e146105ce578063be880c81146105ed578063c012fa7714610603575f5ffd5b80638abf6077116100ee5780638abf6077146104ec5780638da5cb5b146105005780638e3881a91461051d578063913b16cb1461055b5780639efc7a2e1461057a575f5ffd5b806379ba5097146104715780637cbadfaa1461048557806382b5e889146104b95780638456cb59146104d8575f5ffd5b80633eb6b8cf1161019f57806352d1902d1161016f57806352d1902d146103eb5780635862f6e1146103ff5780635c975abb1461041e57806360620c6b1461043e578063715018a61461045d575f5ffd5b80633eb6b8cf146103815780633f4ba83a146103a0578063422770fa146103b45780634f1ef286146103d8575f5ffd5b80631bdb0037116101e55780631bdb0037146102b55780632035065e146102d65780633075db56146103035780633659cfe6146103275780633c6cf47314610346575f5ffd5b80630432873c1461021657806304f3bcec14610237578063069489a21461028257806319ab453c14610296575b5f5ffd5b348015610221575f5ffd5b50610235610230366004612ec9565b610704565b005b348015610242575f5ffd5b507f00000000000000000000000016700100000000000000000000000000000000065b6040516001600160a01b0390911681526020015b60405180910390f35b34801561028d575f5ffd5b50610235610a02565b3480156102a1575f5ffd5b506102356102b0366004612f3b565b610ab9565b6102c86102c3366004612f56565b610b7f565b6040516102799291906130e2565b3480156102e1575f5ffd5b506102f56102f03660046130fa565b610f35565b6040516102799291906131b7565b34801561030e575f5ffd5b506103176113f5565b6040519015158152602001610279565b348015610332575f5ffd5b50610235610341366004612f3b565b61140d565b348015610351575f5ffd5b506103746103603660046131e2565b60fc6020525f908152604090205460ff1681565b60405161027991906131f9565b34801561038c575f5ffd5b5061026561039b36600461321d565b6114d4565b3480156103ab575f5ffd5b50610235611580565b3480156103bf575f5ffd5b506103ca62030d4081565b604051908152602001610279565b6102356103e6366004613320565b611604565b3480156103f6575f5ffd5b506103ca6116b9565b34801561040a575f5ffd5b506103176104193660046130fa565b61176b565b348015610429575f5ffd5b5061031760c954610100900460ff1660021490565b348015610449575f5ffd5b50610317610458366004612f56565b6117d6565b348015610468575f5ffd5b506102356118a4565b34801561047c575f5ffd5b506102356118b5565b348015610490575f5ffd5b506104a461049f3660046131e2565b61192c565b60405163ffffffff9091168152602001610279565b3480156104c4575f5ffd5b506102356104d3366004612f3b565b61194a565b3480156104e3575f5ffd5b506102356119ca565b3480156104f7575f5ffd5b50610265611a49565b34801561050b575f5ffd5b506033546001600160a01b0316610265565b348015610528575f5ffd5b5061053c61053736600461336c565b611a57565b6040805192151583526001600160a01b03909116602083015201610279565b348015610566575f5ffd5b50610235610575366004612f56565b611a83565b348015610585575f5ffd5b506102356105943660046130fa565b611c72565b3480156105a4575f5ffd5b506104a46201d4c081565b3480156105ba575f5ffd5b506102656105c9366004613385565b611f76565b3480156105d9575f5ffd5b506103176105e83660046130fa565b61200f565b3480156105f8575f5ffd5b506104a4620c350081565b34801561060e575f5ffd5b506103ca61061d3660046134a8565b612070565b34801561062d575f5ffd5b5061063661209f565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610279565b348015610675575f5ffd5b506103ca6106843660046131e2565b60031890565b348015610695575f5ffd5b506065546001600160a01b0316610265565b3480156106b2575f5ffd5b5060fb546106cd90600160401b90046001600160401b031681565b6040516001600160401b039091168152602001610279565b3480156106f0575f5ffd5b506102356106ff366004612f3b565b612146565b61071460e0830160c0840161336c565b46816001600160401b03161461073d57604051631c6c777560e31b815260040160405180910390fd5b61074d60a084016080850161336c565b6001600160401b038116158061076b575046816001600160401b0316145b1561078957604051631c6c777560e31b815260040160405180910390fd5b61079d60c954610100900460ff1660021490565b156107bb5760405163bae6e2a960e01b815260040160405180910390fd5b60026107c960c95460ff1690565b60ff16036107ea5760405163dfc60d8560e01b815260040160405180910390fd5b6107f460026121b7565b5f61080161061d866134d9565b905061080e8160016121cd565b61081c85610120013561221f565b610839576040516335856fbd60e21b815260040160405180910390fd5b5f61085e866108596d7369676e616c5f7365727669636560901b5f611f76565b6122c0565b156108a9576108a28661012001356188b860405180602001604052805f8152508960e00160208101906108919190612f3b565b6001600160a01b03169291906123b7565b9050610923565b6108b960608701604088016134e4565b63ffffffff1615806108c85750845b80156108f657506108e0610100870160e08801612f3b565b6001600160a01b0316336001600160a01b031614155b15610914576040516372b6e1c360e11b815260040160405180910390fd5b61092086835a5f6123f4565b90505b801561093957610934826002612518565b6109f0565b84156109d75761094a826003612518565b6109656d7369676e616c5f7365727669636560901b5f611f76565b60405163019b28af60e61b81526003841860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af11580156109ad573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d191906134fd565b506109f0565b60405163161e3ead60e01b815260040160405180910390fd5b50506109fc60016121b7565b50505050565b610a0a6125d5565b5f54600290610100900460ff16158015610a2a57505f5460ff8083169116105b610a4f5760405162461bcd60e51b8152600401610a4690613514565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff1615808015610ad757505f54600160ff909116105b80610af05750303b158015610af057505f5460ff166001145b610b0c5760405162461bcd60e51b8152600401610a4690613514565b5f805460ff191660011790558015610b2d575f805461ff0019166101001790555b610b368261262f565b8015610b7b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610be560c0840160a08501612f3b565b6001600160a01b038116610c0c5760405163538ba4f960e01b815260040160405180910390fd5b610c1d610100850160e08601612f3b565b6001600160a01b038116610c445760405163538ba4f960e01b815260040160405180910390fd5b610c5460e0860160c0870161336c565b6001600160401b0381161580610c72575046816001600160401b0316145b15610c9057604051631c6c777560e31b815260040160405180910390fd5b610ca460c954610100900460ff1660021490565b15610cc25760405163bae6e2a960e01b815260040160405180910390fd5b6002610cd060c95460ff1690565b60ff1603610cf15760405163dfc60d8560e01b815260040160405180910390fd5b610cfb60026121b7565b610d0b60608701604088016134e4565b63ffffffff165f03610d5357610d27604087016020880161336c565b6001600160401b031615610d4e5760405163c9f5178760e01b815260040160405180910390fd5b610d7b565b610d5c8661268d565b5f03610d7b576040516308c2ad5360e01b815260040160405180910390fd5b5f610d8f61053760e0890160c08a0161336c565b50905080610db057604051631c6c777560e31b815260040160405180910390fd5b34610dc16040890160208a0161336c565b610dd9906001600160401b03166101208a0135613576565b14610df757604051634ac2abdf60e11b815260040160405180910390fd5b610e00876134d9565b60fb8054919650600160401b9091046001600160401b0316906008610e2483613589565b82546101009290920a6001600160401b03818102199093169183160217909155908116865233606087015246166080860152610e5f85612070565b9550857fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351786604051610e9191906135b3565b60405180910390a2610eb46d7369676e616c5f7365727669636560901b5f611f76565b6001600160a01b03166366ca2bc0876040518263ffffffff1660e01b8152600401610ee191815260200190565b6020604051808303815f875af1158015610efd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2191906134fd565b5050610f2d60016121b7565b505050915091565b5f5f610f4b60c954610100900460ff1660021490565b15610f695760405163bae6e2a960e01b815260040160405180910390fd5b6002610f7760c95460ff1690565b60ff1603610f985760405163dfc60d8560e01b815260040160405180910390fd5b610fa260026121b7565b5f5a905046610fb760e0880160c0890161336c565b6001600160401b031614610fde57604051631c6c777560e31b815260040160405180910390fd5b610fee60a087016080880161336c565b6001600160401b0316158061101a57504661100f60a088016080890161336c565b6001600160401b0316145b1561103857604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f80825260208201819052918101829052606081019190915261106c610100880160e08901612f3b565b6001600160a01b03163314801560608301526110db5761109260608801604089016134e4565b63ffffffff165f036110b7576040516372b6e1c360e11b815260040160405180910390fd5b62030d408511156110db57604051631e3b03c960e01b815260040160405180910390fd5b5f6110e861061d896134d9565b90506110f4815f6121cd565b5f6111106d7369676e616c5f7365727669636560901b5f611f76565b63ffffffff88166020850152905061113a818361113360a08d0160808e0161336c565b8b8b6126e0565b63ffffffff166040808501919091526111799061115c908b0160208c0161336c565b611174906001600160401b03166101208c0135613576565b61221f565b611196576040516335856fbd60e21b815260040160405180910390fd5b5f6111a18a836122c0565b156111ba57506002955060019450610120890135611201565b5f84606001516111ca575a6111d3565b6111d38b61268d565b90506111e58b858388606001516123f4565b156111f657600297505f96506111ff565b60019750600296505b505b61121160408b0160208c0161336c565b6001600160401b0316156113725761122f60408b0160208c0161336c565b611242906001600160401b031682613576565b905083606001518015611269575061126060608b0160408c016134e4565b63ffffffff1615155b1561137257604084015163ffffffff16614e20025a6112a661128f6101408e018e6135c5565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168801919091036201d4c00181168087525f9183916112cf9183919061278b16565b0390505f6112e360608e0160408f016134e4565b63ffffffff168d60200160208101906112fc919061336c565b6001600160401b03168302816113145761131461360e565b0490505f48830290505f6113588f6020016020810190611334919061336c565b6001600160401b0316848410156113505784840160011c611352565b845b906127a0565b9586900395905061136c33826188b86127b4565b50505050505b61139a816188b861138a6101008e0160e08f01612f3b565b6001600160a01b031691906127b4565b6113a48388612518565b827f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8b866040516113d69291906137a6565b60405180910390a250505050506113ed60016121b7565b935093915050565b5f600261140460c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000011630036114555760405162461bcd60e51b8152600401610a46906137fa565b7f00000000000000000000000001670010000000000000000000000000000000016001600160a01b03166114876127f7565b6001600160a01b0316146114ad5760405162461bcd60e51b8152600401610a4690613846565b6114b681612812565b604080515f808252602082019092526114d19183919061281a565b50565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611552573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115769190613892565b90505b9392505050565b61159460c954610100900460ff1660021490565b6115b15760405163bae6e2a960e01b815260040160405180910390fd5b6115c560c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1611602335f612984565b565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000000000116300361164c5760405162461bcd60e51b8152600401610a46906137fa565b7f00000000000000000000000001670010000000000000000000000000000000016001600160a01b031661167e6127f7565b6001600160a01b0316146116a45760405162461bcd60e51b8152600401610a4690613846565b6116ad82612812565b610b7b8282600161281a565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000116146117585760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a46565b505f516020613a605f395f51905f525b90565b5f4661177d60a086016080870161336c565b6001600160401b03161461179257505f611579565b6115766117b06d7369676e616c5f7365727669636560901b5f611f76565b6117bf61068461061d886134d9565b6117cf60e0880160c0890161336c565b8686612a31565b5f466117e860a084016080850161336c565b6001600160401b0316146117fd57505f919050565b6118186d7369676e616c5f7365727669636560901b5f611f76565b6001600160a01b03166332676bc63061183361061d866134d9565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801561187a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189e91906138ad565b92915050565b6118ac6125d5565b6116025f612ab3565b60655433906001600160a01b031681146119235760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a46565b6114d181612ab3565b5f61189e620c35006101a06020601f8601819004020160041b6138c8565b806001600160a01b0381166119725760405163538ba4f960e01b815260040160405180910390fd5b6040516317066a5760e21b81523060048201526001600160a01b03831690635c19a95c906024015f604051808303815f87803b1580156119b0575f5ffd5b505af11580156119c2573d5f5f3e3d5ffd5b505050505050565b6119de60c954610100900460ff1660021490565b156119fc5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1611602336001612984565b5f611a526127f7565b905090565b5f5f611a6e836562726964676560d01b60016114d4565b6001600160a01b038116151594909350915050565b611a9360e0820160c0830161336c565b46816001600160401b031614611abc57604051631c6c777560e31b815260040160405180910390fd5b611acc60a083016080840161336c565b6001600160401b0381161580611aea575046816001600160401b0316145b15611b0857604051631c6c777560e31b815260040160405180910390fd5b611b1c60c954610100900460ff1660021490565b15611b3a5760405163bae6e2a960e01b815260040160405180910390fd5b6002611b4860c95460ff1690565b60ff1603611b695760405163dfc60d8560e01b815260040160405180910390fd5b611b7360026121b7565b611b84610100840160e08501612f3b565b6001600160a01b0316336001600160a01b031614611bb5576040516372b6e1c360e11b815260040160405180910390fd5b5f611bc261061d856134d9565b9050611bcf8160016121cd565b611bda816003612518565b611bf56d7369676e616c5f7365727669636560901b5f611f76565b60405163019b28af60e61b81526003831860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af1158015611c3d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c6191906134fd565b5050611c6d60016121b7565b505050565b611c8260a084016080850161336c565b46816001600160401b031614611cab57604051631c6c777560e31b815260040160405180910390fd5b611cbb60e0850160c0860161336c565b6001600160401b0381161580611cd9575046816001600160401b0316145b15611cf757604051631c6c777560e31b815260040160405180910390fd5b611d0b60c954610100900460ff1660021490565b15611d295760405163bae6e2a960e01b815260040160405180910390fd5b6002611d3760c95460ff1690565b60ff1603611d585760405163dfc60d8560e01b815260040160405180910390fd5b611d6260026121b7565b5f611d6f61061d876134d9565b9050611d7b815f6121cd565b5f611d976d7369676e616c5f7365727669636560901b5f611f76565b604051631933b5e360e11b8152306004820152602481018490529091506001600160a01b038216906332676bc690604401602060405180830381865afa158015611de3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e0791906138ad565b611e245760405163ab035ad560e01b815260040160405180910390fd5b611e438160038418611e3c60e08b0160c08c0161336c565b89896126e0565b50611e4f826004612518565b611e5d87610120013561221f565b611e7a576040516335856fbd60e21b815260040160405180910390fd5b611ea362bc399d60e11b611e9460808a0160608b01612f3b565b6001600160a01b031690612acc565b15611f4757611ec28230611ebd60a08b0160808c0161336c565b612b9c565b611ed26080880160608901612f3b565b6001600160a01b0316630178733a88610120013589856040518463ffffffff1660e01b8152600401611f059291906138e4565b5f604051808303818588803b158015611f1c575f5ffd5b505af1158015611f2e573d5f5f3e3d5ffd5b5050505050611f425f195f1b5f1980612b9c565b611f63565b611f636101208801356188b861138a60c08b0160a08c01612f3b565b5050611f6f60016121b7565b5050505050565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611feb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115799190613892565b5f4661202160e0860160c0870161336c565b6001600160401b03161461203657505f611579565b6115766120546d7369676e616c5f7365727669636560901b5f611f76565b61206061061d876134d9565b6117cf60a088016080890161336c565b5f816040516020016120829190613905565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152612116604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580612128575080515f19145b1561176857604051635ceed17360e01b815260040160405180910390fd5b61214e6125d5565b606580546001600160a01b0383166001600160a01b0319909116811790915561217f6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b8060048111156121df576121df61318f565b5f83815260fc602052604090205460ff1660048111156122015761220161318f565b14610b7b576040516319d893ad60e21b815260040160405180910390fd5b5f5f61223c6c38bab7ba30afb6b0b730b3b2b960991b6001611f76565b90506001600160a01b0381166122555750600192915050565b6040516315c638fb60e31b81525f6004820152602481018490526001600160a01b0382169063ae31c7d8906044015f604051808303815f87803b15801561229a575f5ffd5b505af19250505080156122ab575060015b6122b757505f92915050565b50600192915050565b5f806122d461012085016101008601612f3b565b6001600160a01b0316036122ea5750600161189e565b306122fd61012085016101008601612f3b565b6001600160a01b0316036123135750600161189e565b6001600160a01b03821661232f61012085016101008601612f3b565b6001600160a01b0316036123455750600161189e565b60046123556101408501856135c5565b90501015801561238c5750637f07c94760e01b6123766101408501856135c5565b61237f9161393b565b6001600160e01b03191614155b801561157957506115796123a861012085016101008601612f3b565b6001600160a01b03163b151590565b5f6001600160a01b0385166123df57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f306124066080870160608801612f3b565b6001600160a01b03160361241c5761241c613973565b61012085013515801561243c57506124386101408601866135c5565b1590505b1561244957506001612510565b825f0361245757505f612510565b61247b8461246b6080880160608901612f3b565b611ebd60a0890160808a0161336c565b5f61248e61012087016101008801612f3b565b90506101208601355f6124a56101408901896135c5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a905085156124ff576124ff8188612bf1565b61250b5f198080612b9c565b505050505b949350505050565b80600481111561252a5761252a61318f565b5f83815260fc602052604090205460ff16600481111561254c5761254c61318f565b0361256a576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff191660018360048111156125945761259461318f565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516125c991906131f9565b60405180910390a25050565b6033546001600160a01b031633146116025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a46565b5f54610100900460ff166126555760405162461bcd60e51b8152600401610a4690613987565b61265d612c05565b61267b6001600160a01b038216156126755781612ab3565b33612ab3565b5060c9805461ff001916610100179055565b5f806126a76126a06101408501856135c5565b905061192c565b63ffffffff169050806126d86126c360608601604087016134e4565b63ffffffff168361278b90919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed85612705876562726964676560d01b5f6114d4565b8887876040518663ffffffff1660e01b81526004016127289594939291906139d2565b6020604051808303815f875af1925050508015612762575060408051601f3d908101601f1916820190925261275f918101906134fd565b60015b61277f576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f8183116127995781611579565b5090919050565b5f8183116127ae5782611579565b50919050565b815f036127c057505050565b6127da83838360405180602001604052805f8152506123b7565b611c6d57604051634c67134d60e11b815260040160405180910390fd5b5f516020613a605f395f51905f52546001600160a01b031690565b6114d16125d5565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561284d57611c6d83612c2b565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156128a7575060408051601f3d908101601f191682019092526128a4918101906134fd565b60015b61290a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a46565b5f516020613a605f395f51905f5281146129785760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a46565b50611c6d838383612cc6565b6033546001600160a01b03838116911614806129cc57506129b76d636861696e5f7761746368646f6760901b6001611f76565b6001600160a01b0316826001600160a01b0316145b156129d5575050565b808015612a0f57506129fa6e6272696467655f7761746368646f6760881b6001611f76565b6001600160a01b0316826001600160a01b0316145b15612a18575050565b6040516395383ea160e01b815260040160405180910390fd5b5f856001600160a01b031663ce9d082085612a56876562726964676560d01b5f6114d4565b8887876040518663ffffffff1660e01b8152600401612a799594939291906139d2565b5f6040518083038186803b158015612a8f575f5ffd5b505afa925050508015612aa0575060015b612aab57505f612782565b506001612782565b606580546001600160a01b03191690556114d181612cea565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251612b289190613a13565b5f60405180830381855afa9150503d805f8114612b60576040519150601f19603f3d011682016040523d82523d5f602084013e612b65565b606091505b5091509150818015612b78575080516020145b15612b945780806020019051810190612b9191906138ad565b92505b505092915050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b612bfc603f82613a2e565b821015610b7b57fe5b5f54610100900460ff166116025760405162461bcd60e51b8152600401610a4690613987565b6001600160a01b0381163b612c985760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a46565b5f516020613a605f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b612ccf83612d3b565b5f82511180612cdb5750805b15611c6d576109fc8383612d7a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b612d4481612c2b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606115798383604051806060016040528060278152602001613a806027913960605f5f856001600160a01b031685604051612db69190613a13565b5f60405180830381855af49150503d805f8114612dee576040519150601f19603f3d011682016040523d82523d5f602084013e612df3565b606091505b5091509150612e0486838387612e0e565b9695505050505050565b60608315612e7c5782515f03612e75576001600160a01b0385163b612e755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a46565b5081612510565b6125108383815115612e915781518083602001fd5b8060405162461bcd60e51b8152600401610a469190613a4d565b5f61016082840312156127ae575f5ffd5b80151581146114d1575f5ffd5b5f5f60408385031215612eda575f5ffd5b82356001600160401b03811115612eef575f5ffd5b612efb85828601612eab565b9250506020830135612f0c81612ebc565b809150509250929050565b6001600160a01b03811681146114d1575f5ffd5b8035612f3681612f17565b919050565b5f60208284031215612f4b575f5ffd5b813561157981612f17565b5f60208284031215612f66575f5ffd5b81356001600160401b03811115612f7b575f5ffd5b61251084828501612eab565b5f5b83811015612fa1578181015183820152602001612f89565b50505f910152565b5f8151808452612fc0816020860160208601612f87565b601f01601f19169290920160200192915050565b80516001600160401b031682525f6020820151612ffc60208501826001600160401b03169052565b506040820151613014604085018263ffffffff169052565b50606082015161302f60608501826001600160a01b03169052565b50608082015161304a60808501826001600160401b03169052565b5060a082015161306560a08501826001600160a01b03169052565b5060c082015161308060c08501826001600160401b03169052565b5060e082015161309b60e08501826001600160a01b03169052565b506101008201516130b86101008501826001600160a01b03169052565b50610120820151610120840152610140820151610160610140850152612510610160850182612fa9565b828152604060208201525f6115766040830184612fd4565b5f5f5f6040848603121561310c575f5ffd5b83356001600160401b03811115613121575f5ffd5b61312d86828701612eab565b93505060208401356001600160401b03811115613148575f5ffd5b8401601f81018613613158575f5ffd5b80356001600160401b0381111561316d575f5ffd5b86602082840101111561317e575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b600581106131b3576131b361318f565b9052565b604081016131c582856131a3565b600483106131d5576131d561318f565b8260208301529392505050565b5f602082840312156131f2575f5ffd5b5035919050565b6020810161189e82846131a3565b80356001600160401b0381168114612f36575f5ffd5b5f5f5f6060848603121561322f575f5ffd5b61323884613207565b925060208401359150604084013561324f81612ebc565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b03811182821017156132915761329161325a565b60405290565b5f82601f8301126132a6575f5ffd5b81356001600160401b038111156132bf576132bf61325a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156132ed576132ed61325a565b604052818152838201602001851015613304575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215613331575f5ffd5b823561333c81612f17565b915060208301356001600160401b03811115613356575f5ffd5b61336285828601613297565b9150509250929050565b5f6020828403121561337c575f5ffd5b61157982613207565b5f5f60408385031215613396575f5ffd5b823591506020830135612f0c81612ebc565b803563ffffffff81168114612f36575f5ffd5b5f61016082840312156133cc575f5ffd5b6133d461326e565b90506133df82613207565b81526133ed60208301613207565b60208201526133fe604083016133a8565b604082015261340f60608301612f2b565b606082015261342060808301613207565b608082015261343160a08301612f2b565b60a082015261344260c08301613207565b60c082015261345360e08301612f2b565b60e08201526134656101008301612f2b565b61010082015261012082810135908201526101408201356001600160401b0381111561348f575f5ffd5b61349b84828501613297565b6101408301525092915050565b5f602082840312156134b8575f5ffd5b81356001600160401b038111156134cd575f5ffd5b612510848285016133bb565b5f61189e36836133bb565b5f602082840312156134f4575f5ffd5b611579826133a8565b5f6020828403121561350d575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561189e5761189e613562565b5f6001600160401b0382166001600160401b0381036135aa576135aa613562565b60010192915050565b602081525f6115796020830184612fd4565b5f5f8335601e198436030181126135da575f5ffd5b8301803591506001600160401b038211156135f3575f5ffd5b602001915036819003821315613607575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e19843603018112613637575f5ffd5b83016020810192503590506001600160401b03811115613655575f5ffd5b803603821315613607575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6136a58261369883613207565b6001600160401b03169052565b5f6136b260208301613207565b6001600160401b031660208401526136cc604083016133a8565b63ffffffff1660408401526136e360608301612f2b565b6001600160a01b031660608401526136fd60808301613207565b6001600160401b0316608084015261371760a08301612f2b565b6001600160a01b031660a084015261373160c08301613207565b6001600160401b031660c084015261374b60e08301612f2b565b6001600160a01b031660e08401526137666101008301612f2b565b6001600160a01b0316610100840152610120828101359084015261378e610140830183613622565b610160610140860152612b9161016086018284613663565b60a081525f6137b860a083018561368b565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f602082840312156138a2575f5ffd5b815161157981612f17565b5f602082840312156138bd575f5ffd5b815161157981612ebc565b63ffffffff818116838216019081111561189e5761189e613562565b604081525f6138f6604083018561368b565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f6115796080830184612fd4565b80356001600160e01b0319811690600484101561396c576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f613a08608083018486613663565b979650505050505050565b5f8251613a24818460208701612f87565b9190910192915050565b5f82613a4857634e487b7160e01b5f52601260045260245ffd5b500490565b602081525f6115796020830184612fa956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122089cf7615ef177a4f3069b915ee902c8088bca963bdb9e92d3491d94c0fa7f47264736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000000001": { @@ -160,7 +160,6 @@ "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000001" }, "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", @@ -171,7 +170,7 @@ "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x6080604052600436106101ba575f3560e01c806367090ccf116100f25780639aa8605c11610092578063e07baba611610062578063e07baba6146104e3578063e30c397814610519578063f09a401614610536578063f2fde38b14610555575f5ffd5b80639aa8605c1461045e578063a86f9d9e1461048e578063b84d9ffe146104ad578063d56ad7ac146104cd575f5ffd5b80637f07c947116100cd5780637f07c947146104065780638456cb59146104195780638abf60771461042d5780638da5cb5b14610441575f5ffd5b806367090ccf1461039e578063715018a6146103de57806379ba5097146103f2575f5ffd5b80633659cfe61161015d5780633f4ba83a116101385780633f4ba83a146103435780634f1ef2861461035757806352d1902d1461036a5780635c975abb1461037e575f5ffd5b80633659cfe6146102e65780633ab76e9f146103055780633eb6b8cf14610324575f5ffd5b806306fdde031161019857806306fdde031461024c5780630e7eeb791461026c5780630ecd8be91461029b5780633075db56146102d2575f5ffd5b80630178733a146101be57806301ffc9a7146101d3578063066fe7b414610207575b5f5ffd5b6101d16101cc366004613350565b610574565b005b3480156101de575f5ffd5b506101f26101ed366004613396565b610702565b60405190151581526020015b60405180910390f35b348015610212575f5ffd5b5061023e6102213660046133d1565b61013060209081525f928352604080842090915290825290205481565b6040519081526020016101fe565b348015610257575f5ffd5b506a195c98cc8c17dd985d5b1d60aa1b61023e565b348015610277575f5ffd5b506101f26102863660046133ff565b61012f6020525f908152604090205460ff1681565b3480156102a6575f5ffd5b506102ba6102b536600461341a565b610752565b6040516001600160a01b0390911681526020016101fe565b3480156102dd575f5ffd5b506101f2610e60565b3480156102f1575f5ffd5b506101d16103003660046133ff565b610e78565b348015610310575f5ffd5b506097546102ba906001600160a01b031681565b34801561032f575f5ffd5b506102ba61033e366004613482565b610f48565b34801561034e575f5ffd5b506101d1610f5e565b6101d16103653660046135ca565b610f72565b348015610375575f5ffd5b5061023e611027565b348015610389575f5ffd5b506101f260c954610100900460ff1660021490565b3480156103a9575f5ffd5b506102ba6103b83660046133d1565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b3480156103e9575f5ffd5b506101d16110d8565b3480156103fd575f5ffd5b506101d16110e9565b6101d1610414366004613616565b611160565b348015610424575f5ffd5b506101d16112b0565b348015610438575f5ffd5b506102ba6112c3565b34801561044c575f5ffd5b506033546001600160a01b03166102ba565b348015610469575f5ffd5b5061047d6104783660046133ff565b6112d1565b6040516101fe9594939291906136cf565b348015610499575f5ffd5b506102ba6104a8366004613728565b611426565b6104c06104bb36600461374b565b611432565b6040516101fe9190613764565b3480156104d8575f5ffd5b5061023e6276a70081565b3480156104ee575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101fe565b348015610524575f5ffd5b506065546001600160a01b03166102ba565b348015610541575f5ffd5b506101d1610550366004613854565b611875565b348015610560575f5ffd5b506101d161056f3660046133ff565b611984565b61058860c954610100900460ff1660021490565b156105a65760405163bae6e2a960e01b815260040160405180910390fd5b60026105b460c95460ff1690565b60ff16036105d55760405163dfc60d8560e01b815260040160405180910390fd5b6105df60026119f5565b6105e7611a0b565b505f6105f7610140840184613870565b6106059160049082906138b9565b81019061061291906138e0565b90505f5f8280602001905181019061062a919061398c565b9350505091505f61064e838760a001602081019061064891906133ff565b84611b01565b905061067861012087013561066960c0890160a08a016133ff565b6001600160a01b031690611ba9565b61068860c0870160a088016133ff565b6001600160a01b0316857f3dea0f5955b148debf6212261e03bd80eaf8534bee43780452d16637dcc22dd5856020015184866040516106e8939291906001600160a01b039384168152919092166020820152604081019190915260600190565b60405180910390a3505050506106fe60016119f5565b5050565b5f6001600160e01b0319821662bc399d60e11b148061073157506001600160e01b03198216637f07c94760e01b145b8061074c57506001600160e01b031982166301ffc9a760e01b145b92915050565b5f61075b611bb4565b600261076960c95460ff1690565b60ff160361078a5760405163dfc60d8560e01b815260040160405180910390fd5b61079460026119f5565b6001600160a01b03821615806107ca57506001600160a01b038281165f90815261012d6020526040902054600160401b90041615155b806107dd57506001600160a01b0382163b155b156107fb5760405163dc63f98760e01b815260040160405180910390fd5b5f61080c60408501602086016133ff565b6001600160a01b0316148061083557504661082a6020850185613a80565b6001600160401b0316145b1561085357604051638257f7f560e01b815260040160405180910390fd5b6001600160a01b0382165f90815261012f602052604090205460ff161561088d576040516375c42fc160e01b815260040160405180910390fd5b5f6101308161089f6020870187613a80565b6001600160401b031681526020019081526020015f205f8560200160208101906108c991906133ff565b6001600160a01b0316815260208101919091526040015f205490506108f16276a70082613aaf565b4210156109115760405163231d35fb60e11b815260040160405180910390fd5b61012e5f6109226020870187613a80565b6001600160401b031681526020019081526020015f205f85602001602081019061094c91906133ff565b6001600160a01b03908116825260208201929092526040015f20541691508115610cb2576001600160a01b038281165f90815261012d60209081526040808320815160a08101835281546001600160401b0381168252600160401b810490961693810193909352600160e01b90940460ff1690820152600183018054929391926060840191906109db90613ac2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0790613ac2565b8015610a525780601f10610a2957610100808354040283529160200191610a52565b820191905f5260205f20905b815481529060010190602001808311610a3557829003601f168201915b50505050508152602001600282018054610a6b90613ac2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9790613ac2565b8015610ae25780601f10610ab957610100808354040283529160200191610ae2565b820191905f5260205f20905b815481529060010190602001808311610ac557829003601f168201915b505050505081525050905080604051602001610afe9190613b59565b6040516020818303038152906040528051906020012085604051602001610b259190613bdf565b6040516020818303038152906040528051906020012014610b5957604051632f9d1d7b60e11b815260040160405180910390fd5b6001600160a01b0383165f90815261012d6020526040812080546001600160e81b031916815590610b8d60018301826132f8565b610b9a600283015f6132f8565b50506001600160a01b0383165f81815261012f60205260409020805460ff19166001179055610bd09063b8f2e0c560e01b611c0e565b8015610bf15750610bf16001600160a01b03851663b8f2e0c560e01b611c0e565b15610cb05760405163b8f2e0c560e01b81526001600160a01b0385811660048301525f602483015284169063b8f2e0c5906044015f604051808303815f87803b158015610c3c575f5ffd5b505af1158015610c4e573d5f5f3e3d5ffd5b505060405163b8f2e0c560e01b81526001600160a01b038681166004830152600160248301528716925063b8f2e0c591506044015f604051808303815f87803b158015610c99575f5ffd5b505af1158015610cab573d5f5f3e3d5ffd5b505050505b505b6001600160a01b0383165f90815261012d602052604090208490610cd68282613d82565b5083905061012e5f610ceb6020880188613a80565b6001600160401b031681526020019081526020015f205f866020016020810190610d1591906133ff565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550426101305f865f016020810190610d6e9190613a80565b6001600160401b031681526020019081526020015f205f866020016020810190610d9891906133ff565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550836020016020810190610dce91906133ff565b6001600160a01b0316610de46020860186613a80565b6001600160401b03167f031d68e1805917560c34a5f55a7dd91bef98f911190ed02cdbb53caedae6c39d8486610e1d60608a018a613870565b610e2a60808c018c613870565b610e3a60608e0160408f01613e40565b604051610e4d9796959493929190613e5b565b60405180910390a35061074c60016119f5565b5f6002610e6f60c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000002163003610ec95760405162461bcd60e51b8152600401610ec090613eb2565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000026001600160a01b0316610efb611cde565b6001600160a01b031614610f215760405162461bcd60e51b8152600401610ec090613efe565b610f2a81611cf9565b604080515f80825260208201909252610f4591839190611d01565b50565b5f610f54848484611e6b565b90505b9392505050565b610f66611ec7565b610f70335f611f57565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000002163003610fba5760405162461bcd60e51b8152600401610ec090613eb2565b7f00000000000000000000000001670010000000000000000000000000000000026001600160a01b0316610fec611cde565b6001600160a01b0316146110125760405162461bcd60e51b8152600401610ec090613efe565b61101b82611cf9565b6106fe82826001611d01565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000216146110c65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ec0565b505f5160206149de5f395f51905f5290565b6110e0611bb4565b610f705f611f5f565b60655433906001600160a01b031681146111575760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ec0565b610f4581611f5f565b61117460c954610100900460ff1660021490565b156111925760405163bae6e2a960e01b815260040160405180910390fd5b60026111a060c95460ff1690565b60ff16036111c15760405163dfc60d8560e01b815260040160405180910390fd5b6111cb60026119f5565b5f8080806111db85870187613f55565b93509350935093505f6111ec611f78565b90506111f783612097565b5f611203868585611b01565b90506112186001600160a01b03851634611ba9565b836001600160a01b0316856001600160a01b0316835f01517f75a051823424fc80e92556c41cb0ad977ae1dcb09c68a9c38acab86b11a69f8985604001518a60200151868960405161129894939291906001600160401b039490941684526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a45050505050506106fe60016119f5565b6112b86120d3565b610f70336001611f57565b5f6112cc611cde565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b84046001600160a01b031693600160e01b900460ff1692909161131990613ac2565b80601f016020809104026020016040519081016040528092919081815260200182805461134590613ac2565b80156113905780601f1061136757610100808354040283529160200191611390565b820191905f5260205f20905b81548152906001019060200180831161137357829003601f168201915b5050505050908060020180546113a590613ac2565b80601f01602080910402602001604051908101604052809291908181526020018280546113d190613ac2565b801561141c5780601f106113f35761010080835404028352916020019161141c565b820191905f5260205f20905b8154815290600101906020018083116113ff57829003601f168201915b5050505050905085565b5f610f57468484611e6b565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201929092526101408101919091526114a060c954610100900460ff1660021490565b156114be5760405163bae6e2a960e01b815260040160405180910390fd5b60026114cc60c95460ff1690565b60ff16036114ed5760405163dfc60d8560e01b815260040160405180910390fd5b6114f760026119f5565b8160c001355f0361151b57604051634299323b60e11b815260040160405180910390fd5b5f61152c60a08401608085016133ff565b6001600160a01b031603611553576040516303f8a7d360e01b815260040160405180910390fd5b61012f5f61156760a08501608086016133ff565b6001600160a01b0316815260208101919091526040015f205460ff16156115a1576040516375c42fc160e01b815260040160405180910390fd5b6115b16080830160608401613a80565b6001600160401b03163410156115da57604051630178ce0b60e31b815260040160405180910390fd5b5f5f5f6115e685612144565b6040805161016081019091525f8082529396509194509250602081016116126080890160608a01613a80565b6001600160401b0316815260200161163060c0890160a08a0161405a565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061166190890189613a80565b6001600160401b031681526020015f6001600160a01b031688602001602081019061168c91906133ff565b6001600160a01b0316036116a057336116b0565b6116b06040890160208a016133ff565b6001600160a01b031681526020908101906116e7906116d1908a018a613a80565b6a195c98cc8c17dd985d5b1d60aa1b5b5f610f48565b6001600160a01b031681526020016117056080890160608a01613a80565b611718906001600160401b031634614075565b815260200185905290505f6117366562726964676560d01b82611426565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b81526004016117629190613764565b5f6040518083038185885af115801561177d573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526117a59190810190614093565b965090506117b960608801604089016133ff565b6001600160a01b03168660a001516001600160a01b0316827f256f5c87f6ab8d238ac244067613227eb6e2cd65299121135d4f778e8581e03d875f01518b5f0160208101906118089190613a80565b89602001518d608001602081019061182091906133ff565b604080516001600160401b0395861681529390941660208401526001600160a01b03918216838501521660608201526080810189905290519081900360a00190a4505050505061187060016119f5565b919050565b5f54610100900460ff161580801561189357505f54600160ff909116105b806118ac5750303b1580156118ac57505f5460ff166001145b61190f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ec0565b5f805460ff191660011790558015611930575f805461ff0019166101001790555b61193a83836125de565b801561197f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61198c611bb4565b606580546001600160a01b0383166001600160a01b031990911681179091556119bd6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611a3c816001611426565b6001600160a01b0316336001600160a01b031614611a6d57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611aa9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611acd91906141b3565b60208101519092506001600160a01b03163314611afd57604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b031603611b3457506020830151611b2f6001600160a01b0382168484612618565b611b9f565b611b3d8461267b565b6040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052919250908216906340c10f19906044015f604051808303815f87803b158015611b88575f5ffd5b505af1158015611b9a573d5f5f3e3d5ffd5b505050505b610f5781836126bd565b6106fe82825a61274c565b6033546001600160a01b03163314610f705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ec0565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251611c6a919061421b565b5f60405180830381855afa9150503d805f8114611ca2576040519150601f19603f3d011682016040523d82523d5f602084013e611ca7565b606091505b5091509150818015611cba575080516020145b15611cd65780806020019051810190611cd39190614236565b92505b505092915050565b5f5160206149de5f395f51905f52546001600160a01b031690565b610f45611bb4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d345761197f8361278f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d8e575060408051601f3d908101601f19168201909252611d8b91810190614251565b60015b611df15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ec0565b5f5160206149de5f395f51905f528114611e5f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ec0565b5061197f83838361282a565b5f611e768484612854565b90508180611e8c57506001600160a01b03811615155b84849091611ebe57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610ec0565b50509392505050565b611edb60c954610100900460ff1660021490565b611ef85760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106fe611bb4565b606580546001600160a01b0319169055610f45816128fe565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611fa9816001611426565b6001600160a01b0316336001600160a01b031614611fda57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612016573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061203a91906141b3565b91505f61205a83604001516116e16a195c98cc8c17dd985d5b1d60aa1b90565b9050806001600160a01b031683602001516001600160a01b03161461209257604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b03811615806120b557506001600160a01b03811630145b15610f4557604051635b50f3f960e01b815260040160405180910390fd5b6120e760c954610100900460ff1660021490565b156121055760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611f4d565b6040805160a0810182525f8082526020820181905291810191909152606081810181905260808201819052905f8061012d8161218660a08801608089016133ff565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156123bc576040805160a08101825282546001600160401b0381168252600160401b81046001600160a01b03166020830152600160e01b900460ff16918101919091526001820180548391606084019161220690613ac2565b80601f016020809104026020016040519081016040528092919081815260200182805461223290613ac2565b801561227d5780601f106122545761010080835404028352916020019161227d565b820191905f5260205f20905b81548152906001019060200180831161226057829003601f168201915b5050505050815260200160028201805461229690613ac2565b80601f01602080910402602001604051908101604052809291908181526020018280546122c290613ac2565b801561230d5780601f106122e45761010080835404028352916020019161230d565b820191905f5260205f20905b8154815290600101906020018083116122f057829003601f168201915b505050505081525050925061234633308760c0013588608001602081019061233591906133ff565b6001600160a01b031692919061294f565b61235660a08601608087016133ff565b604051630852cd8d60e31b815260c087013560048201526001600160a01b0391909116906342966c68906024015f604051808303815f87803b15801561239a575f5ffd5b505af11580156123ac573d5f5f3e3d5ffd5b505050508460c00135915061255e565b6040518060a00160405280466001600160401b031681526020018660800160208101906123e991906133ff565b6001600160a01b0316815260200161240f61240a60a0890160808a016133ff565b612987565b60ff16815260200161242f61242a60a0890160808a016133ff565b612a3b565b815260200161244c61244760a0890160808a016133ff565b612ae5565b905292505f61246160a08701608088016133ff565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156124a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124cc9190614251565b90506124e76001600160a01b038316333060c08b013561294f565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa15801561252b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254f9190614251565b6125599190614075565b935050505b30637f07c947843361257660608a0160408b016133ff565b8660405160200161258a9493929190614268565b60408051601f19818403018152908290526125a79160240161429d565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509350509193909250565b806001600160a01b0381166126065760405163538ba4f960e01b815260040160405180910390fd5b61260f83612b2b565b61197f82612b89565b6040516001600160a01b03831660248201526044810182905261197f90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612bf9565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b03908116855292529091205416806118705761074c82612ccc565b5f6126d96c38bab7ba30afb6b0b730b3b2b960991b6001611426565b90506001600160a01b0381161561197f576040516315c638fb60e31b81526001600160a01b0384811660048301526024820184905282169063ae31c7d8906044015f604051808303815f87803b158015612731575f5ffd5b505af1158015612743573d5f5f3e3d5ffd5b50505050505050565b815f0361275857505050565b61277283838360405180602001604052805f815250612ece565b61197f57604051634c67134d60e11b815260040160405180910390fd5b6001600160a01b0381163b6127fc5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ec0565b5f5160206149de5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61283383612f0b565b5f8251118061283f5750805b1561197f5761284e8383612f4a565b50505050565b6097545f906001600160a01b03168061288057604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa1580156128d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128f691906142af565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040516001600160a01b038085166024830152831660448201526064810182905261284e9085906323b872dd60e01b90608401612644565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f91829182916001600160a01b038616916129cc919061421b565b5f60405180830381855afa9150503d805f8114612a04576040519150601f19603f3d011682016040523d82523d5f602084013e612a09565b606091505b5091509150818015612a1c575080516020145b612a275760126128f6565b808060200190518101906128f691906142ca565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b03861691612a81919061421b565b5f60405180830381855afa9150503d805f8114612ab9576040519150601f19603f3d011682016040523d82523d5f602084013e612abe565b606091505b509150915081612adc5760405180602001604052805f8152506128f6565b6128f681612f6f565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b03861691612a81919061421b565b5f54610100900460ff16612b515760405162461bcd60e51b8152600401610ec0906142e5565b612b596130dc565b612b776001600160a01b03821615612b715781611f5f565b33611f5f565b5060c9805461ff001916610100179055565b5f54610100900460ff16612baf5760405162461bcd60e51b8152600401610ec0906142e5565b6001600160401b03461115612bd75760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f612c4d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166131029092919063ffffffff16565b905080515f1480612c6d575080806020019051810190612c6d9190614236565b61197f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ec0565b5f5f612ce06033546001600160a01b031690565b60975460208501518551604080880151606089015160808a01519251612d1697966001600160a01b031695949390602401614330565b60408051601f198184030181529190526020810180516001600160e01b031663bb86ef9360e01b1790529050612d5c6c0627269646765645f657263323609c1b5f611426565b81604051612d699061332f565b612d7492919061439b565b604051809103905ff080158015612d8d573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d602090815260409182902087518154928901519389015160ff16600160e01b0260ff60e01b1994909516600160401b026001600160e01b03199093166001600160401b03909116179190911791909116919091178155606085015191935084916001820190612e0f90826143be565b5060808201516002820190612e2490826143be565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b0319168885169081179091559151885160608a015160808b0151848c01519451959850929095169516937fb6b427556e8cb0ebf9175da4bc48c64c4f56e44cfaf8c3ab5ebf8e2ea130907993612ec09391929190614478565b60405180910390a450919050565b5f6001600160a01b038516612ef657604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b612f148161278f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610f5783836040518060600160405280602781526020016149fe60279139613110565b60606040825110612f8e578180602001905181019061074c91906144b0565b81516020036130c9575f5b60208160ff16108015612fce5750828160ff1681518110612fbc57612fbc6144e1565b01602001516001600160f81b03191615155b15612fe55780612fdd816144f5565b915050612f99565b5f8160ff166001600160401b03811115613001576130016134c1565b6040519080825280601f01601f19166020018201604052801561302b576020820181803683370190505b5090505f91505b60208260ff161080156130675750838260ff1681518110613055576130556144e1565b01602001516001600160f81b03191615155b15610f5757838260ff1681518110613081576130816144e1565b602001015160f81c60f81b818360ff16815181106130a1576130a16144e1565b60200101906001600160f81b03191690815f1a905350816130c1816144f5565b925050613032565b505060408051602081019091525f815290565b5f54610100900460ff16610f705760405162461bcd60e51b8152600401610ec0906142e5565b6060610f5484845f85613184565b60605f5f856001600160a01b03168560405161312c919061421b565b5f60405180830381855af49150503d805f8114613164576040519150601f19603f3d011682016040523d82523d5f602084013e613169565b606091505b509150915061317a8683838761325b565b9695505050505050565b6060824710156131e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ec0565b5f5f866001600160a01b03168587604051613200919061421b565b5f6040518083038185875af1925050503d805f811461323a576040519150601f19603f3d011682016040523d82523d5f602084013e61323f565b606091505b50915091506132508783838761325b565b979650505050505050565b606083156132c95782515f036132c2576001600160a01b0385163b6132c25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ec0565b50816128f6565b6128f683838151156132de5781518083602001fd5b8060405162461bcd60e51b8152600401610ec0919061429d565b50805461330490613ac2565b5f825580601f10613313575050565b601f0160209004905f5260205f2090810190610f45919061333c565b6104ca8061451483390190565b5b80821115611afd575f815560010161333d565b5f5f60408385031215613361575f5ffd5b82356001600160401b03811115613376575f5ffd5b83016101608186031215613388575f5ffd5b946020939093013593505050565b5f602082840312156133a6575f5ffd5b81356001600160e01b031981168114610f57575f5ffd5b6001600160a01b0381168114610f45575f5ffd5b5f5f604083850312156133e2575f5ffd5b8235915060208301356133f4816133bd565b809150509250929050565b5f6020828403121561340f575f5ffd5b8135610f57816133bd565b5f5f6040838503121561342b575f5ffd5b82356001600160401b03811115613440575f5ffd5b830160a08186031215613451575f5ffd5b915060208301356133f4816133bd565b6001600160401b0381168114610f45575f5ffd5b8015158114610f45575f5ffd5b5f5f5f60608486031215613494575f5ffd5b833561349f81613461565b92506020840135915060408401356134b681613475565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b03811182821017156134f7576134f76134c1565b60405290565b60405161016081016001600160401b03811182821017156134f7576134f76134c1565b604051601f8201601f191681016001600160401b0381118282101715613548576135486134c1565b604052919050565b5f6001600160401b03821115613568576135686134c1565b50601f01601f191660200190565b5f82601f830112613585575f5ffd5b8135602083015f61359d61359884613550565b613520565b90508281528583830111156135b0575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f604083850312156135db575f5ffd5b82356135e6816133bd565b915060208301356001600160401b03811115613600575f5ffd5b61360c85828601613576565b9150509250929050565b5f5f60208385031215613627575f5ffd5b82356001600160401b0381111561363c575f5ffd5b8301601f8101851361364c575f5ffd5b80356001600160401b03811115613661575f5ffd5b856020828401011115613672575f5ffd5b6020919091019590945092505050565b5f5b8381101561369c578181015183820152602001613684565b50505f910152565b5f81518084526136bb816020860160208601613682565b601f01601f19169290920160200192915050565b6001600160401b03861681526001600160a01b038516602082015260ff8416604082015260a0606082018190525f9061370a908301856136a4565b828103608084015261371c81856136a4565b98975050505050505050565b5f5f60408385031215613739575f5ffd5b8235915060208301356133f481613475565b5f60e082840312801561375c575f5ffd5b509092915050565b6020815261377e6020820183516001600160401b03169052565b5f602083015161379960408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b03811661012084015250610120830151610140830152610140830151610160808401526128f66101808401826136a4565b5f5f60408385031215613865575f5ffd5b8235613451816133bd565b5f5f8335601e19843603018112613885575f5ffd5b8301803591506001600160401b0382111561389e575f5ffd5b6020019150368190038213156138b2575f5ffd5b9250929050565b5f5f858511156138c7575f5ffd5b838611156138d3575f5ffd5b5050820193919092039150565b5f602082840312156138f0575f5ffd5b81356001600160401b03811115613905575f5ffd5b6128f684828501613576565b805161187081613461565b8051611870816133bd565b60ff81168114610f45575f5ffd5b805161187081613927565b5f82601f83011261394f575f5ffd5b8151602083015f61396261359884613550565b9050828152858383011115613975575f5ffd5b613983836020830184613682565b95945050505050565b5f5f5f5f6080858703121561399f575f5ffd5b84516001600160401b038111156139b4575f5ffd5b850160a081880312156139c5575f5ffd5b6139cd6134d5565b81516139d881613461565b815260208201516139e8816133bd565b60208201526139f960408301613935565b604082015260608201516001600160401b03811115613a16575f5ffd5b613a2289828501613940565b60608301525060808201516001600160401b03811115613a40575f5ffd5b613a4c89828501613940565b6080830152509450613a6290506020860161391c565b9250613a706040860161391c565b6060959095015193969295505050565b5f60208284031215613a90575f5ffd5b8135610f5781613461565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561074c5761074c613a9b565b600181811c90821680613ad657607f821691505b602082108103613af457634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160401b03815116825260018060a01b03602082015116602083015260ff60408201511660408301525f606082015160a06060850152613b4060a08501826136a4565b905060808301518482036080860152611cd382826136a4565b602081525f610f576020830184613afa565b803561187081613927565b5f5f8335601e19843603018112613b8b575f5ffd5b83016020810192503590506001600160401b03811115613ba9575f5ffd5b8036038213156138b2575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f8235613bef81613461565b6001600160401b0381166020840152506020830135613c0d816133bd565b6001600160a01b0316604083810191909152830135613c2b81613927565b60ff8116606084015250613c426060840184613b76565b60a06080850152613c5760c085018284613bb7565b915050613c676080850185613b76565b848303601f190160a086015261317a838284613bb7565b601f82111561197f57805f5260205f20601f840160051c81016020851015613ca35750805b601f840160051c820191505b81811015613cc2575f8155600101613caf565b5050505050565b6001600160401b03831115613ce057613ce06134c1565b613cf483613cee8354613ac2565b83613c7e565b5f601f841160018114613d25575f8515613d0e5750838201355b5f19600387901b1c1916600186901b178355613cc2565b5f83815260208120601f198716915b82811015613d545786850135825560209485019460019092019101613d34565b5086821015613d70575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135613d8d81613461565b6001600160401b03811690508154816001600160401b031982161783556020840135613db8816133bd565b6001600160e01b031991909116909117604091821b68010000000000000000600160e01b03161782555f90830135613def81613927565b825460ff60e01b191660e09190911b60ff60e01b1617825550613e156060830183613870565b613e23818360018601613cc9565b5050613e326080830183613870565b61284e818360028601613cc9565b5f60208284031215613e50575f5ffd5b8135610f5781613927565b6001600160a01b0388811682528716602082015260a0604082018190525f90613e879083018789613bb7565b8281036060840152613e9a818688613bb7565b91505060ff8316608083015298975050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b8035611870816133bd565b5f5f5f5f60808587031215613f68575f5ffd5b84356001600160401b03811115613f7d575f5ffd5b850160a08188031215613f8e575f5ffd5b613f966134d5565b8135613fa181613461565b81526020820135613fb1816133bd565b6020820152613fc260408301613b6b565b604082015260608201356001600160401b03811115613fdf575f5ffd5b613feb89828501613576565b60608301525060808201356001600160401b03811115614009575f5ffd5b61401589828501613576565b608083015250945061402b905060208601613f4a565b925061403960408601613f4a565b9396929550929360600135925050565b63ffffffff81168114610f45575f5ffd5b5f6020828403121561406a575f5ffd5b8135610f5781614049565b8181038181111561074c5761074c613a9b565b805161187081614049565b5f5f604083850312156140a4575f5ffd5b825160208401519092506001600160401b038111156140c1575f5ffd5b830161016081860312156140d3575f5ffd5b6140db6134fd565b6140e482613911565b81526140f260208301613911565b602082015261410360408301614088565b60408201526141146060830161391c565b606082015261412560808301613911565b608082015261413660a0830161391c565b60a082015261414760c08301613911565b60c082015261415860e0830161391c565b60e082015261416a610100830161391c565b61010082015261012082810151908201526101408201516001600160401b03811115614194575f5ffd5b6141a087828501613940565b6101408301525080925050509250929050565b5f60608284031280156141c4575f5ffd5b50604051606081016001600160401b03811182821017156141e7576141e76134c1565b6040528251815260208301516141fc816133bd565b6020820152604083015161420f81613461565b60408201529392505050565b5f825161422c818460208701613682565b9190910192915050565b5f60208284031215614246575f5ffd5b8151610f5781613475565b5f60208284031215614261575f5ffd5b5051919050565b608081525f61427a6080830187613afa565b6001600160a01b0395861660208401529390941660408201526060015292915050565b602081525f610f5760208301846136a4565b5f602082840312156142bf575f5ffd5b8151610f57816133bd565b5f602082840312156142da575f5ffd5b8151610f5781613927565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0388811682528781166020830152861660408201526001600160401b038516606082015260ff8416608082015260e060a082018190525f9061437b908301856136a4565b82810360c084015261438d81856136a4565b9a9950505050505050505050565b6001600160a01b03831681526040602082018190525f90610f54908301846136a4565b81516001600160401b038111156143d7576143d76134c1565b6143eb816143e58454613ac2565b84613c7e565b6020601f82116001811461441d575f83156144065750848201515b5f19600385901b1c1916600184901b178455613cc2565b5f84815260208120601f198516915b8281101561444c578785015182556020948501946001909201910161442c565b508482101561446957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f61448a60608301866136a4565b828103602084015261449c81866136a4565b91505060ff83166040830152949350505050565b5f602082840312156144c0575f5ffd5b81516001600160401b038111156144d5575f5ffd5b6128f684828501613940565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff810361450a5761450a613a9b565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122077f7a6275dc65932675d7aceb6458f833179d28acd489d2ddcb502a26308325864736f6c634300081b0033", + "code": "0x6080604052600436106101d0575f3560e01c806352d1902d116100fd5780638abf607711610092578063a90018a111610062578063a90018a114610568578063d56ad7ac14610588578063e30c39781461059e578063f2fde38b146105bb575f5ffd5b80638abf6077146104e85780638da5cb5b146104fc5780639aa8605c14610519578063a86f9d9e14610549575f5ffd5b8063715018a6116100cd578063715018a61461049957806379ba5097146104ad5780637f07c947146104c15780638456cb59146104d4575f5ffd5b806352d1902d146104065780635c975abb1461041a57806367090ccf1461043a5780636f3901441461047a575f5ffd5b80630ecd8be9116101735780633659cfe6116101435780633659cfe6146103a15780633eb6b8cf146103c05780633f4ba83a146103df5780634f1ef286146103f3575f5ffd5b80630ecd8be9146103305780630ed434201461034f57806319ab453c1461036e5780633075db561461038d575f5ffd5b806304f3bcec116101ae57806304f3bcec1461026a578063066fe7b41461029c57806306fdde03146102e15780630e7eeb7914610301575f5ffd5b80630178733a146101d457806301ffc9a7146101e9578063040944ab1461021d575b5f5ffd5b6101e76101e2366004613794565b6105da565b005b3480156101f4575f5ffd5b506102086102033660046137da565b610776565b60405190151581526020015b60405180910390f35b348015610228575f5ffd5b50610252610237366004613801565b6101316020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610214565b348015610275575f5ffd5b507f0000000000000000000000001670010000000000000000000000000000000006610252565b3480156102a7575f5ffd5b506102d36102b636600461382c565b61013060209081525f928352604080842090915290825290205481565b604051908152602001610214565b3480156102ec575f5ffd5b506a195c98cc8c17dd985d5b1d60aa1b6102d3565b34801561030c575f5ffd5b5061020861031b36600461385a565b61012f6020525f908152604090205460ff1681565b34801561033b575f5ffd5b5061025261034a366004613875565b6107c6565b34801561035a575f5ffd5b506101e7610369366004613982565b610ed4565b348015610379575f5ffd5b506101e761038836600461385a565b6111c3565b348015610398575f5ffd5b506102086112d4565b3480156103ac575f5ffd5b506101e76103bb36600461385a565b6112ec565b3480156103cb575f5ffd5b506102526103da366004613a20565b6113b0565b3480156103ea575f5ffd5b506101e761145c565b6101e7610401366004613ad9565b6114e0565b348015610411575f5ffd5b506102d3611595565b348015610425575f5ffd5b5061020860c954610100900460ff1660021490565b348015610445575f5ffd5b5061025261045436600461382c565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b348015610485575f5ffd5b506102d3610494366004613b25565b611646565b3480156104a4575f5ffd5b506101e761169c565b3480156104b8575f5ffd5b506101e76116ad565b6101e76104cf366004613b6a565b611724565b3480156104df575f5ffd5b506101e76118ba565b3480156104f3575f5ffd5b50610252611939565b348015610507575f5ffd5b506033546001600160a01b0316610252565b348015610524575f5ffd5b5061053861053336600461385a565b611947565b604051610214959493929190613c23565b348015610554575f5ffd5b50610252610563366004613c7c565b611a9c565b61057b610576366004613c9f565b611b35565b6040516102149190613cb9565b348015610593575f5ffd5b506102d36276a70081565b3480156105a9575f5ffd5b506065546001600160a01b0316610252565b3480156105c6575f5ffd5b506101e76105d536600461385a565b611f93565b6105ee60c954610100900460ff1660021490565b1561060c5760405163bae6e2a960e01b815260040160405180910390fd5b600261061a60c95460ff1690565b60ff160361063b5760405163dfc60d8560e01b815260040160405180910390fd5b6106456002612004565b61064d61201a565b505f61065d610140840184613da9565b61066b916004908290613df2565b8101906106789190613e19565b90505f5f5f838060200190518101906106919190613ec5565b5094509450505092505f6106c1848860a00160208101906106b2919061385a565b6106bc8587613fe3565b612110565b90506106eb6101208801356106dc60c08a0160a08b0161385a565b6001600160a01b0316906121b8565b6106fb60c0880160a0890161385a565b6001600160a01b0316867f3dea0f5955b148debf6212261e03bd80eaf8534bee43780452d16637dcc22dd58660200151848760405161075b939291906001600160a01b039384168152919092166020820152604081019190915260600190565b60405180910390a350505050506107726001612004565b5050565b5f6001600160e01b0319821662bc399d60e11b14806107a557506001600160e01b03198216637f07c94760e01b145b806107c057506001600160e01b031982166301ffc9a760e01b145b92915050565b5f6107cf6121c3565b60026107dd60c95460ff1690565b60ff16036107fe5760405163dfc60d8560e01b815260040160405180910390fd5b6108086002612004565b6001600160a01b038216158061083e57506001600160a01b038281165f90815261012d6020526040902054600160401b90041615155b8061085157506001600160a01b0382163b155b1561086f5760405163dc63f98760e01b815260040160405180910390fd5b5f610880604085016020860161385a565b6001600160a01b031614806108a957504661089e6020850185613ff6565b6001600160401b0316145b156108c757604051638257f7f560e01b815260040160405180910390fd5b6001600160a01b0382165f90815261012f602052604090205460ff1615610901576040516375c42fc160e01b815260040160405180910390fd5b5f610130816109136020870187613ff6565b6001600160401b031681526020019081526020015f205f85602001602081019061093d919061385a565b6001600160a01b0316815260208101919091526040015f205490506109656276a70082613fe3565b4210156109855760405163231d35fb60e11b815260040160405180910390fd5b61012e5f6109966020870187613ff6565b6001600160401b031681526020019081526020015f205f8560200160208101906109c0919061385a565b6001600160a01b03908116825260208201929092526040015f20541691508115610d26576001600160a01b038281165f90815261012d60209081526040808320815160a08101835281546001600160401b0381168252600160401b810490961693810193909352600160e01b90940460ff169082015260018301805492939192606084019190610a4f90614011565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7b90614011565b8015610ac65780601f10610a9d57610100808354040283529160200191610ac6565b820191905f5260205f20905b815481529060010190602001808311610aa957829003601f168201915b50505050508152602001600282018054610adf90614011565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0b90614011565b8015610b565780601f10610b2d57610100808354040283529160200191610b56565b820191905f5260205f20905b815481529060010190602001808311610b3957829003601f168201915b505050505081525050905080604051602001610b7291906140a8565b6040516020818303038152906040528051906020012085604051602001610b99919061412e565b6040516020818303038152906040528051906020012014610bcd57604051632f9d1d7b60e11b815260040160405180910390fd5b6001600160a01b0383165f90815261012d6020526040812080546001600160e81b031916815590610c01600183018261373c565b610c0e600283015f61373c565b50506001600160a01b0383165f81815261012f60205260409020805460ff19166001179055610c449063b8f2e0c560e01b61221d565b8015610c655750610c656001600160a01b03851663b8f2e0c560e01b61221d565b15610d245760405163b8f2e0c560e01b81526001600160a01b0385811660048301525f602483015284169063b8f2e0c5906044015f604051808303815f87803b158015610cb0575f5ffd5b505af1158015610cc2573d5f5f3e3d5ffd5b505060405163b8f2e0c560e01b81526001600160a01b038681166004830152600160248301528716925063b8f2e0c591506044015f604051808303815f87803b158015610d0d575f5ffd5b505af1158015610d1f573d5f5f3e3d5ffd5b505050505b505b6001600160a01b0383165f90815261012d602052604090208490610d4a82826142d1565b5083905061012e5f610d5f6020880188613ff6565b6001600160401b031681526020019081526020015f205f866020016020810190610d89919061385a565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550426101305f865f016020810190610de29190613ff6565b6001600160401b031681526020019081526020015f205f866020016020810190610e0c919061385a565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550836020016020810190610e42919061385a565b6001600160a01b0316610e586020860186613ff6565b6001600160401b03167f031d68e1805917560c34a5f55a7dd91bef98f911190ed02cdbb53caedae6c39d8486610e9160608a018a613da9565b610e9e60808c018c613da9565b610eae60608e0160408f0161438f565b604051610ec197969594939291906143aa565b60405180910390a3506107c06001612004565b6002610ee260c95460ff1690565b60ff1603610f035760405163dfc60d8560e01b815260040160405180910390fd5b610f0d6002612004565b610f2160c954610100900460ff1660021490565b15610f3f5760405163bae6e2a960e01b815260040160405180910390fd5b60a08101511561107e575f610f5c647461696b6f60d81b5f611a9c565b9050806001600160a01b031663a4b235546040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fbe9190614401565b610fdb57604051631874710f60e01b815260040160405180910390fd5b608082015160405163888775d960e01b81526001600160401b0390911660048201525f906001600160a01b0383169063888775d99060240161014060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110539190614449565b5160a0840151909150811461107b57604051630dc3ea9f60e31b815260040160405180910390fd5b50505b5f61109a825f0151836020015184604001518560600151611646565b5f81815261013160205260409020549091506001600160a01b0316156110d357604051638dd940f760e01b815260040160405180910390fd5b5f818152610131602090815260409182902080546001600160a01b031916339081179091559084015184830151606086015193516323b872dd60e01b815260048101939093526001600160a01b039081166024840152604483019390935291909116906323b872dd906064016020604051808303815f875af115801561115b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117f9190614401565b5060405133815281907f4e13900a0e52240bc42a70a941392f3766f6789416493003d0e9e400b0ef32ae9060200160405180910390a2506111c06001612004565b50565b5f54610100900460ff16158080156111e157505f54600160ff909116105b806111fa5750303b1580156111fa57505f5460ff166001145b6112625760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015611283575f805461ff0019166101001790555b61128c826122ed565b8015610772575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b5f60026112e360c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000021630036113345760405162461bcd60e51b81526004016112599061450c565b7f00000000000000000000000001670010000000000000000000000000000000026001600160a01b031661136661234b565b6001600160a01b03161461138c5760405162461bcd60e51b815260040161125990614558565b61139581612366565b604080515f808252602082019092526111c09183919061236e565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa15801561142e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145291906145a4565b90505b9392505050565b61147060c954610100900460ff1660021490565b61148d5760405163bae6e2a960e01b815260040160405180910390fd5b6114a160c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16114de335f6124dd565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000021630036115285760405162461bcd60e51b81526004016112599061450c565b7f00000000000000000000000001670010000000000000000000000000000000026001600160a01b031661155a61234b565b6001600160a01b0316146115805760405162461bcd60e51b815260040161125990614558565b61158982612366565b6107728282600161236e565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000216146116345760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401611259565b505f5160206150545f395f51905f5290565b6040805160208082018790526bffffffffffffffffffffffff19606087811b82168486015286901b166054830152606880830185905283518084039091018152608890920190925280519101205b949350505050565b6116a46121c3565b6114de5f6124e5565b60655433906001600160a01b0316811461171b5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401611259565b6111c0816124e5565b61173860c954610100900460ff1660021490565b156117565760405163bae6e2a960e01b815260040160405180910390fd5b600261176460c95460ff1690565b60ff16036117855760405163dfc60d8560e01b815260040160405180910390fd5b61178f6002612004565b5f80808080806117a1878901896145ca565b9550955095509550955095505f6117b66124fe565b90506117c18561261d565b5f828152610131602052604090205485906001600160a01b03168015611801575f8481526101316020526040902080546001600160a01b03191690559050805b5f6118118a846106bc898b613fe3565b90506118266001600160a01b038916346121b8565b835160408086015160208d81015183516001600160a01b0388811682526001600160401b03909416928101929092528216818401528482166060820152608081018b905260a081018a905291518b821693918d16927f153364fe598dfe35e31cd640831e4a90a9effca5f12d8e8ccf2fcb2e14d35bb8919081900360c00190a4505050505050505050506107726001612004565b6118ce60c954610100900460ff1660021490565b156118ec5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16114de3360016124dd565b5f61194261234b565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b84046001600160a01b031693600160e01b900460ff1692909161198f90614011565b80601f01602080910402602001604051908101604052809291908181526020018280546119bb90614011565b8015611a065780601f106119dd57610100808354040283529160200191611a06565b820191905f5260205f20905b8154815290600101906020018083116119e957829003601f168201915b505050505090806002018054611a1b90614011565b80601f0160208091040260200160405190810160405280929190818152602001828054611a4790614011565b8015611a925780601f10611a6957610100808354040283529160200191611a92565b820191905f5260205f20905b815481529060010190602001808311611a7557829003601f168201915b5050505050905085565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611b11573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145591906145a4565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082018390526101008201839052610120820192909252610140810191909152611ba360c954610100900460ff1660021490565b15611bc15760405163bae6e2a960e01b815260040160405180910390fd5b6002611bcf60c95460ff1690565b60ff1603611bf05760405163dfc60d8560e01b815260040160405180910390fd5b611bfa6002612004565b8160c001355f03611c1e57604051634299323b60e11b815260040160405180910390fd5b5f611c2f60a084016080850161385a565b6001600160a01b031603611c56576040516303f8a7d360e01b815260040160405180910390fd5b61012f5f611c6a60a085016080860161385a565b6001600160a01b0316815260208101919091526040015f205460ff1615611ca4576040516375c42fc160e01b815260040160405180910390fd5b611cb46080830160608401613ff6565b6001600160401b0316341015611cdd57604051630178ce0b60e31b815260040160405180910390fd5b5f611cf16562726964676560d01b5f611a9c565b90505f5f5f5f611d018588612659565b93509350935093505f6040518061016001604052805f6001600160401b03168152602001896060016020810190611d389190613ff6565b6001600160401b03168152602001611d5660c08b0160a08c016146e2565b63ffffffff1681525f60208083018290526040830191909152336060830152608090910190611d87908b018b613ff6565b6001600160401b031681526020015f6001600160a01b03168a6020016020810190611db2919061385a565b6001600160a01b031603611dc65733611dd6565b611dd660408b0160208c0161385a565b6001600160a01b03168152602090810190611e0d90611df7908c018c613ff6565b6a195c98cc8c17dd985d5b1d60aa1b5b5f6113b0565b6001600160a01b03168152602001611e2b60808b0160608c01613ff6565b611e3e906001600160401b0316346146fd565b81526020018681525090505f866001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401611e779190613cb9565b5f6040518083038185885af1158015611e92573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052611eba919081019061471b565b98509050611ece60608a0160408b0161385a565b6001600160a01b03168860a001516001600160a01b0316827f5f338013bf4edc4a223ee7b435dd1e5ba722013c222cfbbf3c66372fbf07f295885f01518d5f016020810190611f1d9190613ff6565b8a602001518f6080016020810190611f35919061385a565b604080516001600160401b0395861681529390941660208401526001600160a01b0391821683850152166060820152608081018a905260a0810189905290519081900360c00190a450505050505050611f8e6001612004565b919050565b611f9b6121c3565b606580546001600160a01b0383166001600160a01b03199091168117909155611fcc6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b61204b816001611a9c565b6001600160a01b0316336001600160a01b03161461207c576040516395383ea160e01b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156120b8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120dc919061483b565b60208101519092506001600160a01b0316331461210c57604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b0316036121435750602083015161213e6001600160a01b0382168484612adf565b6121ae565b61214c84612b42565b6040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052919250908216906340c10f19906044015f604051808303815f87803b158015612197575f5ffd5b505af11580156121a9573d5f5f3e3d5ffd5b505050505b6114558183612b84565b61077282825a612c13565b6033546001600160a01b031633146114de5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611259565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161227991906148a3565b5f60405180830381855afa9150503d805f81146122b1576040519150601f19603f3d011682016040523d82523d5f602084013e6122b6565b606091505b50915091508180156122c9575080516020145b156122e557808060200190518101906122e29190614401565b92505b505092915050565b5f54610100900460ff166123135760405162461bcd60e51b8152600401611259906148be565b61231b612c56565b6123396001600160a01b0382161561233357816124e5565b336124e5565b5060c9805461ff001916610100179055565b5f5160206150545f395f51905f52546001600160a01b031690565b6111c06121c3565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156123a6576123a183612c7c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612400575060408051601f3d908101601f191682019092526123fd91810190614909565b60015b6124635760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401611259565b5f5160206150545f395f51905f5281146124d15760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401611259565b506123a1838383612d17565b6107726121c3565b606580546001600160a01b03191690556111c081612d41565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b61252f816001611a9c565b6001600160a01b0316336001600160a01b031614612560576040516395383ea160e01b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561259c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c0919061483b565b91505f6125e08360400151611e076a195c98cc8c17dd985d5b1d60aa1b90565b9050806001600160a01b031683602001516001600160a01b03161461261857604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b038116158061263b57506001600160a01b03811630145b156111c057604051635b50f3f960e01b815260040160405180910390fd5b6040805160a0810182525f8082526020820181905291810191909152606081810181905260808201819052905f80808061012d8161269d60a08a0160808b0161385a565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156128da576040805160a08101825282546001600160401b0381168252600160401b81046001600160a01b03166020830152600160e01b900460ff16918101919091526001820180548391606084019161271d90614011565b80601f016020809104026020016040519081016040528092919081815260200182805461274990614011565b80156127945780601f1061276b57610100808354040283529160200191612794565b820191905f5260205f20905b81548152906001019060200180831161277757829003601f168201915b505050505081526020016002820180546127ad90614011565b80601f01602080910402602001604051908101604052809291908181526020018280546127d990614011565b80156128245780601f106127fb57610100808354040283529160200191612824565b820191905f5260205f20905b81548152906001019060200180831161280757829003601f168201915b505050505081525050945061285d33308960c001358a608001602081019061284c919061385a565b6001600160a01b0316929190612d92565b61286d60a088016080890161385a565b604051630852cd8d60e31b815260c089013560048201526001600160a01b0391909116906342966c68906024015f604051808303815f87803b1580156128b1575f5ffd5b505af11580156128c3573d5f5f3e3d5ffd5b505050508660c0013593508660e0013592506129ad565b6040518060a00160405280466001600160401b03168152602001886080016020810190612907919061385a565b6001600160a01b0316815260200161292d61292860a08b0160808c0161385a565b612dca565b60ff16815260200161294d61294860a08b0160808c0161385a565b612e7e565b815260200161296a61296560a08b0160808c0161385a565b612f28565b9052945061298b61298160a0890160808a0161385a565b8860c00135612f6e565b93506129aa6129a060a0890160808a0161385a565b8860e00135612f6e565b92505b60e087013515612a58575f886001600160a01b031663eefbf17e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129f4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a189190614920565b82546001600160401b03919091169150612a54908290600160401b90046001600160a01b0316612a4e60608c0160408d0161385a565b88611646565b9250505b30637f07c9478633612a7060608c0160408d0161385a565b888888604051602001612a889695949392919061493b565b60408051601f1981840301815290829052612aa591602401614982565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509550505092959194509250565b6040516001600160a01b0383166024820152604481018290526123a190849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613070565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611f8e576107c082613143565b5f612ba06c38bab7ba30afb6b0b730b3b2b960991b6001611a9c565b90506001600160a01b038116156123a1576040516315c638fb60e31b81526001600160a01b0384811660048301526024820184905282169063ae31c7d8906044015f604051808303815f87803b158015612bf8575f5ffd5b505af1158015612c0a573d5f5f3e3d5ffd5b50505050505050565b815f03612c1f57505050565b612c3983838360405180602001604052805f815250613338565b6123a157604051634c67134d60e11b815260040160405180910390fd5b5f54610100900460ff166114de5760405162461bcd60e51b8152600401611259906148be565b6001600160a01b0381163b612ce95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401611259565b5f5160206150545f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b612d2083613375565b5f82511180612d2c5750805b156123a157612d3b83836133b4565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052612d3b9085906323b872dd60e01b90608401612b0b565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f91829182916001600160a01b03861691612e0f91906148a3565b5f60405180830381855afa9150503d805f8114612e47576040519150601f19603f3d011682016040523d82523d5f602084013e612e4c565b606091505b5091509150818015612e5f575080516020145b612e6a576012611694565b808060200190518101906116949190614994565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b03861691612ec491906148a3565b5f60405180830381855afa9150503d805f8114612efc576040519150601f19603f3d011682016040523d82523d5f602084013e612f01565b606091505b509150915081612f1f5760405180602001604052805f815250611694565b611694816133d9565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b03861691612ec491906148a3565b5f815f03612f7d57505f6107c0565b6040516370a0823160e01b815230600482015283905f906001600160a01b038316906370a0823190602401602060405180830381865afa158015612fc3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fe79190614909565b9050612ffe6001600160a01b038316333087612d92565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015613042573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130669190614909565b6122e291906146fd565b5f6130c4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166135469092919063ffffffff16565b905080515f14806130e45750808060200190518101906130e49190614401565b6123a15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611259565b5f5f6131576033546001600160a01b031690565b6020840151845160408087015160608801516080890151925161318096959493906024016149af565b60408051601f198184030181529190526020810180516001600160e01b0316636c0db62b60e01b17905290506131c66c0627269646765645f657263323609c1b5f611a9c565b816040516131d390613773565b6131de929190614a11565b604051809103905ff0801580156131f7573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d602090815260409182902087518154928901519389015160ff16600160e01b0260ff60e01b1994909516600160401b026001600160e01b03199093166001600160401b039091161791909117919091169190911781556060850151919350849160018201906132799082614a34565b506080820151600282019061328e9082614a34565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b0319168885169081179091559151885160608a015160808b0151848c01519451959850929095169516937fb6b427556e8cb0ebf9175da4bc48c64c4f56e44cfaf8c3ab5ebf8e2ea13090799361332a9391929190614aee565b60405180910390a450919050565b5f6001600160a01b03851661336057604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b61337e81612c7c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060611455838360405180606001604052806027815260200161507460279139613554565b606060408251106133f857818060200190518101906107c09190614b26565b8151602003613533575f5b60208160ff161080156134385750828160ff168151811061342657613426614b57565b01602001516001600160f81b03191615155b1561344f578061344781614b6b565b915050613403565b5f8160ff166001600160401b0381111561346b5761346b6138bc565b6040519080825280601f01601f191660200182016040528015613495576020820181803683370190505b5090505f91505b60208260ff161080156134d15750838260ff16815181106134bf576134bf614b57565b01602001516001600160f81b03191615155b1561145557838260ff16815181106134eb576134eb614b57565b602001015160f81c60f81b818360ff168151811061350b5761350b614b57565b60200101906001600160f81b03191690815f1a9053508161352b81614b6b565b92505061349c565b505060408051602081019091525f815290565b606061145284845f856135c8565b60605f5f856001600160a01b03168560405161357091906148a3565b5f60405180830381855af49150503d805f81146135a8576040519150601f19603f3d011682016040523d82523d5f602084013e6135ad565b606091505b50915091506135be8683838761369f565b9695505050505050565b6060824710156136295760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611259565b5f5f866001600160a01b0316858760405161364491906148a3565b5f6040518083038185875af1925050503d805f811461367e576040519150601f19603f3d011682016040523d82523d5f602084013e613683565b606091505b50915091506136948783838761369f565b979650505050505050565b6060831561370d5782515f03613706576001600160a01b0385163b6137065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611259565b5081611694565b61169483838151156137225781518083602001fd5b8060405162461bcd60e51b81526004016112599190614982565b50805461374890614011565b5f825580601f10613757575050565b601f0160209004905f5260205f20908101906111c09190613780565b6104ca80614b8a83390190565b5b8082111561210c575f8155600101613781565b5f5f604083850312156137a5575f5ffd5b82356001600160401b038111156137ba575f5ffd5b830161016081860312156137cc575f5ffd5b946020939093013593505050565b5f602082840312156137ea575f5ffd5b81356001600160e01b031981168114611455575f5ffd5b5f60208284031215613811575f5ffd5b5035919050565b6001600160a01b03811681146111c0575f5ffd5b5f5f6040838503121561383d575f5ffd5b82359150602083013561384f81613818565b809150509250929050565b5f6020828403121561386a575f5ffd5b813561145581613818565b5f5f60408385031215613886575f5ffd5b82356001600160401b0381111561389b575f5ffd5b830160a081860312156138ac575f5ffd5b9150602083013561384f81613818565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b03811182821017156138f2576138f26138bc565b60405290565b60405161014081016001600160401b03811182821017156138f2576138f26138bc565b60405161016081016001600160401b03811182821017156138f2576138f26138bc565b604051601f8201601f191681016001600160401b0381118282101715613966576139666138bc565b604052919050565b6001600160401b03811681146111c0575f5ffd5b5f60c0828403128015613993575f5ffd5b5060405160c081016001600160401b03811182821017156139b6576139b66138bc565b6040528235815260208301356139cb81613818565b602082015260408301356139de81613818565b60408201526060838101359082015260808301356139fb8161396e565b608082015260a0928301359281019290925250919050565b80151581146111c0575f5ffd5b5f5f5f60608486031215613a32575f5ffd5b8335613a3d8161396e565b9250602084013591506040840135613a5481613a13565b809150509250925092565b5f6001600160401b03821115613a7757613a776138bc565b50601f01601f191660200190565b5f82601f830112613a94575f5ffd5b8135602083015f613aac613aa784613a5f565b61393e565b9050828152858383011115613abf575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215613aea575f5ffd5b8235613af581613818565b915060208301356001600160401b03811115613b0f575f5ffd5b613b1b85828601613a85565b9150509250929050565b5f5f5f5f60808587031215613b38575f5ffd5b843593506020850135613b4a81613818565b92506040850135613b5a81613818565b9396929550929360600135925050565b5f5f60208385031215613b7b575f5ffd5b82356001600160401b03811115613b90575f5ffd5b8301601f81018513613ba0575f5ffd5b80356001600160401b03811115613bb5575f5ffd5b856020828401011115613bc6575f5ffd5b6020919091019590945092505050565b5f5b83811015613bf0578181015183820152602001613bd8565b50505f910152565b5f8151808452613c0f816020860160208601613bd6565b601f01601f19169290920160200192915050565b6001600160401b03861681526001600160a01b038516602082015260ff8416604082015260a0606082018190525f90613c5e90830185613bf8565b8281036080840152613c708185613bf8565b98975050505050505050565b5f5f60408385031215613c8d575f5ffd5b82359150602083013561384f81613a13565b5f610100828403128015613cb1575f5ffd5b509092915050565b60208152613cd36020820183516001600160401b03169052565b5f6020830151613cee60408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b0381166101208401525061012083015161014083015261014083015161016080840152611694610180840182613bf8565b5f5f8335601e19843603018112613dbe575f5ffd5b8301803591506001600160401b03821115613dd7575f5ffd5b602001915036819003821315613deb575f5ffd5b9250929050565b5f5f85851115613e00575f5ffd5b83861115613e0c575f5ffd5b5050820193919092039150565b5f60208284031215613e29575f5ffd5b81356001600160401b03811115613e3e575f5ffd5b61169484828501613a85565b8051611f8e8161396e565b8051611f8e81613818565b60ff811681146111c0575f5ffd5b8051611f8e81613e60565b5f82601f830112613e88575f5ffd5b8151602083015f613e9b613aa784613a5f565b9050828152858383011115613eae575f5ffd5b613ebc836020830184613bd6565b95945050505050565b5f5f5f5f5f5f60c08789031215613eda575f5ffd5b86516001600160401b03811115613eef575f5ffd5b870160a0818a031215613f00575f5ffd5b613f086138d0565b8151613f138161396e565b81526020820151613f2381613818565b6020820152613f3460408301613e6e565b604082015260608201516001600160401b03811115613f51575f5ffd5b613f5d8b828501613e79565b60608301525060808201516001600160401b03811115613f7b575f5ffd5b613f878b828501613e79565b6080830152509650613f9d905060208801613e55565b9450613fab60408801613e55565b6060880151608089015160a090990151979a96995090979096909590945092505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107c0576107c0613fcf565b5f60208284031215614006575f5ffd5b81356114558161396e565b600181811c9082168061402557607f821691505b60208210810361404357634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160401b03815116825260018060a01b03602082015116602083015260ff60408201511660408301525f606082015160a0606085015261408f60a0850182613bf8565b9050608083015184820360808601526122e28282613bf8565b602081525f6114556020830184614049565b8035611f8e81613e60565b5f5f8335601e198436030181126140da575f5ffd5b83016020810192503590506001600160401b038111156140f8575f5ffd5b803603821315613deb575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f823561413e8161396e565b6001600160401b038116602084015250602083013561415c81613818565b6001600160a01b031660408381019190915283013561417a81613e60565b60ff811660608401525061419160608401846140c5565b60a060808501526141a660c085018284614106565b9150506141b660808501856140c5565b848303601f190160a08601526135be838284614106565b601f8211156123a157805f5260205f20601f840160051c810160208510156141f25750805b601f840160051c820191505b81811015614211575f81556001016141fe565b5050505050565b6001600160401b0383111561422f5761422f6138bc565b6142438361423d8354614011565b836141cd565b5f601f841160018114614274575f851561425d5750838201355b5f19600387901b1c1916600186901b178355614211565b5f83815260208120601f198716915b828110156142a35786850135825560209485019460019092019101614283565b50868210156142bf575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81356142dc8161396e565b6001600160401b03811690508154816001600160401b03198216178355602084013561430781613818565b6001600160e01b031991909116909117604091821b68010000000000000000600160e01b03161782555f9083013561433e81613e60565b825460ff60e01b191660e09190911b60ff60e01b16178255506143646060830183613da9565b614372818360018601614218565b50506143816080830183613da9565b612d3b818360028601614218565b5f6020828403121561439f575f5ffd5b813561145581613e60565b6001600160a01b0388811682528716602082015260a0604082018190525f906143d69083018789614106565b82810360608401526143e9818688614106565b91505060ff8316608083015298975050505050505050565b5f60208284031215614411575f5ffd5b815161145581613a13565b80516bffffffffffffffffffffffff81168114611f8e575f5ffd5b805162ffffff81168114611f8e575f5ffd5b5f61014082840312801561445b575f5ffd5b506144646138f8565b8251815261447460208401613e4a565b60208201526144856040840161441c565b60408201526144966060840161441c565b60608201526144a760808401613e4a565b60808201526144b860a08401613e4a565b60a08201526144c960c08401613e4a565b60c08201526144da60e08401614437565b60e08201526144ec6101008401613e6e565b6101008201526144ff6101208401614437565b6101208201529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f602082840312156145b4575f5ffd5b815161145581613818565b8035611f8e81613818565b5f5f5f5f5f5f60c087890312156145df575f5ffd5b86356001600160401b038111156145f4575f5ffd5b870160a0818a031215614605575f5ffd5b61460d6138d0565b81356146188161396e565b8152602082013561462881613818565b6020820152614639604083016140ba565b604082015260608201356001600160401b03811115614656575f5ffd5b6146628b828501613a85565b60608301525060808201356001600160401b03811115614680575f5ffd5b61468c8b828501613a85565b60808301525096506146a29050602088016145bf565b94506146b0604088016145bf565b959894975094956060810135955060808101359460a0909101359350915050565b63ffffffff811681146111c0575f5ffd5b5f602082840312156146f2575f5ffd5b8135611455816146d1565b818103818111156107c0576107c0613fcf565b8051611f8e816146d1565b5f5f6040838503121561472c575f5ffd5b825160208401519092506001600160401b03811115614749575f5ffd5b8301610160818603121561475b575f5ffd5b61476361391b565b61476c82613e4a565b815261477a60208301613e4a565b602082015261478b60408301614710565b604082015261479c60608301613e55565b60608201526147ad60808301613e4a565b60808201526147be60a08301613e55565b60a08201526147cf60c08301613e4a565b60c08201526147e060e08301613e55565b60e08201526147f26101008301613e55565b61010082015261012082810151908201526101408201516001600160401b0381111561481c575f5ffd5b61482887828501613e79565b6101408301525080925050509250929050565b5f606082840312801561484c575f5ffd5b50604051606081016001600160401b038111828210171561486f5761486f6138bc565b60405282518152602083015161488481613818565b602082015260408301516148978161396e565b60408201529392505050565b5f82516148b4818460208701613bd6565b9190910192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215614919575f5ffd5b5051919050565b5f60208284031215614930575f5ffd5b81516114558161396e565b60c081525f61494d60c0830189614049565b6001600160a01b0397881660208401529590961660408201526060810193909352608083019190915260a09091015292915050565b602081525f6114556020830184613bf8565b5f602082840312156149a4575f5ffd5b815161145581613e60565b6001600160a01b038781168252861660208201526001600160401b038516604082015260ff8416606082015260c0608082018190525f906149f290830185613bf8565b82810360a0840152614a048185613bf8565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f9061145290830184613bf8565b81516001600160401b03811115614a4d57614a4d6138bc565b614a6181614a5b8454614011565b846141cd565b6020601f821160018114614a93575f8315614a7c5750848201515b5f19600385901b1c1916600184901b178455614211565b5f84815260208120601f198516915b82811015614ac25787850151825560209485019460019092019101614aa2565b5084821015614adf57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f614b006060830186613bf8565b8281036020840152614b128186613bf8565b91505060ff83166040830152949350505050565b5f60208284031215614b36575f5ffd5b81516001600160401b03811115614b4b575f5ffd5b61169484828501613e79565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff8103614b8057614b80613fcf565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200d782368c31de2bd0cbf1d9dd4b8e289f755f6560781d9eb9c7aafbf26dad31a64736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000000002": { @@ -180,7 +179,6 @@ "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000201", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000002" }, "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", @@ -191,7 +189,7 @@ "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x60806040526004361061017b575f3560e01c806367090ccf116100cd5780638da5cb5b11610087578063e07baba611610062578063e07baba614610449578063e30c39781461047f578063f09a40161461049c578063f2fde38b146104bb575f5ffd5b80638da5cb5b146103de5780639aa8605c146103fb578063a86f9d9e1461042a575f5ffd5b806367090ccf1461033b578063715018a61461037b57806379ba50971461038f5780637f07c947146103a35780638456cb59146103b65780638abf6077146103ca575f5ffd5b80633659cfe6116101385780633f4ba83a116101135780633f4ba83a146102e05780634f1ef286146102f457806352d1902d146103075780635c975abb1461031b575f5ffd5b80633659cfe61461026b5780633ab76e9f1461028a5780633eb6b8cf146102c1575f5ffd5b80630178733a1461017f57806301ffc9a71461019457806306fdde03146101c8578063150b7a02146101f35780631f59a830146102375780633075db5614610257575b5f5ffd5b61019261018d366004612930565b6104da565b005b34801561019f575f5ffd5b506101b36101ae366004612976565b61068d565b60405190151581526020015b60405180910390f35b3480156101d3575f5ffd5b506b195c98cdcc8c57dd985d5b1d60a21b5b6040519081526020016101bf565b3480156101fe575f5ffd5b5061021e61020d366004612a00565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016101bf565b61024a610245366004612a6d565b6106dd565b6040516101bf9190612af1565b348015610262575f5ffd5b506101b3610b63565b348015610276575f5ffd5b50610192610285366004612be1565b610b7b565b348015610295575f5ffd5b506097546102a9906001600160a01b031681565b6040516001600160a01b0390911681526020016101bf565b3480156102cc575f5ffd5b506102a96102db366004612c28565b610c4b565b3480156102eb575f5ffd5b50610192610c61565b610192610302366004612d93565b610c75565b348015610312575f5ffd5b506101e5610d2a565b348015610326575f5ffd5b506101b360c954610100900460ff1660021490565b348015610346575f5ffd5b506102a9610355366004612ddf565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b348015610386575f5ffd5b50610192610ddb565b34801561039a575f5ffd5b50610192610dec565b6101926103b1366004612e0d565b610e63565b3480156103c1575f5ffd5b50610192610fcc565b3480156103d5575f5ffd5b506102a9610fdf565b3480156103e9575f5ffd5b506033546001600160a01b03166102a9565b348015610406575f5ffd5b5061041a610415366004612be1565b610fed565b6040516101bf9493929190612e4b565b348015610435575f5ffd5b506102a9610444366004612e9a565b611138565b348015610454575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101bf565b34801561048a575f5ffd5b506065546001600160a01b03166102a9565b3480156104a7575f5ffd5b506101926104b6366004612ebd565b611144565b3480156104c6575f5ffd5b506101926104d5366004612be1565b611253565b6104ee60c954610100900460ff1660021490565b1561050c5760405163bae6e2a960e01b815260040160405180910390fd5b600261051a60c95460ff1690565b60ff160361053b5760405163dfc60d8560e01b815260040160405180910390fd5b61054560026112c4565b61054d6112da565b505f61055d610140840184612ee9565b61056b916004908290612f2b565b8101906105789190612f52565b90505f5f82806020019051810190610590919061306c565b9350505091505f6105b4838760a00160208101906105ae9190612be1565b846113d0565b90506105de6101208701356105cf60c0890160a08a01612be1565b6001600160a01b031690611547565b6105ee60c0870160a08801612be1565b6001600160a01b0316857fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c8560200151848687516001600160401b0381111561063957610639612c67565b604051908082528060200260200182016040528015610662578160200160208202803683370190505b5060405161067394939291906131ab565b60405180910390a35050505061068960016112c4565b5050565b5f6001600160e01b0319821662bc399d60e11b14806106bc57506001600160e01b03198216637f07c94760e01b145b806106d757506001600160e01b031982166301ffc9a760e01b145b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261074b60c954610100900460ff1660021490565b156107695760405163bae6e2a960e01b815260040160405180910390fd5b6107728261325f565b8060e00151518160c00151511461079c5760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107c7576040516303f8a7d360e01b815260040160405180910390fd5b60026107d560c95460ff1690565b60ff16036107f65760405163dfc60d8560e01b815260040160405180910390fd5b61080060026112c4565b6108106080840160608501613332565b6001600160401b031634101561083957604051630178ce0b60e31b815260040160405180910390fd5b5f5b61084860c085018561334d565b905081101561089c5761085e60e085018561334d565b8281811061086e5761086e613392565b905060200201355f1461089457604051634299323b60e11b815260040160405180910390fd5b60010161083b565b506108c76380ac58cd60e01b6108b860a0860160808701612be1565b6001600160a01b031690611552565b6108e457604051633ee915f560e11b815260040160405180910390fd5b5f5f6108ef85611622565b6040805161016081019091525f808252929450909250602081016109196080890160608a01613332565b6001600160401b0316815260200161093760c0890160a08a016133a6565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061096890890189613332565b6001600160401b031681526020015f6001600160a01b03168860200160208101906109939190612be1565b6001600160a01b0316036109a757336109b7565b6109b76040890160208a01612be1565b6001600160a01b031681526020908101906109ef906109d8908a018a613332565b6b195c98cdcc8c57dd985d5b1d60a21b5b5f610c4b565b6001600160a01b03168152602001610a0d6080890160608a01613332565b610a20906001600160401b0316346133d5565b815260200184905290505f610a3e6562726964676560d01b82611138565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a6a9190612af1565b5f6040518083038185885af1158015610a85573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610aad91908101906133f3565b96509050610ac16060880160408901612be1565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610b179190612be1565b610b2460c08f018f61334d565b8f8060e00190610b34919061334d565b604051610b479796959493929190613543565b60405180910390a450505050610b5d60016112c4565b50919050565b5f6002610b7260c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000003163003610bcc5760405162461bcd60e51b8152600401610bc39061359f565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000036001600160a01b0316610bfe611b04565b6001600160a01b031614610c245760405162461bcd60e51b8152600401610bc3906135eb565b610c2d81611b1f565b604080515f80825260208201909252610c4891839190611b27565b50565b5f610c57848484611c91565b90505b9392505050565b610c69611ced565b610c73335f611d7d565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000003163003610cbd5760405162461bcd60e51b8152600401610bc39061359f565b7f00000000000000000000000001670010000000000000000000000000000000036001600160a01b0316610cef611b04565b6001600160a01b031614610d155760405162461bcd60e51b8152600401610bc3906135eb565b610d1e82611b1f565b61068982826001611b27565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000000031614610dc95760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610bc3565b505f51602061403f5f395f51905f5290565b610de3611d81565b610c735f611ddb565b60655433906001600160a01b03168114610e5a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610bc3565b610c4881611ddb565b610e7760c954610100900460ff1660021490565b15610e955760405163bae6e2a960e01b815260040160405180910390fd5b6002610ea360c95460ff1690565b60ff1603610ec45760405163dfc60d8560e01b815260040160405180910390fd5b610ece60026112c4565b5f808080610ede85870187613637565b93509350935093505f610eef611df4565b9050610efa83611f14565b5f610f068685856113d0565b9050610f1b6001600160a01b03851634611547565b836001600160a01b0316856001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518a6020015186898a516001600160401b03811115610f7957610f79612c67565b604051908082528060200260200182016040528015610fa2578160200160208202803683370190505b50604051610fb4959493929190613730565b60405180910390a450505050505061068960016112c4565b610fd4611f50565b610c73336001611d7d565b5f610fe8611b04565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b031692919061102b90613788565b80601f016020809104026020016040519081016040528092919081815260200182805461105790613788565b80156110a25780601f10611079576101008083540402835291602001916110a2565b820191905f5260205f20905b81548152906001019060200180831161108557829003601f168201915b5050505050908060020180546110b790613788565b80601f01602080910402602001604051908101604052809291908181526020018280546110e390613788565b801561112e5780601f106111055761010080835404028352916020019161112e565b820191905f5260205f20905b81548152906001019060200180831161111157829003601f168201915b5050505050905084565b5f610c5a468484611c91565b5f54610100900460ff161580801561116257505f54600160ff909116105b8061117b5750303b15801561117b57505f5460ff166001145b6111de5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bc3565b5f805460ff1916600117905580156111ff575f805461ff0019166101001790555b6112098383611fc1565b801561124e575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61125b611d81565b606580546001600160a01b0383166001600160a01b0319909116811790915561128c6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b61130b816001611138565b6001600160a01b0316336001600160a01b03161461133c57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611378573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139c91906137ba565b60208101519092506001600160a01b031633146113cc57604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b031603611496575060208301515f5b825181101561149057816001600160a01b03166342842e0e308686858151811061141857611418613392565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064015f604051808303815f87803b15801561146f575f5ffd5b505af1158015611481573d5f5f3e3d5ffd5b505050508060010190506113ec565b50610c5a565b61149f84611ffb565b90505f5b825181101561153f57816001600160a01b03166340c10f19858584815181106114ce576114ce613392565b60200260200101516040518363ffffffff1660e01b81526004016115079291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b15801561151e575f5ffd5b505af1158015611530573d5f5f3e3d5ffd5b505050508060010190506114a3565b509392505050565b61068982825a612042565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b179052516115ae9190613822565b5f60405180830381855afa9150503d805f81146115e6576040519150601f19603f3d011682016040523d82523d5f602084013e6115eb565b606091505b50915091508180156115fe575080516020145b1561161a5780806020019051810190611617919061383d565b92505b505092915050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161165860a0870160808801612be1565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b90041615611939576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b031660208201526001830180549192849290840191906116c990613788565b80601f01602080910402602001604051908101604052809291908181526020018280546116f590613788565b80156117405780601f1061171757610100808354040283529160200191611740565b820191905f5260205f20905b81548152906001019060200180831161172357829003601f168201915b5050505050815260200160028201805461175990613788565b80601f016020809104026020016040519081016040528092919081815260200182805461178590613788565b80156117d05780601f106117a7576101008083540402835291602001916117d0565b820191905f5260205f20905b8154815290600101906020018083116117b357829003601f168201915b50505050508152505091505f5b6117ea60c086018661334d565b90508110156119335761180360a0860160808701612be1565b6001600160a01b03166342842e0e333061182060c08a018a61334d565b8681811061183057611830613392565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611884575f5ffd5b505af1158015611896573d5f5f3e3d5ffd5b506118ab9250505060a0860160808701612be1565b6001600160a01b03166342966c686118c660c088018861334d565b848181106118d6576118d6613392565b905060200201356040518263ffffffff1660e01b81526004016118fb91815260200190565b5f604051808303815f87803b158015611912575f5ffd5b505af1158015611924573d5f5f3e3d5ffd5b505050508060010190506117dd565b50611a79565b6040518060800160405280466001600160401b031681526020018560800160208101906119669190612be1565b6001600160a01b0316815260200161198c61198760a0880160808901612be1565b612085565b81526020016119a96119a460a0880160808901612be1565b612137565b905291505f5b6119bc60c086018661334d565b9050811015611a77576119d560a0860160808701612be1565b6001600160a01b03166342842e0e33306119f260c08a018a61334d565b86818110611a0257611a02613392565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611a56575f5ffd5b505af1158015611a68573d5f5f3e3d5ffd5b505050508060010190506119af565b505b5030637f07c9478233611a926060880160408901612be1565b611a9f60c089018961334d565b604051602001611ab3959493929190613858565b60408051601f1981840301815290829052611ad0916024016138e9565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f51602061403f5f395f51905f52546001600160a01b031690565b610c48611d81565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611b5a5761124e8361217d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bb4575060408051601f3d908101601f19168201909252611bb1918101906138fb565b60015b611c175760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610bc3565b5f51602061403f5f395f51905f528114611c855760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610bc3565b5061124e838383612218565b5f611c9c8484612242565b90508180611cb257506001600160a01b03811615155b84849091611ce457604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610bc3565b50509392505050565b611d0160c954610100900460ff1660021490565b611d1e5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106895b6033546001600160a01b03163314610c735760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bc3565b606580546001600160a01b0319169055610c48816122e4565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611e25816001611138565b6001600160a01b0316336001600160a01b031614611e5657604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb691906137ba565b91505f611ed783604001516109e96b195c98cdcc8c57dd985d5b1d60a21b90565b9050806001600160a01b031683602001516001600160a01b031614611f0f57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611f3257506001600160a01b03811630145b15610c4857604051635b50f3f960e01b815260040160405180910390fd5b611f6460c954610100900460ff1660021490565b15611f825760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611d73565b806001600160a01b038116611fe95760405163538ba4f960e01b815260040160405180910390fd5b611ff283612335565b61124e82612393565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b039081168552925290912054168061203d576106d782612403565b919050565b815f0361204e57505050565b61206883838360405180602001604052805f8152506125de565b61124e57604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b038616916120cb9190613822565b5f60405180830381855afa9150503d805f8114612103576040519150601f19603f3d011682016040523d82523d5f602084013e612108565b606091505b5091509150816121265760405180602001604052805f81525061212f565b61212f8161261b565b949350505050565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b038616916120cb9190613822565b6001600160a01b0381163b6121ea5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610bc3565b5f51602061403f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61222183612788565b5f8251118061222d5750805b1561124e5761223c83836127c7565b50505050565b6097545f906001600160a01b03168061226e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa1580156122c0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061212f9190613912565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff1661235b5760405162461bcd60e51b8152600401610bc39061392d565b6123636127ec565b6123816001600160a01b0382161561237b5781611ddb565b33611ddb565b5060c9805461ff001916610100179055565b5f54610100900460ff166123b95760405162461bcd60e51b8152600401610bc39061392d565b6001600160401b034611156123e15760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6124176033546001600160a01b031690565b609754602085015185516040808801516060890151915161244896956001600160a01b031694939290602401613978565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b179052905061248f6d627269646765645f65726337323160901b5f611138565b8160405161249c90612923565b6124a79291906139d9565b604051809103905ff0801580156124c0573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906125249082613a47565b50606082015160028201906125399082613a47565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b926125d09290613b01565b60405180910390a450919050565b5f6001600160a01b03851661260657604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b6060604082511061263a57818060200190518101906106d79190613b25565b8151602003612775575f5b60208160ff1610801561267a5750828160ff168151811061266857612668613392565b01602001516001600160f81b03191615155b15612691578061268981613b56565b915050612645565b5f8160ff166001600160401b038111156126ad576126ad612c67565b6040519080825280601f01601f1916602001820160405280156126d7576020820181803683370190505b5090505f91505b60208260ff161080156127135750838260ff168151811061270157612701613392565b01602001516001600160f81b03191615155b15610c5a57838260ff168151811061272d5761272d613392565b602001015160f81c60f81b818360ff168151811061274d5761274d613392565b60200101906001600160f81b03191690815f1a9053508161276d81613b56565b9250506126de565b505060408051602081019091525f815290565b6127918161217d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c5a838360405180606001604052806027815260200161405f60279139612812565b5f54610100900460ff16610c735760405162461bcd60e51b8152600401610bc39061392d565b60605f5f856001600160a01b03168560405161282e9190613822565b5f60405180830381855af49150503d805f8114612866576040519150601f19603f3d011682016040523d82523d5f602084013e61286b565b606091505b509150915061287c86838387612886565b9695505050505050565b606083156128f45782515f036128ed576001600160a01b0385163b6128ed5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bc3565b508161212f565b61212f83838151156129095781518083602001fd5b8060405162461bcd60e51b8152600401610bc391906138e9565b6104ca80613b7583390190565b5f5f60408385031215612941575f5ffd5b82356001600160401b03811115612956575f5ffd5b83016101608186031215612968575f5ffd5b946020939093013593505050565b5f60208284031215612986575f5ffd5b81356001600160e01b031981168114610c5a575f5ffd5b6001600160a01b0381168114610c48575f5ffd5b803561203d8161299d565b5f5f83601f8401126129cc575f5ffd5b5081356001600160401b038111156129e2575f5ffd5b6020830191508360208285010111156129f9575f5ffd5b9250929050565b5f5f5f5f5f60808688031215612a14575f5ffd5b8535612a1f8161299d565b94506020860135612a2f8161299d565b93506040860135925060608601356001600160401b03811115612a50575f5ffd5b612a5c888289016129bc565b969995985093965092949392505050565b5f60208284031215612a7d575f5ffd5b81356001600160401b03811115612a92575f5ffd5b82016101008185031215610c5a575f5ffd5b5f5b83811015612abe578181015183820152602001612aa6565b50505f910152565b5f8151808452612add816020860160208601612aa4565b601f01601f19169290920160200192915050565b60208152612b0b6020820183516001600160401b03169052565b5f6020830151612b2660408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b038116610120840152506101208301516101408301526101408301516101608084015261212f610180840182612ac6565b5f60208284031215612bf1575f5ffd5b8135610c5a8161299d565b6001600160401b0381168114610c48575f5ffd5b803561203d81612bfc565b8015158114610c48575f5ffd5b5f5f5f60608486031215612c3a575f5ffd5b8335612c4581612bfc565b9250602084013591506040840135612c5c81612c1b565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612c9d57612c9d612c67565b60405290565b60405161010081016001600160401b0381118282101715612c9d57612c9d612c67565b60405161016081016001600160401b0381118282101715612c9d57612c9d612c67565b604051601f8201601f191681016001600160401b0381118282101715612d1157612d11612c67565b604052919050565b5f6001600160401b03821115612d3157612d31612c67565b50601f01601f191660200190565b5f82601f830112612d4e575f5ffd5b8135602083015f612d66612d6184612d19565b612ce9565b9050828152858383011115612d79575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612da4575f5ffd5b8235612daf8161299d565b915060208301356001600160401b03811115612dc9575f5ffd5b612dd585828601612d3f565b9150509250929050565b5f5f60408385031215612df0575f5ffd5b823591506020830135612e028161299d565b809150509250929050565b5f5f60208385031215612e1e575f5ffd5b82356001600160401b03811115612e33575f5ffd5b612e3f858286016129bc565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612e7d90830185612ac6565b8281036060840152612e8f8185612ac6565b979650505050505050565b5f5f60408385031215612eab575f5ffd5b823591506020830135612e0281612c1b565b5f5f60408385031215612ece575f5ffd5b8235612ed98161299d565b91506020830135612e028161299d565b5f5f8335601e19843603018112612efe575f5ffd5b8301803591506001600160401b03821115612f17575f5ffd5b6020019150368190038213156129f9575f5ffd5b5f5f85851115612f39575f5ffd5b83861115612f45575f5ffd5b5050820193919092039150565b5f60208284031215612f62575f5ffd5b81356001600160401b03811115612f77575f5ffd5b61212f84828501612d3f565b805161203d81612bfc565b805161203d8161299d565b5f82601f830112612fa8575f5ffd5b8151602083015f612fbb612d6184612d19565b9050828152858383011115612fce575f5ffd5b612fdc836020830184612aa4565b95945050505050565b5f6001600160401b03821115612ffd57612ffd612c67565b5060051b60200190565b5f82601f830112613016575f5ffd5b8151613024612d6182612fe5565b8082825260208201915060208360051b860101925085831115613045575f5ffd5b602085015b8381101561306257805183526020928301920161304a565b5095945050505050565b5f5f5f5f6080858703121561307f575f5ffd5b84516001600160401b03811115613094575f5ffd5b8501608081880312156130a5575f5ffd5b6130ad612c7b565b81516130b881612bfc565b815260208201516130c88161299d565b602082015260408201516001600160401b038111156130e5575f5ffd5b6130f189828501612f99565b60408301525060608201516001600160401b0381111561310f575f5ffd5b61311b89828501612f99565b6060830152509450613131905060208601612f8e565b925061313f60408601612f8e565b915060608501516001600160401b03811115613159575f5ffd5b61316587828801613007565b91505092959194509250565b5f8151808452602084019350602083015f5b828110156131a1578151865260209586019590910190600101613183565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f906131d690830185613171565b8281036060840152612e8f8185613171565b63ffffffff81168114610c48575f5ffd5b803561203d816131e8565b5f82601f830112613213575f5ffd5b8135613221612d6182612fe5565b8082825260208201915060208360051b860101925085831115613242575f5ffd5b602085015b83811015613062578035835260209283019201613247565b5f6101008236031215613270575f5ffd5b613278612ca3565b61328183612c10565b815261328f602084016129b1565b60208201526132a0604084016129b1565b60408201526132b160608401612c10565b60608201526132c2608084016129b1565b60808201526132d360a084016131f9565b60a082015260c08301356001600160401b038111156132f0575f5ffd5b6132fc36828601613204565b60c08301525060e08301356001600160401b0381111561331a575f5ffd5b61332636828601613204565b60e08301525092915050565b5f60208284031215613342575f5ffd5b8135610c5a81612bfc565b5f5f8335601e19843603018112613362575f5ffd5b8301803591506001600160401b0382111561337b575f5ffd5b6020019150600581901b36038213156129f9575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156133b6575f5ffd5b8135610c5a816131e8565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106d7576106d76133c1565b805161203d816131e8565b5f5f60408385031215613404575f5ffd5b825160208401519092506001600160401b03811115613421575f5ffd5b83016101608186031215613433575f5ffd5b61343b612cc6565b61344482612f83565b815261345260208301612f83565b6020820152613463604083016133e8565b604082015261347460608301612f8e565b606082015261348560808301612f83565b608082015261349660a08301612f8e565b60a08201526134a760c08301612f83565b60c08201526134b860e08301612f8e565b60e08201526134ca6101008301612f8e565b61010082015261012082810151908201526101408201516001600160401b038111156134f4575f5ffd5b61350087828501612f99565b6101408301525080925050509250929050565b8183525f6001600160fb1b0383111561352a575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061357e9083018688613513565b8281036080840152613591818587613513565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f6080858703121561364a575f5ffd5b84356001600160401b0381111561365f575f5ffd5b850160808188031215613670575f5ffd5b613678612c7b565b813561368381612bfc565b815260208201356136938161299d565b602082015260408201356001600160401b038111156136b0575f5ffd5b6136bc89828501612d3f565b60408301525060608201356001600160401b038111156136da575f5ffd5b6136e689828501612d3f565b60608301525094506136fc9050602086016129b1565b925061370a604086016129b1565b915060608501356001600160401b03811115613724575f5ffd5b61316587828801613204565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f9061376a90830185613171565b828103608084015261377c8185613171565b98975050505050505050565b600181811c9082168061379c57607f821691505b602082108103610b5d57634e487b7160e01b5f52602260045260245ffd5b5f60608284031280156137cb575f5ffd5b50604051606081016001600160401b03811182821017156137ee576137ee612c67565b6040528251815260208301516138038161299d565b6020820152604083015161381681612bfc565b60408201529392505050565b5f8251613833818460208701612aa4565b9190910192915050565b5f6020828403121561384d575f5ffd5b8151610c5a81612c1b565b608081526001600160401b03865116608082015260018060a01b0360208701511660a08201525f6040870151608060c0840152613899610100840182612ac6565b90506060880151607f198483030160e08501526138b68282612ac6565b6001600160a01b0389811660208701528816604086015291506138d69050565b828103606084015261377c818587613513565b602081525f610c5a6020830184612ac6565b5f6020828403121561390b575f5ffd5b5051919050565b5f60208284031215613922575f5ffd5b8151610c5a8161299d565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f906139ba90830185612ac6565b82810360a08401526139cc8185612ac6565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c5790830184612ac6565b601f82111561124e57805f5260205f20601f840160051c81016020851015613a215750805b601f840160051c820191505b81811015613a40575f8155600101613a2d565b5050505050565b81516001600160401b03811115613a6057613a60612c67565b613a7481613a6e8454613788565b846139fc565b6020601f821160018114613aa6575f8315613a8f5750848201515b5f19600385901b1c1916600184901b178455613a40565b5f84815260208120601f198516915b82811015613ad55787850151825560209485019460019092019101613ab5565b5084821015613af257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613b136040830185612ac6565b8281036020840152612fdc8185612ac6565b5f60208284031215613b35575f5ffd5b81516001600160401b03811115613b4a575f5ffd5b61212f84828501612f99565b5f60ff821660ff8103613b6b57613b6b6133c1565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207e39dacbb7484528efd5e950acf87382098029acc99bcdc0369d1fbf4ebb7bc964736f6c634300081b0033", + "code": "0x608060405260043610610161575f3560e01c806352d1902d116100cd5780638456cb59116100875780639aa8605c116100625780639aa8605c1461040f578063a86f9d9e1461043e578063e30c39781461045d578063f2fde38b1461047a575f5ffd5b80638456cb59146103ca5780638abf6077146103de5780638da5cb5b146103f2575f5ffd5b806352d1902d1461031b5780635c975abb1461032f57806367090ccf1461034f578063715018a61461038f57806379ba5097146103a35780637f07c947146103b7575f5ffd5b80631f59a8301161011e5780631f59a830146102825780633075db56146102a25780633659cfe6146102b65780633eb6b8cf146102d55780633f4ba83a146102f45780634f1ef28614610308575f5ffd5b80630178733a1461016557806301ffc9a71461017a57806304f3bcec146101ae57806306fdde03146101f4578063150b7a021461021f57806319ab453c14610263575b5f5ffd5b610178610173366004612831565b610499565b005b348015610185575f5ffd5b50610199610194366004612877565b61064c565b60405190151581526020015b60405180910390f35b3480156101b9575f5ffd5b507f00000000000000000000000016700100000000000000000000000000000000065b6040516001600160a01b0390911681526020016101a5565b3480156101ff575f5ffd5b506b195c98cdcc8c57dd985d5b1d60a21b5b6040519081526020016101a5565b34801561022a575f5ffd5b5061024a610239366004612901565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016101a5565b34801561026e575f5ffd5b5061017861027d36600461296e565b61069c565b610295610290366004612989565b6107ad565b6040516101a59190612a0d565b3480156102ad575f5ffd5b50610199610c33565b3480156102c1575f5ffd5b506101786102d036600461296e565b610c4b565b3480156102e0575f5ffd5b506101dc6102ef366004612b29565b610d12565b3480156102ff575f5ffd5b50610178610dbe565b610178610316366004612c94565b610e42565b348015610326575f5ffd5b50610211610ef7565b34801561033a575f5ffd5b5061019960c954610100900460ff1660021490565b34801561035a575f5ffd5b506101dc610369366004612ce0565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b34801561039a575f5ffd5b50610178610fa8565b3480156103ae575f5ffd5b50610178610fb9565b6101786103c5366004612d0e565b611030565b3480156103d5575f5ffd5b50610178611199565b3480156103e9575f5ffd5b506101dc611218565b3480156103fd575f5ffd5b506033546001600160a01b03166101dc565b34801561041a575f5ffd5b5061042e61042936600461296e565b611226565b6040516101a59493929190612d4c565b348015610449575f5ffd5b506101dc610458366004612d9b565b611371565b348015610468575f5ffd5b506065546001600160a01b03166101dc565b348015610485575f5ffd5b5061017861049436600461296e565b61140a565b6104ad60c954610100900460ff1660021490565b156104cb5760405163bae6e2a960e01b815260040160405180910390fd5b60026104d960c95460ff1690565b60ff16036104fa5760405163dfc60d8560e01b815260040160405180910390fd5b610504600261147b565b61050c611491565b505f61051c610140840184612dbe565b61052a916004908290612e00565b8101906105379190612e27565b90505f5f8280602001905181019061054f9190612f41565b9350505091505f610573838760a001602081019061056d919061296e565b84611587565b905061059d61012087013561058e60c0890160a08a0161296e565b6001600160a01b0316906116fe565b6105ad60c0870160a0880161296e565b6001600160a01b0316857fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c8560200151848687516001600160401b038111156105f8576105f8612b68565b604051908082528060200260200182016040528015610621578160200160208202803683370190505b506040516106329493929190613080565b60405180910390a350505050610648600161147b565b5050565b5f6001600160e01b0319821662bc399d60e11b148061067b57506001600160e01b03198216637f07c94760e01b145b8061069657506001600160e01b031982166301ffc9a760e01b145b92915050565b5f54610100900460ff16158080156106ba57505f54600160ff909116105b806106d35750303b1580156106d357505f5460ff166001145b61073b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561075c575f805461ff0019166101001790555b61076582611709565b8015610648575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261081b60c954610100900460ff1660021490565b156108395760405163bae6e2a960e01b815260040160405180910390fd5b61084282613134565b8060e00151518160c00151511461086c5760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b0316610897576040516303f8a7d360e01b815260040160405180910390fd5b60026108a560c95460ff1690565b60ff16036108c65760405163dfc60d8560e01b815260040160405180910390fd5b6108d0600261147b565b6108e06080840160608501613207565b6001600160401b031634101561090957604051630178ce0b60e31b815260040160405180910390fd5b5f5b61091860c0850185613222565b905081101561096c5761092e60e0850185613222565b8281811061093e5761093e613267565b905060200201355f1461096457604051634299323b60e11b815260040160405180910390fd5b60010161090b565b506109976380ac58cd60e01b61098860a086016080870161296e565b6001600160a01b031690611767565b6109b457604051633ee915f560e11b815260040160405180910390fd5b5f5f6109bf85611837565b6040805161016081019091525f808252929450909250602081016109e96080890160608a01613207565b6001600160401b03168152602001610a0760c0890160a08a0161327b565b63ffffffff1681525f60208083018290526040830191909152336060830152608090910190610a3890890189613207565b6001600160401b031681526020015f6001600160a01b0316886020016020810190610a63919061296e565b6001600160a01b031603610a775733610a87565b610a876040890160208a0161296e565b6001600160a01b03168152602090810190610abf90610aa8908a018a613207565b6b195c98cdcc8c57dd985d5b1d60a21b5b5f610d12565b6001600160a01b03168152602001610add6080890160608a01613207565b610af0906001600160401b0316346132aa565b815260200184905290505f610b0e6562726964676560d01b82611371565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610b3a9190612a0d565b5f6040518083038185885af1158015610b55573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610b7d91908101906132c8565b96509050610b91606088016040890161296e565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610be7919061296e565b610bf460c08f018f613222565b8f8060e00190610c049190613222565b604051610c179796959493929190613418565b60405180910390a450505050610c2d600161147b565b50919050565b5f6002610c4260c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000003163003610c935760405162461bcd60e51b815260040161073290613474565b7f00000000000000000000000001670010000000000000000000000000000000036001600160a01b0316610cc5611d19565b6001600160a01b031614610ceb5760405162461bcd60e51b8152600401610732906134c0565b610cf481611d34565b604080515f80825260208201909252610d0f91839190611d3c565b50565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015610d90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db4919061350c565b90505b9392505050565b610dd260c954610100900460ff1660021490565b610def5760405163bae6e2a960e01b815260040160405180910390fd5b610e0360c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610e40335f611eab565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000003163003610e8a5760405162461bcd60e51b815260040161073290613474565b7f00000000000000000000000001670010000000000000000000000000000000036001600160a01b0316610ebc611d19565b6001600160a01b031614610ee25760405162461bcd60e51b8152600401610732906134c0565b610eeb82611d34565b61064882826001611d3c565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000000031614610f965760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610732565b505f516020613eff5f395f51905f5290565b610fb0611eaf565b610e405f611f09565b60655433906001600160a01b031681146110275760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610732565b610d0f81611f09565b61104460c954610100900460ff1660021490565b156110625760405163bae6e2a960e01b815260040160405180910390fd5b600261107060c95460ff1690565b60ff16036110915760405163dfc60d8560e01b815260040160405180910390fd5b61109b600261147b565b5f8080806110ab85870187613527565b93509350935093505f6110bc611f22565b90506110c783612042565b5f6110d3868585611587565b90506110e86001600160a01b038516346116fe565b836001600160a01b0316856001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518a6020015186898a516001600160401b0381111561114657611146612b68565b60405190808252806020026020018201604052801561116f578160200160208202803683370190505b50604051611181959493929190613620565b60405180910390a4505050505050610648600161147b565b6111ad60c954610100900460ff1660021490565b156111cb5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610e40336001611eab565b5f611221611d19565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b031692919061126490613678565b80601f016020809104026020016040519081016040528092919081815260200182805461129090613678565b80156112db5780601f106112b2576101008083540402835291602001916112db565b820191905f5260205f20905b8154815290600101906020018083116112be57829003601f168201915b5050505050908060020180546112f090613678565b80601f016020809104026020016040519081016040528092919081815260200182805461131c90613678565b80156113675780601f1061133e57610100808354040283529160200191611367565b820191905f5260205f20905b81548152906001019060200180831161134a57829003601f168201915b5050505050905084565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa1580156113e6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db7919061350c565b611412611eaf565b606580546001600160a01b0383166001600160a01b031990911681179091556114436033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b6114c2816001611371565b6001600160a01b0316336001600160a01b0316146114f3576040516395383ea160e01b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561152f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155391906136aa565b60208101519092506001600160a01b0316331461158357604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b03160361164d575060208301515f5b825181101561164757816001600160a01b03166342842e0e30868685815181106115cf576115cf613267565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064015f604051808303815f87803b158015611626575f5ffd5b505af1158015611638573d5f5f3e3d5ffd5b505050508060010190506115a3565b50610db7565b6116568461207e565b90505f5b82518110156116f657816001600160a01b03166340c10f198585848151811061168557611685613267565b60200260200101516040518363ffffffff1660e01b81526004016116be9291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b1580156116d5575f5ffd5b505af11580156116e7573d5f5f3e3d5ffd5b5050505080600101905061165a565b509392505050565b61064882825a6120c5565b5f54610100900460ff1661172f5760405162461bcd60e51b815260040161073290613712565b611737612108565b6117556001600160a01b0382161561174f5781611f09565b33611f09565b5060c9805461ff001916610100179055565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b179052516117c3919061375d565b5f60405180830381855afa9150503d805f81146117fb576040519150601f19603f3d011682016040523d82523d5f602084013e611800565b606091505b5091509150818015611813575080516020145b1561182f578080602001905181019061182c9190613778565b92505b505092915050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161186d60a087016080880161296e565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b90041615611b4e576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b031660208201526001830180549192849290840191906118de90613678565b80601f016020809104026020016040519081016040528092919081815260200182805461190a90613678565b80156119555780601f1061192c57610100808354040283529160200191611955565b820191905f5260205f20905b81548152906001019060200180831161193857829003601f168201915b5050505050815260200160028201805461196e90613678565b80601f016020809104026020016040519081016040528092919081815260200182805461199a90613678565b80156119e55780601f106119bc576101008083540402835291602001916119e5565b820191905f5260205f20905b8154815290600101906020018083116119c857829003601f168201915b50505050508152505091505f5b6119ff60c0860186613222565b9050811015611b4857611a1860a086016080870161296e565b6001600160a01b03166342842e0e3330611a3560c08a018a613222565b86818110611a4557611a45613267565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611a99575f5ffd5b505af1158015611aab573d5f5f3e3d5ffd5b50611ac09250505060a086016080870161296e565b6001600160a01b03166342966c68611adb60c0880188613222565b84818110611aeb57611aeb613267565b905060200201356040518263ffffffff1660e01b8152600401611b1091815260200190565b5f604051808303815f87803b158015611b27575f5ffd5b505af1158015611b39573d5f5f3e3d5ffd5b505050508060010190506119f2565b50611c8e565b6040518060800160405280466001600160401b03168152602001856080016020810190611b7b919061296e565b6001600160a01b03168152602001611ba1611b9c60a088016080890161296e565b61212e565b8152602001611bbe611bb960a088016080890161296e565b6121e0565b905291505f5b611bd160c0860186613222565b9050811015611c8c57611bea60a086016080870161296e565b6001600160a01b03166342842e0e3330611c0760c08a018a613222565b86818110611c1757611c17613267565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611c6b575f5ffd5b505af1158015611c7d573d5f5f3e3d5ffd5b50505050806001019050611bc4565b505b5030637f07c9478233611ca7606088016040890161296e565b611cb460c0890189613222565b604051602001611cc8959493929190613793565b60408051601f1981840301815290829052611ce591602401613824565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f516020613eff5f395f51905f52546001600160a01b031690565b610d0f611eaf565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d7457611d6f83612226565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611dce575060408051601f3d908101601f19168201909252611dcb91810190613836565b60015b611e315760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610732565b5f516020613eff5f395f51905f528114611e9f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610732565b50611d6f8383836122c1565b6106485b6033546001600160a01b03163314610e405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610732565b606580546001600160a01b0319169055610d0f816122eb565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611f53816001611371565b6001600160a01b0316336001600160a01b031614611f84576040516395383ea160e01b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611fc0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fe491906136aa565b91505f6120058360400151610ab96b195c98cdcc8c57dd985d5b1d60a21b90565b9050806001600160a01b031683602001516001600160a01b03161461203d57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b038116158061206057506001600160a01b03811630145b15610d0f57604051635b50f3f960e01b815260040160405180910390fd5b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b03908116855292529091205416806120c0576106968261233c565b919050565b815f036120d157505050565b6120eb83838360405180602001604052805f81525061250a565b611d6f57604051634c67134d60e11b815260040160405180910390fd5b5f54610100900460ff16610e405760405162461bcd60e51b815260040161073290613712565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b03861691612174919061375d565b5f60405180830381855afa9150503d805f81146121ac576040519150601f19603f3d011682016040523d82523d5f602084013e6121b1565b606091505b5091509150816121cf5760405180602001604052805f8152506121d8565b6121d881612547565b949350505050565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b03861691612174919061375d565b6001600160a01b0381163b6122935760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610732565b5f516020613eff5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6122ca836126b4565b5f825111806122d65750805b15611d6f576122e583836126f3565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f5f6123506033546001600160a01b031690565b6020840151845160408087015160608801519151612374959493929060240161384d565b60408051601f198184030181529190526020810180516001600160e01b031663689ccd8d60e11b17905290506123bb6d627269646765645f65726337323160901b5f611371565b816040516123c890612824565b6123d3929190613899565b604051809103905ff0801580156123ec573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906124509082613907565b50606082015160028201906124659082613907565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b926124fc92906139c1565b60405180910390a450919050565b5f6001600160a01b03851661253257604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b60606040825110612566578180602001905181019061069691906139e5565b81516020036126a1575f5b60208160ff161080156125a65750828160ff168151811061259457612594613267565b01602001516001600160f81b03191615155b156125bd57806125b581613a16565b915050612571565b5f8160ff166001600160401b038111156125d9576125d9612b68565b6040519080825280601f01601f191660200182016040528015612603576020820181803683370190505b5090505f91505b60208260ff1610801561263f5750838260ff168151811061262d5761262d613267565b01602001516001600160f81b03191615155b15610db757838260ff168151811061265957612659613267565b602001015160f81c60f81b818360ff168151811061267957612679613267565b60200101906001600160f81b03191690815f1a9053508161269981613a16565b92505061260a565b505060408051602081019091525f815290565b6126bd81612226565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610db78383604051806060016040528060278152602001613f1f6027913960605f5f856001600160a01b03168560405161272f919061375d565b5f60405180830381855af49150503d805f8114612767576040519150601f19603f3d011682016040523d82523d5f602084013e61276c565b606091505b509150915061277d86838387612787565b9695505050505050565b606083156127f55782515f036127ee576001600160a01b0385163b6127ee5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610732565b50816121d8565b6121d8838381511561280a5781518083602001fd5b8060405162461bcd60e51b81526004016107329190613824565b6104ca80613a3583390190565b5f5f60408385031215612842575f5ffd5b82356001600160401b03811115612857575f5ffd5b83016101608186031215612869575f5ffd5b946020939093013593505050565b5f60208284031215612887575f5ffd5b81356001600160e01b031981168114610db7575f5ffd5b6001600160a01b0381168114610d0f575f5ffd5b80356120c08161289e565b5f5f83601f8401126128cd575f5ffd5b5081356001600160401b038111156128e3575f5ffd5b6020830191508360208285010111156128fa575f5ffd5b9250929050565b5f5f5f5f5f60808688031215612915575f5ffd5b85356129208161289e565b945060208601356129308161289e565b93506040860135925060608601356001600160401b03811115612951575f5ffd5b61295d888289016128bd565b969995985093965092949392505050565b5f6020828403121561297e575f5ffd5b8135610db78161289e565b5f60208284031215612999575f5ffd5b81356001600160401b038111156129ae575f5ffd5b82016101008185031215610db7575f5ffd5b5f5b838110156129da5781810151838201526020016129c2565b50505f910152565b5f81518084526129f98160208601602086016129c0565b601f01601f19169290920160200192915050565b60208152612a276020820183516001600160401b03169052565b5f6020830151612a4260408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b03811661012084015250610120830151610140830152610140830151610160808401526121d86101808401826129e2565b6001600160401b0381168114610d0f575f5ffd5b80356120c081612afd565b8015158114610d0f575f5ffd5b5f5f5f60608486031215612b3b575f5ffd5b8335612b4681612afd565b9250602084013591506040840135612b5d81612b1c565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612b9e57612b9e612b68565b60405290565b60405161010081016001600160401b0381118282101715612b9e57612b9e612b68565b60405161016081016001600160401b0381118282101715612b9e57612b9e612b68565b604051601f8201601f191681016001600160401b0381118282101715612c1257612c12612b68565b604052919050565b5f6001600160401b03821115612c3257612c32612b68565b50601f01601f191660200190565b5f82601f830112612c4f575f5ffd5b8135602083015f612c67612c6284612c1a565b612bea565b9050828152858383011115612c7a575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612ca5575f5ffd5b8235612cb08161289e565b915060208301356001600160401b03811115612cca575f5ffd5b612cd685828601612c40565b9150509250929050565b5f5f60408385031215612cf1575f5ffd5b823591506020830135612d038161289e565b809150509250929050565b5f5f60208385031215612d1f575f5ffd5b82356001600160401b03811115612d34575f5ffd5b612d40858286016128bd565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612d7e908301856129e2565b8281036060840152612d9081856129e2565b979650505050505050565b5f5f60408385031215612dac575f5ffd5b823591506020830135612d0381612b1c565b5f5f8335601e19843603018112612dd3575f5ffd5b8301803591506001600160401b03821115612dec575f5ffd5b6020019150368190038213156128fa575f5ffd5b5f5f85851115612e0e575f5ffd5b83861115612e1a575f5ffd5b5050820193919092039150565b5f60208284031215612e37575f5ffd5b81356001600160401b03811115612e4c575f5ffd5b6121d884828501612c40565b80516120c081612afd565b80516120c08161289e565b5f82601f830112612e7d575f5ffd5b8151602083015f612e90612c6284612c1a565b9050828152858383011115612ea3575f5ffd5b612eb18360208301846129c0565b95945050505050565b5f6001600160401b03821115612ed257612ed2612b68565b5060051b60200190565b5f82601f830112612eeb575f5ffd5b8151612ef9612c6282612eba565b8082825260208201915060208360051b860101925085831115612f1a575f5ffd5b602085015b83811015612f37578051835260209283019201612f1f565b5095945050505050565b5f5f5f5f60808587031215612f54575f5ffd5b84516001600160401b03811115612f69575f5ffd5b850160808188031215612f7a575f5ffd5b612f82612b7c565b8151612f8d81612afd565b81526020820151612f9d8161289e565b602082015260408201516001600160401b03811115612fba575f5ffd5b612fc689828501612e6e565b60408301525060608201516001600160401b03811115612fe4575f5ffd5b612ff089828501612e6e565b6060830152509450613006905060208601612e63565b925061301460408601612e63565b915060608501516001600160401b0381111561302e575f5ffd5b61303a87828801612edc565b91505092959194509250565b5f8151808452602084019350602083015f5b82811015613076578151865260209586019590910190600101613058565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f906130ab90830185613046565b8281036060840152612d908185613046565b63ffffffff81168114610d0f575f5ffd5b80356120c0816130bd565b5f82601f8301126130e8575f5ffd5b81356130f6612c6282612eba565b8082825260208201915060208360051b860101925085831115613117575f5ffd5b602085015b83811015612f3757803583526020928301920161311c565b5f6101008236031215613145575f5ffd5b61314d612ba4565b61315683612b11565b8152613164602084016128b2565b6020820152613175604084016128b2565b604082015261318660608401612b11565b6060820152613197608084016128b2565b60808201526131a860a084016130ce565b60a082015260c08301356001600160401b038111156131c5575f5ffd5b6131d1368286016130d9565b60c08301525060e08301356001600160401b038111156131ef575f5ffd5b6131fb368286016130d9565b60e08301525092915050565b5f60208284031215613217575f5ffd5b8135610db781612afd565b5f5f8335601e19843603018112613237575f5ffd5b8301803591506001600160401b03821115613250575f5ffd5b6020019150600581901b36038213156128fa575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561328b575f5ffd5b8135610db7816130bd565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561069657610696613296565b80516120c0816130bd565b5f5f604083850312156132d9575f5ffd5b825160208401519092506001600160401b038111156132f6575f5ffd5b83016101608186031215613308575f5ffd5b613310612bc7565b61331982612e58565b815261332760208301612e58565b6020820152613338604083016132bd565b604082015261334960608301612e63565b606082015261335a60808301612e58565b608082015261336b60a08301612e63565b60a082015261337c60c08301612e58565b60c082015261338d60e08301612e63565b60e082015261339f6101008301612e63565b61010082015261012082810151908201526101408201516001600160401b038111156133c9575f5ffd5b6133d587828501612e6e565b6101408301525080925050509250929050565b8183525f6001600160fb1b038311156133ff575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061345390830186886133e8565b82810360808401526134668185876133e8565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f6020828403121561351c575f5ffd5b8151610db78161289e565b5f5f5f5f6080858703121561353a575f5ffd5b84356001600160401b0381111561354f575f5ffd5b850160808188031215613560575f5ffd5b613568612b7c565b813561357381612afd565b815260208201356135838161289e565b602082015260408201356001600160401b038111156135a0575f5ffd5b6135ac89828501612c40565b60408301525060608201356001600160401b038111156135ca575f5ffd5b6135d689828501612c40565b60608301525094506135ec9050602086016128b2565b92506135fa604086016128b2565b915060608501356001600160401b03811115613614575f5ffd5b61303a878288016130d9565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f9061365a90830185613046565b828103608084015261366c8185613046565b98975050505050505050565b600181811c9082168061368c57607f821691505b602082108103610c2d57634e487b7160e01b5f52602260045260245ffd5b5f60608284031280156136bb575f5ffd5b50604051606081016001600160401b03811182821017156136de576136de612b68565b6040528251815260208301516136f38161289e565b6020820152604083015161370681612afd565b60408201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f825161376e8184602087016129c0565b9190910192915050565b5f60208284031215613788575f5ffd5b8151610db781612b1c565b608081526001600160401b03865116608082015260018060a01b0360208701511660a08201525f6040870151608060c08401526137d46101008401826129e2565b90506060880151607f198483030160e08501526137f182826129e2565b6001600160a01b0389811660208701528816604086015291506138119050565b828103606084015261366c8185876133e8565b602081525f610db760208301846129e2565b5f60208284031215613846575f5ffd5b5051919050565b6001600160a01b038681168252851660208201526001600160401b038416604082015260a0606082018190525f90613887908301856129e2565b828103608084015261366c81856129e2565b6001600160a01b03831681526040602082018190525f90610db4908301846129e2565b601f821115611d6f57805f5260205f20601f840160051c810160208510156138e15750805b601f840160051c820191505b81811015613900575f81556001016138ed565b5050505050565b81516001600160401b0381111561392057613920612b68565b6139348161392e8454613678565b846138bc565b6020601f821160018114613966575f831561394f5750848201515b5f19600385901b1c1916600184901b178455613900565b5f84815260208120601f198516915b828110156139955787850151825560209485019460019092019101613975565b50848210156139b257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f6139d360408301856129e2565b8281036020840152612eb181856129e2565b5f602082840312156139f5575f5ffd5b81516001600160401b03811115613a0a575f5ffd5b6121d884828501612e6e565b5f60ff821660ff8103613a2b57613a2b613296565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201f38679da8d2e2abe49a8bdee1e9bfde1c31c8635ee0de1ead32b69855dd687264736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000000003": { @@ -200,7 +198,6 @@ "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000003" }, "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", @@ -211,7 +208,7 @@ "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x608060405260043610610195575f3560e01c8063715018a6116100e7578063a86f9d9e11610087578063e30c397811610062578063e30c39781461049d578063f09a4016146104ba578063f23a6e61146104d9578063f2fde38b14610505575f5ffd5b8063a86f9d9e14610401578063bc197c8114610420578063e07baba614610467575f5ffd5b80638456cb59116100c25780638456cb591461038d5780638abf6077146103a15780638da5cb5b146103b55780639aa8605c146103d2575f5ffd5b8063715018a61461035257806379ba5097146103665780637f07c9471461037a575f5ffd5b80633ab76e9f116101525780634f1ef2861161012d5780634f1ef286146102cb57806352d1902d146102de5780635c975abb146102f257806367090ccf14610312575f5ffd5b80633ab76e9f146102615780633eb6b8cf146102985780633f4ba83a146102b7575f5ffd5b80630178733a1461019957806301ffc9a7146101ae57806306fdde03146101e25780631f59a8301461020e5780633075db561461022e5780633659cfe614610242575b5f5ffd5b6101ac6101a73660046128ab565b610524565b005b3480156101b9575f5ffd5b506101cd6101c83660046128f1565b61069a565b60405190151581526020015b60405180910390f35b3480156101ed575f5ffd5b506c195c98cc4c4d4d57dd985d5b1d609a1b5b6040519081526020016101d9565b61022161021c366004612918565b6106b9565b6040516101d9919061299c565b348015610239575f5ffd5b506101cd610b40565b34801561024d575f5ffd5b506101ac61025c366004612aab565b610b58565b34801561026c575f5ffd5b50609754610280906001600160a01b031681565b6040516001600160a01b0390911681526020016101d9565b3480156102a3575f5ffd5b506102806102b2366004612af2565b610c28565b3480156102c2575f5ffd5b506101ac610c3c565b6101ac6102d9366004612c5d565b610c50565b3480156102e9575f5ffd5b50610200610d05565b3480156102fd575f5ffd5b506101cd60c954610100900460ff1660021490565b34801561031d575f5ffd5b5061028061032c366004612ca9565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b34801561035d575f5ffd5b506101ac610db6565b348015610371575f5ffd5b506101ac610dc7565b6101ac610388366004612d1b565b610e3e565b348015610398575f5ffd5b506101ac610f6a565b3480156103ac575f5ffd5b50610280610f7d565b3480156103c0575f5ffd5b506033546001600160a01b0316610280565b3480156103dd575f5ffd5b506103f16103ec366004612aab565b610f8b565b6040516101d99493929190612d59565b34801561040c575f5ffd5b5061028061041b366004612da8565b6110d6565b34801561042b575f5ffd5b5061044e61043a366004612e0b565b63bc197c8160e01b98975050505050505050565b6040516001600160e01b031990911681526020016101d9565b348015610472575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101d9565b3480156104a8575f5ffd5b506065546001600160a01b0316610280565b3480156104c5575f5ffd5b506101ac6104d4366004612ecb565b6110e9565b3480156104e4575f5ffd5b5061044e6104f3366004612ef7565b63f23a6e6160e01b9695505050505050565b348015610510575f5ffd5b506101ac61051f366004612aab565b611200565b61053860c954610100900460ff1660021490565b156105565760405163bae6e2a960e01b815260040160405180910390fd5b600261056460c95460ff1690565b60ff16036105855760405163dfc60d8560e01b815260040160405180910390fd5b61058f6002611271565b610597611287565b505f6105a7610140840184612f6d565b6105b5916004908290612faf565b8101906105c29190612fd6565b90505f5f5f838060200190518101906105db91906130f0565b94509450505092505f610602848860a00160208101906105fb9190612aab565b858561137d565b905061062c61012088013561061d60c08a0160a08b01612aab565b6001600160a01b03169061146c565b61063c60c0880160a08901612aab565b6001600160a01b0316867fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c866020015184878760405161067f9493929190613258565b60405180910390a350505050506106966001611271565b5050565b5f6106a482611477565b806106b357506106b3826114c6565b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261072760c954610100900460ff1660021490565b156107455760405163bae6e2a960e01b815260040160405180910390fd5b61074e8261330c565b8060e00151518160c0015151146107785760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107a3576040516303f8a7d360e01b815260040160405180910390fd5b60026107b160c95460ff1690565b60ff16036107d25760405163dfc60d8560e01b815260040160405180910390fd5b6107dc6002611271565b6107ec60808401606085016133df565b6001600160401b031634101561081557604051630178ce0b60e31b815260040160405180910390fd5b5f5b61082460e08501856133fa565b90508110156108785761083a60e08501856133fa565b8281811061084a5761084a61343f565b905060200201355f0361087057604051634299323b60e11b815260040160405180910390fd5b600101610817565b506108a3636cdb3d1360e11b61089460a0860160808701612aab565b6001600160a01b0316906114fa565b6108c057604051633ee915f560e11b815260040160405180910390fd5b5f5f6108cb856115ca565b6040805161016081019091525f808252929450909250602081016108f56080890160608a016133df565b6001600160401b0316815260200161091360c0890160a08a01613453565b63ffffffff1681525f60208083018290526040830191909152336060830152608090910190610944908901896133df565b6001600160401b031681526020015f6001600160a01b031688602001602081019061096f9190612aab565b6001600160a01b0316036109835733610993565b6109936040890160208a01612aab565b6001600160a01b031681526020908101906109cc906109b4908a018a6133df565b6c195c98cc4c4d4d57dd985d5b1d609a1b5b5f610c28565b6001600160a01b031681526020016109ea6080890160608a016133df565b6109fd906001600160401b031634613482565b815260200184905290505f610a1b6562726964676560d01b826110d6565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a47919061299c565b5f6040518083038185885af1158015610a62573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610a8a91908101906134a0565b96509050610a9e6060880160408901612aab565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610af49190612aab565b610b0160c08f018f6133fa565b8f8060e00190610b1191906133fa565b604051610b2497969594939291906135f0565b60405180910390a450505050610b3a6001611271565b50919050565b5f6002610b4f60c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000004163003610ba95760405162461bcd60e51b8152600401610ba09061364c565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000046001600160a01b0316610bdb611a8a565b6001600160a01b031614610c015760405162461bcd60e51b8152600401610ba090613698565b610c0a81611aa5565b604080515f80825260208201909252610c2591839190611aad565b50565b5f610c34848484611c17565b949350505050565b610c44611c73565b610c4e335f611d03565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000004163003610c985760405162461bcd60e51b8152600401610ba09061364c565b7f00000000000000000000000001670010000000000000000000000000000000046001600160a01b0316610cca611a8a565b6001600160a01b031614610cf05760405162461bcd60e51b8152600401610ba090613698565b610cf982611aa5565b61069682826001611aad565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000000041614610da45760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ba0565b505f51602061421e5f395f51905f5290565b610dbe611d07565b610c4e5f611d61565b60655433906001600160a01b03168114610e355760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ba0565b610c2581611d61565b610e5260c954610100900460ff1660021490565b15610e705760405163bae6e2a960e01b815260040160405180910390fd5b6002610e7e60c95460ff1690565b60ff1603610e9f5760405163dfc60d8560e01b815260040160405180910390fd5b610ea96002611271565b5f80808080610eba868801886136e4565b945094509450945094505f610ecd611d7a565b9050610ed884611e9b565b5f610ee58786868661137d565b9050610efa6001600160a01b0386163461146c565b846001600160a01b0316866001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518b60200151868a8a604051610f51959493929190613805565b60405180910390a4505050505050506106966001611271565b610f72611ed7565b610c4e336001611d03565b5f610f86611a8a565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b0316929190610fc99061385d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff59061385d565b80156110405780601f1061101757610100808354040283529160200191611040565b820191905f5260205f20905b81548152906001019060200180831161102357829003601f168201915b5050505050908060020180546110559061385d565b80601f01602080910402602001604051908101604052809291908181526020018280546110819061385d565b80156110cc5780601f106110a3576101008083540402835291602001916110cc565b820191905f5260205f20905b8154815290600101906020018083116110af57829003601f168201915b5050505050905084565b5f6110e2468484611c17565b9392505050565b5f54610100900460ff161580801561110757505f54600160ff909116105b806111205750303b15801561112057505f5460ff166001145b6111835760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ba0565b5f805460ff1916600117905580156111a4575f805461ff0019166101001790555b6111ae8383611f48565b6111b6611f82565b80156111fb575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611208611d07565b606580546001600160a01b0383166001600160a01b031990911681179091556112396033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b6112b88160016110d6565b6001600160a01b0316336001600160a01b0316146112e957604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611325573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611349919061388f565b60208101519092506001600160a01b0316331461137957604051632583296b60e01b815260040160405180910390fd5b5090565b5f46855f01516001600160401b0316036113fb57506020840151604051631759616b60e11b81526001600160a01b03821690632eb2c2d6906113c99030908890889088906004016138f7565b5f604051808303815f87803b1580156113e0575f5ffd5b505af11580156113f2573d5f5f3e3d5ffd5b50505050610c34565b61140485611fa8565b60405163d81d0a1560e01b81529091506001600160a01b0382169063d81d0a159061143790879087908790600401613950565b5f604051808303815f87803b15801561144e575f5ffd5b505af1158015611460573d5f5f3e3d5ffd5b50505050949350505050565b61069682825a611fef565b5f6001600160e01b0319821662bc399d60e11b14806114a657506001600160e01b03198216637f07c94760e01b145b806106b357506001600160e01b031982166301ffc9a760e01b1492915050565b5f6001600160e01b03198216630271189760e51b14806106b357506301ffc9a760e01b6001600160e01b03198316146106b3565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b179052516115569190613985565b5f60405180830381855afa9150503d805f811461158e576040519150601f19603f3d011682016040523d82523d5f602084013e611593565b606091505b50915091508180156115a6575080516020145b156115c257808060200190518101906115bf91906139a0565b92505b505092915050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161160060a0870160808801612aab565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156118f3576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b031660208201526001830180549192849290840191906116719061385d565b80601f016020809104026020016040519081016040528092919081815260200182805461169d9061385d565b80156116e85780601f106116bf576101008083540402835291602001916116e8565b820191905f5260205f20905b8154815290600101906020018083116116cb57829003601f168201915b505050505081526020016002820180546117019061385d565b80601f016020809104026020016040519081016040528092919081815260200182805461172d9061385d565b80156117785780601f1061174f57610100808354040283529160200191611778565b820191905f5260205f20905b81548152906001019060200180831161175b57829003601f168201915b50505050508152505091508360800160208101906117969190612aab565b6001600160a01b0316632eb2c2d633306117b360c08901896133fa565b6117c060e08b018b6133fa565b6040518763ffffffff1660e01b81526004016117e1969594939291906139bb565b5f604051808303815f87803b1580156117f8575f5ffd5b505af115801561180a573d5f5f3e3d5ffd5b505050505f5b61181d60c08601866133fa565b90508110156118ed5761183660a0860160808701612aab565b6001600160a01b031663b390c0ab61185160c08801886133fa565b848181106118615761186161343f565b90506020020135878060e0019061187891906133fa565b858181106118885761188861343f565b905060200201356040518363ffffffff1660e01b81526004016118b5929190918252602082015260400190565b5f604051808303815f87803b1580156118cc575f5ffd5b505af11580156118de573d5f5f3e3d5ffd5b50505050806001019050611810565b506119f0565b6040518060800160405280466001600160401b031681526020018560800160208101906119209190612aab565b6001600160a01b0316815260200161194661194160a0880160808901612aab565b612032565b815260200161196361195e60a0880160808901612aab565b6120dc565b9052915061197760a0850160808601612aab565b6001600160a01b0316632eb2c2d6333061199460c08901896133fa565b6119a160e08b018b6133fa565b6040518763ffffffff1660e01b81526004016119c2969594939291906139bb565b5f604051808303815f87803b1580156119d9575f5ffd5b505af11580156119eb573d5f5f3e3d5ffd5b505050505b5030637f07c9478233611a096060880160408901612aab565b611a1660c08901896133fa565b611a2360e08b018b6133fa565b604051602001611a399796959493929190613a18565b60408051601f1981840301815290829052611a5691602401613ac8565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f51602061421e5f395f51905f52546001600160a01b031690565b610c25611d07565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611ae0576111fb83612122565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b3a575060408051601f3d908101601f19168201909252611b3791810190613ada565b60015b611b9d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ba0565b5f51602061421e5f395f51905f528114611c0b5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ba0565b506111fb8383836121bd565b5f611c2284846121e7565b90508180611c3857506001600160a01b03811615155b84849091611c6a57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610ba0565b50509392505050565b611c8760c954610100900460ff1660021490565b611ca45760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106965b6033546001600160a01b03163314610c4e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ba0565b606580546001600160a01b0319169055610c2581612289565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611dab8160016110d6565b6001600160a01b0316336001600160a01b031614611ddc57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3c919061388f565b91505f611e5e83604001516109c66c195c98cc4c4d4d57dd985d5b1d609a1b90565b9050806001600160a01b031683602001516001600160a01b031614611e9657604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611eb957506001600160a01b03811630145b15610c2557604051635b50f3f960e01b815260040160405180910390fd5b611eeb60c954610100900460ff1660021490565b15611f095760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611cf9565b806001600160a01b038116611f705760405163538ba4f960e01b815260040160405180910390fd5b611f79836122da565b6111fb82612338565b5f54610100900460ff16610c4e5760405162461bcd60e51b8152600401610ba090613af1565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611fea576106b3826123a8565b919050565b815f03611ffb57505050565b61201583838360405180602001604052805f815250612584565b6111fb57604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b038616916120789190613985565b5f60405180830381855afa9150503d805f81146120b0576040519150601f19603f3d011682016040523d82523d5f602084013e6120b5565b606091505b5091509150816120d35760405180602001604052805f815250610c34565b610c34816125c1565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b038616916120789190613985565b6001600160a01b0381163b61218f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ba0565b5f51602061421e5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6121c68361272e565b5f825111806121d25750805b156111fb576121e1838361276d565b50505050565b6097545f906001600160a01b03168061221357604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015612265573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c349190613b3c565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166123005760405162461bcd60e51b8152600401610ba090613af1565b612308611f82565b6123266001600160a01b038216156123205781611d61565b33611d61565b5060c9805461ff001916610100179055565b5f54610100900460ff1661235e5760405162461bcd60e51b8152600401610ba090613af1565b6001600160401b034611156123865760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6123bc6033546001600160a01b031690565b60975460208501518551604080880151606089015191516123ed96956001600160a01b031694939290602401613b57565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b17905290506124356e627269646765645f6572633131353560881b5f6110d6565b816040516124429061289e565b61244d929190613bb8565b604051809103905ff080158015612466573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906124ca9082613c26565b50606082015160028201906124df9082613c26565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b926125769290613ce0565b60405180910390a450919050565b5f6001600160a01b0385166125ac57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606060408251106125e057818060200190518101906106b39190613d04565b815160200361271b575f5b60208160ff161080156126205750828160ff168151811061260e5761260e61343f565b01602001516001600160f81b03191615155b15612637578061262f81613d35565b9150506125eb565b5f8160ff166001600160401b0381111561265357612653612b31565b6040519080825280601f01601f19166020018201604052801561267d576020820181803683370190505b5090505f91505b60208260ff161080156126b95750838260ff16815181106126a7576126a761343f565b01602001516001600160f81b03191615155b156110e257838260ff16815181106126d3576126d361343f565b602001015160f81c60f81b818360ff16815181106126f3576126f361343f565b60200101906001600160f81b03191690815f1a9053508161271381613d35565b925050612684565b505060408051602081019091525f815290565b61273781612122565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606110e2838360405180606001604052806027815260200161423e6027913960605f5f856001600160a01b0316856040516127a99190613985565b5f60405180830381855af49150503d805f81146127e1576040519150601f19603f3d011682016040523d82523d5f602084013e6127e6565b606091505b50915091506127f786838387612801565b9695505050505050565b6060831561286f5782515f03612868576001600160a01b0385163b6128685760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ba0565b5081610c34565b610c3483838151156128845781518083602001fd5b8060405162461bcd60e51b8152600401610ba09190613ac8565b6104ca80613d5483390190565b5f5f604083850312156128bc575f5ffd5b82356001600160401b038111156128d1575f5ffd5b830161016081860312156128e3575f5ffd5b946020939093013593505050565b5f60208284031215612901575f5ffd5b81356001600160e01b0319811681146110e2575f5ffd5b5f60208284031215612928575f5ffd5b81356001600160401b0381111561293d575f5ffd5b820161010081850312156110e2575f5ffd5b5f5b83811015612969578181015183820152602001612951565b50505f910152565b5f815180845261298881602086016020860161294f565b601f01601f19169290920160200192915050565b602081526129b66020820183516001600160401b03169052565b5f60208301516129d160408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b0381166101208401525061012083015161014083015261014083015161016080840152610c34610180840182612971565b6001600160a01b0381168114610c25575f5ffd5b8035611fea81612a8c565b5f60208284031215612abb575f5ffd5b81356110e281612a8c565b6001600160401b0381168114610c25575f5ffd5b8035611fea81612ac6565b8015158114610c25575f5ffd5b5f5f5f60608486031215612b04575f5ffd5b8335612b0f81612ac6565b9250602084013591506040840135612b2681612ae5565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612b6757612b67612b31565b60405290565b60405161010081016001600160401b0381118282101715612b6757612b67612b31565b60405161016081016001600160401b0381118282101715612b6757612b67612b31565b604051601f8201601f191681016001600160401b0381118282101715612bdb57612bdb612b31565b604052919050565b5f6001600160401b03821115612bfb57612bfb612b31565b50601f01601f191660200190565b5f82601f830112612c18575f5ffd5b8135602083015f612c30612c2b84612be3565b612bb3565b9050828152858383011115612c43575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612c6e575f5ffd5b8235612c7981612a8c565b915060208301356001600160401b03811115612c93575f5ffd5b612c9f85828601612c09565b9150509250929050565b5f5f60408385031215612cba575f5ffd5b823591506020830135612ccc81612a8c565b809150509250929050565b5f5f83601f840112612ce7575f5ffd5b5081356001600160401b03811115612cfd575f5ffd5b602083019150836020828501011115612d14575f5ffd5b9250929050565b5f5f60208385031215612d2c575f5ffd5b82356001600160401b03811115612d41575f5ffd5b612d4d85828601612cd7565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612d8b90830185612971565b8281036060840152612d9d8185612971565b979650505050505050565b5f5f60408385031215612db9575f5ffd5b823591506020830135612ccc81612ae5565b5f5f83601f840112612ddb575f5ffd5b5081356001600160401b03811115612df1575f5ffd5b6020830191508360208260051b8501011115612d14575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612e22575f5ffd5b8835612e2d81612a8c565b97506020890135612e3d81612a8c565b965060408901356001600160401b03811115612e57575f5ffd5b612e638b828c01612dcb565b90975095505060608901356001600160401b03811115612e81575f5ffd5b612e8d8b828c01612dcb565b90955093505060808901356001600160401b03811115612eab575f5ffd5b612eb78b828c01612cd7565b999c989b5096995094979396929594505050565b5f5f60408385031215612edc575f5ffd5b8235612ee781612a8c565b91506020830135612ccc81612a8c565b5f5f5f5f5f5f60a08789031215612f0c575f5ffd5b8635612f1781612a8c565b95506020870135612f2781612a8c565b9450604087013593506060870135925060808701356001600160401b03811115612f4f575f5ffd5b612f5b89828a01612cd7565b979a9699509497509295939492505050565b5f5f8335601e19843603018112612f82575f5ffd5b8301803591506001600160401b03821115612f9b575f5ffd5b602001915036819003821315612d14575f5ffd5b5f5f85851115612fbd575f5ffd5b83861115612fc9575f5ffd5b5050820193919092039150565b5f60208284031215612fe6575f5ffd5b81356001600160401b03811115612ffb575f5ffd5b610c3484828501612c09565b8051611fea81612ac6565b8051611fea81612a8c565b5f82601f83011261302c575f5ffd5b8151602083015f61303f612c2b84612be3565b9050828152858383011115613052575f5ffd5b61306083602083018461294f565b95945050505050565b5f6001600160401b0382111561308157613081612b31565b5060051b60200190565b5f82601f83011261309a575f5ffd5b81516130a8612c2b82613069565b8082825260208201915060208360051b8601019250858311156130c9575f5ffd5b602085015b838110156130e65780518352602092830192016130ce565b5095945050505050565b5f5f5f5f5f60a08688031215613104575f5ffd5b85516001600160401b03811115613119575f5ffd5b86016080818903121561312a575f5ffd5b613132612b45565b815161313d81612ac6565b8152602082015161314d81612a8c565b602082015260408201516001600160401b0381111561316a575f5ffd5b6131768a82850161301d565b60408301525060608201516001600160401b03811115613194575f5ffd5b6131a08a82850161301d565b60608301525095506131b6905060208701613012565b93506131c460408701613012565b925060608601516001600160401b038111156131de575f5ffd5b6131ea8882890161308b565b92505060808601516001600160401b03811115613205575f5ffd5b6132118882890161308b565b9150509295509295909350565b5f8151808452602084019350602083015f5b8281101561324e578151865260209586019590910190600101613230565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f906132839083018561321e565b8281036060840152612d9d818561321e565b63ffffffff81168114610c25575f5ffd5b8035611fea81613295565b5f82601f8301126132c0575f5ffd5b81356132ce612c2b82613069565b8082825260208201915060208360051b8601019250858311156132ef575f5ffd5b602085015b838110156130e65780358352602092830192016132f4565b5f610100823603121561331d575f5ffd5b613325612b6d565b61332e83612ada565b815261333c60208401612aa0565b602082015261334d60408401612aa0565b604082015261335e60608401612ada565b606082015261336f60808401612aa0565b608082015261338060a084016132a6565b60a082015260c08301356001600160401b0381111561339d575f5ffd5b6133a9368286016132b1565b60c08301525060e08301356001600160401b038111156133c7575f5ffd5b6133d3368286016132b1565b60e08301525092915050565b5f602082840312156133ef575f5ffd5b81356110e281612ac6565b5f5f8335601e1984360301811261340f575f5ffd5b8301803591506001600160401b03821115613428575f5ffd5b6020019150600581901b3603821315612d14575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613463575f5ffd5b81356110e281613295565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106b3576106b361346e565b8051611fea81613295565b5f5f604083850312156134b1575f5ffd5b825160208401519092506001600160401b038111156134ce575f5ffd5b830161016081860312156134e0575f5ffd5b6134e8612b90565b6134f182613007565b81526134ff60208301613007565b602082015261351060408301613495565b604082015261352160608301613012565b606082015261353260808301613007565b608082015261354360a08301613012565b60a082015261355460c08301613007565b60c082015261356560e08301613012565b60e08201526135776101008301613012565b61010082015261012082810151908201526101408201516001600160401b038111156135a1575f5ffd5b6135ad8782850161301d565b6101408301525080925050509250929050565b8183525f6001600160fb1b038311156135d7575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061362b90830186886135c0565b828103608084015261363e8185876135c0565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f5f60a086880312156136f8575f5ffd5b85356001600160401b0381111561370d575f5ffd5b86016080818903121561371e575f5ffd5b613726612b45565b813561373181612ac6565b8152602082013561374181612a8c565b602082015260408201356001600160401b0381111561375e575f5ffd5b61376a8a828501612c09565b60408301525060608201356001600160401b03811115613788575f5ffd5b6137948a828501612c09565b60608301525095506137aa905060208701612aa0565b93506137b860408701612aa0565b925060608601356001600160401b038111156137d2575f5ffd5b6137de888289016132b1565b92505060808601356001600160401b038111156137f9575f5ffd5b613211888289016132b1565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f9061383f9083018561321e565b8281036080840152613851818561321e565b98975050505050505050565b600181811c9082168061387157607f821691505b602082108103610b3a57634e487b7160e01b5f52602260045260245ffd5b5f60608284031280156138a0575f5ffd5b50604051606081016001600160401b03811182821017156138c3576138c3612b31565b6040528251815260208301516138d881612a8c565b602082015260408301516138eb81612ac6565b60408201529392505050565b6001600160a01b0385811682528416602082015260a0604082018190525f906139229083018561321e565b8281036060840152613934818561321e565b83810360809094019390935250505f8152602001949350505050565b6001600160a01b03841681526060602082018190525f906139739083018561321e565b82810360408401526127f7818561321e565b5f825161399681846020870161294f565b9190910192915050565b5f602082840312156139b0575f5ffd5b81516110e281612ae5565b6001600160a01b0387811682528616602082015260a0604082018190525f906139e790830186886135c0565b82810360608401526139fa8185876135c0565b83810360809094019390935250505f81526020019695505050505050565b60a080825288516001600160401b03169082015260208801516001600160a01b031660c08201526040880151608060e08301525f90613a5b610120840182612971565b905060608a0151609f1984830301610100850152613a798282612971565b915050613a91602084018a6001600160a01b03169052565b6001600160a01b03881660408401528281036060840152613ab38187896135c0565b9050828103608084015261363e8185876135c0565b602081525f6110e26020830184612971565b5f60208284031215613aea575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215613b4c575f5ffd5b81516110e281612a8c565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f90613b9990830185612971565b82810360a0840152613bab8185612971565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c3490830184612971565b601f8211156111fb57805f5260205f20601f840160051c81016020851015613c005750805b601f840160051c820191505b81811015613c1f575f8155600101613c0c565b5050505050565b81516001600160401b03811115613c3f57613c3f612b31565b613c5381613c4d845461385d565b84613bdb565b6020601f821160018114613c85575f8315613c6e5750848201515b5f19600385901b1c1916600184901b178455613c1f565b5f84815260208120601f198516915b82811015613cb45787850151825560209485019460019092019101613c94565b5084821015613cd157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613cf26040830185612971565b82810360208401526130608185612971565b5f60208284031215613d14575f5ffd5b81516001600160401b03811115613d29575f5ffd5b610c348482850161301d565b5f60ff821660ff8103613d4a57613d4a61346e565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220dc1e85af5b71afd32a7b608773fbe502a1e5a5187b53b55fc0e0e8d68749370f64736f6c634300081b0033", + "code": "0x60806040526004361061017b575f3560e01c806367090ccf116100cd5780638da5cb5b11610087578063bc197c8111610062578063bc197c8114610434578063e30c39781461047b578063f23a6e6114610498578063f2fde38b146104c4575f5ffd5b80638da5cb5b146103c95780639aa8605c146103e6578063a86f9d9e14610415575f5ffd5b806367090ccf14610326578063715018a61461036657806379ba50971461037a5780637f07c9471461038e5780638456cb59146103a15780638abf6077146103b5575f5ffd5b80633075db56116101385780633f4ba83a116101135780633f4ba83a146102cb5780634f1ef286146102df57806352d1902d146102f25780635c975abb14610306575f5ffd5b80633075db56146102795780633659cfe61461028d5780633eb6b8cf146102ac575f5ffd5b80630178733a1461017f57806301ffc9a71461019457806304f3bcec146101c857806306fdde031461020e57806319ab453c1461023a5780631f59a83014610259575b5f5ffd5b61019261018d3660046127b1565b6104e3565b005b34801561019f575f5ffd5b506101b36101ae3660046127f7565b610659565b60405190151581526020015b60405180910390f35b3480156101d3575f5ffd5b507f00000000000000000000000016700100000000000000000000000000000000065b6040516001600160a01b0390911681526020016101bf565b348015610219575f5ffd5b506c195c98cc4c4d4d57dd985d5b1d609a1b5b6040519081526020016101bf565b348015610245575f5ffd5b5061019261025436600461283d565b610678565b61026c610267366004612858565b610791565b6040516101bf91906128dc565b348015610284575f5ffd5b506101b3610c18565b348015610298575f5ffd5b506101926102a736600461283d565b610c30565b3480156102b7575f5ffd5b506101f66102c63660046129f8565b610cf7565b3480156102d6575f5ffd5b50610192610da1565b6101926102ed366004612b63565b610e25565b3480156102fd575f5ffd5b5061022c610eda565b348015610311575f5ffd5b506101b360c954610100900460ff1660021490565b348015610331575f5ffd5b506101f6610340366004612baf565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b348015610371575f5ffd5b50610192610f8b565b348015610385575f5ffd5b50610192610f9c565b61019261039c366004612c21565b611013565b3480156103ac575f5ffd5b5061019261113f565b3480156103c0575f5ffd5b506101f66111be565b3480156103d4575f5ffd5b506033546001600160a01b03166101f6565b3480156103f1575f5ffd5b5061040561040036600461283d565b6111cc565b6040516101bf9493929190612c5f565b348015610420575f5ffd5b506101f661042f366004612cae565b611317565b34801561043f575f5ffd5b5061046261044e366004612d11565b63bc197c8160e01b98975050505050505050565b6040516001600160e01b031990911681526020016101bf565b348015610486575f5ffd5b506065546001600160a01b03166101f6565b3480156104a3575f5ffd5b506104626104b2366004612dd1565b63f23a6e6160e01b9695505050505050565b3480156104cf575f5ffd5b506101926104de36600461283d565b6113b7565b6104f760c954610100900460ff1660021490565b156105155760405163bae6e2a960e01b815260040160405180910390fd5b600261052360c95460ff1690565b60ff16036105445760405163dfc60d8560e01b815260040160405180910390fd5b61054e6002611428565b61055661143e565b505f610566610140840184612e47565b610574916004908290612e89565b8101906105819190612eb0565b90505f5f5f8380602001905181019061059a9190612fca565b94509450505092505f6105c1848860a00160208101906105ba919061283d565b8585611534565b90506105eb6101208801356105dc60c08a0160a08b0161283d565b6001600160a01b031690611623565b6105fb60c0880160a0890161283d565b6001600160a01b0316867fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c866020015184878760405161063e9493929190613132565b60405180910390a350505050506106556001611428565b5050565b5f6106638261162e565b8061067257506106728261167d565b92915050565b5f54610100900460ff161580801561069657505f54600160ff909116105b806106af5750303b1580156106af57505f5460ff166001145b6107175760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610738575f805461ff0019166101001790555b610741826116b1565b61074961170f565b8015610655575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201929092526101408101919091526107ff60c954610100900460ff1660021490565b1561081d5760405163bae6e2a960e01b815260040160405180910390fd5b610826826131e6565b8060e00151518160c0015151146108505760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b031661087b576040516303f8a7d360e01b815260040160405180910390fd5b600261088960c95460ff1690565b60ff16036108aa5760405163dfc60d8560e01b815260040160405180910390fd5b6108b46002611428565b6108c460808401606085016132b9565b6001600160401b03163410156108ed57604051630178ce0b60e31b815260040160405180910390fd5b5f5b6108fc60e08501856132d4565b90508110156109505761091260e08501856132d4565b8281811061092257610922613319565b905060200201355f0361094857604051634299323b60e11b815260040160405180910390fd5b6001016108ef565b5061097b636cdb3d1360e11b61096c60a086016080870161283d565b6001600160a01b031690611735565b61099857604051633ee915f560e11b815260040160405180910390fd5b5f5f6109a385611805565b6040805161016081019091525f808252929450909250602081016109cd6080890160608a016132b9565b6001600160401b031681526020016109eb60c0890160a08a0161332d565b63ffffffff1681525f60208083018290526040830191909152336060830152608090910190610a1c908901896132b9565b6001600160401b031681526020015f6001600160a01b0316886020016020810190610a47919061283d565b6001600160a01b031603610a5b5733610a6b565b610a6b6040890160208a0161283d565b6001600160a01b03168152602090810190610aa490610a8c908a018a6132b9565b6c195c98cc4c4d4d57dd985d5b1d609a1b5b5f610cf7565b6001600160a01b03168152602001610ac26080890160608a016132b9565b610ad5906001600160401b03163461335c565b815260200184905290505f610af36562726964676560d01b82611317565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610b1f91906128dc565b5f6040518083038185885af1158015610b3a573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610b62919081019061337a565b96509050610b76606088016040890161283d565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610bcc919061283d565b610bd960c08f018f6132d4565b8f8060e00190610be991906132d4565b604051610bfc97969594939291906134ca565b60405180910390a450505050610c126001611428565b50919050565b5f6002610c2760c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000004163003610c785760405162461bcd60e51b815260040161070e90613526565b7f00000000000000000000000001670010000000000000000000000000000000046001600160a01b0316610caa611cc5565b6001600160a01b031614610cd05760405162461bcd60e51b815260040161070e90613572565b610cd981611ce0565b604080515f80825260208201909252610cf491839190611ce8565b50565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015610d75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9991906135be565b949350505050565b610db560c954610100900460ff1660021490565b610dd25760405163bae6e2a960e01b815260040160405180910390fd5b610de660c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610e23335f611e57565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000004163003610e6d5760405162461bcd60e51b815260040161070e90613526565b7f00000000000000000000000001670010000000000000000000000000000000046001600160a01b0316610e9f611cc5565b6001600160a01b031614610ec55760405162461bcd60e51b815260040161070e90613572565b610ece82611ce0565b61065582826001611ce8565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000000041614610f795760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161070e565b505f5160206140e35f395f51905f5290565b610f93611e5b565b610e235f611eb5565b60655433906001600160a01b0316811461100a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161070e565b610cf481611eb5565b61102760c954610100900460ff1660021490565b156110455760405163bae6e2a960e01b815260040160405180910390fd5b600261105360c95460ff1690565b60ff16036110745760405163dfc60d8560e01b815260040160405180910390fd5b61107e6002611428565b5f8080808061108f868801886135d9565b945094509450945094505f6110a2611ece565b90506110ad84611fef565b5f6110ba87868686611534565b90506110cf6001600160a01b03861634611623565b846001600160a01b0316866001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518b60200151868a8a6040516111269594939291906136fa565b60405180910390a4505050505050506106556001611428565b61115360c954610100900460ff1660021490565b156111715760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610e23336001611e57565b5f6111c7611cc5565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b031692919061120a90613752565b80601f016020809104026020016040519081016040528092919081815260200182805461123690613752565b80156112815780601f1061125857610100808354040283529160200191611281565b820191905f5260205f20905b81548152906001019060200180831161126457829003601f168201915b50505050509080600201805461129690613752565b80601f01602080910402602001604051908101604052809291908181526020018280546112c290613752565b801561130d5780601f106112e45761010080835404028352916020019161130d565b820191905f5260205f20905b8154815290600101906020018083116112f057829003601f168201915b5050505050905084565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa15801561138c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113b091906135be565b9392505050565b6113bf611e5b565b606580546001600160a01b0383166001600160a01b031990911681179091556113f06033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b61146f816001611317565b6001600160a01b0316336001600160a01b0316146114a0576040516395383ea160e01b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156114dc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115009190613784565b60208101519092506001600160a01b0316331461153057604051632583296b60e01b815260040160405180910390fd5b5090565b5f46855f01516001600160401b0316036115b257506020840151604051631759616b60e11b81526001600160a01b03821690632eb2c2d6906115809030908890889088906004016137ec565b5f604051808303815f87803b158015611597575f5ffd5b505af11580156115a9573d5f5f3e3d5ffd5b50505050610d99565b6115bb8561202b565b60405163d81d0a1560e01b81529091506001600160a01b0382169063d81d0a15906115ee90879087908790600401613845565b5f604051808303815f87803b158015611605575f5ffd5b505af1158015611617573d5f5f3e3d5ffd5b50505050949350505050565b61065582825a612072565b5f6001600160e01b0319821662bc399d60e11b148061165d57506001600160e01b03198216637f07c94760e01b145b8061067257506001600160e01b031982166301ffc9a760e01b1492915050565b5f6001600160e01b03198216630271189760e51b148061067257506301ffc9a760e01b6001600160e01b0319831614610672565b5f54610100900460ff166116d75760405162461bcd60e51b815260040161070e9061387a565b6116df61170f565b6116fd6001600160a01b038216156116f75781611eb5565b33611eb5565b5060c9805461ff001916610100179055565b5f54610100900460ff16610e235760405162461bcd60e51b815260040161070e9061387a565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161179191906138c5565b5f60405180830381855afa9150503d805f81146117c9576040519150601f19603f3d011682016040523d82523d5f602084013e6117ce565b606091505b50915091508180156117e1575080516020145b156117fd57808060200190518101906117fa91906138e0565b92505b505092915050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161183b60a087016080880161283d565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b90041615611b2e576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b031660208201526001830180549192849290840191906118ac90613752565b80601f01602080910402602001604051908101604052809291908181526020018280546118d890613752565b80156119235780601f106118fa57610100808354040283529160200191611923565b820191905f5260205f20905b81548152906001019060200180831161190657829003601f168201915b5050505050815260200160028201805461193c90613752565b80601f016020809104026020016040519081016040528092919081815260200182805461196890613752565b80156119b35780601f1061198a576101008083540402835291602001916119b3565b820191905f5260205f20905b81548152906001019060200180831161199657829003601f168201915b50505050508152505091508360800160208101906119d1919061283d565b6001600160a01b0316632eb2c2d633306119ee60c08901896132d4565b6119fb60e08b018b6132d4565b6040518763ffffffff1660e01b8152600401611a1c969594939291906138fb565b5f604051808303815f87803b158015611a33575f5ffd5b505af1158015611a45573d5f5f3e3d5ffd5b505050505f5b611a5860c08601866132d4565b9050811015611b2857611a7160a086016080870161283d565b6001600160a01b031663b390c0ab611a8c60c08801886132d4565b84818110611a9c57611a9c613319565b90506020020135878060e00190611ab391906132d4565b85818110611ac357611ac3613319565b905060200201356040518363ffffffff1660e01b8152600401611af0929190918252602082015260400190565b5f604051808303815f87803b158015611b07575f5ffd5b505af1158015611b19573d5f5f3e3d5ffd5b50505050806001019050611a4b565b50611c2b565b6040518060800160405280466001600160401b03168152602001856080016020810190611b5b919061283d565b6001600160a01b03168152602001611b81611b7c60a088016080890161283d565b6120b5565b8152602001611b9e611b9960a088016080890161283d565b61215f565b90529150611bb260a085016080860161283d565b6001600160a01b0316632eb2c2d63330611bcf60c08901896132d4565b611bdc60e08b018b6132d4565b6040518763ffffffff1660e01b8152600401611bfd969594939291906138fb565b5f604051808303815f87803b158015611c14575f5ffd5b505af1158015611c26573d5f5f3e3d5ffd5b505050505b5030637f07c9478233611c44606088016040890161283d565b611c5160c08901896132d4565b611c5e60e08b018b6132d4565b604051602001611c749796959493929190613958565b60408051601f1981840301815290829052611c9191602401613a08565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f5160206140e35f395f51905f52546001600160a01b031690565b610cf4611e5b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d2057611d1b836121a5565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d7a575060408051601f3d908101601f19168201909252611d7791810190613a1a565b60015b611ddd5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161070e565b5f5160206140e35f395f51905f528114611e4b5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161070e565b50611d1b838383612240565b6106555b6033546001600160a01b03163314610e235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161070e565b606580546001600160a01b0319169055610cf48161226a565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611eff816001611317565b6001600160a01b0316336001600160a01b031614611f30576040516395383ea160e01b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611f6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f909190613784565b91505f611fb28360400151610a9e6c195c98cc4c4d4d57dd985d5b1d609a1b90565b9050806001600160a01b031683602001516001600160a01b031614611fea57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b038116158061200d57506001600160a01b03811630145b15610cf457604051635b50f3f960e01b815260040160405180910390fd5b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b039081168552925290912054168061206d57610672826122bb565b919050565b815f0361207e57505050565b61209883838360405180602001604052805f81525061248a565b611d1b57604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b038616916120fb91906138c5565b5f60405180830381855afa9150503d805f8114612133576040519150601f19603f3d011682016040523d82523d5f602084013e612138565b606091505b5091509150816121565760405180602001604052805f815250610d99565b610d99816124c7565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b038616916120fb91906138c5565b6001600160a01b0381163b6122125760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161070e565b5f5160206140e35f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61224983612634565b5f825111806122555750805b15611d1b576122648383612673565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f5f6122cf6033546001600160a01b031690565b60208401518451604080870151606088015191516122f39594939290602401613a31565b60408051601f198184030181529190526020810180516001600160e01b031663689ccd8d60e11b179052905061233b6e627269646765645f6572633131353560881b5f611317565b81604051612348906127a4565b612353929190613a7d565b604051809103905ff08015801561236c573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906123d09082613aeb565b50606082015160028201906123e59082613aeb565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b9261247c9290613ba5565b60405180910390a450919050565b5f6001600160a01b0385166124b257604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606060408251106124e657818060200190518101906106729190613bc9565b8151602003612621575f5b60208160ff161080156125265750828160ff168151811061251457612514613319565b01602001516001600160f81b03191615155b1561253d578061253581613bfa565b9150506124f1565b5f8160ff166001600160401b0381111561255957612559612a37565b6040519080825280601f01601f191660200182016040528015612583576020820181803683370190505b5090505f91505b60208260ff161080156125bf5750838260ff16815181106125ad576125ad613319565b01602001516001600160f81b03191615155b156113b057838260ff16815181106125d9576125d9613319565b602001015160f81c60f81b818360ff16815181106125f9576125f9613319565b60200101906001600160f81b03191690815f1a9053508161261981613bfa565b92505061258a565b505060408051602081019091525f815290565b61263d816121a5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606113b083836040518060600160405280602781526020016141036027913960605f5f856001600160a01b0316856040516126af91906138c5565b5f60405180830381855af49150503d805f81146126e7576040519150601f19603f3d011682016040523d82523d5f602084013e6126ec565b606091505b50915091506126fd86838387612707565b9695505050505050565b606083156127755782515f0361276e576001600160a01b0385163b61276e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161070e565b5081610d99565b610d99838381511561278a5781518083602001fd5b8060405162461bcd60e51b815260040161070e9190613a08565b6104ca80613c1983390190565b5f5f604083850312156127c2575f5ffd5b82356001600160401b038111156127d7575f5ffd5b830161016081860312156127e9575f5ffd5b946020939093013593505050565b5f60208284031215612807575f5ffd5b81356001600160e01b0319811681146113b0575f5ffd5b6001600160a01b0381168114610cf4575f5ffd5b803561206d8161281e565b5f6020828403121561284d575f5ffd5b81356113b08161281e565b5f60208284031215612868575f5ffd5b81356001600160401b0381111561287d575f5ffd5b820161010081850312156113b0575f5ffd5b5f5b838110156128a9578181015183820152602001612891565b50505f910152565b5f81518084526128c881602086016020860161288f565b601f01601f19169290920160200192915050565b602081526128f66020820183516001600160401b03169052565b5f602083015161291160408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b0381166101208401525061012083015161014083015261014083015161016080840152610d996101808401826128b1565b6001600160401b0381168114610cf4575f5ffd5b803561206d816129cc565b8015158114610cf4575f5ffd5b5f5f5f60608486031215612a0a575f5ffd5b8335612a15816129cc565b9250602084013591506040840135612a2c816129eb565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612a6d57612a6d612a37565b60405290565b60405161010081016001600160401b0381118282101715612a6d57612a6d612a37565b60405161016081016001600160401b0381118282101715612a6d57612a6d612a37565b604051601f8201601f191681016001600160401b0381118282101715612ae157612ae1612a37565b604052919050565b5f6001600160401b03821115612b0157612b01612a37565b50601f01601f191660200190565b5f82601f830112612b1e575f5ffd5b8135602083015f612b36612b3184612ae9565b612ab9565b9050828152858383011115612b49575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612b74575f5ffd5b8235612b7f8161281e565b915060208301356001600160401b03811115612b99575f5ffd5b612ba585828601612b0f565b9150509250929050565b5f5f60408385031215612bc0575f5ffd5b823591506020830135612bd28161281e565b809150509250929050565b5f5f83601f840112612bed575f5ffd5b5081356001600160401b03811115612c03575f5ffd5b602083019150836020828501011115612c1a575f5ffd5b9250929050565b5f5f60208385031215612c32575f5ffd5b82356001600160401b03811115612c47575f5ffd5b612c5385828601612bdd565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612c91908301856128b1565b8281036060840152612ca381856128b1565b979650505050505050565b5f5f60408385031215612cbf575f5ffd5b823591506020830135612bd2816129eb565b5f5f83601f840112612ce1575f5ffd5b5081356001600160401b03811115612cf7575f5ffd5b6020830191508360208260051b8501011115612c1a575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612d28575f5ffd5b8835612d338161281e565b97506020890135612d438161281e565b965060408901356001600160401b03811115612d5d575f5ffd5b612d698b828c01612cd1565b90975095505060608901356001600160401b03811115612d87575f5ffd5b612d938b828c01612cd1565b90955093505060808901356001600160401b03811115612db1575f5ffd5b612dbd8b828c01612bdd565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215612de6575f5ffd5b8635612df18161281e565b95506020870135612e018161281e565b9450604087013593506060870135925060808701356001600160401b03811115612e29575f5ffd5b612e3589828a01612bdd565b979a9699509497509295939492505050565b5f5f8335601e19843603018112612e5c575f5ffd5b8301803591506001600160401b03821115612e75575f5ffd5b602001915036819003821315612c1a575f5ffd5b5f5f85851115612e97575f5ffd5b83861115612ea3575f5ffd5b5050820193919092039150565b5f60208284031215612ec0575f5ffd5b81356001600160401b03811115612ed5575f5ffd5b610d9984828501612b0f565b805161206d816129cc565b805161206d8161281e565b5f82601f830112612f06575f5ffd5b8151602083015f612f19612b3184612ae9565b9050828152858383011115612f2c575f5ffd5b612f3a83602083018461288f565b95945050505050565b5f6001600160401b03821115612f5b57612f5b612a37565b5060051b60200190565b5f82601f830112612f74575f5ffd5b8151612f82612b3182612f43565b8082825260208201915060208360051b860101925085831115612fa3575f5ffd5b602085015b83811015612fc0578051835260209283019201612fa8565b5095945050505050565b5f5f5f5f5f60a08688031215612fde575f5ffd5b85516001600160401b03811115612ff3575f5ffd5b860160808189031215613004575f5ffd5b61300c612a4b565b8151613017816129cc565b815260208201516130278161281e565b602082015260408201516001600160401b03811115613044575f5ffd5b6130508a828501612ef7565b60408301525060608201516001600160401b0381111561306e575f5ffd5b61307a8a828501612ef7565b6060830152509550613090905060208701612eec565b935061309e60408701612eec565b925060608601516001600160401b038111156130b8575f5ffd5b6130c488828901612f65565b92505060808601516001600160401b038111156130df575f5ffd5b6130eb88828901612f65565b9150509295509295909350565b5f8151808452602084019350602083015f5b8281101561312857815186526020958601959091019060010161310a565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f9061315d908301856130f8565b8281036060840152612ca381856130f8565b63ffffffff81168114610cf4575f5ffd5b803561206d8161316f565b5f82601f83011261319a575f5ffd5b81356131a8612b3182612f43565b8082825260208201915060208360051b8601019250858311156131c9575f5ffd5b602085015b83811015612fc05780358352602092830192016131ce565b5f61010082360312156131f7575f5ffd5b6131ff612a73565b613208836129e0565b815261321660208401612832565b602082015261322760408401612832565b6040820152613238606084016129e0565b606082015261324960808401612832565b608082015261325a60a08401613180565b60a082015260c08301356001600160401b03811115613277575f5ffd5b6132833682860161318b565b60c08301525060e08301356001600160401b038111156132a1575f5ffd5b6132ad3682860161318b565b60e08301525092915050565b5f602082840312156132c9575f5ffd5b81356113b0816129cc565b5f5f8335601e198436030181126132e9575f5ffd5b8301803591506001600160401b03821115613302575f5ffd5b6020019150600581901b3603821315612c1a575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561333d575f5ffd5b81356113b08161316f565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561067257610672613348565b805161206d8161316f565b5f5f6040838503121561338b575f5ffd5b825160208401519092506001600160401b038111156133a8575f5ffd5b830161016081860312156133ba575f5ffd5b6133c2612a96565b6133cb82612ee1565b81526133d960208301612ee1565b60208201526133ea6040830161336f565b60408201526133fb60608301612eec565b606082015261340c60808301612ee1565b608082015261341d60a08301612eec565b60a082015261342e60c08301612ee1565b60c082015261343f60e08301612eec565b60e08201526134516101008301612eec565b61010082015261012082810151908201526101408201516001600160401b0381111561347b575f5ffd5b61348787828501612ef7565b6101408301525080925050509250929050565b8183525f6001600160fb1b038311156134b1575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f90613505908301868861349a565b828103608084015261351881858761349a565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f602082840312156135ce575f5ffd5b81516113b08161281e565b5f5f5f5f5f60a086880312156135ed575f5ffd5b85356001600160401b03811115613602575f5ffd5b860160808189031215613613575f5ffd5b61361b612a4b565b8135613626816129cc565b815260208201356136368161281e565b602082015260408201356001600160401b03811115613653575f5ffd5b61365f8a828501612b0f565b60408301525060608201356001600160401b0381111561367d575f5ffd5b6136898a828501612b0f565b606083015250955061369f905060208701612832565b93506136ad60408701612832565b925060608601356001600160401b038111156136c7575f5ffd5b6136d38882890161318b565b92505060808601356001600160401b038111156136ee575f5ffd5b6130eb8882890161318b565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f90613734908301856130f8565b828103608084015261374681856130f8565b98975050505050505050565b600181811c9082168061376657607f821691505b602082108103610c1257634e487b7160e01b5f52602260045260245ffd5b5f6060828403128015613795575f5ffd5b50604051606081016001600160401b03811182821017156137b8576137b8612a37565b6040528251815260208301516137cd8161281e565b602082015260408301516137e0816129cc565b60408201529392505050565b6001600160a01b0385811682528416602082015260a0604082018190525f90613817908301856130f8565b828103606084015261382981856130f8565b83810360809094019390935250505f8152602001949350505050565b6001600160a01b03841681526060602082018190525f90613868908301856130f8565b82810360408401526126fd81856130f8565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f82516138d681846020870161288f565b9190910192915050565b5f602082840312156138f0575f5ffd5b81516113b0816129eb565b6001600160a01b0387811682528616602082015260a0604082018190525f90613927908301868861349a565b828103606084015261393a81858761349a565b83810360809094019390935250505f81526020019695505050505050565b60a080825288516001600160401b03169082015260208801516001600160a01b031660c08201526040880151608060e08301525f9061399b6101208401826128b1565b905060608a0151609f19848303016101008501526139b982826128b1565b9150506139d1602084018a6001600160a01b03169052565b6001600160a01b038816604084015282810360608401526139f381878961349a565b9050828103608084015261351881858761349a565b602081525f6113b060208301846128b1565b5f60208284031215613a2a575f5ffd5b5051919050565b6001600160a01b038681168252851660208201526001600160401b038416604082015260a0606082018190525f90613a6b908301856128b1565b828103608084015261374681856128b1565b6001600160a01b03831681526040602082018190525f90610d99908301846128b1565b601f821115611d1b57805f5260205f20601f840160051c81016020851015613ac55750805b601f840160051c820191505b81811015613ae4575f8155600101613ad1565b5050505050565b81516001600160401b03811115613b0457613b04612a37565b613b1881613b128454613752565b84613aa0565b6020601f821160018114613b4a575f8315613b335750848201515b5f19600385901b1c1916600184901b178455613ae4565b5f84815260208120601f198516915b82811015613b795787850151825560209485019460019092019101613b59565b5084821015613b9657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613bb760408301856128b1565b8281036020840152612f3a81856128b1565b5f60208284031215613bd9575f5ffd5b81516001600160401b03811115613bee575f5ffd5b610d9984828501612ef7565b5f60ff821660ff8103613c0f57613c0f613348565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203f87f5e0e7d7898fe404b9d2de2feccd49dfde22a7467a6346ed10fa13e13d3964736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000000004": { @@ -220,7 +217,6 @@ "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000004" }, "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", @@ -229,19 +225,19 @@ "0x0167001000000000000000000000000000010096": { "contractName": "BridgedERC20", "storage": {}, - "code": "0x608060405260043610610233575f3560e01c806370a0823111610129578063a77f1516116100a8578063dd62ed3e1161006d578063dd62ed3e14610684578063e07baba6146106a3578063e30c3978146106d9578063f12506c1146106f6578063f2fde38b1461070a575f5ffd5b8063a77f1516146105e7578063a86f9d9e14610608578063a9059cbb14610627578063b8f2e0c514610646578063bb86ef9314610665575f5ffd5b80638456cb59116100ee5780638456cb591461056f5780638abf6077146105835780638da5cb5b1461059757806395d89b41146105b4578063a457c2d7146105c8575f5ffd5b806370a08231146104d3578063715018a61461050757806379ba50971461051b5780637cf8ed0d1461052f5780637e4746341461054f575f5ffd5b806339509351116101b557806342966c681161017a57806342966c681461045757806349d12605146104765780634f1ef2861461048c57806352d1902d1461049f5780635c975abb146104b3575f5ffd5b806339509351146103af5780633ab76e9f146103ce5780633eb6b8cf146104055780633f4ba83a1461042457806340c10f1914610438575f5ffd5b806323b872dd116101fb57806323b872dd146102ea57806326afaadd146103095780633075db561461034d578063313ce567146103615780633659cfe61461038e575f5ffd5b806301ffc9a71461023757806306fdde031461026b578063095ea7b31461028c5780630ae74548146102ab57806318160ddd146102cc575b5f5ffd5b348015610242575f5ffd5b50610256610251366004612185565b610729565b60405190151581526020015b60405180910390f35b348015610276575f5ffd5b5061027f6107cb565b60405161026291906121ce565b348015610297575f5ffd5b506102566102a6366004612214565b61085b565b3480156102b6575f5ffd5b5061012f5461025690600160a01b900460ff1681565b3480156102d7575f5ffd5b5060fd545b604051908152602001610262565b3480156102f5575f5ffd5b5061025661030436600461223e565b610872565b348015610314575f5ffd5b5061032e61012d5461012e546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610262565b348015610358575f5ffd5b50610256610895565b34801561036c575f5ffd5b5061012d54600160a01b900460ff165b60405160ff9091168152602001610262565b348015610399575f5ffd5b506103ad6103a836600461227c565b6108ad565b005b3480156103ba575f5ffd5b506102566103c9366004612214565b61097d565b3480156103d9575f5ffd5b506097546103ed906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b348015610410575f5ffd5b506103ed61041f3660046122ab565b61099e565b34801561042f575f5ffd5b506103ad6109b2565b348015610443575f5ffd5b506103ad610452366004612214565b6109c6565b348015610462575f5ffd5b506103ad6104713660046122f1565b610ae0565b348015610481575f5ffd5b506102dc61012e5481565b6103ad61049a36600461231c565b610c1d565b3480156104aa575f5ffd5b506102dc610cd2565b3480156104be575f5ffd5b5061025660c954610100900460ff1660021490565b3480156104de575f5ffd5b506102dc6104ed36600461227c565b6001600160a01b03165f90815260fb602052604090205490565b348015610512575f5ffd5b506103ad610d83565b348015610526575f5ffd5b506103ad610d94565b34801561053a575f5ffd5b5061012d546103ed906001600160a01b031681565b34801561055a575f5ffd5b5061012f546103ed906001600160a01b031681565b34801561057a575f5ffd5b506103ad610e0b565b34801561058e575f5ffd5b506103ed610e1e565b3480156105a2575f5ffd5b506033546001600160a01b03166103ed565b3480156105bf575f5ffd5b5061027f610e2c565b3480156105d3575f5ffd5b506102566105e2366004612214565b610e3b565b3480156105f2575f5ffd5b5061012d5461037c90600160a01b900460ff1681565b348015610613575f5ffd5b506103ed6106223660046123df565b610eb5565b348015610632575f5ffd5b50610256610641366004612214565b610ec8565b348015610651575f5ffd5b506103ad610660366004612409565b610ed5565b348015610670575f5ffd5b506103ad61067f366004612477565b611052565b34801561068f575f5ffd5b506102dc61069e36600461253d565b611212565b3480156106ae575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b039091168152602001610262565b3480156106e4575f5ffd5b506065546001600160a01b03166103ed565b348015610701575f5ffd5b5061025661123c565b348015610715575f5ffd5b506103ad61072436600461227c565b611267565b5f6001600160e01b0319821663093e326b60e21b148061075957506001600160e01b0319821663bb86ef9360e01b145b8061077457506001600160e01b0319821663b8f2e0c560e01b145b8061078f57506001600160e01b031982166336372b0760e01b145b806107aa57506001600160e01b0319821663a219a02560e01b145b806107c557506001600160e01b031982166301ffc9a760e01b145b92915050565b606060fe80546107da90612574565b80601f016020809104026020016040519081016040528092919081815260200182805461080690612574565b80156108515780601f1061082857610100808354040283529160200191610851565b820191905f5260205f20905b81548152906001019060200180831161083457829003601f168201915b5050505050905090565b5f336108688185856112d8565b5060019392505050565b5f3361087f8582856113fb565b61088a858585611473565b506001949350505050565b5f60026108a460c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100961630036108fe5760405162461bcd60e51b81526004016108f5906125ac565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100966001600160a01b0316610930611627565b6001600160a01b0316146109565760405162461bcd60e51b81526004016108f5906125f8565b61095f81611642565b604080515f8082526020820190925261097a9183919061164a565b50565b5f3361086881858561098f8383611212565b6109999190612644565b6112d8565b5f6109aa8484846117b4565b949350505050565b6109ba611810565b6109c4335f6118a0565b565b6109da60c954610100900460ff1660021490565b156109f85760405163bae6e2a960e01b815260040160405180910390fd5b6002610a0660c95460ff1690565b60ff1603610a275760405163dfc60d8560e01b815260040160405180910390fd5b610a3160026118a8565b610a3961123c565b15610a575760405163270bf77560e01b815260040160405180910390fd5b61012f546001600160a01b031633819003610abe57826001600160a01b0316816001600160a01b03167fe502aa3e015149f4b76a0b2b5394e3100903c4af27c3ddc98385395d3f55252684604051610ab191815260200190565b60405180910390a3610ac7565b610ac7336118be565b610ad18383611936565b50610adc60016118a8565b5050565b610af460c954610100900460ff1660021490565b15610b125760405163bae6e2a960e01b815260040160405180910390fd5b6002610b2060c95460ff1690565b60ff1603610b415760405163dfc60d8560e01b815260040160405180910390fd5b610b4b60026118a8565b610b5361123c565b15610c005761012f546040518281526001600160a01b0390911690339082907f638edf84937fb2534b47cac985ea84d6ea4f4076315b56ea1c784d26b87e2bcb9060200160405180910390a36040516340c10f1960e01b8152336004820152602481018390526001600160a01b038216906340c10f19906044015f604051808303815f87803b158015610be4575f5ffd5b505af1158015610bf6573d5f5f3e3d5ffd5b5050505050610c09565b610c09336118be565b610c133382611a00565b61097a60016118a8565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010096163003610c655760405162461bcd60e51b81526004016108f5906125ac565b7f00000000000000000000000001670010000000000000000000000000000100966001600160a01b0316610c97611627565b6001600160a01b031614610cbd5760405162461bcd60e51b81526004016108f5906125f8565b610cc682611642565b610adc8282600161164a565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100961614610d715760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108f5565b505f5160206128015f395f51905f5290565b610d8b611b3d565b6109c45f611b97565b60655433906001600160a01b03168114610e025760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016108f5565b61097a81611b97565b610e13611bb0565b6109c43360016118a0565b5f610e27611627565b905090565b606060ff80546107da90612574565b5f3381610e488286611212565b905083811015610ea85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108f5565b61088a82868684036112d8565b5f610ec14684846117b4565b9392505050565b5f33610868818585611473565b610ee960c954610100900460ff1660021490565b15610f075760405163bae6e2a960e01b815260040160405180910390fd5b6a195c98cc8c17dd985d5b1d60aa1b610f21816001610eb5565b6001600160a01b0316336001600160a01b031614610f5257604051630d85cccf60e11b815260040160405180910390fd5b6002610f6060c95460ff1690565b60ff1603610f815760405163dfc60d8560e01b815260040160405180910390fd5b610f8b60026118a8565b61012f546001600160a01b038481169116148015610fbc575061012f60149054906101000a900460ff161515821515145b15610fda5760405163c118d2f360e01b815260040160405180910390fd5b61012f80546001600160a01b0385166001600160a81b03199091168117600160a01b851515908102919091179092556040805191825260208201929092527fa6b6f959792843a48d9d03d13595f2de7c86ae0ce12ef0fa759dd911b205e565910160405180910390a161104d60016118a8565b505050565b5f54610100900460ff161580801561107057505f54600160ff909116105b806110895750303b15801561108957505f5460ff166001145b6110ec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108f5565b5f805460ff19166001179055801561110d575f805461ff0019166101001790555b6111178888611c21565b6111218a8a611c5d565b61119283838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611c9792505050565b61012d805461012e89905560ff8816600160a01b026001600160a81b03199091166001600160a01b038b16171790558015611206575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6001600160a01b039182165f90815260fc6020908152604080832093909416825291909152205490565b61012f545f906001600160a01b031615801590610e2757505061012f54600160a01b900460ff161590565b61126f611b3d565b606580546001600160a01b0383166001600160a01b031990911681179091556112a06033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6001600160a01b03831661133a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108f5565b6001600160a01b03821661139b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108f5565b6001600160a01b038381165f81815260fc602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6114068484611212565b90505f19811461146d57818110156114605760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108f5565b61146d84848484036112d8565b50505050565b6001600160a01b0383166114d75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108f5565b6001600160a01b0382166115395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108f5565b611544838383611cc7565b6001600160a01b0383165f90815260fb6020526040902054818110156115bb5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108f5565b6001600160a01b038085165f81815260fb602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061161a9086815260200190565b60405180910390a361146d565b5f5160206128015f395f51905f52546001600160a01b031690565b61097a611b3d565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561167d5761104d83611d02565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156116d7575060408051601f3d908101601f191682019092526116d491810190612663565b60015b61173a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108f5565b5f5160206128015f395f51905f5281146117a85760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108f5565b5061104d838383611d9d565b5f6117bf8484611dc1565b905081806117d557506001600160a01b03811615155b8484909161180757604051632b0d65db60e01b81526001600160401b03909216600483015260248201526044016108f5565b50509392505050565b61182460c954610100900460ff1660021490565b6118415760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610adc611b3d565b60c9805460ff191660ff92909216919091179055565b6a195c98cc8c17dd985d5b1d60aa1b6118df6033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806119195750611904816001610eb5565b6001600160a01b0316336001600160a01b0316145b610adc57604051630d85cccf60e11b815260040160405180910390fd5b6001600160a01b03821661198c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016108f5565b6119975f8383611cc7565b8060fd5f8282546119a89190612644565b90915550506001600160a01b0382165f81815260fb60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216611a605760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108f5565b611a6b825f83611cc7565b6001600160a01b0382165f90815260fb602052604090205481811015611ade5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108f5565b6001600160a01b0383165f81815260fb60209081526040808320868603905560fd80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6033546001600160a01b031633146109c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b606580546001600160a01b031916905561097a81611e63565b611bc460c954610100900460ff1660021490565b15611be25760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611896565b6001600160a01b0382161580611c35575080155b80611c3f57504681145b15610adc5760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611c855760405163538ba4f960e01b815260040160405180910390fd5b611c8e83611eb4565b61104d82611f12565b5f54610100900460ff16611cbd5760405162461bcd60e51b81526004016108f59061267a565b610adc8282611f82565b611cdb60c954610100900460ff1660021490565b15611cf95760405163bae6e2a960e01b815260040160405180910390fd5b61104d82611fc1565b6001600160a01b0381163b611d6f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108f5565b5f5160206128015f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611da683611fea565b5f82511180611db25750805b1561104d5761146d8383612029565b6097545f906001600160a01b031680611ded57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611e3f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109aa91906126c5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16611eda5760405162461bcd60e51b81526004016108f59061267a565b611ee261204e565b611f006001600160a01b03821615611efa5781611b97565b33611b97565b5060c9805461ff001916610100179055565b5f54610100900460ff16611f385760405162461bcd60e51b81526004016108f59061267a565b6001600160401b03461115611f605760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff16611fa85760405162461bcd60e51b81526004016108f59061267a565b60fe611fb4838261272b565b5060ff61104d828261272b565b306001600160a01b0382160361097a57604051630c292c9d60e21b815260040160405180910390fd5b611ff381611d02565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610ec1838360405180606001604052806027815260200161282160279139612074565b5f54610100900460ff166109c45760405162461bcd60e51b81526004016108f59061267a565b60605f5f856001600160a01b03168560405161209091906127e5565b5f60405180830381855af49150503d805f81146120c8576040519150601f19603f3d011682016040523d82523d5f602084013e6120cd565b606091505b50915091506120de868383876120e8565b9695505050505050565b606083156121565782515f0361214f576001600160a01b0385163b61214f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108f5565b50816109aa565b6109aa838381511561216b5781518083602001fd5b8060405162461bcd60e51b81526004016108f591906121ce565b5f60208284031215612195575f5ffd5b81356001600160e01b031981168114610ec1575f5ffd5b5f5b838110156121c65781810151838201526020016121ae565b50505f910152565b602081525f82518060208401526121ec8160408501602087016121ac565b601f01601f19169190910160400192915050565b6001600160a01b038116811461097a575f5ffd5b5f5f60408385031215612225575f5ffd5b823561223081612200565b946020939093013593505050565b5f5f5f60608486031215612250575f5ffd5b833561225b81612200565b9250602084013561226b81612200565b929592945050506040919091013590565b5f6020828403121561228c575f5ffd5b8135610ec181612200565b803580151581146122a6575f5ffd5b919050565b5f5f5f606084860312156122bd575f5ffd5b83356001600160401b03811681146122d3575f5ffd5b9250602084013591506122e860408501612297565b90509250925092565b5f60208284031215612301575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561232d575f5ffd5b823561233881612200565b915060208301356001600160401b03811115612352575f5ffd5b8301601f81018513612362575f5ffd5b80356001600160401b0381111561237b5761237b612308565b604051601f8201601f19908116603f011681016001600160401b03811182821017156123a9576123a9612308565b6040528181528282016020018710156123c0575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f604083850312156123f0575f5ffd5b8235915061240060208401612297565b90509250929050565b5f5f6040838503121561241a575f5ffd5b823561242581612200565b915061240060208401612297565b5f5f83601f840112612443575f5ffd5b5081356001600160401b03811115612459575f5ffd5b602083019150836020828501011115612470575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f60e08a8c03121561248f575f5ffd5b893561249a81612200565b985060208a01356124aa81612200565b975060408a01356124ba81612200565b965060608a0135955060808a013560ff811681146124d6575f5ffd5b945060a08a01356001600160401b038111156124f0575f5ffd5b6124fc8c828d01612433565b90955093505060c08a01356001600160401b0381111561251a575f5ffd5b6125268c828d01612433565b915080935050809150509295985092959850929598565b5f5f6040838503121561254e575f5ffd5b823561255981612200565b9150602083013561256981612200565b809150509250929050565b600181811c9082168061258857607f821691505b6020821081036125a657634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b808201808211156107c557634e487b7160e01b5f52601160045260245ffd5b5f60208284031215612673575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156126d5575f5ffd5b8151610ec181612200565b601f82111561104d57805f5260205f20601f840160051c810160208510156127055750805b601f840160051c820191505b81811015612724575f8155600101612711565b5050505050565b81516001600160401b0381111561274457612744612308565b612758816127528454612574565b846126e0565b6020601f82116001811461278a575f83156127735750848201515b5f19600385901b1c1916600184901b178455612724565b5f84815260208120601f198516915b828110156127b95787850151825560209485019460019092019101612799565b50848210156127d657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516127f68184602087016121ac565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122056f3912e99f9aa2ff8c82e9c76fca4469349103a0b1c6c4f3f3c466dd73d10d064736f6c634300081b0033", + "code": "0x608060405260043610610228575f3560e01c80635c975abb1161012957806395d89b41116100a8578063b8f2e0c51161006d578063b8f2e0c514610669578063dd62ed3e14610688578063e30c3978146106a7578063f12506c1146106c4578063f2fde38b146106d8575f5ffd5b806395d89b41146105d7578063a457c2d7146105eb578063a77f15161461060a578063a86f9d9e1461062b578063a9059cbb1461064a575f5ffd5b80637cf8ed0d116100ee5780637cf8ed0d146105525780637e474634146105725780638456cb59146105925780638abf6077146105a65780638da5cb5b146105ba575f5ffd5b80635c975abb146104b75780636c0db62b146104d757806370a08231146104f6578063715018a61461052a57806379ba50971461053e575f5ffd5b8063313ce567116101b557806340c10f191161017a57806340c10f191461043c57806342966c681461045b57806349d126051461047a5780634f1ef2861461049057806352d1902d146104a3575f5ffd5b8063313ce5671461039c5780633659cfe6146103c957806339509351146103ea5780633eb6b8cf146104095780633f4ba83a14610428575f5ffd5b80630ae74548116101fb5780630ae74548146102e657806318160ddd1461030757806323b872dd1461032557806326afaadd146103445780633075db5614610388575f5ffd5b806301ffc9a71461022c57806304f3bcec1461026057806306fdde03146102a6578063095ea7b3146102c7575b5f5ffd5b348015610237575f5ffd5b5061024b6102463660046120a3565b6106f7565b60405190151581526020015b60405180910390f35b34801561026b575f5ffd5b507f00000000000000000000000016700100000000000000000000000000000000065b6040516001600160a01b039091168152602001610257565b3480156102b1575f5ffd5b506102ba610799565b60405161025791906120ec565b3480156102d2575f5ffd5b5061024b6102e1366004612132565b610829565b3480156102f1575f5ffd5b5061012f5461024b90600160a01b900460ff1681565b348015610312575f5ffd5b5060fd545b604051908152602001610257565b348015610330575f5ffd5b5061024b61033f36600461215c565b610840565b34801561034f575f5ffd5b5061036961012d5461012e546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610257565b348015610393575f5ffd5b5061024b610863565b3480156103a7575f5ffd5b5061012d54600160a01b900460ff165b60405160ff9091168152602001610257565b3480156103d4575f5ffd5b506103e86103e336600461219a565b61087b565b005b3480156103f5575f5ffd5b5061024b610404366004612132565b61094b565b348015610414575f5ffd5b5061028e6104233660046121c9565b61096c565b348015610433575f5ffd5b506103e8610a17565b348015610447575f5ffd5b506103e8610456366004612132565b610a9b565b348015610466575f5ffd5b506103e8610475366004612210565b610bb5565b348015610485575f5ffd5b5061031761012e5481565b6103e861049e36600461223b565b610cf2565b3480156104ae575f5ffd5b50610317610da7565b3480156104c2575f5ffd5b5061024b60c954610100900460ff1660021490565b3480156104e2575f5ffd5b506103e86104f1366004612346565b610e58565b348015610501575f5ffd5b5061031761051036600461219a565b6001600160a01b03165f90815260fb602052604090205490565b348015610535575f5ffd5b506103e8611016565b348015610549575f5ffd5b506103e8611027565b34801561055d575f5ffd5b5061012d5461028e906001600160a01b031681565b34801561057d575f5ffd5b5061012f5461028e906001600160a01b031681565b34801561059d575f5ffd5b506103e861109e565b3480156105b1575f5ffd5b5061028e61111d565b3480156105c5575f5ffd5b506033546001600160a01b031661028e565b3480156105e2575f5ffd5b506102ba61112b565b3480156105f6575f5ffd5b5061024b610605366004612132565b61113a565b348015610615575f5ffd5b5061012d546103b790600160a01b900460ff1681565b348015610636575f5ffd5b5061028e6106453660046123fa565b6111b4565b348015610655575f5ffd5b5061024b610664366004612132565b611254565b348015610674575f5ffd5b506103e8610683366004612424565b611261565b348015610693575f5ffd5b506103176106a236600461244e565b6113de565b3480156106b2575f5ffd5b506065546001600160a01b031661028e565b3480156106cf575f5ffd5b5061024b611408565b3480156106e3575f5ffd5b506103e86106f236600461219a565b611433565b5f6001600160e01b0319821663093e326b60e21b148061072757506001600160e01b03198216636c0db62b60e01b145b8061074257506001600160e01b0319821663b8f2e0c560e01b145b8061075d57506001600160e01b031982166336372b0760e01b145b8061077857506001600160e01b0319821663a219a02560e01b145b8061079357506001600160e01b031982166301ffc9a760e01b145b92915050565b606060fe80546107a890612485565b80601f01602080910402602001604051908101604052809291908181526020018280546107d490612485565b801561081f5780601f106107f65761010080835404028352916020019161081f565b820191905f5260205f20905b81548152906001019060200180831161080257829003601f168201915b5050505050905090565b5f336108368185856114a4565b5060019392505050565b5f3361084d8582856115c7565b61085885858561163f565b506001949350505050565b5f600261087260c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100961630036108cc5760405162461bcd60e51b81526004016108c3906124bd565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100966001600160a01b03166108fe6117f3565b6001600160a01b0316146109245760405162461bcd60e51b81526004016108c390612509565b61092d8161180e565b604080515f8082526020820190925261094891839190611816565b50565b5f3361083681858561095d83836113de565b6109679190612555565b6114a4565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b815267ffffffffffffffff861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa1580156109eb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0f9190612574565b949350505050565b610a2b60c954610100900460ff1660021490565b610a485760405163bae6e2a960e01b815260040160405180910390fd5b610a5c60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610a99335f611980565b565b610aaf60c954610100900460ff1660021490565b15610acd5760405163bae6e2a960e01b815260040160405180910390fd5b6002610adb60c95460ff1690565b60ff1603610afc5760405163dfc60d8560e01b815260040160405180910390fd5b610b066002611988565b610b0e611408565b15610b2c5760405163270bf77560e01b815260040160405180910390fd5b61012f546001600160a01b031633819003610b9357826001600160a01b0316816001600160a01b03167fe502aa3e015149f4b76a0b2b5394e3100903c4af27c3ddc98385395d3f55252684604051610b8691815260200190565b60405180910390a3610b9c565b610b9c3361199e565b610ba68383611a16565b50610bb16001611988565b5050565b610bc960c954610100900460ff1660021490565b15610be75760405163bae6e2a960e01b815260040160405180910390fd5b6002610bf560c95460ff1690565b60ff1603610c165760405163dfc60d8560e01b815260040160405180910390fd5b610c206002611988565b610c28611408565b15610cd55761012f546040518281526001600160a01b0390911690339082907f638edf84937fb2534b47cac985ea84d6ea4f4076315b56ea1c784d26b87e2bcb9060200160405180910390a36040516340c10f1960e01b8152336004820152602481018390526001600160a01b038216906340c10f19906044015f604051808303815f87803b158015610cb9575f5ffd5b505af1158015610ccb573d5f5f3e3d5ffd5b5050505050610cde565b610cde3361199e565b610ce83382611ae0565b6109486001611988565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010096163003610d3a5760405162461bcd60e51b81526004016108c3906124bd565b7f00000000000000000000000001670010000000000000000000000000000100966001600160a01b0316610d6c6117f3565b6001600160a01b031614610d925760405162461bcd60e51b81526004016108c390612509565b610d9b8261180e565b610bb182826001611816565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100961614610e465760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108c3565b505f5160206127135f395f51905f5290565b5f54610100900460ff1615808015610e7657505f54600160ff909116105b80610e8f5750303b158015610e8f57505f5460ff166001145b610ef25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108c3565b5f805460ff191660011790558015610f13575f805461ff0019166101001790555b610f1d8888611c1d565b610f2689611c59565b610f9783838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611cb792505050565b61012d805461012e89905560ff8816600160a01b026001600160a81b03199091166001600160a01b038b1617179055801561100b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61101e611ce7565b610a995f611d41565b60655433906001600160a01b031681146110955760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016108c3565b61094881611d41565b6110b260c954610100900460ff1660021490565b156110d05760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610a99336001611980565b5f6111266117f3565b905090565b606060ff80546107a890612485565b5f338161114782866113de565b9050838110156111a75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108c3565b61085882868684036114a4565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611229573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124d9190612574565b9392505050565b5f3361083681858561163f565b61127560c954610100900460ff1660021490565b156112935760405163bae6e2a960e01b815260040160405180910390fd5b6a195c98cc8c17dd985d5b1d60aa1b6112ad8160016111b4565b6001600160a01b0316336001600160a01b0316146112de576040516395383ea160e01b815260040160405180910390fd5b60026112ec60c95460ff1690565b60ff160361130d5760405163dfc60d8560e01b815260040160405180910390fd5b6113176002611988565b61012f546001600160a01b038481169116148015611348575061012f60149054906101000a900460ff161515821515145b156113665760405163c118d2f360e01b815260040160405180910390fd5b61012f80546001600160a01b0385166001600160a81b03199091168117600160a01b851515908102919091179092556040805191825260208201929092527fa6b6f959792843a48d9d03d13595f2de7c86ae0ce12ef0fa759dd911b205e565910160405180910390a16113d96001611988565b505050565b6001600160a01b039182165f90815260fc6020908152604080832093909416825291909152205490565b61012f545f906001600160a01b03161580159061112657505061012f54600160a01b900460ff161590565b61143b611ce7565b606580546001600160a01b0383166001600160a01b0319909116811790915561146c6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6001600160a01b0383166115065760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108c3565b6001600160a01b0382166115675760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108c3565b6001600160a01b038381165f81815260fc602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6115d284846113de565b90505f198114611639578181101561162c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108c3565b61163984848484036114a4565b50505050565b6001600160a01b0383166116a35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108c3565b6001600160a01b0382166117055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108c3565b611710838383611d5a565b6001600160a01b0383165f90815260fb6020526040902054818110156117875760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108c3565b6001600160a01b038085165f81815260fb602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117e69086815260200190565b60405180910390a3611639565b5f5160206127135f395f51905f52546001600160a01b031690565b610948611ce7565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611849576113d983611d95565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118a3575060408051601f3d908101601f191682019092526118a09181019061258f565b60015b6119065760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108c3565b5f5160206127135f395f51905f5281146119745760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108c3565b506113d9838383611e30565b610bb1611ce7565b60c9805460ff191660ff92909216919091179055565b6a195c98cc8c17dd985d5b1d60aa1b6119bf6033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806119f957506119e48160016111b4565b6001600160a01b0316336001600160a01b0316145b610bb1576040516395383ea160e01b815260040160405180910390fd5b6001600160a01b038216611a6c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016108c3565b611a775f8383611d5a565b8060fd5f828254611a889190612555565b90915550506001600160a01b0382165f81815260fb60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216611b405760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108c3565b611b4b825f83611d5a565b6001600160a01b0382165f90815260fb602052604090205481811015611bbe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108c3565b6001600160a01b0383165f81815260fb60209081526040808320868603905560fd80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0382161580611c31575080155b80611c3b57504681145b15610bb15760405163c118d2f360e01b815260040160405180910390fd5b5f54610100900460ff16611c7f5760405162461bcd60e51b81526004016108c3906125a6565b611c87611e54565b611ca56001600160a01b03821615611c9f5781611d41565b33611d41565b5060c9805461ff001916610100179055565b5f54610100900460ff16611cdd5760405162461bcd60e51b81526004016108c3906125a6565b610bb18282611e7a565b6033546001600160a01b03163314610a995760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c3565b606580546001600160a01b031916905561094881611eb9565b611d6e60c954610100900460ff1660021490565b15611d8c5760405163bae6e2a960e01b815260040160405180910390fd5b6113d982611f0a565b6001600160a01b0381163b611e025760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108c3565b5f5160206127135f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611e3983611f33565b5f82511180611e455750805b156113d9576116398383611f72565b5f54610100900460ff16610a995760405162461bcd60e51b81526004016108c3906125a6565b5f54610100900460ff16611ea05760405162461bcd60e51b81526004016108c3906125a6565b60fe611eac838261263c565b5060ff6113d9828261263c565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b306001600160a01b0382160361094857604051630c292c9d60e21b815260040160405180910390fd5b611f3c81611d95565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061124d83836040518060600160405280602781526020016127336027913960605f5f856001600160a01b031685604051611fae91906126f7565b5f60405180830381855af49150503d805f8114611fe6576040519150601f19603f3d011682016040523d82523d5f602084013e611feb565b606091505b5091509150611ffc86838387612006565b9695505050505050565b606083156120745782515f0361206d576001600160a01b0385163b61206d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108c3565b5081610a0f565b610a0f83838151156120895781518083602001fd5b8060405162461bcd60e51b81526004016108c391906120ec565b5f602082840312156120b3575f5ffd5b81356001600160e01b03198116811461124d575f5ffd5b5f5b838110156120e45781810151838201526020016120cc565b50505f910152565b602081525f825180602084015261210a8160408501602087016120ca565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610948575f5ffd5b5f5f60408385031215612143575f5ffd5b823561214e8161211e565b946020939093013593505050565b5f5f5f6060848603121561216e575f5ffd5b83356121798161211e565b925060208401356121898161211e565b929592945050506040919091013590565b5f602082840312156121aa575f5ffd5b813561124d8161211e565b803580151581146121c4575f5ffd5b919050565b5f5f5f606084860312156121db575f5ffd5b833567ffffffffffffffff811681146121f2575f5ffd5b925060208401359150612207604085016121b5565b90509250925092565b5f60208284031215612220575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561224c575f5ffd5b82356122578161211e565b9150602083013567ffffffffffffffff811115612272575f5ffd5b8301601f81018513612282575f5ffd5b803567ffffffffffffffff81111561229c5761229c612227565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156122cb576122cb612227565b6040528181528282016020018710156122e2575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f840112612311575f5ffd5b50813567ffffffffffffffff811115612328575f5ffd5b60208301915083602082850101111561233f575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b03121561235d575f5ffd5b88356123688161211e565b975060208901356123788161211e565b965060408901359550606089013560ff81168114612394575f5ffd5b9450608089013567ffffffffffffffff8111156123af575f5ffd5b6123bb8b828c01612301565b90955093505060a089013567ffffffffffffffff8111156123da575f5ffd5b6123e68b828c01612301565b999c989b5096995094979396929594505050565b5f5f6040838503121561240b575f5ffd5b8235915061241b602084016121b5565b90509250929050565b5f5f60408385031215612435575f5ffd5b82356124408161211e565b915061241b602084016121b5565b5f5f6040838503121561245f575f5ffd5b823561246a8161211e565b9150602083013561247a8161211e565b809150509250929050565b600181811c9082168061249957607f821691505b6020821081036124b757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b8082018082111561079357634e487b7160e01b5f52601160045260245ffd5b5f60208284031215612584575f5ffd5b815161124d8161211e565b5f6020828403121561259f575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f8211156113d957805f5260205f20601f840160051c810160208510156126165750805b601f840160051c820191505b81811015612635575f8155600101612622565b5050505050565b815167ffffffffffffffff81111561265657612656612227565b61266a816126648454612485565b846125f1565b6020601f82116001811461269c575f83156126855750848201515b5f19600385901b1c1916600184901b178455612635565b5f84815260208120601f198516915b828110156126cb57878501518255602094850194600190920191016126ab565b50848210156126e857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516127088184602087016120ca565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209687d94bd825288b5a51e5cda64bf4ed3087fc1e10763818e10604f764f3582064736f6c634300081b0033", "balance": "0x0" }, "0x0167001000000000000000000000000000010097": { "contractName": "BridgedERC721", "storage": {}, - "code": "0x608060405260043610610207575f3560e01c80636352211e11610113578063a22cb4651161009d578063e07baba61161006d578063e07baba6146105c3578063e30c3978146105f9578063e985e9c514610616578063ef8c4ae61461065e578063f2fde38b1461067d575f5ffd5b8063a22cb46514610547578063a86f9d9e14610566578063b88d4fde14610585578063c87b56dd146105a4575f5ffd5b80637cf8ed0d116100e35780637cf8ed0d146104ce5780638456cb59146104ee5780638abf6077146105025780638da5cb5b1461051657806395d89b4114610533575f5ffd5b80636352211e1461046857806370a0823114610487578063715018a6146104a657806379ba5097146104ba575f5ffd5b80633eb6b8cf1161019457806342966c681161016457806342966c68146103de57806349d12605146103fd5780634f1ef2861461042157806352d1902d146104345780635c975abb14610448575f5ffd5b80633eb6b8cf1461036d5780633f4ba83a1461038c57806340c10f19146103a057806342842e0e146103bf575f5ffd5b806323b872dd116101da57806323b872dd146102b857806326afaadd146102d75780633075db561461031b5780633659cfe61461032f5780633ab76e9f1461034e575f5ffd5b806301ffc9a71461020b57806306fdde031461023f578063081812fc14610260578063095ea7b314610297575b5f5ffd5b348015610216575f5ffd5b5061022a610225366004612542565b61069c565b60405190151581526020015b60405180910390f35b34801561024a575f5ffd5b506102536106e1565b60405161023691906125aa565b34801561026b575f5ffd5b5061027f61027a3660046125bc565b610772565b6040516001600160a01b039091168152602001610236565b3480156102a2575f5ffd5b506102b66102b13660046125e7565b610798565b005b3480156102c3575f5ffd5b506102b66102d2366004612611565b6108b1565b3480156102e2575f5ffd5b506102fc61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610236565b348015610326575f5ffd5b5061022a6108e2565b34801561033a575f5ffd5b506102b661034936600461264f565b6108fa565b348015610359575f5ffd5b5060975461027f906001600160a01b031681565b348015610378575f5ffd5b5061027f61038736600461267e565b6109c1565b348015610397575f5ffd5b506102b66109d5565b3480156103ab575f5ffd5b506102b66103ba3660046125e7565b6109e9565b3480156103ca575f5ffd5b506102b66103d9366004612611565b610ab4565b3480156103e9575f5ffd5b506102b66103f83660046125bc565b610ace565b348015610408575f5ffd5b506104136101605481565b604051908152602001610236565b6102b661042f366004612761565b610bcd565b34801561043f575f5ffd5b50610413610c82565b348015610453575f5ffd5b5061022a60c954610100900460ff1660021490565b348015610473575f5ffd5b5061027f6104823660046125bc565b610d33565b348015610492575f5ffd5b506104136104a136600461264f565b610d93565b3480156104b1575f5ffd5b506102b6610e18565b3480156104c5575f5ffd5b506102b6610e29565b3480156104d9575f5ffd5b5061015f5461027f906001600160a01b031681565b3480156104f9575f5ffd5b506102b6610ea0565b34801561050d575f5ffd5b5061027f610eb3565b348015610521575f5ffd5b506033546001600160a01b031661027f565b34801561053e575f5ffd5b50610253610ec1565b348015610552575f5ffd5b506102b66105613660046127ad565b610ed1565b348015610571575f5ffd5b5061027f6105803660046127e0565b610edc565b348015610590575f5ffd5b506102b661059f366004612801565b610eef565b3480156105af575f5ffd5b506102536105be3660046125bc565b610f27565b3480156105ce575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b039091168152602001610236565b348015610604575f5ffd5b506065546001600160a01b031661027f565b348015610621575f5ffd5b5061022a610630366004612868565b6001600160a01b039182165f9081526101326020908152604080832093909416825291909152205460ff1690565b348015610669575f5ffd5b506102b66106783660046128e3565b610f50565b348015610688575f5ffd5b506102b661069736600461264f565b611102565b5f6001600160e01b0319821663093e326b60e21b14806106cc57506001600160e01b031982166377c6257360e11b145b806106db57506106db82611173565b92915050565b606061012d80546106f190612990565b80601f016020809104026020016040519081016040528092919081815260200182805461071d90612990565b80156107685780601f1061073f57610100808354040283529160200191610768565b820191905f5260205f20905b81548152906001019060200180831161074b57829003601f168201915b5050505050905090565b5f61077c826111c2565b505f90815261013160205260409020546001600160a01b031690565b5f6107a282610d33565b9050806001600160a01b0316836001600160a01b0316036108145760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061083057506108308133610630565b6108a25760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161080b565b6108ac8383611221565b505050565b6108bb338261128f565b6108d75760405162461bcd60e51b815260040161080b906129c8565b6108ac83838361130c565b5f60026108f160c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100971630036109425760405162461bcd60e51b815260040161080b90612a15565b7f00000000000000000000000001670010000000000000000000000000000100976001600160a01b031661097461147e565b6001600160a01b03161461099a5760405162461bcd60e51b815260040161080b90612a61565b6109a381611499565b604080515f808252602082019092526109be918391906114a1565b50565b5f6109cd84848461160b565b949350505050565b6109dd611667565b6109e7335f6116f7565b565b6109fd60c954610100900460ff1660021490565b15610a1b5760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610a36816001610edc565b6001600160a01b0316336001600160a01b031614610a6757604051630d85cccf60e11b815260040160405180910390fd5b6002610a7560c95460ff1690565b60ff1603610a965760405163dfc60d8560e01b815260040160405180910390fd5b610aa060026116ff565b610aaa8383611715565b6108ac60016116ff565b6108ac83838360405180602001604052805f815250610eef565b610ae260c954610100900460ff1660021490565b15610b005760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610b1b816001610edc565b6001600160a01b0316336001600160a01b031614610b4c57604051630d85cccf60e11b815260040160405180910390fd5b6002610b5a60c95460ff1690565b60ff1603610b7b5760405163dfc60d8560e01b815260040160405180910390fd5b610b8560026116ff565b33610b8f83610d33565b6001600160a01b031614610bb65760405163358bf3d960e01b815260040160405180910390fd5b610bbf8261172e565b610bc960016116ff565b5050565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010097163003610c155760405162461bcd60e51b815260040161080b90612a15565b7f00000000000000000000000001670010000000000000000000000000000100976001600160a01b0316610c4761147e565b6001600160a01b031614610c6d5760405162461bcd60e51b815260040161080b90612a61565b610c7682611499565b610bc9828260016114a1565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100971614610d215760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161080b565b505f516020612e1e5f395f51905f5290565b5f81815261012f60205260408120546001600160a01b0316806106db5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161080b565b5f6001600160a01b038216610dfc5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161080b565b506001600160a01b03165f908152610130602052604090205490565b610e206117d0565b6109e75f61182a565b60655433906001600160a01b03168114610e975760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161080b565b6109be8161182a565b610ea8611843565b6109e73360016116f7565b5f610ebc61147e565b905090565b606061012e80546106f190612990565b610bc93383836118b4565b5f610ee846848461160b565b9392505050565b610ef9338361128f565b610f155760405162461bcd60e51b815260040161080b906129c8565b610f2184848484611982565b50505050565b61015f54610160546060916106db916001600160a01b0390911690610f4b856119b5565b611a44565b5f54610100900460ff1615808015610f6e57505f54600160ff909116105b80610f875750303b158015610f8757505f5460ff166001145b610fea5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161080b565b5f805460ff19166001179055801561100b575f805461ff0019166101001790555b6110158787611a8e565b61101f8989611aca565b61109083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611b0492505050565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905580156110f7575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61110a6117d0565b606580546001600160a01b0383166001600160a01b0319909116811790915561113b6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b031982166380ac58cd60e01b14806111a357506001600160e01b03198216635b5e139f60e01b145b806106db57506301ffc9a760e01b6001600160e01b03198316146106db565b5f81815261012f60205260409020546001600160a01b03166109be5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161080b565b5f8181526101316020526040902080546001600160a01b0319166001600160a01b038416908117909155819061125682610d33565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5f61129a83610d33565b9050806001600160a01b0316846001600160a01b031614806112e157506001600160a01b038082165f908152610132602090815260408083209388168352929052205460ff165b806109cd5750836001600160a01b03166112fa84610772565b6001600160a01b031614949350505050565b826001600160a01b031661131f82610d33565b6001600160a01b0316146113455760405162461bcd60e51b815260040161080b90612aad565b6001600160a01b0382166113a75760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161080b565b6113b48383836001611b34565b826001600160a01b03166113c782610d33565b6001600160a01b0316146113ed5760405162461bcd60e51b815260040161080b90612aad565b5f8181526101316020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652610130855283862080545f190190559087168086528386208054600101905586865261012f90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5f516020612e1e5f395f51905f52546001600160a01b031690565b6109be6117d0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114d4576108ac83611b74565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561152e575060408051601f3d908101601f1916820190925261152b91810190612af2565b60015b6115915760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161080b565b5f516020612e1e5f395f51905f5281146115ff5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161080b565b506108ac838383611c0f565b5f6116168484611c33565b9050818061162c57506001600160a01b03811615155b8484909161165e57604051632b0d65db60e01b81526001600160401b039092166004830152602482015260440161080b565b50509392505050565b61167b60c954610100900460ff1660021490565b6116985760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610bc96117d0565b60c9805460ff191660ff92909216919091179055565b610bc9828260405180602001604052805f815250611cd5565b5f61173882610d33565b9050611747815f846001611b34565b61175082610d33565b5f8381526101316020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552610130845282852080545f1901905587855261012f909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6033546001600160a01b031633146109e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161080b565b606580546001600160a01b03191690556109be81611d07565b61185760c954610100900460ff1660021490565b156118755760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016116ed565b816001600160a01b0316836001600160a01b0316036119155760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161080b565b6001600160a01b038381165f8181526101326020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61198d84848461130c565b61199984848484611d58565b610f215760405162461bcd60e51b815260040161080b90612b09565b60605f6119c183611e55565b60010190505f816001600160401b038111156119df576119df6126c4565b6040519080825280601f01601f191660200182016040528015611a09576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611a1357509392505050565b6060611a5a846001600160a01b03166014611f2c565b611a63846119b5565b83604051602001611a7693929190612b5b565b60405160208183030381529060405290509392505050565b6001600160a01b0382161580611aa2575080155b80611aac57504681145b15610bc95760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611af25760405163538ba4f960e01b815260040160405180910390fd5b611afb836120c1565b6108ac8261211f565b5f54610100900460ff16611b2a5760405162461bcd60e51b815260040161080b90612be3565b610bc9828261218f565b611b4860c954610100900460ff1660021490565b15611b665760405163bae6e2a960e01b815260040160405180910390fd5b611b6f836121d0565b610f21565b6001600160a01b0381163b611be15760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161080b565b5f516020612e1e5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611c18836121f9565b5f82511180611c245750805b156108ac57610f218383612238565b6097545f906001600160a01b031680611c5f57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611cb1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109cd9190612c2e565b611cdf838361225d565b611ceb5f848484611d58565b6108ac5760405162461bcd60e51b815260040161080b90612b09565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160a01b0384163b15611e4a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611d9b903390899088908890600401612c49565b6020604051808303815f875af1925050508015611dd5575060408051601f3d908101601f19168201909252611dd291810190612c7b565b60015b611e30573d808015611e02576040519150601f19603f3d011682016040523d82523d5f602084013e611e07565b606091505b5080515f03611e285760405162461bcd60e51b815260040161080b90612b09565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506109cd565b506001949350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e935772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611ebf576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611edd57662386f26fc10000830492506010015b6305f5e1008310611ef5576305f5e100830492506008015b6127108310611f0957612710830492506004015b60648310611f1b576064830492506002015b600a83106106db5760010192915050565b60605f611f3a836002612caa565b611f45906002612cc1565b6001600160401b03811115611f5c57611f5c6126c4565b6040519080825280601f01601f191660200182016040528015611f86576020820181803683370190505b509050600360fc1b815f81518110611fa057611fa0612cd4565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110611fce57611fce612cd4565b60200101906001600160f81b03191690815f1a9053505f611ff0846002612caa565b611ffb906001612cc1565b90505b6001811115612072576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061202f5761202f612cd4565b1a60f81b82828151811061204557612045612cd4565b60200101906001600160f81b03191690815f1a90535060049490941c9361206b81612ce8565b9050611ffe565b508315610ee85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161080b565b5f54610100900460ff166120e75760405162461bcd60e51b815260040161080b90612be3565b6120ef6123f6565b61210d6001600160a01b03821615612107578161182a565b3361182a565b5060c9805461ff001916610100179055565b5f54610100900460ff166121455760405162461bcd60e51b815260040161080b90612be3565b6001600160401b0346111561216d5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff166121b55760405162461bcd60e51b815260040161080b90612be3565b61012d6121c28382612d48565b5061012e6108ac8282612d48565b306001600160a01b038216036109be57604051630c292c9d60e21b815260040160405180910390fd5b61220281611b74565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610ee88383604051806060016040528060278152602001612e3e6027913961241c565b6001600160a01b0382166122b35760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161080b565b5f81815261012f60205260409020546001600160a01b0316156123185760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161080b565b6123255f83836001611b34565b5f81815261012f60205260409020546001600160a01b03161561238a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161080b565b6001600160a01b0382165f818152610130602090815260408083208054600101905584835261012f90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f54610100900460ff166109e75760405162461bcd60e51b815260040161080b90612be3565b60605f5f856001600160a01b0316856040516124389190612e02565b5f60405180830381855af49150503d805f8114612470576040519150601f19603f3d011682016040523d82523d5f602084013e612475565b606091505b509150915061248686838387612490565b9695505050505050565b606083156124fe5782515f036124f7576001600160a01b0385163b6124f75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161080b565b50816109cd565b6109cd83838151156125135781518083602001fd5b8060405162461bcd60e51b815260040161080b91906125aa565b6001600160e01b0319811681146109be575f5ffd5b5f60208284031215612552575f5ffd5b8135610ee88161252d565b5f5b8381101561257757818101518382015260200161255f565b50505f910152565b5f815180845261259681602086016020860161255d565b601f01601f19169290920160200192915050565b602081525f610ee8602083018461257f565b5f602082840312156125cc575f5ffd5b5035919050565b6001600160a01b03811681146109be575f5ffd5b5f5f604083850312156125f8575f5ffd5b8235612603816125d3565b946020939093013593505050565b5f5f5f60608486031215612623575f5ffd5b833561262e816125d3565b9250602084013561263e816125d3565b929592945050506040919091013590565b5f6020828403121561265f575f5ffd5b8135610ee8816125d3565b80358015158114612679575f5ffd5b919050565b5f5f5f60608486031215612690575f5ffd5b83356001600160401b03811681146126a6575f5ffd5b9250602084013591506126bb6040850161266a565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126126e7575f5ffd5b81356001600160401b03811115612700576127006126c4565b604051601f8201601f19908116603f011681016001600160401b038111828210171561272e5761272e6126c4565b604052818152838201602001851015612745575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612772575f5ffd5b823561277d816125d3565b915060208301356001600160401b03811115612797575f5ffd5b6127a3858286016126d8565b9150509250929050565b5f5f604083850312156127be575f5ffd5b82356127c9816125d3565b91506127d76020840161266a565b90509250929050565b5f5f604083850312156127f1575f5ffd5b823591506127d76020840161266a565b5f5f5f5f60808587031215612814575f5ffd5b843561281f816125d3565b9350602085013561282f816125d3565b92506040850135915060608501356001600160401b03811115612850575f5ffd5b61285c878288016126d8565b91505092959194509250565b5f5f60408385031215612879575f5ffd5b8235612884816125d3565b91506020830135612894816125d3565b809150509250929050565b5f5f83601f8401126128af575f5ffd5b5081356001600160401b038111156128c5575f5ffd5b6020830191508360208285010111156128dc575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b0312156128fa575f5ffd5b8835612905816125d3565b97506020890135612915816125d3565b96506040890135612925816125d3565b95506060890135945060808901356001600160401b03811115612946575f5ffd5b6129528b828c0161289f565b90955093505060a08901356001600160401b03811115612970575f5ffd5b61297c8b828c0161289f565b999c989b5096995094979396929594505050565b600181811c908216806129a457607f821691505b6020821081036129c257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b5f60208284031215612b02575f5ffd5b5051919050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6832ba3432b932bab69d60b91b81525f8451612b7e81600985016020890161255d565b600160fe1b6009918401918201528451612b9f81600a84016020890161255d565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b60018201528351612bd681601384016020880161255d565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612c3e575f5ffd5b8151610ee8816125d3565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f906124869083018461257f565b5f60208284031215612c8b575f5ffd5b8151610ee88161252d565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106db576106db612c96565b808201808211156106db576106db612c96565b634e487b7160e01b5f52603260045260245ffd5b5f81612cf657612cf6612c96565b505f190190565b601f8211156108ac57805f5260205f20601f840160051c81016020851015612d225750805b601f840160051c820191505b81811015612d41575f8155600101612d2e565b5050505050565b81516001600160401b03811115612d6157612d616126c4565b612d7581612d6f8454612990565b84612cfd565b6020601f821160018114612da7575f8315612d905750848201515b5f19600385901b1c1916600184901b178455612d41565b5f84815260208120601f198516915b82811015612dd65787850151825560209485019460019092019101612db6565b5084821015612df357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8251612e1381846020870161255d565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220133dee54190dfd3eefa2c28c8581df544809a0e1d72b27140ecea85f4ca51a3564736f6c634300081b0033", + "code": "0x6080604052600436106101fc575f3560e01c80635c975abb1161011357806395d89b411161009d578063c87b56dd1161006d578063c87b56dd146105a8578063d1399b1a146105c7578063e30c3978146105e6578063e985e9c514610603578063f2fde38b1461064b575f5ffd5b806395d89b4114610537578063a22cb4651461054b578063a86f9d9e1461056a578063b88d4fde14610589575f5ffd5b806379ba5097116100e357806379ba5097146104be5780637cf8ed0d146104d25780638456cb59146104f25780638abf6077146105065780638da5cb5b1461051a575f5ffd5b80635c975abb1461044c5780636352211e1461046c57806370a082311461048b578063715018a6146104aa575f5ffd5b80633659cfe61161019457806342842e0e1161016457806342842e0e146103c357806342966c68146103e257806349d12605146104015780634f1ef2861461042557806352d1902d14610438575f5ffd5b80633659cfe6146103525780633eb6b8cf146103715780633f4ba83a1461039057806340c10f19146103a4575f5ffd5b8063095ea7b3116101cf578063095ea7b3146102ba57806323b872dd146102db57806326afaadd146102fa5780633075db561461033e575f5ffd5b806301ffc9a71461020057806304f3bcec1461023457806306fdde031461027a578063081812fc1461029b575b5f5ffd5b34801561020b575f5ffd5b5061021f61021a366004612467565b61066a565b60405190151581526020015b60405180910390f35b34801561023f575f5ffd5b507f00000000000000000000000016700100000000000000000000000000000000065b6040516001600160a01b03909116815260200161022b565b348015610285575f5ffd5b5061028e6106af565b60405161022b91906124cf565b3480156102a6575f5ffd5b506102626102b53660046124e1565b610740565b3480156102c5575f5ffd5b506102d96102d436600461250c565b610766565b005b3480156102e6575f5ffd5b506102d96102f5366004612536565b61087f565b348015610305575f5ffd5b5061031f61015f54610160546001600160a01b0390911691565b604080516001600160a01b03909316835260208301919091520161022b565b348015610349575f5ffd5b5061021f6108b0565b34801561035d575f5ffd5b506102d961036c366004612574565b6108c8565b34801561037c575f5ffd5b5061026261038b3660046125a3565b61098f565b34801561039b575f5ffd5b506102d9610a3a565b3480156103af575f5ffd5b506102d96103be36600461250c565b610abe565b3480156103ce575f5ffd5b506102d96103dd366004612536565b610b89565b3480156103ed575f5ffd5b506102d96103fc3660046124e1565b610ba3565b34801561040c575f5ffd5b506104176101605481565b60405190815260200161022b565b6102d9610433366004612689565b610ca2565b348015610443575f5ffd5b50610417610d57565b348015610457575f5ffd5b5061021f60c954610100900460ff1660021490565b348015610477575f5ffd5b506102626104863660046124e1565b610e08565b348015610496575f5ffd5b506104176104a5366004612574565b610e68565b3480156104b5575f5ffd5b506102d9610eed565b3480156104c9575f5ffd5b506102d9610efe565b3480156104dd575f5ffd5b5061015f54610262906001600160a01b031681565b3480156104fd575f5ffd5b506102d9610f75565b348015610511575f5ffd5b50610262610ff4565b348015610525575f5ffd5b506033546001600160a01b0316610262565b348015610542575f5ffd5b5061028e611002565b348015610556575f5ffd5b506102d96105653660046126d6565b611012565b348015610575575f5ffd5b50610262610584366004612709565b61101d565b348015610594575f5ffd5b506102d96105a336600461272a565b6110bd565b3480156105b3575f5ffd5b5061028e6105c23660046124e1565b6110f5565b3480156105d2575f5ffd5b506102d96105e13660046127d7565b61111e565b3480156105f1575f5ffd5b506065546001600160a01b0316610262565b34801561060e575f5ffd5b5061021f61061d366004612874565b6001600160a01b039182165f9081526101326020908152604080832093909416825291909152205460ff1690565b348015610656575f5ffd5b506102d9610665366004612574565b6112ce565b5f6001600160e01b0319821663093e326b60e21b148061069a57506001600160e01b0319821663689ccd8d60e11b145b806106a957506106a98261133f565b92915050565b606061012d80546106bf906128ab565b80601f01602080910402602001604051908101604052809291908181526020018280546106eb906128ab565b80156107365780601f1061070d57610100808354040283529160200191610736565b820191905f5260205f20905b81548152906001019060200180831161071957829003601f168201915b5050505050905090565b5f61074a8261138e565b505f90815261013160205260409020546001600160a01b031690565b5f61077082610e08565b9050806001600160a01b0316836001600160a01b0316036107e25760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806107fe57506107fe813361061d565b6108705760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016107d9565b61087a83836113ed565b505050565b610889338261145b565b6108a55760405162461bcd60e51b81526004016107d9906128e3565b61087a8383836114d8565b5f60026108bf60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100971630036109105760405162461bcd60e51b81526004016107d990612930565b7f00000000000000000000000001670010000000000000000000000000000100976001600160a01b031661094261164a565b6001600160a01b0316146109685760405162461bcd60e51b81526004016107d99061297c565b61097181611665565b604080515f8082526020820190925261098c9183919061166d565b50565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b815267ffffffffffffffff861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015610a0e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3291906129c8565b949350505050565b610a4e60c954610100900460ff1660021490565b610a6b5760405163bae6e2a960e01b815260040160405180910390fd5b610a7f60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610abc335f6117d7565b565b610ad260c954610100900460ff1660021490565b15610af05760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610b0b81600161101d565b6001600160a01b0316336001600160a01b031614610b3c576040516395383ea160e01b815260040160405180910390fd5b6002610b4a60c95460ff1690565b60ff1603610b6b5760405163dfc60d8560e01b815260040160405180910390fd5b610b7560026117df565b610b7f83836117f5565b61087a60016117df565b61087a83838360405180602001604052805f8152506110bd565b610bb760c954610100900460ff1660021490565b15610bd55760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610bf081600161101d565b6001600160a01b0316336001600160a01b031614610c21576040516395383ea160e01b815260040160405180910390fd5b6002610c2f60c95460ff1690565b60ff1603610c505760405163dfc60d8560e01b815260040160405180910390fd5b610c5a60026117df565b33610c6483610e08565b6001600160a01b031614610c8b5760405163358bf3d960e01b815260040160405180910390fd5b610c948261180e565b610c9e60016117df565b5050565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010097163003610cea5760405162461bcd60e51b81526004016107d990612930565b7f00000000000000000000000001670010000000000000000000000000000100976001600160a01b0316610d1c61164a565b6001600160a01b031614610d425760405162461bcd60e51b81526004016107d99061297c565b610d4b82611665565b610c9e8282600161166d565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100971614610df65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107d9565b505f516020612d3a5f395f51905f5290565b5f81815261012f60205260408120546001600160a01b0316806106a95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107d9565b5f6001600160a01b038216610ed15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016107d9565b506001600160a01b03165f908152610130602052604090205490565b610ef56118b0565b610abc5f61190a565b60655433906001600160a01b03168114610f6c5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016107d9565b61098c8161190a565b610f8960c954610100900460ff1660021490565b15610fa75760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610abc3360016117d7565b5f610ffd61164a565b905090565b606061012e80546106bf906128ab565b610c9e338383611923565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611092573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b691906129c8565b9392505050565b6110c7338361145b565b6110e35760405162461bcd60e51b81526004016107d9906128e3565b6110ef848484846119f1565b50505050565b61015f54610160546060916106a9916001600160a01b039091169061111985611a24565b611ab4565b5f54610100900460ff161580801561113c57505f54600160ff909116105b806111555750303b15801561115557505f5460ff166001145b6111b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d9565b5f805460ff1916600117905580156111d9575f805461ff0019166101001790555b6111e38787611afe565b6111ec88611b3a565b61125d83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611b9892505050565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905580156112c4575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6112d66118b0565b606580546001600160a01b0383166001600160a01b031990911681179091556113076033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b031982166380ac58cd60e01b148061136f57506001600160e01b03198216635b5e139f60e01b145b806106a957506301ffc9a760e01b6001600160e01b03198316146106a9565b5f81815261012f60205260409020546001600160a01b031661098c5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107d9565b5f8181526101316020526040902080546001600160a01b0319166001600160a01b038416908117909155819061142282610e08565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5f61146683610e08565b9050806001600160a01b0316846001600160a01b031614806114ad57506001600160a01b038082165f908152610132602090815260408083209388168352929052205460ff165b80610a325750836001600160a01b03166114c684610740565b6001600160a01b031614949350505050565b826001600160a01b03166114eb82610e08565b6001600160a01b0316146115115760405162461bcd60e51b81526004016107d9906129e3565b6001600160a01b0382166115735760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107d9565b6115808383836001611bc8565b826001600160a01b031661159382610e08565b6001600160a01b0316146115b95760405162461bcd60e51b81526004016107d9906129e3565b5f8181526101316020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652610130855283862080545f190190559087168086528386208054600101905586865261012f90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5f516020612d3a5f395f51905f52546001600160a01b031690565b61098c6118b0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156116a05761087a83611c08565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156116fa575060408051601f3d908101601f191682019092526116f791810190612a28565b60015b61175d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107d9565b5f516020612d3a5f395f51905f5281146117cb5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107d9565b5061087a838383611ca3565b610c9e6118b0565b60c9805460ff191660ff92909216919091179055565b610c9e828260405180602001604052805f815250611cc7565b5f61181882610e08565b9050611827815f846001611bc8565b61183082610e08565b5f8381526101316020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552610130845282852080545f1901905587855261012f909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6033546001600160a01b03163314610abc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d9565b606580546001600160a01b031916905561098c81611cf9565b816001600160a01b0316836001600160a01b0316036119845760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107d9565b6001600160a01b038381165f8181526101326020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6119fc8484846114d8565b611a0884848484611d4a565b6110ef5760405162461bcd60e51b81526004016107d990612a3f565b60605f611a3083611e47565b60010190505f8167ffffffffffffffff811115611a4f57611a4f6125ea565b6040519080825280601f01601f191660200182016040528015611a79576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611a8357509392505050565b6060611aca846001600160a01b03166014611f1e565b611ad384611a24565b83604051602001611ae693929190612a91565b60405160208183030381529060405290509392505050565b6001600160a01b0382161580611b12575080155b80611b1c57504681145b15610c9e5760405163c118d2f360e01b815260040160405180910390fd5b5f54610100900460ff16611b605760405162461bcd60e51b81526004016107d990612b19565b611b686120b4565b611b866001600160a01b03821615611b80578161190a565b3361190a565b5060c9805461ff001916610100179055565b5f54610100900460ff16611bbe5760405162461bcd60e51b81526004016107d990612b19565b610c9e82826120da565b611bdc60c954610100900460ff1660021490565b15611bfa5760405163bae6e2a960e01b815260040160405180910390fd5b611c038361211b565b6110ef565b6001600160a01b0381163b611c755760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107d9565b5f516020612d3a5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611cac83612144565b5f82511180611cb85750805b1561087a576110ef8383612183565b611cd183836121a8565b611cdd5f848484611d4a565b61087a5760405162461bcd60e51b81526004016107d990612a3f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160a01b0384163b15611e3c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611d8d903390899088908890600401612b64565b6020604051808303815f875af1925050508015611dc7575060408051601f3d908101601f19168201909252611dc491810190612b96565b60015b611e22573d808015611df4576040519150601f19603f3d011682016040523d82523d5f602084013e611df9565b606091505b5080515f03611e1a5760405162461bcd60e51b81526004016107d990612a3f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610a32565b506001949350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e855772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611eb1576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611ecf57662386f26fc10000830492506010015b6305f5e1008310611ee7576305f5e100830492506008015b6127108310611efb57612710830492506004015b60648310611f0d576064830492506002015b600a83106106a95760010192915050565b60605f611f2c836002612bc5565b611f37906002612bdc565b67ffffffffffffffff811115611f4f57611f4f6125ea565b6040519080825280601f01601f191660200182016040528015611f79576020820181803683370190505b509050600360fc1b815f81518110611f9357611f93612bef565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110611fc157611fc1612bef565b60200101906001600160f81b03191690815f1a9053505f611fe3846002612bc5565b611fee906001612bdc565b90505b6001811115612065576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061202257612022612bef565b1a60f81b82828151811061203857612038612bef565b60200101906001600160f81b03191690815f1a90535060049490941c9361205e81612c03565b9050611ff1565b5083156110b65760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107d9565b5f54610100900460ff16610abc5760405162461bcd60e51b81526004016107d990612b19565b5f54610100900460ff166121005760405162461bcd60e51b81526004016107d990612b19565b61012d61210d8382612c63565b5061012e61087a8282612c63565b306001600160a01b0382160361098c57604051630c292c9d60e21b815260040160405180910390fd5b61214d81611c08565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606110b68383604051806060016040528060278152602001612d5a60279139612341565b6001600160a01b0382166121fe5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107d9565b5f81815261012f60205260409020546001600160a01b0316156122635760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107d9565b6122705f83836001611bc8565b5f81815261012f60205260409020546001600160a01b0316156122d55760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107d9565b6001600160a01b0382165f818152610130602090815260408083208054600101905584835261012f90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60605f5f856001600160a01b03168560405161235d9190612d1e565b5f60405180830381855af49150503d805f8114612395576040519150601f19603f3d011682016040523d82523d5f602084013e61239a565b606091505b50915091506123ab868383876123b5565b9695505050505050565b606083156124235782515f0361241c576001600160a01b0385163b61241c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107d9565b5081610a32565b610a3283838151156124385781518083602001fd5b8060405162461bcd60e51b81526004016107d991906124cf565b6001600160e01b03198116811461098c575f5ffd5b5f60208284031215612477575f5ffd5b81356110b681612452565b5f5b8381101561249c578181015183820152602001612484565b50505f910152565b5f81518084526124bb816020860160208601612482565b601f01601f19169290920160200192915050565b602081525f6110b660208301846124a4565b5f602082840312156124f1575f5ffd5b5035919050565b6001600160a01b038116811461098c575f5ffd5b5f5f6040838503121561251d575f5ffd5b8235612528816124f8565b946020939093013593505050565b5f5f5f60608486031215612548575f5ffd5b8335612553816124f8565b92506020840135612563816124f8565b929592945050506040919091013590565b5f60208284031215612584575f5ffd5b81356110b6816124f8565b8035801515811461259e575f5ffd5b919050565b5f5f5f606084860312156125b5575f5ffd5b833567ffffffffffffffff811681146125cc575f5ffd5b9250602084013591506125e16040850161258f565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261260d575f5ffd5b813567ffffffffffffffff811115612627576126276125ea565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612656576126566125ea565b60405281815283820160200185101561266d575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561269a575f5ffd5b82356126a5816124f8565b9150602083013567ffffffffffffffff8111156126c0575f5ffd5b6126cc858286016125fe565b9150509250929050565b5f5f604083850312156126e7575f5ffd5b82356126f2816124f8565b91506127006020840161258f565b90509250929050565b5f5f6040838503121561271a575f5ffd5b823591506127006020840161258f565b5f5f5f5f6080858703121561273d575f5ffd5b8435612748816124f8565b93506020850135612758816124f8565b925060408501359150606085013567ffffffffffffffff81111561277a575f5ffd5b612786878288016125fe565b91505092959194509250565b5f5f83601f8401126127a2575f5ffd5b50813567ffffffffffffffff8111156127b9575f5ffd5b6020830191508360208285010111156127d0575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a0312156127ed575f5ffd5b87356127f8816124f8565b96506020880135612808816124f8565b955060408801359450606088013567ffffffffffffffff81111561282a575f5ffd5b6128368a828b01612792565b909550935050608088013567ffffffffffffffff811115612855575f5ffd5b6128618a828b01612792565b989b979a50959850939692959293505050565b5f5f60408385031215612885575f5ffd5b8235612890816124f8565b915060208301356128a0816124f8565b809150509250929050565b600181811c908216806128bf57607f821691505b6020821081036128dd57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f602082840312156129d8575f5ffd5b81516110b6816124f8565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b5f60208284031215612a38575f5ffd5b5051919050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6832ba3432b932bab69d60b91b81525f8451612ab4816009850160208901612482565b600160fe1b6009918401918201528451612ad581600a840160208901612482565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b60018201528351612b0c816013840160208801612482565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f906123ab908301846124a4565b5f60208284031215612ba6575f5ffd5b81516110b681612452565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106a9576106a9612bb1565b808201808211156106a9576106a9612bb1565b634e487b7160e01b5f52603260045260245ffd5b5f81612c1157612c11612bb1565b505f190190565b601f82111561087a57805f5260205f20601f840160051c81016020851015612c3d5750805b601f840160051c820191505b81811015612c5c575f8155600101612c49565b5050505050565b815167ffffffffffffffff811115612c7d57612c7d6125ea565b612c9181612c8b84546128ab565b84612c18565b6020601f821160018114612cc3575f8315612cac5750848201515b5f19600385901b1c1916600184901b178455612c5c565b5f84815260208120601f198516915b82811015612cf25787850151825560209485019460019092019101612cd2565b5084821015612d0f57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8251612d2f818460208701612482565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202414720b655eceec67731b0cca9eb4df24c08d7bd0f2669832bf488ab313088e64736f6c634300081b0033", "balance": "0x0" }, "0x0167001000000000000000000000000000010098": { "contractName": "BridgedERC1155", "storage": {}, - "code": "0x6080604052600436106101e5575f3560e01c8063715018a611610108578063a86f9d9e1161009d578063e30c39781161006d578063e30c397814610568578063e985e9c514610585578063ef8c4ae6146105cd578063f242432a146105ec578063f2fde38b1461060b575f5ffd5b8063a86f9d9e146104d5578063b390c0ab146104f4578063d81d0a1514610513578063e07baba614610532575f5ffd5b80638abf6077116100d85780638abf6077146104715780638da5cb5b1461048557806395d89b41146104a2578063a22cb465146104b6575f5ffd5b8063715018a61461041557806379ba5097146104295780637cf8ed0d1461043d5780638456cb591461045d575f5ffd5b80633ab76e9f1161017e5780634e1273f41161014e5780634e1273f4146103a25780634f1ef286146103ce57806352d1902d146103e15780635c975abb146103f5575f5ffd5b80633ab76e9f146103225780633eb6b8cf146103595780633f4ba83a1461037857806349d126051461038c575f5ffd5b806326afaadd116101b957806326afaadd1461028a5780632eb2c2d6146102ce5780633075db56146102ef5780633659cfe614610303575f5ffd5b8062fdd58e146101e957806301ffc9a71461021b57806306fdde031461024a5780630e89341c1461026b575b5f5ffd5b3480156101f4575f5ffd5b506102086102033660046126ae565b61062a565b6040519081526020015b60405180910390f35b348015610226575f5ffd5b5061023a6102353660046126ed565b6106c4565b6040519015158152602001610212565b348015610255575f5ffd5b5061025e610703565b6040516102129190612755565b348015610276575f5ffd5b5061025e610285366004612767565b610790565b348015610295575f5ffd5b506102af61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610212565b3480156102d9575f5ffd5b506102ed6102e83660046128c0565b610823565b005b3480156102fa575f5ffd5b5061023a61086f565b34801561030e575f5ffd5b506102ed61031d366004612970565b610887565b34801561032d575f5ffd5b50609754610341906001600160a01b031681565b6040516001600160a01b039091168152602001610212565b348015610364575f5ffd5b5061034161037336600461299f565b61094e565b348015610383575f5ffd5b506102ed610962565b348015610397575f5ffd5b506102086101605481565b3480156103ad575f5ffd5b506103c16103bc3660046129e5565b610976565b6040516102129190612aee565b6102ed6103dc366004612b00565b610a95565b3480156103ec575f5ffd5b50610208610b4e565b348015610400575f5ffd5b5061023a60c954610100900460ff1660021490565b348015610420575f5ffd5b506102ed610c00565b348015610434575f5ffd5b506102ed610c11565b348015610448575f5ffd5b5061015f54610341906001600160a01b031681565b348015610468575f5ffd5b506102ed610c88565b34801561047c575f5ffd5b50610341610c9b565b348015610490575f5ffd5b506033546001600160a01b0316610341565b3480156104ad575f5ffd5b5061025e610ca9565b3480156104c1575f5ffd5b506102ed6104d0366004612b42565b610cb7565b3480156104e0575f5ffd5b506103416104ef366004612b75565b610cc2565b3480156104ff575f5ffd5b506102ed61050e366004612b96565b610cd5565b34801561051e575f5ffd5b506102ed61052d366004612bfd565b610da7565b34801561053d575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b039091168152602001610212565b348015610573575f5ffd5b506065546001600160a01b0316610341565b348015610590575f5ffd5b5061023a61059f366004612c7d565b6001600160a01b039182165f90815261012e6020908152604080832093909416825291909152205460ff1690565b3480156105d8575f5ffd5b506102ed6105e7366004612cf1565b610eeb565b3480156105f7575f5ffd5b506102ed610606366004612d9e565b61106b565b348015610616575f5ffd5b506102ed610625366004612970565b6110b0565b5f6001600160a01b0383166106995760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f81815261012d602090815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216634d22606360e01b14806106f457506001600160e01b031982166377c6257360e11b145b806106be57506106be82611121565b610162805461071190612df5565b80601f016020809104026020016040519081016040528092919081815260200182805461073d90612df5565b80156107885780601f1061075f57610100808354040283529160200191610788565b820191905f5260205f20905b81548152906001019060200180831161076b57829003601f168201915b505050505081565b606061012f80546107a090612df5565b80601f01602080910402602001604051908101604052809291908181526020018280546107cc90612df5565b80156108175780601f106107ee57610100808354040283529160200191610817565b820191905f5260205f20905b8154815290600101906020018083116107fa57829003601f168201915b50505050509050919050565b6001600160a01b03851633148061083f575061083f853361059f565b61085b5760405162461bcd60e51b815260040161069090612e2d565b6108688585858585611170565b5050505050565b5f600261087e60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100981630036108cf5760405162461bcd60e51b815260040161069090612e7b565b7f00000000000000000000000001670010000000000000000000000000000100986001600160a01b031661090161130b565b6001600160a01b0316146109275760405162461bcd60e51b815260040161069090612ec7565b61093081611326565b604080515f8082526020820190925261094b9183919061132e565b50565b5f61095a848484611498565b949350505050565b61096a6114f4565b610974335f611584565b565b606081518351146109db5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610690565b5f83516001600160401b038111156109f5576109f561277e565b604051908082528060200260200182016040528015610a1e578160200160208202803683370190505b5090505f5b8451811015610a8d57610a68858281518110610a4157610a41612f13565b6020026020010151858381518110610a5b57610a5b612f13565b602002602001015161062a565b828281518110610a7a57610a7a612f13565b6020908102919091010152600101610a23565b509392505050565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010098163003610add5760405162461bcd60e51b815260040161069090612e7b565b7f00000000000000000000000001670010000000000000000000000000000100986001600160a01b0316610b0f61130b565b6001600160a01b031614610b355760405162461bcd60e51b815260040161069090612ec7565b610b3e82611326565b610b4a8282600161132e565b5050565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100981614610bed5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610690565b505f5160206134ec5f395f51905f525b90565b610c08611588565b6109745f6115e2565b60655433906001600160a01b03168114610c7f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610690565b61094b816115e2565b610c906115fb565b610974336001611584565b5f610ca461130b565b905090565b610161805461071190612df5565b610b4a33838361166c565b5f610cce468484611498565b9392505050565b610ce960c954610100900460ff1660021490565b15610d075760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610d23816001610cc2565b6001600160a01b0316336001600160a01b031614610d5457604051630d85cccf60e11b815260040160405180910390fd5b6002610d6260c95460ff1690565b60ff1603610d835760405163dfc60d8560e01b815260040160405180910390fd5b610d8d600261174c565b610d98338484611762565b610da2600161174c565b505050565b610dbb60c954610100900460ff1660021490565b15610dd95760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610df5816001610cc2565b6001600160a01b0316336001600160a01b031614610e2657604051630d85cccf60e11b815260040160405180910390fd5b6002610e3460c95460ff1690565b60ff1603610e555760405163dfc60d8560e01b815260040160405180910390fd5b610e5f600261174c565b610ed9868686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050604080516020808a028281018201909352898252909350899250889182918501908490808284375f920182905250604080516020810190915290815292506118f6915050565b610ee3600161174c565b505050505050565b5f54610100900460ff1615808015610f0957505f54600160ff909116105b80610f225750303b158015610f2257505f5460ff166001145b610f855760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610690565b5f805460ff191660011790558015610fa6575f805461ff0019166101001790555b610fb08787611a78565b610fba8989611ab4565b610fdb610fd6888860405180602001604052805f815250611aee565b611b38565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905561016161100b858783612f6b565b5061016261101a838583612f6b565b508015611060575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6001600160a01b0385163314806110875750611087853361059f565b6110a35760405162461bcd60e51b815260040161069090612e2d565b6108688585858585611b67565b6110b8611588565b606580546001600160a01b0383166001600160a01b031990911681179091556110e96033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b03198216636cdb3d1360e11b148061115157506001600160e01b031982166303a24d0760e21b145b806106be57506301ffc9a760e01b6001600160e01b03198316146106be565b81518351146111915760405162461bcd60e51b815260040161069090613024565b6001600160a01b0384166111b75760405162461bcd60e51b81526004016106909061306c565b336111c6818787878787611c96565b5f5b84518110156112a5575f8582815181106111e4576111e4612f13565b602002602001015190505f85838151811061120157611201612f13565b6020908102919091018101515f84815261012d835260408082206001600160a01b038e1683529093529190912054909150818110156112525760405162461bcd60e51b8152600401610690906130b1565b5f83815261012d602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061129190849061310f565b9091555050600190930192506111c8915050565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516112f5929190613122565b60405180910390a4610ee3818787878787611cd6565b5f5160206134ec5f395f51905f52546001600160a01b031690565b61094b611588565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561136157610da283611e30565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113bb575060408051601f3d908101601f191682019092526113b89181019061314f565b60015b61141e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610690565b5f5160206134ec5f395f51905f52811461148c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610690565b50610da2838383611ecb565b5f6114a38484611ef5565b905081806114b957506001600160a01b03811615155b848490916114eb57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610690565b50509392505050565b61150860c954610100900460ff1660021490565b6115255760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610b4a5b6033546001600160a01b031633146109745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610690565b606580546001600160a01b031916905561094b81611f97565b61160f60c954610100900460ff1660021490565b1561162d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161157a565b816001600160a01b0316836001600160a01b0316036116df5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610690565b6001600160a01b038381165f81815261012e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60c9805460ff191660ff92909216919091179055565b6001600160a01b0383166117c45760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610690565b335f6117cf84611fe8565b90505f6117db84611fe8565b90506117f983875f858560405180602001604052805f815250611c96565b5f85815261012d602090815260408083206001600160a01b038a168452909152902054848110156118785760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610690565b5f86815261012d602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091525f90525b50505050505050565b6001600160a01b0384166119565760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610690565b81518351146119775760405162461bcd60e51b815260040161069090613024565b33611986815f87878787611c96565b5f5b8451811015611a12578381815181106119a3576119a3612f13565b602002602001015161012d5f8784815181106119c1576119c1612f13565b602002602001015181526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f828254611a05919061310f565b9091555050600101611988565b50846001600160a01b03165f6001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611a62929190613122565b60405180910390a4610868815f87878787611cd6565b6001600160a01b0382161580611a8c575080155b80611a9657504681145b15610b4a5760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611adc5760405163538ba4f960e01b815260040160405180910390fd5b611ae583612031565b610da28261208f565b6060611b04846001600160a01b031660146120ff565b611b0d84612294565b83604051602001611b2093929190613166565b60405160208183030381529060405290509392505050565b5f54610100900460ff16611b5e5760405162461bcd60e51b8152600401610690906131ee565b61094b81612323565b6001600160a01b038416611b8d5760405162461bcd60e51b81526004016106909061306c565b335f611b9885611fe8565b90505f611ba485611fe8565b9050611bb4838989858589611c96565b5f86815261012d602090815260408083206001600160a01b038c16845290915290205485811015611bf75760405162461bcd60e51b8152600401610690906130b1565b5f87815261012d602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611c3690849061310f565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611060848a8a8a8a8a612352565b611caa60c954610100900460ff1660021490565b15611cc85760405163bae6e2a960e01b815260040160405180910390fd5b611cd18461240c565b610ee3565b6001600160a01b0384163b15610ee35760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611d1a9089908990889088908890600401613239565b6020604051808303815f875af1925050508015611d54575060408051601f3d908101601f19168201909252611d5191810190613296565b60015b611e0057611d606132b1565b806308c379a003611d995750611d746132c9565b80611d7f5750611d9b565b8060405162461bcd60e51b81526004016106909190612755565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610690565b6001600160e01b0319811663bc197c8160e01b146118ed5760405162461bcd60e51b815260040161069090613343565b6001600160a01b0381163b611e9d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610690565b5f5160206134ec5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611ed483612435565b5f82511180611ee05750805b15610da257611eef8383612474565b50505050565b6097545f906001600160a01b031680611f2157604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611f73573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095a919061338b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f8151811061202057612020612f13565b602090810291909101015292915050565b5f54610100900460ff166120575760405162461bcd60e51b8152600401610690906131ee565b61205f612499565b61207d6001600160a01b0382161561207757816115e2565b336115e2565b5060c9805461ff001916610100179055565b5f54610100900460ff166120b55760405162461bcd60e51b8152600401610690906131ee565b6001600160401b034611156120dd5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60605f61210d8360026133a6565b61211890600261310f565b6001600160401b0381111561212f5761212f61277e565b6040519080825280601f01601f191660200182016040528015612159576020820181803683370190505b509050600360fc1b815f8151811061217357612173612f13565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106121a1576121a1612f13565b60200101906001600160f81b03191690815f1a9053505f6121c38460026133a6565b6121ce90600161310f565b90505b6001811115612245576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061220257612202612f13565b1a60f81b82828151811061221857612218612f13565b60200101906001600160f81b03191690815f1a90535060049490941c9361223e816133bd565b90506121d1565b508315610cce5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610690565b60605f6122a0836124bf565b60010190505f816001600160401b038111156122be576122be61277e565b6040519080825280601f01601f1916602001820160405280156122e8576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846122f257509392505050565b5f54610100900460ff166123495760405162461bcd60e51b8152600401610690906131ee565b61094b81612596565b6001600160a01b0384163b15610ee35760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061239690899089908890889088906004016133d2565b6020604051808303815f875af19250505080156123d0575060408051601f3d908101601f191682019092526123cd91810190613296565b60015b6123dc57611d606132b1565b6001600160e01b0319811663f23a6e6160e01b146118ed5760405162461bcd60e51b815260040161069090613343565b306001600160a01b0382160361094b57604051630c292c9d60e21b815260040160405180910390fd5b61243e81611e30565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610cce838360405180606001604052806027815260200161350c602791396125a3565b5f54610100900460ff166109745760405162461bcd60e51b8152600401610690906131ee565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106124fd5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612529576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061254757662386f26fc10000830492506010015b6305f5e100831061255f576305f5e100830492506008015b612710831061257357612710830492506004015b60648310612585576064830492506002015b600a83106106be5760010192915050565b61012f610b4a8282613416565b60605f5f856001600160a01b0316856040516125bf91906134d0565b5f60405180830381855af49150503d805f81146125f7576040519150601f19603f3d011682016040523d82523d5f602084013e6125fc565b606091505b509150915061260d86838387612617565b9695505050505050565b606083156126855782515f0361267e576001600160a01b0385163b61267e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610690565b508161095a565b61095a8383815115611d7f5781518083602001fd5b6001600160a01b038116811461094b575f5ffd5b5f5f604083850312156126bf575f5ffd5b82356126ca8161269a565b946020939093013593505050565b6001600160e01b03198116811461094b575f5ffd5b5f602082840312156126fd575f5ffd5b8135610cce816126d8565b5f5b8381101561272257818101518382015260200161270a565b50505f910152565b5f8151808452612741816020860160208601612708565b601f01601f19169290920160200192915050565b602081525f610cce602083018461272a565b5f60208284031215612777575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f191681016001600160401b03811182821017156127b7576127b761277e565b6040525050565b5f6001600160401b038211156127d6576127d661277e565b5060051b60200190565b5f82601f8301126127ef575f5ffd5b81356127fa816127be565b6040516128078282612792565b80915082815260208101915060208360051b86010192508583111561282a575f5ffd5b602085015b8381101561284757803583526020928301920161282f565b5095945050505050565b5f82601f830112612860575f5ffd5b81356001600160401b038111156128795761287961277e565b604051612890601f8301601f191660200182612792565b8181528460208386010111156128a4575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a086880312156128d4575f5ffd5b85356128df8161269a565b945060208601356128ef8161269a565b935060408601356001600160401b03811115612909575f5ffd5b612915888289016127e0565b93505060608601356001600160401b03811115612930575f5ffd5b61293c888289016127e0565b92505060808601356001600160401b03811115612957575f5ffd5b61296388828901612851565b9150509295509295909350565b5f60208284031215612980575f5ffd5b8135610cce8161269a565b8035801515811461299a575f5ffd5b919050565b5f5f5f606084860312156129b1575f5ffd5b83356001600160401b03811681146129c7575f5ffd5b9250602084013591506129dc6040850161298b565b90509250925092565b5f5f604083850312156129f6575f5ffd5b82356001600160401b03811115612a0b575f5ffd5b8301601f81018513612a1b575f5ffd5b8035612a26816127be565b604051612a338282612792565b80915082815260208101915060208360051b850101925087831115612a56575f5ffd5b6020840193505b82841015612a81578335612a708161269a565b825260209384019390910190612a5d565b945050505060208301356001600160401b03811115612a9e575f5ffd5b612aaa858286016127e0565b9150509250929050565b5f8151808452602084019350602083015f5b82811015612ae4578151865260209586019590910190600101612ac6565b5093949350505050565b602081525f610cce6020830184612ab4565b5f5f60408385031215612b11575f5ffd5b8235612b1c8161269a565b915060208301356001600160401b03811115612b36575f5ffd5b612aaa85828601612851565b5f5f60408385031215612b53575f5ffd5b8235612b5e8161269a565b9150612b6c6020840161298b565b90509250929050565b5f5f60408385031215612b86575f5ffd5b82359150612b6c6020840161298b565b5f5f60408385031215612ba7575f5ffd5b50508035926020909101359150565b5f5f83601f840112612bc6575f5ffd5b5081356001600160401b03811115612bdc575f5ffd5b6020830191508360208260051b8501011115612bf6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215612c11575f5ffd5b8535612c1c8161269a565b945060208601356001600160401b03811115612c36575f5ffd5b612c4288828901612bb6565b90955093505060408601356001600160401b03811115612c60575f5ffd5b612c6c88828901612bb6565b969995985093965092949392505050565b5f5f60408385031215612c8e575f5ffd5b8235612c998161269a565b91506020830135612ca98161269a565b809150509250929050565b5f5f83601f840112612cc4575f5ffd5b5081356001600160401b03811115612cda575f5ffd5b602083019150836020828501011115612bf6575f5ffd5b5f5f5f5f5f5f5f5f60c0898b031215612d08575f5ffd5b8835612d138161269a565b97506020890135612d238161269a565b96506040890135612d338161269a565b95506060890135945060808901356001600160401b03811115612d54575f5ffd5b612d608b828c01612cb4565b90955093505060a08901356001600160401b03811115612d7e575f5ffd5b612d8a8b828c01612cb4565b999c989b5096995094979396929594505050565b5f5f5f5f5f60a08688031215612db2575f5ffd5b8535612dbd8161269a565b94506020860135612dcd8161269a565b9350604086013592506060860135915060808601356001600160401b03811115612957575f5ffd5b600181811c90821680612e0957607f821691505b602082108103612e2757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b601f821115610da257805f5260205f20601f840160051c81016020851015612f4c5750805b601f840160051c820191505b81811015610868575f8155600101612f58565b6001600160401b03831115612f8257612f8261277e565b612f9683612f908354612df5565b83612f27565b5f601f841160018114612fc7575f8515612fb05750838201355b5f19600387901b1c1916600186901b178355610868565b5f83815260208120601f198716915b82811015612ff65786850135825560209485019460019092019101612fd6565b5086821015613012575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106be576106be6130fb565b604081525f6131346040830185612ab4565b82810360208401526131468185612ab4565b95945050505050565b5f6020828403121561315f575f5ffd5b5051919050565b6832ba3432b932bab69d60b91b81525f8451613189816009850160208901612708565b600160fe1b60099184019182015284516131aa81600a840160208901612708565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b600182015283516131e1816013840160208801612708565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190525f9061326490830186612ab4565b82810360608401526132768186612ab4565b9050828103608084015261328a818561272a565b98975050505050505050565b5f602082840312156132a6575f5ffd5b8151610cce816126d8565b5f60033d1115610bfd5760045f5f3e505f5160e01c90565b5f60443d10156132d65790565b6040513d600319016004823e80513d60248201116001600160401b03821117156132ff57505090565b80820180516001600160401b0381111561331a575050505090565b3d8401600319018282016020011115613334575050505090565b610a8d60208285010185612792565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b5f6020828403121561339b575f5ffd5b8151610cce8161269a565b80820281158282048414176106be576106be6130fb565b5f816133cb576133cb6130fb565b505f190190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f9061340b9083018461272a565b979650505050505050565b81516001600160401b0381111561342f5761342f61277e565b6134438161343d8454612df5565b84612f27565b6020601f821160018114613475575f831561345e5750848201515b5f19600385901b1c1916600184901b178455610868565b5f84815260208120601f198516915b828110156134a45787850151825560209485019460019092019101613484565b50848210156134c157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516134e1818460208701612708565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e1a94149d932c1a813deafcd7b9411af5601344bd1134141cd40fbf8494bcc0a64736f6c634300081b0033", + "code": "0x6080604052600436106101da575f3560e01c8063715018a6116100fd578063a86f9d9e11610092578063e30c397811610062578063e30c397814610555578063e985e9c514610572578063f242432a146105ba578063f2fde38b146105d9575f5ffd5b8063a86f9d9e146104d9578063b390c0ab146104f8578063d1399b1a14610517578063d81d0a1514610536575f5ffd5b80638abf6077116100cd5780638abf6077146104755780638da5cb5b1461048957806395d89b41146104a6578063a22cb465146104ba575f5ffd5b8063715018a61461041957806379ba50971461042d5780637cf8ed0d146104415780638456cb5914610461575f5ffd5b80633659cfe6116101735780634e1273f4116101435780634e1273f4146103a65780634f1ef286146103d257806352d1902d146103e55780635c975abb146103f9575f5ffd5b80633659cfe61461033e5780633eb6b8cf1461035d5780633f4ba83a1461037c57806349d1260514610390575f5ffd5b80630e89341c116101ae5780630e89341c146102a657806326afaadd146102c55780632eb2c2d6146103095780633075db561461032a575f5ffd5b8062fdd58e146101de57806301ffc9a71461021057806304f3bcec1461023f57806306fdde0314610285575b5f5ffd5b3480156101e9575f5ffd5b506101fd6101f83660046125db565b6105f8565b6040519081526020015b60405180910390f35b34801561021b575f5ffd5b5061022f61022a36600461261a565b610692565b6040519015158152602001610207565b34801561024a575f5ffd5b507f00000000000000000000000016700100000000000000000000000000000000065b6040516001600160a01b039091168152602001610207565b348015610290575f5ffd5b506102996106d1565b6040516102079190612682565b3480156102b1575f5ffd5b506102996102c0366004612694565b61075e565b3480156102d0575f5ffd5b506102ea61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610207565b348015610314575f5ffd5b506103286103233660046127ed565b6107f1565b005b348015610335575f5ffd5b5061022f61083d565b348015610349575f5ffd5b5061032861035836600461289d565b610855565b348015610368575f5ffd5b5061026d6103773660046128cc565b61091c565b348015610387575f5ffd5b506103286109c6565b34801561039b575f5ffd5b506101fd6101605481565b3480156103b1575f5ffd5b506103c56103c0366004612912565b610a4a565b6040516102079190612a1b565b6103286103e0366004612a2d565b610b69565b3480156103f0575f5ffd5b506101fd610c22565b348015610404575f5ffd5b5061022f60c954610100900460ff1660021490565b348015610424575f5ffd5b50610328610cd4565b348015610438575f5ffd5b50610328610ce5565b34801561044c575f5ffd5b5061015f5461026d906001600160a01b031681565b34801561046c575f5ffd5b50610328610d5c565b348015610480575f5ffd5b5061026d610ddb565b348015610494575f5ffd5b506033546001600160a01b031661026d565b3480156104b1575f5ffd5b50610299610de9565b3480156104c5575f5ffd5b506103286104d4366004612a6f565b610df7565b3480156104e4575f5ffd5b5061026d6104f3366004612aa2565b610e02565b348015610503575f5ffd5b50610328610512366004612ac3565b610ea2565b348015610522575f5ffd5b50610328610531366004612b27565b610f74565b348015610541575f5ffd5b50610328610550366004612c02565b6110f2565b348015610560575f5ffd5b506065546001600160a01b031661026d565b34801561057d575f5ffd5b5061022f61058c366004612c82565b6001600160a01b039182165f90815261012e6020908152604080832093909416825291909152205460ff1690565b3480156105c5575f5ffd5b506103286105d4366004612cb9565b611236565b3480156105e4575f5ffd5b506103286105f336600461289d565b61127b565b5f6001600160a01b0383166106675760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f81815261012d602090815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216634d22606360e01b14806106c257506001600160e01b0319821663689ccd8d60e11b145b8061068c575061068c826112ec565b61016280546106df90612d10565b80601f016020809104026020016040519081016040528092919081815260200182805461070b90612d10565b80156107565780601f1061072d57610100808354040283529160200191610756565b820191905f5260205f20905b81548152906001019060200180831161073957829003601f168201915b505050505081565b606061012f805461076e90612d10565b80601f016020809104026020016040519081016040528092919081815260200182805461079a90612d10565b80156107e55780601f106107bc576101008083540402835291602001916107e5565b820191905f5260205f20905b8154815290600101906020018083116107c857829003601f168201915b50505050509050919050565b6001600160a01b03851633148061080d575061080d853361058c565b6108295760405162461bcd60e51b815260040161065e90612d48565b610836858585858561133b565b5050505050565b5f600261084c60c95460ff1690565b60ff1614905090565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000001009816300361089d5760405162461bcd60e51b815260040161065e90612d96565b7f00000000000000000000000001670010000000000000000000000000000100986001600160a01b03166108cf6114d6565b6001600160a01b0316146108f55760405162461bcd60e51b815260040161065e90612de2565b6108fe816114f1565b604080515f80825260208201909252610919918391906114f9565b50565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa15801561099a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109be9190612e2e565b949350505050565b6109da60c954610100900460ff1660021490565b6109f75760405163bae6e2a960e01b815260040160405180910390fd5b610a0b60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610a48335f611663565b565b60608151835114610aaf5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b606482015260840161065e565b5f83516001600160401b03811115610ac957610ac96126ab565b604051908082528060200260200182016040528015610af2578160200160208202803683370190505b5090505f5b8451811015610b6157610b3c858281518110610b1557610b15612e49565b6020026020010151858381518110610b2f57610b2f612e49565b60200260200101516105f8565b828281518110610b4e57610b4e612e49565b6020908102919091010152600101610af7565b509392505050565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010098163003610bb15760405162461bcd60e51b815260040161065e90612d96565b7f00000000000000000000000001670010000000000000000000000000000100986001600160a01b0316610be36114d6565b6001600160a01b031614610c095760405162461bcd60e51b815260040161065e90612de2565b610c12826114f1565b610c1e828260016114f9565b5050565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100981614610cc15760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161065e565b505f5160206134075f395f51905f525b90565b610cdc611667565b610a485f6116c1565b60655433906001600160a01b03168114610d535760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161065e565b610919816116c1565b610d7060c954610100900460ff1660021490565b15610d8e5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610a48336001611663565b5f610de46114d6565b905090565b61016180546106df90612d10565b610c1e3383836116da565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015610e77573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9b9190612e2e565b9392505050565b610eb660c954610100900460ff1660021490565b15610ed45760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610ef0816001610e02565b6001600160a01b0316336001600160a01b031614610f21576040516395383ea160e01b815260040160405180910390fd5b6002610f2f60c95460ff1690565b60ff1603610f505760405163dfc60d8560e01b815260040160405180910390fd5b610f5a60026117ba565b610f653384846117d0565b610f6f60016117ba565b505050565b5f54610100900460ff1615808015610f9257505f54600160ff909116105b80610fab5750303b158015610fab57505f5460ff166001145b61100e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161065e565b5f805460ff19166001179055801561102f575f805461ff0019166101001790555b6110398787611964565b611042886119a0565b61106361105e888860405180602001604052805f8152506119fe565b611a48565b61015f80546001600160a01b0319166001600160a01b038916179055610160869055610161611093858783612ea1565b506101626110a2838583612ea1565b5080156110e8575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b61110660c954610100900460ff1660021490565b156111245760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b611140816001610e02565b6001600160a01b0316336001600160a01b031614611171576040516395383ea160e01b815260040160405180910390fd5b600261117f60c95460ff1690565b60ff16036111a05760405163dfc60d8560e01b815260040160405180910390fd5b6111aa60026117ba565b611224868686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050604080516020808a028281018201909352898252909350899250889182918501908490808284375f92018290525060408051602081019091529081529250611a77915050565b61122e60016117ba565b505050505050565b6001600160a01b0385163314806112525750611252853361058c565b61126e5760405162461bcd60e51b815260040161065e90612d48565b6108368585858585611bf9565b611283611667565b606580546001600160a01b0383166001600160a01b031990911681179091556112b46033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b03198216636cdb3d1360e11b148061131c57506001600160e01b031982166303a24d0760e21b145b8061068c57506301ffc9a760e01b6001600160e01b031983161461068c565b815183511461135c5760405162461bcd60e51b815260040161065e90612f5a565b6001600160a01b0384166113825760405162461bcd60e51b815260040161065e90612fa2565b33611391818787878787611d33565b5f5b8451811015611470575f8582815181106113af576113af612e49565b602002602001015190505f8583815181106113cc576113cc612e49565b6020908102919091018101515f84815261012d835260408082206001600160a01b038e16835290935291909120549091508181101561141d5760405162461bcd60e51b815260040161065e90612fe7565b5f83815261012d602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061145c908490613045565b909155505060019093019250611393915050565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516114c0929190613058565b60405180910390a461122e818787878787611d73565b5f5160206134075f395f51905f52546001600160a01b031690565b610919611667565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561152c57610f6f83611ecd565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611586575060408051601f3d908101601f1916820190925261158391810190613085565b60015b6115e95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161065e565b5f5160206134075f395f51905f5281146116575760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161065e565b50610f6f838383611f68565b610c1e5b6033546001600160a01b03163314610a485760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065e565b606580546001600160a01b031916905561091981611f92565b816001600160a01b0316836001600160a01b03160361174d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b606482015260840161065e565b6001600160a01b038381165f81815261012e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60c9805460ff191660ff92909216919091179055565b6001600160a01b0383166118325760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b606482015260840161065e565b335f61183d84611fe3565b90505f61184984611fe3565b905061186783875f858560405180602001604052805f815250611d33565b5f85815261012d602090815260408083206001600160a01b038a168452909152902054848110156118e65760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b606482015260840161065e565b5f86815261012d602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091525f90525b50505050505050565b6001600160a01b0382161580611978575080155b8061198257504681145b15610c1e5760405163c118d2f360e01b815260040160405180910390fd5b5f54610100900460ff166119c65760405162461bcd60e51b815260040161065e9061309c565b6119ce61202c565b6119ec6001600160a01b038216156119e657816116c1565b336116c1565b5060c9805461ff001916610100179055565b6060611a14846001600160a01b03166014612052565b611a1d846121e7565b83604051602001611a30939291906130e7565b60405160208183030381529060405290509392505050565b5f54610100900460ff16611a6e5760405162461bcd60e51b815260040161065e9061309c565b61091981612276565b6001600160a01b038416611ad75760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b606482015260840161065e565b8151835114611af85760405162461bcd60e51b815260040161065e90612f5a565b33611b07815f87878787611d33565b5f5b8451811015611b9357838181518110611b2457611b24612e49565b602002602001015161012d5f878481518110611b4257611b42612e49565b602002602001015181526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f828254611b869190613045565b9091555050600101611b09565b50846001600160a01b03165f6001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611be3929190613058565b60405180910390a4610836815f87878787611d73565b6001600160a01b038416611c1f5760405162461bcd60e51b815260040161065e90612fa2565b335f611c2a85611fe3565b90505f611c3685611fe3565b9050611c46838989858589611d33565b5f86815261012d602090815260408083206001600160a01b038c16845290915290205485811015611c895760405162461bcd60e51b815260040161065e90612fe7565b5f87815261012d602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611cc8908490613045565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611d28848a8a8a8a8a6122a5565b505050505050505050565b611d4760c954610100900460ff1660021490565b15611d655760405163bae6e2a960e01b815260040160405180910390fd5b611d6e8461235f565b61122e565b6001600160a01b0384163b1561122e5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611db7908990899088908890889060040161316f565b6020604051808303815f875af1925050508015611df1575060408051601f3d908101601f19168201909252611dee918101906131cc565b60015b611e9d57611dfd6131e7565b806308c379a003611e365750611e116131ff565b80611e1c5750611e38565b8060405162461bcd60e51b815260040161065e9190612682565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161065e565b6001600160e01b0319811663bc197c8160e01b1461195b5760405162461bcd60e51b815260040161065e90613279565b6001600160a01b0381163b611f3a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161065e565b5f5160206134075f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611f7183612388565b5f82511180611f7d5750805b15610f6f57611f8c83836123c7565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f8151811061201b5761201b612e49565b602090810291909101015292915050565b5f54610100900460ff16610a485760405162461bcd60e51b815260040161065e9061309c565b60605f6120608360026132c1565b61206b906002613045565b6001600160401b03811115612082576120826126ab565b6040519080825280601f01601f1916602001820160405280156120ac576020820181803683370190505b509050600360fc1b815f815181106120c6576120c6612e49565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106120f4576120f4612e49565b60200101906001600160f81b03191690815f1a9053505f6121168460026132c1565b612121906001613045565b90505b6001811115612198576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061215557612155612e49565b1a60f81b82828151811061216b5761216b612e49565b60200101906001600160f81b03191690815f1a90535060049490941c93612191816132d8565b9050612124565b508315610e9b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161065e565b60605f6121f3836123ec565b60010190505f816001600160401b03811115612211576122116126ab565b6040519080825280601f01601f19166020018201604052801561223b576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461224557509392505050565b5f54610100900460ff1661229c5760405162461bcd60e51b815260040161065e9061309c565b610919816124c3565b6001600160a01b0384163b1561122e5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906122e990899089908890889088906004016132ed565b6020604051808303815f875af1925050508015612323575060408051601f3d908101601f19168201909252612320918101906131cc565b60015b61232f57611dfd6131e7565b6001600160e01b0319811663f23a6e6160e01b1461195b5760405162461bcd60e51b815260040161065e90613279565b306001600160a01b0382160361091957604051630c292c9d60e21b815260040160405180910390fd5b61239181611ecd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610e9b8383604051806060016040528060278152602001613427602791396124d0565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061242a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612456576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061247457662386f26fc10000830492506010015b6305f5e100831061248c576305f5e100830492506008015b61271083106124a057612710830492506004015b606483106124b2576064830492506002015b600a831061068c5760010192915050565b61012f610c1e8282613331565b60605f5f856001600160a01b0316856040516124ec91906133eb565b5f60405180830381855af49150503d805f8114612524576040519150601f19603f3d011682016040523d82523d5f602084013e612529565b606091505b509150915061253a86838387612544565b9695505050505050565b606083156125b25782515f036125ab576001600160a01b0385163b6125ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161065e565b50816109be565b6109be8383815115611e1c5781518083602001fd5b6001600160a01b0381168114610919575f5ffd5b5f5f604083850312156125ec575f5ffd5b82356125f7816125c7565b946020939093013593505050565b6001600160e01b031981168114610919575f5ffd5b5f6020828403121561262a575f5ffd5b8135610e9b81612605565b5f5b8381101561264f578181015183820152602001612637565b50505f910152565b5f815180845261266e816020860160208601612635565b601f01601f19169290920160200192915050565b602081525f610e9b6020830184612657565b5f602082840312156126a4575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f191681016001600160401b03811182821017156126e4576126e46126ab565b6040525050565b5f6001600160401b03821115612703576127036126ab565b5060051b60200190565b5f82601f83011261271c575f5ffd5b8135612727816126eb565b60405161273482826126bf565b80915082815260208101915060208360051b860101925085831115612757575f5ffd5b602085015b8381101561277457803583526020928301920161275c565b5095945050505050565b5f82601f83011261278d575f5ffd5b81356001600160401b038111156127a6576127a66126ab565b6040516127bd601f8301601f1916602001826126bf565b8181528460208386010111156127d1575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a08688031215612801575f5ffd5b853561280c816125c7565b9450602086013561281c816125c7565b935060408601356001600160401b03811115612836575f5ffd5b6128428882890161270d565b93505060608601356001600160401b0381111561285d575f5ffd5b6128698882890161270d565b92505060808601356001600160401b03811115612884575f5ffd5b6128908882890161277e565b9150509295509295909350565b5f602082840312156128ad575f5ffd5b8135610e9b816125c7565b803580151581146128c7575f5ffd5b919050565b5f5f5f606084860312156128de575f5ffd5b83356001600160401b03811681146128f4575f5ffd5b925060208401359150612909604085016128b8565b90509250925092565b5f5f60408385031215612923575f5ffd5b82356001600160401b03811115612938575f5ffd5b8301601f81018513612948575f5ffd5b8035612953816126eb565b60405161296082826126bf565b80915082815260208101915060208360051b850101925087831115612983575f5ffd5b6020840193505b828410156129ae57833561299d816125c7565b82526020938401939091019061298a565b945050505060208301356001600160401b038111156129cb575f5ffd5b6129d78582860161270d565b9150509250929050565b5f8151808452602084019350602083015f5b82811015612a115781518652602095860195909101906001016129f3565b5093949350505050565b602081525f610e9b60208301846129e1565b5f5f60408385031215612a3e575f5ffd5b8235612a49816125c7565b915060208301356001600160401b03811115612a63575f5ffd5b6129d78582860161277e565b5f5f60408385031215612a80575f5ffd5b8235612a8b816125c7565b9150612a99602084016128b8565b90509250929050565b5f5f60408385031215612ab3575f5ffd5b82359150612a99602084016128b8565b5f5f60408385031215612ad4575f5ffd5b50508035926020909101359150565b5f5f83601f840112612af3575f5ffd5b5081356001600160401b03811115612b09575f5ffd5b602083019150836020828501011115612b20575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a031215612b3d575f5ffd5b8735612b48816125c7565b96506020880135612b58816125c7565b95506040880135945060608801356001600160401b03811115612b79575f5ffd5b612b858a828b01612ae3565b90955093505060808801356001600160401b03811115612ba3575f5ffd5b612baf8a828b01612ae3565b989b979a50959850939692959293505050565b5f5f83601f840112612bd2575f5ffd5b5081356001600160401b03811115612be8575f5ffd5b6020830191508360208260051b8501011115612b20575f5ffd5b5f5f5f5f5f60608688031215612c16575f5ffd5b8535612c21816125c7565b945060208601356001600160401b03811115612c3b575f5ffd5b612c4788828901612bc2565b90955093505060408601356001600160401b03811115612c65575f5ffd5b612c7188828901612bc2565b969995985093965092949392505050565b5f5f60408385031215612c93575f5ffd5b8235612c9e816125c7565b91506020830135612cae816125c7565b809150509250929050565b5f5f5f5f5f60a08688031215612ccd575f5ffd5b8535612cd8816125c7565b94506020860135612ce8816125c7565b9350604086013592506060860135915060808601356001600160401b03811115612884575f5ffd5b600181811c90821680612d2457607f821691505b602082108103612d4257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215612e3e575f5ffd5b8151610e9b816125c7565b634e487b7160e01b5f52603260045260245ffd5b601f821115610f6f57805f5260205f20601f840160051c81016020851015612e825750805b601f840160051c820191505b81811015610836575f8155600101612e8e565b6001600160401b03831115612eb857612eb86126ab565b612ecc83612ec68354612d10565b83612e5d565b5f601f841160018114612efd575f8515612ee65750838201355b5f19600387901b1c1916600186901b178355610836565b5f83815260208120601f198716915b82811015612f2c5786850135825560209485019460019092019101612f0c565b5086821015612f48575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561068c5761068c613031565b604081525f61306a60408301856129e1565b828103602084015261307c81856129e1565b95945050505050565b5f60208284031215613095575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6832ba3432b932bab69d60b91b81525f845161310a816009850160208901612635565b600160fe1b600991840191820152845161312b81600a840160208901612635565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b60018201528351613162816013840160208801612635565b0160130195945050505050565b6001600160a01b0386811682528516602082015260a0604082018190525f9061319a908301866129e1565b82810360608401526131ac81866129e1565b905082810360808401526131c08185612657565b98975050505050505050565b5f602082840312156131dc575f5ffd5b8151610e9b81612605565b5f60033d1115610cd15760045f5f3e505f5160e01c90565b5f60443d101561320c5790565b6040513d600319016004823e80513d60248201116001600160401b038211171561323557505090565b80820180516001600160401b03811115613250575050505090565b3d840160031901828201602001111561326a575050505090565b610b61602082850101856126bf565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b808202811582820484141761068c5761068c613031565b5f816132e6576132e6613031565b505f190190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f9061332690830184612657565b979650505050505050565b81516001600160401b0381111561334a5761334a6126ab565b61335e816133588454612d10565b84612e5d565b6020601f821160018114613390575f83156133795750848201515b5f19600385901b1c1916600184901b178455610836565b5f84815260208120601f198516915b828110156133bf578785015182556020948501946001909201910161339f565b50848210156133dc57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516133fc818460208701612635565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220fa27574d890532c9d1a5cba0477d06238c6edf8eada4dc81ccfb215e2dcedc7a64736f6c634300081b0033", "balance": "0x0" }, "0x0167001000000000000000000000000000000005": { @@ -249,7 +245,7 @@ "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x6080604052600436106101c5575f3560e01c806379ba5097116100f2578063a86f9d9e11610092578063e30c397811610062578063e30c39781461052d578063f09a40161461054a578063f2fde38b14610569578063fe9fbb8014610588575f5ffd5b8063a86f9d9e1461048e578063ce9d0820146104ad578063dfc8ff1d146104cc578063e07baba61461050a575f5ffd5b80638da5cb5b116100cd5780638da5cb5b14610414578063910af6ed1461043157806391f3f74b146104505780639b527cfa1461046f575f5ffd5b806379ba5097146103d85780638456cb59146103ec5780638abf607714610400575f5ffd5b80633eb6b8cf1161016857806352d1902d1161013857806352d1902d146103715780635c975abb1461038557806366ca2bc0146103a5578063715018a6146103c4575f5ffd5b80633eb6b8cf146102fe5780633f4ba83a1461031d5780634f1ef286146103315780634f90a67414610344575f5ffd5b8063355bcc3d116101a3578063355bcc3d146102325780633659cfe6146102895780633ab76e9f146102a85780633ced0e08146102df575f5ffd5b80632d1fb389146101c95780633075db56146101ea57806332676bc614610213575b5f5ffd5b3480156101d4575f5ffd5b506101e86101e3366004613523565b6105b6565b005b3480156101f5575f5ffd5b506101fe61065c565b60405190151581526020015b60405180910390f35b34801561021e575f5ffd5b506101fe61022d366004613556565b610674565b34801561023d575f5ffd5b5061027161024c366004613596565b60fb60209081525f92835260408084209091529082529020546001600160401b031681565b6040516001600160401b03909116815260200161020a565b348015610294575f5ffd5b506101e86102a33660046135b0565b61068a565b3480156102b3575f5ffd5b506097546102c7906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156102ea575f5ffd5b506101fe6102f93660046135cb565b61075a565b348015610309575f5ffd5b506102c761031836600461360c565b6107a1565b348015610328575f5ffd5b506101e86107b7565b6101e861033f36600461371c565b6107cb565b34801561034f575f5ffd5b5061036361035e3660046135cb565b610884565b60405190815260200161020a565b34801561037c575f5ffd5b506103636108ca565b348015610390575f5ffd5b506101fe60c954610100900460ff1660021490565b3480156103b0575f5ffd5b506103636103bf366004613768565b61097b565b3480156103cf575f5ffd5b506101e8610987565b3480156103e3575f5ffd5b506101e8610998565b3480156103f7575f5ffd5b506101e8610a0f565b34801561040b575f5ffd5b506102c7610a22565b34801561041f575f5ffd5b506033546001600160a01b03166102c7565b34801561043c575f5ffd5b5061036361044b36600461377f565b610a30565b34801561045b575f5ffd5b5061036361046a366004613814565b610b0b565b34801561047a575f5ffd5b50610363610489366004613850565b610b76565b348015610499575f5ffd5b506102c76104a8366004613880565b610ba2565b3480156104b8575f5ffd5b506101e86104c736600461377f565b610bae565b3480156104d7575f5ffd5b506104eb6104e6366004613850565b610bc4565b604080516001600160401b03909316835260208301919091520161020a565b348015610515575f5ffd5b5060c9546201000090046001600160401b0316610271565b348015610538575f5ffd5b506065546001600160a01b03166102c7565b348015610555575f5ffd5b506101e86105643660046138a1565b610c58565b348015610574575f5ffd5b506101e86105833660046135b0565b610d67565b348015610593575f5ffd5b506101fe6105a23660046135b0565b60fc6020525f908152604090205460ff1681565b6105be610dd8565b6001600160a01b0382165f90815260fc602052604090205481151560ff9091161515036105fe576040516398f26f4560e01b815260040160405180910390fd5b6001600160a01b0382165f81815260fc6020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b5f600261066b60c95460ff1690565b60ff1614905090565b5f61067f8383610e32565b151590505b92915050565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000051630036106db5760405162461bcd60e51b81526004016106d2906138d8565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000056001600160a01b031661070d610e94565b6001600160a01b0316146107335760405162461bcd60e51b81526004016106d290613924565b61073c81610eaf565b604080515f8082526020820190925261075791839190610eb7565b50565b5f8180820361077c5760405163ec73295960e01b815260040160405180910390fd5b5f610788878787610b76565b9050836107953083610e32565b14979650505050505050565b5f6107ad848484611021565b90505b9392505050565b6107bf61107d565b6107c9335f61110d565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000051630036108135760405162461bcd60e51b81526004016106d2906138d8565b7f00000000000000000000000001670010000000000000000000000000000000056001600160a01b0316610845610e94565b6001600160a01b03161461086b5760405162461bcd60e51b81526004016106d290613924565b61087482610eaf565b61088082826001610eb7565b5050565b335f90815260fc602052604081205460ff166108b357604051631f67751f60e01b815260040160405180910390fd5b6108bf85858585611126565b90505b949350505050565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000516146109695760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d2565b505f516020613eb85f395f51905f5290565b5f610684338384611208565b61098f610dd8565b6107c95f6112e1565b60655433906001600160a01b03168114610a065760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106d2565b610757816112e1565b610a176112fa565b6107c933600161110d565b5f610a2b610e94565b905090565b5f610a4560c954610100900460ff1660021490565b15610a635760405163bae6e2a960e01b815260040160405180910390fd5b6002610a7160c95460ff1690565b60ff1603610a925760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660021790555f610aaf8787878787600161136b565b90505f5b8151811015610af257610ade828281518110610ad157610ad1613970565b6020026020010151611827565b610ae89084613998565b9250600101610ab3565b505060c9805460ff191660011790555b95945050505050565b6040516514d251d3905360d21b60208201526001600160c01b031960c085901b1660268201526bffffffffffffffffffffffff19606084901b16602e820152604281018290525f906062015b6040516020818303038152906040528051906020012090509392505050565b604080516001600160401b03808616602083015291810184905290821660608201525f90608001610b57565b5f6107b0468484611021565b610bbc85858585855f61136b565b505050505050565b5f5f826001600160401b03165f03610c00576001600160401b038086165f90815260fb6020908152604080832088845290915290205416610c02565b825b91506001600160401b03821615610c50575f610c1f868685610b76565b9050610c2b3082610e32565b91505f829003610c4e5760405163738afa0560e01b815260040160405180910390fd5b505b935093915050565b5f54610100900460ff1615808015610c7657505f54600160ff909116105b80610c8f5750303b158015610c8f57505f5460ff166001145b610cf25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d2565b5f805460ff191660011790558015610d13575f805461ff0019166101001790555b610d1d838361196b565b8015610d62575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610d6f610dd8565b606580546001600160a01b0383166001600160a01b03199091168117909155610da06033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146107c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d2565b5f826001600160a01b038116610e5b5760405163538ba4f960e01b815260040160405180910390fd5b825f819003610e7d5760405163ec73295960e01b815260040160405180910390fd5b5f610e89468787610b0b565b549695505050505050565b5f516020613eb85f395f51905f52546001600160a01b031690565b610757610dd8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610eea57610d62836119a5565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f44575060408051601f3d908101601f19168201909252610f41918101906139ab565b60015b610fa75760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106d2565b5f516020613eb85f395f51905f5281146110155760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106d2565b50610d62838383611a40565b5f61102c8484611a6a565b9050818061104257506001600160a01b03811615155b8484909161107457604051632b0d65db60e01b81526001600160401b03909216600483015260248201526044016106d2565b50509392505050565b61109160c954610100900460ff1660021490565b6110ae5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b5f611132858585610b76565b905061113f308284611208565b506001600160401b038581165f90815260fb60209081526040808320888452909152902054818516911610156111a9576001600160401b038581165f90815260fb602090815260408083208884529091529020805467ffffffffffffffff19169185169190911790555b83836001600160401b0316866001600160401b03167fde247c825b1fb2d7ff9e0e771cba6f9e757ad04479fcdc135d88ae91fd50b37d85856040516111f8929190918252602082015260400190565b60405180910390a4949350505050565b5f836001600160a01b0381166112315760405163538ba4f960e01b815260040160405180910390fd5b835f8190036112535760405163ec73295960e01b815260040160405180910390fd5b835f8190036112755760405163ec73295960e01b815260040160405180910390fd5b611280468888610b0b565b858155604080516001600160a01b038a16815260208101899052908101829052606081018790529094507f0ad2d108660a211f47bf7fb43a0443cae181624995d3d42b88ee6879d200e9739060800160405180910390a15050509392505050565b606580546001600160a01b031916905561075781611b0c565b61130e60c954610100900460ff1660021490565b1561132c5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611103565b6060856001600160a01b0381166113955760405163538ba4f960e01b815260040160405180910390fd5b855f8190036113b75760405163ec73295960e01b815260040160405180910390fd5b5f6113c486880188613a7f565b905080515f036113e757604051630b92daef60e21b815260040160405180910390fd5b5f600182516113f69190613bc5565b6001600160401b0381111561140d5761140d613645565b604051908082528060200260200182016040528015611436578160200160208202803683370190505b50905085156114c95781516001600160401b0381111561145857611458613645565b6040519080825280602002602001820160405280156114c557816020015b6114b26040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c082015290565b8152602001906001900390816114765790505b5094505b8a8a8a805f6114ea856d7369676e616c5f7365727669636560901b836107a1565b9050306001600160a01b0382160361151557604051637556223560e11b815260040160405180910390fd5b61154d6040805160c0810182525f80825260208201819052918101829052906060820190815260200160608152602001606081525090565b5f5f5f5f5b8b518110156117db578b818151811061156d5761156d613970565b602002602001015194505f5b818110156115d757855f01516001600160401b03168c82815181106115a0576115a0613970565b60200260200101516001600160401b0316036115cf576040516348362c2760e11b815260040160405180910390fd5b600101611579565b506115e68a8a8a8a898b611b5d565b93508a518114915081156116265784516001600160401b0316461461161e576040516338bf822760e21b815260040160405180910390fd5b3095506116d1565b845f01518b828151811061163c5761163c613970565b6001600160401b039283166020918202929092010152855116158061166a575084516001600160401b031646145b1561168857604051637556223560e11b815260040160405180910390fd5b84516116a6906d7369676e616c5f7365727669636560901b5f6107a1565b9550306001600160a01b038716036116d157604051637556223560e11b815260040160405180910390fd5b608085015151151592508f15611765576040518060e00160405280866040015181526020018581526020018b6001600160401b0316815260200186602001516001600160401b03168152602001841515815260200183151581526020018660600151600381111561174457611744613bd8565b8152508f828151811061175957611759613970565b60200260200101819052505b6117c08a84611794577fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf56117b6565b7f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1695b8760200151610b76565b604086015186519b5096995097509495508794600101611552565b508515806117f257506117ee3088610e32565b8614155b156118105760405163738afa0560e01b815260040160405180910390fd5b505050505050505050505050509695505050505050565b5f8060038360c00151600381111561184157611841613bd8565b1480611862575060028360c00151600381111561186057611860613bd8565b145b9050808015611872575082608001515b801561188057508260a00151155b156118c257600191506118c083604001517f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1698560600151865f0151611126565b505b5f60038460c0015160038111156118db576118db613bd8565b14806118fc575060018460c0015160038111156118fa576118fa613bd8565b145b9050808015611918575083608001518061191857508360a00151155b1561196457611928600184613998565b925061196284604001517fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf586606001518760200151611126565b505b5050919050565b806001600160a01b0381166119935760405163538ba4f960e01b815260040160405180910390fd5b61199c83611bfc565b610d6282611c5a565b6001600160a01b0381163b611a125760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106d2565b5f516020613eb85f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611a4983611cca565b5f82511180611a555750805b15610d6257611a648383611d09565b50505050565b6097545f906001600160a01b031680611a9657604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611ae8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c29190613bec565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f856001600160a01b038116611b865760405163538ba4f960e01b815260040160405180910390fd5b855f819003611ba85760405163ec73295960e01b815260040160405180910390fd5b855f819003611bca5760405163ec73295960e01b815260040160405180910390fd5b611bee866040015186611bde8d8d8d610b0b565b8a8a608001518b60a00151611d2e565b9a9950505050505050505050565b5f54610100900460ff16611c225760405162461bcd60e51b81526004016106d290613c07565b611c2a611e3b565b611c486001600160a01b03821615611c4257816112e1565b336112e1565b5060c9805461ff001916610100179055565b5f54610100900460ff16611c805760405162461bcd60e51b81526004016106d290613c07565b6001600160401b03461115611ca85760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b611cd3816119a5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606107b08383604051806060016040528060278152602001613ed860279139611e61565b5f82515f14611dd6576040516bffffffffffffffffffffffff19606088901b1660208201525f90611d7290603401604051602081830303815290604052858a611ed5565b905080515f03611d9557604051630414cd5b60e31b815260040160405180910390fd5b5f611d9f82611eee565b9050611dc481600281518110611db757611db7613970565b6020026020010151611f01565b611dcd90613c52565b92505050611dd9565b50855b5f611e1086604051602001611df091815260200190565b60408051601f19818403018152919052611e0987611f80565b8585611f93565b905080611e3057604051638d9a4db360e01b815260040160405180910390fd5b509695505050505050565b5f54610100900460ff166107c95760405162461bcd60e51b81526004016106d290613c07565b60605f5f856001600160a01b031685604051611e7d9190613c9a565b5f60405180830381855af49150503d805f8114611eb5576040519150601f19603f3d011682016040523d82523d5f602084013e611eba565b606091505b5091509150611ecb86838387611fac565b9695505050505050565b60605f611ee185612024565b9050610b02818585612056565b6060610684611efc836128c4565b612916565b60605f5f5f611f0f85612a94565b919450925090505f816001811115611f2957611f29613bd8565b14611f47576040516307fe6cb960e21b815260040160405180910390fd5b611f518284613998565b855114611f7157604051630b8aa6f760e31b815260040160405180910390fd5b610b0285602001518484612d77565b6060610684611f8e83612e07565b612f1b565b5f5f611f9e86612024565b9050611ecb81868686612f73565b6060831561201a5782515f03612013576001600160a01b0385163b6120135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d2565b50816108c2565b6108c28383612f99565b6060818051906020012060405160200161204091815260200190565b6040516020818303038152906040529050919050565b60605f8451116120a05760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016106d2565b5f6120aa84612fc3565b90505f6120b6866130a6565b90505f846040516020016120cc91815260200190565b60408051601f1981840301815291905290505f805b845181101561286d575f8582815181106120fd576120fd613970565b60200260200101519050845183111561216f5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016106d2565b825f0361220d57805180516020918201206040516121bc9261219692910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6122085760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016106d2565b612303565b80515160201161229357805180516020918201206040516122379261219692910190815260200190565b6122085760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016106d2565b8051845160208087019190912082519190920120146123035760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016106d2565b61230f60106001613998565b816020015151036124a757845183036124415761233c8160200151601081518110611db757611db7613970565b96505f8751116123b45760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016106d2565b600186516123c29190613bc5565b82146124365760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016106d2565b5050505050506107b0565b5f85848151811061245457612454613970565b602001015160f81c60f81b60f81c90505f82602001518260ff168151811061247e5761247e613970565b6020026020010151905061249181613107565b955061249e600186613998565b94505050612864565b60028160200151510361280b575f6124be8261312b565b90505f815f815181106124d3576124d3613970565b016020015160f81c90505f6124e9600283613cc9565b6124f4906002613cea565b90505f612504848360ff1661314e565b90505f6125118a8961314e565b90505f61251e8383613183565b9050808351146125965760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016106d2565b60ff8516600214806125ab575060ff85166003145b1561274b57808251146126265760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016106d2565b6126408760200151600181518110611db757611db7613970565b9c505f8d51116126b85760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016106d2565b60018c516126c69190613bc5565b881461273a5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016106d2565b5050505050505050505050506107b0565b60ff8516158061275e575060ff85166001145b1561279d5761278a876020015160018151811061277d5761277d613970565b6020026020010151613107565b9950612796818a613998565b9850612800565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016106d2565b505050505050612864565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016106d2565b506001016120e1565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016106d2565b604080518082019091525f808252602082015281515f036128f857604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60605f5f5f61292485612a94565b91945092509050600181600181111561293f5761293f613bd8565b1461295d576040516325ce355f60e11b815260040160405180910390fd5b84516129698385613998565b1461298757604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b604080518082019091525f808252602082015281526020019060019003908161299e5790505093505f835b8651811015612a88575f5f612a0d6040518060400160405280858c5f01516129f19190613bc5565b8152602001858c60200151612a069190613998565b9052612a94565b509150915060405180604001604052808383612a299190613998565b8152602001848b60200151612a3e9190613998565b815250888581518110612a5357612a53613970565b6020908102919091010152612a69600185613998565b9350612a758183613998565b612a7f9084613998565b925050506129c9565b50845250919392505050565b5f5f5f835f01515f03612aba57604051635ab458fb60e01b815260040160405180910390fd5b602084015180515f1a607f8111612adc575f60015f9450945094505050612d70565b60b78111612b71575f612af0608083613bc5565b905080875f015111612b15576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015612b415750600160ff1b6001600160f81b03198216105b15612b5f5760405163babb01dd60e01b815260040160405180910390fd5b506001955093505f9250612d70915050565b60bf8111612c4f575f612b8560b783613bc5565b905080875f015111612baa576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612bda5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612c095760405163babb01dd60e01b815260040160405180910390fd5b612c138184613998565b895111612c33576040516366c9448560e01b815260040160405180910390fd5b612c3e836001613998565b975095505f9450612d709350505050565b60f78111612c99575f612c6360c083613bc5565b905080875f015111612c88576040516366c9448560e01b815260040160405180910390fd5b600195509350849250612d70915050565b5f612ca560f783613bc5565b905080875f015111612cca576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612cfa5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612d295760405163babb01dd60e01b815260040160405180910390fd5b612d338184613998565b895111612d53576040516366c9448560e01b815260040160405180910390fd5b612d5e836001613998565b9750955060019450612d709350505050565b9193909250565b6060816001600160401b03811115612d9157612d91613645565b6040519080825280601f01601f191660200182016040528015612dbb576020820181803683370190505b50905081156107b0575f612dcf8486613998565b9050602082015f5b84811015612def578281015182820152602001612dd7565b84811115612dfd575f858301525b5050509392505050565b60605f82604051602001612e1d91815260200190565b60408051601f1981840301815291905290505f5b6020811015612e6957818181518110612e4c57612e4c613970565b01602001516001600160f81b0319165f03612e6957600101612e31565b612e74816020613bc5565b6001600160401b03811115612e8b57612e8b613645565b6040519080825280601f01601f191660200182016040528015612eb5576020820181803683370190505b5092505f5b8351811015611962578282612ece81613d03565b935081518110612ee057612ee0613970565b602001015160f81c60f81b848281518110612efd57612efd613970565b60200101906001600160f81b03191690815f1a905350600101612eba565b606081516001148015612f4757506080825f81518110612f3d57612f3d613970565b016020015160f81c105b15612f50575090565b612f5c82516080613206565b82604051602001612040929190613d1b565b919050565b5f6108bf84612f83878686612056565b8051602091820120825192909101919091201490565b815115612fa95781518083602001fd5b8060405162461bcd60e51b81526004016106d29190613d49565b8051606090806001600160401b03811115612fe057612fe0613645565b60405190808252806020026020018201604052801561302557816020015b6040805180820190915260608082526020820152815260200190600190039081612ffe5790505b5091505f5b8181101561196457604051806040016040528085838151811061304f5761304f613970565b6020026020010151815260200161307e86848151811061307157613071613970565b6020026020010151611eee565b81525083828151811061309357613093613970565b602090810291909101015260010161302a565b606080604051905082518060011b603f8101601f191683016040528083525060208401602083015f5b838110156130fc578060011b8201818401515f1a8060041c8253600f8116600183015350506001016130cf565b509295945050505050565b60606020825f0151106131225761311d82611f01565b610684565b610684826133ab565b606061068461314983602001515f81518110611db757611db7613970565b6130a6565b60608251821061316c575060408051602081019091525f8152610684565b6107b0838384865161317e9190613bc5565b6133bf565b5f5f8251845110613195578251613198565b83515b90505b80821080156131ef57508282815181106131b7576131b7613970565b602001015160f81c60f81b6001600160f81b0319168483815181106131de576131de613970565b01602001516001600160f81b031916145b156131ff5781600101915061319b565b5092915050565b6060603883101561326a576040805160018082528183019092529060208201818036833701905050905061323a8284613d7b565b60f81b815f8151811061324f5761324f613970565b60200101906001600160f81b03191690815f1a905350610684565b5f60015b6132788186613d94565b1561329e578161328781613d03565b9250613297905061010082613da7565b905061326e565b6132a9826001613998565b6001600160401b038111156132c0576132c0613645565b6040519080825280601f01601f1916602001820160405280156132ea576020820181803683370190505b5092506132f78483613d7b565b613302906037613d7b565b60f81b835f8151811061331757613317613970565b60200101906001600160f81b03191690815f1a905350600190505b8181116133a3576101006133468284613bc5565b61335290610100613e99565b61335c9087613d94565b6133669190613ea4565b60f81b83828151811061337b5761337b613970565b60200101906001600160f81b03191690815f1a9053508061339b81613d03565b915050613332565b505092915050565b606061068482602001515f845f0151612d77565b60608182601f0110156134055760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d2565b8282840110156134485760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d2565b8183018451101561348f5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016106d2565b6060821580156134ad5760405191505f8252602082016040526134f7565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156134e65780518352602092830192016134ce565b5050858452601f01601f1916604052505b50949350505050565b6001600160a01b0381168114610757575f5ffd5b80358015158114612f6e575f5ffd5b5f5f60408385031215613534575f5ffd5b823561353f81613500565b915061354d60208401613514565b90509250929050565b5f5f60408385031215613567575f5ffd5b823561357281613500565b946020939093013593505050565b80356001600160401b0381168114612f6e575f5ffd5b5f5f604083850312156135a7575f5ffd5b61357283613580565b5f602082840312156135c0575f5ffd5b81356107b081613500565b5f5f5f5f608085870312156135de575f5ffd5b6135e785613580565b9350602085013592506135fc60408601613580565b9396929550929360600135925050565b5f5f5f6060848603121561361e575f5ffd5b61362784613580565b92506020840135915061363c60408501613514565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b038111828210171561367b5761367b613645565b60405290565b604051601f8201601f191681016001600160401b03811182821017156136a9576136a9613645565b604052919050565b5f82601f8301126136c0575f5ffd5b81356001600160401b038111156136d9576136d9613645565b6136ec601f8201601f1916602001613681565b818152846020838601011115613700575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561372d575f5ffd5b823561373881613500565b915060208301356001600160401b03811115613752575f5ffd5b61375e858286016136b1565b9150509250929050565b5f60208284031215613778575f5ffd5b5035919050565b5f5f5f5f5f60808688031215613793575f5ffd5b61379c86613580565b945060208601356137ac81613500565b93506040860135925060608601356001600160401b038111156137cd575f5ffd5b8601601f810188136137dd575f5ffd5b80356001600160401b038111156137f2575f5ffd5b886020828401011115613803575f5ffd5b959894975092955050506020019190565b5f5f5f60608486031215613826575f5ffd5b61382f84613580565b9250602084013561383f81613500565b929592945050506040919091013590565b5f5f5f60608486031215613862575f5ffd5b61386b84613580565b92506020840135915061363c60408501613580565b5f5f60408385031215613891575f5ffd5b8235915061354d60208401613514565b5f5f604083850312156138b2575f5ffd5b82356138bd81613500565b915060208301356138cd81613500565b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561068457610684613984565b5f602082840312156139bb575f5ffd5b5051919050565b5f6001600160401b038211156139da576139da613645565b5060051b60200190565b803560048110612f6e575f5ffd5b5f82601f830112613a01575f5ffd5b8135613a14613a0f826139c2565b613681565b8082825260208201915060208360051b860101925085831115613a35575f5ffd5b602085015b83811015613a755780356001600160401b03811115613a57575f5ffd5b613a66886020838a01016136b1565b84525060209283019201613a3a565b5095945050505050565b5f60208284031215613a8f575f5ffd5b81356001600160401b03811115613aa4575f5ffd5b8201601f81018413613ab4575f5ffd5b8035613ac2613a0f826139c2565b8082825260208201915060208360051b850101925086831115613ae3575f5ffd5b602084015b83811015611e305780356001600160401b03811115613b05575f5ffd5b850160c0818a03601f19011215613b1a575f5ffd5b613b22613659565b613b2e60208301613580565b8152613b3c60408301613580565b602082015260608201356040820152613b57608083016139e4565b606082015260a08201356001600160401b03811115613b74575f5ffd5b613b838b6020838601016139f2565b60808301525060c08201356001600160401b03811115613ba1575f5ffd5b613bb08b6020838601016139f2565b60a08301525084525060209283019201613ae8565b8181038181111561068457610684613984565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215613bfc575f5ffd5b81516107b081613500565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b80516020808301519190811015613c72575f198160200360031b1b821691505b50919050565b5f5b83811015613c92578181015183820152602001613c7a565b50505f910152565b5f8251613cab818460208701613c78565b9190910192915050565b634e487b7160e01b5f52601260045260245ffd5b5f60ff831680613cdb57613cdb613cb5565b8060ff84160691505092915050565b60ff828116828216039081111561068457610684613984565b5f60018201613d1457613d14613984565b5060010190565b5f8351613d2c818460208801613c78565b835190830190613d40818360208801613c78565b01949350505050565b602081525f8251806020840152613d67816040850160208701613c78565b601f01601f19169190910160400192915050565b60ff818116838216019081111561068457610684613984565b5f82613da257613da2613cb5565b500490565b808202811582820484141761068457610684613984565b6001815b6001841115610c5057808504811115613ddd57613ddd613984565b6001841615613deb57908102905b60019390931c928002613dc2565b5f82613e0757506001610684565b81613e1357505f610684565b8160018114613e295760028114613e3357613e4f565b6001915050610684565b60ff841115613e4457613e44613984565b50506001821b610684565b5060208310610133831016604e8410600b8410161715613e72575081810a610684565b613e7e5f198484613dbe565b805f1904821115613e9157613e91613984565b029392505050565b5f6107b08383613df9565b5f82613eb257613eb2613cb5565b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a72da9d2cfe4d40cfd2a5a981964063c9828a49999cb5607ce6fc7897bbe44e764736f6c634300081b0033", + "code": "0x6080604052600436106101d0575f3560e01c806366ca2bc0116100fd57806391f3f74b11610092578063dfc8ff1d11610062578063dfc8ff1d14610543578063e30c397814610581578063f2fde38b1461059e578063fe9fbb80146105bd575f5ffd5b806391f3f74b146104c75780639b527cfa146104e6578063a86f9d9e14610505578063ce9d082014610524575f5ffd5b80638abf6077116100cd5780638abf6077146104585780638da5cb5b1461046c5780638e899f8014610489578063910af6ed146104a8575f5ffd5b806366ca2bc0146103fd578063715018a61461041c57806379ba5097146104305780638456cb5914610444575f5ffd5b80633b78c865116101735780634f1ef286116101435780634f1ef286146103895780634f90a6741461039c57806352d1902d146103c95780635c975abb146103dd575f5ffd5b80633b78c865146103185780633ced0e08146103375780633eb6b8cf146103565780633f4ba83a14610375575f5ffd5b80633075db56116101ae5780633075db561461025f57806332676bc614610283578063355bcc3d146102a25780633659cfe6146102f9575f5ffd5b806304f3bcec146101d457806319ab453c1461021f5780632d1fb38914610240575b5f5ffd5b3480156101df575f5ffd5b507f00000000000000000000000016700100000000000000000000000000000000065b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022a575f5ffd5b5061023e61023936600461363a565b6105eb565b005b34801561024b575f5ffd5b5061023e61025a366004613664565b6106fd565b34801561026a575f5ffd5b506102736107a3565b6040519015158152602001610216565b34801561028e575f5ffd5b5061027361029d366004613697565b6107bb565b3480156102ad575f5ffd5b506102e16102bc3660046136d7565b60fb60209081525f92835260408084209091529082529020546001600160401b031681565b6040516001600160401b039091168152602001610216565b348015610304575f5ffd5b5061023e61031336600461363a565b6107d1565b348015610323575f5ffd5b5061023e6103323660046136f1565b610898565b348015610342575f5ffd5b50610273610351366004613760565b61096c565b348015610361575f5ffd5b506102026103703660046137a1565b6109b3565b348015610380575f5ffd5b5061023e610a5f565b61023e6103973660046138b1565b610ae3565b3480156103a7575f5ffd5b506103bb6103b6366004613760565b610b98565b604051908152602001610216565b3480156103d4575f5ffd5b506103bb610bde565b3480156103e8575f5ffd5b5061027360c954610100900460ff1660021490565b348015610408575f5ffd5b506103bb6104173660046138fd565b610c8f565b348015610427575f5ffd5b5061023e610c9b565b34801561043b575f5ffd5b5061023e610cac565b34801561044f575f5ffd5b5061023e610d23565b348015610463575f5ffd5b50610202610da2565b348015610477575f5ffd5b506033546001600160a01b0316610202565b348015610494575f5ffd5b506102736104a33660046138fd565b610db0565b3480156104b3575f5ffd5b506103bb6104c2366004613914565b610dc1565b3480156104d2575f5ffd5b506103bb6104e13660046139a9565b610e9c565b3480156104f1575f5ffd5b506103bb6105003660046139e5565b610f07565b348015610510575f5ffd5b5061020261051f366004613a15565b610f33565b34801561052f575f5ffd5b5061023e61053e366004613914565b610fcc565b34801561054e575f5ffd5b5061056261055d3660046139e5565b610fe2565b604080516001600160401b039093168352602083019190915201610216565b34801561058c575f5ffd5b506065546001600160a01b0316610202565b3480156105a9575f5ffd5b5061023e6105b836600461363a565b611076565b3480156105c8575f5ffd5b506102736105d736600461363a565b60fc6020525f908152604090205460ff1681565b5f54610100900460ff161580801561060957505f54600160ff909116105b806106225750303b15801561062257505f5460ff166001145b61068a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156106ab575f805461ff0019166101001790555b6106b4826110e7565b80156106f9575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b610705611145565b6001600160a01b0382165f90815260fc602052604090205481151560ff909116151503610745576040516398f26f4560e01b815260040160405180910390fd5b6001600160a01b0382165f81815260fc6020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b5f60026107b260c95460ff1690565b60ff1614905090565b5f6107c6838361119f565b151590505b92915050565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000051630036108195760405162461bcd60e51b815260040161068190613a36565b7f00000000000000000000000001670010000000000000000000000000000000056001600160a01b031661084b61120c565b6001600160a01b0316146108715760405162461bcd60e51b815260040161068190613a82565b61087a81611227565b604080515f808252602082019092526108959183919061122f565b50565b647461696b6f60d81b6108ac816001610f33565b6001600160a01b0316336001600160a01b0316146108dd576040516395383ea160e01b815260040160405180910390fd5b5f5b8281101561092d57600160fd5f8686858181106108fe576108fe613ace565b602090810292909201358352508101919091526040015f20805460ff19169115159190911790556001016108df565b507f8e7daa0b2b1abdb036d272b0c35976e908cfd7ae752bc13c70dfa049830b8d9b838360405161095f929190613ae2565b60405180910390a1505050565b5f8180820361098e5760405163ec73295960e01b815260040160405180910390fd5b5f61099a878787610f07565b9050836109a7308361119f565b14979650505050505050565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015610a31573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a559190613b19565b90505b9392505050565b610a7360c954610100900460ff1660021490565b610a905760405163bae6e2a960e01b815260040160405180910390fd5b610aa460c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610ae1335f61139e565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000005163003610b2b5760405162461bcd60e51b815260040161068190613a36565b7f00000000000000000000000001670010000000000000000000000000000000056001600160a01b0316610b5d61120c565b6001600160a01b031614610b835760405162461bcd60e51b815260040161068190613a82565b610b8c82611227565b6106f98282600161122f565b335f90815260fc602052604081205460ff16610bc757604051631f67751f60e01b815260040160405180910390fd5b610bd3858585856113b7565b90505b949350505050565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000000051614610c7d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610681565b505f51602061404d5f395f51905f5290565b5f6107cb338384611499565b610ca3611145565b610ae15f611572565b60655433906001600160a01b03168114610d1a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610681565b61089581611572565b610d3760c954610100900460ff1660021490565b15610d555760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610ae133600161139e565b5f610dab61120c565b905090565b5f610db9825490565b151592915050565b5f610dd660c954610100900460ff1660021490565b15610df45760405163bae6e2a960e01b815260040160405180910390fd5b6002610e0260c95460ff1690565b60ff1603610e235760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660021790555f610e408787878787600161158b565b90505f5b8151811015610e8357610e6f828281518110610e6257610e62613ace565b6020026020010151611aff565b610e799084613b48565b9250600101610e44565b505060c9805460ff191660011790555b95945050505050565b6040516514d251d3905360d21b60208201526001600160c01b031960c085901b1660268201526bffffffffffffffffffffffff19606084901b16602e820152604281018290525f906062015b6040516020818303038152906040528051906020012090509392505050565b604080516001600160401b03808616602083015291810184905290821660608201525f90608001610ee8565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015610fa8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a589190613b19565b610fda85858585855f61158b565b505050505050565b5f5f826001600160401b03165f0361101e576001600160401b038086165f90815260fb6020908152604080832088845290915290205416611020565b825b91506001600160401b0382161561106e575f61103d868685610f07565b9050611049308261119f565b91505f82900361106c5760405163738afa0560e01b815260040160405180910390fd5b505b935093915050565b61107e611145565b606580546001600160a01b0383166001600160a01b031990911681179091556110af6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f54610100900460ff1661110d5760405162461bcd60e51b815260040161068190613b5b565b611115611c43565b6111336001600160a01b0382161561112d5781611572565b33611572565b5060c9805461ff001916610100179055565b6033546001600160a01b03163314610ae15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610681565b5f826001600160a01b0381166111c85760405163538ba4f960e01b815260040160405180910390fd5b825f8190036111ea5760405163ec73295960e01b815260040160405180910390fd5b5f6111f6468787610e9c565b9050611200815490565b9350505b505092915050565b5f51602061404d5f395f51905f52546001600160a01b031690565b610895611145565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156112675761126283611c69565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156112c1575060408051601f3d908101601f191682019092526112be91810190613ba6565b60015b6113245760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610681565b5f51602061404d5f395f51905f5281146113925760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610681565b50611262838383611d04565b604051630c2b8f8f60e11b815260040160405180910390fd5b5f6113c3858585610f07565b90506113d0308284611499565b506001600160401b038581165f90815260fb602090815260408083208884529091529020548185169116101561143a576001600160401b038581165f90815260fb602090815260408083208884529091529020805467ffffffffffffffff19169185169190911790555b83836001600160401b0316866001600160401b03167fde247c825b1fb2d7ff9e0e771cba6f9e757ad04479fcdc135d88ae91fd50b37d8585604051611489929190918252602082015260400190565b60405180910390a4949350505050565b5f836001600160a01b0381166114c25760405163538ba4f960e01b815260040160405180910390fd5b835f8190036114e45760405163ec73295960e01b815260040160405180910390fd5b835f8190036115065760405163ec73295960e01b815260040160405180910390fd5b611511468888610e9c565b858155604080516001600160a01b038a16815260208101899052908101829052606081018790529094507f0ad2d108660a211f47bf7fb43a0443cae181624995d3d42b88ee6879d200e9739060800160405180910390a15050509392505050565b606580546001600160a01b031916905561089581611d2e565b6060856001600160a01b0381166115b55760405163538ba4f960e01b815260040160405180910390fd5b855f8190036115d75760405163ec73295960e01b815260040160405180910390fd5b5f8590036116895760fd5f6115ed8b8b8b610e9c565b815260208101919091526040015f205460ff1661161d57604051632213945760e11b815260040160405180910390fd5b604080515f8082526020820190925290611681565b61166e6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c082015290565b8152602001906001900390816116325790505b509250611af3565b5f61169686880188613c7a565b905080515f036116b957604051630b92daef60e21b815260040160405180910390fd5b5f600182516116c89190613dc0565b6001600160401b038111156116df576116df6137da565b604051908082528060200260200182016040528015611708578160200160208202803683370190505b50905085611716575f611719565b81515b6001600160401b03811115611730576117306137da565b60405190808252806020026020018201604052801561179d57816020015b61178a6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c082015290565b81526020019060019003908161174e5790505b5094508a8a8a805f6117c1856d7369676e616c5f7365727669636560901b836109b3565b9050306001600160a01b038216036117ec57604051637556223560e11b815260040160405180910390fd5b6118246040805160c0810182525f80825260208201819052918101829052906060820190815260200160608152602001606081525090565b5f5f5f5f5b8b51811015611ab2578b818151811061184457611844613ace565b602002602001015194505f5b818110156118ae57855f01516001600160401b03168c828151811061187757611877613ace565b60200260200101516001600160401b0316036118a6576040516348362c2760e11b815260040160405180910390fd5b600101611850565b506118bd8a8a8a8a898b611d7f565b93508a518114915081156118fd5784516001600160401b031646146118f5576040516338bf822760e21b815260040160405180910390fd5b3095506119a8565b845f01518b828151811061191357611913613ace565b6001600160401b0392831660209182029290920101528551161580611941575084516001600160401b031646145b1561195f57604051637556223560e11b815260040160405180910390fd5b845161197d906d7369676e616c5f7365727669636560901b5f6109b3565b9550306001600160a01b038716036119a857604051637556223560e11b815260040160405180910390fd5b608085015151151592508f15611a3c576040518060e00160405280866040015181526020018581526020018b6001600160401b0316815260200186602001516001600160401b031681526020018415158152602001831515815260200186606001516003811115611a1b57611a1b613dd3565b8152508f8281518110611a3057611a30613ace565b60200260200101819052505b611a978a84611a6b577fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf5611a8d565b7f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1695b8760200151610f07565b604086015186519b5096995097509495508794600101611829565b50851580611ac95750611ac5308861119f565b8614155b15611ae75760405163738afa0560e01b815260040160405180910390fd5b50505050505050505050505b50509695505050505050565b5f8060038360c001516003811115611b1957611b19613dd3565b1480611b3a575060028360c001516003811115611b3857611b38613dd3565b145b9050808015611b4a575082608001515b8015611b5857508260a00151155b15611b9a5760019150611b9883604001517f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1698560600151865f01516113b7565b505b5f60038460c001516003811115611bb357611bb3613dd3565b1480611bd4575060018460c001516003811115611bd257611bd2613dd3565b145b9050808015611bf05750836080015180611bf057508360a00151155b15611c3c57611c00600184613b48565b9250611c3a84604001517fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf5866060015187602001516113b7565b505b5050919050565b5f54610100900460ff16610ae15760405162461bcd60e51b815260040161068190613b5b565b6001600160a01b0381163b611cd65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610681565b5f51602061404d5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611d0d83611e1e565b5f82511180611d195750805b1561126257611d288383611e5d565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f856001600160a01b038116611da85760405163538ba4f960e01b815260040160405180910390fd5b855f819003611dca5760405163ec73295960e01b815260040160405180910390fd5b855f819003611dec5760405163ec73295960e01b815260040160405180910390fd5b611e10866040015186611e008d8d8d610e9c565b8a8a608001518b60a00151611e82565b9a9950505050505050505050565b611e2781611c69565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610a58838360405180606001604052806027815260200161406d60279139611f8f565b5f82515f14611f2a576040516bffffffffffffffffffffffff19606088901b1660208201525f90611ec690603401604051602081830303815290604052858a612003565b905080515f03611ee957604051630414cd5b60e31b815260040160405180910390fd5b5f611ef38261201c565b9050611f1881600281518110611f0b57611f0b613ace565b602002602001015161202f565b611f2190613de7565b92505050611f2d565b50855b5f611f6486604051602001611f4491815260200190565b60408051601f19818403018152919052611f5d876120ae565b85856120c1565b905080611f8457604051638d9a4db360e01b815260040160405180910390fd5b509695505050505050565b60605f5f856001600160a01b031685604051611fab9190613e2f565b5f60405180830381855af49150503d805f8114611fe3576040519150601f19603f3d011682016040523d82523d5f602084013e611fe8565b606091505b5091509150611ff9868383876120da565b9695505050505050565b60605f61200f85612152565b9050610e93818585612184565b60606107cb61202a836129f2565b612a44565b60605f5f5f61203d85612bc2565b919450925090505f81600181111561205757612057613dd3565b14612075576040516307fe6cb960e21b815260040160405180910390fd5b61207f8284613b48565b85511461209f57604051630b8aa6f760e31b815260040160405180910390fd5b610e9385602001518484612ea5565b60606107cb6120bc83612f35565b613049565b5f5f6120cc86612152565b9050611ff9818686866130a1565b606083156121485782515f03612141576001600160a01b0385163b6121415760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610681565b5081610bd6565b610bd683836130c7565b6060818051906020012060405160200161216e91815260200190565b6040516020818303038152906040529050919050565b60605f8451116121ce5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b6044820152606401610681565b5f6121d8846130f1565b90505f6121e4866131d4565b90505f846040516020016121fa91815260200190565b60408051601f1981840301815291905290505f805b845181101561299b575f85828151811061222b5761222b613ace565b60200260200101519050845183111561229d5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b6064820152608401610681565b825f0361233b57805180516020918201206040516122ea926122c492910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6123365760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610681565b612431565b8051516020116123c15780518051602091820120604051612365926122c492910190815260200190565b6123365760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b6064820152608401610681565b8051845160208087019190912082519190920120146124315760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b6064820152608401610681565b61243d60106001613b48565b816020015151036125d5578451830361256f5761246a8160200151601081518110611f0b57611f0b613ace565b96505f8751116124e25760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610681565b600186516124f09190613dc0565b82146125645760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610681565b505050505050610a58565b5f85848151811061258257612582613ace565b602001015160f81c60f81b60f81c90505f82602001518260ff16815181106125ac576125ac613ace565b602002602001015190506125bf81613235565b95506125cc600186613b48565b94505050612992565b600281602001515103612939575f6125ec82613259565b90505f815f8151811061260157612601613ace565b016020015160f81c90505f612617600283613e5e565b612622906002613e7f565b90505f612632848360ff1661327c565b90505f61263f8a8961327c565b90505f61264c83836132b1565b9050808351146126c45760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610681565b60ff8516600214806126d9575060ff85166003145b1561287957808251146127545760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610681565b61276e8760200151600181518110611f0b57611f0b613ace565b9c505f8d51116127e65760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610681565b60018c516127f49190613dc0565b88146128685760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610681565b505050505050505050505050610a58565b60ff8516158061288c575060ff85166001145b156128cb576128b887602001516001815181106128ab576128ab613ace565b6020026020010151613235565b99506128c4818a613b48565b985061292e565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b6064820152608401610681565b505050505050612992565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b6064820152608401610681565b5060010161220f565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b6064820152608401610681565b604080518082019091525f808252602082015281515f03612a2657604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60605f5f5f612a5285612bc2565b919450925090506001816001811115612a6d57612a6d613dd3565b14612a8b576040516325ce355f60e11b815260040160405180910390fd5b8451612a978385613b48565b14612ab557604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b604080518082019091525f8082526020820152815260200190600190039081612acc5790505093505f835b8651811015612bb6575f5f612b3b6040518060400160405280858c5f0151612b1f9190613dc0565b8152602001858c60200151612b349190613b48565b9052612bc2565b509150915060405180604001604052808383612b579190613b48565b8152602001848b60200151612b6c9190613b48565b815250888581518110612b8157612b81613ace565b6020908102919091010152612b97600185613b48565b9350612ba38183613b48565b612bad9084613b48565b92505050612af7565b50845250919392505050565b5f5f5f835f01515f03612be857604051635ab458fb60e01b815260040160405180910390fd5b602084015180515f1a607f8111612c0a575f60015f9450945094505050612e9e565b60b78111612c9f575f612c1e608083613dc0565b905080875f015111612c43576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015612c6f5750600160ff1b6001600160f81b03198216105b15612c8d5760405163babb01dd60e01b815260040160405180910390fd5b506001955093505f9250612e9e915050565b60bf8111612d7d575f612cb360b783613dc0565b905080875f015111612cd8576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612d085760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612d375760405163babb01dd60e01b815260040160405180910390fd5b612d418184613b48565b895111612d61576040516366c9448560e01b815260040160405180910390fd5b612d6c836001613b48565b975095505f9450612e9e9350505050565b60f78111612dc7575f612d9160c083613dc0565b905080875f015111612db6576040516366c9448560e01b815260040160405180910390fd5b600195509350849250612e9e915050565b5f612dd360f783613dc0565b905080875f015111612df8576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612e285760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612e575760405163babb01dd60e01b815260040160405180910390fd5b612e618184613b48565b895111612e81576040516366c9448560e01b815260040160405180910390fd5b612e8c836001613b48565b9750955060019450612e9e9350505050565b9193909250565b6060816001600160401b03811115612ebf57612ebf6137da565b6040519080825280601f01601f191660200182016040528015612ee9576020820181803683370190505b5090508115610a58575f612efd8486613b48565b9050602082015f5b84811015612f1d578281015182820152602001612f05565b84811115612f2b575f858301525b5050509392505050565b60605f82604051602001612f4b91815260200190565b60408051601f1981840301815291905290505f5b6020811015612f9757818181518110612f7a57612f7a613ace565b01602001516001600160f81b0319165f03612f9757600101612f5f565b612fa2816020613dc0565b6001600160401b03811115612fb957612fb96137da565b6040519080825280601f01601f191660200182016040528015612fe3576020820181803683370190505b5092505f5b8351811015611c3a578282612ffc81613e98565b93508151811061300e5761300e613ace565b602001015160f81c60f81b84828151811061302b5761302b613ace565b60200101906001600160f81b03191690815f1a905350600101612fe8565b60608151600114801561307557506080825f8151811061306b5761306b613ace565b016020015160f81c105b1561307e575090565b61308a82516080613334565b8260405160200161216e929190613eb0565b919050565b5f610bd3846130b1878686612184565b8051602091820120825192909101919091201490565b8151156130d75781518083602001fd5b8060405162461bcd60e51b81526004016106819190613ede565b8051606090806001600160401b0381111561310e5761310e6137da565b60405190808252806020026020018201604052801561315357816020015b604080518082019091526060808252602082015281526020019060019003908161312c5790505b5091505f5b81811015611c3c57604051806040016040528085838151811061317d5761317d613ace565b602002602001015181526020016131ac86848151811061319f5761319f613ace565b602002602001015161201c565b8152508382815181106131c1576131c1613ace565b6020908102919091010152600101613158565b606080604051905082518060011b603f8101601f191683016040528083525060208401602083015f5b8381101561322a578060011b8201818401515f1a8060041c8253600f8116600183015350506001016131fd565b509295945050505050565b60606020825f0151106132505761324b8261202f565b6107cb565b6107cb826134d1565b60606107cb61327783602001515f81518110611f0b57611f0b613ace565b6131d4565b60608251821061329a575060408051602081019091525f81526107cb565b610a5883838486516132ac9190613dc0565b6134e5565b5f5f82518451106132c35782516132c6565b83515b90505b808210801561331d57508282815181106132e5576132e5613ace565b602001015160f81c60f81b6001600160f81b03191684838151811061330c5761330c613ace565b01602001516001600160f81b031916145b1561332d578160010191506132c9565b5092915050565b6060603883101561339857604080516001808252818301909252906020820181803683370190505090506133688284613f10565b60f81b815f8151811061337d5761337d613ace565b60200101906001600160f81b03191690815f1a9053506107cb565b5f60015b6133a68186613f29565b156133cc57816133b581613e98565b92506133c5905061010082613f3c565b905061339c565b6133d7826001613b48565b6001600160401b038111156133ee576133ee6137da565b6040519080825280601f01601f191660200182016040528015613418576020820181803683370190505b5092506134258483613f10565b613430906037613f10565b60f81b835f8151811061344557613445613ace565b60200101906001600160f81b03191690815f1a905350600190505b818111611204576101006134748284613dc0565b6134809061010061402e565b61348a9087613f29565b6134949190614039565b60f81b8382815181106134a9576134a9613ace565b60200101906001600160f81b03191690815f1a905350806134c981613e98565b915050613460565b60606107cb82602001515f845f0151612ea5565b60608182601f01101561352b5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610681565b82828401101561356e5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610681565b818301845110156135b55760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610681565b6060821580156135d35760405191505f82526020820160405261361d565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561360c5780518352602092830192016135f4565b5050858452601f01601f1916604052505b50949350505050565b6001600160a01b0381168114610895575f5ffd5b5f6020828403121561364a575f5ffd5b8135610a5881613626565b8035801515811461309c575f5ffd5b5f5f60408385031215613675575f5ffd5b823561368081613626565b915061368e60208401613655565b90509250929050565b5f5f604083850312156136a8575f5ffd5b82356136b381613626565b946020939093013593505050565b80356001600160401b038116811461309c575f5ffd5b5f5f604083850312156136e8575f5ffd5b6136b3836136c1565b5f5f60208385031215613702575f5ffd5b82356001600160401b03811115613717575f5ffd5b8301601f81018513613727575f5ffd5b80356001600160401b0381111561373c575f5ffd5b8560208260051b8401011115613750575f5ffd5b6020919091019590945092505050565b5f5f5f5f60808587031215613773575f5ffd5b61377c856136c1565b935060208501359250613791604086016136c1565b9396929550929360600135925050565b5f5f5f606084860312156137b3575f5ffd5b6137bc846136c1565b9250602084013591506137d160408501613655565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715613810576138106137da565b60405290565b604051601f8201601f191681016001600160401b038111828210171561383e5761383e6137da565b604052919050565b5f82601f830112613855575f5ffd5b81356001600160401b0381111561386e5761386e6137da565b613881601f8201601f1916602001613816565b818152846020838601011115613895575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156138c2575f5ffd5b82356138cd81613626565b915060208301356001600160401b038111156138e7575f5ffd5b6138f385828601613846565b9150509250929050565b5f6020828403121561390d575f5ffd5b5035919050565b5f5f5f5f5f60808688031215613928575f5ffd5b613931866136c1565b9450602086013561394181613626565b93506040860135925060608601356001600160401b03811115613962575f5ffd5b8601601f81018813613972575f5ffd5b80356001600160401b03811115613987575f5ffd5b886020828401011115613998575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156139bb575f5ffd5b6139c4846136c1565b925060208401356139d481613626565b929592945050506040919091013590565b5f5f5f606084860312156139f7575f5ffd5b613a00846136c1565b9250602084013591506137d1604085016136c1565b5f5f60408385031215613a26575f5ffd5b8235915061368e60208401613655565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b602080825281018290525f6001600160fb1b03831115613b00575f5ffd5b8260051b80856040850137919091016040019392505050565b5f60208284031215613b29575f5ffd5b8151610a5881613626565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107cb576107cb613b34565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215613bb6575f5ffd5b5051919050565b5f6001600160401b03821115613bd557613bd56137da565b5060051b60200190565b80356004811061309c575f5ffd5b5f82601f830112613bfc575f5ffd5b8135613c0f613c0a82613bbd565b613816565b8082825260208201915060208360051b860101925085831115613c30575f5ffd5b602085015b83811015613c705780356001600160401b03811115613c52575f5ffd5b613c61886020838a0101613846565b84525060209283019201613c35565b5095945050505050565b5f60208284031215613c8a575f5ffd5b81356001600160401b03811115613c9f575f5ffd5b8201601f81018413613caf575f5ffd5b8035613cbd613c0a82613bbd565b8082825260208201915060208360051b850101925086831115613cde575f5ffd5b602084015b83811015611f845780356001600160401b03811115613d00575f5ffd5b850160c0818a03601f19011215613d15575f5ffd5b613d1d6137ee565b613d29602083016136c1565b8152613d37604083016136c1565b602082015260608201356040820152613d5260808301613bdf565b606082015260a08201356001600160401b03811115613d6f575f5ffd5b613d7e8b602083860101613bed565b60808301525060c08201356001600160401b03811115613d9c575f5ffd5b613dab8b602083860101613bed565b60a08301525084525060209283019201613ce3565b818103818111156107cb576107cb613b34565b634e487b7160e01b5f52602160045260245ffd5b80516020808301519190811015613e07575f198160200360031b1b821691505b50919050565b5f5b83811015613e27578181015183820152602001613e0f565b50505f910152565b5f8251613e40818460208701613e0d565b9190910192915050565b634e487b7160e01b5f52601260045260245ffd5b5f60ff831680613e7057613e70613e4a565b8060ff84160691505092915050565b60ff82811682821603908111156107cb576107cb613b34565b5f60018201613ea957613ea9613b34565b5060010190565b5f8351613ec1818460208801613e0d565b835190830190613ed5818360208801613e0d565b01949350505050565b602081525f8251806020840152613efc816040850160208701613e0d565b601f01601f19169190910160400192915050565b60ff81811683821601908111156107cb576107cb613b34565b5f82613f3757613f37613e4a565b500490565b80820281158282048414176107cb576107cb613b34565b6001815b600184111561106e57808504811115613f7257613f72613b34565b6001841615613f8057908102905b60019390931c928002613f57565b5f82613f9c575060016107cb565b81613fa857505f6107cb565b8160018114613fbe5760028114613fc857613fe4565b60019150506107cb565b60ff841115613fd957613fd9613b34565b50506001821b6107cb565b5060208310610133831016604e8410600b8410161715614007575081810a6107cb565b6140135f198484613f53565b805f190482111561402657614026613b34565b029392505050565b5f610a588383613f8e565b5f8261404757614047613e4a565b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f28bc1c5aad9ad59dc16bde23b966513c907942447223097be9dfe6a9798c3f764736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000000005": { @@ -258,7 +254,6 @@ "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", "0xe3ad9bc7a782493ccba4f8a469cc3f9e8fb5647c2076401c8a7c4945a999c777": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000005" }, @@ -266,20 +261,19 @@ "balance": "0x0" }, "0x0167001000000000000000000000000000010001": { - "contractName": "TaikoL2Impl", + "contractName": "TaikoAnchorImpl", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x6080604052600436106101fc575f3560e01c80638456cb5911610113578063da69d3db1161009d578063e902461a1161006d578063e902461a146105d4578063ee82ac5e146105ee578063f2fde38b1461060d578063f940e3851461062c578063fd85eb2d1461064b575f5ffd5b8063da69d3db14610560578063dac5df781461057f578063e07baba614610594578063e30c3978146105b7575f5ffd5b80639ee512f2116100e35780639ee512f21461049b578063a7137c0f146104c0578063a7e022d1146104e6578063a86f9d9e14610522578063b8c7b30c14610541575f5ffd5b80638456cb5914610412578063893f5460146104265780638abf60771461046a5780638da5cb5b1461047e575f5ffd5b80633eb6b8cf11610194578063539b8ade11610164578063539b8ade146103855780635950f9f1146103ab5780635c975abb146103ca578063715018a6146103ea57806379ba5097146103fe575f5ffd5b80633eb6b8cf1461031d5780633f4ba83a1461033c5780634f1ef2861461035057806352d1902d14610363575f5ffd5b806333d5ac9b116101cf57806333d5ac9b1461028d578063356aec04146102b35780633659cfe6146102c55780633ab76e9f146102e6575f5ffd5b806312622e5b14610200578063136dc4a81461023c5780632f9804731461025b5780633075db5614610279575b5f5ffd5b34801561020b575f5ffd5b5060fe5461021f906001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b348015610247575f5ffd5b5061021f610256366004612554565b61066a565b348015610266575f5ffd5b505f5b6040519015158152602001610233565b348015610284575f5ffd5b50610269610684565b348015610298575f5ffd5b5060fd5461021f90600160401b90046001600160401b031681565b3480156102be575f5ffd5b505f61021f565b3480156102d0575f5ffd5b506102e46102df3660046125a8565b61069c565b005b3480156102f1575f5ffd5b50609754610305906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610328575f5ffd5b506103056103373660046125d7565b61076c565b348015610347575f5ffd5b506102e4610780565b6102e461035e366004612628565b610794565b34801561036e575f5ffd5b5061037761084d565b604051908152602001610233565b348015610390575f5ffd5b5060fd5461021f90600160801b90046001600160401b031681565b3480156103b6575f5ffd5b506102e46103c53660046126eb565b6108fe565b3480156103d5575f5ffd5b5061026960c954610100900460ff1660021490565b3480156103f5575f5ffd5b506102e4610b32565b348015610409575f5ffd5b506102e4610b43565b34801561041d575f5ffd5b506102e4610bba565b348015610431575f5ffd5b50610445610440366004612763565b610bcd565b604080519384526001600160401b039283166020850152911690820152606001610233565b348015610475575f5ffd5b50610305610cf9565b348015610489575f5ffd5b506033546001600160a01b0316610305565b3480156104a6575f5ffd5b5061030571777735367b36bc9b61c50022d9d0700db4ec81565b3480156104cb575f5ffd5b5060fd5461021f90600160c01b90046001600160401b031681565b3480156104f1575f5ffd5b5061050561050036600461279b565b610d07565b604080519283526001600160401b03909116602083015201610233565b34801561052d575f5ffd5b5061030561053c3660046127cc565b610d22565b34801561054c575f5ffd5b5060fd5461021f906001600160401b031681565b34801561056b575f5ffd5b506102e461057a3660046127fa565b610d37565b34801561058a575f5ffd5b5061037760fc5481565b34801561059f575f5ffd5b5060c9546201000090046001600160401b031661021f565b3480156105c2575f5ffd5b506065546001600160a01b0316610305565b3480156105df575f5ffd5b50610505610500366004612832565b3480156105f9575f5ffd5b5061037761060836600461287a565b610d50565b348015610618575f5ffd5b506102e46106273660046125a8565b610d88565b348015610637575f5ffd5b506102e4610646366004612891565b610df9565b348015610656575f5ffd5b506102e46106653660046128bd565b610fb6565b5f6040516372c0090b60e11b815260040160405180910390fd5b5f600261069360c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100011630036106ed5760405162461bcd60e51b81526004016106e4906128fe565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100016001600160a01b031661071f61111c565b6001600160a01b0316146107455760405162461bcd60e51b81526004016106e49061294a565b61074e81611137565b604080515f808252602082019092526107699183919061113f565b50565b5f6107788484846112ae565b949350505050565b61078861130a565b610792335f61139a565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100011630036107dc5760405162461bcd60e51b81526004016106e4906128fe565b7f00000000000000000000000001670010000000000000000000000000000100016001600160a01b031661080e61111c565b6001600160a01b0316146108345760405162461bcd60e51b81526004016106e49061294a565b61083d82611137565b6108498282600161113f565b5050565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000001000116146108ec5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106e4565b505f516020612beb5f395f51905f5290565b5f54610100900460ff161580801561091c57505f54600160ff909116105b806109355750303b15801561093557505f5460ff166001145b6109985760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106e4565b5f805460ff1916600117905580156109b9575f805461ff0019166101001790555b6109c385856113a2565b826001600160401b03165f036109ec576040516308279a2560e31b815260040160405180910390fd5b46836001600160401b031603610a15576040516308279a2560e31b815260040160405180910390fd5b60014611610a3657604051638f972ecb60e01b815260040160405180910390fd5b6001600160401b03461115610a5e57604051638f972ecb60e01b815260040160405180910390fd5b4315610aa85743600103610a8f575f610a786001436129aa565b5f81815260fb602052604090209040905550610aa8565b604051635a0f9e4160e11b815260040160405180910390fd5b60fe80546001600160401b0380861667ffffffffffffffff199283161790925560fd805492851692909116919091179055610ae2436113dc565b5060fc558015610b2b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610b3a61146c565b6107925f6114c6565b60655433906001600160a01b03168114610bb15760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106e4565b610769816114c6565b610bc26114df565b61079233600161139a565b5f808080610bde60208601866129bd565b60ff16610bf160608701604088016129dd565b63ffffffff16610c0191906129f6565b60fd54909150610c25906001600160401b03600160c01b8204811691849116611550565b90935091505f610c3b60608701604088016129dd565b63ffffffff1660fd60109054906101000a90046001600160401b031688610c629190612a1f565b610c6c91906129f6565b9050610c7e60a08701608088016129dd565b63ffffffff1615801590610caf5750610c9d60a08701608088016129dd565b63ffffffff16816001600160401b0316115b15610ccd57610cc460a08701608088016129dd565b63ffffffff1690505b610ce98484838b610ce460808c0160608d01612a3e565b611668565b9099949850965092945050505050565b5f610d0261111c565b905090565b5f5f6040516372c0090b60e11b815260040160405180910390fd5b5f610d2e4684846112ae565b90505b92915050565b6040516372c0090b60e11b815260040160405180910390fd5b5f438210610d5f57505f919050565b43610d6c83610100612a57565b10610d7657504090565b505f90815260fb602052604090205490565b610d9061146c565b606580546001600160a01b0383166001600160a01b03199091168117909155610dc16033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b806001600160a01b038116610e215760405163538ba4f960e01b815260040160405180910390fd5b610e3560c954610100900460ff1660021490565b15610e535760405163bae6e2a960e01b815260040160405180910390fd5b693bb4ba34323930bbb2b960b11b610e736033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610ead5750610e98816001610d22565b6001600160a01b0316336001600160a01b0316145b610eca57604051630d85cccf60e11b815260040160405180910390fd5b6002610ed860c95460ff1690565b60ff1603610ef95760405163dfc60d8560e01b815260040160405180910390fd5b610f0360026116e8565b6001600160a01b038416610f2957610f246001600160a01b038416476116fe565b610fa6565b6040516370a0823160e01b8152306004820152610fa69084906001600160a01b038716906370a0823190602401602060405180830381865afa158015610f71573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f959190612a6a565b6001600160a01b0387169190611709565b610fb060016116e8565b50505050565b825f819003610fd85760405163ec73295960e01b815260040160405180910390fd5b846001600160401b0316805f036110025760405163ec73295960e01b815260040160405180910390fd5b61101260608401604085016129dd565b63ffffffff16805f036110385760405163ec73295960e01b815260040160405180910390fd5b61104560208501856129bd565b60ff16805f036110685760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec1461109a57604051636494e9f760e01b815260040160405180910390fd5b60026110a860c95460ff1690565b60ff16036110c95760405163dfc60d8560e01b815260040160405180910390fd5b6110d360026116e8565b5f6110df6001436129aa565b90506110ea8161175b565b6110f48787611793565b6110fe898961187a565b61110781611995565b5061111260016116e8565b5050505050505050565b5f516020612beb5f395f51905f52546001600160a01b031690565b61076961146c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156111775761117283611a2c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156111d1575060408051601f3d908101601f191682019092526111ce91810190612a6a565b60015b6112345760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106e4565b5f516020612beb5f395f51905f5281146112a25760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106e4565b50611172838383611ac7565b5f6112b98484611aeb565b905081806112cf57506001600160a01b03811615155b8484909161130157604051632b0d65db60e01b81526001600160401b03909216600483015260248201526044016106e4565b50509392505050565b61131e60c954610100900460ff1660021490565b61133b5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b61084961146c565b806001600160a01b0381166113ca5760405163538ba4f960e01b815260040160405180910390fd5b6113d383611b8d565b61117282611beb565b5f5f6113e6612519565b5f5b60ff811080156113fb5750806001018510155b1561142c575f198186030180408360ff8306610100811061141e5761141e612a95565b6020020152506001016113e8565b5046611fe08201526120008120925083408161144960ff87612aa9565b610100811061145a5761145a612a95565b60200201526120009020919391925050565b6033546001600160a01b031633146107925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e4565b606580546001600160a01b031916905561076981611c5b565b6114f360c954610100900460ff1660021490565b156115115760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611390565b5f80670de0b6b3a76400006001600160401b03861682036115775784849250925050611660565b6001600160401b038516158061159e5750846001600160401b0316866001600160401b0316145b806115bc57506115af815f19612abc565b856001600160401b031610155b156115cd5785849250925050611660565b5f866001600160401b0316866001600160401b0316836115ed9190612acf565b6115f79190612abc565b905080158061160c57506001600160ff1b0381115b1561161e578585935093505050611660565b5f61162882611cac565b90505f828702828902015f81126001811461164757858204925061164b565b5f92505b50508761165782611ec9565b95509550505050505b935093915050565b5f808061168463ffffffff86166001600160401b038916612a57565b9050856001600160401b0316811161169d5760016116b0565b6116b06001600160401b038716826129aa565b90506116cf6001600160401b036116c983878316611edb565b90611ef0565b91506116db8883611f04565b9250509550959350505050565b60c9805460ff191660ff92909216919091179055565b61084982825a611f46565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611172908490611f89565b5f5f611766836113dc565b915091508160fc541461178c5760405163d719258d60e01b815260040160405180910390fd5b60fc555050565b5f5f5f6117a1854286610bcd565b925092509250824814806117b257505f5b6117cf576040516336d54d4f60e11b815260040160405180910390fd5b60fd5460408051600160c01b83046001600160401b039081168252858116602083015292831681830152918316606083015260808201859052517f781ae5c2215806150d5c71a4ed5336e5dc3ad32aef04fc0f626a6ee0c2f8d1c89181900360a00190a160fd805477ffffffffffffffffffffffffffffffff000000000000000016600160c01b6001600160401b039485160267ffffffffffffffff19161791909216179055505050565b60fd546001600160401b03600160401b90910481169083161161189b575050565b6118b66d7369676e616c5f7365727669636560901b5f610d22565b60fe546040516313e4299d60e21b81526001600160401b0391821660048201527f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da16960248201529084166044820152606481018390526001600160a01b039190911690634f90a674906084016020604051808303815f875af115801561193d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119619190612a6a565b505060fd80546001600160401b03909216600160401b026fffffffffffffffff000000000000000019909216919091179055565b5f81815260fb60205260409081902082409081905560fd80546001600160401b03428116600160801b0267ffffffffffffffff60801b1983168117909355935192937f41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe493611a20938693908316921691909117909182526001600160401b0316602082015260400190565b60405180910390a15050565b6001600160a01b0381163b611a995760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106e4565b5f516020612beb5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611ad08361205c565b5f82511180611adc5750805b1561117257610fb0838361209b565b6097545f906001600160a01b031680611b1757604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611b69573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107789190612ae6565b5f54610100900460ff16611bb35760405162461bcd60e51b81526004016106e490612b01565b611bbb6120c0565b611bd96001600160a01b03821615611bd357816114c6565b336114c6565b5060c9805461ff001916610100179055565b5f54610100900460ff16611c115760405162461bcd60e51b81526004016106e490612b01565b6001600160401b03461115611c395760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6fffffffffffffffffffffffffffffffff811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b175f8213611d0857631615e6385f526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b5f610d31826001600160401b03611ef0565b5f818311611ee95781610d2e565b5090919050565b5f818311611efe5782610d2e565b50919050565b5f826001600160401b03165f03611f1d57506001610d31565b610d2e6001846001600160401b0316611f3686866120e6565b611f409190612abc565b90611edb565b815f03611f5257505050565b611f6c83838360405180602001604052805f81525061216c565b61117257604051634c67134d60e11b815260040160405180910390fd5b5f611fdd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166121a99092919063ffffffff16565b905080515f1480611ffd575080806020019051810190611ffd9190612b4c565b6111725760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106e4565b61206581611a2c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610d2e8383604051806060016040528060278152602001612c0b602791396121b7565b5f54610100900460ff166107925760405162461bcd60e51b81526004016106e490612b01565b5f826001600160401b03165f036120ff576120ff612b67565b5f836001600160401b0316836001600160401b0316670de0b6b3a76400006121279190612acf565b6121319190612abc565b9050680755bf798b4a1bf1e48111156121505750680755bf798b4a1bf1e45b670de0b6b3a76400006121628261222b565b6107789190612abc565b5f6001600160a01b03851661219457604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606061077884845f856123a5565b60605f5f856001600160a01b0316856040516121d39190612b9d565b5f60405180830381855af49150503d805f811461220b576040519150601f19603f3d011682016040523d82523d5f602084013e612210565b606091505b50915091506122218683838761247c565b9695505050505050565b5f68023f2fa8f6da5b9d2819821361224257919050565b680755bf798b4a1bf1e5821261225f5763a37bfec95f526004601cfd5b6503782dace9d9604e83901b0591505f60606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6060824710156124065760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106e4565b5f5f866001600160a01b031685876040516124219190612b9d565b5f6040518083038185875af1925050503d805f811461245b576040519150601f19603f3d011682016040523d82523d5f602084013e612460565b606091505b50915091506124718783838761247c565b979650505050505050565b606083156124ea5782515f036124e3576001600160a01b0385163b6124e35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106e4565b5081610778565b61077883838151156124ff5781518083602001fd5b8060405162461bcd60e51b81526004016106e49190612bb8565b604051806120000160405280610100906020820280368337509192915050565b80356001600160401b038116811461254f575f5ffd5b919050565b5f5f5f60608486031215612566575f5ffd5b61256f84612539565b925061257d60208501612539565b915061258b60408501612539565b90509250925092565b6001600160a01b0381168114610769575f5ffd5b5f602082840312156125b8575f5ffd5b81356125c381612594565b9392505050565b8015158114610769575f5ffd5b5f5f5f606084860312156125e9575f5ffd5b6125f284612539565b9250602084013591506040840135612609816125ca565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215612639575f5ffd5b823561264481612594565b915060208301356001600160401b0381111561265e575f5ffd5b8301601f8101851361266e575f5ffd5b80356001600160401b0381111561268757612687612614565b604051601f8201601f19908116603f011681016001600160401b03811182821017156126b5576126b5612614565b6040528181528282016020018710156126cc575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f5f608085870312156126fe575f5ffd5b843561270981612594565b9350602085013561271981612594565b925061272760408601612539565b915061273560608601612539565b905092959194509250565b803563ffffffff8116811461254f575f5ffd5b5f60a08284031215611efe575f5ffd5b5f5f5f60e08486031215612775575f5ffd5b61277e84612740565b925061278c60208501612539565b915061258b8560408601612753565b5f5f604083850312156127ac575f5ffd5b6127b583612539565b91506127c360208401612740565b90509250929050565b5f5f604083850312156127dd575f5ffd5b8235915060208301356127ef816125ca565b809150509250929050565b5f5f5f5f6080858703121561280d575f5ffd5b843593506020850135925061282460408601612539565b915061273560608601612740565b5f5f5f5f6101008587031215612846575f5ffd5b6128508686612753565b935061285e60a08601612539565b925061286c60c08601612539565b915061273560e08601612740565b5f6020828403121561288a575f5ffd5b5035919050565b5f5f604083850312156128a2575f5ffd5b82356128ad81612594565b915060208301356127ef81612594565b5f5f5f5f61010085870312156128d1575f5ffd5b6128da85612539565b9350602085013592506128ef60408601612740565b91506127358660608701612753565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d3157610d31612996565b5f602082840312156129cd575f5ffd5b813560ff811681146125c3575f5ffd5b5f602082840312156129ed575f5ffd5b610d2e82612740565b6001600160401b038181168382160290811690818114612a1857612a18612996565b5092915050565b6001600160401b038281168282160390811115610d3157610d31612996565b5f60208284031215612a4e575f5ffd5b610d2e82612539565b80820180821115610d3157610d31612996565b5f60208284031215612a7a575f5ffd5b5051919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f82612ab757612ab7612a81565b500690565b5f82612aca57612aca612a81565b500490565b8082028115828204841417610d3157610d31612996565b5f60208284031215612af6575f5ffd5b81516125c381612594565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612b5c575f5ffd5b81516125c3816125ca565b634e487b7160e01b5f52600160045260245ffd5b5f5b83811015612b95578181015183820152602001612b7d565b50505f910152565b5f8251612bae818460208701612b7b565b9190910192915050565b602081525f8251806020840152612bd6816040850160208701612b7b565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ff3ca55c3d0d57e84c33c646d112fadf16b343c2a643c320e4c02f93e490149a64736f6c634300081b0033", + "code": "0x608060405260043610610207575f3560e01c80638da5cb5b11610113578063b8c7b30c1161009d578063e30c39781161006d578063e30c397814610603578063e902461a14610620578063ee82ac5e1461063a578063f2fde38b14610659578063f940e38514610678575f5ffd5b8063b8c7b30c1461057d578063ba9f41e81461059c578063da69d3db146105cf578063dac5df78146105ee575f5ffd5b8063a7137c0f116100e3578063a7137c0f146104be578063a7e022d1146104e4578063a86f9d9e14610520578063a9edc4161461053f578063b310e9e91461055e575f5ffd5b80638da5cb5b1461046757806399df1bb9146104845780639ee512f214610499578063a4b23554146102ac575f5ffd5b80634f1ef28611610194578063715018a611610164578063715018a6146103d357806379ba5097146103e75780638456cb59146103fb578063893f54601461040f5780638abf607714610453575f5ffd5b80634f1ef2861461035857806352d1902d1461036b578063539b8ade1461038d5780635c975abb146103b3575f5ffd5b80633075db56116101da5780633075db56146102ca57806333d5ac9b146102de5780633659cfe6146103045780633eb6b8cf146103255780633f4ba83a14610344575f5ffd5b806304f3bcec1461020b57806312622e5b14610256578063136dc4a81461028d5780632f980473146102ac575b5f5ffd5b348015610216575f5ffd5b507f00000000000000000000000016700100000000000000000000000000000100025b6040516001600160a01b0390911681526020015b60405180910390f35b348015610261575f5ffd5b5060fe54610275906001600160401b031681565b6040516001600160401b03909116815260200161024d565b348015610298575f5ffd5b506102756102a7366004612592565b610697565b3480156102b7575f5ffd5b505f5b604051901515815260200161024d565b3480156102d5575f5ffd5b506102ba6106b1565b3480156102e9575f5ffd5b5060fd5461027590600160401b90046001600160401b031681565b34801561030f575f5ffd5b5061032361031e3660046125e6565b6106c9565b005b348015610330575f5ffd5b5061023961033f366004612615565b610799565b34801561034f575f5ffd5b50610323610843565b610323610366366004612666565b6108c7565b348015610376575f5ffd5b5061037f610980565b60405190815260200161024d565b348015610398575f5ffd5b5060fd5461027590600160801b90046001600160401b031681565b3480156103be575f5ffd5b506102ba60c954610100900460ff1660021490565b3480156103de575f5ffd5b50610323610a31565b3480156103f2575f5ffd5b50610323610a42565b348015610406575f5ffd5b50610323610ab9565b34801561041a575f5ffd5b5061042e61042936600461274c565b610b38565b604080519384526001600160401b03928316602085015291169082015260600161024d565b34801561045e575f5ffd5b50610239610c64565b348015610472575f5ffd5b506033546001600160a01b0316610239565b34801561048f575f5ffd5b5061037f60ff5481565b3480156104a4575f5ffd5b5061023971777735367b36bc9b61c50022d9d0700db4ec81565b3480156104c9575f5ffd5b5060fd5461027590600160c01b90046001600160401b031681565b3480156104ef575f5ffd5b506105036104fe366004612784565b610c72565b604080519283526001600160401b0390911660208301520161024d565b34801561052b575f5ffd5b5061023961053a3660046127b5565b610c8d565b34801561054a575f5ffd5b506103236105593660046127e3565b610d2f565b348015610569575f5ffd5b50610323610578366004612899565b610f5c565b348015610588575f5ffd5b5060fd54610275906001600160401b031681565b3480156105a7575f5ffd5b506102757f000000000000000000000000000000000000000000000000000000000000000a81565b3480156105da575f5ffd5b506103236105e93660046128b6565b61118e565b3480156105f9575f5ffd5b5061037f60fc5481565b34801561060e575f5ffd5b506065546001600160a01b0316610239565b34801561062b575f5ffd5b506105036104fe3660046128f9565b348015610645575f5ffd5b5061037f610654366004612941565b6111a7565b348015610664575f5ffd5b506103236106733660046125e6565b6111df565b348015610683575f5ffd5b50610323610692366004612958565b611250565b5f6040516372c0090b60e11b815260040160405180910390fd5b5f60026106c060c95460ff1690565b60ff1614905090565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000001000116300361071a5760405162461bcd60e51b815260040161071190612984565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100016001600160a01b031661074c611407565b6001600160a01b0316146107725760405162461bcd60e51b8152600401610711906129d0565b61077b81611422565b604080515f808252602082019092526107969183919061142a565b50565b5f7f0000000000000000000000001670010000000000000000000000000000010002604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015610817573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083b9190612a1c565b949350505050565b61085760c954610100900460ff1660021490565b6108745760405163bae6e2a960e01b815260040160405180910390fd5b61088860c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16108c5335f611599565b565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000001000116300361090f5760405162461bcd60e51b815260040161071190612984565b7f00000000000000000000000001670010000000000000000000000000000100016001600160a01b0316610941611407565b6001600160a01b0316146109675760405162461bcd60e51b8152600401610711906129d0565b61097082611422565b61097c8282600161142a565b5050565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100011614610a1f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610711565b505f516020612ca85f395f51905f5290565b610a3961159d565b6108c55f6115f7565b60655433906001600160a01b03168114610ab05760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610711565b610796816115f7565b610acd60c954610100900460ff1660021490565b15610aeb5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16108c5336001611599565b5f808080610b496020860186612a37565b60ff16610b5c6060870160408801612a57565b63ffffffff16610b6c9190612a84565b60fd54909150610b90906001600160401b03600160c01b8204811691849116611610565b90935091505f610ba66060870160408801612a57565b63ffffffff1660fd60109054906101000a90046001600160401b031688610bcd9190612aad565b610bd79190612a84565b9050610be960a0870160808801612a57565b63ffffffff1615801590610c1a5750610c0860a0870160808801612a57565b63ffffffff16816001600160401b0316115b15610c3857610c2f60a0870160808801612a57565b63ffffffff1690505b610c548484838b610c4f60808c0160608d01612acc565b611728565b9099949850965092945050505050565b5f610c6d611407565b905090565b5f5f6040516372c0090b60e11b815260040160405180910390fd5b5f7f0000000000000000000000001670010000000000000000000000000000010002604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015610d02573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d269190612a1c565b90505b92915050565b855f819003610d515760405163ec73295960e01b815260040160405180910390fd5b876001600160401b0316805f03610d7b5760405163ec73295960e01b815260040160405180910390fd5b610d8b6060860160408701612a57565b63ffffffff16805f03610db15760405163ec73295960e01b815260040160405180910390fd5b610dbe6020870187612a37565b60ff16805f03610de15760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec14610e1357604051636494e9f760e01b815260040160405180910390fd5b6002610e2160c95460ff1690565b60ff1603610e425760405163dfc60d8560e01b815260040160405180910390fd5b610e4c60026117a8565b7f000000000000000000000000000000000000000000000000000000000000000a6001600160401b0316431015610e9657604051631799c89b60e01b815260040160405180910390fd5b60ff8990555f610ea7600143612ae5565b9050610eb2816117be565b610ebc89896117f6565b610ec68c8c6118dd565b610ecf816119f8565b610eea6d7369676e616c5f7365727669636560901b5f610c8d565b6001600160a01b0316633b78c86588886040518363ffffffff1660e01b8152600401610f17929190612af8565b5f604051808303815f87803b158015610f2e575f5ffd5b505af1158015610f40573d5f5f3e3d5ffd5b5050505050610f4f60016117a8565b5050505050505050505050565b5f54610100900460ff1615808015610f7a57505f54600160ff909116105b80610f935750303b158015610f9357505f5460ff166001145b610ff65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610711565b5f805460ff191660011790558015611017575f805461ff0019166101001790555b61102084611a8f565b826001600160401b03165f03611049576040516308279a2560e31b815260040160405180910390fd5b46836001600160401b031603611072576040516308279a2560e31b815260040160405180910390fd5b6001461161109357604051638f972ecb60e01b815260040160405180910390fd5b6001600160401b034611156110bb57604051638f972ecb60e01b815260040160405180910390fd5b431561110557436001036110ec575f6110d5600143612ae5565b5f81815260fb602052604090209040905550611105565b604051635a0f9e4160e11b815260040160405180910390fd5b60fe80546001600160401b0380861667ffffffffffffffff199283161790925560fd80549285169290911691909117905561113f43611aed565b5060fc558015611188575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6040516372c0090b60e11b815260040160405180910390fd5b5f4382106111b657505f919050565b436111c383610100612b2f565b106111cd57504090565b505f90815260fb602052604090205490565b6111e761159d565b606580546001600160a01b0383166001600160a01b031990911681179091556112186033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b806001600160a01b0381166112785760405163538ba4f960e01b815260040160405180910390fd5b61128c60c954610100900460ff1660021490565b156112aa5760405163bae6e2a960e01b815260040160405180910390fd5b693bb4ba34323930bbb2b960b11b6112ca6033546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061130457506112ef816001610c8d565b6001600160a01b0316336001600160a01b0316145b611321576040516395383ea160e01b815260040160405180910390fd5b600261132f60c95460ff1690565b60ff16036113505760405163dfc60d8560e01b815260040160405180910390fd5b61135a60026117a8565b6001600160a01b0384166113805761137b6001600160a01b03841647611b7d565b6113fd565b6040516370a0823160e01b81523060048201526113fd9084906001600160a01b038716906370a0823190602401602060405180830381865afa1580156113c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ec9190612b42565b6001600160a01b0387169190611b88565b61118860016117a8565b5f516020612ca85f395f51905f52546001600160a01b031690565b61079661159d565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114625761145d83611bda565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114bc575060408051601f3d908101601f191682019092526114b991810190612b42565b60015b61151f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610711565b5f516020612ca85f395f51905f52811461158d5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610711565b5061145d838383611c75565b61097c5b6033546001600160a01b031633146108c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610711565b606580546001600160a01b031916905561079681611c99565b5f80670de0b6b3a76400006001600160401b03861682036116375784849250925050611720565b6001600160401b038516158061165e5750846001600160401b0316866001600160401b0316145b8061167c575061166f815f19612b6d565b856001600160401b031610155b1561168d5785849250925050611720565b5f866001600160401b0316866001600160401b0316836116ad9190612b80565b6116b79190612b6d565b90508015806116cc57506001600160ff1b0381115b156116de578585935093505050611720565b5f6116e882611cea565b90505f828702828902015f81126001811461170757858204925061170b565b5f92505b50508761171782611f07565b95509550505050505b935093915050565b5f808061174463ffffffff86166001600160401b038916612b2f565b9050856001600160401b0316811161175d576001611770565b6117706001600160401b03871682612ae5565b905061178f6001600160401b0361178983878316611f19565b90611f2e565b915061179b8883611f42565b9250509550959350505050565b60c9805460ff191660ff92909216919091179055565b5f5f6117c983611aed565b915091508160fc54146117ef5760405163d719258d60e01b815260040160405180910390fd5b60fc555050565b5f5f5f611804854286610b38565b9250925092508248148061181557505f5b611832576040516336d54d4f60e11b815260040160405180910390fd5b60fd5460408051600160c01b83046001600160401b039081168252858116602083015292831681830152918316606083015260808201859052517f781ae5c2215806150d5c71a4ed5336e5dc3ad32aef04fc0f626a6ee0c2f8d1c89181900360a00190a160fd805477ffffffffffffffffffffffffffffffff000000000000000016600160c01b6001600160401b039485160267ffffffffffffffff19161791909216179055505050565b60fd546001600160401b03600160401b9091048116908316116118fe575050565b6119196d7369676e616c5f7365727669636560901b5f610c8d565b60fe546040516313e4299d60e21b81526001600160401b0391821660048201527f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da16960248201529084166044820152606481018390526001600160a01b039190911690634f90a674906084016020604051808303815f875af11580156119a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c49190612b42565b505060fd80546001600160401b03909216600160401b026fffffffffffffffff000000000000000019909216919091179055565b5f81815260fb60205260409081902082409081905560fd80546001600160401b03428116600160801b0267ffffffffffffffff60801b1983168117909355935192937f41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe493611a83938693908316921691909117909182526001600160401b0316602082015260400190565b60405180910390a15050565b5f54610100900460ff16611ab55760405162461bcd60e51b815260040161071190612b97565b611abd611f84565b611adb6001600160a01b03821615611ad557816115f7565b336115f7565b5060c9805461ff001916610100179055565b5f5f611af7612557565b5f5b60ff81108015611b0c5750806001018510155b15611b3d575f198186030180408360ff83066101008110611b2f57611b2f612be2565b602002015250600101611af9565b5046611fe082015261200081209250834081611b5a60ff87612bf6565b6101008110611b6b57611b6b612be2565b60200201526120009020919391925050565b61097c82825a611faa565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261145d908490611fed565b6001600160a01b0381163b611c475760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610711565b5f516020612ca85f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611c7e836120c0565b5f82511180611c8a5750805b1561145d5761118883836120ff565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6fffffffffffffffffffffffffffffffff811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b175f8213611d4657631615e6385f526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b5f610d29826001600160401b03611f2e565b5f818311611f275781610d26565b5090919050565b5f818311611f3c5782610d26565b50919050565b5f826001600160401b03165f03611f5b57506001610d29565b610d266001846001600160401b0316611f748686612124565b611f7e9190612b6d565b90611f19565b5f54610100900460ff166108c55760405162461bcd60e51b815260040161071190612b97565b815f03611fb657505050565b611fd083838360405180602001604052805f8152506121aa565b61145d57604051634c67134d60e11b815260040160405180910390fd5b5f612041826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166121e79092919063ffffffff16565b905080515f14806120615750808060200190518101906120619190612c09565b61145d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610711565b6120c981611bda565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610d268383604051806060016040528060278152602001612cc8602791396121f5565b5f826001600160401b03165f0361213d5761213d612c24565b5f836001600160401b0316836001600160401b0316670de0b6b3a76400006121659190612b80565b61216f9190612b6d565b9050680755bf798b4a1bf1e481111561218e5750680755bf798b4a1bf1e45b670de0b6b3a76400006121a082612269565b61083b9190612b6d565b5f6001600160a01b0385166121d257604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606061083b84845f856123e3565b60605f5f856001600160a01b0316856040516122119190612c5a565b5f60405180830381855af49150503d805f8114612249576040519150601f19603f3d011682016040523d82523d5f602084013e61224e565b606091505b509150915061225f868383876124ba565b9695505050505050565b5f68023f2fa8f6da5b9d2819821361228057919050565b680755bf798b4a1bf1e5821261229d5763a37bfec95f526004601cfd5b6503782dace9d9604e83901b0591505f60606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6060824710156124445760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610711565b5f5f866001600160a01b0316858760405161245f9190612c5a565b5f6040518083038185875af1925050503d805f8114612499576040519150601f19603f3d011682016040523d82523d5f602084013e61249e565b606091505b50915091506124af878383876124ba565b979650505050505050565b606083156125285782515f03612521576001600160a01b0385163b6125215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610711565b508161083b565b61083b838381511561253d5781518083602001fd5b8060405162461bcd60e51b81526004016107119190612c75565b604051806120000160405280610100906020820280368337509192915050565b80356001600160401b038116811461258d575f5ffd5b919050565b5f5f5f606084860312156125a4575f5ffd5b6125ad84612577565b92506125bb60208501612577565b91506125c960408501612577565b90509250925092565b6001600160a01b0381168114610796575f5ffd5b5f602082840312156125f6575f5ffd5b8135612601816125d2565b9392505050565b8015158114610796575f5ffd5b5f5f5f60608486031215612627575f5ffd5b61263084612577565b925060208401359150604084013561264781612608565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215612677575f5ffd5b8235612682816125d2565b915060208301356001600160401b0381111561269c575f5ffd5b8301601f810185136126ac575f5ffd5b80356001600160401b038111156126c5576126c5612652565b604051601f8201601f19908116603f011681016001600160401b03811182821017156126f3576126f3612652565b60405281815282820160200187101561270a575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff8116811461258d575f5ffd5b5f60a08284031215611f3c575f5ffd5b5f5f5f60e0848603121561275e575f5ffd5b61276784612729565b925061277560208501612577565b91506125c9856040860161273c565b5f5f60408385031215612795575f5ffd5b61279e83612577565b91506127ac60208401612729565b90509250929050565b5f5f604083850312156127c6575f5ffd5b8235915060208301356127d881612608565b809150509250929050565b5f5f5f5f5f5f5f610140888a0312156127fa575f5ffd5b61280388612577565b9650602088013595506040880135945061281f60608901612729565b935061282e8960808a0161273c565b92506101208801356001600160401b03811115612849575f5ffd5b8801601f81018a13612859575f5ffd5b80356001600160401b0381111561286e575f5ffd5b8a60208260051b8401011115612882575f5ffd5b602082019350809250505092959891949750929550565b5f5f5f606084860312156128ab575f5ffd5b83356125ad816125d2565b5f5f5f5f608085870312156128c9575f5ffd5b84359350602085013592506128e060408601612577565b91506128ee60608601612729565b905092959194509250565b5f5f5f5f610100858703121561290d575f5ffd5b612917868661273c565b935061292560a08601612577565b925061293360c08601612577565b91506128ee60e08601612729565b5f60208284031215612951575f5ffd5b5035919050565b5f5f60408385031215612969575f5ffd5b8235612974816125d2565b915060208301356127d8816125d2565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215612a2c575f5ffd5b8151612601816125d2565b5f60208284031215612a47575f5ffd5b813560ff81168114612601575f5ffd5b5f60208284031215612a67575f5ffd5b610d2682612729565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160290811690818114612aa657612aa6612a70565b5092915050565b6001600160401b038281168282160390811115610d2957610d29612a70565b5f60208284031215612adc575f5ffd5b610d2682612577565b81810381811115610d2957610d29612a70565b602080825281018290525f6001600160fb1b03831115612b16575f5ffd5b8260051b80856040850137919091016040019392505050565b80820180821115610d2957610d29612a70565b5f60208284031215612b52575f5ffd5b5051919050565b634e487b7160e01b5f52601260045260245ffd5b5f82612b7b57612b7b612b59565b500490565b8082028115828204841417610d2957610d29612a70565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f82612c0457612c04612b59565b500690565b5f60208284031215612c19575f5ffd5b815161260181612608565b634e487b7160e01b5f52600160045260245ffd5b5f5b83811015612c52578181015183820152602001612c3a565b50505f910152565b5f8251612c6b818460208701612c38565b9190910192915050565b602081525f8251806020840152612c93816040850160208701612c38565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f240fa53ec49467ff17711071b659d823b30a1d1098808cfc0f147a35379dcce64736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000010001": { - "contractName": "TaikoL2", + "contractName": "TaikoAnchor", "storage": { "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000010002", "0x00000000000000000000000000000000000000000000000000000000000000fe": "0x0000000000000000000000000000000000000000000000000000000000007e7e", "0x00000000000000000000000000000000000000000000000000000000000000fd": "0x0000000000000000000000000000000000000000000000000000000000000000", "0x00000000000000000000000000000000000000000000000000000000000000fc": "0xf167b245aa70c0a5e2f44cd65a94f2b1c5c9e8c8ab059940e4bf1c47d7a39557", @@ -289,15 +283,15 @@ "balance": "0x0" }, "0x0167001000000000000000000000000000010002": { - "contractName": "RollupAddressManagerImpl", + "contractName": "RollupResolverImpl", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610300578063a86f9d9e1461031d578063d8f4648f1461033c578063e07baba61461035b578063e30c397814610391578063f2fde38b146103ae575f5ffd5b80635c975abb14610290578063715018a6146102b057806379ba5097146102c45780638456cb59146102d85780638abf6077146102ec575f5ffd5b80633ab76e9f116100ee5780633ab76e9f146102095780633eb6b8cf146102285780633f4ba83a146102475780634f1ef2861461025b57806352d1902d1461026e575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c65780633659cfe6146101ea575b5f5ffd5b348015610135575f5ffd5b5061013e6103cd565b005b34801561014b575f5ffd5b5061013e61015a36600461119f565b61047d565b34801561016a575f5ffd5b506101a96101793660046111d5565b6001600160401b03919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d1575f5ffd5b506101da610544565b60405190151581526020016101bd565b3480156101f5575f5ffd5b5061013e61020436600461119f565b61055c565b348015610214575f5ffd5b506097546101a9906001600160a01b031681565b348015610233575f5ffd5b506101a961024236600461120c565b610623565b348015610252575f5ffd5b5061013e610637565b61013e610269366004611259565b61064b565b348015610279575f5ffd5b50610282610700565b6040519081526020016101bd565b34801561029b575f5ffd5b506101da60c954610100900460ff1660021490565b3480156102bb575f5ffd5b5061013e6107b1565b3480156102cf575f5ffd5b5061013e6107c2565b3480156102e3575f5ffd5b5061013e610839565b3480156102f7575f5ffd5b506101a961084c565b34801561030b575f5ffd5b506033546001600160a01b03166101a9565b348015610328575f5ffd5b506101a961033736600461131c565b61085a565b348015610347575f5ffd5b5061013e610356366004611346565b61086d565b348015610366575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101bd565b34801561039c575f5ffd5b506065546001600160a01b03166101a9565b3480156103b9575f5ffd5b5061013e6103c836600461119f565b610949565b6103d56109ba565b5f54600290610100900460ff161580156103f557505f5460ff8083169116105b61041a5760405162461bcd60e51b815260040161041190611383565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff161580801561049b57505f54600160ff909116105b806104b45750303b1580156104b457505f5460ff166001145b6104d05760405162461bcd60e51b815260040161041190611383565b5f805460ff1916600117905580156104f1575f805461ff0019166101001790555b6104fb8230610a14565b8015610540575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261055360c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100021630036105a45760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b03166105d6610a53565b6001600160a01b0316146105fc5760405162461bcd60e51b81526004016104119061141d565b61060581610a6e565b604080515f8082526020820190925261062091839190610a76565b50565b5f61062f848484610be0565b949350505050565b61063f610c3c565b610649335f610ccc565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100021630036106935760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b03166106c5610a53565b6001600160a01b0316146106eb5760405162461bcd60e51b81526004016104119061141d565b6106f482610a6e565b61054082826001610a76565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000010002161461079f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610411565b505f5160206115565f395f51905f5290565b6107b96109ba565b6106495f610ce5565b60655433906001600160a01b031681146108305760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610411565b61062081610ce5565b610841610cfe565b610649336001610ccc565b5f610855610a53565b905090565b5f610866468484610be0565b9392505050565b6108756109ba565b6001600160401b0383165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108c65760405163a883089360e01b815260040160405180910390fd5b6001600160401b0384165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109516109ba565b606580546001600160a01b0383166001600160a01b031990911681179091556109826033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106495760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610411565b806001600160a01b038116610a3c5760405163538ba4f960e01b815260040160405180910390fd5b610a4583610d6f565b610a4e82610dcd565b505050565b5f5160206115565f395f51905f52546001600160a01b031690565b6106206109ba565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610aa957610a4e83610e3d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b03575060408051601f3d908101601f19168201909252610b0091810190611469565b60015b610b665760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610411565b5f5160206115565f395f51905f528114610bd45760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610411565b50610a4e838383610ed8565b5f610beb8484610f02565b90508180610c0157506001600160a01b03811615155b84849091610c3357604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610411565b50509392505050565b610c5060c954610100900460ff1660021490565b610c6d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561062081610fa4565b610d1260c954610100900460ff1660021490565b15610d305760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cc2565b5f54610100900460ff16610d955760405162461bcd60e51b815260040161041190611480565b610d9d610ff5565b610dbb6001600160a01b03821615610db55781610ce5565b33610ce5565b5060c9805461ff001916610100179055565b5f54610100900460ff16610df35760405162461bcd60e51b815260040161041190611480565b6001600160401b03461115610e1b5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381163b610eaa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610411565b5f5160206115565f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610ee18361101b565b5f82511180610eed5750805b15610a4e57610efc838361105a565b50505050565b6097545f906001600160a01b031680610f2e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f80573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062f91906114cb565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166106495760405162461bcd60e51b815260040161041190611480565b61102481610e3d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061086683836040518060600160405280602781526020016115766027913960605f5f856001600160a01b0316856040516110969190611508565b5f60405180830381855af49150503d805f81146110ce576040519150601f19603f3d011682016040523d82523d5f602084013e6110d3565b606091505b50915091506110e4868383876110ee565b9695505050505050565b6060831561115c5782515f03611155576001600160a01b0385163b6111555760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610411565b508161062f565b61062f83838151156111715781518083602001fd5b8060405162461bcd60e51b81526004016104119190611523565b6001600160a01b0381168114610620575f5ffd5b5f602082840312156111af575f5ffd5b81356108668161118b565b80356001600160401b03811681146111d0575f5ffd5b919050565b5f5f604083850312156111e6575f5ffd5b6111ef836111ba565b946020939093013593505050565b803580151581146111d0575f5ffd5b5f5f5f6060848603121561121e575f5ffd5b611227846111ba565b92506020840135915061123c604085016111fd565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561126a575f5ffd5b82356112758161118b565b915060208301356001600160401b0381111561128f575f5ffd5b8301601f8101851361129f575f5ffd5b80356001600160401b038111156112b8576112b8611245565b604051601f8201601f19908116603f011681016001600160401b03811182821017156112e6576112e6611245565b6040528181528282016020018710156112fd575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f6040838503121561132d575f5ffd5b8235915061133d602084016111fd565b90509250929050565b5f5f5f60608486031215611358575f5ffd5b611361846111ba565b92506020840135915060408401356113788161118b565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215611479575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156114db575f5ffd5b81516108668161118b565b5f5b838110156115005781810151838201526020016114e8565b50505f910152565b5f82516115198184602087016114e6565b9190910192915050565b602081525f82518060208401526115418160408501602087016114e6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c7f05ce9711ed9d578d8b6db6831e3b98ae749a3ad958172933eaf0e1d0d180164736f6c634300081b0033", + "code": "0x608060405260043610610110575f3560e01c80636c6563f61161009d5780638da5cb5b116100625780638da5cb5b1461029a578063a86f9d9e146102b7578063b490d87f146102d6578063e30c3978146102f5578063f2fde38b14610312575f5ffd5b80636c6563f61461022b578063715018a61461024a57806379ba50971461025e5780638456cb59146102725780638abf607714610286575f5ffd5b80633eb6b8cf116100e35780633eb6b8cf146101a35780633f4ba83a146101c25780634f1ef286146101d657806352d1902d146101e95780635c975abb1461020b575f5ffd5b806304f3bcec1461011457806319ab453c1461013f5780633075db56146101605780633659cfe614610184575b5f5ffd5b34801561011f575f5ffd5b50305b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014a575f5ffd5b5061015e610159366004610fac565b610331565b005b34801561016b575f5ffd5b50610174610443565b6040519015158152602001610136565b34801561018f575f5ffd5b5061015e61019e366004610fac565b61045b565b3480156101ae575f5ffd5b506101226101bd366004610fdb565b610522565b3480156101cd575f5ffd5b5061015e6105af565b61015e6101e4366004611036565b610633565b3480156101f4575f5ffd5b506101fd6106e8565b604051908152602001610136565b348015610216575f5ffd5b5061017460c954610100900460ff1660021490565b348015610236575f5ffd5b506101226102453660046110fc565b610799565b348015610255575f5ffd5b5061015e6107e3565b348015610269575f5ffd5b5061015e6107f4565b34801561027d575f5ffd5b5061015e61086b565b348015610291575f5ffd5b506101226108ea565b3480156102a5575f5ffd5b506033546001600160a01b0316610122565b3480156102c2575f5ffd5b506101226102d1366004611125565b6108f8565b3480156102e1575f5ffd5b5061015e6102f036600461114f565b610971565b348015610300575f5ffd5b506065546001600160a01b0316610122565b34801561031d575f5ffd5b5061015e61032c366004610fac565b6109f2565b5f54610100900460ff161580801561034f57505f54600160ff909116105b806103685750303b15801561036857505f5460ff166001145b6103d05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156103f1575f805461ff0019166101001790555b6103fa82610a63565b801561043f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261045260c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100021630036104a35760405162461bcd60e51b81526004016103c790611185565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b03166104d5610ac1565b6001600160a01b0316146104fb5760405162461bcd60e51b81526004016103c7906111d1565b61050481610adc565b604080515f8082526020820190925261051f91839190610ae4565b50565b5f30604051633632b1fb60e11b815267ffffffffffffffff861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015610581573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a5919061121d565b90505b9392505050565b6105c360c954610100900460ff1660021490565b6105e05760405163bae6e2a960e01b815260040160405180910390fd5b6105f460c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610631335f610c53565b565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000001000216300361067b5760405162461bcd60e51b81526004016103c790611185565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b03166106ad610ac1565b6001600160a01b0316146106d35760405162461bcd60e51b81526004016103c7906111d1565b6106dc82610adc565b61043f82826001610ae4565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000001000216146107875760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103c7565b505f51602061130a5f395f51905f5290565b5f83815260fb602090815260408083208584529091529020546001600160a01b0316801515806107c65750815b6105a857604051631692906160e11b815260040160405180910390fd5b6107eb610c6c565b6106315f610cc6565b60655433906001600160a01b031681146108625760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016103c7565b61051f81610cc6565b61087f60c954610100900460ff1660021490565b1561089d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610631336001610c53565b5f6108f3610ac1565b905090565b5f30604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa15801561094d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a8919061121d565b610979610c6c565b5f83815260fb6020908152604080832085845282529182902080546001600160a01b038581166001600160a01b0319831681179093558451928352169181018290529091849186917f3fd0559a7b01eb7106f9d9ce79ec76bb44f608a295878cce50856e54dba83d35910160405180910390a350505050565b6109fa610c6c565b606580546001600160a01b0383166001600160a01b03199091168117909155610a2b6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f54610100900460ff16610a895760405162461bcd60e51b81526004016103c790611238565b610a91610cdf565b610aaf6001600160a01b03821615610aa95781610cc6565b33610cc6565b5060c9805461ff001916610100179055565b5f51602061130a5f395f51905f52546001600160a01b031690565b61051f610c6c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610b1c57610b1783610d05565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b76575060408051601f3d908101601f19168201909252610b7391810190611283565b60015b610bd95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016103c7565b5f51602061130a5f395f51905f528114610c475760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016103c7565b50610b17838383610da0565b604051630c2b8f8f60e11b815260040160405180910390fd5b6033546001600160a01b031633146106315760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c7565b606580546001600160a01b031916905561051f81610dca565b5f54610100900460ff166106315760405162461bcd60e51b81526004016103c790611238565b6001600160a01b0381163b610d725760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103c7565b5f51602061130a5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610da983610e1b565b5f82511180610db55750805b15610b1757610dc48383610e5a565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610e2481610d05565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606105a8838360405180606001604052806027815260200161132a6027913960605f5f856001600160a01b031685604051610e9691906112bc565b5f60405180830381855af49150503d805f8114610ece576040519150601f19603f3d011682016040523d82523d5f602084013e610ed3565b606091505b5091509150610ee486838387610eee565b9695505050505050565b60608315610f5c5782515f03610f55576001600160a01b0385163b610f555760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103c7565b5081610f66565b610f668383610f6e565b949350505050565b815115610f7e5781518083602001fd5b8060405162461bcd60e51b81526004016103c791906112d7565b6001600160a01b038116811461051f575f5ffd5b5f60208284031215610fbc575f5ffd5b81356105a881610f98565b80358015158114610fd6575f5ffd5b919050565b5f5f5f60608486031215610fed575f5ffd5b833567ffffffffffffffff81168114611004575f5ffd5b92506020840135915061101960408501610fc7565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215611047575f5ffd5b823561105281610f98565b9150602083013567ffffffffffffffff81111561106d575f5ffd5b8301601f8101851361107d575f5ffd5b803567ffffffffffffffff81111561109757611097611022565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156110c6576110c6611022565b6040528181528282016020018710156110dd575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f6060848603121561110e575f5ffd5b833592506020840135915061101960408501610fc7565b5f5f60408385031215611136575f5ffd5b8235915061114660208401610fc7565b90509250929050565b5f5f5f60608486031215611161575f5ffd5b8335925060208401359150604084013561117a81610f98565b809150509250925092565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f6020828403121561122d575f5ffd5b81516105a881610f98565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611293575f5ffd5b5051919050565b5f5b838110156112b457818101518382015260200161129c565b50505f910152565b5f82516112cd81846020870161129a565b9190910192915050565b602081525f82518060208401526112f581604085016020870161129a565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f17011760bcb447c31d558e05abbd733f146fe783752e77e1869d49352df3de164736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000010002": { - "contractName": "RollupAddressManager", + "contractName": "RollupResolver", "storage": { "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", @@ -313,7 +307,7 @@ "0x5dADBb58A8ACfCaec475a08bBB4054F8874A3A8b": { "contractName": "LibNetwork", "storage": {}, - "code": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220fa28e419f92948effce2eaec534c53f13c8015c95a6be7019674d64d2aac3ae164736f6c634300081b0033", + "code": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212203acc22e18ae0935d8599ecd5ae5ed1d248d7501dc7d8268c6e1b10524b5eb75764736f6c634300081b0033", "balance": "0x0" }, "0x0167001000000000000000000000000000010099": { @@ -363,7 +357,7 @@ "0x2589e1958c4e4f4a5f777b0b92a3170cc21771a8d3580331a71232f8624f7628": "0x00000000000000000000000000000000000000000000000000000000000fa000", "0x1f27de92fedf410197c8a09d0f2f03372d92b75c9889a6a61cf491395877fbcf": "0x00000000000000000000000000000000000000000000000000000000000fa000" }, - "code": "0x608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c8063395093511161006e578063395093511461011f57806370a082311461013257806395d89b411461015a578063a457c2d714610162578063a9059cbb14610175578063dd62ed3e14610188575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd578063313ce56714610110575b5f5ffd5b6100b261019b565b6040516100bf919061068a565b60405180910390f35b6100db6100d63660046106f0565b61022b565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b366004610718565b610244565b604051601281526020016100bf565b6100db61012d3660046106f0565b610267565b6100ef610140366004610752565b6001600160a01b03165f9081526020819052604090205490565b6100b2610288565b6100db6101703660046106f0565b610297565b6100db6101833660046106f0565b610316565b6100ef610196366004610772565b610323565b6060600380546101aa906107a3565b80601f01602080910402602001604051908101604052809291908181526020018280546101d6906107a3565b80156102215780601f106101f857610100808354040283529160200191610221565b820191905f5260205f20905b81548152906001019060200180831161020457829003601f168201915b5050505050905090565b5f3361023881858561034d565b60019150505b92915050565b5f33610251858285610470565b61025c8585856104e8565b506001949350505050565b5f336102388185856102798383610323565b61028391906107db565b61034d565b6060600480546101aa906107a3565b5f33816102a48286610323565b9050838110156103095760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61025c828686840361034d565b5f336102388185856104e8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610300565b6001600160a01b0382166104105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610300565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61047b8484610323565b90505f1981146104e257818110156104d55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610300565b6104e2848484840361034d565b50505050565b6001600160a01b03831661054c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610300565b6001600160a01b0382166105ae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610300565b6001600160a01b0383165f90815260208190526040902054818110156106255760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610300565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104e2565b602081525f82518060208401525f5b818110156106b65760208186018101516040868401015201610699565b505f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146106eb575f5ffd5b919050565b5f5f60408385031215610701575f5ffd5b61070a836106d5565b946020939093013593505050565b5f5f5f6060848603121561072a575f5ffd5b610733846106d5565b9250610741602085016106d5565b929592945050506040919091013590565b5f60208284031215610762575f5ffd5b61076b826106d5565b9392505050565b5f5f60408385031215610783575f5ffd5b61078c836106d5565b915061079a602084016106d5565b90509250929050565b600181811c908216806107b757607f821691505b6020821081036107d557634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561023e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220afb53222eb165673ba5dfc3c8883c6d8b4942e876e8c5b0c567a03996e20a58864736f6c634300081b0033", + "code": "0x608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c8063395093511161006e578063395093511461011f57806370a082311461013257806395d89b411461015a578063a457c2d714610162578063a9059cbb14610175578063dd62ed3e14610188575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd578063313ce56714610110575b5f5ffd5b6100b261019b565b6040516100bf919061068a565b60405180910390f35b6100db6100d63660046106f0565b61022b565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b366004610718565b610244565b604051601281526020016100bf565b6100db61012d3660046106f0565b610267565b6100ef610140366004610752565b6001600160a01b03165f9081526020819052604090205490565b6100b2610288565b6100db6101703660046106f0565b610297565b6100db6101833660046106f0565b610316565b6100ef610196366004610772565b610323565b6060600380546101aa906107a3565b80601f01602080910402602001604051908101604052809291908181526020018280546101d6906107a3565b80156102215780601f106101f857610100808354040283529160200191610221565b820191905f5260205f20905b81548152906001019060200180831161020457829003601f168201915b5050505050905090565b5f3361023881858561034d565b60019150505b92915050565b5f33610251858285610470565b61025c8585856104e8565b506001949350505050565b5f336102388185856102798383610323565b61028391906107db565b61034d565b6060600480546101aa906107a3565b5f33816102a48286610323565b9050838110156103095760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61025c828686840361034d565b5f336102388185856104e8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610300565b6001600160a01b0382166104105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610300565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61047b8484610323565b90505f1981146104e257818110156104d55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610300565b6104e2848484840361034d565b50505050565b6001600160a01b03831661054c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610300565b6001600160a01b0382166105ae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610300565b6001600160a01b0383165f90815260208190526040902054818110156106255760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610300565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104e2565b602081525f82518060208401525f5b818110156106b65760208186018101516040868401015201610699565b505f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146106eb575f5ffd5b919050565b5f5f60408385031215610701575f5ffd5b61070a836106d5565b946020939093013593505050565b5f5f5f6060848603121561072a575f5ffd5b610733846106d5565b9250610741602085016106d5565b929592945050506040919091013590565b5f60208284031215610762575f5ffd5b61076b826106d5565b9392505050565b5f5f60408385031215610783575f5ffd5b61078c836106d5565b915061079a602084016106d5565b90509250929050565b600181811c908216806107b757607f821691505b6020821081036107d557634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561023e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220869af61ba192d71b8c1d28cf90c6c223b1f37ff8f70da696b7a220e9bada3b1264736f6c634300081b0033", "balance": "0x0" } } \ No newline at end of file diff --git a/core/taiko_genesis/preconf_devnet.json b/core/taiko_genesis/preconf_devnet.json new file mode 100644 index 000000000000..7444c645fe9e --- /dev/null +++ b/core/taiko_genesis/preconf_devnet.json @@ -0,0 +1,199 @@ +{ + "0x661690Da28C8b78B0199019771771bAfb6A93969": { + "balance": "0x3635c9adc5dea00000" + }, + "0x79fcdef22feed20eddacbb2587640e45491b757f": { + "balance": "0x3635c9adc5dea00000" + }, + "0x0167010000000000000000000000000000000006": { + "contractName": "SharedResolverImpl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969" + }, + "code": "0x6080604052600436106100fa575f3560e01c80636c6563f6116100925780638abf6077116100625780638abf6077146102515780638da5cb5b14610265578063b490d87f14610282578063e30c3978146102a1578063f2fde38b146102be575f5ffd5b80636c6563f6146101f6578063715018a61461021557806379ba5097146102295780638456cb591461023d575f5ffd5b80633f4ba83a116100cd5780633f4ba83a1461018d5780634f1ef286146101a157806352d1902d146101b45780635c975abb146101d6575f5ffd5b806304f3bcec146100fe57806319ab453c146101295780633075db561461014a5780633659cfe61461016e575b5f5ffd5b348015610109575f5ffd5b50305b6040516001600160a01b0390911681526020015b60405180910390f35b348015610134575f5ffd5b50610148610143366004610e60565b6102dd565b005b348015610155575f5ffd5b5061015e6103ef565b6040519015158152602001610120565b348015610179575f5ffd5b50610148610188366004610e60565b610407565b348015610198575f5ffd5b506101486104ce565b6101486101af366004610e8d565b610552565b3480156101bf575f5ffd5b506101c8610607565b604051908152602001610120565b3480156101e1575f5ffd5b5061015e60c954610100900460ff1660021490565b348015610201575f5ffd5b5061010c610210366004610f51565b6106b8565b348015610220575f5ffd5b50610148610709565b348015610234575f5ffd5b5061014861071a565b348015610248575f5ffd5b50610148610791565b34801561025c575f5ffd5b5061010c610810565b348015610270575f5ffd5b506033546001600160a01b031661010c565b34801561028d575f5ffd5b5061014861029c366004610f8b565b61081e565b3480156102ac575f5ffd5b506065546001600160a01b031661010c565b3480156102c9575f5ffd5b506101486102d8366004610e60565b61089f565b5f54610100900460ff16158080156102fb57505f54600160ff909116105b806103145750303b15801561031457505f5460ff166001145b61037c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561039d575f805461ff0019166101001790555b6103a682610910565b80156103eb575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f60026103fe60c95460ff1690565b60ff1614905090565b6001600160a01b037f000000000000000000000000016701000000000000000000000000000000000616300361044f5760405162461bcd60e51b815260040161037390610fbd565b7f00000000000000000000000001670100000000000000000000000000000000066001600160a01b031661048161096e565b6001600160a01b0316146104a75760405162461bcd60e51b815260040161037390611009565b6104b081610989565b604080515f808252602082019092526104cb91839190610991565b50565b6104e260c954610100900460ff1660021490565b6104ff5760405163bae6e2a960e01b815260040160405180910390fd5b61051360c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610550335f610b00565b565b6001600160a01b037f000000000000000000000000016701000000000000000000000000000000000616300361059a5760405162461bcd60e51b815260040161037390610fbd565b7f00000000000000000000000001670100000000000000000000000000000000066001600160a01b03166105cc61096e565b6001600160a01b0316146105f25760405162461bcd60e51b815260040161037390611009565b6105fb82610989565b6103eb82826001610991565b5f306001600160a01b037f000000000000000000000000016701000000000000000000000000000000000616146106a65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610373565b505f5160206111275f395f51905f5290565b5f83815260fb602090815260408083208584529091529020546001600160a01b0316801515806106e55750815b61070257604051631692906160e11b815260040160405180910390fd5b9392505050565b610711610b19565b6105505f610b73565b60655433906001600160a01b031681146107885760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610373565b6104cb81610b73565b6107a560c954610100900460ff1660021490565b156107c35760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610550336001610b00565b5f61081961096e565b905090565b610826610b19565b5f83815260fb6020908152604080832085845282529182902080546001600160a01b038581166001600160a01b0319831681179093558451928352169181018290529091849186917f3fd0559a7b01eb7106f9d9ce79ec76bb44f608a295878cce50856e54dba83d35910160405180910390a350505050565b6108a7610b19565b606580546001600160a01b0383166001600160a01b031990911681179091556108d86033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f54610100900460ff166109365760405162461bcd60e51b815260040161037390611055565b61093e610b8c565b61095c6001600160a01b038216156109565781610b73565b33610b73565b5060c9805461ff001916610100179055565b5f5160206111275f395f51905f52546001600160a01b031690565b6104cb610b19565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156109c9576109c483610bb2565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a23575060408051601f3d908101601f19168201909252610a20918101906110a0565b60015b610a865760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610373565b5f5160206111275f395f51905f528114610af45760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610373565b506109c4838383610c4d565b604051630c2b8f8f60e11b815260040160405180910390fd5b6033546001600160a01b031633146105505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610373565b606580546001600160a01b03191690556104cb81610c77565b5f54610100900460ff166105505760405162461bcd60e51b815260040161037390611055565b6001600160a01b0381163b610c1f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610373565b5f5160206111275f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610c5683610cc8565b5f82511180610c625750805b156109c457610c718383610d07565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610cd181610bb2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061070283836040518060600160405280602781526020016111476027913960605f5f856001600160a01b031685604051610d4391906110d9565b5f60405180830381855af49150503d805f8114610d7b576040519150601f19603f3d011682016040523d82523d5f602084013e610d80565b606091505b5091509150610d9186838387610d9b565b9695505050505050565b60608315610e095782515f03610e02576001600160a01b0385163b610e025760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610373565b5081610e13565b610e138383610e1b565b949350505050565b815115610e2b5781518083602001fd5b8060405162461bcd60e51b815260040161037391906110f4565b80356001600160a01b0381168114610e5b575f5ffd5b919050565b5f60208284031215610e70575f5ffd5b61070282610e45565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610e9e575f5ffd5b610ea783610e45565b9150602083013567ffffffffffffffff811115610ec2575f5ffd5b8301601f81018513610ed2575f5ffd5b803567ffffffffffffffff811115610eec57610eec610e79565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610f1b57610f1b610e79565b604052818152828201602001871015610f32575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215610f63575f5ffd5b833592506020840135915060408401358015158114610f80575f5ffd5b809150509250925092565b5f5f5f60608486031215610f9d575f5ffd5b8335925060208401359150610fb460408501610e45565b90509250925092565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156110b0575f5ffd5b5051919050565b5f5b838110156110d15781810151838201526020016110b9565b50505f910152565b5f82516110ea8184602087016110b7565b9190910192915050565b602081525f82518060208401526111128160408501602087016110b7565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cea95311c3f20813610f4631b26d3a9acfd02e6c978fbdca8e76b1d289f36df064736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670100000000000000000000000000000000006": { + "contractName": "SharedResolver", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969", + "0xe5868eccbe729200743507b6a76ef4952ff4776d6f6e681ea64d7940675418c0": "0x0000000000000000000000001670100000000000000000000000000000000001", + "0xac615b65b35c3ba4f3c515a78b7c7087cf20a185f9b50892a5aee8f38a94a2a3": "0x0000000000000000000000001670100000000000000000000000000000000002", + "0x14cb34ed2e94c2835324f4eb54fd6848cf7921d0bf9f4fb32c4024aa57aa1984": "0x0000000000000000000000001670100000000000000000000000000000000003", + "0xb2033e35b11225145ffd6e0525438c45f3904a68265a4ffbb67d58cb05a01cc5": "0x0000000000000000000000001670100000000000000000000000000000000004", + "0x84e8aac80b10d1364654096d750848d40210c937caf853cdc47e8784ad6cf9d5": "0x0000000000000000000000001670100000000000000000000000000000000005", + "0x9a06f3c0b2f5a00a447c9f6319a508edf25cf66bc3f3c78f4ae49dd92666d942": "0x0000000000000000000000000167010000000000000000000000000000010096", + "0x9f59effaee3d6269d0c2edb48468d6b7b24b0d51e8dbf63ea89d415b3ba3c4c3": "0x0000000000000000000000000167010000000000000000000000000000010097", + "0xd2c72e61a4567b7f7a7370a9e5ee40577297986a376fbdb74245f5bd58472e83": "0x0000000000000000000000000167010000000000000000000000000000010098", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000000006" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167010000000000000000000000000000000001": { + "contractName": "BridgeImpl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969" + }, + "code": "0x6080604052600436106101fc575f3560e01c806379ba509711610113578063a730cdfb1161009d578063d0496d6a1161006d578063d0496d6a146105ce578063d1aaa5df14610616578063e30c397814610636578063eefbf17e14610653578063f2fde38b14610691575f5ffd5b8063a730cdfb14610564578063b8acae0e1461057a578063be880c8114610599578063c012fa77146105af575f5ffd5b80638abf6077116100e35780638abf6077146104b75780638da5cb5b146104cb5780638e3881a9146104e8578063913b16cb146105265780639efc7a2e14610545575f5ffd5b806379ba50971461043c5780637cbadfaa1461045057806382b5e889146104845780638456cb59146104a3575f5ffd5b80633c6cf4731161019457806352d1902d1161016457806352d1902d146103b65780635862f6e1146103ca5780635c975abb146103e957806360620c6b14610409578063715018a614610428575f5ffd5b80633c6cf473146103305780633f4ba83a1461036b578063422770fa1461037f5780634f1ef286146103a3575f5ffd5b80631bdb0037116101cf5780631bdb00371461029f5780632035065e146102c05780633075db56146102ed5780633659cfe614610311575f5ffd5b80630432873c1461020057806304f3bcec14610221578063069489a21461026c57806319ab453c14610280575b5f5ffd5b34801561020b575f5ffd5b5061021f61021a366004612e75565b6106b0565b005b34801561022c575f5ffd5b507f00000000000000000000000016701000000000000000000000000000000000065b6040516001600160a01b0390911681526020015b60405180910390f35b348015610277575f5ffd5b5061021f6109ae565b34801561028b575f5ffd5b5061021f61029a366004612ee7565b610a65565b6102b26102ad366004612f02565b610b2b565b60405161026392919061308e565b3480156102cb575f5ffd5b506102df6102da3660046130a6565b610ee1565b604051610263929190613163565b3480156102f8575f5ffd5b506103016113a1565b6040519015158152602001610263565b34801561031c575f5ffd5b5061021f61032b366004612ee7565b6113b9565b34801561033b575f5ffd5b5061035e61034a36600461318e565b60fc6020525f908152604090205460ff1681565b60405161026391906131a5565b348015610376575f5ffd5b5061021f611480565b34801561038a575f5ffd5b5061039562030d4081565b604051908152602001610263565b61021f6103b1366004613279565b611504565b3480156103c1575f5ffd5b506103956115b9565b3480156103d5575f5ffd5b506103016103e43660046130a6565b61166b565b3480156103f4575f5ffd5b5061030160c954610100900460ff1660021490565b348015610414575f5ffd5b50610301610423366004612f02565b6116e0565b348015610433575f5ffd5b5061021f6117ae565b348015610447575f5ffd5b5061021f6117bf565b34801561045b575f5ffd5b5061046f61046a36600461318e565b611836565b60405163ffffffff9091168152602001610263565b34801561048f575f5ffd5b5061021f61049e366004612ee7565b611854565b3480156104ae575f5ffd5b5061021f6118d4565b3480156104c2575f5ffd5b5061024f611953565b3480156104d6575f5ffd5b506033546001600160a01b031661024f565b3480156104f3575f5ffd5b506105076105023660046132db565b611961565b6040805192151583526001600160a01b03909116602083015201610263565b348015610531575f5ffd5b5061021f610540366004612f02565b61198d565b348015610550575f5ffd5b5061021f61055f3660046130a6565b611b7c565b34801561056f575f5ffd5b5061046f6201d4c081565b348015610585575f5ffd5b506103016105943660046130a6565b611e80565b3480156105a4575f5ffd5b5061046f620c350081565b3480156105ba575f5ffd5b506103956105c93660046133f4565b611ee1565b3480156105d9575f5ffd5b506105e2611f10565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610263565b348015610621575f5ffd5b5061039561063036600461318e565b60031890565b348015610641575f5ffd5b506065546001600160a01b031661024f565b34801561065e575f5ffd5b5060fb5461067990600160401b90046001600160401b031681565b6040516001600160401b039091168152602001610263565b34801561069c575f5ffd5b5061021f6106ab366004612ee7565b611fb7565b6106c060e0830160c084016132db565b46816001600160401b0316146106e957604051631c6c777560e31b815260040160405180910390fd5b6106f960a08401608085016132db565b6001600160401b0381161580610717575046816001600160401b0316145b1561073557604051631c6c777560e31b815260040160405180910390fd5b61074960c954610100900460ff1660021490565b156107675760405163bae6e2a960e01b815260040160405180910390fd5b600261077560c95460ff1690565b60ff16036107965760405163dfc60d8560e01b815260040160405180910390fd5b6107a06002612028565b5f6107ad6105c986613425565b90506107ba81600161203e565b6107c8856101200135612090565b6107e5576040516335856fbd60e21b815260040160405180910390fd5b5f61080a866108056d7369676e616c5f7365727669636560901b5f612131565b6121ca565b156108555761084e8661012001356188b860405180602001604052805f8152508960e001602081019061083d9190612ee7565b6001600160a01b03169291906122c1565b90506108cf565b6108656060870160408801613430565b63ffffffff1615806108745750845b80156108a2575061088c610100870160e08801612ee7565b6001600160a01b0316336001600160a01b031614155b156108c0576040516372b6e1c360e11b815260040160405180910390fd5b6108cc86835a5f6122fe565b90505b80156108e5576108e0826002612422565b61099c565b8415610983576108f6826003612422565b6109116d7369676e616c5f7365727669636560901b5f612131565b60405163019b28af60e61b81526003841860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af1158015610959573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097d9190613449565b5061099c565b60405163161e3ead60e01b815260040160405180910390fd5b50506109a86001612028565b50505050565b6109b66124df565b5f54600290610100900460ff161580156109d657505f5460ff8083169116105b6109fb5760405162461bcd60e51b81526004016109f290613460565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff1615808015610a8357505f54600160ff909116105b80610a9c5750303b158015610a9c57505f5460ff166001145b610ab85760405162461bcd60e51b81526004016109f290613460565b5f805460ff191660011790558015610ad9575f805461ff0019166101001790555b610ae282612539565b8015610b27575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610b9160c0840160a08501612ee7565b6001600160a01b038116610bb85760405163538ba4f960e01b815260040160405180910390fd5b610bc9610100850160e08601612ee7565b6001600160a01b038116610bf05760405163538ba4f960e01b815260040160405180910390fd5b610c0060e0860160c087016132db565b6001600160401b0381161580610c1e575046816001600160401b0316145b15610c3c57604051631c6c777560e31b815260040160405180910390fd5b610c5060c954610100900460ff1660021490565b15610c6e5760405163bae6e2a960e01b815260040160405180910390fd5b6002610c7c60c95460ff1690565b60ff1603610c9d5760405163dfc60d8560e01b815260040160405180910390fd5b610ca76002612028565b610cb76060870160408801613430565b63ffffffff165f03610cff57610cd360408701602088016132db565b6001600160401b031615610cfa5760405163c9f5178760e01b815260040160405180910390fd5b610d27565b610d0886612597565b5f03610d27576040516308c2ad5360e01b815260040160405180910390fd5b5f610d3b61050260e0890160c08a016132db565b50905080610d5c57604051631c6c777560e31b815260040160405180910390fd5b34610d6d6040890160208a016132db565b610d85906001600160401b03166101208a01356134c2565b14610da357604051634ac2abdf60e11b815260040160405180910390fd5b610dac87613425565b60fb8054919650600160401b9091046001600160401b0316906008610dd0836134d5565b82546101009290920a6001600160401b03818102199093169183160217909155908116865233606087015246166080860152610e0b85611ee1565b9550857fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351786604051610e3d91906134ff565b60405180910390a2610e606d7369676e616c5f7365727669636560901b5f612131565b6001600160a01b03166366ca2bc0876040518263ffffffff1660e01b8152600401610e8d91815260200190565b6020604051808303815f875af1158015610ea9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ecd9190613449565b5050610ed96001612028565b505050915091565b5f5f610ef760c954610100900460ff1660021490565b15610f155760405163bae6e2a960e01b815260040160405180910390fd5b6002610f2360c95460ff1690565b60ff1603610f445760405163dfc60d8560e01b815260040160405180910390fd5b610f4e6002612028565b5f5a905046610f6360e0880160c089016132db565b6001600160401b031614610f8a57604051631c6c777560e31b815260040160405180910390fd5b610f9a60a08701608088016132db565b6001600160401b03161580610fc6575046610fbb60a08801608089016132db565b6001600160401b0316145b15610fe457604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152611018610100880160e08901612ee7565b6001600160a01b03163314801560608301526110875761103e6060880160408901613430565b63ffffffff165f03611063576040516372b6e1c360e11b815260040160405180910390fd5b62030d4085111561108757604051631e3b03c960e01b815260040160405180910390fd5b5f6110946105c989613425565b90506110a0815f61203e565b5f6110bc6d7369676e616c5f7365727669636560901b5f612131565b63ffffffff8816602085015290506110e681836110df60a08d0160808e016132db565b8b8b6125ea565b63ffffffff1660408085019190915261112590611108908b0160208c016132db565b611120906001600160401b03166101208c01356134c2565b612090565b611142576040516335856fbd60e21b815260040160405180910390fd5b5f61114d8a836121ca565b15611166575060029550600194506101208901356111ad565b5f8460600151611176575a61117f565b61117f8b612597565b90506111918b858388606001516122fe565b156111a257600297505f96506111ab565b60019750600296505b505b6111bd60408b0160208c016132db565b6001600160401b03161561131e576111db60408b0160208c016132db565b6111ee906001600160401b0316826134c2565b905083606001518015611215575061120c60608b0160408c01613430565b63ffffffff1615155b1561131e57604084015163ffffffff16614e20025a61125261123b6101408e018e613511565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168801919091036201d4c00181168087525f91839161127b9183919061269516565b0390505f61128f60608e0160408f01613430565b63ffffffff168d60200160208101906112a891906132db565b6001600160401b03168302816112c0576112c061355a565b0490505f48830290505f6113048f60200160208101906112e091906132db565b6001600160401b0316848410156112fc5784840160011c6112fe565b845b906126aa565b9586900395905061131833826188b86126be565b50505050505b611346816188b86113366101008e0160e08f01612ee7565b6001600160a01b031691906126be565b6113508388612422565b827f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8b866040516113829291906136f2565b60405180910390a250505050506113996001612028565b935093915050565b5f60026113b060c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000000011630036114015760405162461bcd60e51b81526004016109f290613746565b7f00000000000000000000000001670100000000000000000000000000000000016001600160a01b0316611433612701565b6001600160a01b0316146114595760405162461bcd60e51b81526004016109f290613792565b6114628161271c565b604080515f8082526020820190925261147d91839190612724565b50565b61149460c954610100900460ff1660021490565b6114b15760405163bae6e2a960e01b815260040160405180910390fd5b6114c560c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1611502335f61288e565b565b6001600160a01b037f000000000000000000000000016701000000000000000000000000000000000116300361154c5760405162461bcd60e51b81526004016109f290613746565b7f00000000000000000000000001670100000000000000000000000000000000016001600160a01b031661157e612701565b6001600160a01b0316146115a45760405162461bcd60e51b81526004016109f290613792565b6115ad8261271c565b610b2782826001612724565b5f306001600160a01b037f000000000000000000000000016701000000000000000000000000000000000116146116585760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016109f2565b505f5160206139ac5f395f51905f525b90565b5f4661167d60a08601608087016132db565b6001600160401b03161461169257505f6116d9565b6116d66116b06d7369676e616c5f7365727669636560901b5f612131565b6116bf6106306105c988613425565b6116cf60e0880160c089016132db565b868661293b565b90505b9392505050565b5f466116f260a08401608085016132db565b6001600160401b03161461170757505f919050565b6117226d7369676e616c5f7365727669636560901b5f612131565b6001600160a01b03166332676bc63061173d6105c986613425565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015611784573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a891906137de565b92915050565b6117b66124df565b6115025f6129bd565b60655433906001600160a01b0316811461182d5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016109f2565b61147d816129bd565b5f6117a8620c35006101a06020601f8601819004020160041b6137f9565b806001600160a01b03811661187c5760405163538ba4f960e01b815260040160405180910390fd5b6040516317066a5760e21b81523060048201526001600160a01b03831690635c19a95c906024015f604051808303815f87803b1580156118ba575f5ffd5b505af11580156118cc573d5f5f3e3d5ffd5b505050505050565b6118e860c954610100900460ff1660021490565b156119065760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a161150233600161288e565b5f61195c612701565b905090565b5f5f611978836562726964676560d01b60016129d6565b6001600160a01b038116151594909350915050565b61199d60e0820160c083016132db565b46816001600160401b0316146119c657604051631c6c777560e31b815260040160405180910390fd5b6119d660a08301608084016132db565b6001600160401b03811615806119f4575046816001600160401b0316145b15611a1257604051631c6c777560e31b815260040160405180910390fd5b611a2660c954610100900460ff1660021490565b15611a445760405163bae6e2a960e01b815260040160405180910390fd5b6002611a5260c95460ff1690565b60ff1603611a735760405163dfc60d8560e01b815260040160405180910390fd5b611a7d6002612028565b611a8e610100840160e08501612ee7565b6001600160a01b0316336001600160a01b031614611abf576040516372b6e1c360e11b815260040160405180910390fd5b5f611acc6105c985613425565b9050611ad981600161203e565b611ae4816003612422565b611aff6d7369676e616c5f7365727669636560901b5f612131565b60405163019b28af60e61b81526003831860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af1158015611b47573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6b9190613449565b5050611b776001612028565b505050565b611b8c60a08401608085016132db565b46816001600160401b031614611bb557604051631c6c777560e31b815260040160405180910390fd5b611bc560e0850160c086016132db565b6001600160401b0381161580611be3575046816001600160401b0316145b15611c0157604051631c6c777560e31b815260040160405180910390fd5b611c1560c954610100900460ff1660021490565b15611c335760405163bae6e2a960e01b815260040160405180910390fd5b6002611c4160c95460ff1690565b60ff1603611c625760405163dfc60d8560e01b815260040160405180910390fd5b611c6c6002612028565b5f611c796105c987613425565b9050611c85815f61203e565b5f611ca16d7369676e616c5f7365727669636560901b5f612131565b604051631933b5e360e11b8152306004820152602481018490529091506001600160a01b038216906332676bc690604401602060405180830381865afa158015611ced573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d1191906137de565b611d2e5760405163ab035ad560e01b815260040160405180910390fd5b611d4d8160038418611d4660e08b0160c08c016132db565b89896125ea565b50611d59826004612422565b611d67876101200135612090565b611d84576040516335856fbd60e21b815260040160405180910390fd5b611dad62bc399d60e11b611d9e60808a0160608b01612ee7565b6001600160a01b031690612a78565b15611e5157611dcc8230611dc760a08b0160808c016132db565b612b48565b611ddc6080880160608901612ee7565b6001600160a01b0316630178733a88610120013589856040518463ffffffff1660e01b8152600401611e0f929190613815565b5f604051808303818588803b158015611e26575f5ffd5b505af1158015611e38573d5f5f3e3d5ffd5b5050505050611e4c5f195f1b5f1980612b48565b611e6d565b611e6d6101208801356188b861133660c08b0160a08c01612ee7565b5050611e796001612028565b5050505050565b5f46611e9260e0860160c087016132db565b6001600160401b031614611ea757505f6116d9565b6116d6611ec56d7369676e616c5f7365727669636560901b5f612131565b611ed16105c987613425565b6116cf60a08801608089016132db565b5f81604051602001611ef39190613836565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611f87604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611f99575080515f19145b1561166857604051635ceed17360e01b815260040160405180910390fd5b611fbf6124df565b606580546001600160a01b0383166001600160a01b03199091168117909155611ff06033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b8060048111156120505761205061313b565b5f83815260fc602052604090205460ff1660048111156120725761207261313b565b14610b27576040516319d893ad60e21b815260040160405180910390fd5b5f5f6120ad6c38bab7ba30afb6b0b730b3b2b960991b6001612131565b90506001600160a01b0381166120c65750600192915050565b6040516315c638fb60e31b81525f6004820152602481018490526001600160a01b0382169063ae31c7d8906044015f604051808303815f87803b15801561210b575f5ffd5b505af192505050801561211c575060015b61212857505f92915050565b50600192915050565b5f7f0000000000000000000000001670100000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa1580156121a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d9919061386c565b5f806121de61012085016101008601612ee7565b6001600160a01b0316036121f4575060016117a8565b3061220761012085016101008601612ee7565b6001600160a01b03160361221d575060016117a8565b6001600160a01b03821661223961012085016101008601612ee7565b6001600160a01b03160361224f575060016117a8565b600461225f610140850185613511565b9050101580156122965750637f07c94760e01b612280610140850185613511565b61228991613887565b6001600160e01b03191614155b80156116d957506116d96122b261012085016101008601612ee7565b6001600160a01b03163b151590565b5f6001600160a01b0385166122e957604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f306123106080870160608801612ee7565b6001600160a01b031603612326576123266138bf565b6101208501351580156123465750612342610140860186613511565b1590505b156123535750600161241a565b825f0361236157505f61241a565b612385846123756080880160608901612ee7565b611dc760a0890160808a016132db565b5f61239861012087016101008801612ee7565b90506101208601355f6123af610140890189613511565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a90508515612409576124098188612b9d565b6124155f198080612b48565b505050505b949350505050565b8060048111156124345761243461313b565b5f83815260fc602052604090205460ff1660048111156124565761245661313b565b03612474576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff1916600183600481111561249e5761249e61313b565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516124d391906131a5565b60405180910390a25050565b6033546001600160a01b031633146115025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109f2565b5f54610100900460ff1661255f5760405162461bcd60e51b81526004016109f2906138d3565b612567612bb1565b6125856001600160a01b0382161561257f57816129bd565b336129bd565b5060c9805461ff001916610100179055565b5f806125b16125aa610140850185613511565b9050611836565b63ffffffff169050806125e26125cd6060860160408701613430565b63ffffffff168361269590919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed8561260f876562726964676560d01b5f6129d6565b8887876040518663ffffffff1660e01b815260040161263295949392919061391e565b6020604051808303815f875af192505050801561266c575060408051601f3d908101601f1916820190925261266991810190613449565b60015b612689576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f8183116126a357816116d9565b5090919050565b5f8183116126b857826116d9565b50919050565b815f036126ca57505050565b6126e483838360405180602001604052805f8152506122c1565b611b7757604051634c67134d60e11b815260040160405180910390fd5b5f5160206139ac5f395f51905f52546001600160a01b031690565b61147d6124df565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561275757611b7783612bd7565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156127b1575060408051601f3d908101601f191682019092526127ae91810190613449565b60015b6128145760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016109f2565b5f5160206139ac5f395f51905f5281146128825760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016109f2565b50611b77838383612c72565b6033546001600160a01b03838116911614806128d657506128c16d636861696e5f7761746368646f6760901b6001612131565b6001600160a01b0316826001600160a01b0316145b156128df575050565b80801561291957506129046e6272696467655f7761746368646f6760881b6001612131565b6001600160a01b0316826001600160a01b0316145b15612922575050565b6040516395383ea160e01b815260040160405180910390fd5b5f856001600160a01b031663ce9d082085612960876562726964676560d01b5f6129d6565b8887876040518663ffffffff1660e01b815260040161298395949392919061391e565b5f6040518083038186803b158015612999575f5ffd5b505afa9250505080156129aa575060015b6129b557505f61268c565b50600161268c565b606580546001600160a01b031916905561147d81612c96565b5f7f0000000000000000000000001670100000000000000000000000000000000006604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015612a54573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d6919061386c565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251612ad4919061395f565b5f60405180830381855afa9150503d805f8114612b0c576040519150601f19603f3d011682016040523d82523d5f602084013e612b11565b606091505b5091509150818015612b24575080516020145b15612b405780806020019051810190612b3d91906137de565b92505b505092915050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b612ba8603f8261397a565b821015610b2757fe5b5f54610100900460ff166115025760405162461bcd60e51b81526004016109f2906138d3565b6001600160a01b0381163b612c445760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016109f2565b5f5160206139ac5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b612c7b83612ce7565b5f82511180612c875750805b15611b77576109a88383612d26565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b612cf081612bd7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606116d983836040518060600160405280602781526020016139cc6027913960605f5f856001600160a01b031685604051612d62919061395f565b5f60405180830381855af49150503d805f8114612d9a576040519150601f19603f3d011682016040523d82523d5f602084013e612d9f565b606091505b5091509150612db086838387612dba565b9695505050505050565b60608315612e285782515f03612e21576001600160a01b0385163b612e215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109f2565b508161241a565b61241a8383815115612e3d5781518083602001fd5b8060405162461bcd60e51b81526004016109f29190613999565b5f61016082840312156126b8575f5ffd5b801515811461147d575f5ffd5b5f5f60408385031215612e86575f5ffd5b82356001600160401b03811115612e9b575f5ffd5b612ea785828601612e57565b9250506020830135612eb881612e68565b809150509250929050565b6001600160a01b038116811461147d575f5ffd5b8035612ee281612ec3565b919050565b5f60208284031215612ef7575f5ffd5b81356116d981612ec3565b5f60208284031215612f12575f5ffd5b81356001600160401b03811115612f27575f5ffd5b61241a84828501612e57565b5f5b83811015612f4d578181015183820152602001612f35565b50505f910152565b5f8151808452612f6c816020860160208601612f33565b601f01601f19169290920160200192915050565b80516001600160401b031682525f6020820151612fa860208501826001600160401b03169052565b506040820151612fc0604085018263ffffffff169052565b506060820151612fdb60608501826001600160a01b03169052565b506080820151612ff660808501826001600160401b03169052565b5060a082015161301160a08501826001600160a01b03169052565b5060c082015161302c60c08501826001600160401b03169052565b5060e082015161304760e08501826001600160a01b03169052565b506101008201516130646101008501826001600160a01b03169052565b5061012082015161012084015261014082015161016061014085015261241a610160850182612f55565b828152604060208201525f6116d66040830184612f80565b5f5f5f604084860312156130b8575f5ffd5b83356001600160401b038111156130cd575f5ffd5b6130d986828701612e57565b93505060208401356001600160401b038111156130f4575f5ffd5b8401601f81018613613104575f5ffd5b80356001600160401b03811115613119575f5ffd5b86602082840101111561312a575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b6005811061315f5761315f61313b565b9052565b60408101613171828561314f565b600483106131815761318161313b565b8260208301529392505050565b5f6020828403121561319e575f5ffd5b5035919050565b602081016117a8828461314f565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b03811182821017156131ea576131ea6131b3565b60405290565b5f82601f8301126131ff575f5ffd5b81356001600160401b03811115613218576132186131b3565b604051601f8201601f19908116603f011681016001600160401b0381118282101715613246576132466131b3565b60405281815283820160200185101561325d575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561328a575f5ffd5b823561329581612ec3565b915060208301356001600160401b038111156132af575f5ffd5b6132bb858286016131f0565b9150509250929050565b80356001600160401b0381168114612ee2575f5ffd5b5f602082840312156132eb575f5ffd5b6116d9826132c5565b803563ffffffff81168114612ee2575f5ffd5b5f6101608284031215613318575f5ffd5b6133206131c7565b905061332b826132c5565b8152613339602083016132c5565b602082015261334a604083016132f4565b604082015261335b60608301612ed7565b606082015261336c608083016132c5565b608082015261337d60a08301612ed7565b60a082015261338e60c083016132c5565b60c082015261339f60e08301612ed7565b60e08201526133b16101008301612ed7565b61010082015261012082810135908201526101408201356001600160401b038111156133db575f5ffd5b6133e7848285016131f0565b6101408301525092915050565b5f60208284031215613404575f5ffd5b81356001600160401b03811115613419575f5ffd5b61241a84828501613307565b5f6117a83683613307565b5f60208284031215613440575f5ffd5b6116d9826132f4565b5f60208284031215613459575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156117a8576117a86134ae565b5f6001600160401b0382166001600160401b0381036134f6576134f66134ae565b60010192915050565b602081525f6116d96020830184612f80565b5f5f8335601e19843603018112613526575f5ffd5b8301803591506001600160401b0382111561353f575f5ffd5b602001915036819003821315613553575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e19843603018112613583575f5ffd5b83016020810192503590506001600160401b038111156135a1575f5ffd5b803603821315613553575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6135f1826135e4836132c5565b6001600160401b03169052565b5f6135fe602083016132c5565b6001600160401b03166020840152613618604083016132f4565b63ffffffff16604084015261362f60608301612ed7565b6001600160a01b03166060840152613649608083016132c5565b6001600160401b0316608084015261366360a08301612ed7565b6001600160a01b031660a084015261367d60c083016132c5565b6001600160401b031660c084015261369760e08301612ed7565b6001600160a01b031660e08401526136b26101008301612ed7565b6001600160a01b031661010084015261012082810135908401526136da61014083018361356e565b610160610140860152612b3d610160860182846135af565b60a081525f61370460a08301856135d7565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f602082840312156137ee575f5ffd5b81516116d981612e68565b63ffffffff81811683821601908111156117a8576117a86134ae565b604081525f61382760408301856135d7565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f6116d96080830184612f80565b5f6020828403121561387c575f5ffd5b81516116d981612ec3565b80356001600160e01b031981169060048410156138b8576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f6139546080830184866135af565b979650505050505050565b5f8251613970818460208701612f33565b9190910192915050565b5f8261399457634e487b7160e01b5f52601260045260245ffd5b500490565b602081525f6116d96020830184612f5556fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209ea3e4f491745e3e0efa206c55e7c6ba87494ee02b417d65271b22795d62b1c164736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670100000000000000000000000000000000001": { + "contractName": "Bridge", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000000001" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x033b2dc55cae685664a00000" + }, + "0x0167010000000000000000000000000000000002": { + "contractName": "ERC20VaultImpl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969" + }, + "code": "0x6080604052600436106101ba575f3560e01c806352d1902d116100f25780638456cb5911610092578063a90018a111610062578063a90018a114610514578063d56ad7ac14610534578063e30c39781461054a578063f2fde38b14610567575f5ffd5b80638456cb591461049f5780638abf6077146104b35780638da5cb5b146104c75780639aa8605c146104e4575f5ffd5b80636f390144116100cd5780636f39014414610445578063715018a61461046457806379ba5097146104785780637f07c9471461048c575f5ffd5b806352d1902d146103d15780635c975abb146103e557806367090ccf14610405575f5ffd5b80630ecd8be91161015d5780633075db56116101385780633075db56146103775780633659cfe61461038b5780633f4ba83a146103aa5780634f1ef286146103be575f5ffd5b80630ecd8be91461031a5780630ed434201461033957806319ab453c14610358575f5ffd5b806304f3bcec1161019857806304f3bcec14610254578063066fe7b41461028657806306fdde03146102cb5780630e7eeb79146102eb575f5ffd5b80630178733a146101be57806301ffc9a7146101d3578063040944ab14610207575b5f5ffd5b6101d16101cc36600461373d565b610586565b005b3480156101de575f5ffd5b506101f26101ed366004613783565b610722565b60405190151581526020015b60405180910390f35b348015610212575f5ffd5b5061023c6102213660046137aa565b6101316020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101fe565b34801561025f575f5ffd5b507f000000000000000000000000167010000000000000000000000000000000000661023c565b348015610291575f5ffd5b506102bd6102a03660046137d5565b61013060209081525f928352604080842090915290825290205481565b6040519081526020016101fe565b3480156102d6575f5ffd5b506a195c98cc8c17dd985d5b1d60aa1b6102bd565b3480156102f6575f5ffd5b506101f2610305366004613803565b61012f6020525f908152604090205460ff1681565b348015610325575f5ffd5b5061023c61033436600461381e565b610772565b348015610344575f5ffd5b506101d161035336600461392b565b610e80565b348015610363575f5ffd5b506101d1610372366004613803565b61116f565b348015610382575f5ffd5b506101f2611280565b348015610396575f5ffd5b506101d16103a5366004613803565b611298565b3480156103b5575f5ffd5b506101d161135c565b6101d16103cc366004613a36565b6113e0565b3480156103dc575f5ffd5b506102bd611495565b3480156103f0575f5ffd5b506101f260c954610100900460ff1660021490565b348015610410575f5ffd5b5061023c61041f3660046137d5565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b348015610450575f5ffd5b506102bd61045f366004613a82565b611546565b34801561046f575f5ffd5b506101d161159c565b348015610483575f5ffd5b506101d16115ad565b6101d161049a366004613ac7565b611624565b3480156104aa575f5ffd5b506101d16117ba565b3480156104be575f5ffd5b5061023c611839565b3480156104d2575f5ffd5b506033546001600160a01b031661023c565b3480156104ef575f5ffd5b506105036104fe366004613803565b611847565b6040516101fe959493929190613b80565b610527610522366004613bd9565b61199c565b6040516101fe9190613bf3565b34801561053f575f5ffd5b506102bd6276a70081565b348015610555575f5ffd5b506065546001600160a01b031661023c565b348015610572575f5ffd5b506101d1610581366004613803565b611dfa565b61059a60c954610100900460ff1660021490565b156105b85760405163bae6e2a960e01b815260040160405180910390fd5b60026105c660c95460ff1690565b60ff16036105e75760405163dfc60d8560e01b815260040160405180910390fd5b6105f16002611e6b565b6105f9611e81565b505f610609610140840184613ce3565b610617916004908290613d2c565b8101906106249190613d53565b90505f5f5f8380602001905181019061063d9190613dff565b5094509450505092505f61066d848860a001602081019061065e9190613803565b6106688587613f1d565b611f77565b905061069761012088013561068860c08a0160a08b01613803565b6001600160a01b031690612026565b6106a760c0880160a08901613803565b6001600160a01b0316867f3dea0f5955b148debf6212261e03bd80eaf8534bee43780452d16637dcc22dd586602001518487604051610707939291906001600160a01b039384168152919092166020820152604081019190915260600190565b60405180910390a3505050505061071e6001611e6b565b5050565b5f6001600160e01b0319821662bc399d60e11b148061075157506001600160e01b03198216637f07c94760e01b145b8061076c57506001600160e01b031982166301ffc9a760e01b145b92915050565b5f61077b612031565b600261078960c95460ff1690565b60ff16036107aa5760405163dfc60d8560e01b815260040160405180910390fd5b6107b46002611e6b565b6001600160a01b03821615806107ea57506001600160a01b038281165f90815261012d6020526040902054600160401b90041615155b806107fd57506001600160a01b0382163b155b1561081b5760405163dc63f98760e01b815260040160405180910390fd5b5f61082c6040850160208601613803565b6001600160a01b0316148061085557504661084a6020850185613f30565b6001600160401b0316145b1561087357604051638257f7f560e01b815260040160405180910390fd5b6001600160a01b0382165f90815261012f602052604090205460ff16156108ad576040516375c42fc160e01b815260040160405180910390fd5b5f610130816108bf6020870187613f30565b6001600160401b031681526020019081526020015f205f8560200160208101906108e99190613803565b6001600160a01b0316815260208101919091526040015f205490506109116276a70082613f1d565b4210156109315760405163231d35fb60e11b815260040160405180910390fd5b61012e5f6109426020870187613f30565b6001600160401b031681526020019081526020015f205f85602001602081019061096c9190613803565b6001600160a01b03908116825260208201929092526040015f20541691508115610cd2576001600160a01b038281165f90815261012d60209081526040808320815160a08101835281546001600160401b0381168252600160401b810490961693810193909352600160e01b90940460ff1690820152600183018054929391926060840191906109fb90613f4b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2790613f4b565b8015610a725780601f10610a4957610100808354040283529160200191610a72565b820191905f5260205f20905b815481529060010190602001808311610a5557829003601f168201915b50505050508152602001600282018054610a8b90613f4b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab790613f4b565b8015610b025780601f10610ad957610100808354040283529160200191610b02565b820191905f5260205f20905b815481529060010190602001808311610ae557829003601f168201915b505050505081525050905080604051602001610b1e9190613fe2565b6040516020818303038152906040528051906020012085604051602001610b459190614068565b6040516020818303038152906040528051906020012014610b7957604051632f9d1d7b60e11b815260040160405180910390fd5b6001600160a01b0383165f90815261012d6020526040812080546001600160e81b031916815590610bad60018301826136e5565b610bba600283015f6136e5565b50506001600160a01b0383165f81815261012f60205260409020805460ff19166001179055610bf09063b8f2e0c560e01b61208b565b8015610c115750610c116001600160a01b03851663b8f2e0c560e01b61208b565b15610cd05760405163b8f2e0c560e01b81526001600160a01b0385811660048301525f602483015284169063b8f2e0c5906044015f604051808303815f87803b158015610c5c575f5ffd5b505af1158015610c6e573d5f5f3e3d5ffd5b505060405163b8f2e0c560e01b81526001600160a01b038681166004830152600160248301528716925063b8f2e0c591506044015f604051808303815f87803b158015610cb9575f5ffd5b505af1158015610ccb573d5f5f3e3d5ffd5b505050505b505b6001600160a01b0383165f90815261012d602052604090208490610cf6828261420b565b5083905061012e5f610d0b6020880188613f30565b6001600160401b031681526020019081526020015f205f866020016020810190610d359190613803565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550426101305f865f016020810190610d8e9190613f30565b6001600160401b031681526020019081526020015f205f866020016020810190610db89190613803565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550836020016020810190610dee9190613803565b6001600160a01b0316610e046020860186613f30565b6001600160401b03167f031d68e1805917560c34a5f55a7dd91bef98f911190ed02cdbb53caedae6c39d8486610e3d60608a018a613ce3565b610e4a60808c018c613ce3565b610e5a60608e0160408f016142c9565b604051610e6d97969594939291906142e4565b60405180910390a35061076c6001611e6b565b6002610e8e60c95460ff1690565b60ff1603610eaf5760405163dfc60d8560e01b815260040160405180910390fd5b610eb96002611e6b565b610ecd60c954610100900460ff1660021490565b15610eeb5760405163bae6e2a960e01b815260040160405180910390fd5b60a08101511561102a575f610f08647461696b6f60d81b5f61215b565b9050806001600160a01b031663a4b235546040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f46573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6a919061433b565b610f8757604051631874710f60e01b815260040160405180910390fd5b608082015160405163888775d960e01b81526001600160401b0390911660048201525f906001600160a01b0383169063888775d99060240161014060405180830381865afa158015610fdb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fff9190614387565b5160a0840151909150811461102757604051630dc3ea9f60e31b815260040160405180910390fd5b50505b5f611046825f0151836020015184604001518560600151611546565b5f81815261013160205260409020549091506001600160a01b03161561107f57604051638dd940f760e01b815260040160405180910390fd5b5f818152610131602090815260409182902080546001600160a01b031916339081179091559084015184830151606086015193516323b872dd60e01b815260048101939093526001600160a01b039081166024840152604483019390935291909116906323b872dd906064016020604051808303815f875af1158015611107573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112b919061433b565b5060405133815281907f4e13900a0e52240bc42a70a941392f3766f6789416493003d0e9e400b0ef32ae9060200160405180910390a25061116c6001611e6b565b50565b5f54610100900460ff161580801561118d57505f54600160ff909116105b806111a65750303b1580156111a657505f5460ff166001145b61120e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561122f575f805461ff0019166101001790555b611238826121f4565b801561071e575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b5f600261128f60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000000021630036112e05760405162461bcd60e51b81526004016112059061444a565b7f00000000000000000000000001670100000000000000000000000000000000026001600160a01b0316611312612252565b6001600160a01b0316146113385760405162461bcd60e51b815260040161120590614496565b6113418161226d565b604080515f8082526020820190925261116c91839190612275565b61137060c954610100900460ff1660021490565b61138d5760405163bae6e2a960e01b815260040160405180910390fd5b6113a160c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16113de335f6123e4565b565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000000021630036114285760405162461bcd60e51b81526004016112059061444a565b7f00000000000000000000000001670100000000000000000000000000000000026001600160a01b031661145a612252565b6001600160a01b0316146114805760405162461bcd60e51b815260040161120590614496565b6114898261226d565b61071e82826001612275565b5f306001600160a01b037f000000000000000000000000016701000000000000000000000000000000000216146115345760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401611205565b505f516020614f925f395f51905f5290565b6040805160208082018790526bffffffffffffffffffffffff19606087811b82168486015286901b166054830152606880830185905283518084039091018152608890920190925280519101205b949350505050565b6115a4612031565b6113de5f6123ec565b60655433906001600160a01b0316811461161b5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401611205565b61116c816123ec565b61163860c954610100900460ff1660021490565b156116565760405163bae6e2a960e01b815260040160405180910390fd5b600261166460c95460ff1690565b60ff16036116855760405163dfc60d8560e01b815260040160405180910390fd5b61168f6002611e6b565b5f80808080806116a1878901896144ed565b9550955095509550955095505f6116b6612405565b90506116c185612524565b5f828152610131602052604090205485906001600160a01b03168015611701575f8481526101316020526040902080546001600160a01b03191690559050805b5f6117118a84610668898b613f1d565b90506117266001600160a01b03891634612026565b835160408086015160208d81015183516001600160a01b0388811682526001600160401b03909416928101929092528216818401528482166060820152608081018b905260a081018a905291518b821693918d16927f153364fe598dfe35e31cd640831e4a90a9effca5f12d8e8ccf2fcb2e14d35bb8919081900360c00190a45050505050505050505061071e6001611e6b565b6117ce60c954610100900460ff1660021490565b156117ec5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16113de3360016123e4565b5f611842612252565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b84046001600160a01b031693600160e01b900460ff1692909161188f90613f4b565b80601f01602080910402602001604051908101604052809291908181526020018280546118bb90613f4b565b80156119065780601f106118dd57610100808354040283529160200191611906565b820191905f5260205f20905b8154815290600101906020018083116118e957829003601f168201915b50505050509080600201805461191b90613f4b565b80601f016020809104026020016040519081016040528092919081815260200182805461194790613f4b565b80156119925780601f1061196957610100808354040283529160200191611992565b820191905f5260205f20905b81548152906001019060200180831161197557829003601f168201915b5050505050905085565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082018390526101008201839052610120820192909252610140810191909152611a0a60c954610100900460ff1660021490565b15611a285760405163bae6e2a960e01b815260040160405180910390fd5b6002611a3660c95460ff1690565b60ff1603611a575760405163dfc60d8560e01b815260040160405180910390fd5b611a616002611e6b565b8160c001355f03611a8557604051634299323b60e11b815260040160405180910390fd5b5f611a9660a0840160808501613803565b6001600160a01b031603611abd576040516303f8a7d360e01b815260040160405180910390fd5b61012f5f611ad160a0850160808601613803565b6001600160a01b0316815260208101919091526040015f205460ff1615611b0b576040516375c42fc160e01b815260040160405180910390fd5b611b1b6080830160608401613f30565b6001600160401b0316341015611b4457604051630178ce0b60e31b815260040160405180910390fd5b5f611b586562726964676560d01b5f61215b565b90505f5f5f5f611b688588612560565b93509350935093505f6040518061016001604052805f6001600160401b03168152602001896060016020810190611b9f9190613f30565b6001600160401b03168152602001611bbd60c08b0160a08c01614605565b63ffffffff1681525f60208083018290526040830191909152336060830152608090910190611bee908b018b613f30565b6001600160401b031681526020015f6001600160a01b03168a6020016020810190611c199190613803565b6001600160a01b031603611c2d5733611c3d565b611c3d60408b0160208c01613803565b6001600160a01b03168152602090810190611c7490611c5e908c018c613f30565b6a195c98cc8c17dd985d5b1d60aa1b5b5f6129e6565b6001600160a01b03168152602001611c9260808b0160608c01613f30565b611ca5906001600160401b031634614620565b81526020018681525090505f866001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401611cde9190613bf3565b5f6040518083038185885af1158015611cf9573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052611d21919081019061463e565b98509050611d3560608a0160408b01613803565b6001600160a01b03168860a001516001600160a01b0316827f5f338013bf4edc4a223ee7b435dd1e5ba722013c222cfbbf3c66372fbf07f295885f01518d5f016020810190611d849190613f30565b8a602001518f6080016020810190611d9c9190613803565b604080516001600160401b0395861681529390941660208401526001600160a01b0391821683850152166060820152608081018a905260a0810189905290519081900360c00190a450505050505050611df56001611e6b565b919050565b611e02612031565b606580546001600160a01b0383166001600160a01b03199091168117909155611e336033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611eb281600161215b565b6001600160a01b0316336001600160a01b031614611ee3576040516395383ea160e01b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611f1f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f43919061475e565b60208101519092506001600160a01b03163314611f7357604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b031603611faa57506020830151611fa56001600160a01b0382168484612a88565b612015565b611fb384612aeb565b6040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052919250908216906340c10f19906044015f604051808303815f87803b158015611ffe575f5ffd5b505af1158015612010573d5f5f3e3d5ffd5b505050505b61201f8183612b2d565b9392505050565b61071e82825a612bbc565b6033546001600160a01b031633146113de5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611205565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b179052516120e791906147c6565b5f60405180830381855afa9150503d805f811461211f576040519150601f19603f3d011682016040523d82523d5f602084013e612124565b606091505b5091509150818015612137575080516020145b156121535780806020019051810190612150919061433b565b92505b505092915050565b5f7f0000000000000000000000001670100000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa1580156121d0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061201f91906147e1565b5f54610100900460ff1661221a5760405162461bcd60e51b8152600401611205906147fc565b612222612bff565b6122406001600160a01b0382161561223a57816123ec565b336123ec565b5060c9805461ff001916610100179055565b5f516020614f925f395f51905f52546001600160a01b031690565b61116c612031565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156122ad576122a883612c25565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612307575060408051601f3d908101601f1916820190925261230491810190614847565b60015b61236a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401611205565b5f516020614f925f395f51905f5281146123d85760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401611205565b506122a8838383612cc0565b61071e612031565b606580546001600160a01b031916905561116c81612cea565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b61243681600161215b565b6001600160a01b0316336001600160a01b031614612467576040516395383ea160e01b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156124a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124c7919061475e565b91505f6124e78360400151611c6e6a195c98cc8c17dd985d5b1d60aa1b90565b9050806001600160a01b031683602001516001600160a01b03161461251f57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b038116158061254257506001600160a01b03811630145b1561116c57604051635b50f3f960e01b815260040160405180910390fd5b6040805160a0810182525f8082526020820181905291810191909152606081810181905260808201819052905f80808061012d816125a460a08a0160808b01613803565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156127e1576040805160a08101825282546001600160401b0381168252600160401b81046001600160a01b03166020830152600160e01b900460ff16918101919091526001820180548391606084019161262490613f4b565b80601f016020809104026020016040519081016040528092919081815260200182805461265090613f4b565b801561269b5780601f106126725761010080835404028352916020019161269b565b820191905f5260205f20905b81548152906001019060200180831161267e57829003601f168201915b505050505081526020016002820180546126b490613f4b565b80601f01602080910402602001604051908101604052809291908181526020018280546126e090613f4b565b801561272b5780601f106127025761010080835404028352916020019161272b565b820191905f5260205f20905b81548152906001019060200180831161270e57829003601f168201915b505050505081525050945061276433308960c001358a60800160208101906127539190613803565b6001600160a01b0316929190612d3b565b61277460a0880160808901613803565b604051630852cd8d60e31b815260c089013560048201526001600160a01b0391909116906342966c68906024015f604051808303815f87803b1580156127b8575f5ffd5b505af11580156127ca573d5f5f3e3d5ffd5b505050508660c0013593508660e0013592506128b4565b6040518060a00160405280466001600160401b0316815260200188608001602081019061280e9190613803565b6001600160a01b0316815260200161283461282f60a08b0160808c01613803565b612d73565b60ff16815260200161285461284f60a08b0160808c01613803565b612e27565b815260200161287161286c60a08b0160808c01613803565b612ed1565b9052945061289261288860a0890160808a01613803565b8860c00135612f17565b93506128b16128a760a0890160808a01613803565b8860e00135612f17565b92505b60e08701351561295f575f886001600160a01b031663eefbf17e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061291f919061485e565b82546001600160401b0391909116915061295b908290600160401b90046001600160a01b031661295560608c0160408d01613803565b88611546565b9250505b30637f07c947863361297760608c0160408d01613803565b88888860405160200161298f96959493929190614879565b60408051601f19818403018152908290526129ac916024016148c0565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509550505092959194509250565b5f7f0000000000000000000000001670100000000000000000000000000000000006604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015612a64573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159491906147e1565b6040516001600160a01b0383166024820152604481018290526122a890849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613019565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611df55761076c826130ec565b5f612b496c38bab7ba30afb6b0b730b3b2b960991b600161215b565b90506001600160a01b038116156122a8576040516315c638fb60e31b81526001600160a01b0384811660048301526024820184905282169063ae31c7d8906044015f604051808303815f87803b158015612ba1575f5ffd5b505af1158015612bb3573d5f5f3e3d5ffd5b50505050505050565b815f03612bc857505050565b612be283838360405180602001604052805f8152506132e1565b6122a857604051634c67134d60e11b815260040160405180910390fd5b5f54610100900460ff166113de5760405162461bcd60e51b8152600401611205906147fc565b6001600160a01b0381163b612c925760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401611205565b5f516020614f925f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b612cc98361331e565b5f82511180612cd55750805b156122a857612ce4838361335d565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052612ce49085906323b872dd60e01b90608401612ab4565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f91829182916001600160a01b03861691612db891906147c6565b5f60405180830381855afa9150503d805f8114612df0576040519150601f19603f3d011682016040523d82523d5f602084013e612df5565b606091505b5091509150818015612e08575080516020145b612e13576012611594565b8080602001905181019061159491906148d2565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b03861691612e6d91906147c6565b5f60405180830381855afa9150503d805f8114612ea5576040519150601f19603f3d011682016040523d82523d5f602084013e612eaa565b606091505b509150915081612ec85760405180602001604052805f815250611594565b61159481613382565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b03861691612e6d91906147c6565b5f815f03612f2657505f61076c565b6040516370a0823160e01b815230600482015283905f906001600160a01b038316906370a0823190602401602060405180830381865afa158015612f6c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f909190614847565b9050612fa76001600160a01b038316333087612d3b565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015612feb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061300f9190614847565b6121509190614620565b5f61306d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166134ef9092919063ffffffff16565b905080515f148061308d57508080602001905181019061308d919061433b565b6122a85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611205565b5f5f6131006033546001600160a01b031690565b6020840151845160408087015160608801516080890151925161312996959493906024016148ed565b60408051601f198184030181529190526020810180516001600160e01b0316636c0db62b60e01b179052905061316f6c0627269646765645f657263323609c1b5f61215b565b8160405161317c9061371c565b61318792919061494f565b604051809103905ff0801580156131a0573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d602090815260409182902087518154928901519389015160ff16600160e01b0260ff60e01b1994909516600160401b026001600160e01b03199093166001600160401b039091161791909117919091169190911781556060850151919350849160018201906132229082614972565b50608082015160028201906132379082614972565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b0319168885169081179091559151885160608a015160808b0151848c01519451959850929095169516937fb6b427556e8cb0ebf9175da4bc48c64c4f56e44cfaf8c3ab5ebf8e2ea1309079936132d39391929190614a2c565b60405180910390a450919050565b5f6001600160a01b03851661330957604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b61332781612c25565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061201f8383604051806060016040528060278152602001614fb2602791396134fd565b606060408251106133a1578180602001905181019061076c9190614a64565b81516020036134dc575f5b60208160ff161080156133e15750828160ff16815181106133cf576133cf614a95565b01602001516001600160f81b03191615155b156133f857806133f081614aa9565b9150506133ac565b5f8160ff166001600160401b0381111561341457613414613865565b6040519080825280601f01601f19166020018201604052801561343e576020820181803683370190505b5090505f91505b60208260ff1610801561347a5750838260ff168151811061346857613468614a95565b01602001516001600160f81b03191615155b1561201f57838260ff168151811061349457613494614a95565b602001015160f81c60f81b818360ff16815181106134b4576134b4614a95565b60200101906001600160f81b03191690815f1a905350816134d481614aa9565b925050613445565b505060408051602081019091525f815290565b606061159484845f85613571565b60605f5f856001600160a01b03168560405161351991906147c6565b5f60405180830381855af49150503d805f8114613551576040519150601f19603f3d011682016040523d82523d5f602084013e613556565b606091505b509150915061356786838387613648565b9695505050505050565b6060824710156135d25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401611205565b5f5f866001600160a01b031685876040516135ed91906147c6565b5f6040518083038185875af1925050503d805f8114613627576040519150601f19603f3d011682016040523d82523d5f602084013e61362c565b606091505b509150915061363d87838387613648565b979650505050505050565b606083156136b65782515f036136af576001600160a01b0385163b6136af5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611205565b5081611594565b61159483838151156136cb5781518083602001fd5b8060405162461bcd60e51b815260040161120591906148c0565b5080546136f190613f4b565b5f825580601f10613700575050565b601f0160209004905f5260205f209081019061116c9190613729565b6104ca80614ac883390190565b5b80821115611f73575f815560010161372a565b5f5f6040838503121561374e575f5ffd5b82356001600160401b03811115613763575f5ffd5b83016101608186031215613775575f5ffd5b946020939093013593505050565b5f60208284031215613793575f5ffd5b81356001600160e01b03198116811461201f575f5ffd5b5f602082840312156137ba575f5ffd5b5035919050565b6001600160a01b038116811461116c575f5ffd5b5f5f604083850312156137e6575f5ffd5b8235915060208301356137f8816137c1565b809150509250929050565b5f60208284031215613813575f5ffd5b813561201f816137c1565b5f5f6040838503121561382f575f5ffd5b82356001600160401b03811115613844575f5ffd5b830160a08186031215613855575f5ffd5b915060208301356137f8816137c1565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b038111828210171561389b5761389b613865565b60405290565b60405161014081016001600160401b038111828210171561389b5761389b613865565b60405161016081016001600160401b038111828210171561389b5761389b613865565b604051601f8201601f191681016001600160401b038111828210171561390f5761390f613865565b604052919050565b6001600160401b038116811461116c575f5ffd5b5f60c082840312801561393c575f5ffd5b5060405160c081016001600160401b038111828210171561395f5761395f613865565b604052823581526020830135613974816137c1565b60208201526040830135613987816137c1565b60408201526060838101359082015260808301356139a481613917565b608082015260a0928301359281019290925250919050565b5f6001600160401b038211156139d4576139d4613865565b50601f01601f191660200190565b5f82601f8301126139f1575f5ffd5b8135602083015f613a09613a04846139bc565b6138e7565b9050828152858383011115613a1c575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215613a47575f5ffd5b8235613a52816137c1565b915060208301356001600160401b03811115613a6c575f5ffd5b613a78858286016139e2565b9150509250929050565b5f5f5f5f60808587031215613a95575f5ffd5b843593506020850135613aa7816137c1565b92506040850135613ab7816137c1565b9396929550929360600135925050565b5f5f60208385031215613ad8575f5ffd5b82356001600160401b03811115613aed575f5ffd5b8301601f81018513613afd575f5ffd5b80356001600160401b03811115613b12575f5ffd5b856020828401011115613b23575f5ffd5b6020919091019590945092505050565b5f5b83811015613b4d578181015183820152602001613b35565b50505f910152565b5f8151808452613b6c816020860160208601613b33565b601f01601f19169290920160200192915050565b6001600160401b03861681526001600160a01b038516602082015260ff8416604082015260a0606082018190525f90613bbb90830185613b55565b8281036080840152613bcd8185613b55565b98975050505050505050565b5f610100828403128015613beb575f5ffd5b509092915050565b60208152613c0d6020820183516001600160401b03169052565b5f6020830151613c2860408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b0381166101208401525061012083015161014083015261014083015161016080840152611594610180840182613b55565b5f5f8335601e19843603018112613cf8575f5ffd5b8301803591506001600160401b03821115613d11575f5ffd5b602001915036819003821315613d25575f5ffd5b9250929050565b5f5f85851115613d3a575f5ffd5b83861115613d46575f5ffd5b5050820193919092039150565b5f60208284031215613d63575f5ffd5b81356001600160401b03811115613d78575f5ffd5b611594848285016139e2565b8051611df581613917565b8051611df5816137c1565b60ff8116811461116c575f5ffd5b8051611df581613d9a565b5f82601f830112613dc2575f5ffd5b8151602083015f613dd5613a04846139bc565b9050828152858383011115613de8575f5ffd5b613df6836020830184613b33565b95945050505050565b5f5f5f5f5f5f60c08789031215613e14575f5ffd5b86516001600160401b03811115613e29575f5ffd5b870160a0818a031215613e3a575f5ffd5b613e42613879565b8151613e4d81613917565b81526020820151613e5d816137c1565b6020820152613e6e60408301613da8565b604082015260608201516001600160401b03811115613e8b575f5ffd5b613e978b828501613db3565b60608301525060808201516001600160401b03811115613eb5575f5ffd5b613ec18b828501613db3565b6080830152509650613ed7905060208801613d8f565b9450613ee560408801613d8f565b6060880151608089015160a090990151979a96995090979096909590945092505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561076c5761076c613f09565b5f60208284031215613f40575f5ffd5b813561201f81613917565b600181811c90821680613f5f57607f821691505b602082108103613f7d57634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160401b03815116825260018060a01b03602082015116602083015260ff60408201511660408301525f606082015160a06060850152613fc960a0850182613b55565b9050608083015184820360808601526121508282613b55565b602081525f61201f6020830184613f83565b8035611df581613d9a565b5f5f8335601e19843603018112614014575f5ffd5b83016020810192503590506001600160401b03811115614032575f5ffd5b803603821315613d25575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f823561407881613917565b6001600160401b0381166020840152506020830135614096816137c1565b6001600160a01b03166040838101919091528301356140b481613d9a565b60ff81166060840152506140cb6060840184613fff565b60a060808501526140e060c085018284614040565b9150506140f06080850185613fff565b848303601f190160a0860152613567838284614040565b601f8211156122a857805f5260205f20601f840160051c8101602085101561412c5750805b601f840160051c820191505b8181101561414b575f8155600101614138565b5050505050565b6001600160401b0383111561416957614169613865565b61417d836141778354613f4b565b83614107565b5f601f8411600181146141ae575f85156141975750838201355b5f19600387901b1c1916600186901b17835561414b565b5f83815260208120601f198716915b828110156141dd57868501358255602094850194600190920191016141bd565b50868210156141f9575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813561421681613917565b6001600160401b03811690508154816001600160401b031982161783556020840135614241816137c1565b6001600160e01b031991909116909117604091821b68010000000000000000600160e01b03161782555f9083013561427881613d9a565b825460ff60e01b191660e09190911b60ff60e01b161782555061429e6060830183613ce3565b6142ac818360018601614152565b50506142bb6080830183613ce3565b612ce4818360028601614152565b5f602082840312156142d9575f5ffd5b813561201f81613d9a565b6001600160a01b0388811682528716602082015260a0604082018190525f906143109083018789614040565b8281036060840152614323818688614040565b91505060ff8316608083015298975050505050505050565b5f6020828403121561434b575f5ffd5b8151801515811461201f575f5ffd5b80516bffffffffffffffffffffffff81168114611df5575f5ffd5b805162ffffff81168114611df5575f5ffd5b5f610140828403128015614399575f5ffd5b506143a26138a1565b825181526143b260208401613d84565b60208201526143c36040840161435a565b60408201526143d46060840161435a565b60608201526143e560808401613d84565b60808201526143f660a08401613d84565b60a082015261440760c08401613d84565b60c082015261441860e08401614375565b60e082015261442a6101008401613da8565b61010082015261443d6101208401614375565b6101208201529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b8035611df5816137c1565b5f5f5f5f5f5f60c08789031215614502575f5ffd5b86356001600160401b03811115614517575f5ffd5b870160a0818a031215614528575f5ffd5b614530613879565b813561453b81613917565b8152602082013561454b816137c1565b602082015261455c60408301613ff4565b604082015260608201356001600160401b03811115614579575f5ffd5b6145858b8285016139e2565b60608301525060808201356001600160401b038111156145a3575f5ffd5b6145af8b8285016139e2565b60808301525096506145c59050602088016144e2565b94506145d3604088016144e2565b959894975094956060810135955060808101359460a0909101359350915050565b63ffffffff8116811461116c575f5ffd5b5f60208284031215614615575f5ffd5b813561201f816145f4565b8181038181111561076c5761076c613f09565b8051611df5816145f4565b5f5f6040838503121561464f575f5ffd5b825160208401519092506001600160401b0381111561466c575f5ffd5b8301610160818603121561467e575f5ffd5b6146866138c4565b61468f82613d84565b815261469d60208301613d84565b60208201526146ae60408301614633565b60408201526146bf60608301613d8f565b60608201526146d060808301613d84565b60808201526146e160a08301613d8f565b60a08201526146f260c08301613d84565b60c082015261470360e08301613d8f565b60e08201526147156101008301613d8f565b61010082015261012082810151908201526101408201516001600160401b0381111561473f575f5ffd5b61474b87828501613db3565b6101408301525080925050509250929050565b5f606082840312801561476f575f5ffd5b50604051606081016001600160401b038111828210171561479257614792613865565b6040528251815260208301516147a7816137c1565b602082015260408301516147ba81613917565b60408201529392505050565b5f82516147d7818460208701613b33565b9190910192915050565b5f602082840312156147f1575f5ffd5b815161201f816137c1565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215614857575f5ffd5b5051919050565b5f6020828403121561486e575f5ffd5b815161201f81613917565b60c081525f61488b60c0830189613f83565b6001600160a01b0397881660208401529590961660408201526060810193909352608083019190915260a09091015292915050565b602081525f61201f6020830184613b55565b5f602082840312156148e2575f5ffd5b815161201f81613d9a565b6001600160a01b038781168252861660208201526001600160401b038516604082015260ff8416606082015260c0608082018190525f9061493090830185613b55565b82810360a08401526149428185613b55565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f9061159490830184613b55565b81516001600160401b0381111561498b5761498b613865565b61499f816149998454613f4b565b84614107565b6020601f8211600181146149d1575f83156149ba5750848201515b5f19600385901b1c1916600184901b17845561414b565b5f84815260208120601f198516915b82811015614a0057878501518255602094850194600190920191016149e0565b5084821015614a1d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f614a3e6060830186613b55565b8281036020840152614a508186613b55565b91505060ff83166040830152949350505050565b5f60208284031215614a74575f5ffd5b81516001600160401b03811115614a89575f5ffd5b61159484828501613db3565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff8103614abe57614abe613f09565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208ab99dfe5e9276cd70aeb902bc6881044f38d43400f263b94d455c3d2e4d9cc164736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670100000000000000000000000000000000002": { + "contractName": "ERC20Vault", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000201", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000000002" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167010000000000000000000000000000000003": { + "contractName": "ERC721VaultImpl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969" + }, + "code": "0x60806040526004361061013c575f3560e01c806352d1902d116100b35780638456cb591161006d5780638456cb59146103865780638abf60771461039a5780638da5cb5b146103ae5780639aa8605c146103cb578063e30c3978146103fa578063f2fde38b14610417575f5ffd5b806352d1902d146102d75780635c975abb146102eb57806367090ccf1461030b578063715018a61461034b57806379ba50971461035f5780637f07c94714610373575f5ffd5b806319ab453c1161010457806319ab453c1461023e5780631f59a8301461025d5780633075db561461027d5780633659cfe6146102915780633f4ba83a146102b05780634f1ef286146102c4575f5ffd5b80630178733a1461014057806301ffc9a71461015557806304f3bcec1461018957806306fdde03146101cf578063150b7a02146101fa575b5f5ffd5b61015361014e3660046127c5565b610436565b005b348015610160575f5ffd5b5061017461016f36600461280b565b6105e9565b60405190151581526020015b60405180910390f35b348015610194575f5ffd5b507f00000000000000000000000016701000000000000000000000000000000000065b6040516001600160a01b039091168152602001610180565b3480156101da575f5ffd5b506b195c98cdcc8c57dd985d5b1d60a21b5b604051908152602001610180565b348015610205575f5ffd5b50610225610214366004612895565b630a85bd0160e11b95945050505050565b6040516001600160e01b03199091168152602001610180565b348015610249575f5ffd5b50610153610258366004612902565b610639565b61027061026b36600461291d565b61074a565b60405161018091906129a1565b348015610288575f5ffd5b50610174610bd0565b34801561029c575f5ffd5b506101536102ab366004612902565b610be8565b3480156102bb575f5ffd5b50610153610caf565b6101536102d2366004612bbd565b610d33565b3480156102e2575f5ffd5b506101ec610de8565b3480156102f6575f5ffd5b5061017460c954610100900460ff1660021490565b348015610316575f5ffd5b506101b7610325366004612c09565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b348015610356575f5ffd5b50610153610e99565b34801561036a575f5ffd5b50610153610eaa565b610153610381366004612c37565b610f21565b348015610391575f5ffd5b5061015361108a565b3480156103a5575f5ffd5b506101b7611109565b3480156103b9575f5ffd5b506033546001600160a01b03166101b7565b3480156103d6575f5ffd5b506103ea6103e5366004612902565b611117565b6040516101809493929190612c75565b348015610405575f5ffd5b506065546001600160a01b03166101b7565b348015610422575f5ffd5b50610153610431366004612902565b611262565b61044a60c954610100900460ff1660021490565b156104685760405163bae6e2a960e01b815260040160405180910390fd5b600261047660c95460ff1690565b60ff16036104975760405163dfc60d8560e01b815260040160405180910390fd5b6104a160026112d3565b6104a96112e9565b505f6104b9610140840184612cc4565b6104c7916004908290612d06565b8101906104d49190612d2d565b90505f5f828060200190518101906104ec9190612e5b565b9350505091505f610510838760a001602081019061050a9190612902565b846113df565b905061053a61012087013561052b60c0890160a08a01612902565b6001600160a01b031690611557565b61054a60c0870160a08801612902565b6001600160a01b0316857fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c8560200151848687516001600160401b0381111561059557610595612a91565b6040519080825280602002602001820160405280156105be578160200160208202803683370190505b506040516105cf9493929190612f9a565b60405180910390a3505050506105e560016112d3565b5050565b5f6001600160e01b0319821662bc399d60e11b148061061857506001600160e01b03198216637f07c94760e01b145b8061063357506001600160e01b031982166301ffc9a760e01b145b92915050565b5f54610100900460ff161580801561065757505f54600160ff909116105b806106705750303b15801561067057505f5460ff166001145b6106d85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156106f9575f805461ff0019166101001790555b61070282611562565b80156105e5575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201929092526101408101919091526107b860c954610100900460ff1660021490565b156107d65760405163bae6e2a960e01b815260040160405180910390fd5b6107df82613059565b8060e00151518160c0015151146108095760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b0316610834576040516303f8a7d360e01b815260040160405180910390fd5b600261084260c95460ff1690565b60ff16036108635760405163dfc60d8560e01b815260040160405180910390fd5b61086d60026112d3565b61087d608084016060850161312c565b6001600160401b03163410156108a657604051630178ce0b60e31b815260040160405180910390fd5b5f5b6108b560c0850185613147565b9050811015610909576108cb60e0850185613147565b828181106108db576108db61318c565b905060200201355f1461090157604051634299323b60e11b815260040160405180910390fd5b6001016108a8565b506109346380ac58cd60e01b61092560a0860160808701612902565b6001600160a01b0316906115c0565b61095157604051633ee915f560e11b815260040160405180910390fd5b5f5f61095c85611690565b6040805161016081019091525f808252929450909250602081016109866080890160608a0161312c565b6001600160401b031681526020016109a460c0890160a08a016131a0565b63ffffffff1681525f602080830182905260408301919091523360608301526080909101906109d59089018961312c565b6001600160401b031681526020015f6001600160a01b0316886020016020810190610a009190612902565b6001600160a01b031603610a145733610a24565b610a246040890160208a01612902565b6001600160a01b03168152602090810190610a5c90610a45908a018a61312c565b6b195c98cdcc8c57dd985d5b1d60a21b5b5f611b72565b6001600160a01b03168152602001610a7a6080890160608a0161312c565b610a8d906001600160401b0316346131cf565b815260200184905290505f610aab6562726964676560d01b82611c1c565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610ad791906129a1565b5f6040518083038185885af1158015610af2573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610b1a91908101906131ed565b96509050610b2e6060880160408901612902565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610b849190612902565b610b9160c08f018f613147565b8f8060e00190610ba19190613147565b604051610bb4979695949392919061333d565b60405180910390a450505050610bca60016112d3565b50919050565b5f6002610bdf60c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000000003163003610c305760405162461bcd60e51b81526004016106cf90613399565b7f00000000000000000000000001670100000000000000000000000000000000036001600160a01b0316610c62611cb5565b6001600160a01b031614610c885760405162461bcd60e51b81526004016106cf906133e5565b610c9181611cd0565b604080515f80825260208201909252610cac91839190611cd8565b50565b610cc360c954610100900460ff1660021490565b610ce05760405163bae6e2a960e01b815260040160405180910390fd5b610cf460c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610d31335f611e47565b565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000000003163003610d7b5760405162461bcd60e51b81526004016106cf90613399565b7f00000000000000000000000001670100000000000000000000000000000000036001600160a01b0316610dad611cb5565b6001600160a01b031614610dd35760405162461bcd60e51b81526004016106cf906133e5565b610ddc82611cd0565b6105e582826001611cd8565b5f306001600160a01b037f00000000000000000000000001670100000000000000000000000000000000031614610e875760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106cf565b505f516020613e285f395f51905f5290565b610ea1611e4b565b610d315f611ea5565b60655433906001600160a01b03168114610f185760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106cf565b610cac81611ea5565b610f3560c954610100900460ff1660021490565b15610f535760405163bae6e2a960e01b815260040160405180910390fd5b6002610f6160c95460ff1690565b60ff1603610f825760405163dfc60d8560e01b815260040160405180910390fd5b610f8c60026112d3565b5f808080610f9c85870187613431565b93509350935093505f610fad611ebe565b9050610fb883611fde565b5f610fc48685856113df565b9050610fd96001600160a01b03851634611557565b836001600160a01b0316856001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518a6020015186898a516001600160401b0381111561103757611037612a91565b604051908082528060200260200182016040528015611060578160200160208202803683370190505b5060405161107295949392919061352a565b60405180910390a45050505050506105e560016112d3565b61109e60c954610100900460ff1660021490565b156110bc5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610d31336001611e47565b5f611112611cb5565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b031692919061115590613582565b80601f016020809104026020016040519081016040528092919081815260200182805461118190613582565b80156111cc5780601f106111a3576101008083540402835291602001916111cc565b820191905f5260205f20905b8154815290600101906020018083116111af57829003601f168201915b5050505050908060020180546111e190613582565b80601f016020809104026020016040519081016040528092919081815260200182805461120d90613582565b80156112585780601f1061122f57610100808354040283529160200191611258565b820191905f5260205f20905b81548152906001019060200180831161123b57829003601f168201915b5050505050905084565b61126a611e4b565b606580546001600160a01b0383166001600160a01b0319909116811790915561129b6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b61131a816001611c1c565b6001600160a01b0316336001600160a01b03161461134b576040516395383ea160e01b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611387573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ab91906135b4565b60208101519092506001600160a01b031633146113db57604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b0316036114a5575060208301515f5b825181101561149f57816001600160a01b03166342842e0e30868685815181106114275761142761318c565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064015f604051808303815f87803b15801561147e575f5ffd5b505af1158015611490573d5f5f3e3d5ffd5b505050508060010190506113fb565b50611550565b6114ae8461201a565b90505f5b825181101561154e57816001600160a01b03166340c10f19858584815181106114dd576114dd61318c565b60200260200101516040518363ffffffff1660e01b81526004016115169291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b15801561152d575f5ffd5b505af115801561153f573d5f5f3e3d5ffd5b505050508060010190506114b2565b505b9392505050565b6105e582825a612061565b5f54610100900460ff166115885760405162461bcd60e51b81526004016106cf9061361c565b6115906120a4565b6115ae6001600160a01b038216156115a85781611ea5565b33611ea5565b5060c9805461ff001916610100179055565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161161c9190613667565b5f60405180830381855afa9150503d805f8114611654576040519150601f19603f3d011682016040523d82523d5f602084013e611659565b606091505b509150915081801561166c575080516020145b1561168857808060200190518101906116859190613682565b92505b505092915050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d816116c660a0870160808801612902565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156119a7576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b0316602082015260018301805491928492908401919061173790613582565b80601f016020809104026020016040519081016040528092919081815260200182805461176390613582565b80156117ae5780601f10611785576101008083540402835291602001916117ae565b820191905f5260205f20905b81548152906001019060200180831161179157829003601f168201915b505050505081526020016002820180546117c790613582565b80601f01602080910402602001604051908101604052809291908181526020018280546117f390613582565b801561183e5780601f106118155761010080835404028352916020019161183e565b820191905f5260205f20905b81548152906001019060200180831161182157829003601f168201915b50505050508152505091505f5b61185860c0860186613147565b90508110156119a15761187160a0860160808701612902565b6001600160a01b03166342842e0e333061188e60c08a018a613147565b8681811061189e5761189e61318c565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b1580156118f2575f5ffd5b505af1158015611904573d5f5f3e3d5ffd5b506119199250505060a0860160808701612902565b6001600160a01b03166342966c6861193460c0880188613147565b848181106119445761194461318c565b905060200201356040518263ffffffff1660e01b815260040161196991815260200190565b5f604051808303815f87803b158015611980575f5ffd5b505af1158015611992573d5f5f3e3d5ffd5b5050505080600101905061184b565b50611ae7565b6040518060800160405280466001600160401b031681526020018560800160208101906119d49190612902565b6001600160a01b031681526020016119fa6119f560a0880160808901612902565b6120ca565b8152602001611a17611a1260a0880160808901612902565b612174565b905291505f5b611a2a60c0860186613147565b9050811015611ae557611a4360a0860160808701612902565b6001600160a01b03166342842e0e3330611a6060c08a018a613147565b86818110611a7057611a7061318c565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611ac4575f5ffd5b505af1158015611ad6573d5f5f3e3d5ffd5b50505050806001019050611a1d565b505b5030637f07c9478233611b006060880160408901612902565b611b0d60c0890189613147565b604051602001611b219594939291906136a1565b60408051601f1981840301815290829052611b3e91602401613732565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f7f0000000000000000000000001670100000000000000000000000000000000006604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c149190613744565b949350505050565b5f7f0000000000000000000000001670100000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611c91573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115509190613744565b5f516020613e285f395f51905f52546001600160a01b031690565b610cac611e4b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d1057611d0b836121ba565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d6a575060408051601f3d908101601f19168201909252611d679181019061375f565b60015b611dcd5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106cf565b5f516020613e285f395f51905f528114611e3b5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106cf565b50611d0b838383612255565b6105e55b6033546001600160a01b03163314610d315760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106cf565b606580546001600160a01b0319169055610cac8161227f565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611eef816001611c1c565b6001600160a01b0316336001600160a01b031614611f20576040516395383ea160e01b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611f5c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8091906135b4565b91505f611fa18360400151610a566b195c98cdcc8c57dd985d5b1d60a21b90565b9050806001600160a01b031683602001516001600160a01b031614611fd957604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611ffc57506001600160a01b03811630145b15610cac57604051635b50f3f960e01b815260040160405180910390fd5b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b039081168552925290912054168061205c57610633826122d0565b919050565b815f0361206d57505050565b61208783838360405180602001604052805f81525061249e565b611d0b57604051634c67134d60e11b815260040160405180910390fd5b5f54610100900460ff16610d315760405162461bcd60e51b81526004016106cf9061361c565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b038616916121109190613667565b5f60405180830381855afa9150503d805f8114612148576040519150601f19603f3d011682016040523d82523d5f602084013e61214d565b606091505b50915091508161216b5760405180602001604052805f815250611c14565b611c14816124db565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b038616916121109190613667565b6001600160a01b0381163b6122275760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106cf565b5f516020613e285f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61225e83612648565b5f8251118061226a5750805b15611d0b576122798383612687565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f5f6122e46033546001600160a01b031690565b60208401518451604080870151606088015191516123089594939290602401613776565b60408051601f198184030181529190526020810180516001600160e01b031663689ccd8d60e11b179052905061234f6d627269646765645f65726337323160901b5f611c1c565b8160405161235c906127b8565b6123679291906137c2565b604051809103905ff080158015612380573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906123e49082613830565b50606082015160028201906123f99082613830565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b9261249092906138ea565b60405180910390a450919050565b5f6001600160a01b0385166124c657604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606060408251106124fa5781806020019051810190610633919061390e565b8151602003612635575f5b60208160ff1610801561253a5750828160ff16815181106125285761252861318c565b01602001516001600160f81b03191615155b1561255157806125498161393f565b915050612505565b5f8160ff166001600160401b0381111561256d5761256d612a91565b6040519080825280601f01601f191660200182016040528015612597576020820181803683370190505b5090505f91505b60208260ff161080156125d35750838260ff16815181106125c1576125c161318c565b01602001516001600160f81b03191615155b1561155057838260ff16815181106125ed576125ed61318c565b602001015160f81c60f81b818360ff168151811061260d5761260d61318c565b60200101906001600160f81b03191690815f1a9053508161262d8161393f565b92505061259e565b505060408051602081019091525f815290565b612651816121ba565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606115508383604051806060016040528060278152602001613e486027913960605f5f856001600160a01b0316856040516126c39190613667565b5f60405180830381855af49150503d805f81146126fb576040519150601f19603f3d011682016040523d82523d5f602084013e612700565b606091505b50915091506127118683838761271b565b9695505050505050565b606083156127895782515f03612782576001600160a01b0385163b6127825760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106cf565b5081611c14565b611c14838381511561279e5781518083602001fd5b8060405162461bcd60e51b81526004016106cf9190613732565b6104ca8061395e83390190565b5f5f604083850312156127d6575f5ffd5b82356001600160401b038111156127eb575f5ffd5b830161016081860312156127fd575f5ffd5b946020939093013593505050565b5f6020828403121561281b575f5ffd5b81356001600160e01b031981168114611550575f5ffd5b6001600160a01b0381168114610cac575f5ffd5b803561205c81612832565b5f5f83601f840112612861575f5ffd5b5081356001600160401b03811115612877575f5ffd5b60208301915083602082850101111561288e575f5ffd5b9250929050565b5f5f5f5f5f608086880312156128a9575f5ffd5b85356128b481612832565b945060208601356128c481612832565b93506040860135925060608601356001600160401b038111156128e5575f5ffd5b6128f188828901612851565b969995985093965092949392505050565b5f60208284031215612912575f5ffd5b813561155081612832565b5f6020828403121561292d575f5ffd5b81356001600160401b03811115612942575f5ffd5b82016101008185031215611550575f5ffd5b5f5b8381101561296e578181015183820152602001612956565b50505f910152565b5f815180845261298d816020860160208601612954565b601f01601f19169290920160200192915050565b602081526129bb6020820183516001600160401b03169052565b5f60208301516129d660408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b0381166101208401525061012083015161014083015261014083015161016080840152611c14610180840182612976565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612ac757612ac7612a91565b60405290565b60405161010081016001600160401b0381118282101715612ac757612ac7612a91565b60405161016081016001600160401b0381118282101715612ac757612ac7612a91565b604051601f8201601f191681016001600160401b0381118282101715612b3b57612b3b612a91565b604052919050565b5f6001600160401b03821115612b5b57612b5b612a91565b50601f01601f191660200190565b5f82601f830112612b78575f5ffd5b8135602083015f612b90612b8b84612b43565b612b13565b9050828152858383011115612ba3575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612bce575f5ffd5b8235612bd981612832565b915060208301356001600160401b03811115612bf3575f5ffd5b612bff85828601612b69565b9150509250929050565b5f5f60408385031215612c1a575f5ffd5b823591506020830135612c2c81612832565b809150509250929050565b5f5f60208385031215612c48575f5ffd5b82356001600160401b03811115612c5d575f5ffd5b612c6985828601612851565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612ca790830185612976565b8281036060840152612cb98185612976565b979650505050505050565b5f5f8335601e19843603018112612cd9575f5ffd5b8301803591506001600160401b03821115612cf2575f5ffd5b60200191503681900382131561288e575f5ffd5b5f5f85851115612d14575f5ffd5b83861115612d20575f5ffd5b5050820193919092039150565b5f60208284031215612d3d575f5ffd5b81356001600160401b03811115612d52575f5ffd5b611c1484828501612b69565b6001600160401b0381168114610cac575f5ffd5b805161205c81612d5e565b805161205c81612832565b5f82601f830112612d97575f5ffd5b8151602083015f612daa612b8b84612b43565b9050828152858383011115612dbd575f5ffd5b612dcb836020830184612954565b95945050505050565b5f6001600160401b03821115612dec57612dec612a91565b5060051b60200190565b5f82601f830112612e05575f5ffd5b8151612e13612b8b82612dd4565b8082825260208201915060208360051b860101925085831115612e34575f5ffd5b602085015b83811015612e51578051835260209283019201612e39565b5095945050505050565b5f5f5f5f60808587031215612e6e575f5ffd5b84516001600160401b03811115612e83575f5ffd5b850160808188031215612e94575f5ffd5b612e9c612aa5565b8151612ea781612d5e565b81526020820151612eb781612832565b602082015260408201516001600160401b03811115612ed4575f5ffd5b612ee089828501612d88565b60408301525060608201516001600160401b03811115612efe575f5ffd5b612f0a89828501612d88565b6060830152509450612f20905060208601612d7d565b9250612f2e60408601612d7d565b915060608501516001600160401b03811115612f48575f5ffd5b612f5487828801612df6565b91505092959194509250565b5f8151808452602084019350602083015f5b82811015612f90578151865260209586019590910190600101612f72565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f90612fc590830185612f60565b8281036060840152612cb98185612f60565b803561205c81612d5e565b63ffffffff81168114610cac575f5ffd5b803561205c81612fe2565b5f82601f83011261300d575f5ffd5b813561301b612b8b82612dd4565b8082825260208201915060208360051b86010192508583111561303c575f5ffd5b602085015b83811015612e51578035835260209283019201613041565b5f610100823603121561306a575f5ffd5b613072612acd565b61307b83612fd7565b815261308960208401612846565b602082015261309a60408401612846565b60408201526130ab60608401612fd7565b60608201526130bc60808401612846565b60808201526130cd60a08401612ff3565b60a082015260c08301356001600160401b038111156130ea575f5ffd5b6130f636828601612ffe565b60c08301525060e08301356001600160401b03811115613114575f5ffd5b61312036828601612ffe565b60e08301525092915050565b5f6020828403121561313c575f5ffd5b813561155081612d5e565b5f5f8335601e1984360301811261315c575f5ffd5b8301803591506001600160401b03821115613175575f5ffd5b6020019150600581901b360382131561288e575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156131b0575f5ffd5b813561155081612fe2565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610633576106336131bb565b805161205c81612fe2565b5f5f604083850312156131fe575f5ffd5b825160208401519092506001600160401b0381111561321b575f5ffd5b8301610160818603121561322d575f5ffd5b613235612af0565b61323e82612d72565b815261324c60208301612d72565b602082015261325d604083016131e2565b604082015261326e60608301612d7d565b606082015261327f60808301612d72565b608082015261329060a08301612d7d565b60a08201526132a160c08301612d72565b60c08201526132b260e08301612d7d565b60e08201526132c46101008301612d7d565b61010082015261012082810151908201526101408201516001600160401b038111156132ee575f5ffd5b6132fa87828501612d88565b6101408301525080925050509250929050565b8183525f6001600160fb1b03831115613324575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f90613378908301868861330d565b828103608084015261338b81858761330d565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f60808587031215613444575f5ffd5b84356001600160401b03811115613459575f5ffd5b85016080818803121561346a575f5ffd5b613472612aa5565b813561347d81612d5e565b8152602082013561348d81612832565b602082015260408201356001600160401b038111156134aa575f5ffd5b6134b689828501612b69565b60408301525060608201356001600160401b038111156134d4575f5ffd5b6134e089828501612b69565b60608301525094506134f6905060208601612846565b925061350460408601612846565b915060608501356001600160401b0381111561351e575f5ffd5b612f5487828801612ffe565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f9061356490830185612f60565b82810360808401526135768185612f60565b98975050505050505050565b600181811c9082168061359657607f821691505b602082108103610bca57634e487b7160e01b5f52602260045260245ffd5b5f60608284031280156135c5575f5ffd5b50604051606081016001600160401b03811182821017156135e8576135e8612a91565b6040528251815260208301516135fd81612832565b6020820152604083015161361081612d5e565b60408201529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f8251613678818460208701612954565b9190910192915050565b5f60208284031215613692575f5ffd5b81518015158114611550575f5ffd5b608081526001600160401b03865116608082015260018060a01b0360208701511660a08201525f6040870151608060c08401526136e2610100840182612976565b90506060880151607f198483030160e08501526136ff8282612976565b6001600160a01b03898116602087015288166040860152915061371f9050565b828103606084015261357681858761330d565b602081525f6115506020830184612976565b5f60208284031215613754575f5ffd5b815161155081612832565b5f6020828403121561376f575f5ffd5b5051919050565b6001600160a01b038681168252851660208201526001600160401b038416604082015260a0606082018190525f906137b090830185612976565b82810360808401526135768185612976565b6001600160a01b03831681526040602082018190525f90611c1490830184612976565b601f821115611d0b57805f5260205f20601f840160051c8101602085101561380a5750805b601f840160051c820191505b81811015613829575f8155600101613816565b5050505050565b81516001600160401b0381111561384957613849612a91565b61385d816138578454613582565b846137e5565b6020601f82116001811461388f575f83156138785750848201515b5f19600385901b1c1916600184901b178455613829565b5f84815260208120601f198516915b828110156138be578785015182556020948501946001909201910161389e565b50848210156138db57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f6138fc6040830185612976565b8281036020840152612dcb8185612976565b5f6020828403121561391e575f5ffd5b81516001600160401b03811115613933575f5ffd5b611c1484828501612d88565b5f60ff821660ff8103613954576139546131bb565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220224ad843d93784907791aeaf3db297952b1b418bb8971beb2b04fcb92accaa4a64736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670100000000000000000000000000000000003": { + "contractName": "ERC721Vault", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000000003" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167010000000000000000000000000000000004": { + "contractName": "ERC1155VaultImpl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969" + }, + "code": "0x608060405260043610610147575f3560e01c806367090ccf116100b35780638da5cb5b1161006d5780638da5cb5b146103765780639aa8605c14610393578063bc197c81146103c2578063e30c397814610409578063f23a6e6114610426578063f2fde38b14610452575f5ffd5b806367090ccf146102d3578063715018a61461031357806379ba5097146103275780637f07c9471461033b5780638456cb591461034e5780638abf607714610362575f5ffd5b80633075db56116101045780633075db56146102455780633659cfe6146102595780633f4ba83a146102785780634f1ef2861461028c57806352d1902d1461029f5780635c975abb146102b3575f5ffd5b80630178733a1461014b57806301ffc9a71461016057806304f3bcec1461019457806306fdde03146101da57806319ab453c146102065780631f59a83014610225575b5f5ffd5b61015e610159366004612738565b610471565b005b34801561016b575f5ffd5b5061017f61017a36600461277e565b6105e7565b60405190151581526020015b60405180910390f35b34801561019f575f5ffd5b507f00000000000000000000000016701000000000000000000000000000000000065b6040516001600160a01b03909116815260200161018b565b3480156101e5575f5ffd5b506c195c98cc4c4d4d57dd985d5b1d609a1b5b60405190815260200161018b565b348015610211575f5ffd5b5061015e6102203660046127c4565b610606565b6102386102333660046127df565b61071f565b60405161018b9190612863565b348015610250575f5ffd5b5061017f610ba6565b348015610264575f5ffd5b5061015e6102733660046127c4565b610bbe565b348015610283575f5ffd5b5061015e610c85565b61015e61029a366004612a7f565b610d09565b3480156102aa575f5ffd5b506101f8610dbe565b3480156102be575f5ffd5b5061017f60c954610100900460ff1660021490565b3480156102de575f5ffd5b506101c26102ed366004612acb565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b34801561031e575f5ffd5b5061015e610e6f565b348015610332575f5ffd5b5061015e610e80565b61015e610349366004612b3d565b610ef7565b348015610359575f5ffd5b5061015e611023565b34801561036d575f5ffd5b506101c26110a2565b348015610381575f5ffd5b506033546001600160a01b03166101c2565b34801561039e575f5ffd5b506103b26103ad3660046127c4565b6110b0565b60405161018b9493929190612b7b565b3480156103cd575f5ffd5b506103f06103dc366004612c0a565b63bc197c8160e01b98975050505050505050565b6040516001600160e01b0319909116815260200161018b565b348015610414575f5ffd5b506065546001600160a01b03166101c2565b348015610431575f5ffd5b506103f0610440366004612cca565b63f23a6e6160e01b9695505050505050565b34801561045d575f5ffd5b5061015e61046c3660046127c4565b6111fb565b61048560c954610100900460ff1660021490565b156104a35760405163bae6e2a960e01b815260040160405180910390fd5b60026104b160c95460ff1690565b60ff16036104d25760405163dfc60d8560e01b815260040160405180910390fd5b6104dc600261126c565b6104e4611282565b505f6104f4610140840184612d40565b610502916004908290612d82565b81019061050f9190612da9565b90505f5f5f838060200190518101906105289190612ed7565b94509450505092505f61054f848860a001602081019061054891906127c4565b8585611378565b905061057961012088013561056a60c08a0160a08b016127c4565b6001600160a01b031690611468565b61058960c0880160a089016127c4565b6001600160a01b0316867fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c86602001518487876040516105cc949392919061303f565b60405180910390a350505050506105e3600161126c565b5050565b5f6105f182611473565b806106005750610600826114c2565b92915050565b5f54610100900460ff161580801561062457505f54600160ff909116105b8061063d5750303b15801561063d57505f5460ff166001145b6106a55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156106c6575f805461ff0019166101001790555b6106cf826114f6565b6106d7611554565b80156105e3575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261078d60c954610100900460ff1660021490565b156107ab5760405163bae6e2a960e01b815260040160405180910390fd5b6107b4826130fe565b8060e00151518160c0015151146107de5760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b0316610809576040516303f8a7d360e01b815260040160405180910390fd5b600261081760c95460ff1690565b60ff16036108385760405163dfc60d8560e01b815260040160405180910390fd5b610842600261126c565b61085260808401606085016131d1565b6001600160401b031634101561087b57604051630178ce0b60e31b815260040160405180910390fd5b5f5b61088a60e08501856131ec565b90508110156108de576108a060e08501856131ec565b828181106108b0576108b0613231565b905060200201355f036108d657604051634299323b60e11b815260040160405180910390fd5b60010161087d565b50610909636cdb3d1360e11b6108fa60a08601608087016127c4565b6001600160a01b03169061157a565b61092657604051633ee915f560e11b815260040160405180910390fd5b5f5f6109318561164a565b6040805161016081019091525f8082529294509092506020810161095b6080890160608a016131d1565b6001600160401b0316815260200161097960c0890160a08a01613245565b63ffffffff1681525f602080830182905260408301919091523360608301526080909101906109aa908901896131d1565b6001600160401b031681526020015f6001600160a01b03168860200160208101906109d591906127c4565b6001600160a01b0316036109e957336109f9565b6109f96040890160208a016127c4565b6001600160a01b03168152602090810190610a3290610a1a908a018a6131d1565b6c195c98cc4c4d4d57dd985d5b1d609a1b5b5f611b0a565b6001600160a01b03168152602001610a506080890160608a016131d1565b610a63906001600160401b031634613274565b815260200184905290505f610a816562726964676560d01b82611bac565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610aad9190612863565b5f6040518083038185885af1158015610ac8573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610af09190810190613292565b96509050610b0460608801604089016127c4565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610b5a91906127c4565b610b6760c08f018f6131ec565b8f8060e00190610b7791906131ec565b604051610b8a97969594939291906133e2565b60405180910390a450505050610ba0600161126c565b50919050565b5f6002610bb560c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000000004163003610c065760405162461bcd60e51b815260040161069c9061343e565b7f00000000000000000000000001670100000000000000000000000000000000046001600160a01b0316610c38611c4c565b6001600160a01b031614610c5e5760405162461bcd60e51b815260040161069c9061348a565b610c6781611c67565b604080515f80825260208201909252610c8291839190611c6f565b50565b610c9960c954610100900460ff1660021490565b610cb65760405163bae6e2a960e01b815260040160405180910390fd5b610cca60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610d07335f611dde565b565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000000004163003610d515760405162461bcd60e51b815260040161069c9061343e565b7f00000000000000000000000001670100000000000000000000000000000000046001600160a01b0316610d83611c4c565b6001600160a01b031614610da95760405162461bcd60e51b815260040161069c9061348a565b610db282611c67565b6105e382826001611c6f565b5f306001600160a01b037f00000000000000000000000001670100000000000000000000000000000000041614610e5d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161069c565b505f516020613fff5f395f51905f5290565b610e77611de2565b610d075f611e3c565b60655433906001600160a01b03168114610eee5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161069c565b610c8281611e3c565b610f0b60c954610100900460ff1660021490565b15610f295760405163bae6e2a960e01b815260040160405180910390fd5b6002610f3760c95460ff1690565b60ff1603610f585760405163dfc60d8560e01b815260040160405180910390fd5b610f62600261126c565b5f80808080610f73868801886134d6565b945094509450945094505f610f86611e55565b9050610f9184611f76565b5f610f9e87868686611378565b9050610fb36001600160a01b03861634611468565b846001600160a01b0316866001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518b60200151868a8a60405161100a9594939291906135f7565b60405180910390a4505050505050506105e3600161126c565b61103760c954610100900460ff1660021490565b156110555760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610d07336001611dde565b5f6110ab611c4c565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b03169291906110ee9061364f565b80601f016020809104026020016040519081016040528092919081815260200182805461111a9061364f565b80156111655780601f1061113c57610100808354040283529160200191611165565b820191905f5260205f20905b81548152906001019060200180831161114857829003601f168201915b50505050509080600201805461117a9061364f565b80601f01602080910402602001604051908101604052809291908181526020018280546111a69061364f565b80156111f15780601f106111c8576101008083540402835291602001916111f1565b820191905f5260205f20905b8154815290600101906020018083116111d457829003601f168201915b5050505050905084565b611203611de2565b606580546001600160a01b0383166001600160a01b031990911681179091556112346033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b6112b3816001611bac565b6001600160a01b0316336001600160a01b0316146112e4576040516395383ea160e01b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611320573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113449190613681565b60208101519092506001600160a01b0316331461137457604051632583296b60e01b815260040160405180910390fd5b5090565b5f46855f01516001600160401b0316036113f657506020840151604051631759616b60e11b81526001600160a01b03821690632eb2c2d6906113c49030908890889088906004016136e9565b5f604051808303815f87803b1580156113db575f5ffd5b505af11580156113ed573d5f5f3e3d5ffd5b50505050611460565b6113ff85611fb2565b60405163d81d0a1560e01b81529091506001600160a01b0382169063d81d0a159061143290879087908790600401613742565b5f604051808303815f87803b158015611449575f5ffd5b505af115801561145b573d5f5f3e3d5ffd5b505050505b949350505050565b6105e382825a611ff9565b5f6001600160e01b0319821662bc399d60e11b14806114a257506001600160e01b03198216637f07c94760e01b145b8061060057506001600160e01b031982166301ffc9a760e01b1492915050565b5f6001600160e01b03198216630271189760e51b148061060057506301ffc9a760e01b6001600160e01b0319831614610600565b5f54610100900460ff1661151c5760405162461bcd60e51b815260040161069c90613777565b611524611554565b6115426001600160a01b0382161561153c5781611e3c565b33611e3c565b5060c9805461ff001916610100179055565b5f54610100900460ff16610d075760405162461bcd60e51b815260040161069c90613777565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b179052516115d691906137c2565b5f60405180830381855afa9150503d805f811461160e576040519150601f19603f3d011682016040523d82523d5f602084013e611613565b606091505b5091509150818015611626575080516020145b15611642578080602001905181019061163f91906137dd565b92505b505092915050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161168060a08701608088016127c4565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b90041615611973576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b031660208201526001830180549192849290840191906116f19061364f565b80601f016020809104026020016040519081016040528092919081815260200182805461171d9061364f565b80156117685780601f1061173f57610100808354040283529160200191611768565b820191905f5260205f20905b81548152906001019060200180831161174b57829003601f168201915b505050505081526020016002820180546117819061364f565b80601f01602080910402602001604051908101604052809291908181526020018280546117ad9061364f565b80156117f85780601f106117cf576101008083540402835291602001916117f8565b820191905f5260205f20905b8154815290600101906020018083116117db57829003601f168201915b505050505081525050915083608001602081019061181691906127c4565b6001600160a01b0316632eb2c2d6333061183360c08901896131ec565b61184060e08b018b6131ec565b6040518763ffffffff1660e01b8152600401611861969594939291906137fc565b5f604051808303815f87803b158015611878575f5ffd5b505af115801561188a573d5f5f3e3d5ffd5b505050505f5b61189d60c08601866131ec565b905081101561196d576118b660a08601608087016127c4565b6001600160a01b031663b390c0ab6118d160c08801886131ec565b848181106118e1576118e1613231565b90506020020135878060e001906118f891906131ec565b8581811061190857611908613231565b905060200201356040518363ffffffff1660e01b8152600401611935929190918252602082015260400190565b5f604051808303815f87803b15801561194c575f5ffd5b505af115801561195e573d5f5f3e3d5ffd5b50505050806001019050611890565b50611a70565b6040518060800160405280466001600160401b031681526020018560800160208101906119a091906127c4565b6001600160a01b031681526020016119c66119c160a08801608089016127c4565b61203c565b81526020016119e36119de60a08801608089016127c4565b6120e6565b905291506119f760a08501608086016127c4565b6001600160a01b0316632eb2c2d63330611a1460c08901896131ec565b611a2160e08b018b6131ec565b6040518763ffffffff1660e01b8152600401611a42969594939291906137fc565b5f604051808303815f87803b158015611a59575f5ffd5b505af1158015611a6b573d5f5f3e3d5ffd5b505050505b5030637f07c9478233611a8960608801604089016127c4565b611a9660c08901896131ec565b611aa360e08b018b6131ec565b604051602001611ab99796959493929190613859565b60408051601f1981840301815290829052611ad691602401613909565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f7f0000000000000000000000001670100000000000000000000000000000000006604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611b88573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611460919061391b565b5f7f0000000000000000000000001670100000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611c21573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c45919061391b565b9392505050565b5f516020613fff5f395f51905f52546001600160a01b031690565b610c82611de2565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611ca757611ca28361212c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d01575060408051601f3d908101601f19168201909252611cfe91810190613936565b60015b611d645760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161069c565b5f516020613fff5f395f51905f528114611dd25760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161069c565b50611ca28383836121c7565b6105e35b6033546001600160a01b03163314610d075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161069c565b606580546001600160a01b0319169055610c82816121f1565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611e86816001611bac565b6001600160a01b0316336001600160a01b031614611eb7576040516395383ea160e01b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611ef3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f179190613681565b91505f611f398360400151610a2c6c195c98cc4c4d4d57dd985d5b1d609a1b90565b9050806001600160a01b031683602001516001600160a01b031614611f7157604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611f9457506001600160a01b03811630145b15610c8257604051635b50f3f960e01b815260040160405180910390fd5b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611ff45761060082612242565b919050565b815f0361200557505050565b61201f83838360405180602001604052805f815250612411565b611ca257604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b0386169161208291906137c2565b5f60405180830381855afa9150503d805f81146120ba576040519150601f19603f3d011682016040523d82523d5f602084013e6120bf565b606091505b5091509150816120dd5760405180602001604052805f815250611460565b6114608161244e565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b0386169161208291906137c2565b6001600160a01b0381163b6121995760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161069c565b5f516020613fff5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6121d0836125bb565b5f825111806121dc5750805b15611ca2576121eb83836125fa565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f5f6122566033546001600160a01b031690565b602084015184516040808701516060880151915161227a959493929060240161394d565b60408051601f198184030181529190526020810180516001600160e01b031663689ccd8d60e11b17905290506122c26e627269646765645f6572633131353560881b5f611bac565b816040516122cf9061272b565b6122da929190613999565b604051809103905ff0801580156122f3573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906123579082613a07565b506060820151600282019061236c9082613a07565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b926124039290613ac1565b60405180910390a450919050565b5f6001600160a01b03851661243957604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b6060604082511061246d57818060200190518101906106009190613ae5565b81516020036125a8575f5b60208160ff161080156124ad5750828160ff168151811061249b5761249b613231565b01602001516001600160f81b03191615155b156124c457806124bc81613b16565b915050612478565b5f8160ff166001600160401b038111156124e0576124e0612953565b6040519080825280601f01601f19166020018201604052801561250a576020820181803683370190505b5090505f91505b60208260ff161080156125465750838260ff168151811061253457612534613231565b01602001516001600160f81b03191615155b15611c4557838260ff168151811061256057612560613231565b602001015160f81c60f81b818360ff168151811061258057612580613231565b60200101906001600160f81b03191690815f1a905350816125a081613b16565b925050612511565b505060408051602081019091525f815290565b6125c48161212c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060611c45838360405180606001604052806027815260200161401f6027913960605f5f856001600160a01b03168560405161263691906137c2565b5f60405180830381855af49150503d805f811461266e576040519150601f19603f3d011682016040523d82523d5f602084013e612673565b606091505b50915091506126848683838761268e565b9695505050505050565b606083156126fc5782515f036126f5576001600160a01b0385163b6126f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161069c565b5081611460565b61146083838151156127115781518083602001fd5b8060405162461bcd60e51b815260040161069c9190613909565b6104ca80613b3583390190565b5f5f60408385031215612749575f5ffd5b82356001600160401b0381111561275e575f5ffd5b83016101608186031215612770575f5ffd5b946020939093013593505050565b5f6020828403121561278e575f5ffd5b81356001600160e01b031981168114611c45575f5ffd5b6001600160a01b0381168114610c82575f5ffd5b8035611ff4816127a5565b5f602082840312156127d4575f5ffd5b8135611c45816127a5565b5f602082840312156127ef575f5ffd5b81356001600160401b03811115612804575f5ffd5b82016101008185031215611c45575f5ffd5b5f5b83811015612830578181015183820152602001612818565b50505f910152565b5f815180845261284f816020860160208601612816565b601f01601f19169290920160200192915050565b6020815261287d6020820183516001600160401b03169052565b5f602083015161289860408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b0381166101208401525061012083015161014083015261014083015161016080840152611460610180840182612838565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561298957612989612953565b60405290565b60405161010081016001600160401b038111828210171561298957612989612953565b60405161016081016001600160401b038111828210171561298957612989612953565b604051601f8201601f191681016001600160401b03811182821017156129fd576129fd612953565b604052919050565b5f6001600160401b03821115612a1d57612a1d612953565b50601f01601f191660200190565b5f82601f830112612a3a575f5ffd5b8135602083015f612a52612a4d84612a05565b6129d5565b9050828152858383011115612a65575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612a90575f5ffd5b8235612a9b816127a5565b915060208301356001600160401b03811115612ab5575f5ffd5b612ac185828601612a2b565b9150509250929050565b5f5f60408385031215612adc575f5ffd5b823591506020830135612aee816127a5565b809150509250929050565b5f5f83601f840112612b09575f5ffd5b5081356001600160401b03811115612b1f575f5ffd5b602083019150836020828501011115612b36575f5ffd5b9250929050565b5f5f60208385031215612b4e575f5ffd5b82356001600160401b03811115612b63575f5ffd5b612b6f85828601612af9565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612bad90830185612838565b8281036060840152612bbf8185612838565b979650505050505050565b5f5f83601f840112612bda575f5ffd5b5081356001600160401b03811115612bf0575f5ffd5b6020830191508360208260051b8501011115612b36575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612c21575f5ffd5b8835612c2c816127a5565b97506020890135612c3c816127a5565b965060408901356001600160401b03811115612c56575f5ffd5b612c628b828c01612bca565b90975095505060608901356001600160401b03811115612c80575f5ffd5b612c8c8b828c01612bca565b90955093505060808901356001600160401b03811115612caa575f5ffd5b612cb68b828c01612af9565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215612cdf575f5ffd5b8635612cea816127a5565b95506020870135612cfa816127a5565b9450604087013593506060870135925060808701356001600160401b03811115612d22575f5ffd5b612d2e89828a01612af9565b979a9699509497509295939492505050565b5f5f8335601e19843603018112612d55575f5ffd5b8301803591506001600160401b03821115612d6e575f5ffd5b602001915036819003821315612b36575f5ffd5b5f5f85851115612d90575f5ffd5b83861115612d9c575f5ffd5b5050820193919092039150565b5f60208284031215612db9575f5ffd5b81356001600160401b03811115612dce575f5ffd5b61146084828501612a2b565b6001600160401b0381168114610c82575f5ffd5b8051611ff481612dda565b8051611ff4816127a5565b5f82601f830112612e13575f5ffd5b8151602083015f612e26612a4d84612a05565b9050828152858383011115612e39575f5ffd5b612e47836020830184612816565b95945050505050565b5f6001600160401b03821115612e6857612e68612953565b5060051b60200190565b5f82601f830112612e81575f5ffd5b8151612e8f612a4d82612e50565b8082825260208201915060208360051b860101925085831115612eb0575f5ffd5b602085015b83811015612ecd578051835260209283019201612eb5565b5095945050505050565b5f5f5f5f5f60a08688031215612eeb575f5ffd5b85516001600160401b03811115612f00575f5ffd5b860160808189031215612f11575f5ffd5b612f19612967565b8151612f2481612dda565b81526020820151612f34816127a5565b602082015260408201516001600160401b03811115612f51575f5ffd5b612f5d8a828501612e04565b60408301525060608201516001600160401b03811115612f7b575f5ffd5b612f878a828501612e04565b6060830152509550612f9d905060208701612df9565b9350612fab60408701612df9565b925060608601516001600160401b03811115612fc5575f5ffd5b612fd188828901612e72565b92505060808601516001600160401b03811115612fec575f5ffd5b612ff888828901612e72565b9150509295509295909350565b5f8151808452602084019350602083015f5b82811015613035578151865260209586019590910190600101613017565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f9061306a90830185613005565b8281036060840152612bbf8185613005565b8035611ff481612dda565b63ffffffff81168114610c82575f5ffd5b8035611ff481613087565b5f82601f8301126130b2575f5ffd5b81356130c0612a4d82612e50565b8082825260208201915060208360051b8601019250858311156130e1575f5ffd5b602085015b83811015612ecd5780358352602092830192016130e6565b5f610100823603121561310f575f5ffd5b61311761298f565b6131208361307c565b815261312e602084016127b9565b602082015261313f604084016127b9565b60408201526131506060840161307c565b6060820152613161608084016127b9565b608082015261317260a08401613098565b60a082015260c08301356001600160401b0381111561318f575f5ffd5b61319b368286016130a3565b60c08301525060e08301356001600160401b038111156131b9575f5ffd5b6131c5368286016130a3565b60e08301525092915050565b5f602082840312156131e1575f5ffd5b8135611c4581612dda565b5f5f8335601e19843603018112613201575f5ffd5b8301803591506001600160401b0382111561321a575f5ffd5b6020019150600581901b3603821315612b36575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613255575f5ffd5b8135611c4581613087565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561060057610600613260565b8051611ff481613087565b5f5f604083850312156132a3575f5ffd5b825160208401519092506001600160401b038111156132c0575f5ffd5b830161016081860312156132d2575f5ffd5b6132da6129b2565b6132e382612dee565b81526132f160208301612dee565b602082015261330260408301613287565b604082015261331360608301612df9565b606082015261332460808301612dee565b608082015261333560a08301612df9565b60a082015261334660c08301612dee565b60c082015261335760e08301612df9565b60e08201526133696101008301612df9565b61010082015261012082810151908201526101408201516001600160401b03811115613393575f5ffd5b61339f87828501612e04565b6101408301525080925050509250929050565b8183525f6001600160fb1b038311156133c9575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061341d90830186886133b2565b82810360808401526134308185876133b2565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f5f60a086880312156134ea575f5ffd5b85356001600160401b038111156134ff575f5ffd5b860160808189031215613510575f5ffd5b613518612967565b813561352381612dda565b81526020820135613533816127a5565b602082015260408201356001600160401b03811115613550575f5ffd5b61355c8a828501612a2b565b60408301525060608201356001600160401b0381111561357a575f5ffd5b6135868a828501612a2b565b606083015250955061359c9050602087016127b9565b93506135aa604087016127b9565b925060608601356001600160401b038111156135c4575f5ffd5b6135d0888289016130a3565b92505060808601356001600160401b038111156135eb575f5ffd5b612ff8888289016130a3565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f9061363190830185613005565b82810360808401526136438185613005565b98975050505050505050565b600181811c9082168061366357607f821691505b602082108103610ba057634e487b7160e01b5f52602260045260245ffd5b5f6060828403128015613692575f5ffd5b50604051606081016001600160401b03811182821017156136b5576136b5612953565b6040528251815260208301516136ca816127a5565b602082015260408301516136dd81612dda565b60408201529392505050565b6001600160a01b0385811682528416602082015260a0604082018190525f9061371490830185613005565b82810360608401526137268185613005565b83810360809094019390935250505f8152602001949350505050565b6001600160a01b03841681526060602082018190525f9061376590830185613005565b82810360408401526126848185613005565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f82516137d3818460208701612816565b9190910192915050565b5f602082840312156137ed575f5ffd5b81518015158114611c45575f5ffd5b6001600160a01b0387811682528616602082015260a0604082018190525f9061382890830186886133b2565b828103606084015261383b8185876133b2565b83810360809094019390935250505f81526020019695505050505050565b60a080825288516001600160401b03169082015260208801516001600160a01b031660c08201526040880151608060e08301525f9061389c610120840182612838565b905060608a0151609f19848303016101008501526138ba8282612838565b9150506138d2602084018a6001600160a01b03169052565b6001600160a01b038816604084015282810360608401526138f48187896133b2565b905082810360808401526134308185876133b2565b602081525f611c456020830184612838565b5f6020828403121561392b575f5ffd5b8151611c45816127a5565b5f60208284031215613946575f5ffd5b5051919050565b6001600160a01b038681168252851660208201526001600160401b038416604082015260a0606082018190525f9061398790830185612838565b82810360808401526136438185612838565b6001600160a01b03831681526040602082018190525f9061146090830184612838565b601f821115611ca257805f5260205f20601f840160051c810160208510156139e15750805b601f840160051c820191505b81811015613a00575f81556001016139ed565b5050505050565b81516001600160401b03811115613a2057613a20612953565b613a3481613a2e845461364f565b846139bc565b6020601f821160018114613a66575f8315613a4f5750848201515b5f19600385901b1c1916600184901b178455613a00565b5f84815260208120601f198516915b82811015613a955787850151825560209485019460019092019101613a75565b5084821015613ab257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613ad36040830185612838565b8281036020840152612e478185612838565b5f60208284031215613af5575f5ffd5b81516001600160401b03811115613b0a575f5ffd5b61146084828501612e04565b5f60ff821660ff8103613b2b57613b2b613260565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220586d1a9191344246bbed5ab2cd3831521b64422fdfe8613416fc22bbb3046e6264736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670100000000000000000000000000000000004": { + "contractName": "ERC1155Vault", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000000004" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167010000000000000000000000000000010096": { + "contractName": "BridgedERC20", + "storage": {}, + "code": "0x608060405260043610610212575f3560e01c80635c975abb1161011e5780638da5cb5b116100a8578063b8f2e0c51161006d578063b8f2e0c514610615578063dd62ed3e14610634578063e30c397814610653578063f12506c114610670578063f2fde38b14610684575f5ffd5b80638da5cb5b1461058557806395d89b41146105a2578063a457c2d7146105b6578063a77f1516146105d5578063a9059cbb146105f6575f5ffd5b806379ba5097116100ee57806379ba5097146105095780637cf8ed0d1461051d5780637e4746341461053d5780638456cb591461055d5780638abf607714610571575f5ffd5b80635c975abb146104825780636c0db62b146104a257806370a08231146104c1578063715018a6146104f5575f5ffd5b8063313ce5671161019f57806340c10f191161016f57806340c10f191461040757806342966c681461042657806349d12605146104455780634f1ef2861461045b57806352d1902d1461046e575f5ffd5b8063313ce567146103865780633659cfe6146103b357806339509351146103d45780633f4ba83a146103f3575f5ffd5b80630ae74548116101e55780630ae74548146102d057806318160ddd146102f157806323b872dd1461030f57806326afaadd1461032e5780633075db5614610372575f5ffd5b806301ffc9a71461021657806304f3bcec1461024a57806306fdde0314610290578063095ea7b3146102b1575b5f5ffd5b348015610221575f5ffd5b50610235610230366004611fb1565b6106a3565b60405190151581526020015b60405180910390f35b348015610255575f5ffd5b507f00000000000000000000000016701000000000000000000000000000000000065b6040516001600160a01b039091168152602001610241565b34801561029b575f5ffd5b506102a4610745565b6040516102419190611ffa565b3480156102bc575f5ffd5b506102356102cb366004612040565b6107d5565b3480156102db575f5ffd5b5061012f5461023590600160a01b900460ff1681565b3480156102fc575f5ffd5b5060fd545b604051908152602001610241565b34801561031a575f5ffd5b5061023561032936600461206a565b6107ec565b348015610339575f5ffd5b5061035361012d5461012e546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610241565b34801561037d575f5ffd5b5061023561080f565b348015610391575f5ffd5b5061012d54600160a01b900460ff165b60405160ff9091168152602001610241565b3480156103be575f5ffd5b506103d26103cd3660046120a8565b610827565b005b3480156103df575f5ffd5b506102356103ee366004612040565b6108f7565b3480156103fe575f5ffd5b506103d2610918565b348015610412575f5ffd5b506103d2610421366004612040565b61099c565b348015610431575f5ffd5b506103d26104403660046120c3565b610ab6565b348015610450575f5ffd5b5061030161012e5481565b6103d26104693660046120ee565b610bf3565b348015610479575f5ffd5b50610301610ca8565b34801561048d575f5ffd5b5061023560c954610100900460ff1660021490565b3480156104ad575f5ffd5b506103d26104bc3660046121f9565b610d59565b3480156104cc575f5ffd5b506103016104db3660046120a8565b6001600160a01b03165f90815260fb602052604090205490565b348015610500575f5ffd5b506103d2610f17565b348015610514575f5ffd5b506103d2610f28565b348015610528575f5ffd5b5061012d54610278906001600160a01b031681565b348015610548575f5ffd5b5061012f54610278906001600160a01b031681565b348015610568575f5ffd5b506103d2610f9f565b34801561057c575f5ffd5b5061027861101e565b348015610590575f5ffd5b506033546001600160a01b0316610278565b3480156105ad575f5ffd5b506102a461102c565b3480156105c1575f5ffd5b506102356105d0366004612040565b61103b565b3480156105e0575f5ffd5b5061012d546103a190600160a01b900460ff1681565b348015610601575f5ffd5b50610235610610366004612040565b6110b5565b348015610620575f5ffd5b506103d261062f3660046122ad565b6110c2565b34801561063f575f5ffd5b5061030161064e3660046122e8565b61123f565b34801561065e575f5ffd5b506065546001600160a01b0316610278565b34801561067b575f5ffd5b50610235611269565b34801561068f575f5ffd5b506103d261069e3660046120a8565b611294565b5f6001600160e01b0319821663093e326b60e21b14806106d357506001600160e01b03198216636c0db62b60e01b145b806106ee57506001600160e01b0319821663b8f2e0c560e01b145b8061070957506001600160e01b031982166336372b0760e01b145b8061072457506001600160e01b0319821663a219a02560e01b145b8061073f57506001600160e01b031982166301ffc9a760e01b145b92915050565b606060fe805461075490612314565b80601f016020809104026020016040519081016040528092919081815260200182805461078090612314565b80156107cb5780601f106107a2576101008083540402835291602001916107cb565b820191905f5260205f20905b8154815290600101906020018083116107ae57829003601f168201915b5050505050905090565b5f336107e2818585611305565b5060019392505050565b5f336107f9858285611428565b6108048585856114a0565b506001949350505050565b5f600261081e60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000100961630036108785760405162461bcd60e51b815260040161086f9061234c565b60405180910390fd5b7f00000000000000000000000001670100000000000000000000000000000100966001600160a01b03166108aa611654565b6001600160a01b0316146108d05760405162461bcd60e51b815260040161086f90612398565b6108d98161166f565b604080515f808252602082019092526108f491839190611677565b50565b5f336107e2818585610909838361123f565b61091391906123e4565b611305565b61092c60c954610100900460ff1660021490565b6109495760405163bae6e2a960e01b815260040160405180910390fd5b61095d60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a161099a335f6117e1565b565b6109b060c954610100900460ff1660021490565b156109ce5760405163bae6e2a960e01b815260040160405180910390fd5b60026109dc60c95460ff1690565b60ff16036109fd5760405163dfc60d8560e01b815260040160405180910390fd5b610a0760026117e9565b610a0f611269565b15610a2d5760405163270bf77560e01b815260040160405180910390fd5b61012f546001600160a01b031633819003610a9457826001600160a01b0316816001600160a01b03167fe502aa3e015149f4b76a0b2b5394e3100903c4af27c3ddc98385395d3f55252684604051610a8791815260200190565b60405180910390a3610a9d565b610a9d336117ff565b610aa78383611877565b50610ab260016117e9565b5050565b610aca60c954610100900460ff1660021490565b15610ae85760405163bae6e2a960e01b815260040160405180910390fd5b6002610af660c95460ff1690565b60ff1603610b175760405163dfc60d8560e01b815260040160405180910390fd5b610b2160026117e9565b610b29611269565b15610bd65761012f546040518281526001600160a01b0390911690339082907f638edf84937fb2534b47cac985ea84d6ea4f4076315b56ea1c784d26b87e2bcb9060200160405180910390a36040516340c10f1960e01b8152336004820152602481018390526001600160a01b038216906340c10f19906044015f604051808303815f87803b158015610bba575f5ffd5b505af1158015610bcc573d5f5f3e3d5ffd5b5050505050610bdf565b610bdf336117ff565b610be93382611941565b6108f460016117e9565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000010096163003610c3b5760405162461bcd60e51b815260040161086f9061234c565b7f00000000000000000000000001670100000000000000000000000000000100966001600160a01b0316610c6d611654565b6001600160a01b031614610c935760405162461bcd60e51b815260040161086f90612398565b610c9c8261166f565b610ab282826001611677565b5f306001600160a01b037f00000000000000000000000001670100000000000000000000000000000100961614610d475760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161086f565b505f5160206125a25f395f51905f5290565b5f54610100900460ff1615808015610d7757505f54600160ff909116105b80610d905750303b158015610d9057505f5460ff166001145b610df35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161086f565b5f805460ff191660011790558015610e14575f805461ff0019166101001790555b610e1e8888611a7e565b610e2789611aba565b610e9883838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611b1892505050565b61012d805461012e89905560ff8816600160a01b026001600160a81b03199091166001600160a01b038b16171790558015610f0c575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b610f1f611b48565b61099a5f611ba2565b60655433906001600160a01b03168114610f965760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161086f565b6108f481611ba2565b610fb360c954610100900460ff1660021490565b15610fd15760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a161099a3360016117e1565b5f611027611654565b905090565b606060ff805461075490612314565b5f3381611048828661123f565b9050838110156110a85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161086f565b6108048286868403611305565b5f336107e28185856114a0565b6110d660c954610100900460ff1660021490565b156110f45760405163bae6e2a960e01b815260040160405180910390fd5b6a195c98cc8c17dd985d5b1d60aa1b61110e816001611bbb565b6001600160a01b0316336001600160a01b03161461113f576040516395383ea160e01b815260040160405180910390fd5b600261114d60c95460ff1690565b60ff160361116e5760405163dfc60d8560e01b815260040160405180910390fd5b61117860026117e9565b61012f546001600160a01b0384811691161480156111a9575061012f60149054906101000a900460ff161515821515145b156111c75760405163c118d2f360e01b815260040160405180910390fd5b61012f80546001600160a01b0385166001600160a81b03199091168117600160a01b851515908102919091179092556040805191825260208201929092527fa6b6f959792843a48d9d03d13595f2de7c86ae0ce12ef0fa759dd911b205e565910160405180910390a161123a60016117e9565b505050565b6001600160a01b039182165f90815260fc6020908152604080832093909416825291909152205490565b61012f545f906001600160a01b03161580159061102757505061012f54600160a01b900460ff161590565b61129c611b48565b606580546001600160a01b0383166001600160a01b031990911681179091556112cd6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6001600160a01b0383166113675760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161086f565b6001600160a01b0382166113c85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161086f565b6001600160a01b038381165f81815260fc602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f611433848461123f565b90505f19811461149a578181101561148d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161086f565b61149a8484848403611305565b50505050565b6001600160a01b0383166115045760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161086f565b6001600160a01b0382166115665760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161086f565b611571838383611c5b565b6001600160a01b0383165f90815260fb6020526040902054818110156115e85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161086f565b6001600160a01b038085165f81815260fb602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116479086815260200190565b60405180910390a361149a565b5f5160206125a25f395f51905f52546001600160a01b031690565b6108f4611b48565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156116aa5761123a83611c96565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611704575060408051601f3d908101601f1916820190925261170191810190612403565b60015b6117675760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161086f565b5f5160206125a25f395f51905f5281146117d55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161086f565b5061123a838383611d31565b610ab2611b48565b60c9805460ff191660ff92909216919091179055565b6a195c98cc8c17dd985d5b1d60aa1b6118206033546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061185a5750611845816001611bbb565b6001600160a01b0316336001600160a01b0316145b610ab2576040516395383ea160e01b815260040160405180910390fd5b6001600160a01b0382166118cd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161086f565b6118d85f8383611c5b565b8060fd5f8282546118e991906123e4565b90915550506001600160a01b0382165f81815260fb60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166119a15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161086f565b6119ac825f83611c5b565b6001600160a01b0382165f90815260fb602052604090205481811015611a1f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161086f565b6001600160a01b0383165f81815260fb60209081526040808320868603905560fd80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0382161580611a92575080155b80611a9c57504681145b15610ab25760405163c118d2f360e01b815260040160405180910390fd5b5f54610100900460ff16611ae05760405162461bcd60e51b815260040161086f9061241a565b611ae8611d55565b611b066001600160a01b03821615611b005781611ba2565b33611ba2565b5060c9805461ff001916610100179055565b5f54610100900460ff16611b3e5760405162461bcd60e51b815260040161086f9061241a565b610ab28282611d7b565b6033546001600160a01b0316331461099a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161086f565b606580546001600160a01b03191690556108f481611dba565b5f7f0000000000000000000000001670100000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611c30573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c549190612465565b9392505050565b611c6f60c954610100900460ff1660021490565b15611c8d5760405163bae6e2a960e01b815260040160405180910390fd5b61123a82611e0b565b6001600160a01b0381163b611d035760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161086f565b5f5160206125a25f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611d3a83611e34565b5f82511180611d465750805b1561123a5761149a8383611e73565b5f54610100900460ff1661099a5760405162461bcd60e51b815260040161086f9061241a565b5f54610100900460ff16611da15760405162461bcd60e51b815260040161086f9061241a565b60fe611dad83826124cb565b5060ff61123a82826124cb565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b306001600160a01b038216036108f457604051630c292c9d60e21b815260040160405180910390fd5b611e3d81611c96565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060611c5483836040518060600160405280602781526020016125c26027913960605f5f856001600160a01b031685604051611eaf9190612586565b5f60405180830381855af49150503d805f8114611ee7576040519150601f19603f3d011682016040523d82523d5f602084013e611eec565b606091505b5091509150611efd86838387611f07565b9695505050505050565b60608315611f755782515f03611f6e576001600160a01b0385163b611f6e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161086f565b5081611f7f565b611f7f8383611f87565b949350505050565b815115611f975781518083602001fd5b8060405162461bcd60e51b815260040161086f9190611ffa565b5f60208284031215611fc1575f5ffd5b81356001600160e01b031981168114611c54575f5ffd5b5f5b83811015611ff2578181015183820152602001611fda565b50505f910152565b602081525f8251806020840152612018816040850160208701611fd8565b601f01601f19169190910160400192915050565b6001600160a01b03811681146108f4575f5ffd5b5f5f60408385031215612051575f5ffd5b823561205c8161202c565b946020939093013593505050565b5f5f5f6060848603121561207c575f5ffd5b83356120878161202c565b925060208401356120978161202c565b929592945050506040919091013590565b5f602082840312156120b8575f5ffd5b8135611c548161202c565b5f602082840312156120d3575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156120ff575f5ffd5b823561210a8161202c565b9150602083013567ffffffffffffffff811115612125575f5ffd5b8301601f81018513612135575f5ffd5b803567ffffffffffffffff81111561214f5761214f6120da565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561217e5761217e6120da565b604052818152828201602001871015612195575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f8401126121c4575f5ffd5b50813567ffffffffffffffff8111156121db575f5ffd5b6020830191508360208285010111156121f2575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b031215612210575f5ffd5b883561221b8161202c565b9750602089013561222b8161202c565b965060408901359550606089013560ff81168114612247575f5ffd5b9450608089013567ffffffffffffffff811115612262575f5ffd5b61226e8b828c016121b4565b90955093505060a089013567ffffffffffffffff81111561228d575f5ffd5b6122998b828c016121b4565b999c989b5096995094979396929594505050565b5f5f604083850312156122be575f5ffd5b82356122c98161202c565b9150602083013580151581146122dd575f5ffd5b809150509250929050565b5f5f604083850312156122f9575f5ffd5b82356123048161202c565b915060208301356122dd8161202c565b600181811c9082168061232857607f821691505b60208210810361234657634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b8082018082111561073f57634e487b7160e01b5f52601160045260245ffd5b5f60208284031215612413575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612475575f5ffd5b8151611c548161202c565b601f82111561123a57805f5260205f20601f840160051c810160208510156124a55750805b601f840160051c820191505b818110156124c4575f81556001016124b1565b5050505050565b815167ffffffffffffffff8111156124e5576124e56120da565b6124f9816124f38454612314565b84612480565b6020601f82116001811461252b575f83156125145750848201515b5f19600385901b1c1916600184901b1784556124c4565b5f84815260208120601f198516915b8281101561255a578785015182556020948501946001909201910161253a565b508482101561257757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8251612597818460208701611fd8565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d575672c2ef935e52ba9a5ee592a05c1c2c07962048cf6ee491e9f85af282ed864736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167010000000000000000000000000000010097": { + "contractName": "BridgedERC721", + "storage": {}, + "code": "0x6080604052600436106101e6575f3560e01c80635c975abb116101085780638da5cb5b1161009d578063c87b56dd1161006d578063c87b56dd14610554578063d1399b1a14610573578063e30c397814610592578063e985e9c5146105af578063f2fde38b146105ce575f5ffd5b80638da5cb5b146104e557806395d89b4114610502578063a22cb46514610516578063b88d4fde14610535575f5ffd5b806379ba5097116100d857806379ba5097146104895780637cf8ed0d1461049d5780638456cb59146104bd5780638abf6077146104d1575f5ffd5b80635c975abb146104175780636352211e1461043757806370a0823114610456578063715018a614610475575f5ffd5b80633659cfe61161017e57806342966c681161014e57806342966c68146103ad57806349d12605146103cc5780634f1ef286146103f057806352d1902d14610403575f5ffd5b80633659cfe61461033c5780633f4ba83a1461035b57806340c10f191461036f57806342842e0e1461038e575f5ffd5b8063095ea7b3116101b9578063095ea7b3146102a457806323b872dd146102c557806326afaadd146102e45780633075db5614610328575f5ffd5b806301ffc9a7146101ea57806304f3bcec1461021e57806306fdde0314610264578063081812fc14610285575b5f5ffd5b3480156101f5575f5ffd5b5061020961020436600461234e565b6105ed565b60405190151581526020015b60405180910390f35b348015610229575f5ffd5b507f00000000000000000000000016701000000000000000000000000000000000065b6040516001600160a01b039091168152602001610215565b34801561026f575f5ffd5b50610278610632565b60405161021591906123b6565b348015610290575f5ffd5b5061024c61029f3660046123c8565b6106c3565b3480156102af575f5ffd5b506102c36102be3660046123f3565b6106e9565b005b3480156102d0575f5ffd5b506102c36102df36600461241d565b610802565b3480156102ef575f5ffd5b5061030961015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610215565b348015610333575f5ffd5b50610209610833565b348015610347575f5ffd5b506102c361035636600461245b565b61084b565b348015610366575f5ffd5b506102c3610912565b34801561037a575f5ffd5b506102c36103893660046123f3565b610996565b348015610399575f5ffd5b506102c36103a836600461241d565b610a61565b3480156103b8575f5ffd5b506102c36103c73660046123c8565b610a7b565b3480156103d7575f5ffd5b506103e26101605481565b604051908152602001610215565b6102c36103fe366004612515565b610b7a565b34801561040e575f5ffd5b506103e2610c2f565b348015610422575f5ffd5b5061020960c954610100900460ff1660021490565b348015610442575f5ffd5b5061024c6104513660046123c8565b610ce0565b348015610461575f5ffd5b506103e261047036600461245b565b610d40565b348015610480575f5ffd5b506102c3610dc5565b348015610494575f5ffd5b506102c3610dd6565b3480156104a8575f5ffd5b5061015f5461024c906001600160a01b031681565b3480156104c8575f5ffd5b506102c3610e4d565b3480156104dc575f5ffd5b5061024c610ecc565b3480156104f0575f5ffd5b506033546001600160a01b031661024c565b34801561050d575f5ffd5b50610278610eda565b348015610521575f5ffd5b506102c3610530366004612562565b610eea565b348015610540575f5ffd5b506102c361054f36600461259d565b610ef5565b34801561055f575f5ffd5b5061027861056e3660046123c8565b610f2d565b34801561057e575f5ffd5b506102c361058d36600461264a565b610f56565b34801561059d575f5ffd5b506065546001600160a01b031661024c565b3480156105ba575f5ffd5b506102096105c93660046126e7565b611106565b3480156105d9575f5ffd5b506102c36105e836600461245b565b611134565b5f6001600160e01b0319821663093e326b60e21b148061061d57506001600160e01b0319821663689ccd8d60e11b145b8061062c575061062c826111a5565b92915050565b606061012d805461064290612713565b80601f016020809104026020016040519081016040528092919081815260200182805461066e90612713565b80156106b95780601f10610690576101008083540402835291602001916106b9565b820191905f5260205f20905b81548152906001019060200180831161069c57829003601f168201915b5050505050905090565b5f6106cd826111f4565b505f90815261013160205260409020546001600160a01b031690565b5f6106f382610ce0565b9050806001600160a01b0316836001600160a01b0316036107655760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061078157506107818133611106565b6107f35760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161075c565b6107fd8383611253565b505050565b61080c33826112c1565b6108285760405162461bcd60e51b815260040161075c9061274b565b6107fd83838361131f565b5f600261084260c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000100971630036108935760405162461bcd60e51b815260040161075c90612798565b7f00000000000000000000000001670100000000000000000000000000000100976001600160a01b03166108c5611491565b6001600160a01b0316146108eb5760405162461bcd60e51b815260040161075c906127e4565b6108f4816114ac565b604080515f8082526020820190925261090f918391906114b4565b50565b61092660c954610100900460ff1660021490565b6109435760405163bae6e2a960e01b815260040160405180910390fd5b61095760c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610994335f61161e565b565b6109aa60c954610100900460ff1660021490565b156109c85760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b6109e3816001611626565b6001600160a01b0316336001600160a01b031614610a14576040516395383ea160e01b815260040160405180910390fd5b6002610a2260c95460ff1690565b60ff1603610a435760405163dfc60d8560e01b815260040160405180910390fd5b610a4d60026116c6565b610a5783836116dc565b6107fd60016116c6565b6107fd83838360405180602001604052805f815250610ef5565b610a8f60c954610100900460ff1660021490565b15610aad5760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610ac8816001611626565b6001600160a01b0316336001600160a01b031614610af9576040516395383ea160e01b815260040160405180910390fd5b6002610b0760c95460ff1690565b60ff1603610b285760405163dfc60d8560e01b815260040160405180910390fd5b610b3260026116c6565b33610b3c83610ce0565b6001600160a01b031614610b635760405163358bf3d960e01b815260040160405180910390fd5b610b6c826116f5565b610b7660016116c6565b5050565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000010097163003610bc25760405162461bcd60e51b815260040161075c90612798565b7f00000000000000000000000001670100000000000000000000000000000100976001600160a01b0316610bf4611491565b6001600160a01b031614610c1a5760405162461bcd60e51b815260040161075c906127e4565b610c23826114ac565b610b76828260016114b4565b5f306001600160a01b037f00000000000000000000000001670100000000000000000000000000000100971614610cce5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161075c565b505f516020612ba25f395f51905f5290565b5f81815261012f60205260408120546001600160a01b03168061062c5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161075c565b5f6001600160a01b038216610da95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161075c565b506001600160a01b03165f908152610130602052604090205490565b610dcd611797565b6109945f6117f1565b60655433906001600160a01b03168114610e445760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161075c565b61090f816117f1565b610e6160c954610100900460ff1660021490565b15610e7f5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a161099433600161161e565b5f610ed5611491565b905090565b606061012e805461064290612713565b610b7633838361180a565b610eff33836112c1565b610f1b5760405162461bcd60e51b815260040161075c9061274b565b610f27848484846118d8565b50505050565b61015f546101605460609161062c916001600160a01b0390911690610f518561190b565b61199b565b5f54610100900460ff1615808015610f7457505f54600160ff909116105b80610f8d5750303b158015610f8d57505f5460ff166001145b610ff05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161075c565b5f805460ff191660011790558015611011575f805461ff0019166101001790555b61101b87876119e5565b61102488611a21565b61109583838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611a7f92505050565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905580156110fc575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6001600160a01b039182165f9081526101326020908152604080832093909416825291909152205460ff1690565b61113c611797565b606580546001600160a01b0383166001600160a01b0319909116811790915561116d6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b031982166380ac58cd60e01b14806111d557506001600160e01b03198216635b5e139f60e01b145b8061062c57506301ffc9a760e01b6001600160e01b031983161461062c565b5f81815261012f60205260409020546001600160a01b031661090f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161075c565b5f8181526101316020526040902080546001600160a01b0319166001600160a01b038416908117909155819061128882610ce0565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5f6112cc83610ce0565b9050806001600160a01b0316846001600160a01b031614806112f357506112f38185611106565b806113175750836001600160a01b031661130c846106c3565b6001600160a01b0316145b949350505050565b826001600160a01b031661133282610ce0565b6001600160a01b0316146113585760405162461bcd60e51b815260040161075c90612830565b6001600160a01b0382166113ba5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161075c565b6113c78383836001611aaf565b826001600160a01b03166113da82610ce0565b6001600160a01b0316146114005760405162461bcd60e51b815260040161075c90612830565b5f8181526101316020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652610130855283862080545f190190559087168086528386208054600101905586865261012f90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5f516020612ba25f395f51905f52546001600160a01b031690565b61090f611797565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114e7576107fd83611aef565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611541575060408051601f3d908101601f1916820190925261153e91810190612875565b60015b6115a45760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161075c565b5f516020612ba25f395f51905f5281146116125760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161075c565b506107fd838383611b8a565b610b76611797565b5f7f0000000000000000000000001670100000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa15801561169b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116bf919061288c565b9392505050565b60c9805460ff191660ff92909216919091179055565b610b76828260405180602001604052805f815250611bae565b5f6116ff82610ce0565b905061170e815f846001611aaf565b61171782610ce0565b5f8381526101316020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552610130845282852080545f1901905587855261012f909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6033546001600160a01b031633146109945760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161075c565b606580546001600160a01b031916905561090f81611be0565b816001600160a01b0316836001600160a01b03160361186b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161075c565b6001600160a01b038381165f8181526101326020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6118e384848461131f565b6118ef84848484611c31565b610f275760405162461bcd60e51b815260040161075c906128a7565b60605f61191783611d2e565b60010190505f8167ffffffffffffffff81111561193657611936612476565b6040519080825280601f01601f191660200182016040528015611960576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461196a57509392505050565b60606119b1846001600160a01b03166014611e05565b6119ba8461190b565b836040516020016119cd939291906128f9565b60405160208183030381529060405290509392505050565b6001600160a01b03821615806119f9575080155b80611a0357504681145b15610b765760405163c118d2f360e01b815260040160405180910390fd5b5f54610100900460ff16611a475760405162461bcd60e51b815260040161075c90612981565b611a4f611f9b565b611a6d6001600160a01b03821615611a6757816117f1565b336117f1565b5060c9805461ff001916610100179055565b5f54610100900460ff16611aa55760405162461bcd60e51b815260040161075c90612981565b610b768282611fc1565b611ac360c954610100900460ff1660021490565b15611ae15760405163bae6e2a960e01b815260040160405180910390fd5b611aea83612002565b610f27565b6001600160a01b0381163b611b5c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161075c565b5f516020612ba25f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611b938361202b565b5f82511180611b9f5750805b156107fd57610f27838361206a565b611bb8838361208f565b611bc45f848484611c31565b6107fd5760405162461bcd60e51b815260040161075c906128a7565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160a01b0384163b15611d2357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611c749033908990889088906004016129cc565b6020604051808303815f875af1925050508015611cae575060408051601f3d908101601f19168201909252611cab918101906129fe565b60015b611d09573d808015611cdb576040519150601f19603f3d011682016040523d82523d5f602084013e611ce0565b606091505b5080515f03611d015760405162461bcd60e51b815260040161075c906128a7565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611317565b506001949350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611d6c5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611d98576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611db657662386f26fc10000830492506010015b6305f5e1008310611dce576305f5e100830492506008015b6127108310611de257612710830492506004015b60648310611df4576064830492506002015b600a831061062c5760010192915050565b60605f611e13836002612a2d565b611e1e906002612a44565b67ffffffffffffffff811115611e3657611e36612476565b6040519080825280601f01601f191660200182016040528015611e60576020820181803683370190505b509050600360fc1b815f81518110611e7a57611e7a612a57565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110611ea857611ea8612a57565b60200101906001600160f81b03191690815f1a9053505f611eca846002612a2d565b611ed5906001612a44565b90505b6001811115611f4c576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611f0957611f09612a57565b1a60f81b828281518110611f1f57611f1f612a57565b60200101906001600160f81b03191690815f1a90535060049490941c93611f4581612a6b565b9050611ed8565b5083156116bf5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161075c565b5f54610100900460ff166109945760405162461bcd60e51b815260040161075c90612981565b5f54610100900460ff16611fe75760405162461bcd60e51b815260040161075c90612981565b61012d611ff48382612acb565b5061012e6107fd8282612acb565b306001600160a01b0382160361090f57604051630c292c9d60e21b815260040160405180910390fd5b61203481611aef565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606116bf8383604051806060016040528060278152602001612bc260279139612228565b6001600160a01b0382166120e55760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161075c565b5f81815261012f60205260409020546001600160a01b03161561214a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161075c565b6121575f83836001611aaf565b5f81815261012f60205260409020546001600160a01b0316156121bc5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161075c565b6001600160a01b0382165f818152610130602090815260408083208054600101905584835261012f90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60605f5f856001600160a01b0316856040516122449190612b86565b5f60405180830381855af49150503d805f811461227c576040519150601f19603f3d011682016040523d82523d5f602084013e612281565b606091505b50915091506122928683838761229c565b9695505050505050565b6060831561230a5782515f03612303576001600160a01b0385163b6123035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161075c565b5081611317565b611317838381511561231f5781518083602001fd5b8060405162461bcd60e51b815260040161075c91906123b6565b6001600160e01b03198116811461090f575f5ffd5b5f6020828403121561235e575f5ffd5b81356116bf81612339565b5f5b8381101561238357818101518382015260200161236b565b50505f910152565b5f81518084526123a2816020860160208601612369565b601f01601f19169290920160200192915050565b602081525f6116bf602083018461238b565b5f602082840312156123d8575f5ffd5b5035919050565b6001600160a01b038116811461090f575f5ffd5b5f5f60408385031215612404575f5ffd5b823561240f816123df565b946020939093013593505050565b5f5f5f6060848603121561242f575f5ffd5b833561243a816123df565b9250602084013561244a816123df565b929592945050506040919091013590565b5f6020828403121561246b575f5ffd5b81356116bf816123df565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112612499575f5ffd5b813567ffffffffffffffff8111156124b3576124b3612476565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156124e2576124e2612476565b6040528181528382016020018510156124f9575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612526575f5ffd5b8235612531816123df565b9150602083013567ffffffffffffffff81111561254c575f5ffd5b6125588582860161248a565b9150509250929050565b5f5f60408385031215612573575f5ffd5b823561257e816123df565b915060208301358015158114612592575f5ffd5b809150509250929050565b5f5f5f5f608085870312156125b0575f5ffd5b84356125bb816123df565b935060208501356125cb816123df565b925060408501359150606085013567ffffffffffffffff8111156125ed575f5ffd5b6125f98782880161248a565b91505092959194509250565b5f5f83601f840112612615575f5ffd5b50813567ffffffffffffffff81111561262c575f5ffd5b602083019150836020828501011115612643575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a031215612660575f5ffd5b873561266b816123df565b9650602088013561267b816123df565b955060408801359450606088013567ffffffffffffffff81111561269d575f5ffd5b6126a98a828b01612605565b909550935050608088013567ffffffffffffffff8111156126c8575f5ffd5b6126d48a828b01612605565b989b979a50959850939692959293505050565b5f5f604083850312156126f8575f5ffd5b8235612703816123df565b91506020830135612592816123df565b600181811c9082168061272757607f821691505b60208210810361274557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b5f60208284031215612885575f5ffd5b5051919050565b5f6020828403121561289c575f5ffd5b81516116bf816123df565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6832ba3432b932bab69d60b91b81525f845161291c816009850160208901612369565b600160fe1b600991840191820152845161293d81600a840160208901612369565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b60018201528351612974816013840160208801612369565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f906122929083018461238b565b5f60208284031215612a0e575f5ffd5b81516116bf81612339565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761062c5761062c612a19565b8082018082111561062c5761062c612a19565b634e487b7160e01b5f52603260045260245ffd5b5f81612a7957612a79612a19565b505f190190565b601f8211156107fd57805f5260205f20601f840160051c81016020851015612aa55750805b601f840160051c820191505b81811015612ac4575f8155600101612ab1565b5050505050565b815167ffffffffffffffff811115612ae557612ae5612476565b612af981612af38454612713565b84612a80565b6020601f821160018114612b2b575f8315612b145750848201515b5f19600385901b1c1916600184901b178455612ac4565b5f84815260208120601f198516915b82811015612b5a5787850151825560209485019460019092019101612b3a565b5084821015612b7757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8251612b97818460208701612369565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122039920f9bcec35b81ada8509a94d90d23f2eaaac705d1046a3c31d546f36cc90564736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167010000000000000000000000000000010098": { + "contractName": "BridgedERC1155", + "storage": {}, + "code": "0x6080604052600436106101c4575f3560e01c8063715018a6116100f2578063a22cb46511610092578063e30c397811610062578063e30c397814610501578063e985e9c51461051e578063f242432a14610566578063f2fde38b14610585575f5ffd5b8063a22cb46514610485578063b390c0ab146104a4578063d1399b1a146104c3578063d81d0a15146104e2575f5ffd5b80638456cb59116100cd5780638456cb591461042c5780638abf6077146104405780638da5cb5b1461045457806395d89b4114610471575f5ffd5b8063715018a6146103e457806379ba5097146103f85780637cf8ed0d1461040c575f5ffd5b80633075db56116101685780634e1273f4116101385780634e1273f4146103715780634f1ef2861461039d57806352d1902d146103b05780635c975abb146103c4575f5ffd5b80633075db56146103145780633659cfe6146103285780633f4ba83a1461034757806349d126051461035b575f5ffd5b806306fdde03116101a357806306fdde031461026f5780630e89341c1461029057806326afaadd146102af5780632eb2c2d6146102f3575f5ffd5b8062fdd58e146101c857806301ffc9a7146101fa57806304f3bcec14610229575b5f5ffd5b3480156101d3575f5ffd5b506101e76101e23660046124ea565b6105a4565b6040519081526020015b60405180910390f35b348015610205575f5ffd5b50610219610214366004612529565b61063e565b60405190151581526020016101f1565b348015610234575f5ffd5b507f00000000000000000000000016701000000000000000000000000000000000065b6040516001600160a01b0390911681526020016101f1565b34801561027a575f5ffd5b5061028361067d565b6040516101f19190612591565b34801561029b575f5ffd5b506102836102aa3660046125a3565b61070a565b3480156102ba575f5ffd5b506102d461015f54610160546001600160a01b0390911691565b604080516001600160a01b0390931683526020830191909152016101f1565b3480156102fe575f5ffd5b5061031261030d3660046126fc565b61079d565b005b34801561031f575f5ffd5b506102196107e9565b348015610333575f5ffd5b506103126103423660046127ac565b610801565b348015610352575f5ffd5b506103126108c8565b348015610366575f5ffd5b506101e76101605481565b34801561037c575f5ffd5b5061039061038b3660046127c7565b61094c565b6040516101f191906128d0565b6103126103ab3660046128e2565b610a6b565b3480156103bb575f5ffd5b506101e7610b24565b3480156103cf575f5ffd5b5061021960c954610100900460ff1660021490565b3480156103ef575f5ffd5b50610312610bd6565b348015610403575f5ffd5b50610312610be7565b348015610417575f5ffd5b5061015f54610257906001600160a01b031681565b348015610437575f5ffd5b50610312610c5e565b34801561044b575f5ffd5b50610257610cdd565b34801561045f575f5ffd5b506033546001600160a01b0316610257565b34801561047c575f5ffd5b50610283610ceb565b348015610490575f5ffd5b5061031261049f366004612924565b610cf9565b3480156104af575f5ffd5b506103126104be36600461295f565b610d04565b3480156104ce575f5ffd5b506103126104dd3660046129c3565b610dd6565b3480156104ed575f5ffd5b506103126104fc366004612a9e565b610f54565b34801561050c575f5ffd5b506065546001600160a01b0316610257565b348015610529575f5ffd5b50610219610538366004612b1e565b6001600160a01b039182165f90815261012e6020908152604080832093909416825291909152205460ff1690565b348015610571575f5ffd5b50610312610580366004612b4a565b611098565b348015610590575f5ffd5b5061031261059f3660046127ac565b6110dd565b5f6001600160a01b0383166106135760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f81815261012d602090815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216634d22606360e01b148061066e57506001600160e01b0319821663689ccd8d60e11b145b8061063857506106388261114e565b610162805461068b90612ba1565b80601f01602080910402602001604051908101604052809291908181526020018280546106b790612ba1565b80156107025780601f106106d957610100808354040283529160200191610702565b820191905f5260205f20905b8154815290600101906020018083116106e557829003601f168201915b505050505081565b606061012f805461071a90612ba1565b80601f016020809104026020016040519081016040528092919081815260200182805461074690612ba1565b80156107915780601f1061076857610100808354040283529160200191610791565b820191905f5260205f20905b81548152906001019060200180831161077457829003601f168201915b50505050509050919050565b6001600160a01b0385163314806107b957506107b98533610538565b6107d55760405162461bcd60e51b815260040161060a90612bd9565b6107e2858585858561119d565b5050505050565b5f60026107f860c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000100981630036108495760405162461bcd60e51b815260040161060a90612c27565b7f00000000000000000000000001670100000000000000000000000000000100986001600160a01b031661087b611338565b6001600160a01b0316146108a15760405162461bcd60e51b815260040161060a90612c73565b6108aa81611353565b604080515f808252602082019092526108c59183919061135b565b50565b6108dc60c954610100900460ff1660021490565b6108f95760405163bae6e2a960e01b815260040160405180910390fd5b61090d60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a161094a335f6114c5565b565b606081518351146109b15760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b606482015260840161060a565b5f83516001600160401b038111156109cb576109cb6125ba565b6040519080825280602002602001820160405280156109f4578160200160208202803683370190505b5090505f5b8451811015610a6357610a3e858281518110610a1757610a17612cbf565b6020026020010151858381518110610a3157610a31612cbf565b60200260200101516105a4565b828281518110610a5057610a50612cbf565b60209081029190910101526001016109f9565b509392505050565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000010098163003610ab35760405162461bcd60e51b815260040161060a90612c27565b7f00000000000000000000000001670100000000000000000000000000000100986001600160a01b0316610ae5611338565b6001600160a01b031614610b0b5760405162461bcd60e51b815260040161060a90612c73565b610b1482611353565b610b208282600161135b565b5050565b5f306001600160a01b037f00000000000000000000000001670100000000000000000000000000000100981614610bc35760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161060a565b505f5160206132985f395f51905f525b90565b610bde6114c9565b61094a5f611523565b60655433906001600160a01b03168114610c555760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161060a565b6108c581611523565b610c7260c954610100900460ff1660021490565b15610c905760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a161094a3360016114c5565b5f610ce6611338565b905090565b610161805461068b90612ba1565b610b2033838361153c565b610d1860c954610100900460ff1660021490565b15610d365760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610d5281600161161c565b6001600160a01b0316336001600160a01b031614610d83576040516395383ea160e01b815260040160405180910390fd5b6002610d9160c95460ff1690565b60ff1603610db25760405163dfc60d8560e01b815260040160405180910390fd5b610dbc60026116bc565b610dc73384846116d2565b610dd160016116bc565b505050565b5f54610100900460ff1615808015610df457505f54600160ff909116105b80610e0d5750303b158015610e0d57505f5460ff166001145b610e705760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060a565b5f805460ff191660011790558015610e91575f805461ff0019166101001790555b610e9b8787611866565b610ea4886118a2565b610ec5610ec0888860405180602001604052805f815250611900565b61194a565b61015f80546001600160a01b0319166001600160a01b038916179055610160869055610161610ef5858783612d17565b50610162610f04838583612d17565b508015610f4a575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b610f6860c954610100900460ff1660021490565b15610f865760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610fa281600161161c565b6001600160a01b0316336001600160a01b031614610fd3576040516395383ea160e01b815260040160405180910390fd5b6002610fe160c95460ff1690565b60ff16036110025760405163dfc60d8560e01b815260040160405180910390fd5b61100c60026116bc565b611086868686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050604080516020808a028281018201909352898252909350899250889182918501908490808284375f92018290525060408051602081019091529081529250611979915050565b61109060016116bc565b505050505050565b6001600160a01b0385163314806110b457506110b48533610538565b6110d05760405162461bcd60e51b815260040161060a90612bd9565b6107e28585858585611afb565b6110e56114c9565b606580546001600160a01b0383166001600160a01b031990911681179091556111166033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b03198216636cdb3d1360e11b148061117e57506001600160e01b031982166303a24d0760e21b145b8061063857506301ffc9a760e01b6001600160e01b0319831614610638565b81518351146111be5760405162461bcd60e51b815260040161060a90612dd0565b6001600160a01b0384166111e45760405162461bcd60e51b815260040161060a90612e18565b336111f3818787878787611c35565b5f5b84518110156112d2575f85828151811061121157611211612cbf565b602002602001015190505f85838151811061122e5761122e612cbf565b6020908102919091018101515f84815261012d835260408082206001600160a01b038e16835290935291909120549091508181101561127f5760405162461bcd60e51b815260040161060a90612e5d565b5f83815261012d602090815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906112be908490612ebb565b9091555050600190930192506111f5915050565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611322929190612ece565b60405180910390a4611090818787878787611c75565b5f5160206132985f395f51905f52546001600160a01b031690565b6108c56114c9565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561138e57610dd183611dcf565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113e8575060408051601f3d908101601f191682019092526113e591810190612efb565b60015b61144b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161060a565b5f5160206132985f395f51905f5281146114b95760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161060a565b50610dd1838383611e6a565b610b205b6033546001600160a01b0316331461094a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060a565b606580546001600160a01b03191690556108c581611e94565b816001600160a01b0316836001600160a01b0316036115af5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b606482015260840161060a565b6001600160a01b038381165f81815261012e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b5f7f0000000000000000000000001670100000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611691573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b59190612f12565b9392505050565b60c9805460ff191660ff92909216919091179055565b6001600160a01b0383166117345760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b606482015260840161060a565b335f61173f84611ee5565b90505f61174b84611ee5565b905061176983875f858560405180602001604052805f815250611c35565b5f85815261012d602090815260408083206001600160a01b038a168452909152902054848110156117e85760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b606482015260840161060a565b5f86815261012d602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091525f90525b50505050505050565b6001600160a01b038216158061187a575080155b8061188457504681145b15610b205760405163c118d2f360e01b815260040160405180910390fd5b5f54610100900460ff166118c85760405162461bcd60e51b815260040161060a90612f2d565b6118d0611f2e565b6118ee6001600160a01b038216156118e85781611523565b33611523565b5060c9805461ff001916610100179055565b6060611916846001600160a01b03166014611f54565b61191f846120e9565b8360405160200161193293929190612f78565b60405160208183030381529060405290509392505050565b5f54610100900460ff166119705760405162461bcd60e51b815260040161060a90612f2d565b6108c581612178565b6001600160a01b0384166119d95760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b606482015260840161060a565b81518351146119fa5760405162461bcd60e51b815260040161060a90612dd0565b33611a09815f87878787611c35565b5f5b8451811015611a9557838181518110611a2657611a26612cbf565b602002602001015161012d5f878481518110611a4457611a44612cbf565b602002602001015181526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f828254611a889190612ebb565b9091555050600101611a0b565b50846001600160a01b03165f6001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611ae5929190612ece565b60405180910390a46107e2815f87878787611c75565b6001600160a01b038416611b215760405162461bcd60e51b815260040161060a90612e18565b335f611b2c85611ee5565b90505f611b3885611ee5565b9050611b48838989858589611c35565b5f86815261012d602090815260408083206001600160a01b038c16845290915290205485811015611b8b5760405162461bcd60e51b815260040161060a90612e5d565b5f87815261012d602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611bca908490612ebb565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611c2a848a8a8a8a8a6121a7565b505050505050505050565b611c4960c954610100900460ff1660021490565b15611c675760405163bae6e2a960e01b815260040160405180910390fd5b611c7084612261565b611090565b6001600160a01b0384163b156110905760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611cb99089908990889088908890600401613000565b6020604051808303815f875af1925050508015611cf3575060408051601f3d908101601f19168201909252611cf09181019061305d565b60015b611d9f57611cff613078565b806308c379a003611d385750611d13613090565b80611d1e5750611d3a565b8060405162461bcd60e51b815260040161060a9190612591565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161060a565b6001600160e01b0319811663bc197c8160e01b1461185d5760405162461bcd60e51b815260040161060a9061310a565b6001600160a01b0381163b611e3c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161060a565b5f5160206132985f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611e738361228a565b5f82511180611e7f5750805b15610dd157611e8e83836122c9565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f81518110611f1d57611f1d612cbf565b602090810291909101015292915050565b5f54610100900460ff1661094a5760405162461bcd60e51b815260040161060a90612f2d565b60605f611f62836002613152565b611f6d906002612ebb565b6001600160401b03811115611f8457611f846125ba565b6040519080825280601f01601f191660200182016040528015611fae576020820181803683370190505b509050600360fc1b815f81518110611fc857611fc8612cbf565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110611ff657611ff6612cbf565b60200101906001600160f81b03191690815f1a9053505f612018846002613152565b612023906001612ebb565b90505b600181111561209a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061205757612057612cbf565b1a60f81b82828151811061206d5761206d612cbf565b60200101906001600160f81b03191690815f1a90535060049490941c9361209381613169565b9050612026565b5083156116b55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161060a565b60605f6120f5836122ee565b60010190505f816001600160401b03811115612113576121136125ba565b6040519080825280601f01601f19166020018201604052801561213d576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461214757509392505050565b5f54610100900460ff1661219e5760405162461bcd60e51b815260040161060a90612f2d565b6108c5816123c5565b6001600160a01b0384163b156110905760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906121eb908990899088908890889060040161317e565b6020604051808303815f875af1925050508015612225575060408051601f3d908101601f191682019092526122229181019061305d565b60015b61223157611cff613078565b6001600160e01b0319811663f23a6e6160e01b1461185d5760405162461bcd60e51b815260040161060a9061310a565b306001600160a01b038216036108c557604051630c292c9d60e21b815260040160405180910390fd5b61229381611dcf565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606116b583836040518060600160405280602781526020016132b8602791396123d2565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061232c5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612358576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061237657662386f26fc10000830492506010015b6305f5e100831061238e576305f5e100830492506008015b61271083106123a257612710830492506004015b606483106123b4576064830492506002015b600a83106106385760010192915050565b61012f610b2082826131c2565b60605f5f856001600160a01b0316856040516123ee919061327c565b5f60405180830381855af49150503d805f8114612426576040519150601f19603f3d011682016040523d82523d5f602084013e61242b565b606091505b509150915061243c86838387612446565b9695505050505050565b606083156124b45782515f036124ad576001600160a01b0385163b6124ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161060a565b50816124be565b6124be83836124c6565b949350505050565b815115611d1e5781518083602001fd5b6001600160a01b03811681146108c5575f5ffd5b5f5f604083850312156124fb575f5ffd5b8235612506816124d6565b946020939093013593505050565b6001600160e01b0319811681146108c5575f5ffd5b5f60208284031215612539575f5ffd5b81356116b581612514565b5f5b8381101561255e578181015183820152602001612546565b50505f910152565b5f815180845261257d816020860160208601612544565b601f01601f19169290920160200192915050565b602081525f6116b56020830184612566565b5f602082840312156125b3575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f191681016001600160401b03811182821017156125f3576125f36125ba565b6040525050565b5f6001600160401b03821115612612576126126125ba565b5060051b60200190565b5f82601f83011261262b575f5ffd5b8135612636816125fa565b60405161264382826125ce565b80915082815260208101915060208360051b860101925085831115612666575f5ffd5b602085015b8381101561268357803583526020928301920161266b565b5095945050505050565b5f82601f83011261269c575f5ffd5b81356001600160401b038111156126b5576126b56125ba565b6040516126cc601f8301601f1916602001826125ce565b8181528460208386010111156126e0575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a08688031215612710575f5ffd5b853561271b816124d6565b9450602086013561272b816124d6565b935060408601356001600160401b03811115612745575f5ffd5b6127518882890161261c565b93505060608601356001600160401b0381111561276c575f5ffd5b6127788882890161261c565b92505060808601356001600160401b03811115612793575f5ffd5b61279f8882890161268d565b9150509295509295909350565b5f602082840312156127bc575f5ffd5b81356116b5816124d6565b5f5f604083850312156127d8575f5ffd5b82356001600160401b038111156127ed575f5ffd5b8301601f810185136127fd575f5ffd5b8035612808816125fa565b60405161281582826125ce565b80915082815260208101915060208360051b850101925087831115612838575f5ffd5b6020840193505b82841015612863578335612852816124d6565b82526020938401939091019061283f565b945050505060208301356001600160401b03811115612880575f5ffd5b61288c8582860161261c565b9150509250929050565b5f8151808452602084019350602083015f5b828110156128c65781518652602095860195909101906001016128a8565b5093949350505050565b602081525f6116b56020830184612896565b5f5f604083850312156128f3575f5ffd5b82356128fe816124d6565b915060208301356001600160401b03811115612918575f5ffd5b61288c8582860161268d565b5f5f60408385031215612935575f5ffd5b8235612940816124d6565b915060208301358015158114612954575f5ffd5b809150509250929050565b5f5f60408385031215612970575f5ffd5b50508035926020909101359150565b5f5f83601f84011261298f575f5ffd5b5081356001600160401b038111156129a5575f5ffd5b6020830191508360208285010111156129bc575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a0312156129d9575f5ffd5b87356129e4816124d6565b965060208801356129f4816124d6565b95506040880135945060608801356001600160401b03811115612a15575f5ffd5b612a218a828b0161297f565b90955093505060808801356001600160401b03811115612a3f575f5ffd5b612a4b8a828b0161297f565b989b979a50959850939692959293505050565b5f5f83601f840112612a6e575f5ffd5b5081356001600160401b03811115612a84575f5ffd5b6020830191508360208260051b85010111156129bc575f5ffd5b5f5f5f5f5f60608688031215612ab2575f5ffd5b8535612abd816124d6565b945060208601356001600160401b03811115612ad7575f5ffd5b612ae388828901612a5e565b90955093505060408601356001600160401b03811115612b01575f5ffd5b612b0d88828901612a5e565b969995985093965092949392505050565b5f5f60408385031215612b2f575f5ffd5b8235612b3a816124d6565b91506020830135612954816124d6565b5f5f5f5f5f60a08688031215612b5e575f5ffd5b8535612b69816124d6565b94506020860135612b79816124d6565b9350604086013592506060860135915060808601356001600160401b03811115612793575f5ffd5b600181811c90821680612bb557607f821691505b602082108103612bd357634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b601f821115610dd157805f5260205f20601f840160051c81016020851015612cf85750805b601f840160051c820191505b818110156107e2575f8155600101612d04565b6001600160401b03831115612d2e57612d2e6125ba565b612d4283612d3c8354612ba1565b83612cd3565b5f601f841160018114612d73575f8515612d5c5750838201355b5f19600387901b1c1916600186901b1783556107e2565b5f83815260208120601f198716915b82811015612da25786850135825560209485019460019092019101612d82565b5086821015612dbe575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561063857610638612ea7565b604081525f612ee06040830185612896565b8281036020840152612ef28185612896565b95945050505050565b5f60208284031215612f0b575f5ffd5b5051919050565b5f60208284031215612f22575f5ffd5b81516116b5816124d6565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6832ba3432b932bab69d60b91b81525f8451612f9b816009850160208901612544565b600160fe1b6009918401918201528451612fbc81600a840160208901612544565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b60018201528351612ff3816013840160208801612544565b0160130195945050505050565b6001600160a01b0386811682528516602082015260a0604082018190525f9061302b90830186612896565b828103606084015261303d8186612896565b905082810360808401526130518185612566565b98975050505050505050565b5f6020828403121561306d575f5ffd5b81516116b581612514565b5f60033d1115610bd35760045f5f3e505f5160e01c90565b5f60443d101561309d5790565b6040513d600319016004823e80513d60248201116001600160401b03821117156130c657505090565b80820180516001600160401b038111156130e1575050505090565b3d84016003190182820160200111156130fb575050505090565b610a63602082850101856125ce565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b808202811582820484141761063857610638612ea7565b5f8161317757613177612ea7565b505f190190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f906131b790830184612566565b979650505050505050565b81516001600160401b038111156131db576131db6125ba565b6131ef816131e98454612ba1565b84612cd3565b6020601f821160018114613221575f831561320a5750848201515b5f19600385901b1c1916600184901b1784556107e2565b5f84815260208120601f198516915b828110156132505787850151825560209485019460019092019101613230565b508482101561326d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f825161328d818460208701612544565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e2312aa160f98efbe517eda65a50916e81519297603411ca56578eb18f50164736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167010000000000000000000000000000000005": { + "contractName": "SignalServiceImpl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969" + }, + "code": "0x6080604052600436106101ba575f3560e01c806366ca2bc0116100f2578063910af6ed11610092578063dfc8ff1d11610062578063dfc8ff1d146104ef578063e30c39781461052d578063f2fde38b1461054a578063fe9fbb8014610569575f5ffd5b8063910af6ed1461047357806391f3f74b146104925780639b527cfa146104b1578063ce9d0820146104d0575f5ffd5b80638456cb59116100cd5780638456cb591461040f5780638abf6077146104235780638da5cb5b146104375780638e899f8014610454575f5ffd5b806366ca2bc0146103c8578063715018a6146103e757806379ba5097146103fb575f5ffd5b80633b78c8651161015d5780634f1ef286116101385780634f1ef286146103545780634f90a6741461036757806352d1902d146103945780635c975abb146103a8575f5ffd5b80633b78c865146103025780633ced0e08146103215780633f4ba83a14610340575f5ffd5b80633075db56116101985780633075db561461024957806332676bc61461026d578063355bcc3d1461028c5780633659cfe6146102e3575f5ffd5b806304f3bcec146101be57806319ab453c146102095780632d1fb3891461022a575b5f5ffd5b3480156101c9575f5ffd5b507f00000000000000000000000016701000000000000000000000000000000000065b6040516001600160a01b0390911681526020015b60405180910390f35b348015610214575f5ffd5b506102286102233660046135dd565b610597565b005b348015610235575f5ffd5b506102286102443660046135f8565b6106a9565b348015610254575f5ffd5b5061025d61074f565b6040519015158152602001610200565b348015610278575f5ffd5b5061025d610287366004613633565b610767565b348015610297575f5ffd5b506102cb6102a6366004613673565b60fb60209081525f92835260408084209091529082529020546001600160401b031681565b6040516001600160401b039091168152602001610200565b3480156102ee575f5ffd5b506102286102fd3660046135dd565b61077d565b34801561030d575f5ffd5b5061022861031c36600461368d565b610844565b34801561032c575f5ffd5b5061025d61033b3660046136fc565b610918565b34801561034b575f5ffd5b5061022861095f565b610228610362366004613814565b6109e3565b348015610372575f5ffd5b506103866103813660046136fc565b610a98565b604051908152602001610200565b34801561039f575f5ffd5b50610386610ade565b3480156103b3575f5ffd5b5061025d60c954610100900460ff1660021490565b3480156103d3575f5ffd5b506103866103e2366004613860565b610b8f565b3480156103f2575f5ffd5b50610228610b9b565b348015610406575f5ffd5b50610228610bac565b34801561041a575f5ffd5b50610228610c23565b34801561042e575f5ffd5b506101ec610ca2565b348015610442575f5ffd5b506033546001600160a01b03166101ec565b34801561045f575f5ffd5b5061025d61046e366004613860565b610cb0565b34801561047e575f5ffd5b5061038661048d366004613877565b610cc1565b34801561049d575f5ffd5b506103866104ac36600461390c565b610d9c565b3480156104bc575f5ffd5b506103866104cb366004613948565b610e08565b3480156104db575f5ffd5b506102286104ea366004613877565b610e34565b3480156104fa575f5ffd5b5061050e610509366004613948565b610e4a565b604080516001600160401b039093168352602083019190915201610200565b348015610538575f5ffd5b506065546001600160a01b03166101ec565b348015610555575f5ffd5b506102286105643660046135dd565b610ede565b348015610574575f5ffd5b5061025d6105833660046135dd565b60fc6020525f908152604090205460ff1681565b5f54610100900460ff16158080156105b557505f54600160ff909116105b806105ce5750303b1580156105ce57505f5460ff166001145b6106365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610657575f805461ff0019166101001790555b61066082610f4f565b80156106a5575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6106b1610fad565b6001600160a01b0382165f90815260fc602052604090205481151560ff9091161515036106f1576040516398f26f4560e01b815260040160405180910390fd5b6001600160a01b0382165f81815260fc6020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b5f600261075e60c95460ff1690565b60ff1614905090565b5f6107728383611007565b151590505b92915050565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000000051630036107c55760405162461bcd60e51b815260040161062d90613981565b7f00000000000000000000000001670100000000000000000000000000000000056001600160a01b03166107f7611074565b6001600160a01b03161461081d5760405162461bcd60e51b815260040161062d906139cd565b6108268161108f565b604080515f8082526020820190925261084191839190611097565b50565b647461696b6f60d81b610858816001611206565b6001600160a01b0316336001600160a01b031614610889576040516395383ea160e01b815260040160405180910390fd5b5f5b828110156108d957600160fd5f8686858181106108aa576108aa613a19565b602090810292909201358352508101919091526040015f20805460ff191691151591909117905560010161088b565b507f8e7daa0b2b1abdb036d272b0c35976e908cfd7ae752bc13c70dfa049830b8d9b838360405161090b929190613a2d565b60405180910390a1505050565b5f8180820361093a5760405163ec73295960e01b815260040160405180910390fd5b5f610946878787610e08565b9050836109533083611007565b14979650505050505050565b61097360c954610100900460ff1660021490565b6109905760405163bae6e2a960e01b815260040160405180910390fd5b6109a460c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16109e1335f61129f565b565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000000005163003610a2b5760405162461bcd60e51b815260040161062d90613981565b7f00000000000000000000000001670100000000000000000000000000000000056001600160a01b0316610a5d611074565b6001600160a01b031614610a835760405162461bcd60e51b815260040161062d906139cd565b610a8c8261108f565b6106a582826001611097565b335f90815260fc602052604081205460ff16610ac757604051631f67751f60e01b815260040160405180910390fd5b610ad3858585856112b8565b90505b949350505050565b5f306001600160a01b037f00000000000000000000000001670100000000000000000000000000000000051614610b7d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161062d565b505f516020613f985f395f51905f5290565b5f61077733838461139a565b610ba3610fad565b6109e15f611473565b60655433906001600160a01b03168114610c1a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161062d565b61084181611473565b610c3760c954610100900460ff1660021490565b15610c555760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16109e133600161129f565b5f610cab611074565b905090565b5f610cb9825490565b151592915050565b5f610cd660c954610100900460ff1660021490565b15610cf45760405163bae6e2a960e01b815260040160405180910390fd5b6002610d0260c95460ff1690565b60ff1603610d235760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660021790555f610d408787878787600161148c565b90505f5b8151811015610d8357610d6f828281518110610d6257610d62613a19565b6020026020010151611a00565b610d799084613a78565b9250600101610d44565b505060c9805460ff191660011790555b95945050505050565b6040516514d251d3905360d21b60208201526001600160c01b031960c085901b1660268201526bffffffffffffffffffffffff19606084901b16602e820152604281018290525f906062015b6040516020818303038152906040528051906020012090505b9392505050565b604080516001600160401b03808616602083015291810184905290821660608201525f90608001610de8565b610e4285858585855f61148c565b505050505050565b5f5f826001600160401b03165f03610e86576001600160401b038086165f90815260fb6020908152604080832088845290915290205416610e88565b825b91506001600160401b03821615610ed6575f610ea5868685610e08565b9050610eb13082611007565b91505f829003610ed45760405163738afa0560e01b815260040160405180910390fd5b505b935093915050565b610ee6610fad565b606580546001600160a01b0383166001600160a01b03199091168117909155610f176033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f54610100900460ff16610f755760405162461bcd60e51b815260040161062d90613a8b565b610f7d611b44565b610f9b6001600160a01b03821615610f955781611473565b33611473565b5060c9805461ff001916610100179055565b6033546001600160a01b031633146109e15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062d565b5f826001600160a01b0381166110305760405163538ba4f960e01b815260040160405180910390fd5b825f8190036110525760405163ec73295960e01b815260040160405180910390fd5b5f61105e468787610d9c565b9050611068815490565b9350505b505092915050565b5f516020613f985f395f51905f52546001600160a01b031690565b610841610fad565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110cf576110ca83611b6a565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611129575060408051601f3d908101601f1916820190925261112691810190613ad6565b60015b61118c5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161062d565b5f516020613f985f395f51905f5281146111fa5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161062d565b506110ca838383611c05565b5f7f0000000000000000000000001670100000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa15801561127b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e019190613aed565b604051630c2b8f8f60e11b815260040160405180910390fd5b5f6112c4858585610e08565b90506112d130828461139a565b506001600160401b038581165f90815260fb602090815260408083208884529091529020548185169116101561133b576001600160401b038581165f90815260fb602090815260408083208884529091529020805467ffffffffffffffff19169185169190911790555b83836001600160401b0316866001600160401b03167fde247c825b1fb2d7ff9e0e771cba6f9e757ad04479fcdc135d88ae91fd50b37d858560405161138a929190918252602082015260400190565b60405180910390a4949350505050565b5f836001600160a01b0381166113c35760405163538ba4f960e01b815260040160405180910390fd5b835f8190036113e55760405163ec73295960e01b815260040160405180910390fd5b835f8190036114075760405163ec73295960e01b815260040160405180910390fd5b611412468888610d9c565b858155604080516001600160a01b038a16815260208101899052908101829052606081018790529094507f0ad2d108660a211f47bf7fb43a0443cae181624995d3d42b88ee6879d200e9739060800160405180910390a15050509392505050565b606580546001600160a01b031916905561084181611c2f565b6060856001600160a01b0381166114b65760405163538ba4f960e01b815260040160405180910390fd5b855f8190036114d85760405163ec73295960e01b815260040160405180910390fd5b5f85900361158a5760fd5f6114ee8b8b8b610d9c565b815260208101919091526040015f205460ff1661151e57604051632213945760e11b815260040160405180910390fd5b604080515f8082526020820190925290611582565b61156f6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c082015290565b8152602001906001900390816115335790505b5092506119f4565b5f61159786880188613bc5565b905080515f036115ba57604051630b92daef60e21b815260040160405180910390fd5b5f600182516115c99190613d0b565b6001600160401b038111156115e0576115e061373d565b604051908082528060200260200182016040528015611609578160200160208202803683370190505b50905085611617575f61161a565b81515b6001600160401b038111156116315761163161373d565b60405190808252806020026020018201604052801561169e57816020015b61168b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c082015290565b81526020019060019003908161164f5790505b5094508a8a8a805f6116c2856d7369676e616c5f7365727669636560901b83611c80565b9050306001600160a01b038216036116ed57604051637556223560e11b815260040160405180910390fd5b6117256040805160c0810182525f80825260208201819052918101829052906060820190815260200160608152602001606081525090565b5f5f5f5f5b8b518110156119b3578b818151811061174557611745613a19565b602002602001015194505f5b818110156117af57855f01516001600160401b03168c828151811061177857611778613a19565b60200260200101516001600160401b0316036117a7576040516348362c2760e11b815260040160405180910390fd5b600101611751565b506117be8a8a8a8a898b611d22565b93508a518114915081156117fe5784516001600160401b031646146117f6576040516338bf822760e21b815260040160405180910390fd5b3095506118a9565b845f01518b828151811061181457611814613a19565b6001600160401b0392831660209182029290920101528551161580611842575084516001600160401b031646145b1561186057604051637556223560e11b815260040160405180910390fd5b845161187e906d7369676e616c5f7365727669636560901b5f611c80565b9550306001600160a01b038716036118a957604051637556223560e11b815260040160405180910390fd5b608085015151151592508f1561193d576040518060e00160405280866040015181526020018581526020018b6001600160401b0316815260200186602001516001600160401b03168152602001841515815260200183151581526020018660600151600381111561191c5761191c613d1e565b8152508f828151811061193157611931613a19565b60200260200101819052505b6119988a8461196c577fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf561198e565b7f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1695b8760200151610e08565b604086015186519b509699509750949550879460010161172a565b508515806119ca57506119c63088611007565b8614155b156119e85760405163738afa0560e01b815260040160405180910390fd5b50505050505050505050505b50509695505050505050565b5f8060038360c001516003811115611a1a57611a1a613d1e565b1480611a3b575060028360c001516003811115611a3957611a39613d1e565b145b9050808015611a4b575082608001515b8015611a5957508260a00151155b15611a9b5760019150611a9983604001517f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1698560600151865f01516112b8565b505b5f60038460c001516003811115611ab457611ab4613d1e565b1480611ad5575060018460c001516003811115611ad357611ad3613d1e565b145b9050808015611af15750836080015180611af157508360a00151155b15611b3d57611b01600184613a78565b9250611b3b84604001517fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf5866060015187602001516112b8565b505b5050919050565b5f54610100900460ff166109e15760405162461bcd60e51b815260040161062d90613a8b565b6001600160a01b0381163b611bd75760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161062d565b5f516020613f985f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611c0e83611dc1565b5f82511180611c1a5750805b156110ca57611c298383611e00565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f7f0000000000000000000000001670100000000000000000000000000000000006604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611cfe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad69190613aed565b5f856001600160a01b038116611d4b5760405163538ba4f960e01b815260040160405180910390fd5b855f819003611d6d5760405163ec73295960e01b815260040160405180910390fd5b855f819003611d8f5760405163ec73295960e01b815260040160405180910390fd5b611db3866040015186611da38d8d8d610d9c565b8a8a608001518b60a00151611e25565b9a9950505050505050505050565b611dca81611b6a565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610e018383604051806060016040528060278152602001613fb860279139611f32565b5f82515f14611ecd576040516bffffffffffffffffffffffff19606088901b1660208201525f90611e6990603401604051602081830303815290604052858a611fa6565b905080515f03611e8c57604051630414cd5b60e31b815260040160405180910390fd5b5f611e9682611fbf565b9050611ebb81600281518110611eae57611eae613a19565b6020026020010151611fd2565b611ec490613d32565b92505050611ed0565b50855b5f611f0786604051602001611ee791815260200190565b60408051601f19818403018152919052611f0087612051565b8585612064565b905080611f2757604051638d9a4db360e01b815260040160405180910390fd5b509695505050505050565b60605f5f856001600160a01b031685604051611f4e9190613d7a565b5f60405180830381855af49150503d805f8114611f86576040519150601f19603f3d011682016040523d82523d5f602084013e611f8b565b606091505b5091509150611f9c8683838761207d565b9695505050505050565b60605f611fb2856120f5565b9050610d93818585612127565b6060610777611fcd83612995565b6129e7565b60605f5f5f611fe085612b65565b919450925090505f816001811115611ffa57611ffa613d1e565b14612018576040516307fe6cb960e21b815260040160405180910390fd5b6120228284613a78565b85511461204257604051630b8aa6f760e31b815260040160405180910390fd5b610d9385602001518484612e48565b606061077761205f83612ed8565b612fec565b5f5f61206f866120f5565b9050611f9c81868686613044565b606083156120eb5782515f036120e4576001600160a01b0385163b6120e45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161062d565b5081610ad6565b610ad6838361306a565b6060818051906020012060405160200161211191815260200190565b6040516020818303038152906040529050919050565b60605f8451116121715760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b604482015260640161062d565b5f61217b84613094565b90505f61218786613177565b90505f8460405160200161219d91815260200190565b60408051601f1981840301815291905290505f805b845181101561293e575f8582815181106121ce576121ce613a19565b6020026020010151905084518311156122405760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b606482015260840161062d565b825f036122de578051805160209182012060405161228d9261226792910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6122d95760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f742068617368000000604482015260640161062d565b6123d4565b80515160201161236457805180516020918201206040516123089261226792910190815260200190565b6122d95760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b606482015260840161062d565b8051845160208087019190912082519190920120146123d45760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b606482015260840161062d565b6123e060106001613a78565b8160200151510361257857845183036125125761240d8160200151601081518110611eae57611eae613a19565b96505f8751116124855760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e6368290000000000606482015260840161062d565b600186516124939190613d0b565b82146125075760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e636829000000000000606482015260840161062d565b505050505050610e01565b5f85848151811061252557612525613a19565b602001015160f81c60f81b60f81c90505f82602001518260ff168151811061254f5761254f613a19565b60200260200101519050612562816131d8565b955061256f600186613a78565b94505050612935565b6002816020015151036128dc575f61258f826131fc565b90505f815f815181106125a4576125a4613a19565b016020015160f81c90505f6125ba600283613da9565b6125c5906002613dca565b90505f6125d5848360ff1661321f565b90505f6125e28a8961321f565b90505f6125ef8383613254565b9050808351146126675760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b6579000000000000606482015260840161062d565b60ff85166002148061267c575060ff85166003145b1561281c57808251146126f75760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e646572000000606482015260840161062d565b6127118760200151600181518110611eae57611eae613a19565b9c505f8d51116127895760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c6561662900000000000000606482015260840161062d565b60018c516127979190613d0b565b881461280b5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c656166290000000000000000606482015260840161062d565b505050505050505050505050610e01565b60ff8516158061282f575060ff85166001145b1561286e5761285b876020015160018151811061284e5761284e613a19565b60200260200101516131d8565b9950612867818a613a78565b98506128d1565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b606482015260840161062d565b505050505050612935565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b606482015260840161062d565b506001016121b2565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b606482015260840161062d565b604080518082019091525f808252602082015281515f036129c957604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60605f5f5f6129f585612b65565b919450925090506001816001811115612a1057612a10613d1e565b14612a2e576040516325ce355f60e11b815260040160405180910390fd5b8451612a3a8385613a78565b14612a5857604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b604080518082019091525f8082526020820152815260200190600190039081612a6f5790505093505f835b8651811015612b59575f5f612ade6040518060400160405280858c5f0151612ac29190613d0b565b8152602001858c60200151612ad79190613a78565b9052612b65565b509150915060405180604001604052808383612afa9190613a78565b8152602001848b60200151612b0f9190613a78565b815250888581518110612b2457612b24613a19565b6020908102919091010152612b3a600185613a78565b9350612b468183613a78565b612b509084613a78565b92505050612a9a565b50845250919392505050565b5f5f5f835f01515f03612b8b57604051635ab458fb60e01b815260040160405180910390fd5b602084015180515f1a607f8111612bad575f60015f9450945094505050612e41565b60b78111612c42575f612bc1608083613d0b565b905080875f015111612be6576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015612c125750600160ff1b6001600160f81b03198216105b15612c305760405163babb01dd60e01b815260040160405180910390fd5b506001955093505f9250612e41915050565b60bf8111612d20575f612c5660b783613d0b565b905080875f015111612c7b576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612cab5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612cda5760405163babb01dd60e01b815260040160405180910390fd5b612ce48184613a78565b895111612d04576040516366c9448560e01b815260040160405180910390fd5b612d0f836001613a78565b975095505f9450612e419350505050565b60f78111612d6a575f612d3460c083613d0b565b905080875f015111612d59576040516366c9448560e01b815260040160405180910390fd5b600195509350849250612e41915050565b5f612d7660f783613d0b565b905080875f015111612d9b576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612dcb5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612dfa5760405163babb01dd60e01b815260040160405180910390fd5b612e048184613a78565b895111612e24576040516366c9448560e01b815260040160405180910390fd5b612e2f836001613a78565b9750955060019450612e419350505050565b9193909250565b6060816001600160401b03811115612e6257612e6261373d565b6040519080825280601f01601f191660200182016040528015612e8c576020820181803683370190505b5090508115610e01575f612ea08486613a78565b9050602082015f5b84811015612ec0578281015182820152602001612ea8565b84811115612ece575f858301525b5050509392505050565b60605f82604051602001612eee91815260200190565b60408051601f1981840301815291905290505f5b6020811015612f3a57818181518110612f1d57612f1d613a19565b01602001516001600160f81b0319165f03612f3a57600101612f02565b612f45816020613d0b565b6001600160401b03811115612f5c57612f5c61373d565b6040519080825280601f01601f191660200182016040528015612f86576020820181803683370190505b5092505f5b8351811015611b3b578282612f9f81613de3565b935081518110612fb157612fb1613a19565b602001015160f81c60f81b848281518110612fce57612fce613a19565b60200101906001600160f81b03191690815f1a905350600101612f8b565b60608151600114801561301857506080825f8151811061300e5761300e613a19565b016020015160f81c105b15613021575090565b61302d825160806132d7565b82604051602001612111929190613dfb565b919050565b5f610ad384613054878686612127565b8051602091820120825192909101919091201490565b81511561307a5781518083602001fd5b8060405162461bcd60e51b815260040161062d9190613e29565b8051606090806001600160401b038111156130b1576130b161373d565b6040519080825280602002602001820160405280156130f657816020015b60408051808201909152606080825260208201528152602001906001900390816130cf5790505b5091505f5b81811015611b3d57604051806040016040528085838151811061312057613120613a19565b6020026020010151815260200161314f86848151811061314257613142613a19565b6020026020010151611fbf565b81525083828151811061316457613164613a19565b60209081029190910101526001016130fb565b606080604051905082518060011b603f8101601f191683016040528083525060208401602083015f5b838110156131cd578060011b8201818401515f1a8060041c8253600f8116600183015350506001016131a0565b509295945050505050565b60606020825f0151106131f3576131ee82611fd2565b610777565b61077782613474565b606061077761321a83602001515f81518110611eae57611eae613a19565b613177565b60608251821061323d575060408051602081019091525f8152610777565b610e01838384865161324f9190613d0b565b613488565b5f5f8251845110613266578251613269565b83515b90505b80821080156132c0575082828151811061328857613288613a19565b602001015160f81c60f81b6001600160f81b0319168483815181106132af576132af613a19565b01602001516001600160f81b031916145b156132d05781600101915061326c565b5092915050565b6060603883101561333b576040805160018082528183019092529060208201818036833701905050905061330b8284613e5b565b60f81b815f8151811061332057613320613a19565b60200101906001600160f81b03191690815f1a905350610777565b5f60015b6133498186613e74565b1561336f578161335881613de3565b9250613368905061010082613e87565b905061333f565b61337a826001613a78565b6001600160401b038111156133915761339161373d565b6040519080825280601f01601f1916602001820160405280156133bb576020820181803683370190505b5092506133c88483613e5b565b6133d3906037613e5b565b60f81b835f815181106133e8576133e8613a19565b60200101906001600160f81b03191690815f1a905350600190505b81811161106c576101006134178284613d0b565b61342390610100613f79565b61342d9087613e74565b6134379190613f84565b60f81b83828151811061344c5761344c613a19565b60200101906001600160f81b03191690815f1a9053508061346c81613de3565b915050613403565b606061077782602001515f845f0151612e48565b60608182601f0110156134ce5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161062d565b8282840110156135115760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161062d565b818301845110156135585760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161062d565b6060821580156135765760405191505f8252602082016040526135c0565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156135af578051835260209283019201613597565b5050858452601f01601f1916604052505b50949350505050565b6001600160a01b0381168114610841575f5ffd5b5f602082840312156135ed575f5ffd5b8135610e01816135c9565b5f5f60408385031215613609575f5ffd5b8235613614816135c9565b915060208301358015158114613628575f5ffd5b809150509250929050565b5f5f60408385031215613644575f5ffd5b823561364f816135c9565b946020939093013593505050565b80356001600160401b038116811461303f575f5ffd5b5f5f60408385031215613684575f5ffd5b61364f8361365d565b5f5f6020838503121561369e575f5ffd5b82356001600160401b038111156136b3575f5ffd5b8301601f810185136136c3575f5ffd5b80356001600160401b038111156136d8575f5ffd5b8560208260051b84010111156136ec575f5ffd5b6020919091019590945092505050565b5f5f5f5f6080858703121561370f575f5ffd5b6137188561365d565b93506020850135925061372d6040860161365d565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156137735761377361373d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156137a1576137a161373d565b604052919050565b5f82601f8301126137b8575f5ffd5b81356001600160401b038111156137d1576137d161373d565b6137e4601f8201601f1916602001613779565b8181528460208386010111156137f8575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215613825575f5ffd5b8235613830816135c9565b915060208301356001600160401b0381111561384a575f5ffd5b613856858286016137a9565b9150509250929050565b5f60208284031215613870575f5ffd5b5035919050565b5f5f5f5f5f6080868803121561388b575f5ffd5b6138948661365d565b945060208601356138a4816135c9565b93506040860135925060608601356001600160401b038111156138c5575f5ffd5b8601601f810188136138d5575f5ffd5b80356001600160401b038111156138ea575f5ffd5b8860208284010111156138fb575f5ffd5b959894975092955050506020019190565b5f5f5f6060848603121561391e575f5ffd5b6139278461365d565b92506020840135613937816135c9565b929592945050506040919091013590565b5f5f5f6060848603121561395a575f5ffd5b6139638461365d565b9250602084013591506139786040850161365d565b90509250925092565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b602080825281018290525f6001600160fb1b03831115613a4b575f5ffd5b8260051b80856040850137919091016040019392505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561077757610777613a64565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215613ae6575f5ffd5b5051919050565b5f60208284031215613afd575f5ffd5b8151610e01816135c9565b5f6001600160401b03821115613b2057613b2061373d565b5060051b60200190565b80356004811061303f575f5ffd5b5f82601f830112613b47575f5ffd5b8135613b5a613b5582613b08565b613779565b8082825260208201915060208360051b860101925085831115613b7b575f5ffd5b602085015b83811015613bbb5780356001600160401b03811115613b9d575f5ffd5b613bac886020838a01016137a9565b84525060209283019201613b80565b5095945050505050565b5f60208284031215613bd5575f5ffd5b81356001600160401b03811115613bea575f5ffd5b8201601f81018413613bfa575f5ffd5b8035613c08613b5582613b08565b8082825260208201915060208360051b850101925086831115613c29575f5ffd5b602084015b83811015611f275780356001600160401b03811115613c4b575f5ffd5b850160c0818a03601f19011215613c60575f5ffd5b613c68613751565b613c746020830161365d565b8152613c826040830161365d565b602082015260608201356040820152613c9d60808301613b2a565b606082015260a08201356001600160401b03811115613cba575f5ffd5b613cc98b602083860101613b38565b60808301525060c08201356001600160401b03811115613ce7575f5ffd5b613cf68b602083860101613b38565b60a08301525084525060209283019201613c2e565b8181038181111561077757610777613a64565b634e487b7160e01b5f52602160045260245ffd5b80516020808301519190811015613d52575f198160200360031b1b821691505b50919050565b5f5b83811015613d72578181015183820152602001613d5a565b50505f910152565b5f8251613d8b818460208701613d58565b9190910192915050565b634e487b7160e01b5f52601260045260245ffd5b5f60ff831680613dbb57613dbb613d95565b8060ff84160691505092915050565b60ff828116828216039081111561077757610777613a64565b5f60018201613df457613df4613a64565b5060010190565b5f8351613e0c818460208801613d58565b835190830190613e20818360208801613d58565b01949350505050565b602081525f8251806020840152613e47816040850160208701613d58565b601f01601f19169190910160400192915050565b60ff818116838216019081111561077757610777613a64565b5f82613e8257613e82613d95565b500490565b808202811582820484141761077757610777613a64565b6001815b6001841115610ed657808504811115613ebd57613ebd613a64565b6001841615613ecb57908102905b60019390931c928002613ea2565b5f82613ee757506001610777565b81613ef357505f610777565b8160018114613f095760028114613f1357613f2f565b6001915050610777565b60ff841115613f2457613f24613a64565b50506001821b610777565b5060208310610133831016604e8410600b8410161715613f52575081810a610777565b613f5e5f198484613e9e565b805f1904821115613f7157613f71613a64565b029392505050565b5f610e018383613ed9565b5f82613f9257613f92613d95565b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220501c5e2570481e98bdb8ee07bab464eb4baf9120eb6cc39232534f465504788964736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670100000000000000000000000000000000005": { + "contractName": "SignalService", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969", + "0x301006667fd8aa626b63e5445e5183081bd1b69d132f18fac530bd2d66888167": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000000005" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167010000000000000000000000000000010001": { + "contractName": "TaikoAnchorImpl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969" + }, + "code": "0x6080604052600436106101fc575f3560e01c80638da5cb5b11610113578063ba9f41e81161009d578063e902461a1161006d578063e902461a146105d7578063ee82ac5e146105f1578063f2fde38b14610610578063f940e3851461062f578063fd85eb2d1461064e575f5ffd5b8063ba9f41e814610553578063da69d3db14610586578063dac5df78146105a5578063e30c3978146105ba575f5ffd5b8063a7137c0f116100e3578063a7137c0f14610494578063a7e022d1146104ba578063a9edc416146104f6578063b310e9e914610515578063b8c7b30c14610534575f5ffd5b80638da5cb5b1461043d57806399df1bb91461045a5780639ee512f21461046f578063a4b23554146102a1575f5ffd5b80634f1ef28611610194578063715018a611610164578063715018a6146103a957806379ba5097146103bd5780638456cb59146103d1578063893f5460146103e55780638abf607714610429575f5ffd5b80634f1ef2861461032e57806352d1902d14610341578063539b8ade146103635780635c975abb14610389575f5ffd5b80633075db56116101cf5780633075db56146102bf57806333d5ac9b146102d35780633659cfe6146102f95780633f4ba83a1461031a575f5ffd5b806304f3bcec1461020057806312622e5b1461024b578063136dc4a8146102825780632f980473146102a1575b5f5ffd5b34801561020b575f5ffd5b507f00000000000000000000000016701000000000000000000000000000000100025b6040516001600160a01b0390911681526020015b60405180910390f35b348015610256575f5ffd5b5060fe5461026a906001600160401b031681565b6040516001600160401b039091168152602001610242565b34801561028d575f5ffd5b5061026a61029c366004612675565b61066d565b3480156102ac575f5ffd5b505f5b6040519015158152602001610242565b3480156102ca575f5ffd5b506102af610687565b3480156102de575f5ffd5b5060fd5461026a90600160401b90046001600160401b031681565b348015610304575f5ffd5b506103186103133660046126c9565b61069f565b005b348015610325575f5ffd5b5061031861076f565b61031861033c3660046126ff565b6107f3565b34801561034c575f5ffd5b506103556108ac565b604051908152602001610242565b34801561036e575f5ffd5b5060fd5461026a90600160801b90046001600160401b031681565b348015610394575f5ffd5b506102af60c954610100900460ff1660021490565b3480156103b4575f5ffd5b5061031861095d565b3480156103c8575f5ffd5b5061031861096e565b3480156103dc575f5ffd5b506103186109e5565b3480156103f0575f5ffd5b506104046103ff3660046127e5565b610a64565b604080519384526001600160401b039283166020850152911690820152606001610242565b348015610434575f5ffd5b5061022e610b90565b348015610448575f5ffd5b506033546001600160a01b031661022e565b348015610465575f5ffd5b5061035560ff5481565b34801561047a575f5ffd5b5061022e71777735367b36bc9b61c50022d9d0700db4ec81565b34801561049f575f5ffd5b5060fd5461026a90600160c01b90046001600160401b031681565b3480156104c5575f5ffd5b506104d96104d436600461281d565b610b9e565b604080519283526001600160401b03909116602083015201610242565b348015610501575f5ffd5b5061031861051036600461284e565b610bb9565b348015610520575f5ffd5b5061031861052f366004612904565b610de6565b34801561053f575f5ffd5b5060fd5461026a906001600160401b031681565b34801561055e575f5ffd5b5061026a7f000000000000000000000000000000000000000000000000000000000000000081565b348015610591575f5ffd5b506103186105a0366004612921565b611018565b3480156105b0575f5ffd5b5061035560fc5481565b3480156105c5575f5ffd5b506065546001600160a01b031661022e565b3480156105e2575f5ffd5b506104d96104d4366004612964565b3480156105fc575f5ffd5b5061035561060b3660046129ac565b611031565b34801561061b575f5ffd5b5061031861062a3660046126c9565b611069565b34801561063a575f5ffd5b506103186106493660046129c3565b6110da565b348015610659575f5ffd5b506103186106683660046129fa565b611291565b5f6040516372c0090b60e11b815260040160405180910390fd5b5f600261069660c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000100011630036106f05760405162461bcd60e51b81526004016106e790612a3b565b60405180910390fd5b7f00000000000000000000000001670100000000000000000000000000000100016001600160a01b0316610722611440565b6001600160a01b0316146107485760405162461bcd60e51b81526004016106e790612a87565b6107518161145b565b604080515f8082526020820190925261076c91839190611463565b50565b61078360c954610100900460ff1660021490565b6107a05760405163bae6e2a960e01b815260040160405180910390fd5b6107b460c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16107f1335f6115d2565b565b6001600160a01b037f000000000000000000000000016701000000000000000000000000000001000116300361083b5760405162461bcd60e51b81526004016106e790612a3b565b7f00000000000000000000000001670100000000000000000000000000000100016001600160a01b031661086d611440565b6001600160a01b0316146108935760405162461bcd60e51b81526004016106e790612a87565b61089c8261145b565b6108a882826001611463565b5050565b5f306001600160a01b037f0000000000000000000000000167010000000000000000000000000000010001161461094b5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106e7565b505f516020612d635f395f51905f5290565b6109656115d6565b6107f15f611630565b60655433906001600160a01b031681146109dc5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106e7565b61076c81611630565b6109f960c954610100900460ff1660021490565b15610a175760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16107f13360016115d2565b5f808080610a756020860186612ad3565b60ff16610a886060870160408801612af3565b63ffffffff16610a989190612b20565b60fd54909150610abc906001600160401b03600160c01b8204811691849116611649565b90935091505f610ad26060870160408801612af3565b63ffffffff1660fd60109054906101000a90046001600160401b031688610af99190612b49565b610b039190612b20565b9050610b1560a0870160808801612af3565b63ffffffff1615801590610b465750610b3460a0870160808801612af3565b63ffffffff16816001600160401b0316115b15610b6457610b5b60a0870160808801612af3565b63ffffffff1690505b610b808484838b610b7b60808c0160608d01612b68565b611761565b9099949850965092945050505050565b5f610b99611440565b905090565b5f5f6040516372c0090b60e11b815260040160405180910390fd5b855f819003610bdb5760405163ec73295960e01b815260040160405180910390fd5b876001600160401b0316805f03610c055760405163ec73295960e01b815260040160405180910390fd5b610c156060860160408701612af3565b63ffffffff16805f03610c3b5760405163ec73295960e01b815260040160405180910390fd5b610c486020870187612ad3565b60ff16805f03610c6b5760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec14610c9d57604051636494e9f760e01b815260040160405180910390fd5b6002610cab60c95460ff1690565b60ff1603610ccc5760405163dfc60d8560e01b815260040160405180910390fd5b610cd660026117e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316431015610d2057604051631799c89b60e01b815260040160405180910390fd5b60ff8990555f610d31600143612b81565b9050610d3c816117f7565b610d46898961182f565b610d508c8c611916565b610d5981611a31565b610d746d7369676e616c5f7365727669636560901b5f611ac8565b6001600160a01b0316633b78c86588886040518363ffffffff1660e01b8152600401610da1929190612b94565b5f604051808303815f87803b158015610db8575f5ffd5b505af1158015610dca573d5f5f3e3d5ffd5b5050505050610dd960016117e1565b5050505050505050505050565b5f54610100900460ff1615808015610e0457505f54600160ff909116105b80610e1d5750303b158015610e1d57505f5460ff166001145b610e805760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106e7565b5f805460ff191660011790558015610ea1575f805461ff0019166101001790555b610eaa84611b6a565b826001600160401b03165f03610ed3576040516308279a2560e31b815260040160405180910390fd5b46836001600160401b031603610efc576040516308279a2560e31b815260040160405180910390fd5b60014611610f1d57604051638f972ecb60e01b815260040160405180910390fd5b6001600160401b03461115610f4557604051638f972ecb60e01b815260040160405180910390fd5b4315610f8f5743600103610f76575f610f5f600143612b81565b5f81815260fb602052604090209040905550610f8f565b604051635a0f9e4160e11b815260040160405180910390fd5b60fe80546001600160401b0380861667ffffffffffffffff199283161790925560fd805492851692909116919091179055610fc943611bc8565b5060fc558015611012575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6040516372c0090b60e11b815260040160405180910390fd5b5f43821061104057505f919050565b4361104d83610100612bcb565b1061105757504090565b505f90815260fb602052604090205490565b6110716115d6565b606580546001600160a01b0383166001600160a01b031990911681179091556110a26033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b806001600160a01b0381166111025760405163538ba4f960e01b815260040160405180910390fd5b61111660c954610100900460ff1660021490565b156111345760405163bae6e2a960e01b815260040160405180910390fd5b693bb4ba34323930bbb2b960b11b6111546033546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148061118e5750611179816001611ac8565b6001600160a01b0316336001600160a01b0316145b6111ab576040516395383ea160e01b815260040160405180910390fd5b60026111b960c95460ff1690565b60ff16036111da5760405163dfc60d8560e01b815260040160405180910390fd5b6111e460026117e1565b6001600160a01b03841661120a576112056001600160a01b03841647611c58565b611287565b6040516370a0823160e01b81523060048201526112879084906001600160a01b038716906370a0823190602401602060405180830381865afa158015611252573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112769190612bde565b6001600160a01b0387169190611c63565b61101260016117e1565b825f8190036112b35760405163ec73295960e01b815260040160405180910390fd5b846001600160401b0316805f036112dd5760405163ec73295960e01b815260040160405180910390fd5b6112ed6060840160408501612af3565b63ffffffff16805f036113135760405163ec73295960e01b815260040160405180910390fd5b6113206020850185612ad3565b60ff16805f036113435760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec1461137557604051636494e9f760e01b815260040160405180910390fd5b600261138360c95460ff1690565b60ff16036113a45760405163dfc60d8560e01b815260040160405180910390fd5b6113ae60026117e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b031643106113f757604051631799c89b60e01b815260040160405180910390fd5b5f611403600143612b81565b905061140e816117f7565b611418878761182f565b6114228989611916565b61142b81611a31565b5061143660016117e1565b5050505050505050565b5f516020612d635f395f51905f52546001600160a01b031690565b61076c6115d6565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561149b5761149683611cb5565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114f5575060408051601f3d908101601f191682019092526114f291810190612bde565b60015b6115585760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106e7565b5f516020612d635f395f51905f5281146115c65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106e7565b50611496838383611d50565b6108a85b6033546001600160a01b031633146107f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e7565b606580546001600160a01b031916905561076c81611d74565b5f80670de0b6b3a76400006001600160401b03861682036116705784849250925050611759565b6001600160401b03851615806116975750846001600160401b0316866001600160401b0316145b806116b557506116a8815f19612c09565b856001600160401b031610155b156116c65785849250925050611759565b5f866001600160401b0316866001600160401b0316836116e69190612c1c565b6116f09190612c09565b905080158061170557506001600160ff1b0381115b15611717578585935093505050611759565b5f61172182611dc5565b90505f828702828902015f811260018114611740578582049250611744565b5f92505b50508761175082611fe2565b95509550505050505b935093915050565b5f808061177d63ffffffff86166001600160401b038916612bcb565b9050856001600160401b031681116117965760016117a9565b6117a96001600160401b03871682612b81565b90506117c86001600160401b036117c283878316611ff4565b90612009565b91506117d4888361201d565b9250509550959350505050565b60c9805460ff191660ff92909216919091179055565b5f5f61180283611bc8565b915091508160fc54146118285760405163d719258d60e01b815260040160405180910390fd5b60fc555050565b5f5f5f61183d854286610a64565b9250925092508248148061184e57505f5b61186b576040516336d54d4f60e11b815260040160405180910390fd5b60fd5460408051600160c01b83046001600160401b039081168252858116602083015292831681830152918316606083015260808201859052517f781ae5c2215806150d5c71a4ed5336e5dc3ad32aef04fc0f626a6ee0c2f8d1c89181900360a00190a160fd805477ffffffffffffffffffffffffffffffff000000000000000016600160c01b6001600160401b039485160267ffffffffffffffff19161791909216179055505050565b60fd546001600160401b03600160401b909104811690831611611937575050565b6119526d7369676e616c5f7365727669636560901b5f611ac8565b60fe546040516313e4299d60e21b81526001600160401b0391821660048201527f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da16960248201529084166044820152606481018390526001600160a01b039190911690634f90a674906084016020604051808303815f875af11580156119d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119fd9190612bde565b505060fd80546001600160401b03909216600160401b026fffffffffffffffff000000000000000019909216919091179055565b5f81815260fb60205260409081902082409081905560fd80546001600160401b03428116600160801b0267ffffffffffffffff60801b1983168117909355935192937f41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe493611abc938693908316921691909117909182526001600160401b0316602082015260400190565b60405180910390a15050565b5f7f0000000000000000000000001670100000000000000000000000000000010002604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611b3d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b619190612c33565b90505b92915050565b5f54610100900460ff16611b905760405162461bcd60e51b81526004016106e790612c4e565b611b9861205f565b611bb66001600160a01b03821615611bb05781611630565b33611630565b5060c9805461ff001916610100179055565b5f5f611bd261263a565b5f5b60ff81108015611be75750806001018510155b15611c18575f198186030180408360ff83066101008110611c0a57611c0a612c99565b602002015250600101611bd4565b5046611fe082015261200081209250834081611c3560ff87612cad565b6101008110611c4657611c46612c99565b60200201526120009020919391925050565b6108a882825a612085565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526114969084906120c8565b6001600160a01b0381163b611d225760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106e7565b5f516020612d635f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611d598361219b565b5f82511180611d655750805b156114965761101283836121da565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6fffffffffffffffffffffffffffffffff811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b175f8213611e2157631615e6385f526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b5f611b64826001600160401b03612009565b5f8183116120025781611b61565b5090919050565b5f8183116120175782611b61565b50919050565b5f826001600160401b03165f0361203657506001611b64565b611b616001846001600160401b031661204f86866121ff565b6120599190612c09565b90611ff4565b5f54610100900460ff166107f15760405162461bcd60e51b81526004016106e790612c4e565b815f0361209157505050565b6120ab83838360405180602001604052805f81525061228d565b61149657604051634c67134d60e11b815260040160405180910390fd5b5f61211c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166122ca9092919063ffffffff16565b905080515f148061213c57508080602001905181019061213c9190612cc0565b6114965760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106e7565b6121a481611cb5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060611b618383604051806060016040528060278152602001612d83602791396122d8565b5f826001600160401b03165f0361221857612218612cdf565b5f836001600160401b0316836001600160401b0316670de0b6b3a76400006122409190612c1c565b61224a9190612c09565b9050680755bf798b4a1bf1e48111156122695750680755bf798b4a1bf1e45b670de0b6b3a764000061227b8261234c565b6122859190612c09565b949350505050565b5f6001600160a01b0385166122b557604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606061228584845f856124c6565b60605f5f856001600160a01b0316856040516122f49190612d15565b5f60405180830381855af49150503d805f811461232c576040519150601f19603f3d011682016040523d82523d5f602084013e612331565b606091505b50915091506123428683838761259d565b9695505050505050565b5f68023f2fa8f6da5b9d2819821361236357919050565b680755bf798b4a1bf1e582126123805763a37bfec95f526004601cfd5b6503782dace9d9604e83901b0591505f60606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6060824710156125275760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106e7565b5f5f866001600160a01b031685876040516125429190612d15565b5f6040518083038185875af1925050503d805f811461257c576040519150601f19603f3d011682016040523d82523d5f602084013e612581565b606091505b50915091506125928783838761259d565b979650505050505050565b6060831561260b5782515f03612604576001600160a01b0385163b6126045760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106e7565b5081612285565b61228583838151156126205781518083602001fd5b8060405162461bcd60e51b81526004016106e79190612d30565b604051806120000160405280610100906020820280368337509192915050565b80356001600160401b0381168114612670575f5ffd5b919050565b5f5f5f60608486031215612687575f5ffd5b6126908461265a565b925061269e6020850161265a565b91506126ac6040850161265a565b90509250925092565b6001600160a01b038116811461076c575f5ffd5b5f602082840312156126d9575f5ffd5b81356126e4816126b5565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215612710575f5ffd5b823561271b816126b5565b915060208301356001600160401b03811115612735575f5ffd5b8301601f81018513612745575f5ffd5b80356001600160401b0381111561275e5761275e6126eb565b604051601f8201601f19908116603f011681016001600160401b038111828210171561278c5761278c6126eb565b6040528181528282016020018710156127a3575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114612670575f5ffd5b5f60a08284031215612017575f5ffd5b5f5f5f60e084860312156127f7575f5ffd5b612800846127c2565b925061280e6020850161265a565b91506126ac85604086016127d5565b5f5f6040838503121561282e575f5ffd5b6128378361265a565b9150612845602084016127c2565b90509250929050565b5f5f5f5f5f5f5f610140888a031215612865575f5ffd5b61286e8861265a565b9650602088013595506040880135945061288a606089016127c2565b93506128998960808a016127d5565b92506101208801356001600160401b038111156128b4575f5ffd5b8801601f81018a136128c4575f5ffd5b80356001600160401b038111156128d9575f5ffd5b8a60208260051b84010111156128ed575f5ffd5b602082019350809250505092959891949750929550565b5f5f5f60608486031215612916575f5ffd5b8335612690816126b5565b5f5f5f5f60808587031215612934575f5ffd5b843593506020850135925061294b6040860161265a565b9150612959606086016127c2565b905092959194509250565b5f5f5f5f6101008587031215612978575f5ffd5b61298286866127d5565b935061299060a0860161265a565b925061299e60c0860161265a565b915061295960e086016127c2565b5f602082840312156129bc575f5ffd5b5035919050565b5f5f604083850312156129d4575f5ffd5b82356129df816126b5565b915060208301356129ef816126b5565b809150509250929050565b5f5f5f5f6101008587031215612a0e575f5ffd5b612a178561265a565b935060208501359250612a2c604086016127c2565b915061295986606087016127d5565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215612ae3575f5ffd5b813560ff811681146126e4575f5ffd5b5f60208284031215612b03575f5ffd5b611b61826127c2565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160290811690818114612b4257612b42612b0c565b5092915050565b6001600160401b038281168282160390811115611b6457611b64612b0c565b5f60208284031215612b78575f5ffd5b611b618261265a565b81810381811115611b6457611b64612b0c565b602080825281018290525f6001600160fb1b03831115612bb2575f5ffd5b8260051b80856040850137919091016040019392505050565b80820180821115611b6457611b64612b0c565b5f60208284031215612bee575f5ffd5b5051919050565b634e487b7160e01b5f52601260045260245ffd5b5f82612c1757612c17612bf5565b500490565b8082028115828204841417611b6457611b64612b0c565b5f60208284031215612c43575f5ffd5b81516126e4816126b5565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f82612cbb57612cbb612bf5565b500690565b5f60208284031215612cd0575f5ffd5b815180151581146126e4575f5ffd5b634e487b7160e01b5f52600160045260245ffd5b5f5b83811015612d0d578181015183820152602001612cf5565b50505f910152565b5f8251612d26818460208701612cf3565b9190910192915050565b602081525f8251806020840152612d4e816040850160208701612cf3565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ea05ec8ec1f003e81409af185668f7157a3a792e356a9b6aa6b132034a7471c164736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670100000000000000000000000000000010001": { + "contractName": "TaikoAnchor", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969", + "0x00000000000000000000000000000000000000000000000000000000000000fe": "0x00000000000000000000000000000000000000000000000000000001a2140cff", + "0x00000000000000000000000000000000000000000000000000000000000000fd": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x00000000000000000000000000000000000000000000000000000000000000fc": "0xc1dacae4531cef33c3d19601822ade91f548e191b030fa88c5964199df8c2a8f", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000010001" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167010000000000000000000000000000010002": { + "contractName": "RollupResolverImpl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969" + }, + "code": "0x6080604052600436106100fa575f3560e01c80636c6563f6116100925780638abf6077116100625780638abf6077146102515780638da5cb5b14610265578063b490d87f14610282578063e30c3978146102a1578063f2fde38b146102be575f5ffd5b80636c6563f6146101f6578063715018a61461021557806379ba5097146102295780638456cb591461023d575f5ffd5b80633f4ba83a116100cd5780633f4ba83a1461018d5780634f1ef286146101a157806352d1902d146101b45780635c975abb146101d6575f5ffd5b806304f3bcec146100fe57806319ab453c146101295780633075db561461014a5780633659cfe61461016e575b5f5ffd5b348015610109575f5ffd5b50305b6040516001600160a01b0390911681526020015b60405180910390f35b348015610134575f5ffd5b50610148610143366004610e60565b6102dd565b005b348015610155575f5ffd5b5061015e6103ef565b6040519015158152602001610120565b348015610179575f5ffd5b50610148610188366004610e60565b610407565b348015610198575f5ffd5b506101486104ce565b6101486101af366004610e8d565b610552565b3480156101bf575f5ffd5b506101c8610607565b604051908152602001610120565b3480156101e1575f5ffd5b5061015e60c954610100900460ff1660021490565b348015610201575f5ffd5b5061010c610210366004610f51565b6106b8565b348015610220575f5ffd5b50610148610709565b348015610234575f5ffd5b5061014861071a565b348015610248575f5ffd5b50610148610791565b34801561025c575f5ffd5b5061010c610810565b348015610270575f5ffd5b506033546001600160a01b031661010c565b34801561028d575f5ffd5b5061014861029c366004610f8b565b61081e565b3480156102ac575f5ffd5b506065546001600160a01b031661010c565b3480156102c9575f5ffd5b506101486102d8366004610e60565b61089f565b5f54610100900460ff16158080156102fb57505f54600160ff909116105b806103145750303b15801561031457505f5460ff166001145b61037c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561039d575f805461ff0019166101001790555b6103a682610910565b80156103eb575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f60026103fe60c95460ff1690565b60ff1614905090565b6001600160a01b037f000000000000000000000000016701000000000000000000000000000001000216300361044f5760405162461bcd60e51b815260040161037390610fbd565b7f00000000000000000000000001670100000000000000000000000000000100026001600160a01b031661048161096e565b6001600160a01b0316146104a75760405162461bcd60e51b815260040161037390611009565b6104b081610989565b604080515f808252602082019092526104cb91839190610991565b50565b6104e260c954610100900460ff1660021490565b6104ff5760405163bae6e2a960e01b815260040160405180910390fd5b61051360c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610550335f610b00565b565b6001600160a01b037f000000000000000000000000016701000000000000000000000000000001000216300361059a5760405162461bcd60e51b815260040161037390610fbd565b7f00000000000000000000000001670100000000000000000000000000000100026001600160a01b03166105cc61096e565b6001600160a01b0316146105f25760405162461bcd60e51b815260040161037390611009565b6105fb82610989565b6103eb82826001610991565b5f306001600160a01b037f000000000000000000000000016701000000000000000000000000000001000216146106a65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610373565b505f5160206111275f395f51905f5290565b5f83815260fb602090815260408083208584529091529020546001600160a01b0316801515806106e55750815b61070257604051631692906160e11b815260040160405180910390fd5b9392505050565b610711610b19565b6105505f610b73565b60655433906001600160a01b031681146107885760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610373565b6104cb81610b73565b6107a560c954610100900460ff1660021490565b156107c35760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610550336001610b00565b5f61081961096e565b905090565b610826610b19565b5f83815260fb6020908152604080832085845282529182902080546001600160a01b038581166001600160a01b0319831681179093558451928352169181018290529091849186917f3fd0559a7b01eb7106f9d9ce79ec76bb44f608a295878cce50856e54dba83d35910160405180910390a350505050565b6108a7610b19565b606580546001600160a01b0383166001600160a01b031990911681179091556108d86033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f54610100900460ff166109365760405162461bcd60e51b815260040161037390611055565b61093e610b8c565b61095c6001600160a01b038216156109565781610b73565b33610b73565b5060c9805461ff001916610100179055565b5f5160206111275f395f51905f52546001600160a01b031690565b6104cb610b19565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156109c9576109c483610bb2565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a23575060408051601f3d908101601f19168201909252610a20918101906110a0565b60015b610a865760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610373565b5f5160206111275f395f51905f528114610af45760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610373565b506109c4838383610c4d565b604051630c2b8f8f60e11b815260040160405180910390fd5b6033546001600160a01b031633146105505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610373565b606580546001600160a01b03191690556104cb81610c77565b5f54610100900460ff166105505760405162461bcd60e51b815260040161037390611055565b6001600160a01b0381163b610c1f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610373565b5f5160206111275f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610c5683610cc8565b5f82511180610c625750805b156109c457610c718383610d07565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610cd181610bb2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061070283836040518060600160405280602781526020016111476027913960605f5f856001600160a01b031685604051610d4391906110d9565b5f60405180830381855af49150503d805f8114610d7b576040519150601f19603f3d011682016040523d82523d5f602084013e610d80565b606091505b5091509150610d9186838387610d9b565b9695505050505050565b60608315610e095782515f03610e02576001600160a01b0385163b610e025760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610373565b5081610e13565b610e138383610e1b565b949350505050565b815115610e2b5781518083602001fd5b8060405162461bcd60e51b815260040161037391906110f4565b80356001600160a01b0381168114610e5b575f5ffd5b919050565b5f60208284031215610e70575f5ffd5b61070282610e45565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610e9e575f5ffd5b610ea783610e45565b9150602083013567ffffffffffffffff811115610ec2575f5ffd5b8301601f81018513610ed2575f5ffd5b803567ffffffffffffffff811115610eec57610eec610e79565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610f1b57610f1b610e79565b604052818152828201602001871015610f32575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215610f63575f5ffd5b833592506020840135915060408401358015158114610f80575f5ffd5b809150509250925092565b5f5f5f60608486031215610f9d575f5ffd5b8335925060208401359150610fb460408501610e45565b90509250925092565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156110b0575f5ffd5b5051919050565b5f5b838110156110d15781810151838201526020016110b9565b50505f910152565b5f82516110ea8184602087016110b7565b9190910192915050565b602081525f82518060208401526111128160408501602087016110b7565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cea95311c3f20813610f4631b26d3a9acfd02e6c978fbdca8e76b1d289f36df064736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670100000000000000000000000000000010002": { + "contractName": "RollupResolver", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000661690da28c8b78b0199019771771bafb6a93969", + "0x1bd2b99f99179300cf02ec1d7601bc5aa76d7eff5110d5c1e971d6dad552d55c": "0x0000000000000000000000001670100000000000000000000000000000010001", + "0xe5868eccbe729200743507b6a76ef4952ff4776d6f6e681ea64d7940675418c0": "0x0000000000000000000000001670100000000000000000000000000000000001", + "0x84e8aac80b10d1364654096d750848d40210c937caf853cdc47e8784ad6cf9d5": "0x0000000000000000000000001670100000000000000000000000000000000005", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000010002" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x0" + }, + "0x6bc32CFC95667Ee2F61aaFb16807aD377650eC7F": { + "contractName": "LibNetwork", + "storage": {}, + "code": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212203acc22e18ae0935d8599ecd5ae5ed1d248d7501dc7d8268c6e1b10524b5eb75764736f6c634300081b0033", + "balance": "0x0" + } + } \ No newline at end of file diff --git a/core/types/op_deposit_tx.go b/core/types/op_deposit_tx.go new file mode 100644 index 000000000000..ac917c0ad224 --- /dev/null +++ b/core/types/op_deposit_tx.go @@ -0,0 +1,74 @@ +package types + +import ( + "bytes" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/rlp" +) + +// CHANGES(taiko): make taiko-geth compatible with the op-service library. +const DepositTxType = 0x7E + +type DepositTx struct { + // SourceHash uniquely identifies the source of the deposit + SourceHash common.Hash + // From is exposed through the types.Signer, not through TxData + From common.Address + // nil means contract creation + To *common.Address `rlp:"nil"` + // Mint is minted on L2, locked on L1, nil if no minting. + Mint *big.Int `rlp:"nil"` + // Value is transferred from L2 balance, executed after Mint (if any) + Value *big.Int + // gas limit + Gas uint64 + // Field indicating if this transaction is exempt from the L2 gas limit. + IsSystemTransaction bool + // Normal Tx data + Data []byte +} + +// copy creates a deep copy of the transaction data and initializes all fields. +func (tx *DepositTx) copy() TxData { + return nil +} + +// accessors for innerTx. +func (tx *DepositTx) txType() byte { return DepositTxType } +func (tx *DepositTx) chainID() *big.Int { return common.Big0 } +func (tx *DepositTx) accessList() AccessList { return nil } +func (tx *DepositTx) data() []byte { return tx.Data } +func (tx *DepositTx) gas() uint64 { return tx.Gas } +func (tx *DepositTx) gasFeeCap() *big.Int { return new(big.Int) } +func (tx *DepositTx) gasTipCap() *big.Int { return new(big.Int) } +func (tx *DepositTx) gasPrice() *big.Int { return new(big.Int) } +func (tx *DepositTx) value() *big.Int { return tx.Value } +func (tx *DepositTx) nonce() uint64 { return 0 } +func (tx *DepositTx) to() *common.Address { return tx.To } +func (tx *DepositTx) isSystemTx() bool { return tx.IsSystemTransaction } // nolint:unused +func (tx *DepositTx) isAnchor() bool { return false } +func (tx *DepositTx) markAsAnchor() error { return ErrInvalidTxType } + +func (tx *DepositTx) effectiveGasPrice(dst *big.Int, baseFee *big.Int) *big.Int { + return dst.Set(new(big.Int)) +} + +func (tx *DepositTx) effectiveNonce() *uint64 { return nil } // nolint:unused + +func (tx *DepositTx) rawSignatureValues() (v, r, s *big.Int) { + return common.Big0, common.Big0, common.Big0 +} + +func (tx *DepositTx) setSignatureValues(chainID, v, r, s *big.Int) { + // this is a noop for deposit transactions +} + +func (tx *DepositTx) encode(b *bytes.Buffer) error { + return rlp.Encode(b, tx) +} + +func (tx *DepositTx) decode(input []byte) error { + return rlp.DecodeBytes(input, tx) +} diff --git a/eth/catalyst/api.go b/eth/catalyst/api.go index 17fcfdfd3a89..40c1b0d2107a 100644 --- a/eth/catalyst/api.go +++ b/eth/catalyst/api.go @@ -488,8 +488,11 @@ func (api *ConsensusAPI) forkchoiceUpdated(update engine.ForkchoiceStateV1, payl // Write L1Origin. rawdb.WriteL1Origin(api.eth.ChainDb(), l1Origin.BlockID, l1Origin) - // Write the head L1Origin. - rawdb.WriteHeadL1Origin(api.eth.ChainDb(), l1Origin.BlockID) + + // Write the head L1Origin, only when it's not a preconfirmation block. + if !l1Origin.IsPreconfBlock() { + rawdb.WriteHeadL1Origin(api.eth.ChainDb(), l1Origin.BlockID) + } return valid(&id), nil } diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index f51a6d7662b4..1fd9b1cf37c0 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -165,7 +165,7 @@ type Config struct { func CreateConsensusEngine(config *params.ChainConfig, db ethdb.Database) (consensus.Engine, error) { // CHANGE(taiko): use Taiko consensus engine when the --taiko flag is set. if config.Taiko { - return taiko.New(config), nil + return taiko.New(config, db), nil } // Geth v1.14.0 dropped support for non-merged networks in any consensus // mode. If such a network is requested, reject startup. diff --git a/params/config.go b/params/config.go index 6397c24a3993..fd4c34bce596 100644 --- a/params/config.go +++ b/params/config.go @@ -300,6 +300,7 @@ var NetworkNames = map[string]string{ JolnirNetworkID.String(): "Taiko Alpha-5 L2 (Jolnir)", KatlaNetworkID.String(): "Taiko Alpha-6 L2 (Katla)", HeklaNetworkID.String(): "Taiko Alpha-7 L2 (Hekla)", + PreconfDevnetNetworkID.String(): "Taiko Preconfirmation Devnet", } // ChainConfig is the core config which determines the blockchain settings. diff --git a/params/taiko_config.go b/params/taiko_config.go index 6908471d81b0..a2cb1496d96d 100644 --- a/params/taiko_config.go +++ b/params/taiko_config.go @@ -1,11 +1,38 @@ package params import ( + "encoding/binary" "math/big" "github.com/ethereum/go-ethereum/common" ) +// To make taiko-geth compatible with the op-service library, we need to define the following constants and functions. +type ProtocolVersion [32]byte +type ProtocolVersionComparison int + +func (p ProtocolVersion) String() string { + return "" +} + +func (p ProtocolVersion) Compare(other ProtocolVersion) (cmp ProtocolVersionComparison) { + return 0 +} + +type ProtocolVersionV0 struct { + Build [8]byte + Major, Minor, Patch, PreRelease uint32 +} + +func (v ProtocolVersionV0) Encode() (out ProtocolVersion) { + copy(out[8:16], v.Build[:]) + binary.BigEndian.PutUint32(out[16:20], v.Major) + binary.BigEndian.PutUint32(out[20:24], v.Minor) + binary.BigEndian.PutUint32(out[24:28], v.Patch) + binary.BigEndian.PutUint32(out[28:32], v.PreRelease) + return +} + func u64(val uint64) *uint64 { return &val } // Network IDs @@ -20,6 +47,7 @@ var ( JolnirNetworkID = big.NewInt(167007) KatlaNetworkID = big.NewInt(167008) HeklaNetworkID = big.NewInt(167009) + PreconfDevnetNetworkID = big.NewInt(167010) ) var networkIDToChainConfig = map[*big.Int]*ChainConfig{ @@ -33,6 +61,7 @@ var networkIDToChainConfig = map[*big.Int]*ChainConfig{ JolnirNetworkID: TaikoChainConfig, KatlaNetworkID: TaikoChainConfig, HeklaNetworkID: TaikoChainConfig, + PreconfDevnetNetworkID: TaikoChainConfig, MainnetChainConfig.ChainID: MainnetChainConfig, SepoliaChainConfig.ChainID: SepoliaChainConfig, TestChainConfig.ChainID: TestChainConfig, diff --git a/params/taiko_config_test.go b/params/taiko_config_test.go index f82864732500..21a1cc057564 100644 --- a/params/taiko_config_test.go +++ b/params/taiko_config_test.go @@ -61,6 +61,11 @@ func TestNetworkIDToChainConfigOrDefault(t *testing.T) { HeklaNetworkID, TaikoChainConfig, }, + { + "preconfDevnetNetworkID", + PreconfDevnetNetworkID, + TaikoChainConfig, + }, { "mainnet", MainnetChainConfig.ChainID, diff --git a/rpc/json.go b/rpc/json.go index e932389d17c7..15649c2e17a8 100644 --- a/rpc/json.go +++ b/rpc/json.go @@ -41,6 +41,9 @@ const ( var null = json.RawMessage("null") +// CHANGE(taiko): make taiko-geth compatible with op-service +type JsonError = jsonError + type subscriptionResult struct { ID string `json:"subscription"` Result json.RawMessage `json:"result,omitempty"`