From e4f533daeeee52c998e643c1f99d7e8cc9978147 Mon Sep 17 00:00:00 2001 From: dave | d1onys1us <13951458+d1onys1us@users.noreply.github.com> Date: Thu, 11 May 2023 13:47:16 +0900 Subject: [PATCH] feat(repo): add fork-diff package and clean up readme (#13738) Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> --- README.md | 24 +- packages/fork-diff/README.md | 15 + packages/fork-diff/fork.yaml | 380 ++ packages/fork-diff/index.html | 6687 +++++++++++++++++++++++++++++++++ packages/tokenomics/README.md | 3 + 5 files changed, 7098 insertions(+), 11 deletions(-) create mode 100644 packages/fork-diff/README.md create mode 100644 packages/fork-diff/fork.yaml create mode 100755 packages/fork-diff/index.html create mode 100644 packages/tokenomics/README.md diff --git a/README.md b/README.md index adba0804ac..5fc1231bcd 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@

- TAIKO + Taiko

@@ -27,7 +27,7 @@ ## Documentation -Most documentation can be found on the website, at [taiko.xyz](https://taiko.xyz). There should also be a README in each package, as well as comments in the source code. +Documentation can be found on the website at [taiko.xyz](https://taiko.xyz). There is also a README in each package, as well as comments in the source code. ## Project structure @@ -38,15 +38,17 @@ taiko-mono/ ├── LICENSE.md ├── README.md ├── packages -│ ├── branding: Taiko branding materials -│ ├── bridge-ui: Taiko bridge frontend UI. 🚧 In maintenance 🚧 -│ ├── eventindexer: Event indexer -│ ├── protocol: Taiko protocol and bridge smart contracts -│ ├── relayer: Bridge backend relayer in Go -│ ├── starter-dapp: Template for Taiko dapps -│ ├── status-page: Taiko protocol status page -│ ├── website: Main documentation website at taiko.xyz (https://taiko.xyz/) -│ └── whitepaper: Whitepaper source files with automated publishing +│ ├── branding: Taiko branding materials. +│ ├── bridge-ui: Taiko bridge frontend UI. +│ ├── eventindexer: Event indexer. +│ ├── fork-diff: Fork diff page (currently, for geth). +│ ├── protocol: Taiko protocol and bridge smart contracts. +│ ├── relayer: Bridge backend relayer in Go. +│ ├── starter-dapp: Template for Taiko dapps. +│ ├── status-page: Taiko protocol status page. +│ ├── tokenomics: Taiko tokenomics simulations. +│ ├── website: Main documentation website at [taiko.xyz](https://taiko.xyz/). +│ └── whitepaper: Whitepaper source files with automated publishing. ... diff --git a/packages/fork-diff/README.md b/packages/fork-diff/README.md new file mode 100644 index 0000000000..b4e85698f5 --- /dev/null +++ b/packages/fork-diff/README.md @@ -0,0 +1,15 @@ +# Overview + +This package contains: + +- An `index.html` which shows the diff between [taiko-geth](https://github.com/taikoxyz/taiko-geth) and [go-ethereum](https://github.com/ethereum/go-ethereum). +- The `fork.yaml` configuration which is used by [forkdiff](https://github.com/protolambda/forkdiff) to generate the `index.html`. + +## Steps to update the fork diff page + +To update the `index.html` (which shows the diff): + +1. Clone [forkdiff](https://github.com/protolambda/forkdiff), [taiko-geth](https://github.com/taikoxyz/taiko-geth), and [go-ethereum](https://github.com/ethereum/go-ethereum) into the same working directory. +2. Make any of the desired updates to `fork.yaml` and then copy `fork.yaml` from this package to the root of the forkdiff repo. +3. From the root of the forkdiff repo, run `go run main.go -repo ../taiko-geth/ -upstream-repo ../go-ethereum/`. +4. Copy the output `index.html` to this package and commit it. diff --git a/packages/fork-diff/fork.yaml b/packages/fork-diff/fork.yaml new file mode 100644 index 0000000000..e29423fb51 --- /dev/null +++ b/packages/fork-diff/fork.yaml @@ -0,0 +1,380 @@ +title: "Taiko-Geth Fork Diff" # Define the HTML page title +footer: | # define the footer with markdown + [taiko-geth](https://github.com/taikoxyz/taiko-geth) fork overview created with [Forkdiff](https://github.com/protolambda/forkdiff) +base: + name: ethereum/go-ethereum + url: https://github.com/ethereum/go-ethereum + ref: refs/tags/v1.11.5 +fork: + name: taikoxyz/taiko-geth + url: https://github.com/taikoxyz/taiko-geth + ref: refs/heads/taiko +def: + title: "taiko-geth" + description: | # description in markdown + This is an overview of the changes between [`taiko-geth`](https://github.com/taikoxyz/taiko-geth) and [`go-ethereum`](https://github.com/ethereum/go-ethereum). + sub: + # - title: "Changes in accounts" + # description: this show mods to accounts files + # sub: + # - title: "second layer" + # globs: + # - "accounts/*/*" + # - title: "third layer" + # globs: + # - "accounts/*/*/*" + # - title: "fourth layer" + # globs: + # - "accounts/*/*/*/*" + + - title: "beacon/engine" + description: This show modifications to beacon files. + sub: + - title: "first layer" + globs: + - "beacon/*/*" + + # - title: "Changes in build" + # description: This shows modifications to build files + # sub: + # - title: "first layer" + # globs: + # - "build/*" + # - title: "second layer" + # globs: + # - "build/*/*" + # - title: "third layer" + # globs: + # - "build/*/*/*" + + - title: "cmd" + description: This shows modifications to cmd files. + sub: + - title: "Files" + description: "These changes are for registering our RPC APIs and custom genesis settings." + globs: + - "cmd/*/*" + + # - title: "Changes in common" + # description: This shows modifications to common files + # sub: + # - title: "first layer" + # globs: + # - "common/*" + # - title: "second layer" + # globs: + # - "common/*/*" + + - title: "consensus" + description: This shows modifications to consensus files. + sub: + # - title: "first layer" + # globs: + # - "consensus/*" + - title: "Files" + description: "This is our Taiko consensus engine, built for L2 rollup." + globs: + - "consensus/*/*" + + # - title: "Changes in console" + # description: "This shows changes to console files" + # sub: + # - title: "first layer" + # globs: + # - "console/*" + + - title: "core" + description: This shows modifications to core files. + sub: + - title: "first layer" + globs: + - "core/*" + - title: "second layer" + globs: + - "core/*/*" + + # - title: "Changes in crypto" + # description: This shows modifications to crypto files + # sub: + # - title: "first layer" + # globs: + # - "crypto/*" + # - title: "second layer" + # globs: + # - "crypto/*/*" + # - title: "third layer" + # globs: + # - "crypto/*/*/*" + # - title: "fourth layer" + # globs: + # - "crypto/*/*/*/*" + # - title: "fifth layer" + # globs: + # - "crypto/*/*/*/*/*" + # - title: "sixth layer" + # globs: + # - "crypto/*/*/*/*/*/*" + + # - title: "Changes in docs" + # description: "This shows changes to docs files" + # sub: + # - title: "second layer" + # globs: + # - "docs/*/*" + + - title: "eth" + description: This shows changes to eth files. + sub: + - title: "API Backend Files" + description: "This is our API backend, it handles l2 node related RPC calls." + globs: + - "eth/*" + - title: "API Files" + description: "This adds Taiko protocol specific logic into the API." + globs: + - "eth/*/*" + # - title: "third layer" + # globs: + # - "eth/*/*/*" + # - title: "fourth layer" + # globs: + # - "eth/*/*/*/*" + # - title: "fifth layer" + # globs: + # - "eth/*/*/*/*/*" + # - title: "sixth layer" + # globs: + # - "eth/*/*/*/*/*/*" + + - title: "ethclient" + description: This shows changes to ethclient files. + sub: + - title: "Files" + description: "This provides API calls for L1 and L2 Origins, as well as Throwaway Block Receipts." + globs: + - "ethclient/*" + # - title: "second layer" + # globs: + # - "ethclient/*/*" + + # - title: "Changes in ethdb" + # description: "This shows changes to ethdb files" + # sub: + # - title: "second layer" + # globs: + # - "ethdb/*/*" + + # - title: "Changes in ethstats" + # description: "This shows changes to ethstats files" + # sub: + # - title: "first layer" + # globs: + # - "ethstats/*" + + # - title: "Changes in event" + # description: "This shows changes to event files" + # sub: + # - title: "first layer" + # globs: + # - "event/*" + + # - title: "Changes in graphql" + # description: "This shows changes to graphql files" + # sub: + # - title: "first layer" + # globs: + # - "graphql/*" + + # - title: "Changes in internal" + # description: "This shows chnages to internal files" + # sub: + # - title: "first layer" + # globs: + # - "internal/*" + # - title: "second layer" + # globs: + # - "internal/*/*" + + - title: "les" + description: This shows changes to les files. + sub: + - title: "first layer" + globs: + - "les/*" + # - title: "second layer" + # globs: + # - "les/*/*" + # - title: "third layer" + # globs: + # - "les/*/*/*" + + # - title: "Changes in light" + # description: "This shows changes to light files" + # sub: + # - title: "first layer" + # globs: + # - "light/*" + + # - title: "Changes in log" + # description: "This shows changes to log files" + # sub: + # - title: "first layer" + # globs: + # - "log/*" + + # - title: "Changes in metrics" + # description: "This shows changes to metrics files" + # sub: + # - title: "first layer" + # globs: + # - "metrics/*" + # - title: "second layer" + # globs: + # - "metrics/*/*" + + - title: "miner" + description: This shows changes to miner files. + sub: + - title: "Files" + description: This adds Taiko-specific miner changes. + globs: + - "miner/*" + + # - title: "Changes in mobile" + # description: "This shows changes to mobile files" + # sub: + # - title: "first layer" + # globs: + # - "mobile/*" + + # - title: "Changes in node" + # description: "This shows changes to node files" + # sub: + # - title: "first layer" + # globs: + # - "node/*" + + # - title: "Changes in p2p" + # description: "This shows changes to p2p files" + # sub: + # - title: "first layer" + # globs: + # - "p2p/*" + # - title: "second layer" + # globs: + # - "p2p/*/*" + # - title: "third layer" + # globs: + # - "p2p/*/*/*" + + - title: "params" + description: This shows changes to params files. + sub: + - title: "Files" + description: "This adds Taiko config values such as chainIds/Network Ids." + globs: + - "params/*" + + # - title: "Changes in rlp" + # description: "This shows changes to rlp files" + # sub: + # - title: "first layer" + # globs: + # - "rlp/*" + # - title: "second layer" + # globs: + # - "rlp/*/*" + # - title: "third layer" + # globs: + # - "rlp/*/*/*" + + # - title: "Changes in rpc" + # description: "This shows changes to the rpc files" + # sub: + # - title: "first layer" + # globs: + # - "rpc/*" + # - title: "second layer" + # globs: + # - "rpc/*/*" + + # - title: "Changes in signer" + # description: "This shows changes to the signer files" + # sub: + # - title: "second layer" + # globs: + # - "signer/*/*" + # - title: "third layer" + # globs: + # - "signer/*/*/*" + + # - title: "Changes in swarm" + # description: "This shows changes to the swarm files" + # sub: + # - title: "first layer" + # globs: + # - "swarm/*" + + # - title: "Changes in tests" + # description: "This shows changes to the tests files" + # sub: + # - title: "first layer" + # globs: + # - "tests/*" + # - title: "third layer" + # globs: + # - "tests/*/*/*" + + # - title: "Changes in trie" + # description: "This shows changes to the trie files" + # sub: + # - title: "first layer" + # globs: + # - "trie/*" + +# files can be ignored globally, these will be listed in a separate grayed-out section, +# and do not count towards the total line count. +ignore: + - "Dockerfile*" + - "Makefile" + - "accounts/*" + - ".*" + - ".github/*" + - ".github/*/*" + - "*.json" + - "*/*.json" + - "*/*/*.json" + - "*/*/*/*.json" + - "*/*/*/*/*.json" + - "*/*/*/*/*/*.json" + - "*/*/*/*/*/*/*.json" + - "*.pb.go" + - "*/*.pb.go" + - "*/*/*.pb.go" + - "*/*/*/*.pb.go" + - "*/*/*/*/*.pb.go" + - "*/*/*/*/*/*.pb.go" + - "*/*/*/*/*/*/*.pb.go" + - "*/*/*/*/*/*/*/*.pb.go" + - "*.sum" + - "*/*.sum" + - "*/*/*.sum" + - "*/*/*/*.sum" + - "*/*/*/*/*.sum" + - "*/*/*/*/*/*.sum" + - "*/*/*/*/*/*/*.sum" + - "*/*/*/*/*/*/*/*.sum" + - "*/*/*/*/*/*/*/*/*.sum" + - "*.mod" + - "*/*.mod" + - "*/*/*.mod" + - "*/*/*/*.mod" + - "*/*/*/*/*.mod" + - "*/*/*/*/*/*.mod" + - "*/*/*/*/*/*/*.mod" + - "*/*/*/*/*/*/*/*.mod" + - "*/*/*/*/*/*/*/*/*.mod" + - "tests" + - "*.md" +# *.pb.go +# *.sum diff --git a/packages/fork-diff/index.html b/packages/fork-diff/index.html new file mode 100755 index 0000000000..8d73453a2f --- /dev/null +++ b/packages/fork-diff/index.html @@ -0,0 +1,6687 @@ + + + + + + + + + + Taiko-Geth Fork Diff + + + + + + + + +

+
+
+
+
+
+ + +
+
+
+
+
+
+ +

taiko-geth

+ +
+
+
+2019
+
-55
+
+
+
+ +
+

This is an overview of the changes between taiko-geth and go-ethereum.

+
+
+ +
+
+ +
+ +
+

This show modifications to beacon files.

+
+
+ +
+
+ +
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
+6
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/beacon/engine/gen_ed.go taikoxyz/taiko-geth/beacon/engine/gen_ed.go +index 336dfc6cc75595f8c6580a8d51a80796c27a7fa8..86b42d1209f7be7305330c44dded6028bbd73c87 100644 +--- ethereum/go-ethereum/beacon/engine/gen_ed.go ++++ taikoxyz/taiko-geth/beacon/engine/gen_ed.go +@@ -32,6 +32,7 @@ BaseFeePerGas *hexutil.Big `json:"baseFeePerGas" gencodec:"required"` + BlockHash common.Hash `json:"blockHash" gencodec:"required"` + Transactions []hexutil.Bytes `json:"transactions" gencodec:"required"` + Withdrawals []*types.Withdrawal `json:"withdrawals"` ++ TxHash common.Hash `json:"txHash"` + } + var enc ExecutableData + enc.ParentHash = e.ParentHash +@@ -54,6 +55,7 @@ enc.Transactions[k] = v + } + } + enc.Withdrawals = e.Withdrawals ++ enc.TxHash = e.TxHash + return json.Marshal(&enc) + } +  +@@ -75,6 +77,7 @@ BaseFeePerGas *hexutil.Big `json:"baseFeePerGas" gencodec:"required"` + BlockHash *common.Hash `json:"blockHash" gencodec:"required"` + Transactions []hexutil.Bytes `json:"transactions" gencodec:"required"` + Withdrawals []*types.Withdrawal `json:"withdrawals"` ++ TxHash *common.Hash `json:"txHash"` + } + var dec ExecutableData + if err := json.Unmarshal(input, &dec); err != nil { +@@ -141,6 +144,9 @@ e.Transactions[k] = v + } + if dec.Withdrawals != nil { + e.Withdrawals = dec.Withdrawals ++ } ++ if dec.TxHash != nil { ++ e.TxHash = *dec.TxHash + } + return nil + }
+
+ + +
+ + +
+ +
+ +
+ +
+
+23
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/beacon/engine/gen_blockparams.go taikoxyz/taiko-geth/beacon/engine/gen_blockparams.go +index 0dd2b52597ad5ddc7fc46d97c6c8878edf29d471..1e339ba893cdd219360a423c2da5aeaf006e8de9 100644 +--- ethereum/go-ethereum/beacon/engine/gen_blockparams.go ++++ taikoxyz/taiko-geth/beacon/engine/gen_blockparams.go +@@ -5,9 +5,11 @@ + import ( + "encoding/json" + "errors" ++ "math/big" +  + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" ++ "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/types" + ) +  +@@ -20,12 +22,18 @@ Timestamp hexutil.Uint64 `json:"timestamp" gencodec:"required"` + Random common.Hash `json:"prevRandao" gencodec:"required"` + SuggestedFeeRecipient common.Address `json:"suggestedFeeRecipient" gencodec:"required"` + Withdrawals []*types.Withdrawal `json:"withdrawals"` ++ BaseFeePerGas *big.Int `json:"baseFeePerGas" gencodec:"required"` ++ BlockMetadata *BlockMetadata `json:"blockMetadata" gencodec:"required"` ++ L1Origin *rawdb.L1Origin `json:"l1Origin" gencodec:"required"` + } + var enc PayloadAttributes + enc.Timestamp = hexutil.Uint64(p.Timestamp) + enc.Random = p.Random + enc.SuggestedFeeRecipient = p.SuggestedFeeRecipient + enc.Withdrawals = p.Withdrawals ++ enc.BaseFeePerGas = p.BaseFeePerGas ++ enc.BlockMetadata = p.BlockMetadata ++ enc.L1Origin = p.L1Origin + return json.Marshal(&enc) + } +  +@@ -36,6 +44,9 @@ Timestamp *hexutil.Uint64 `json:"timestamp" gencodec:"required"` + Random *common.Hash `json:"prevRandao" gencodec:"required"` + SuggestedFeeRecipient *common.Address `json:"suggestedFeeRecipient" gencodec:"required"` + Withdrawals []*types.Withdrawal `json:"withdrawals"` ++ BaseFeePerGas *big.Int `json:"baseFeePerGas" gencodec:"required"` ++ BlockMetadata *BlockMetadata `json:"blockMetadata" gencodec:"required"` ++ L1Origin *rawdb.L1Origin `json:"l1Origin" gencodec:"required"` + } + var dec PayloadAttributes + if err := json.Unmarshal(input, &dec); err != nil { +@@ -56,5 +67,17 @@ p.SuggestedFeeRecipient = *dec.SuggestedFeeRecipient + if dec.Withdrawals != nil { + p.Withdrawals = dec.Withdrawals + } ++ if dec.BaseFeePerGas == nil { ++ return errors.New("missing required field 'baseFeePerGas' for PayloadAttributes") ++ } ++ p.BaseFeePerGas = dec.BaseFeePerGas ++ if dec.BlockMetadata == nil { ++ return errors.New("missing required field 'blockMetadata' for PayloadAttributes") ++ } ++ p.BlockMetadata = dec.BlockMetadata ++ if dec.L1Origin == nil { ++ return errors.New("missing required field 'l1Origin' for PayloadAttributes") ++ } ++ p.L1Origin = dec.L1Origin + return nil + }
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+82
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/beacon/engine/gen_blockmetadata.go taikoxyz/taiko-geth/beacon/engine/gen_blockmetadata.go +new file mode 100644 +index 0000000000000000000000000000000000000000..e63d43c832b30ace39247c041ad84c9de579a573 +--- /dev/null ++++ taikoxyz/taiko-geth/beacon/engine/gen_blockmetadata.go +@@ -0,0 +1,82 @@ ++// Code generated by github.com/fjl/gencodec. DO NOT EDIT. ++ ++package engine ++ ++import ( ++ "encoding/json" ++ "errors" ++ "math/big" ++ ++ "github.com/ethereum/go-ethereum/common" ++ "github.com/ethereum/go-ethereum/common/hexutil" ++) ++ ++var _ = (*blockMetadataMarshaling)(nil) ++ ++// MarshalJSON marshals as JSON. ++func (b BlockMetadata) MarshalJSON() ([]byte, error) { ++ type BlockMetadata struct { ++ Beneficiary common.Address `json:"beneficiary" gencodec:"required"` ++ GasLimit uint64 `json:"gasLimit" gencodec:"required"` ++ Timestamp hexutil.Uint64 `json:"timestamp" gencodec:"required"` ++ MixHash common.Hash `json:"mixHash" gencodec:"required"` ++ ExtraData hexutil.Bytes `json:"extraData" gencodec:"required"` ++ TxList hexutil.Bytes `json:"txList" gencodec:"required"` ++ HighestBlockID *big.Int `json:"highestBlockID" gencodec:"required"` ++ } ++ var enc BlockMetadata ++ enc.Beneficiary = b.Beneficiary ++ enc.GasLimit = b.GasLimit ++ enc.Timestamp = hexutil.Uint64(b.Timestamp) ++ enc.MixHash = b.MixHash ++ enc.ExtraData = b.ExtraData ++ enc.TxList = b.TxList ++ enc.HighestBlockID = b.HighestBlockID ++ return json.Marshal(&enc) ++} ++ ++// UnmarshalJSON unmarshals from JSON. ++func (b *BlockMetadata) UnmarshalJSON(input []byte) error { ++ type BlockMetadata struct { ++ Beneficiary *common.Address `json:"beneficiary" gencodec:"required"` ++ GasLimit *uint64 `json:"gasLimit" gencodec:"required"` ++ Timestamp *hexutil.Uint64 `json:"timestamp" gencodec:"required"` ++ MixHash *common.Hash `json:"mixHash" gencodec:"required"` ++ ExtraData *hexutil.Bytes `json:"extraData" gencodec:"required"` ++ TxList *hexutil.Bytes `json:"txList" gencodec:"required"` ++ HighestBlockID *big.Int `json:"highestBlockID" gencodec:"required"` ++ } ++ var dec BlockMetadata ++ if err := json.Unmarshal(input, &dec); err != nil { ++ return err ++ } ++ if dec.Beneficiary == nil { ++ return errors.New("missing required field 'beneficiary' for BlockMetadata") ++ } ++ b.Beneficiary = *dec.Beneficiary ++ if dec.GasLimit == nil { ++ return errors.New("missing required field 'gasLimit' for BlockMetadata") ++ } ++ b.GasLimit = *dec.GasLimit ++ if dec.Timestamp == nil { ++ return errors.New("missing required field 'timestamp' for BlockMetadata") ++ } ++ b.Timestamp = uint64(*dec.Timestamp) ++ if dec.MixHash == nil { ++ return errors.New("missing required field 'mixHash' for BlockMetadata") ++ } ++ b.MixHash = *dec.MixHash ++ if dec.ExtraData == nil { ++ return errors.New("missing required field 'extraData' for BlockMetadata") ++ } ++ b.ExtraData = *dec.ExtraData ++ if dec.TxList == nil { ++ return errors.New("missing required field 'txList' for BlockMetadata") ++ } ++ b.TxList = *dec.TxList ++ if dec.HighestBlockID == nil { ++ return errors.New("missing required field 'highestBlockID' for BlockMetadata") ++ } ++ b.HighestBlockID = dec.HighestBlockID ++ return nil ++}
+
+ + +
+ + +
+ +
+ +
+ +
+
+32
+
-1
+
+ +
+
+
diff --git ethereum/go-ethereum/beacon/engine/types.go taikoxyz/taiko-geth/beacon/engine/types.go +index 07ebe544b438f4c0d356efc4362928c37de8062b..97047dbdf94b5ff66176f3d5823fe23dcfd8d9f6 100644 +--- ethereum/go-ethereum/beacon/engine/types.go ++++ taikoxyz/taiko-geth/beacon/engine/types.go +@@ -22,6 +22,7 @@ "math/big" +  + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" ++ "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/trie" + ) +@@ -35,6 +36,10 @@ Timestamp uint64 `json:"timestamp" gencodec:"required"` + Random common.Hash `json:"prevRandao" gencodec:"required"` + SuggestedFeeRecipient common.Address `json:"suggestedFeeRecipient" gencodec:"required"` + Withdrawals []*types.Withdrawal `json:"withdrawals"` ++ // CHANGE(taiko): extra fields. ++ BaseFeePerGas *big.Int `json:"baseFeePerGas" gencodec:"required"` ++ BlockMetadata *BlockMetadata `json:"blockMetadata" gencodec:"required"` ++ L1Origin *rawdb.L1Origin `json:"l1Origin" gencodec:"required"` + } +  + // JSON type overrides for PayloadAttributes. +@@ -42,9 +47,33 @@ type payloadAttributesMarshaling struct { + Timestamp hexutil.Uint64 + } +  +-//go:generate go run github.com/fjl/gencodec -type ExecutableData -field-override executableDataMarshaling -out gen_ed.go ++//go:generate go run github.com/fjl/gencodec -type BlockMetadata -field-override blockMetadataMarshaling -out gen_blockmetadata.go ++ ++// CHANGE(taiko): BlockMetadata represents a `BlockMetadata` struct defined in ++// protocol's `LibData`. ++type BlockMetadata struct { ++ // Fields defined in `LibData.blockMetadata`. ++ Beneficiary common.Address `json:"beneficiary" gencodec:"required"` ++ GasLimit uint64 `json:"gasLimit" gencodec:"required"` ++ Timestamp uint64 `json:"timestamp" gencodec:"required"` ++ MixHash common.Hash `json:"mixHash" gencodec:"required"` ++ ExtraData []byte `json:"extraData" gencodec:"required"` ++ ++ // Extra fields required in go-taiko. ++ TxList []byte `json:"txList" gencodec:"required"` ++ HighestBlockID *big.Int `json:"highestBlockID" gencodec:"required"` ++} ++ ++// CHANGE(taiko): JSON type overrides for BlockMetadata. ++type blockMetadataMarshaling struct { ++ Timestamp hexutil.Uint64 ++ TxList hexutil.Bytes ++ ExtraData hexutil.Bytes ++} +  + // ExecutableData is the data necessary to execute an EL payload. ++// ++//go:generate go run github.com/fjl/gencodec -type ExecutableData -field-override executableDataMarshaling -out gen_ed.go + type ExecutableData struct { + ParentHash common.Hash `json:"parentHash" gencodec:"required"` + FeeRecipient common.Address `json:"feeRecipient" gencodec:"required"` +@@ -61,6 +90,7 @@ BaseFeePerGas *big.Int `json:"baseFeePerGas" gencodec:"required"` + BlockHash common.Hash `json:"blockHash" gencodec:"required"` + Transactions [][]byte `json:"transactions" gencodec:"required"` + Withdrawals []*types.Withdrawal `json:"withdrawals"` ++ TxHash common.Hash `json:"txHash"` // CHANGE(taiko): allow passing txHash directly instead of transactions list + } +  + // JSON type overrides for executableData. +@@ -182,6 +212,7 @@ if params.Withdrawals != nil { + h := types.DeriveSha(types.Withdrawals(params.Withdrawals), trie.NewStackTrie(nil)) + withdrawalsRoot = &h + } ++ + header := &types.Header{ + ParentHash: params.ParentHash, + UncleHash: types.EmptyUncleHash,
+
+ + +
+
+ +
+
+
+ + +
+
+
+ + +
+ +
+

This shows modifications to cmd files.

+
+
+ +
+
+ +
+ +
+

These changes are for registering our RPC APIs and custom genesis settings.

+
+
+ +
+ + +
+ +
+ +
+ +
+
+3
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/cmd/geth/config.go taikoxyz/taiko-geth/cmd/geth/config.go +index 0b856d1c1b7a9c25a29c0b467a3f88487ef09ebb..827c453a0f313ef3bb1fd5b64a92b86715d8c7b6 100644 +--- ethereum/go-ethereum/cmd/geth/config.go ++++ taikoxyz/taiko-geth/cmd/geth/config.go +@@ -164,6 +164,9 @@ cfg.Eth.OverrideShanghai = &v + } + backend, eth := utils.RegisterEthService(stack, &cfg.Eth) +  ++ // CHANGE(TAIKO): register Taiko RPC APIs. ++ utils.RegisterTaikoAPIs(stack, &cfg.Eth, eth) ++ + // Configure log filter RPC API. + filterSystem := utils.RegisterFilterAPI(stack, backend, &cfg.Eth) +
+
+ + +
+ + +
+ +
+ +
+ +
+
+4
+
-1
+
+ +
+
+
diff --git ethereum/go-ethereum/cmd/utils/flags.go taikoxyz/taiko-geth/cmd/utils/flags.go +index 08de71ee831bfb9e29441c76226842e748108702..2794f9ef79cb4c837291c0e38529204504ed098b 100644 +--- ethereum/go-ethereum/cmd/utils/flags.go ++++ taikoxyz/taiko-geth/cmd/utils/flags.go +@@ -1860,6 +1860,9 @@ } +  + // Override any default configs for hard coded networks. + switch { ++ // CHANGE(taiko): when --taiko flag is set, use the Taiko genesis. ++ case ctx.IsSet(TaikoFlag.Name): ++ cfg.Genesis = core.TaikoGenesisBlock(cfg.NetworkId) + case ctx.Bool(MainnetFlag.Name): + if !ctx.IsSet(NetworkIdFlag.Name) { + cfg.NetworkId = 1 +@@ -2234,7 +2237,7 @@ ethashConfig := ethconfig.Defaults.Ethash + if ctx.Bool(FakePoWFlag.Name) { + ethashConfig.PowMode = ethash.ModeFake + } +- engine := ethconfig.CreateConsensusEngine(stack, &ethashConfig, cliqueConfig, nil, false, chainDb) ++ engine := ethconfig.CreateConsensusEngine(stack, &ethashConfig, cliqueConfig, nil, false, chainDb, ctx.Bool(TaikoFlag.Name)) + if gcmode := ctx.String(GCModeFlag.Name); gcmode != "full" && gcmode != "archive" { + Fatalf("--%s must be either 'full' or 'archive'", GCModeFlag.Name) + }
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+35
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/cmd/utils/taiko_flags.go taikoxyz/taiko-geth/cmd/utils/taiko_flags.go +new file mode 100644 +index 0000000000000000000000000000000000000000..d6d23c96cfbe517dc2264ff5d367bb87d62ebf78 +--- /dev/null ++++ taikoxyz/taiko-geth/cmd/utils/taiko_flags.go +@@ -0,0 +1,35 @@ ++package utils ++ ++import ( ++ "os" ++ ++ "github.com/ethereum/go-ethereum/eth" ++ "github.com/ethereum/go-ethereum/eth/ethconfig" ++ "github.com/ethereum/go-ethereum/node" ++ "github.com/ethereum/go-ethereum/params" ++ "github.com/ethereum/go-ethereum/rpc" ++ "github.com/urfave/cli/v2" ++) ++ ++var ( ++ TaikoFlag = cli.BoolFlag{ ++ Name: "taiko", ++ Usage: "Taiko network", ++ } ++) ++ ++// RegisterTaikoAPIs initializes and registers the Taiko RPC APIs. ++func RegisterTaikoAPIs(stack *node.Node, cfg *ethconfig.Config, backend *eth.Ethereum) { ++ if os.Getenv("TAIKO_TEST") != "" { ++ return ++ } ++ // Add methods under "taiko_" RPC namespace to the available APIs list ++ stack.RegisterAPIs([]rpc.API{ ++ { ++ Namespace: "taiko", ++ Version: params.VersionWithMeta, ++ Service: eth.NewTaikoAPIBackend(backend), ++ Public: true, ++ }, ++ }) ++}
+
+ + +
+ + +
+ +
+ +
+ +
+
+3
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/cmd/geth/main.go taikoxyz/taiko-geth/cmd/geth/main.go +index a970e76523426210919e122b5881a18d9a688412..28858b0f90d60b9ef8d3820dede496ba773665b2 100644 +--- ethereum/go-ethereum/cmd/geth/main.go ++++ taikoxyz/taiko-geth/cmd/geth/main.go +@@ -250,6 +250,9 @@ debug.Flags, + metricsFlags, + ) +  ++ // CHANGE(taiko): append Taiko flags into the original GETH flags ++ app.Flags = append(app.Flags, &utils.TaikoFlag) ++ + app.Before = func(ctx *cli.Context) error { + flags.MigrateGlobalFlags(ctx) + return debug.Setup(ctx)
+
+ + +
+
+ +
+
+
+ + +
+
+
+ + +
+ +
+

This shows modifications to consensus files.

+
+
+ +
+
+ +
+ +
+

This is our Taiko consensus engine, built for L2 rollup.

+
+
+ +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+212
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/consensus/taiko/consensus_test.go taikoxyz/taiko-geth/consensus/taiko/consensus_test.go +new file mode 100644 +index 0000000000000000000000000000000000000000..68c7be72215109ae9d0ad8737463df55bbf8585c +--- /dev/null ++++ taikoxyz/taiko-geth/consensus/taiko/consensus_test.go +@@ -0,0 +1,212 @@ ++package taiko_test ++ ++import ( ++ "bytes" ++ "math/big" ++ "testing" ++ "time" ++ ++ "github.com/ethereum/go-ethereum/common" ++ "github.com/ethereum/go-ethereum/consensus" ++ "github.com/ethereum/go-ethereum/consensus/taiko" ++ "github.com/ethereum/go-ethereum/core" ++ "github.com/ethereum/go-ethereum/core/rawdb" ++ "github.com/ethereum/go-ethereum/core/types" ++ "github.com/ethereum/go-ethereum/crypto" ++ "github.com/ethereum/go-ethereum/eth" ++ "github.com/ethereum/go-ethereum/eth/ethconfig" ++ "github.com/ethereum/go-ethereum/node" ++ "github.com/ethereum/go-ethereum/params" ++ "github.com/stretchr/testify/assert" ++) ++ ++var ( ++ testL2RollupAddress = common.HexToAddress("0x79fcdef22feed20eddacbb2587640e45491b757f") ++ testKey, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") ++ testAddr = crypto.PubkeyToAddress(testKey.PublicKey) ++ ++ genesis *core.Genesis ++ txs []*types.Transaction ++ testEngine *taiko.Taiko ++) ++ ++func init() { ++ config := params.TestChainConfig ++ config.GrayGlacierBlock = nil ++ config.ArrowGlacierBlock = nil ++ config.Ethash = nil ++ config.Taiko = true ++ testEngine = taiko.New() ++ ++ genesis = &core.Genesis{ ++ Config: config, ++ Alloc: core.GenesisAlloc{testAddr: {Balance: big.NewInt(2e15)}}, ++ ExtraData: []byte("test genesis"), ++ Timestamp: 9000, ++ Difficulty: common.Big0, ++ BaseFee: big.NewInt(params.InitialBaseFee), ++ } ++ ++ txs = []*types.Transaction{ ++ types.MustSignNewTx(testKey, types.LatestSigner(genesis.Config), &types.LegacyTx{ ++ Nonce: 0, ++ Value: big.NewInt(12), ++ GasPrice: big.NewInt(params.InitialBaseFee), ++ Gas: params.TxGas, ++ To: &common.Address{2}, ++ }), ++ types.MustSignNewTx(testKey, types.LatestSigner(genesis.Config), &types.LegacyTx{ ++ Nonce: 1, ++ Value: big.NewInt(8), ++ GasPrice: big.NewInt(params.InitialBaseFee), ++ Gas: params.TxGas, ++ To: &common.Address{2}, ++ }), ++ // prepareBlockTx ++ types.MustSignNewTx(testKey, types.LatestSigner(genesis.Config), &types.LegacyTx{ ++ Nonce: 2, ++ Value: big.NewInt(8), ++ GasPrice: big.NewInt(params.InitialBaseFee), ++ Gas: params.TxGas, ++ To: &testL2RollupAddress, ++ }), ++ } ++} ++ ++func newTestBackend(t *testing.T) (*eth.Ethereum, []*types.Block) { ++ // Generate test chain. ++ blocks := generateTestChain() ++ ++ // Create node ++ n, err := node.New(&node.Config{}) ++ if err != nil { ++ t.Fatalf("can't create new node: %v", err) ++ } ++ ++ // Create Ethereum Service ++ config := &ethconfig.Config{ ++ Genesis: genesis, ++ } ++ ++ ethservice, err := eth.New(n, config) ++ if err != nil { ++ t.Fatalf("can't create new ethereum service: %v", err) ++ } ++ ++ // Import the test chain. ++ if err := n.Start(); err != nil { ++ t.Fatalf("can't start test node: %v", err) ++ } ++ ++ if _, err := ethservice.BlockChain().InsertChain(blocks[1:]); err != nil { ++ t.Fatalf("can't import test blocks: %v", err) ++ } ++ ++ if _, ok := ethservice.Engine().(*taiko.Taiko); !ok { ++ t.Fatalf("not use taiko engine") ++ } ++ ++ return ethservice, blocks ++} ++ ++func generateTestChain() []*types.Block { ++ db := rawdb.NewMemoryDatabase() ++ generate := func(i int, g *core.BlockGen) { ++ g.OffsetTime(5) ++ ++ g.SetExtra([]byte("test_taiko")) ++ g.SetDifficulty(common.Big0) ++ ++ for _, tx := range txs { ++ g.AddTx(tx) ++ } ++ } ++ ++ gblock := genesis.MustCommit(db) ++ ++ blocks, _ := core.GenerateChain(genesis.Config, gblock, testEngine, db, 1, generate) ++ ++ blocks = append([]*types.Block{gblock}, blocks...) ++ return blocks ++} ++ ++func TestVerifyHeader(t *testing.T) { ++ ethService, blocks := newTestBackend(t) ++ ++ for _, b := range blocks { ++ err := testEngine.VerifyHeader(ethService.BlockChain(), b.Header(), true) ++ assert.NoErrorf(t, err, "VerifyHeader error: %s", err) ++ } ++ ++ err := testEngine.VerifyHeader(ethService.BlockChain(), &types.Header{ ++ Number: common.Big1, ++ Time: uint64(time.Now().Unix()), ++ BaseFee: big.NewInt(params.InitialBaseFee), ++ WithdrawalsHash: &types.EmptyWithdrawalsHash, ++ UncleHash: types.EmptyUncleHash, ++ }, true) ++ assert.ErrorIs(t, err, consensus.ErrUnknownAncestor, "VerifyHeader should throw ErrUnknownAncestor when parentHash is unknown") ++ ++ err = testEngine.VerifyHeader(ethService.BlockChain(), &types.Header{ ++ ParentHash: blocks[len(blocks)-1].Hash(), ++ Number: common.Big0, ++ Time: uint64(time.Now().Unix()), ++ BaseFee: big.NewInt(params.InitialBaseFee), ++ WithdrawalsHash: &types.EmptyWithdrawalsHash, ++ UncleHash: types.EmptyUncleHash, ++ }, true) ++ assert.ErrorIs(t, err, consensus.ErrInvalidNumber, "VerifyHeader should throw ErrInvalidNumber when the block number is wrong") ++ ++ err = testEngine.VerifyHeader(ethService.BlockChain(), &types.Header{ ++ ParentHash: blocks[len(blocks)-1].Hash(), ++ Number: new(big.Int).SetInt64(int64(len(blocks))), ++ Time: uint64(time.Now().Unix()), ++ Extra: bytes.Repeat([]byte{1}, int(params.MaximumExtraDataSize+1)), ++ BaseFee: big.NewInt(params.InitialBaseFee), ++ WithdrawalsHash: &types.EmptyWithdrawalsHash, ++ UncleHash: types.EmptyUncleHash, ++ }, true) ++ assert.ErrorContains(t, err, "extra-data too long", "VerifyHeader should throw ErrExtraDataTooLong when the block has too much extra data") ++ ++ err = testEngine.VerifyHeader(ethService.BlockChain(), &types.Header{ ++ ParentHash: blocks[len(blocks)-1].Hash(), ++ Number: new(big.Int).SetInt64(int64(len(blocks))), ++ Time: uint64(time.Now().Unix()), ++ Difficulty: common.Big1, ++ BaseFee: big.NewInt(params.InitialBaseFee), ++ WithdrawalsHash: &types.EmptyWithdrawalsHash, ++ UncleHash: types.EmptyUncleHash, ++ }, true) ++ assert.ErrorContains(t, err, "invalid difficulty", "VerifyHeader should throw ErrInvalidDifficulty when difficulty is not 0") ++ ++ err = testEngine.VerifyHeader(ethService.BlockChain(), &types.Header{ ++ ParentHash: blocks[len(blocks)-1].Hash(), ++ Number: new(big.Int).SetInt64(int64(len(blocks))), ++ Time: uint64(time.Now().Unix()), ++ GasLimit: params.MaxGasLimit + 1, ++ BaseFee: big.NewInt(params.InitialBaseFee), ++ WithdrawalsHash: &types.EmptyWithdrawalsHash, ++ UncleHash: types.EmptyUncleHash, ++ }, true) ++ assert.ErrorContains(t, err, "invalid gasLimit", "VerifyHeader should throw ErrInvalidGasLimit when gasLimit is higher than the limit") ++ ++ err = testEngine.VerifyHeader(ethService.BlockChain(), &types.Header{ ++ ParentHash: blocks[len(blocks)-1].Hash(), ++ Number: new(big.Int).SetInt64(int64(len(blocks))), ++ Time: uint64(time.Now().Unix()), ++ GasLimit: params.MaxGasLimit, ++ BaseFee: big.NewInt(params.InitialBaseFee), ++ UncleHash: types.EmptyUncleHash, ++ }, true) ++ assert.ErrorContains(t, err, "withdrawals hash missing", "VerifyHeader should throw ErrWithdrawalsHashMissing withdrawalshash is nil") ++ ++ err = testEngine.VerifyHeader(ethService.BlockChain(), &types.Header{ ++ ParentHash: blocks[len(blocks)-1].Hash(), ++ Number: new(big.Int).SetInt64(int64(len(blocks))), ++ Time: uint64(time.Now().Unix()), ++ GasLimit: params.MaxGasLimit, ++ BaseFee: big.NewInt(params.InitialBaseFee), ++ WithdrawalsHash: &types.EmptyWithdrawalsHash, ++ }, true) ++ assert.ErrorContains(t, err, "uncles not empty", "VerifyHeader should throw ErrUnclesNotEmpty if uncles is not the empty hash") ++}
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+291
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/consensus/taiko/consensus.go taikoxyz/taiko-geth/consensus/taiko/consensus.go +new file mode 100644 +index 0000000000000000000000000000000000000000..67b19624a121cc5ca77c57c7e705752655d68b05 +--- /dev/null ++++ taikoxyz/taiko-geth/consensus/taiko/consensus.go +@@ -0,0 +1,291 @@ ++package taiko ++ ++import ( ++ "errors" ++ "fmt" ++ "math/big" ++ "runtime" ++ "time" ++ ++ "github.com/ethereum/go-ethereum/common" ++ "github.com/ethereum/go-ethereum/consensus" ++ "github.com/ethereum/go-ethereum/core/state" ++ "github.com/ethereum/go-ethereum/core/types" ++ "github.com/ethereum/go-ethereum/log" ++ "github.com/ethereum/go-ethereum/params" ++ "github.com/ethereum/go-ethereum/rpc" ++ "github.com/ethereum/go-ethereum/trie" ++) ++ ++var ( ++ ErrOlderBlockTime = errors.New("timestamp older than parent") ++ ErrUnclesNotEmpty = errors.New("uncles not empty") ++ ErrEmptyBasefee = errors.New("empty base fee") ++ ErrEmptyWithdrawalsHash = errors.New("withdrawals hash missing") ++) ++ ++// Taiko is a consensus engine used by L2 rollup. ++type Taiko struct{} ++ ++var defaultTaiko = new(Taiko) ++ ++func New() *Taiko { ++ return defaultTaiko ++} ++ ++// check all method stubs for interface `Engine` without affect performance. ++var _ consensus.Engine = (*Taiko)(nil) ++ ++// Author retrieves the Ethereum address of the account that minted the given ++// block, who proposes the block (not the prover). ++func (t *Taiko) Author(header *types.Header) (common.Address, error) { ++ return header.Coinbase, nil ++} ++ ++// VerifyHeader checks whether a header conforms to the consensus rules of a ++// given engine. Verifying the seal may be done optionally here, or explicitly ++// via the VerifySeal method. ++func (t *Taiko) VerifyHeader(chain consensus.ChainHeaderReader, header *types.Header, seal bool) error { ++ // Short circuit if the header is known, or its parent not ++ number := header.Number.Uint64() ++ if chain.GetHeader(header.Hash(), number) != nil { ++ return nil ++ } ++ parent := chain.GetHeader(header.ParentHash, number-1) ++ if parent == nil { ++ return consensus.ErrUnknownAncestor ++ } ++ // Sanity checks passed, do a proper verification ++ return t.verifyHeader(chain, header, parent, seal, time.Now().Unix()) ++} ++ ++// VerifyHeaders is similar to VerifyHeader, but verifies a batch of headers ++// concurrently. The method returns a quit channel to abort the operations and ++// a results channel to retrieve the async verifications (the order is that of ++// the input slice). ++func (t *Taiko) VerifyHeaders(chain consensus.ChainHeaderReader, headers []*types.Header, seals []bool) (chan<- struct{}, <-chan error) { ++ // Spawn as many workers as allowed threads ++ workers := runtime.GOMAXPROCS(0) ++ if len(headers) < workers { ++ workers = len(headers) ++ } ++ ++ // Create a task channel and spawn the verifiers ++ var ( ++ inputs = make(chan int) ++ done = make(chan int, workers) ++ errors = make([]error, len(headers)) ++ abort = make(chan struct{}) ++ unixNow = time.Now().Unix() ++ ) ++ for i := 0; i < workers; i++ { ++ go func() { ++ for index := range inputs { ++ errors[index] = t.verifyHeaderWorker(chain, headers, seals, index, unixNow) ++ done <- index ++ } ++ }() ++ } ++ ++ errorsOut := make(chan error, len(headers)) ++ go func() { ++ defer close(inputs) ++ var ( ++ in, out = 0, 0 ++ checked = make([]bool, len(headers)) ++ inputs = inputs ++ ) ++ for { ++ select { ++ case inputs <- in: ++ if in++; in == len(headers) { ++ // Reached end of headers. Stop sending to workers. ++ inputs = nil ++ } ++ case index := <-done: ++ for checked[index] = true; checked[out]; out++ { ++ errorsOut <- errors[out] ++ if out == len(headers)-1 { ++ return ++ } ++ } ++ case <-abort: ++ return ++ } ++ } ++ }() ++ return abort, errorsOut ++} ++ ++func (t *Taiko) verifyHeader(chain consensus.ChainHeaderReader, header, parent *types.Header, seal bool, unixNow int64) error { ++ if header.Time > uint64(unixNow) { ++ return consensus.ErrFutureBlock ++ } ++ ++ // 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) ++ } ++ ++ // Timestamp should later than or equal to parent (when many L2 blocks included in one L1 block) ++ if header.Time < parent.Time { ++ return ErrOlderBlockTime ++ } ++ ++ // Verify that the block number is parent's +1 ++ if diff := new(big.Int).Sub(header.Number, parent.Number); diff.Cmp(big.NewInt(1)) != 0 { ++ return consensus.ErrInvalidNumber ++ } ++ ++ // Difficulty should always be zero ++ if header.Difficulty != nil && header.Difficulty.Cmp(common.Big0) != 0 { ++ return fmt.Errorf("invalid difficulty: have %v, want %v", header.Difficulty, common.Big0) ++ } ++ ++ // Verify that the gas limit is <= 2^63-1 ++ if header.GasLimit > params.MaxGasLimit { ++ return fmt.Errorf("invalid gasLimit: have %v, max %v", header.GasLimit, params.MaxGasLimit) ++ } ++ ++ // Verify that the gasUsed is <= gasLimit ++ if header.GasUsed > header.GasLimit { ++ return fmt.Errorf("invalid gasUsed: have %d, gasLimit %d", header.GasUsed, header.GasLimit) ++ } ++ ++ // Uncles should be empty ++ if header.UncleHash != types.CalcUncleHash(nil) { ++ return ErrUnclesNotEmpty ++ } ++ ++ // BaseFee should not be empty ++ if header.BaseFee == nil { ++ return ErrEmptyBasefee ++ } ++ ++ // WithdrawalsHash should not be empty ++ if header.WithdrawalsHash == nil { ++ return ErrEmptyWithdrawalsHash ++ } ++ ++ return nil ++} ++ ++func (t *Taiko) verifyHeaderWorker(chain consensus.ChainHeaderReader, headers []*types.Header, seals []bool, index int, unixNow int64) error { ++ var parent *types.Header ++ if index == 0 { ++ parent = chain.GetHeader(headers[0].ParentHash, headers[0].Number.Uint64()-1) ++ } else if headers[index-1].Hash() == headers[index].ParentHash { ++ parent = headers[index-1] ++ } ++ if parent == nil { ++ return consensus.ErrUnknownAncestor ++ } ++ ++ return t.verifyHeader(chain, headers[index], parent, seals[index], unixNow) ++} ++ ++// VerifyUncles verifies that the given block's uncles conform to the consensus ++// rules of a given engine. ++// ++// always returning an error for any uncles as this consensus mechanism doesn't permit uncles. ++func (t *Taiko) VerifyUncles(chain consensus.ChainReader, block *types.Block) error { ++ if len(block.Uncles()) > 0 { ++ return ErrUnclesNotEmpty ++ } ++ ++ return nil ++} ++ ++// Prepare initializes the consensus fields of a block header according to the ++// rules of a particular engine. The changes are executed inline. ++func (t *Taiko) Prepare(chain consensus.ChainHeaderReader, header *types.Header) error { ++ parent := chain.GetHeader(header.ParentHash, header.Number.Uint64()-1) ++ if parent == nil { ++ return consensus.ErrUnknownAncestor ++ } ++ header.Difficulty = common.Big0 ++ return nil ++} ++ ++// Finalize runs any post-transaction state modifications (e.g. block rewards) ++// but does not assemble the block. ++// ++// Note: The block header and state database might be updated to reflect any ++// consensus rules that happen at finalization (e.g. block rewards). ++func (t *Taiko) Finalize(chain consensus.ChainHeaderReader, header *types.Header, state *state.StateDB, txs []*types.Transaction, uncles []*types.Header, withdrawals []*types.Withdrawal) { ++ // no block rewards in l2 ++ header.Root = state.IntermediateRoot(true) ++ header.UncleHash = types.CalcUncleHash(nil) ++ header.Difficulty = common.Big0 ++ // Withdrawals processing. ++ for _, w := range withdrawals { ++ // Convert amount from gwei to wei. ++ amount := new(big.Int).SetUint64(w.Amount) ++ amount = amount.Mul(amount, big.NewInt(params.GWei)) ++ state.AddBalance(w.Address, amount) ++ } ++} ++ ++// FinalizeAndAssemble runs any post-transaction state modifications (e.g. block ++// rewards) and assembles the final block. ++// ++// Note: The block header and state database might be updated to reflect any ++// consensus rules that happen at finalization (e.g. block rewards). ++func (t *Taiko) FinalizeAndAssemble(chain consensus.ChainHeaderReader, header *types.Header, state *state.StateDB, txs []*types.Transaction, uncles []*types.Header, receipts []*types.Receipt, withdrawals []*types.Withdrawal) (*types.Block, error) { ++ if withdrawals == nil { ++ withdrawals = make([]*types.Withdrawal, 0) ++ } ++ ++ // Finalize block ++ t.Finalize(chain, header, state, txs, uncles, withdrawals) ++ return types.NewTaikoBlockWithWithdrawals( ++ header, txs, nil /* ignore uncles */, receipts, withdrawals, trie.NewStackTrie(nil), ++ ), nil ++} ++ ++// Seal generates a new sealing request for the given input block and pushes ++// the result into the given channel. ++// ++// Note, the method returns immediately and will send the result async. More ++// than one result may also be returned depending on the consensus algorithm. ++func (t *Taiko) Seal(chain consensus.ChainHeaderReader, block *types.Block, results chan<- *types.Block, stop <-chan struct{}) error { ++ header := block.Header() ++ ++ // Sealing the genesis block is not supported ++ number := header.Number.Uint64() ++ if number == 0 { ++ return consensus.ErrInvalidNumber ++ } ++ ++ select { ++ case results <- block.WithSeal(header): ++ case <-stop: ++ return nil ++ default: ++ log.Warn("Sealing result is not read by miner", "sealHash", t.SealHash(header)) ++ } ++ ++ return nil ++} ++ ++// SealHash returns the hash of a block prior to it being sealed. ++func (t *Taiko) SealHash(header *types.Header) common.Hash { ++ // Keccak(rlp(header)) ++ return header.Hash() ++} ++ ++// CalcDifficulty is the difficulty adjustment algorithm. It returns the difficulty ++// that a new block should have. ++func (t *Taiko) CalcDifficulty(chain consensus.ChainHeaderReader, time uint64, parent *types.Header) *big.Int { ++ return common.Big0 ++} ++ ++// APIs returns the RPC APIs this consensus engine provides. ++func (t *Taiko) APIs(chain consensus.ChainHeaderReader) []rpc.API { ++ return nil ++} ++ ++// Close terminates any background threads maintained by the consensus engine. ++func (t *Taiko) Close() error { ++ return nil ++}
+
+ + +
+
+ +
+
+
+ + +
+
+
+ + +
+ +
+

This shows modifications to core files.

+
+
+ +
+
+ +
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
+3
+
-3
+
+ +
+
+
diff --git ethereum/go-ethereum/core/state_processor.go taikoxyz/taiko-geth/core/state_processor.go +index 2fa9c41bcc018b50f2509959206eb1bbce60efdb..20ab4fbdc001ff07e20c1905bb7824bedf3a928e 100644 +--- ethereum/go-ethereum/core/state_processor.go ++++ taikoxyz/taiko-geth/core/state_processor.go +@@ -74,7 +74,7 @@ blockContext := NewEVMBlockContext(header, p.bc, nil) + vmenv := vm.NewEVM(blockContext, vm.TxContext{}, statedb, p.config, cfg) + // Iterate over and process the individual transactions + for i, tx := range block.Transactions() { +- msg, err := TransactionToMessage(tx, types.MakeSigner(p.config, header.Number), header.BaseFee) ++ msg, err := TransactionToMessage(tx, types.MakeSigner(p.config, header.Number), header.BaseFee, i == 0) + if err != nil { + return nil, nil, 0, fmt.Errorf("could not apply tx %d [%v]: %w", i, tx.Hash().Hex(), err) + } +@@ -146,8 +146,8 @@ // ApplyTransaction attempts to apply a transaction to the given state database + // and uses the input parameters for its environment. It returns the receipt + // for the transaction, gas used and an error if the transaction failed, + // indicating the block was invalid. +-func ApplyTransaction(config *params.ChainConfig, bc ChainContext, author *common.Address, gp *GasPool, statedb *state.StateDB, header *types.Header, tx *types.Transaction, usedGas *uint64, cfg vm.Config) (*types.Receipt, error) { +- msg, err := TransactionToMessage(tx, types.MakeSigner(config, header.Number), header.BaseFee) ++func ApplyTransaction(config *params.ChainConfig, bc ChainContext, author *common.Address, gp *GasPool, statedb *state.StateDB, header *types.Header, tx *types.Transaction, usedGas *uint64, cfg vm.Config, isAnchor bool) (*types.Receipt, error) { ++ msg, err := TransactionToMessage(tx, types.MakeSigner(config, header.Number), header.BaseFee, isAnchor) + if err != nil { + return nil, err + }
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+51
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/core/taiko_genesis.go taikoxyz/taiko-geth/core/taiko_genesis.go +new file mode 100644 +index 0000000000000000000000000000000000000000..15c9ff1446734f2e2345c72803a59f90eb6febb9 +--- /dev/null ++++ taikoxyz/taiko-geth/core/taiko_genesis.go +@@ -0,0 +1,51 @@ ++package core ++ ++import ( ++ "math/big" ++ ++ "github.com/ethereum/go-ethereum/common" ++ taikoGenesis "github.com/ethereum/go-ethereum/core/taiko_genesis" ++ "github.com/ethereum/go-ethereum/log" ++ "github.com/ethereum/go-ethereum/params" ++) ++ ++// TaikoGenesisBlock returns the Taiko network genesis block configs. ++func TaikoGenesisBlock(networkID uint64) *Genesis { ++ chainConfig := params.TaikoChainConfig ++ ++ var allocJSON []byte ++ switch networkID { ++ case params.TaikoInternal1NetworkID.Uint64(): ++ chainConfig.ChainID = params.TaikoInternal1NetworkID ++ chainConfig.Treasure = common.HexToAddress("0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f") ++ allocJSON = taikoGenesis.Internal1GenesisAllocJSON ++ case params.TaikoInternal2NetworkID.Uint64(): ++ chainConfig.ChainID = params.TaikoInternal2NetworkID ++ chainConfig.Treasure = common.HexToAddress("0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f") ++ allocJSON = taikoGenesis.Internal2GenesisAllocJSON ++ case params.SnæfellsjökullNetworkID.Uint64(): ++ chainConfig.ChainID = params.SnæfellsjökullNetworkID ++ allocJSON = taikoGenesis.SnæfellsjökullGenesisAllocJSON ++ case params.AskjaNetworkID.Uint64(): ++ chainConfig.ChainID = params.AskjaNetworkID ++ allocJSON = taikoGenesis.AskjaGenesisAllocJSON ++ default: ++ chainConfig.ChainID = params.TaikoMainnetNetworkID ++ allocJSON = taikoGenesis.MainnetGenesisAllocJSON ++ } ++ ++ var alloc GenesisAlloc ++ if err := alloc.UnmarshalJSON(allocJSON); err != nil { ++ log.Crit("unmarshal alloc json error", "error", err) ++ } ++ ++ return &Genesis{ ++ Config: chainConfig, ++ ExtraData: []byte{}, ++ GasLimit: uint64(6000000), ++ Difficulty: common.Big0, ++ Alloc: alloc, ++ GasUsed: 0, ++ BaseFee: new(big.Int).SetUint64(10000000), ++ } ++}
+
+ + +
+ + +
+ +
+ +
+ +
+
+24
+
-2
+
+ +
+
+
diff --git ethereum/go-ethereum/core/state_transition.go taikoxyz/taiko-geth/core/state_transition.go +index 1802f1daf70ae988a08010bf2089da55690159cd..0f7cf9b45a2fb20eeded4afdf1abda658c0a35e8 100644 +--- ethereum/go-ethereum/core/state_transition.go ++++ taikoxyz/taiko-geth/core/state_transition.go +@@ -140,10 +140,13 @@ // When SkipAccountCheckss is true, the message nonce is not checked against the + // account nonce in state. It also disables checking that the sender is an EOA. + // This field will be set to true for operations like RPC eth_call. + SkipAccountChecks bool ++ ++ // CHANGE(taiko): Whteher the current transaction is the first transaction in a block. ++ IsFirstTx bool + } +  + // TransactionToMessage converts a transaction into a Message. +-func TransactionToMessage(tx *types.Transaction, s types.Signer, baseFee *big.Int) (*Message, error) { ++func TransactionToMessage(tx *types.Transaction, s types.Signer, baseFee *big.Int, isFirstTx bool) (*Message, error) { + msg := &Message{ + Nonce: tx.Nonce(), + GasLimit: tx.Gas(), +@@ -155,6 +158,7 @@ Value: tx.Value(), + Data: tx.Data(), + AccessList: tx.AccessList(), + SkipAccountChecks: false, ++ IsFirstTx: isFirstTx, + } + // If baseFee provided, set gasPrice to effectiveGasPrice. + if baseFee != nil { +@@ -234,6 +238,11 @@ balanceCheck = new(big.Int).SetUint64(st.msg.GasLimit) + balanceCheck = balanceCheck.Mul(balanceCheck, st.msg.GasFeeCap) + balanceCheck.Add(balanceCheck, st.msg.Value) + } ++ // CHANGE(taiko): skip balance check for TaikoL2.anchor transaction. ++ if st.isAnchor() { ++ balanceCheck = common.Big0 ++ mgval = common.Big0 ++ } + if have, want := st.state.GetBalance(st.msg.From), balanceCheck; have.Cmp(want) < 0 { + return fmt.Errorf("%w: address %v have %v want %v", ErrInsufficientFunds, st.msg.From.Hex(), have, want) + } +@@ -274,7 +283,7 @@ + // Make sure that transaction gasFeeCap is greater than the baseFee (post london) + if st.evm.ChainConfig().IsLondon(st.evm.Context.BlockNumber) { + // Skip the checks if gas fields are zero and baseFee was explicitly disabled (eth_call) +- if !st.evm.Config.NoBaseFee || msg.GasFeeCap.BitLen() > 0 || msg.GasTipCap.BitLen() > 0 { ++ if (!st.evm.Config.NoBaseFee || msg.GasFeeCap.BitLen() > 0 || msg.GasTipCap.BitLen() > 0) && !st.isAnchor() { + if l := msg.GasFeeCap.BitLen(); l > 256 { + return fmt.Errorf("%w: address %v, maxFeePerGas bit length: %d", ErrFeeCapVeryHigh, + msg.From.Hex(), l) +@@ -395,6 +404,13 @@ } else { + fee := new(big.Int).SetUint64(st.gasUsed()) + fee.Mul(fee, effectiveTip) + st.state.AddBalance(st.evm.Context.Coinbase, fee) ++ // CHANGE(taiko): basefee is not burnt, but sent to a treasure instead. ++ if st.evm.ChainConfig().Taiko && st.evm.Context.BaseFee != nil { ++ st.state.AddBalance( ++ st.evm.ChainConfig().Treasure, ++ new(big.Int).Mul(st.evm.Context.BaseFee, new(big.Int).SetUint64(st.gasUsed())), ++ ) ++ } + } +  + return &ExecutionResult{ +@@ -425,3 +441,9 @@ // gasUsed returns the amount of gas used up by the state transition. + func (st *StateTransition) gasUsed() uint64 { + return st.initialGas - st.gasRemaining + } ++ ++func (st *StateTransition) isAnchor() bool { ++ return st.evm.ChainConfig().Taiko && ++ st.msg.IsFirstTx && ++ st.msg.From == common.HexToAddress("0x0000777735367b36bC9B61C50022d9D0700dB4Ec") ++}
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+203
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/core/taiko_pool_content_splitter.go taikoxyz/taiko-geth/core/taiko_pool_content_splitter.go +new file mode 100644 +index 0000000000000000000000000000000000000000..8742479185d1e889385e19406fd67486abcfb35c +--- /dev/null ++++ taikoxyz/taiko-geth/core/taiko_pool_content_splitter.go +@@ -0,0 +1,203 @@ ++package core ++ ++import ( ++ "fmt" ++ "math/big" ++ "strings" ++ ++ "github.com/ethereum/go-ethereum/common" ++ "github.com/ethereum/go-ethereum/core/types" ++ "github.com/ethereum/go-ethereum/log" ++ "github.com/ethereum/go-ethereum/rlp" ++) ++ ++// PoolContent represents a response body of a `txpool_content` RPC call. ++type PoolContent map[common.Address]types.Transactions ++ ++// Len returns the number of transactions in the PoolContent. ++func (pc PoolContent) Len() int { ++ len := 0 ++ for _, pendingTxs := range pc { ++ len += pendingTxs.Len() ++ } ++ ++ return len ++} ++ ++// ToTxsByPriceAndNonce creates a transaction set that can retrieve price sorted transactions in a nonce-honouring way. ++func (pc PoolContent) ToTxsByPriceAndNonce( ++ chainID *big.Int, ++ localAddresses []common.Address, ++) ( ++ locals *types.TransactionsByPriceAndNonce, ++ remotes *types.TransactionsByPriceAndNonce, ++) { ++ var ( ++ localTxs = map[common.Address]types.Transactions{} ++ remoteTxs = map[common.Address]types.Transactions{} ++ ) ++ ++ for address, txsWithNonce := range pc { ++ out: ++ for _, tx := range txsWithNonce { ++ for _, localAddress := range localAddresses { ++ if address == localAddress { ++ localTxs[address] = append(localTxs[address], tx) ++ continue out ++ } ++ } ++ remoteTxs[address] = append(remoteTxs[address], tx) ++ } ++ } ++ ++ return types.NewTransactionsByPriceAndNonce(types.LatestSignerForChainID(chainID), localTxs, nil), ++ types.NewTransactionsByPriceAndNonce(types.LatestSignerForChainID(chainID), remoteTxs, nil) ++} ++ ++// PoolContentSplitter is responsible for splitting the pool content ++// which fetched from a `txpool_content` RPC call response into several smaller transactions lists ++// and make sure each splitted list satisfies the limits defined in Taiko protocol. ++type PoolContentSplitter struct { ++ chainID *big.Int ++ maxTransactionsPerBlock uint64 ++ blockMaxGasLimit uint64 ++ maxBytesPerTxList uint64 ++ minTxGasLimit uint64 ++ locals []common.Address ++} ++ ++// NewPoolContentSplitter creates a new PoolContentSplitter instance. ++func NewPoolContentSplitter( ++ chainID *big.Int, ++ maxTransactionsPerBlock uint64, ++ blockMaxGasLimit uint64, ++ maxBytesPerTxList uint64, ++ minTxGasLimit uint64, ++ locals []string, ++) (*PoolContentSplitter, error) { ++ var localsAddresses []common.Address ++ for _, account := range locals { ++ if trimmed := strings.TrimSpace(account); !common.IsHexAddress(trimmed) { ++ return nil, fmt.Errorf("invalid account: %s", trimmed) ++ } else { ++ localsAddresses = append(localsAddresses, common.HexToAddress(account)) ++ } ++ } ++ ++ return &PoolContentSplitter{ ++ chainID: chainID, ++ maxTransactionsPerBlock: maxTransactionsPerBlock, ++ blockMaxGasLimit: blockMaxGasLimit, ++ maxBytesPerTxList: maxBytesPerTxList, ++ minTxGasLimit: minTxGasLimit, ++ locals: localsAddresses, ++ }, nil ++} ++ ++// Split splits the given transaction pool content to make each splitted ++// transactions list satisfies the rules defined in Taiko protocol. ++func (p *PoolContentSplitter) Split(poolContent PoolContent) []types.Transactions { ++ var ( ++ localTxs, remoteTxs = poolContent.ToTxsByPriceAndNonce(p.chainID, p.locals) ++ splittedLocalTxLists = p.splitTxs(localTxs) ++ splittedRemoteTxLists = p.splitTxs(remoteTxs) ++ ) ++ ++ splittedTxLists := append(splittedLocalTxLists, splittedRemoteTxLists...) ++ ++ return splittedTxLists ++} ++ ++// validateTx checks whether the given transaction is valid according ++// to the rules in Taiko protocol. ++func (p *PoolContentSplitter) validateTx(tx *types.Transaction) error { ++ if tx.Gas() < p.minTxGasLimit || tx.Gas() > p.blockMaxGasLimit { ++ return fmt.Errorf( ++ "transaction %s gas limit reaches the limits, got=%v, lowerBound=%v, upperBound=%v", ++ tx.Hash(), tx.Gas(), p.minTxGasLimit, p.blockMaxGasLimit, ++ ) ++ } ++ ++ b, err := rlp.EncodeToBytes(tx) ++ if err != nil { ++ return fmt.Errorf( ++ "failed to rlp encode the pending transaction %s: %w", tx.Hash(), err, ++ ) ++ } ++ ++ if len(b) > int(p.maxBytesPerTxList) { ++ return fmt.Errorf( ++ "size of transaction %s's rlp encoded bytes is bigger than the limit, got=%v, limit=%v", ++ tx.Hash(), len(b), p.maxBytesPerTxList, ++ ) ++ } ++ ++ return nil ++} ++ ++// isTxBufferFull checks whether the given transaction can be appended to the ++// current transaction list ++// NOTE: this function *MUST* be called after using `validateTx` to check every ++// inside transaction is valid. ++func (p *PoolContentSplitter) isTxBufferFull(t *types.Transaction, txs []*types.Transaction, gas uint64) bool { ++ if len(txs) >= int(p.maxTransactionsPerBlock) { ++ return true ++ } ++ ++ if gas+t.Gas() > p.blockMaxGasLimit { ++ return true ++ } ++ ++ // Transactions list's RLP encoding error has already been checked in ++ // `validateTx`, so no need to check the error here. ++ if b, _ := rlp.EncodeToBytes(append([]*types.Transaction{t}, txs...)); len(b) > int(p.maxBytesPerTxList) { ++ return true ++ } ++ ++ return false ++} ++ ++// splitTxs the internal implementation Split, splits the given transactions into small transactions lists ++// which satisfy the protocol constraints. ++func (p *PoolContentSplitter) splitTxs(txs *types.TransactionsByPriceAndNonce) []types.Transactions { ++ var ( ++ splittedTxLists = make([]types.Transactions, 0) ++ txBuffer = make([]*types.Transaction, 0, p.maxTransactionsPerBlock) ++ gasBuffer uint64 = 0 ++ ) ++ for { ++ tx := txs.Peek() ++ if tx == nil { ++ break ++ } ++ ++ // If the transaction is invalid, we simply ignore it. ++ if err := p.validateTx(tx); err != nil { ++ log.Debug("Invalid pending transaction", "hash", tx.Hash(), "error", err) ++ txs.Pop() // If this tx is invalid, ignore this sender's other txs in pool. ++ continue ++ } ++ ++ // If the transactions buffer is full, we make all transactions in ++ // current buffer a new splitted transaction list, and then reset the ++ // buffer. ++ if p.isTxBufferFull(tx, txBuffer, gasBuffer) { ++ splittedTxLists = append(splittedTxLists, txBuffer) ++ txBuffer = make([]*types.Transaction, 0, p.maxTransactionsPerBlock) ++ gasBuffer = 0 ++ } ++ ++ txBuffer = append(txBuffer, tx) ++ gasBuffer += tx.Gas() ++ ++ txs.Shift() ++ } ++ ++ // Maybe there are some remaining transactions in current buffer, ++ // make them a new transactions list too. ++ if len(txBuffer) > 0 { ++ splittedTxLists = append(splittedTxLists, txBuffer) ++ } ++ ++ return splittedTxLists ++}
+
+ + +
+ + +
+ +
+ +
+ +
+
+1
+
-1
+
+ +
+
+
diff --git ethereum/go-ethereum/core/chain_makers.go taikoxyz/taiko-geth/core/chain_makers.go +index 61d0098af3f6bef6d814bc8fa20af195f8d5d543..94e85519145dd798691106fb0304e634bad4b197 100644 +--- ethereum/go-ethereum/core/chain_makers.go ++++ taikoxyz/taiko-geth/core/chain_makers.go +@@ -98,7 +98,7 @@ if b.gasPool == nil { + b.SetCoinbase(common.Address{}) + } + b.statedb.SetTxContext(tx.Hash(), len(b.txs)) +- receipt, err := ApplyTransaction(b.config, bc, &b.header.Coinbase, b.gasPool, b.statedb, b.header, tx, &b.header.GasUsed, vmConfig) ++ receipt, err := ApplyTransaction(b.config, bc, &b.header.Coinbase, b.gasPool, b.statedb, b.header, tx, &b.header.GasUsed, vmConfig, false) + if err != nil { + panic(err) + }
+
+ + +
+ + +
+ +
+ +
+ +
+
+1
+
-1
+
+ +
+
+
diff --git ethereum/go-ethereum/core/state_prefetcher.go taikoxyz/taiko-geth/core/state_prefetcher.go +index c258eee4f4cc0ba508fa209ec233121428017763..af9486861f9027224daec0912cb9c05006525485 100644 +--- ethereum/go-ethereum/core/state_prefetcher.go ++++ taikoxyz/taiko-geth/core/state_prefetcher.go +@@ -63,7 +63,7 @@ if interrupt != nil && atomic.LoadUint32(interrupt) == 1 { + return + } + // Convert the transaction into an executable message and pre-cache its sender +- msg, err := TransactionToMessage(tx, signer, header.BaseFee) ++ msg, err := TransactionToMessage(tx, signer, header.BaseFee, i == 0) + if err != nil { + return // Also invalid block, bail out + }
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+101
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/core/taiko_pool_content_splitter_test.go taikoxyz/taiko-geth/core/taiko_pool_content_splitter_test.go +new file mode 100644 +index 0000000000000000000000000000000000000000..b420e94bf93b197c252d50eb52c0de9d2ef5ad33 +--- /dev/null ++++ taikoxyz/taiko-geth/core/taiko_pool_content_splitter_test.go +@@ -0,0 +1,101 @@ ++package core ++ ++import ( ++ "crypto/rand" ++ "math/big" ++ "testing" ++ ++ "github.com/ethereum/go-ethereum/common" ++ "github.com/ethereum/go-ethereum/core/types" ++ "github.com/ethereum/go-ethereum/crypto" ++ "github.com/ethereum/go-ethereum/log" ++ "github.com/ethereum/go-ethereum/rlp" ++ "github.com/stretchr/testify/require" ++) ++ ++func TestPoolContentSplit(t *testing.T) { ++ testAddress := "0x0000777735367b36bC9B61C50022d9D0700dB4Ec" ++ testPrivKey := "92954368afd3caa1f3ce3ead0069c1af414054aefe1ef9aeacc1bf426222ce38" ++ ++ // Gas limit is smaller than the limit. ++ splitter := &PoolContentSplitter{ ++ chainID: new(big.Int).SetUint64(1336), ++ minTxGasLimit: 21000, ++ } ++ ++ splitted := splitter.Split(PoolContent{ ++ common.BytesToAddress(randomBytes(32)): { ++ types.NewTx(&types.LegacyTx{}), ++ }, ++ }) ++ ++ require.Empty(t, splitted) ++ ++ // Gas limit is larger than the limit. ++ splitter = &PoolContentSplitter{ ++ chainID: new(big.Int).SetUint64(1336), ++ minTxGasLimit: 21000, ++ } ++ ++ splitted = splitter.Split(PoolContent{ ++ common.BytesToAddress(randomBytes(32)): { ++ types.NewTx(&types.LegacyTx{Gas: 21001}), ++ }, ++ }) ++ ++ require.Empty(t, splitted) ++ ++ // Transaction's RLP encoded bytes is larger than the limit. ++ txBytesTooLarge := types.NewTx(&types.LegacyTx{}) ++ ++ bytes, err := rlp.EncodeToBytes(txBytesTooLarge) ++ require.Nil(t, err) ++ require.NotEmpty(t, bytes) ++ ++ splitter = &PoolContentSplitter{ ++ chainID: new(big.Int).SetUint64(1336), ++ maxBytesPerTxList: uint64(len(bytes) - 1), ++ minTxGasLimit: uint64(len(bytes) - 2), ++ } ++ ++ splitted = splitter.Split(PoolContent{ ++ common.BytesToAddress(randomBytes(32)): {txBytesTooLarge}, ++ }) ++ ++ require.Empty(t, splitted) ++ ++ // Transactions that meet the limits ++ testKey, err := crypto.HexToECDSA(testPrivKey) ++ require.Nil(t, err) ++ ++ signer := types.LatestSignerForChainID(new(big.Int).SetUint64(1336)) ++ tx1 := types.MustSignNewTx(testKey, signer, &types.LegacyTx{Gas: 21001, Nonce: 1}) ++ tx2 := types.MustSignNewTx(testKey, signer, &types.LegacyTx{Gas: 21001, Nonce: 2}) ++ ++ bytes, err = rlp.EncodeToBytes(tx1) ++ require.Nil(t, err) ++ require.NotEmpty(t, bytes) ++ ++ splitter = &PoolContentSplitter{ ++ chainID: new(big.Int).SetUint64(1336), ++ minTxGasLimit: 21000, ++ maxBytesPerTxList: uint64(len(bytes) + 1000), ++ maxTransactionsPerBlock: 1, ++ blockMaxGasLimit: tx1.Gas() + 1000, ++ } ++ ++ splitted = splitter.Split(PoolContent{ ++ common.HexToAddress(testAddress): {tx1, tx2}, ++ }) ++ ++ require.Equal(t, 2, len(splitted)) ++} ++ ++// RandomBytes generates a random bytes. ++func randomBytes(size int) (b []byte) { ++ b = make([]byte, size) ++ if _, err := rand.Read(b); err != nil { ++ log.Crit("Generate random bytes error", "error", err) ++ } ++ return ++}
+
+ + +
+
+ +
+
+
+ + +
+ +
+
+
+ +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+59
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/core/rawdb/taiko_l1_origin_test.go taikoxyz/taiko-geth/core/rawdb/taiko_l1_origin_test.go +new file mode 100644 +index 0000000000000000000000000000000000000000..dae37a354fa5a6f9afae623e30cc2e9e8e1d69e8 +--- /dev/null ++++ taikoxyz/taiko-geth/core/rawdb/taiko_l1_origin_test.go +@@ -0,0 +1,59 @@ ++package rawdb ++ ++import ( ++ "crypto/rand" ++ "math/big" ++ "testing" ++ ++ "github.com/ethereum/go-ethereum/common" ++ "github.com/ethereum/go-ethereum/log" ++ "github.com/stretchr/testify/assert" ++ "github.com/stretchr/testify/require" ++) ++ ++// randomBigInt generates a random big integer. ++func randomBigInt() *big.Int { ++ randomBigInt, err := rand.Int(rand.Reader, common.Big256) ++ if err != nil { ++ log.Crit(err.Error()) ++ } ++ ++ return randomBigInt ++} ++ ++// randomHash generates a random blob of data and returns it as a hash. ++func randomHash() common.Hash { ++ var hash common.Hash ++ if n, err := rand.Read(hash[:]); n != common.HashLength || err != nil { ++ panic(err) ++ } ++ return hash ++} ++ ++func TestL1Origin(t *testing.T) { ++ db := NewMemoryDatabase() ++ testL1Origin := &L1Origin{ ++ BlockID: randomBigInt(), ++ L2BlockHash: randomHash(), ++ L1BlockHeight: randomBigInt(), ++ L1BlockHash: randomHash(), ++ } ++ WriteL1Origin(db, testL1Origin.BlockID, testL1Origin) ++ l1Origin, err := ReadL1Origin(db, testL1Origin.BlockID) ++ require.Nil(t, err) ++ require.NotNil(t, l1Origin) ++ assert.Equal(t, testL1Origin.BlockID, l1Origin.BlockID) ++ assert.Equal(t, testL1Origin.L2BlockHash, l1Origin.L2BlockHash) ++ assert.Equal(t, testL1Origin.L1BlockHeight, l1Origin.L1BlockHeight) ++ assert.Equal(t, testL1Origin.L1BlockHash, l1Origin.L1BlockHash) ++} ++ ++func TestHeadL1Origin(t *testing.T) { ++ db := NewMemoryDatabase() ++ testBlockID := randomBigInt() ++ WriteHeadL1Origin(db, testBlockID) ++ blockID, err := ReadHeadL1Origin(db) ++ require.Nil(t, err) ++ require.NotNil(t, blockID) ++ assert.Equal(t, testBlockID, blockID) ++}
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+92
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/core/rawdb/taiko_l1_origin.go taikoxyz/taiko-geth/core/rawdb/taiko_l1_origin.go +new file mode 100644 +index 0000000000000000000000000000000000000000..aaa5c14832f39b524e863ad9ef0a64c044a9a1d6 +--- /dev/null ++++ taikoxyz/taiko-geth/core/rawdb/taiko_l1_origin.go +@@ -0,0 +1,92 @@ ++package rawdb ++ ++import ( ++ "bytes" ++ "fmt" ++ "math/big" ++ ++ "github.com/ethereum/go-ethereum/common" ++ "github.com/ethereum/go-ethereum/common/math" ++ "github.com/ethereum/go-ethereum/ethdb" ++ "github.com/ethereum/go-ethereum/log" ++ "github.com/ethereum/go-ethereum/rlp" ++) ++ ++var ( ++ // Database key prefix for L2 block's L1Origin. ++ l1OriginPrefix = []byte("TKO:L1O") ++ headL1OriginKey = []byte("TKO:LastL1O") ++) ++ ++// l1OriginKey calculates the L1Origin key. ++// l1OriginPrefix + l2HeaderHash -> l1OriginKey ++func l1OriginKey(blockID *big.Int) []byte { ++ data, _ := (*math.HexOrDecimal256)(blockID).MarshalText() ++ return append(l1OriginPrefix, data...) ++} ++ ++//go:generate go run github.com/fjl/gencodec -type L1Origin -field-override l1OriginMarshaling -out gen_taiko_l1_origin.go ++ ++// L1Origin represents a L1Origin of a L2 block. ++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"` ++} ++ ++type l1OriginMarshaling struct { ++ BlockID *math.HexOrDecimal256 ++ L1BlockHeight *math.HexOrDecimal256 ++} ++ ++// WriteL1Origin stores a L1Origin into the database. ++func WriteL1Origin(db ethdb.KeyValueWriter, blockID *big.Int, l1Origin *L1Origin) { ++ data, err := rlp.EncodeToBytes(l1Origin) ++ if err != nil { ++ log.Crit("Failed to encode L1Origin", "err", err) ++ } ++ ++ if err := db.Put(l1OriginKey(blockID), data); err != nil { ++ log.Crit("Failed to store L1Origin", "err", err) ++ } ++} ++ ++// ReadL1Origin retrieves the given L2 block's L1Origin from database. ++func ReadL1Origin(db ethdb.KeyValueReader, blockID *big.Int) (*L1Origin, error) { ++ data, _ := db.Get(l1OriginKey(blockID)) ++ if len(data) == 0 { ++ return nil, nil ++ } ++ ++ l1Origin := new(L1Origin) ++ if err := rlp.Decode(bytes.NewReader(data), l1Origin); err != nil { ++ return nil, fmt.Errorf("invalid L1Origin RLP bytes: %w", err) ++ } ++ ++ return l1Origin, nil ++} ++ ++// WriteHeadL1Origin stores the given L1Origin as the last L1Origin. ++func WriteHeadL1Origin(db ethdb.KeyValueWriter, blockID *big.Int) { ++ data, _ := (*math.HexOrDecimal256)(blockID).MarshalText() ++ if err := db.Put(headL1OriginKey, data); err != nil { ++ log.Crit("Failed to store head L1Origin", "error", err) ++ } ++} ++ ++// ReadHeadL1Origin retrieves the last L1Origin from database. ++func ReadHeadL1Origin(db ethdb.KeyValueReader) (*big.Int, error) { ++ data, _ := db.Get(headL1OriginKey) ++ if len(data) == 0 { ++ return nil, nil ++ } ++ ++ blockID := new(math.HexOrDecimal256) ++ if err := blockID.UnmarshalText(data); err != nil { ++ log.Error("Unmarshal L1Origin unmarshal error", "error", err) ++ return nil, fmt.Errorf("invalid L1Origin unmarshal: %w", err) ++ } ++ ++ return (*big.Int)(blockID), nil ++}
+
+ + +
+ + +
+ +
+ +
+ +
+
+7
+
-1
+
+ +
+
+
diff --git ethereum/go-ethereum/core/txpool/txpool.go taikoxyz/taiko-geth/core/txpool/txpool.go +index ac4486c6cba8c011da4dfa474294c64567c1ac4c..2e64051599e6bd6030407bea264e1281fe41e834 100644 +--- ethereum/go-ethereum/core/txpool/txpool.go ++++ taikoxyz/taiko-geth/core/txpool/txpool.go +@@ -1364,7 +1364,13 @@ return + } + pool.currentState = statedb + pool.pendingNonces = newNoncer(statedb) +- pool.currentMaxGas = newHead.GasLimit ++ // CHANGE(taiko): current gas limit for transaction caps is always ++ // LibSharedConfig.blockMaxGasLimit defined in protocol. ++ if pool.chainconfig.Taiko { ++ pool.currentMaxGas = 6000000 // LibSharedConfig.blockMaxGasLimit ++ } else { ++ pool.currentMaxGas = newHead.GasLimit ++ } +  + // Inject any transactions discarded due to reorgs + log.Debug("Reinjecting stale transactions", "count", len(reinject))
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+60
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/core/rawdb/gen_taiko_l1_origin.go taikoxyz/taiko-geth/core/rawdb/gen_taiko_l1_origin.go +new file mode 100644 +index 0000000000000000000000000000000000000000..6cbd6c3cdbc0a1f87d5e816e6103b2a2d082354b +--- /dev/null ++++ taikoxyz/taiko-geth/core/rawdb/gen_taiko_l1_origin.go +@@ -0,0 +1,60 @@ ++// Code generated by github.com/fjl/gencodec. DO NOT EDIT. ++ ++package rawdb ++ ++import ( ++ "encoding/json" ++ "errors" ++ "math/big" ++ ++ "github.com/ethereum/go-ethereum/common" ++ "github.com/ethereum/go-ethereum/common/math" ++) ++ ++var _ = (*l1OriginMarshaling)(nil) ++ ++// MarshalJSON marshals as JSON. ++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"` ++ } ++ var enc L1Origin ++ enc.BlockID = (*math.HexOrDecimal256)(l.BlockID) ++ enc.L2BlockHash = l.L2BlockHash ++ enc.L1BlockHeight = (*math.HexOrDecimal256)(l.L1BlockHeight) ++ enc.L1BlockHash = l.L1BlockHash ++ return json.Marshal(&enc) ++} ++ ++// UnmarshalJSON unmarshals from JSON. ++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"` ++ } ++ var dec L1Origin ++ if err := json.Unmarshal(input, &dec); err != nil { ++ return err ++ } ++ if dec.BlockID == nil { ++ return errors.New("missing required field 'blockID' for L1Origin") ++ } ++ l.BlockID = (*big.Int)(dec.BlockID) ++ if dec.L2BlockHash != nil { ++ l.L2BlockHash = *dec.L2BlockHash ++ } ++ if dec.L1BlockHeight == nil { ++ return errors.New("missing required field 'l1BlockHeight' for L1Origin") ++ } ++ l.L1BlockHeight = (*big.Int)(dec.L1BlockHeight) ++ if dec.L1BlockHash == nil { ++ return errors.New("missing required field 'l1BlockHash' for L1Origin") ++ } ++ l.L1BlockHash = *dec.L1BlockHash ++ return nil ++}
+
+ + +
+ + +
+ +
+ +
+ +
+
+29
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/core/types/block.go taikoxyz/taiko-geth/core/types/block.go +index e2c71abebd7056b7ad0c09f72ed673bd8304c0db..37990bf153e4f7298ecdbef71f486cb170d5350b 100644 +--- ethereum/go-ethereum/core/types/block.go ++++ taikoxyz/taiko-geth/core/types/block.go +@@ -28,6 +28,7 @@ "time" +  + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" ++ "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/rlp" + ) +  +@@ -254,6 +255,16 @@ + return b.WithWithdrawals(withdrawals) + } +  ++// CHANGE(taiko): use custom withdrawals hasher ++func NewTaikoBlockWithWithdrawals(header *Header, txs []*Transaction, uncles []*Header, receipts []*Receipt, withdrawals []*Withdrawal, hasher TrieHasher) *Block { ++ b := NewBlock(header, txs, uncles, receipts, hasher) ++ ++ h := CalcWithdrawalsRootTaiko(withdrawals) ++ b.header.WithdrawalsHash = &h ++ ++ return b.WithWithdrawals(withdrawals) ++} ++ + // NewBlockWithHeader creates a block with the given header data. The + // header data is copied, changes to header and to the field values + // will not affect the block. +@@ -453,3 +464,21 @@ return common.Hash{} + } + return common.BytesToHash(parentHash) + } ++ ++// CHANGE(taiko): calc withdrawals root by hashing deposits with keccak256 ++func CalcWithdrawalsRootTaiko(withdrawals []*Withdrawal) common.Hash { ++ if len(withdrawals) == 0 { ++ return EmptyWithdrawalsHash ++ } ++ var result []byte ++ for _, withdrawal := range withdrawals { ++ amountBytes := new(big.Int).SetUint64(withdrawal.Amount).Bytes() ++ paddedAmountBytes := make([]byte, 12) ++ copy(paddedAmountBytes[12-len(amountBytes):], amountBytes) ++ ++ result = append(result, withdrawal.Address.Bytes()...) ++ result = append(result, paddedAmountBytes...) ++ } ++ ++ return crypto.Keccak256Hash(result) ++}
+
+ + +
+ + +
+ +
+ +
+ +
+
+37
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/core/types/block_test.go taikoxyz/taiko-geth/core/types/block_test.go +index 49197c923764d9c0fc1ea5551b722c925e4bb8a6..b8dc0b64a70367ea55be6d654cc34b57393b83cf 100644 +--- ethereum/go-ethereum/core/types/block_test.go ++++ taikoxyz/taiko-geth/core/types/block_test.go +@@ -28,6 +28,7 @@ "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rlp" ++ "github.com/stretchr/testify/assert" + "golang.org/x/crypto/sha3" + ) +  +@@ -342,3 +343,39 @@ } + } + } + } ++ ++// c hange(TAIKO): test ++func Test_CalcWithdrawalsRootTaiko(t *testing.T) { ++ tests := []struct { ++ name string ++ withdrawals []*Withdrawal ++ want common.Hash ++ }{ ++ { ++ "empty", ++ nil, ++ EmptyWithdrawalsHash, ++ }, ++ { ++ "withWithdrawals", ++ []*Withdrawal{ ++ { ++ Address: common.HexToAddress("0x388C818CA8B9251b393131C08a736A67ccB19297"), ++ Amount: 100000000, ++ }, ++ { ++ Address: common.HexToAddress("0xeEE27662c2B8EBa3CD936A23F039F3189633e4C8"), ++ Amount: 184938493, ++ }, ++ }, ++ common.HexToHash("0xc3f16b87d5d286399c3d4daa4e7e3ae75840d66d0560863a2bdb4eb1bfaff229"), ++ }, ++ } ++ ++ for _, tt := range tests { ++ t.Run(tt.name, func(t *testing.T) { ++ got := CalcWithdrawalsRootTaiko(tt.withdrawals) ++ assert.Equal(t, tt.want, got) ++ }) ++ } ++}
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+20
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/core/taiko_genesis/genesis_alloc.go taikoxyz/taiko-geth/core/taiko_genesis/genesis_alloc.go +new file mode 100644 +index 0000000000000000000000000000000000000000..19be1a0c66537984455c9841da83c220d55abb7b +--- /dev/null ++++ taikoxyz/taiko-geth/core/taiko_genesis/genesis_alloc.go +@@ -0,0 +1,20 @@ ++package taiko_genesis ++ ++import ( ++ _ "embed" ++) ++ ++//go:embed mainnet.json ++var MainnetGenesisAllocJSON []byte ++ ++//go:embed internal-1.json ++var Internal1GenesisAllocJSON []byte ++ ++//go:embed internal-2.json ++var Internal2GenesisAllocJSON []byte ++ ++//go:embed snæfellsjökull.json ++var SnæfellsjökullGenesisAllocJSON []byte ++ ++//go:embed askja.json ++var AskjaGenesisAllocJSON []byte
+
+ + +
+
+ +
+
+
+ + +
+
+
+ + +
+ +
+

This shows changes to eth files.

+
+
+ +
+
+ +
+ +
+

This is our API backend, it handles l2 node related RPC calls.

+
+
+ +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+111
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/eth/taiko_api_backend.go taikoxyz/taiko-geth/eth/taiko_api_backend.go +new file mode 100644 +index 0000000000000000000000000000000000000000..8a651b5ca5b26d4bbc1b54b0d46cf0caa9c91806 +--- /dev/null ++++ taikoxyz/taiko-geth/eth/taiko_api_backend.go +@@ -0,0 +1,111 @@ ++package eth ++ ++import ( ++ "math/big" ++ ++ "github.com/ethereum/go-ethereum" ++ "github.com/ethereum/go-ethereum/common/math" ++ "github.com/ethereum/go-ethereum/core" ++ "github.com/ethereum/go-ethereum/core/rawdb" ++ "github.com/ethereum/go-ethereum/core/types" ++ "github.com/ethereum/go-ethereum/log" ++) ++ ++// TaikoAPIBackend handles l2 node related RPC calls. ++type TaikoAPIBackend struct { ++ eth *Ethereum ++} ++ ++// NewTaikoAPIBackend creates a new TaikoAPIBackend instance. ++func NewTaikoAPIBackend(eth *Ethereum) *TaikoAPIBackend { ++ return &TaikoAPIBackend{ ++ eth: eth, ++ } ++} ++ ++// HeadL1Origin returns the latest L2 block's corresponding L1 origin. ++func (s *TaikoAPIBackend) HeadL1Origin() (*rawdb.L1Origin, error) { ++ blockID, err := rawdb.ReadHeadL1Origin(s.eth.ChainDb()) ++ if err != nil { ++ return nil, err ++ } ++ ++ if blockID == nil { ++ return nil, ethereum.NotFound ++ } ++ ++ l1Origin, err := rawdb.ReadL1Origin(s.eth.ChainDb(), blockID) ++ if err != nil { ++ return nil, err ++ } ++ ++ if l1Origin == nil { ++ return nil, ethereum.NotFound ++ } ++ ++ return l1Origin, nil ++} ++ ++// L1OriginByID returns the L2 block's corresponding L1 origin. ++func (s *TaikoAPIBackend) L1OriginByID(blockID *math.HexOrDecimal256) (*rawdb.L1Origin, error) { ++ l1Origin, err := rawdb.ReadL1Origin(s.eth.ChainDb(), (*big.Int)(blockID)) ++ if err != nil { ++ return nil, err ++ } ++ ++ if l1Origin == nil { ++ return nil, ethereum.NotFound ++ } ++ ++ return l1Origin, nil ++} ++ ++// TxPoolContent retrieves the transaction pool content with the given upper limits. ++func (s *TaikoAPIBackend) TxPoolContent( ++ maxTransactionsPerBlock uint64, ++ blockMaxGasLimit uint64, ++ maxBytesPerTxList uint64, ++ minTxGasLimit uint64, ++ locals []string, ++) ([]types.Transactions, error) { ++ pending := s.eth.TxPool().Pending(false) ++ ++ log.Debug( ++ "Fetching L2 pending transactions finished", ++ "length", core.PoolContent(pending).Len(), ++ "maxTransactionsPerBlock", maxTransactionsPerBlock, ++ "blockMaxGasLimit", blockMaxGasLimit, ++ "maxBytesPerTxList", maxBytesPerTxList, ++ "minTxGasLimit", minTxGasLimit, ++ "locals", locals, ++ ) ++ ++ contentSplitter, err := core.NewPoolContentSplitter( ++ s.eth.BlockChain().Config().ChainID, ++ maxTransactionsPerBlock, ++ blockMaxGasLimit, ++ maxBytesPerTxList, ++ minTxGasLimit, ++ locals, ++ ) ++ if err != nil { ++ return nil, err ++ } ++ ++ var ( ++ txsCount = 0 ++ txLists []types.Transactions ++ ) ++ for _, splittedTxs := range contentSplitter.Split(pending) { ++ if txsCount+splittedTxs.Len() < int(maxTransactionsPerBlock) { ++ txLists = append(txLists, splittedTxs) ++ txsCount += splittedTxs.Len() ++ continue ++ } ++ ++ txLists = append(txLists, splittedTxs[0:(int(maxTransactionsPerBlock)-txsCount)]) ++ break ++ } ++ ++ return txLists, nil ++}
+
+ + +
+ + +
+ +
+ +
+ +
+
+7
+
-1
+
+ +
+
+
diff --git ethereum/go-ethereum/eth/backend.go taikoxyz/taiko-geth/eth/backend.go +index 6368c0e03c564cdc5e457883b7f81e0d8d9c7431..be82c45468cc563927b630ed9cdae77307bf0a1d 100644 +--- ethereum/go-ethereum/eth/backend.go ++++ taikoxyz/taiko-geth/eth/backend.go +@@ -141,7 +141,13 @@ cliqueConfig, err := core.LoadCliqueConfig(chainDb, config.Genesis) + if err != nil { + return nil, err + } +- engine := ethconfig.CreateConsensusEngine(stack, &ethashConfig, cliqueConfig, config.Miner.Notify, config.Miner.Noverify, chainDb) ++ ++ // CHANGE(taiko): set if `--taiko` flag is set. ++ var isTaiko bool ++ if config.Genesis != nil && config.Genesis.Config != nil { ++ isTaiko = config.Genesis.Config.Taiko ++ } ++ engine := ethconfig.CreateConsensusEngine(stack, &ethashConfig, cliqueConfig, config.Miner.Notify, config.Miner.Noverify, chainDb, isTaiko) +  + eth := &Ethereum{ + config: config,
+
+ + +
+ + +
+ +
+ +
+ +
+
+1
+
-1
+
+ +
+
+
diff --git ethereum/go-ethereum/eth/state_accessor.go taikoxyz/taiko-geth/eth/state_accessor.go +index 59b471425542fb4b1cb6241a537a7bd231b54512..68d40ac97a999df7a5800811a475c4d2d0515a06 100644 +--- ethereum/go-ethereum/eth/state_accessor.go ++++ taikoxyz/taiko-geth/eth/state_accessor.go +@@ -212,7 +212,7 @@ // Recompute transactions up to the target index. + signer := types.MakeSigner(eth.blockchain.Config(), block.Number()) + for idx, tx := range block.Transactions() { + // Assemble the transaction call message and return if the requested offset +- msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) ++ msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee(), idx == 0) + txContext := core.NewEVMTxContext(msg) + context := core.NewEVMBlockContext(block.Header(), eth.blockchain, nil) + if idx == txIndex {
+
+ + +
+
+ +
+
+
+ + +
+ +
+

This adds Taiko protocol specific logic into the API.

+
+
+ +
+ + +
+ +
+ +
+ +
+
+1
+
-1
+
+ +
+
+
diff --git ethereum/go-ethereum/eth/tracers/tracers_test.go taikoxyz/taiko-geth/eth/tracers/tracers_test.go +index 7c5ec65650ee5dc10a27ea4a408834da4cd8aa49..19bc44a59fe1dafdc59789cdc6809dab01f53c83 100644 +--- ethereum/go-ethereum/eth/tracers/tracers_test.go ++++ taikoxyz/taiko-geth/eth/tracers/tracers_test.go +@@ -88,7 +88,7 @@ //EnableMemory: false, + //EnableReturnData: false, + }) + evm := vm.NewEVM(context, txContext, statedb, params.AllEthashProtocolChanges, vm.Config{Debug: true, Tracer: tracer}) +- msg, err := core.TransactionToMessage(tx, signer, nil) ++ msg, err := core.TransactionToMessage(tx, signer, nil, false) + if err != nil { + b.Fatalf("failed to prepare transaction for tracing: %v", err) + }
+
+ + +
+ + +
+ +
+ +
+ +
+
+6
+
-6
+
+ +
+
+
diff --git ethereum/go-ethereum/eth/tracers/api.go taikoxyz/taiko-geth/eth/tracers/api.go +index 58ad0c3c9ad768f883047d7d75181253b81fe2f1..33acfd4509fb14c3ea891c9916db736a842178ef 100644 +--- ethereum/go-ethereum/eth/tracers/api.go ++++ taikoxyz/taiko-geth/eth/tracers/api.go +@@ -293,7 +293,7 @@ blockCtx = core.NewEVMBlockContext(task.block.Header(), api.chainContext(ctx), nil) + ) + // Trace all the transactions contained within + for i, tx := range task.block.Transactions() { +- msg, _ := core.TransactionToMessage(tx, signer, task.block.BaseFee()) ++ msg, _ := core.TransactionToMessage(tx, signer, task.block.BaseFee(), i == 0) + txctx := &Context{ + BlockHash: task.block.Hash(), + BlockNumber: task.block.Number(), +@@ -554,7 +554,7 @@ if err := ctx.Err(); err != nil { + return nil, err + } + var ( +- msg, _ = core.TransactionToMessage(tx, signer, block.BaseFee()) ++ msg, _ = core.TransactionToMessage(tx, signer, block.BaseFee(), i == 0) + txContext = core.NewEVMTxContext(msg) + vmenv = vm.NewEVM(vmctx, txContext, statedb, chainConfig, vm.Config{}) + ) +@@ -628,7 +628,7 @@ results = make([]*txTraceResult, len(txs)) + ) + for i, tx := range txs { + // Generate the next state snapshot fast without tracing +- msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) ++ msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee(), i == 0) + txctx := &Context{ + BlockHash: blockHash, + BlockNumber: block.Number(), +@@ -671,7 +671,7 @@ go func() { + defer pend.Done() + // Fetch and execute the next transaction trace tasks + for task := range jobs { +- msg, _ := core.TransactionToMessage(txs[task.index], signer, block.BaseFee()) ++ msg, _ := core.TransactionToMessage(txs[task.index], signer, block.BaseFee(), task.index == 0) + txctx := &Context{ + BlockHash: blockHash, + BlockNumber: block.Number(), +@@ -702,7 +702,7 @@ case jobs <- task: + } +  + // Generate the next state snapshot fast without tracing +- msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) ++ msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee(), i == 0) + statedb.SetTxContext(tx.Hash(), i) + vmenv := vm.NewEVM(blockCtx, core.NewEVMTxContext(msg), statedb, api.backend.ChainConfig(), vm.Config{}) + if _, err := core.ApplyMessage(vmenv, msg, new(core.GasPool).AddGas(msg.GasLimit)); err != nil { +@@ -782,7 +782,7 @@ } + for i, tx := range block.Transactions() { + // Prepare the transaction for un-traced execution + var ( +- msg, _ = core.TransactionToMessage(tx, signer, block.BaseFee()) ++ msg, _ = core.TransactionToMessage(tx, signer, block.BaseFee(), i == 0) + txContext = core.NewEVMTxContext(msg) + vmConf vm.Config + dump *os.File
+
+ + +
+ + +
+ +
+ +
+ +
+
+7
+
-1
+
+ +
+
+
diff --git ethereum/go-ethereum/eth/ethconfig/config.go taikoxyz/taiko-geth/eth/ethconfig/config.go +index db686c5d0875f43f099e401865558f7ccf2b9224..0a0cde53c5a89de6ec3ae42d51210e6a31c4df19 100644 +--- ethereum/go-ethereum/eth/ethconfig/config.go ++++ taikoxyz/taiko-geth/eth/ethconfig/config.go +@@ -29,6 +29,7 @@ "github.com/ethereum/go-ethereum/consensus" + "github.com/ethereum/go-ethereum/consensus/beacon" + "github.com/ethereum/go-ethereum/consensus/clique" + "github.com/ethereum/go-ethereum/consensus/ethash" ++ "github.com/ethereum/go-ethereum/consensus/taiko" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/txpool" + "github.com/ethereum/go-ethereum/eth/downloader" +@@ -210,7 +211,12 @@ OverrideShanghai *uint64 `toml:",omitempty"` + } +  + // CreateConsensusEngine creates a consensus engine for the given chain configuration. +-func CreateConsensusEngine(stack *node.Node, ethashConfig *ethash.Config, cliqueConfig *params.CliqueConfig, notify []string, noverify bool, db ethdb.Database) consensus.Engine { ++func CreateConsensusEngine(stack *node.Node, ethashConfig *ethash.Config, cliqueConfig *params.CliqueConfig, notify []string, noverify bool, db ethdb.Database, isTaiko bool) consensus.Engine { ++ // CHANGE(taiko): use Taiko consensus engine when the --taiko flag is set. ++ if isTaiko { ++ return taiko.New() ++ } ++ + // If proof-of-authority is requested, set it up + var engine consensus.Engine + if cliqueConfig != nil {
+
+ + +
+ + +
+ +
+ +
+ +
+
+100
+
-8
+
+ +
+
+
diff --git ethereum/go-ethereum/eth/catalyst/api.go taikoxyz/taiko-geth/eth/catalyst/api.go +index 9077f20bffccb108ca46e6b334b1fb5464c74c21..5ed50b8281433d93111cf021af7cba77756d4c58 100644 +--- ethereum/go-ethereum/eth/catalyst/api.go ++++ taikoxyz/taiko-geth/eth/catalyst/api.go +@@ -214,6 +214,7 @@ if update.HeadBlockHash == (common.Hash{}) { + log.Warn("Forkchoice requested update to zero hash") + return engine.STATUS_INVALID, nil // TODO(karalabe): Why does someone send us this? + } ++ + // Stash away the last update to warn the user if the beacon client goes offline + api.lastForkchoiceLock.Lock() + api.lastForkchoiceUpdate = time.Now() +@@ -289,6 +290,10 @@ PayloadStatus: engine.PayloadStatusV1{Status: engine.VALID, LatestValidHash: &update.HeadBlockHash}, + PayloadID: id, + } + } ++ ++ // CHANGE(taiko): check whether --taiko flag is set. ++ isTaiko := api.eth.BlockChain().Config().Taiko ++ + if rawdb.ReadCanonicalHash(api.eth.ChainDb(), block.NumberU64()) != update.HeadBlockHash { + // Block is not canonical, set head. + if latestValid, err := api.eth.BlockChain().SetCanonical(block); err != nil { +@@ -298,7 +303,7 @@ } else if api.eth.BlockChain().CurrentBlock().Hash() == update.HeadBlockHash { + // If the specified head matches with our local head, do nothing and keep + // generating the payload. It's a special corner case that a few slots are + // missing and we are requested to generate the payload in slot. +- } else { ++ } else if !isTaiko { // CHANGE(taiko): reorg is allowed in L2. + // If the head block is already in our canonical chain, the beacon client is + // probably resyncing. Ignore the update. + log.Info("Ignoring beacon update to old head", "number", block.NumberU64(), "hash", update.HeadBlockHash, "age", common.PrettyAge(time.Unix(int64(block.Time()), 0)), "have", api.eth.BlockChain().CurrentBlock().Number) +@@ -342,6 +347,57 @@ // If payload generation was requested, create a new block to be potentially + // sealed by the beacon client. The payload will be requested later, and we + // will replace it arbitrarily many times in between. + if payloadAttributes != nil { ++ // CHANGE(taiko): create a L2 block by Taiko protocol. ++ if isTaiko { ++ // No need to check payloadAttribute here, because all its fields are ++ // marked as required. ++ ++ block, err := api.eth.Miner().SealBlockWith( ++ update.HeadBlockHash, ++ payloadAttributes.Timestamp, ++ payloadAttributes.BlockMetadata, ++ payloadAttributes.BaseFeePerGas, ++ payloadAttributes.Withdrawals, ++ types.CalcWithdrawalsRootTaiko(payloadAttributes.Withdrawals), ++ ) ++ if err != nil { ++ log.Error("Failed to create sealing block", "err", err) ++ return valid(nil), engine.InvalidPayloadAttributes.With(err) ++ } ++ ++ // Cache the mined block for later use. ++ args := &miner.BuildPayloadArgs{ ++ Parent: block.ParentHash(), ++ Timestamp: block.Time(), ++ FeeRecipient: block.Coinbase(), ++ Random: block.MixDigest(), ++ Withdrawals: block.Withdrawals(), ++ } ++ id := args.Id() ++ payload, err := api.eth.Miner().BuildPayload(args) ++ if err != nil { ++ log.Error("Failed to build payload", "err", err) ++ return valid(nil), engine.InvalidPayloadAttributes.With(err) ++ } ++ ++ payload.SetFullBlock(block, common.Big0) ++ ++ api.localBlocks.put(id, payload) ++ ++ // L1Origin **MUST NOT** be nil, it's a required field in PayloadAttributesV1. ++ l1Origin := payloadAttributes.L1Origin ++ ++ // Set the block hash before inserting the L1Origin into database. ++ l1Origin.L2BlockHash = block.Hash() ++ ++ // Write L1Origin. ++ rawdb.WriteL1Origin(api.eth.ChainDb(), l1Origin.BlockID, l1Origin) ++ // Write the head L1Origin. ++ rawdb.WriteHeadL1Origin(api.eth.ChainDb(), l1Origin.BlockID) ++ ++ return valid(&id), nil ++ } ++ + args := &miner.BuildPayloadArgs{ + Parent: update.HeadBlockHash, + Timestamp: payloadAttributes.Timestamp, +@@ -457,10 +513,37 @@ api.newPayloadLock.Lock() + defer api.newPayloadLock.Unlock() +  + log.Trace("Engine API request received", "method", "NewPayload", "number", params.Number, "hash", params.BlockHash) +- block, err := engine.ExecutableDataToBlock(params) +- if err != nil { +- log.Debug("Invalid NewPayload params", "params", params, "error", err) +- return engine.PayloadStatusV1{Status: engine.INVALID}, nil ++ // CHANGE(taiko): allow passing the executable data with txHash instead of all transactions. ++ var ( ++ block *types.Block ++ err error ++ ) ++ if api.eth.BlockChain().Config().Taiko && params.Transactions == nil { ++ h := types.CalcWithdrawalsRootTaiko(params.Withdrawals) ++ block = types.NewBlockWithHeader(&types.Header{ ++ ParentHash: params.ParentHash, ++ UncleHash: types.EmptyUncleHash, ++ Coinbase: params.FeeRecipient, ++ Root: params.StateRoot, ++ TxHash: params.TxHash, ++ ReceiptHash: params.ReceiptsRoot, ++ Bloom: types.BytesToBloom(params.LogsBloom), ++ Difficulty: common.Big0, ++ Number: new(big.Int).SetUint64(params.Number), ++ GasLimit: params.GasLimit, ++ GasUsed: params.GasUsed, ++ Time: params.Timestamp, ++ BaseFee: params.BaseFeePerGas, ++ Extra: params.ExtraData, ++ MixDigest: params.Random, ++ WithdrawalsHash: &h, ++ }) ++ } else { ++ block, err = engine.ExecutableDataToBlock(params) ++ if err != nil { ++ log.Debug("Invalid NewPayload params", "params", params, "error", err) ++ return engine.PayloadStatusV1{Status: engine.INVALID}, nil ++ } + } + // Stash away the last update to warn the user if the beacon client goes offline + api.lastNewPayloadLock.Lock() +@@ -503,9 +586,18 @@ if parent.Difficulty().BitLen() > 0 && gptd != nil && gptd.Cmp(ttd) >= 0 { + log.Error("Ignoring pre-merge parent block", "number", params.Number, "hash", params.BlockHash, "td", ptd, "ttd", ttd) + return engine.INVALID_TERMINAL_BLOCK, nil + } +- if block.Time() <= parent.Time() { +- log.Warn("Invalid timestamp", "parent", block.Time(), "block", block.Time()) +- return api.invalid(errors.New("invalid timestamp"), parent.Header()), nil ++ // CHANGE(taiko): a block that has the same timestamp as its parents is ++ // allowed in Taiko protocol. ++ if api.eth.BlockChain().Config().Taiko { ++ if block.Time() < parent.Time() { ++ log.Warn("Invalid timestamp", "parent", block.Time(), "block", block.Time()) ++ return api.invalid(errors.New("invalid timestamp"), parent.Header()), nil ++ } ++ } else { ++ if block.Time() <= parent.Time() { ++ log.Warn("Invalid timestamp", "parent", block.Time(), "block", block.Time()) ++ return api.invalid(errors.New("invalid timestamp"), parent.Header()), nil ++ } + } + // Another cornercase: if the node is in snap sync mode, but the CL client + // tries to make it import a block. That should be denied as pushing something
+
+ + +
+ + +
+ +
+ +
+ +
+
+1
+
-1
+
+ +
+
+
diff --git ethereum/go-ethereum/eth/tracers/api_test.go taikoxyz/taiko-geth/eth/tracers/api_test.go +index b1eaf60b16c44e158f335248749b5b067fa23c44..af768ea809cae6ade84be659ab1be1acbdf7e890 100644 +--- ethereum/go-ethereum/eth/tracers/api_test.go ++++ taikoxyz/taiko-geth/eth/tracers/api_test.go +@@ -171,7 +171,7 @@ } + // Recompute transactions up to the target index. + signer := types.MakeSigner(b.chainConfig, block.Number()) + for idx, tx := range block.Transactions() { +- msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) ++ msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee(), idx == 0) + txContext := core.NewEVMTxContext(msg) + context := core.NewEVMBlockContext(block.Header(), b.chain, nil) + if idx == txIndex {
+
+ + +
+
+ +
+
+
+ + +
+
+
+ + +
+ +
+

This shows changes to ethclient files.

+
+
+ +
+
+ +
+ +
+

This provides API calls for L1 and L2 Origins, as well as Throwaway Block Receipts.

+
+
+ +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+31
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/ethclient/taiko_api.go taikoxyz/taiko-geth/ethclient/taiko_api.go +new file mode 100644 +index 0000000000000000000000000000000000000000..9637608d062f16bbc7e855d81647e8babe3c8ab9 +--- /dev/null ++++ taikoxyz/taiko-geth/ethclient/taiko_api.go +@@ -0,0 +1,31 @@ ++package ethclient ++ ++import ( ++ "context" ++ "math/big" ++ ++ "github.com/ethereum/go-ethereum/common/hexutil" ++ "github.com/ethereum/go-ethereum/core/rawdb" ++) ++ ++// HeadL1Origin returns the latest L2 block's corresponding L1 origin. ++func (ec *Client) HeadL1Origin(ctx context.Context) (*rawdb.L1Origin, error) { ++ var res *rawdb.L1Origin ++ ++ if err := ec.c.CallContext(ctx, &res, "taiko_headL1Origin"); err != nil { ++ return nil, err ++ } ++ ++ return res, nil ++} ++ ++// L1OriginByID returns the L2 block's corresponding L1 origin. ++func (ec *Client) L1OriginByID(ctx context.Context, blockID *big.Int) (*rawdb.L1Origin, error) { ++ var res *rawdb.L1Origin ++ ++ if err := ec.c.CallContext(ctx, &res, "taiko_l1OriginByID", hexutil.EncodeBig(blockID)); err != nil { ++ return nil, err ++ } ++ ++ return res, nil ++}
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+128
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/ethclient/taiko_api_test.go taikoxyz/taiko-geth/ethclient/taiko_api_test.go +new file mode 100644 +index 0000000000000000000000000000000000000000..010ba0472c31e8665fd58747417f3e80637a2ebb +--- /dev/null ++++ taikoxyz/taiko-geth/ethclient/taiko_api_test.go +@@ -0,0 +1,128 @@ ++package ethclient ++ ++import ( ++ "context" ++ "crypto/rand" ++ "math/big" ++ "testing" ++ ++ "github.com/ethereum/go-ethereum" ++ "github.com/ethereum/go-ethereum/common" ++ "github.com/ethereum/go-ethereum/consensus/ethash" ++ "github.com/ethereum/go-ethereum/core/rawdb" ++ "github.com/ethereum/go-ethereum/core/types" ++ "github.com/ethereum/go-ethereum/eth" ++ "github.com/ethereum/go-ethereum/eth/ethconfig" ++ "github.com/ethereum/go-ethereum/ethdb" ++ "github.com/ethereum/go-ethereum/log" ++ "github.com/ethereum/go-ethereum/node" ++ "github.com/ethereum/go-ethereum/params" ++ "github.com/ethereum/go-ethereum/rpc" ++ "github.com/stretchr/testify/require" ++) ++ ++func newTaikoAPITestClient(t *testing.T) (*Client, []*types.Block, ethdb.Database) { ++ // Generate test chain. ++ blocks := generateTestChain() ++ ++ // Create node ++ n, err := node.New(&node.Config{}) ++ ++ require.Nil(t, err) ++ ++ // Create Ethereum Service ++ config := &ethconfig.Config{Genesis: genesis} ++ config.Ethash.PowMode = ethash.ModeFake ++ ethservice, err := eth.New(n, config) ++ require.Nil(t, err) ++ ++ n.RegisterAPIs([]rpc.API{ ++ { ++ Namespace: "taiko", ++ Version: params.VersionWithMeta, ++ Service: eth.NewTaikoAPIBackend(ethservice), ++ Public: true, ++ }, ++ }) ++ ++ // Start node ++ require.Nil(t, n.Start()) ++ ++ // Insert test blocks ++ _, err = ethservice.BlockChain().InsertChain(blocks[1:]) ++ ++ require.Nil(t, err) ++ ++ rpcClient, _ := n.Attach() ++ ++ return NewClient(rpcClient), blocks, ethservice.ChainDb() ++} ++ ++func TestHeadL1Origin(t *testing.T) { ++ ec, blocks, db := newTaikoAPITestClient(t) ++ ++ headerHash := blocks[len(blocks)-1].Hash() ++ ++ l1OriginFound, err := ec.HeadL1Origin(context.Background()) ++ ++ require.Equal(t, ethereum.NotFound.Error(), err.Error()) ++ require.Nil(t, l1OriginFound) ++ ++ testL1Origin := &rawdb.L1Origin{ ++ BlockID: randomBigInt(), ++ L2BlockHash: headerHash, ++ L1BlockHeight: randomBigInt(), ++ L1BlockHash: randomHash(), ++ } ++ ++ rawdb.WriteL1Origin(db, testL1Origin.BlockID, testL1Origin) ++ rawdb.WriteHeadL1Origin(db, testL1Origin.BlockID) ++ ++ l1OriginFound, err = ec.HeadL1Origin(context.Background()) ++ ++ require.Nil(t, err) ++ require.Equal(t, testL1Origin, l1OriginFound) ++} ++ ++func TestL1OriginByID(t *testing.T) { ++ ec, blocks, db := newTaikoAPITestClient(t) ++ ++ headerHash := blocks[len(blocks)-1].Hash() ++ testL1Origin := &rawdb.L1Origin{ ++ BlockID: randomBigInt(), ++ L2BlockHash: headerHash, ++ L1BlockHeight: randomBigInt(), ++ L1BlockHash: randomHash(), ++ } ++ ++ l1OriginFound, err := ec.L1OriginByID(context.Background(), testL1Origin.BlockID) ++ require.Equal(t, ethereum.NotFound.Error(), err.Error()) ++ require.Nil(t, l1OriginFound) ++ ++ rawdb.WriteL1Origin(db, testL1Origin.BlockID, testL1Origin) ++ rawdb.WriteHeadL1Origin(db, testL1Origin.BlockID) ++ ++ l1OriginFound, err = ec.L1OriginByID(context.Background(), testL1Origin.BlockID) ++ ++ require.Nil(t, err) ++ require.Equal(t, testL1Origin, l1OriginFound) ++} ++ ++// randomHash generates a random blob of data and returns it as a hash. ++func randomHash() common.Hash { ++ var hash common.Hash ++ if n, err := rand.Read(hash[:]); n != common.HashLength || err != nil { ++ panic(err) ++ } ++ return hash ++} ++ ++// randomBigInt generates a random big integer. ++func randomBigInt() *big.Int { ++ randomBigInt, err := rand.Int(rand.Reader, common.Big256) ++ if err != nil { ++ log.Crit(err.Error()) ++ } ++ ++ return randomBigInt ++}
+
+ + +
+
+ +
+
+
+ + +
+
+
+ + +
+ +
+

This shows changes to les files.

+
+
+ +
+
+ +
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
+1
+
-1
+
+ +
+
+
diff --git ethereum/go-ethereum/les/client.go taikoxyz/taiko-geth/les/client.go +index 9ac85ecdac6fb5d2f41c88f13ad9e5fd37ae09c2..494a12ffdb67490ef4b42052a73be786b7730b94 100644 +--- ethereum/go-ethereum/les/client.go ++++ taikoxyz/taiko-geth/les/client.go +@@ -126,7 +126,7 @@ eventMux: stack.EventMux(), + reqDist: newRequestDistributor(peers, &mclock.System{}), + accountManager: stack.AccountManager(), + merger: merger, +- engine: ethconfig.CreateConsensusEngine(stack, &config.Ethash, chainConfig.Clique, nil, false, chainDb), ++ engine: ethconfig.CreateConsensusEngine(stack, &config.Ethash, chainConfig.Clique, nil, false, chainDb, chainConfig.Taiko), + bloomRequests: make(chan chan *bloombits.Retrieval), + bloomIndexer: core.NewBloomIndexer(chainDb, params.BloomBitsBlocksClient, params.HelperTrieConfirmations), + p2pServer: stack.Server(),
+
+ + +
+ + +
+ +
+ +
+ +
+
+1
+
-1
+
+ +
+
+
diff --git ethereum/go-ethereum/les/state_accessor.go taikoxyz/taiko-geth/les/state_accessor.go +index 030d6b5a50044abe36d871f474c14a64c9eef77c..68c52486dda77f43f958f88f0d8a479cd49de3ce 100644 +--- ethereum/go-ethereum/les/state_accessor.go ++++ taikoxyz/taiko-geth/les/state_accessor.go +@@ -60,7 +60,7 @@ // Recompute transactions up to the target index. + signer := types.MakeSigner(leth.blockchain.Config(), block.Number()) + for idx, tx := range block.Transactions() { + // Assemble the transaction call message and return if the requested offset +- msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) ++ msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee(), idx == 0) + txContext := core.NewEVMTxContext(msg) + context := core.NewEVMBlockContext(block.Header(), leth.blockchain, nil) + statedb.SetTxContext(tx.Hash(), idx)
+
+ + +
+
+ +
+
+
+ + +
+
+
+ + +
+ +
+

This shows changes to miner files.

+
+
+ +
+
+ +
+ +
+

This adds Taiko-specific miner changes.

+
+
+ +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+21
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/miner/taiko_miner.go taikoxyz/taiko-geth/miner/taiko_miner.go +new file mode 100644 +index 0000000000000000000000000000000000000000..5344897ff9a1520a8a07cfe600997f204efaaf0a +--- /dev/null ++++ taikoxyz/taiko-geth/miner/taiko_miner.go +@@ -0,0 +1,21 @@ ++package miner ++ ++import ( ++ "math/big" ++ ++ "github.com/ethereum/go-ethereum/beacon/engine" ++ "github.com/ethereum/go-ethereum/common" ++ "github.com/ethereum/go-ethereum/core/types" ++) ++ ++// SealBlockWith mines and seals a block without changing the canonical chain. ++func (miner *Miner) SealBlockWith( ++ parent common.Hash, ++ timestamp uint64, ++ blkMeta *engine.BlockMetadata, ++ baseFeePerGas *big.Int, ++ withdrawals types.Withdrawals, ++ withdrawalsHash common.Hash, ++) (*types.Block, error) { ++ return miner.worker.sealBlockWith(parent, timestamp, blkMeta, baseFeePerGas, withdrawals, withdrawalsHash) ++}
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+32
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/miner/taiko_payload_building.go taikoxyz/taiko-geth/miner/taiko_payload_building.go +new file mode 100644 +index 0000000000000000000000000000000000000000..9258a1ce67e3ba11b8b71d299f7187e2ceb206a2 +--- /dev/null ++++ taikoxyz/taiko-geth/miner/taiko_payload_building.go +@@ -0,0 +1,32 @@ ++package miner ++ ++import ( ++ "math/big" ++ ++ "github.com/ethereum/go-ethereum/core/types" ++ "github.com/ethereum/go-ethereum/log" ++ "github.com/ethereum/go-ethereum/params" ++) ++ ++// SetFullBlock updates the full-block to the given block. ++func (payload *Payload) SetFullBlock(block *types.Block, fees *big.Int) { ++ payload.lock.Lock() ++ defer payload.lock.Unlock() ++ ++ go func() { ++ select { ++ case payload.stop <- struct{}{}: ++ default: ++ } ++ }() ++ ++ payload.full = block ++ payload.fullFees = fees ++ ++ feesInEther := new(big.Float).Quo(new(big.Float).SetInt(fees), big.NewFloat(params.Ether)) ++ log.Info("Updated payload", "id", payload.id, "number", block.NumberU64(), "hash", block.Hash(), ++ "txs", len(block.Transactions()), "gas", block.GasUsed(), "fees", feesInEther, ++ "root", block.Root()) ++ ++ payload.cond.Broadcast() // fire signal for notifying full block ++}
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+102
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/miner/taiko_worker.go taikoxyz/taiko-geth/miner/taiko_worker.go +new file mode 100644 +index 0000000000000000000000000000000000000000..888f8f75a48f100f4b1ed3733c7882558af0b739 +--- /dev/null ++++ taikoxyz/taiko-geth/miner/taiko_worker.go +@@ -0,0 +1,102 @@ ++package miner ++ ++import ( ++ "fmt" ++ "math/big" ++ ++ "github.com/ethereum/go-ethereum/beacon/engine" ++ "github.com/ethereum/go-ethereum/common" ++ "github.com/ethereum/go-ethereum/core" ++ "github.com/ethereum/go-ethereum/core/types" ++ "github.com/ethereum/go-ethereum/core/vm" ++ "github.com/ethereum/go-ethereum/log" ++ "github.com/ethereum/go-ethereum/rlp" ++) ++ ++// sealBlockWith mines and seals a block with the given block metadata. ++func (w *worker) sealBlockWith( ++ parent common.Hash, ++ timestamp uint64, ++ blkMeta *engine.BlockMetadata, ++ baseFeePerGas *big.Int, ++ withdrawals types.Withdrawals, ++ withdrawalsHash common.Hash, ++) (*types.Block, error) { ++ // Decode transactions bytes. ++ var txs types.Transactions ++ if err := rlp.DecodeBytes(blkMeta.TxList, &txs); err != nil { ++ return nil, fmt.Errorf("failed to decode txList: %w", err) ++ } ++ ++ if len(txs) == 0 { ++ // A L2 block needs to have have at least one `V1TaikoL2.anchor` or ++ // `V1TaikoL2.invalidateBlock` transaction. ++ return nil, fmt.Errorf("too less transactions in the block") ++ } ++ ++ params := &generateParams{ ++ timestamp: timestamp, ++ forceTime: true, ++ parentHash: parent, ++ coinbase: blkMeta.Beneficiary, ++ random: blkMeta.MixHash, ++ withdrawals: withdrawals, ++ noUncle: true, ++ noTxs: false, ++ baseFeePerGas: baseFeePerGas, ++ } ++ ++ env, err := w.prepareWork(params) ++ if err != nil { ++ return nil, err ++ } ++ defer env.discard() ++ ++ // Set the block fields using the given block metadata: ++ // 1. gas limit ++ // 2. extra data ++ // 3. withdrawals hash ++ env.header.GasLimit = blkMeta.GasLimit ++ env.header.Extra = blkMeta.ExtraData ++ env.header.WithdrawalsHash = &withdrawalsHash ++ ++ // Commit transactions. ++ commitErrs := make([]error, 0, len(txs)) ++ gasLimit := env.header.GasLimit ++ rules := w.chain.Config().Rules(env.header.Number, true, timestamp) ++ ++ env.gasPool = new(core.GasPool).AddGas(gasLimit) ++ ++ for i, tx := range txs { ++ sender, err := types.LatestSignerForChainID(tx.ChainId()).Sender(tx) ++ if err != nil { ++ log.Info("Skip an invalid proposed transaction", "hash", tx.Hash(), "reason", err) ++ commitErrs = append(commitErrs, err) ++ continue ++ } ++ ++ env.state.Prepare(rules, sender, blkMeta.Beneficiary, tx.To(), vm.ActivePrecompiles(rules), tx.AccessList()) ++ env.state.SetTxContext(tx.Hash(), env.tcount) ++ if _, err := w.commitTransaction(env, tx, i == 0); err != nil { ++ log.Info("Skip an invalid proposed transaction", "hash", tx.Hash(), "reason", err) ++ commitErrs = append(commitErrs, err) ++ continue ++ } ++ env.tcount++ ++ } ++ // TODO: save the commit transactions errors for generating witness. ++ _ = commitErrs ++ ++ block, err := w.engine.FinalizeAndAssemble(w.chain, env.header, env.state, env.txs, nil, env.receipts, withdrawals) ++ if err != nil { ++ return nil, err ++ } ++ ++ results := make(chan *types.Block, 1) ++ if err := w.engine.Seal(w.chain, block, results, nil); err != nil { ++ return nil, err ++ } ++ block = <-results ++ ++ return block, nil ++}
+
+ + +
+ + +
+ +
+ +
+ +
+
+4
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/miner/payload_building.go taikoxyz/taiko-geth/miner/payload_building.go +index f84d908e86d68dbb132e2cd75ba5e21887fc018c..ccfb462539d2fff747e5f1b1757e444f1ef6b159 100644 +--- ethereum/go-ethereum/miner/payload_building.go ++++ taikoxyz/taiko-geth/miner/payload_building.go +@@ -179,6 +179,10 @@ + for { + select { + case <-timer.C: ++ // CHANGE(taiko): do not update payload. ++ if w.chainConfig.Taiko { ++ continue ++ } + start := time.Now() + block, fees, err := w.getSealingBlock(args.Parent, args.Timestamp, args.FeeRecipient, args.Random, args.Withdrawals, false) + if err == nil {
+
+ + +
+ + +
+ +
+ +
+ +
+
+30
+
-18
+
+ +
+
+
diff --git ethereum/go-ethereum/miner/worker.go taikoxyz/taiko-geth/miner/worker.go +index 67a5842d23e0ddecfd019821081032a01ae69ea9..3855e95bd6ff19bba49cb42291bc13000ad1f2d9 100644 +--- ethereum/go-ethereum/miner/worker.go ++++ taikoxyz/taiko-geth/miner/worker.go +@@ -860,12 +860,12 @@ w.snapshotReceipts = copyReceipts(env.receipts) + w.snapshotState = env.state.Copy() + } +  +-func (w *worker) commitTransaction(env *environment, tx *types.Transaction) ([]*types.Log, error) { ++func (w *worker) commitTransaction(env *environment, tx *types.Transaction, isAnchor bool) ([]*types.Log, error) { + var ( + snap = env.state.Snapshot() + gp = env.gasPool.Gas() + ) +- receipt, err := core.ApplyTransaction(w.chainConfig, w.chain, &env.coinbase, env.gasPool, env.state, env.header, tx, &env.header.GasUsed, *w.chain.GetVMConfig()) ++ receipt, err := core.ApplyTransaction(w.chainConfig, w.chain, &env.coinbase, env.gasPool, env.state, env.header, tx, &env.header.GasUsed, *w.chain.GetVMConfig(), isAnchor) + if err != nil { + env.state.RevertToSnapshot(snap) + env.gasPool.SetGas(gp) +@@ -916,7 +916,7 @@ } + // Start executing the transaction + env.state.SetTxContext(tx.Hash(), env.tcount) +  +- logs, err := w.commitTransaction(env, tx) ++ logs, err := w.commitTransaction(env, tx, false) + switch { + case errors.Is(err, core.ErrGasLimitReached): + // Pop the current out-of-gas transaction without shifting in the next from the account +@@ -971,14 +971,15 @@ } +  + // generateParams wraps various of settings for generating sealing task. + type generateParams struct { +- timestamp uint64 // The timstamp for sealing task +- forceTime bool // Flag whether the given timestamp is immutable or not +- parentHash common.Hash // Parent block hash, empty means the latest chain head +- coinbase common.Address // The fee recipient address for including transaction +- random common.Hash // The randomness generated by beacon chain, empty before the merge +- withdrawals types.Withdrawals // List of withdrawals to include in block. +- noUncle bool // Flag whether the uncle block inclusion is allowed +- noTxs bool // Flag whether an empty block without any transaction is expected ++ timestamp uint64 // The timstamp for sealing task ++ forceTime bool // Flag whether the given timestamp is immutable or not ++ parentHash common.Hash // Parent block hash, empty means the latest chain head ++ coinbase common.Address // The fee recipient address for including transaction ++ random common.Hash // The randomness generated by beacon chain, empty before the merge ++ withdrawals types.Withdrawals // List of withdrawals to include in block. ++ noUncle bool // Flag whether the uncle block inclusion is allowed ++ noTxs bool // Flag whether an empty block without any transaction is expected ++ baseFeePerGas *big.Int // CHANGE(taiko): The base fee per gas for the next block + } +  + // prepareWork constructs the sealing task according to the given parameters, +@@ -1001,10 +1002,17 @@ // Sanity check the timestamp correctness, recap the timestamp + // to parent+1 if the mutation is allowed. + timestamp := genParams.timestamp + if parent.Time >= timestamp { +- if genParams.forceTime { +- return nil, fmt.Errorf("invalid timestamp, parent %d given %d", parent.Time, timestamp) ++ // CHANGE(taiko): block.timestamp == parent.timestamp is allowed in Taiko protocol. ++ if !w.chainConfig.Taiko { ++ if genParams.forceTime { ++ return nil, fmt.Errorf("invalid timestamp, parent %d given %d", parent.Time, timestamp) ++ } ++ timestamp = parent.Time + 1 ++ } else { ++ if parent.Time > timestamp { ++ return nil, fmt.Errorf("invalid timestamp, parent %d given %d", parent.Time, timestamp) ++ } + } +- timestamp = parent.Time + 1 + } + // Construct the sealing block header. + header := &types.Header{ +@@ -1024,10 +1032,14 @@ header.MixDigest = genParams.random + } + // Set baseFee and GasLimit if we are on an EIP-1559 chain + if w.chainConfig.IsLondon(header.Number) { +- header.BaseFee = misc.CalcBaseFee(w.chainConfig, parent) +- if !w.chainConfig.IsLondon(parent.Number) { +- parentGasLimit := parent.GasLimit * w.chainConfig.ElasticityMultiplier() +- header.GasLimit = core.CalcGasLimit(parentGasLimit, w.config.GasCeil) ++ if w.chainConfig.Taiko && genParams.baseFeePerGas != nil { ++ header.BaseFee = genParams.baseFeePerGas ++ } else { ++ header.BaseFee = misc.CalcBaseFee(w.chainConfig, parent) ++ if !w.chainConfig.IsLondon(parent.Number) { ++ parentGasLimit := parent.GasLimit * w.chainConfig.ElasticityMultiplier() ++ header.GasLimit = core.CalcGasLimit(parentGasLimit, w.config.GasCeil) ++ } + } + } + // Run the consensus preparation with the default or customized consensus engine.
+
+ + +
+
+ +
+
+
+ + +
+
+
+ + +
+ +
+

This shows changes to params files.

+
+
+ +
+
+ +
+ +
+

This adds Taiko config values such as chainIds/Network Ids.

+
+
+ +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+37
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/params/taiko_config.go taikoxyz/taiko-geth/params/taiko_config.go +new file mode 100644 +index 0000000000000000000000000000000000000000..21cfc1fd9bc14b13eba6f2206114f2ef3e07257f +--- /dev/null ++++ taikoxyz/taiko-geth/params/taiko_config.go +@@ -0,0 +1,37 @@ ++package params ++ ++import ( ++ "math/big" ++ ++ "github.com/ethereum/go-ethereum/common" ++) ++ ++func u64(val uint64) *uint64 { return &val } ++ ++// Network IDs ++var ( ++ TaikoMainnetNetworkID = big.NewInt(167) ++ TaikoInternal1NetworkID = big.NewInt(167001) ++ TaikoInternal2NetworkID = big.NewInt(167002) ++ SnæfellsjökullNetworkID = big.NewInt(167003) ++ AskjaNetworkID = big.NewInt(167004) ++) ++ ++var TaikoChainConfig = &ChainConfig{ ++ ChainID: TaikoMainnetNetworkID, // Use mainnet network ID by default. ++ HomesteadBlock: common.Big0, ++ EIP150Block: common.Big0, ++ EIP155Block: common.Big0, ++ EIP158Block: common.Big0, ++ ByzantiumBlock: common.Big0, ++ ConstantinopleBlock: common.Big0, ++ PetersburgBlock: common.Big0, ++ IstanbulBlock: common.Big0, ++ BerlinBlock: common.Big0, ++ LondonBlock: common.Big0, ++ ShanghaiTime: u64(0), ++ MergeNetsplitBlock: nil, ++ TerminalTotalDifficulty: common.Big0, ++ TerminalTotalDifficultyPassed: true, ++ Taiko: true, ++}
+
+ + +
+ + +
+ +
+ +
+ +
+
+13
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/params/config.go taikoxyz/taiko-geth/params/config.go +index e04b16673c6b8a360ad9d20e97ff5ddf8e0e07ec..4c137b05eb67210f930d9516c0a9f8557e20289f 100644 +--- ethereum/go-ethereum/params/config.go ++++ taikoxyz/taiko-geth/params/config.go +@@ -351,6 +351,12 @@ MainnetChainConfig.ChainID.String(): "mainnet", + RinkebyChainConfig.ChainID.String(): "rinkeby", + GoerliChainConfig.ChainID.String(): "goerli", + SepoliaChainConfig.ChainID.String(): "sepolia", ++ // CHANGE(taiko): add Taiko network name. ++ TaikoMainnetNetworkID.String(): "Taiko", ++ TaikoInternal1NetworkID.String(): "Taiko Internal 1", ++ TaikoInternal2NetworkID.String(): "Taiko Internal 2", ++ SnæfellsjökullNetworkID.String(): "Taiko Alpha-1 (Snæfellsjökull)", ++ AskjaNetworkID.String(): "Taiko Alpha-2 (Askja)", + } +  + // TrustedCheckpoint represents a set of post-processed trie roots (CHT and +@@ -450,6 +456,10 @@ + // Various consensus engines + Ethash *EthashConfig `json:"ethash,omitempty"` + Clique *CliqueConfig `json:"clique,omitempty"` ++ ++ // CHANGE(taiko): Taiko network flag. ++ Taiko bool `json:"taiko"` ++ Treasure common.Address `json:"treasure"` + } +  + // EthashConfig is the consensus engine configs for proof-of-work based sealing. +@@ -482,6 +492,9 @@ network = "unknown" + } + banner += fmt.Sprintf("Chain ID: %v (%s)\n", c.ChainID, network) + switch { ++ // CHANGE(taiko): print Taiko consensus engine in banner. ++ case c.Taiko: ++ banner += "Consensus: Taiko\n" + case c.Ethash != nil: + if c.TerminalTotalDifficulty == nil { + banner += "Consensus: Ethash (proof-of-work)\n"
+
+ + +
+
+ +
+
+
+ + +
+
+
+ + +
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
+1
+
-1
+
+ +
+
+
diff --git ethereum/go-ethereum/cmd/evm/internal/t8ntool/execution.go taikoxyz/taiko-geth/cmd/evm/internal/t8ntool/execution.go +index 5f796c1d6639786896f988903f9cdc5e542137ec..837437e49cc31658e011f444eb3f9fa9e3e2d9df 100644 +--- ethereum/go-ethereum/cmd/evm/internal/t8ntool/execution.go ++++ taikoxyz/taiko-geth/cmd/evm/internal/t8ntool/execution.go +@@ -163,7 +163,7 @@ misc.ApplyDAOHardFork(statedb) + } +  + for i, tx := range txs { +- msg, err := core.TransactionToMessage(tx, signer, pre.Env.BaseFee) ++ msg, err := core.TransactionToMessage(tx, signer, pre.Env.BaseFee, i == 0) + if err != nil { + log.Warn("rejected tx", "index", i, "hash", tx.Hash(), "error", err) + rejectedTxs = append(rejectedTxs, &rejectedTx{i, err.Error()})
+
+ + +
+ + +
+ +
+ +
+ +
+
+3
+
-3
+
+ +
+
+
diff --git ethereum/go-ethereum/eth/tracers/internal/tracetest/calltrace_test.go taikoxyz/taiko-geth/eth/tracers/internal/tracetest/calltrace_test.go +index 62182e3a82b4a7f8287e5f543b6cf8ccadfcde5d..6f444b943cfa2bba39e444b7d4b94f353c9f1ebe 100644 +--- ethereum/go-ethereum/eth/tracers/internal/tracetest/calltrace_test.go ++++ taikoxyz/taiko-geth/eth/tracers/internal/tracetest/calltrace_test.go +@@ -145,7 +145,7 @@ if err != nil { + t.Fatalf("failed to create call tracer: %v", err) + } + evm := vm.NewEVM(context, txContext, statedb, test.Genesis.Config, vm.Config{Debug: true, Tracer: tracer}) +- msg, err := core.TransactionToMessage(tx, signer, nil) ++ msg, err := core.TransactionToMessage(tx, signer, nil, false) + if err != nil { + t.Fatalf("failed to prepare transaction for tracing: %v", err) + } +@@ -220,7 +220,7 @@ if err := rlp.DecodeBytes(common.FromHex(test.Input), tx); err != nil { + b.Fatalf("failed to parse testcase input: %v", err) + } + signer := types.MakeSigner(test.Genesis.Config, new(big.Int).SetUint64(uint64(test.Context.Number))) +- msg, err := core.TransactionToMessage(tx, signer, nil) ++ msg, err := core.TransactionToMessage(tx, signer, nil, false) + if err != nil { + b.Fatalf("failed to prepare transaction for tracing: %v", err) + } +@@ -314,7 +314,7 @@ if err != nil { + t.Fatalf("failed to create call tracer: %v", err) + } + evm := vm.NewEVM(context, txContext, statedb, params.MainnetChainConfig, vm.Config{Debug: true, Tracer: tracer}) +- msg, err := core.TransactionToMessage(tx, signer, nil) ++ msg, err := core.TransactionToMessage(tx, signer, nil, false) + if err != nil { + t.Fatalf("failed to prepare transaction for tracing: %v", err) + }
+
+ + +
+
diff --git ethereum/go-ethereum/eth/tracers/internal/tracetest/flat_calltrace_test.go taikoxyz/taiko-geth/eth/tracers/internal/tracetest/flat_calltrace_test.go +index 8cd5a42bc0c01bb399efcf73ccfb4fc4b62dcb21..8da1d3dc0162a72cdf8233a2d36fd5145aed4c82 100644 +--- ethereum/go-ethereum/eth/tracers/internal/tracetest/flat_calltrace_test.go ++++ taikoxyz/taiko-geth/eth/tracers/internal/tracetest/flat_calltrace_test.go +@@ -109,7 +109,7 @@ return fmt.Errorf("failed to create call tracer: %v", err) + } + evm := vm.NewEVM(context, txContext, statedb, test.Genesis.Config, vm.Config{Debug: true, Tracer: tracer}) +  +- msg, err := core.TransactionToMessage(tx, signer, nil) ++ msg, err := core.TransactionToMessage(tx, signer, nil, false) + if err != nil { + return fmt.Errorf("failed to prepare transaction for tracing: %v", err) + }
+
+ + +
+ + +
+ +
+ +
+ +
+
+1
+
-1
+
+ +
+
+
diff --git ethereum/go-ethereum/eth/tracers/internal/tracetest/prestate_test.go taikoxyz/taiko-geth/eth/tracers/internal/tracetest/prestate_test.go +index f578e2f0f5fdba8f0e235e0c558ad32d2be923de..86d62642364a1912b4c5fd025e9368fd29820ab3 100644 +--- ethereum/go-ethereum/eth/tracers/internal/tracetest/prestate_test.go ++++ taikoxyz/taiko-geth/eth/tracers/internal/tracetest/prestate_test.go +@@ -115,7 +115,7 @@ if err != nil { + t.Fatalf("failed to create call tracer: %v", err) + } + evm := vm.NewEVM(context, txContext, statedb, test.Genesis.Config, vm.Config{Debug: true, Tracer: tracer}) +- msg, err := core.TransactionToMessage(tx, signer, nil) ++ msg, err := core.TransactionToMessage(tx, signer, nil, false) + if err != nil { + t.Fatalf("failed to prepare transaction for tracing: %v", err) + }
+
+ + +
+
+ +
+
+
+ + +
+
+
+ + +
+
+ +
+
+
+ +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+34
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/.github/workflows/ci.yml taikoxyz/taiko-geth/.github/workflows/ci.yml +new file mode 100644 +index 0000000000000000000000000000000000000000..7c213a35b1b4cffb6a92ec7bec727749a3a1d12d +--- /dev/null ++++ taikoxyz/taiko-geth/.github/workflows/ci.yml +@@ -0,0 +1,34 @@ ++name: "Unit tests" ++ ++on: ++ pull_request: ++ branches: [taiko] ++ push: ++ branches: [taiko] ++ ++jobs: ++ test: ++ runs-on: ubuntu-latest ++ steps: ++ - name: Cancel Previous Runs ++ uses: styfle/cancel-workflow-action@0.11.0 ++ with: ++ access_token: ${{ github.token }} ++ ++ - uses: actions/checkout@v3 ++ with: ++ repository: taikoxyz/taiko-geth ++ ++ - name: Set up Go ++ uses: actions/setup-go@v3 ++ with: ++ go-version: 1.19 ++ ++ - name: Lint ++ run: make lint ++ ++ - name: Test ++ env: ++ ANDROID_HOME: "" ++ TAIKO_TEST: true ++ run: make test
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+47
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/.github/workflows/docker.yml taikoxyz/taiko-geth/.github/workflows/docker.yml +new file mode 100644 +index 0000000000000000000000000000000000000000..b8183c3e538c102f441e32b3f89806ec21c0cbc8 +--- /dev/null ++++ taikoxyz/taiko-geth/.github/workflows/docker.yml +@@ -0,0 +1,47 @@ ++name: "Push docker image to GCR" ++ ++on: ++ push: ++ branches: [taiko] ++ tags: ++ - "v*" ++ ++jobs: ++ push-docker-image: ++ runs-on: ubuntu-latest ++ ++ steps: ++ - name: Checkout ++ uses: actions/checkout@v2 ++ ++ - name: Login to GCR ++ uses: docker/login-action@v2 ++ with: ++ registry: gcr.io ++ username: _json_key ++ password: ${{ secrets.GCR_JSON_KEY }} ++ ++ - name: Set up QEMU ++ uses: docker/setup-qemu-action@v1 ++ ++ - name: Set up Docker Buildx ++ uses: docker/setup-buildx-action@v1 ++ ++ - name: Docker meta ++ id: meta ++ uses: docker/metadata-action@v4 ++ with: ++ images: | ++ gcr.io/evmchain/taiko-geth ++ tags: | ++ type=ref,event=branch ++ type=ref,event=pr ++ type=ref,event=tag ++ type=sha ++ - name: Build and push ++ uses: docker/build-push-action@v2 ++ with: ++ platforms: linux/amd64,linux/arm64 ++ push: true ++ tags: ${{ steps.meta.outputs.tags }} ++ labels: ${{ steps.meta.outputs.labels }}
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+14
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/.github/workflows/lint-pr.yml taikoxyz/taiko-geth/.github/workflows/lint-pr.yml +new file mode 100644 +index 0000000000000000000000000000000000000000..ce00cc6b1e4f71c72816be78d787197a0450419e +--- /dev/null ++++ taikoxyz/taiko-geth/.github/workflows/lint-pr.yml +@@ -0,0 +1,14 @@ ++name: "Lint PR" ++ ++on: ++ pull_request: ++ types: [opened, edited, synchronize, reopened] ++ ++jobs: ++ main: ++ name: Validate PR title ++ runs-on: ubuntu-latest ++ steps: ++ - uses: amannn/action-semantic-pull-request@v5 ++ env: ++ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ + +
+ + +
+ +
+ +
+ +
+
+3
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/Dockerfile taikoxyz/taiko-geth/Dockerfile +index 1951fed8ef87d47d688eaf1543c220d177c78216..9b19139382eabdaabdb0ce312cbc475272132417 100644 +--- ethereum/go-ethereum/Dockerfile ++++ taikoxyz/taiko-geth/Dockerfile +@@ -22,6 +22,9 @@ + RUN apk add --no-cache ca-certificates + COPY --from=builder /go-ethereum/build/bin/geth /usr/local/bin/ +  ++# CHANGE(taiko): copy L2 genesis JSONs into the final image. ++COPY --from=builder /go-ethereum/core/taiko_genesis/*.json /deployments/ ++ + EXPOSE 8545 8546 30303 30303/udp + ENTRYPOINT ["geth"] +
+
+ + +
+ + +
+ +
+ +
+ +
+
+12
+
-2
+
+ +
+
+
diff --git ethereum/go-ethereum/README.md taikoxyz/taiko-geth/README.md +index 34bd8b94c98d5e5ede03bb5395b6ed83b02157ac..77ef022ce53cb07394b20873febfea5a4c8d4f9e 100644 +--- ethereum/go-ethereum/README.md ++++ taikoxyz/taiko-geth/README.md +@@ -1,3 +1,13 @@ ++# taiko-geth ++ ++[![CI](https://github.com/taikoxyz/taiko-geth/actions/workflows/ci.yml/badge.svg)](https://github.com/taikoxyz/taiko-geth/actions/workflows/ci.yml) ++ ++The codebase is based on [go-ethereum v1.11.5](https://github.com/ethereum/go-ethereum/releases/tag/v1.11.5). ++ ++## Tracing changes ++ ++All source code changes by [taiko](https://taiko.xyz) team are commented with `"CHANGE(taiko): ...."`, and the filenames of all additional files have the prefix `"taiko_"` (`taiko_*.go`). ++ + ## Go Ethereum +  + Official Golang execution layer implementation of the Ethereum protocol. +@@ -83,7 +93,7 @@ * Start `geth` in snap sync mode (default, can be changed with the `--syncmode` flag), + causing it to download more data in exchange for avoiding processing the entire history + of the Ethereum network, which is very CPU intensive. + * Start the built-in interactive [JavaScript console](https://geth.ethereum.org/docs/interacting-with-geth/javascript-console), +- (via the trailing `console` subcommand) through which you can interact using [`web3` methods](https://github.com/ChainSafe/web3.js/blob/0.20.7/DOCUMENTATION.md) ++ (via the trailing `console` subcommand) through which you can interact using [`web3` methods](https://github.com/ChainSafe/web3.js/blob/0.20.7/DOCUMENTATION.md) + (note: the `web3` version bundled within `geth` is very old, and not up to date with official docs), + as well as `geth`'s own [management APIs](https://geth.ethereum.org/docs/interacting-with-geth/rpc). + This tool is optional and if you leave it out you can always attach it to an already running +@@ -353,7 +363,7 @@ + ### Contributing to geth.ethereum.org +  + For contributions to the [go-ethereum website](https://geth.ethereum.org), please checkout and raise pull requests against the `website` branch. +-For more detailed instructions please see the `website` branch [README](https://github.com/ethereum/go-ethereum/tree/website#readme) or the ++For more detailed instructions please see the `website` branch [README](https://github.com/ethereum/go-ethereum/tree/website#readme) or the + [contributing](https://geth.ethereum.org/docs/developers/geth-developer/contributing) page of the website. +  + ## License
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+117
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/core/taiko_genesis/askja.json taikoxyz/taiko-geth/core/taiko_genesis/askja.json +new file mode 100644 +index 0000000000000000000000000000000000000000..24a016d8300dc14b6151fe35b12342c9938b9fef +--- /dev/null ++++ taikoxyz/taiko-geth/core/taiko_genesis/askja.json +@@ -0,0 +1,117 @@ ++{ ++ "0x6C671d2C641CE1b99F17755fd45441fa4326C3B1": { ++ "balance": "0xfffffffffffffacbbb7ca13a7fffffff" ++ }, ++ "0x09d4121CD4123F039390c7f5e99b15BED5e07222": { ++ "balance": "0xfffffffffffffacbbb7ca13a7fffffff" ++ }, ++ "0x9E5da4B6D25Ee5A68aa8c29B6B87C82f7F463893": { ++ "balance": "0xfffffffffffffacbbb7ca13a7fffffff" ++ }, ++ "0xB51f0f2bdCbf6cfabB35239921A5c672519F74ba": { ++ "contractName": "LibTrieProof", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063960304391461003a575b600080fd5b61004d610048366004611938565b610061565b604051901515815260200160405180910390f35b6000808061007184860186611acc565b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c901b166020820152919350915060009081906100c790603401604051602081830303815290604052858d610197565b915091508161011d5760405162461bcd60e51b815260206004820152601960248201527f4c54503a696e76616c6964206163636f756e742070726f6f660000000000000060448201526064015b60405180910390fd5b6000610128826101c0565b9050600061014f8260028151811061014257610142611b30565b60200260200101516101f9565b90506101868b60405160200161016791815260200190565b60405160208183030381529060405261017f8c6102fc565b878461030f565b9d9c50505050505050505050505050565b6000606060006101a686610329565b90506101b381868661035b565b9250925050935093915050565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906101f390610436565b92915050565b60006021826000015111156102505760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610114565b600080600061025e85610635565b91945092509050600081600181111561027957610279611b5f565b146102c65760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610114565b60008386602001516102d89190611bbd565b805190915060208410156102f25760208490036101000a90045b9695505050505050565b60606101f361030a83610986565b610aea565b60008061031b86610329565b90506102f281868686610b59565b6060818051906020012060405160200161034591815260200190565b6040516020818303038152906040529050919050565b60006060600061036a85610b96565b9050600080600061037c848a89610c8f565b815192955090935091501580806103905750815b6103dc5760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610114565b6000816103f85760405180602001604052806000815250610424565b61042486610407600188611bd0565b8151811061041757610417611b30565b6020026020010151611144565b919b919a509098505050505050505050565b606060008061044484610635565b9193509091506001905081600181111561046057610460611b5f565b146104ad5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610114565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816104c65790505090506000835b865181101561062a57602082106105725760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201527f7374206c656e6774682e000000000000000000000000000000000000000000006064820152608401610114565b6000806105af6040518060400160405280858c600001516105939190611bd0565b8152602001858c602001516105a89190611bbd565b9052610635565b5091509150604051806040016040528083836105cb9190611bbd565b8152602001848b602001516105e09190611bbd565b8152508585815181106105f5576105f5611b30565b602090810291909101015261060b600185611bbd565b93506106178183611bbd565b6106219084611bbd565b925050506104f3565b508152949350505050565b60008060008084600001511161068d5760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610114565b6020840151805160001a607f81116106b257600060016000945094509450505061097f565b60b7811161072e5760006106c7608083611bd0565b90508087600001511161071c5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610114565b6001955093506000925061097f915050565b60bf811161081d57600061074360b783611bd0565b9050808760000151116107985760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610114565b600183015160208290036101000a90046107b28183611bbd565b8851116108015760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610114565b61080c826001611bbd565b965094506000935061097f92505050565b60f7811161089857600061083260c083611bd0565b9050808760000151116108875760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610114565b60019550935084925061097f915050565b60006108a560f783611bd0565b9050808760000151116108fa5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610114565b600183015160208290036101000a90046109148183611bbd565b8851116109635760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420524c50206c6f6e67206c6973742e000000000000000000006044820152606401610114565b61096e826001611bbd565b965094506001935061097f92505050565b9193909250565b606060008260405160200161099d91815260200190565b604051602081830303815290604052905060005b6020811015610a0a578181815181106109cc576109cc611b30565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016600003610a0a57610a0381611be3565b90506109b1565b6000610a17826020611bd0565b67ffffffffffffffff811115610a2f57610a2f6119f2565b6040519080825280601f01601f191660200182016040528015610a59576020820181803683370190505b50905060005b8151811015610ae1578383610a7381611be3565b945081518110610a8557610a85611b30565b602001015160f81c60f81b828281518110610aa257610aa2611b30565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610ada81611be3565b9050610a5f565b50949350505050565b60608082516001148015610b185750608083600081518110610b0e57610b0e611b30565b016020015160f81c105b15610b245750816101f3565b610b308351608061116b565b83604051602001610b42929190611c4b565b604051602081830303815290604052905092915050565b6000806000610b6987868661035b565b91509150818015610b8b57508051602080830191909120875191880191909120145b979650505050505050565b60606000610ba3836101c0565b90506000815167ffffffffffffffff811115610bc157610bc16119f2565b604051908082528060200260200182016040528015610c0657816020015b6040805180820190915260608082526020820152815260200190600190039081610bdf5790505b50905060005b8251811015610c87576000610c39848381518110610c2c57610c2c611b30565b602002602001015161135d565b90506040518060400160405280610c4f836101c0565b815260200182815250838381518110610c6a57610c6a611b30565b60200260200101819052505080610c8090611be3565b9050610c0c565b509392505050565b600060606000806000610ca1876113ed565b90506000869050600080610cc8604051806040016040528060608152602001606081525090565b60005b8c51811015611100578c8181518110610ce657610ce6611b30565b602002602001015191508284610cfc9190611bbd565b9350610d09600188611bbd565b965083600003610d72578482602001518051906020012014610d6d5760405162461bcd60e51b815260206004820152601160248201527f496e76616c696420726f6f7420686173680000000000000000000000000000006044820152606401610114565b610e34565b602082602001515110610dd9578482602001518051906020012014610d6d5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610114565b84610de7836020015161156e565b14610e345760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610114565b610e4060106001611c68565b60ff1682600001515103610eae5785518414611100576000868581518110610e6a57610e6a611b30565b01602001518351805160f89290921c925060009183908110610e8e57610e8e611b30565b60200260200101519050610ea181611596565b96506001945050506110f0565b8151517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016110a8576000610ee2836115cc565b9050600081600081518110610ef957610ef9611b30565b016020015160f81c90506000610f10600283611cb0565b610f1b906002611cd2565b90506000610f2c848360ff166115f0565b90506000610f3a8b8a6115f0565b90506000610f488383611626565b905060ff851660021480610f5f575060ff85166003145b15610fb557808351148015610f745750808251145b15610f8657610f83818b611bbd565b99505b507f80000000000000000000000000000000000000000000000000000000000000009950611100945050505050565b60ff85161580610fc8575060ff85166001145b1561103a578251811461100457507f80000000000000000000000000000000000000000000000000000000000000009950611100945050505050565b61102b886000015160018151811061101e5761101e611b30565b6020026020010151611596565b9a5097506110f0945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e2060448201527f70726566697800000000000000000000000000000000000000000000000000006064820152608401610114565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610114565b6110f981611be3565b9050610ccb565b507f800000000000000000000000000000000000000000000000000000000000000084148661112f87866115f0565b909e909d50909b509950505050505050505050565b805180516060916101f39161115b90600190611bd0565b81518110610c2c57610c2c611b30565b60608060388410156111ea57604080516001808252818301909252906020820181803683370190505090506111a08385611c68565b60f81b816000815181106111b6576111b6611b30565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611356565b600060015b6111f98187611ceb565b1561121c5761120782611be3565b915061121561010082611cff565b90506111ef565b611227826001611bbd565b67ffffffffffffffff81111561123f5761123f6119f2565b6040519080825280601f01601f191660200182016040528015611269576020820181803683370190505b5092506112768583611c68565b611281906037611c68565b60f81b8360008151811061129757611297611b30565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b818111611353576101006112df8284611bd0565b6112eb90610100611e36565b6112f59088611ceb565b6112ff9190611e42565b60f81b83828151811061131457611314611b30565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061134c81611be3565b90506112cb565b50505b9392505050565b6060600080600061136d85610635565b91945092509050600081600181111561138857611388611b5f565b146113d55760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610114565b6113e4856020015184846116d0565b95945050505050565b60606000825160026113ff9190611cff565b67ffffffffffffffff811115611417576114176119f2565b6040519080825280601f01601f191660200182016040528015611441576020820181803683370190505b50905060005b835181101561156757600484828151811061146457611464611b30565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c82611499836002611cff565b815181106114a9576114a9611b30565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060108482815181106114ec576114ec611b30565b01602001516114fe919060f81c611cb0565b60f81b8261150d836002611cff565b611518906001611bbd565b8151811061152857611528611b30565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061156081611be3565b9050611447565b5092915050565b600060208251101561158257506020015190565b818060200190518101906101f39190611e56565b600060606020836000015110156115b7576115b083611779565b90506115c3565b6115c08361135d565b90505b6113568161156e565b60606101f36115eb8360000151600081518110610c2c57610c2c611b30565b6113ed565b60608251821061160f57506040805160208101909152600081526101f3565b61135683838486516116219190611bd0565b611784565b6000805b80845111801561163a5750808351115b80156116bb575082818151811061165357611653611b30565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684828151811061169257611692611b30565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b15611356576116c981611be3565b905061162a565b606060008267ffffffffffffffff8111156116ed576116ed6119f2565b6040519080825280601f01601f191660200182016040528015611717576020820181803683370190505b509050805160000361172a579050611356565b8484016020820160005b8581101561174c578281015182820152602001611734565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b60606101f382611922565b60608161179281601f611bbd565b10156117e05760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610114565b826117eb8382611bbd565b10156118395760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610114565b6118438284611bbd565b845110156118935760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610114565b6060821580156118b25760405191506000825260208201604052610ae1565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156118eb5780518352602092830192016118d3565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166040525050949350505050565b60606101f38260200151600084600001516116d0565b60008060008060008060a0878903121561195157600080fd5b86359550602087013573ffffffffffffffffffffffffffffffffffffffff8116811461197c57600080fd5b94506040870135935060608701359250608087013567ffffffffffffffff808211156119a757600080fd5b818901915089601f8301126119bb57600080fd5b8135818111156119ca57600080fd5b8a60208285010111156119dc57600080fd5b6020830194508093505050509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611a3257600080fd5b813567ffffffffffffffff80821115611a4d57611a4d6119f2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611a9357611a936119f2565b81604052838152866020858801011115611aac57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215611adf57600080fd5b823567ffffffffffffffff80821115611af757600080fd5b611b0386838701611a21565b93506020850135915080821115611b1957600080fd5b50611b2685828601611a21565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156101f3576101f3611b8e565b818103818111156101f3576101f3611b8e565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c1457611c14611b8e565b5060010190565b6000815160005b81811015611c3c5760208185018101518683015201611c22565b50600093019283525090919050565b6000611c60611c5a8386611c1b565b84611c1b565b949350505050565b60ff81811683821601908111156101f3576101f3611b8e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600060ff831680611cc357611cc3611c81565b8060ff84160691505092915050565b60ff82811682821603908111156101f3576101f3611b8e565b600082611cfa57611cfa611c81565b500490565b80820281158282048414176101f3576101f3611b8e565b600181815b80851115611d6f57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611d5557611d55611b8e565b80851615611d6257918102915b93841c9390800290611d1b565b509250929050565b600082611d86575060016101f3565b81611d93575060006101f3565b8160018114611da95760028114611db357611dcf565b60019150506101f3565b60ff841115611dc457611dc4611b8e565b50506001821b6101f3565b5060208310610133831016604e8410600b8410161715611df2575081810a6101f3565b611dfc8383611d16565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611e2e57611e2e611b8e565b029392505050565b60006113568383611d77565b600082611e5157611e51611c81565b500690565b600060208284031215611e6857600080fd5b505191905056fea264697066735822122022f5cdb126db09c3c43e2fa6a17aab0115cbc5363507839bf8f77203759fb3af64736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x7C96157d384E99B04fE912f7E8Fa6d032073a0DD": { ++ "contractName": "LibBridgeRetry", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220032710b16720cdb7bfee28fecace22d2e4fd9f5731db2aaefd90be3a941623a364736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x13E419A8F4A246Fe22F3Acc054354258B068A7A3": { ++ "contractName": "LibBridgeProcess", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d4832ed4ef0b67bed2c2d982e30c1a789312b6584967438335056c5c4005497e64736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x658d9Ff6257D5254FC536d29641E43144Fbe8d8C": { ++ "contractName": "LibTxDecoder", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80634eb7f19914610045578063a946c1de1461006e575b600080fd5b61005861005336600461175f565b61008e565b60405161006591906118cf565b60405180910390f35b61008161007c366004611988565b610214565b6040516100659190611a61565b604080516020810190915260608152811561020d5760006100e484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104d992505050565b90506000815167ffffffffffffffff81111561010257610102611959565b60405190808252806020026020018201604052801561019757816020015b610184604051806101000160405280600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160008152602001600060ff1681526020016000815260200160008152602001606081525090565b8152602001906001900390816101205790505b50905060005b82518110156101fa576101cc8761007c8584815181106101bf576101bf611a74565b6020026020010151610512565b8282815181106101de576101de611a74565b6020026020010181905250806101f390611ad2565b905061019d565b5060408051602081019091529081529150505b9392505050565b610278604051806101000160405280600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160008152602001600060ff1681526020016000815260200160008152602001606081525090565b602082015160e0820183905260001a60c0811080159061029c575060fe8160ff1611155b156103235760008083526102af846104d9565b905060006102bd86836105a2565b60408082015160608088019190915282015173ffffffffffffffffffffffffffffffffffffffff16602087015260c08083015160ff16608088015260e083015160a080890191909152610100840151918801919091529091015190850152506104d29050565b607f8160ff161161048a5760ff8116825260006103496103448560016107ba565b6104d9565b90508160ff166001036103c0576000610361826107f0565b6060808201519086015260808082015173ffffffffffffffffffffffffffffffffffffffff16602087015261010082015160ff169086015261012081015160a086015261014081015160c0808701919091520151604085015250610484565b825160ff166002036104375760006103d782610a31565b608080820151606087015260a08083015173ffffffffffffffffffffffffffffffffffffffff16602088015261012083015160ff16918701919091526101408201519086015261016081015160c086015260e00151604085015250610484565b60405162461bcd60e51b815260206004820152600e60248201527f696e76616c69642074785479706500000000000000000000000000000000000060448201526064015b60405180910390fd5b506104d2565b60405162461bcd60e51b815260206004820152600e60248201527f696e76616c696420707265666978000000000000000000000000000000000000604482015260640161047b565b5092915050565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061050c90610c86565b92915050565b6060600080600061052285610e85565b91945092509050600081600181111561053d5761053d611b0a565b1461058a5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e0000000000000000604482015260640161047b565b610599856020015184846111d6565b95945050505050565b61060a604051806101200160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001600060ff16815260200160008152602001600081525090565b815160091461065b5760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206974656d73206c656e677468000000000000000000000000604482015260640161047b565b61067e8260008151811061067157610671611a74565b602002602001015161127f565b81528151610699908390600190811061067157610671611a74565b602082015281516106b7908390600290811061067157610671611a74565b604082015281516106e290839060039081106106d5576106d5611a74565b602002602001015161128a565b73ffffffffffffffffffffffffffffffffffffffff1660608201528151610716908390600490811061067157610671611a74565b6080820152815161073490839060059081106101bf576101bf611a74565b60a0820152610744836002611b39565b61075a8360068151811061067157610671611a74565b6107649190611b50565b61076f906023611b63565b60ff1660c08201528151610790908390600790811061067157610671611a74565b60e082015281516107ae908390600890811061067157610671611a74565b61010082015292915050565b6060825182106107d9575060408051602081019091526000815261050c565b61020d83838486516107eb9190611b50565b6112f8565b61086660405180610160016040528060008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016060815260200160608152602001600060ff16815260200160008152602001600081525090565b8151600b146108b75760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206974656d73206c656e677468000000000000000000000000604482015260640161047b565b6108cd8260008151811061067157610671611a74565b815281516108e8908390600190811061067157610671611a74565b60208201528151610906908390600290811061067157610671611a74565b60408201528151610924908390600390811061067157610671611a74565b6060820152815161094290839060049081106106d5576106d5611a74565b73ffffffffffffffffffffffffffffffffffffffff1660808201528151610976908390600590811061067157610671611a74565b60a0820152815161099490839060069081106101bf576101bf611a74565b8160c001819052506109c76109c2836007815181106109b5576109b5611a74565b6020026020010151610c86565b611497565b8160e001819052506109e58260088151811061067157610671611a74565b60ff166101008201528151610a07908390600990811061067157610671611a74565b6101208201528151610a26908390600a90811061067157610671611a74565b610140820152919050565b610aae6040518061018001604052806000815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016060815260200160608152602001600060ff16815260200160008152602001600081525090565b8151600c14610aff5760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206974656d73206c656e677468000000000000000000000000604482015260640161047b565b610b158260008151811061067157610671611a74565b81528151610b30908390600190811061067157610671611a74565b60208201528151610b4e908390600290811061067157610671611a74565b60408201528151610b6c908390600390811061067157610671611a74565b60608201528151610b8a908390600490811061067157610671611a74565b60808201528151610ba890839060059081106106d5576106d5611a74565b73ffffffffffffffffffffffffffffffffffffffff1660a08201528151610bdc908390600690811061067157610671611a74565b60c08201528151610bfa90839060079081106101bf576101bf611a74565b8160e00181905250610c1b6109c2836008815181106109b5576109b5611a74565b816101000181905250610c3a8260098151811061067157610671611a74565b60ff166101208201528151610c5c908390600a90811061067157610671611a74565b6101408201528151610c7b908390600b90811061067157610671611a74565b610160820152919050565b6060600080610c9484610e85565b91935090915060019050816001811115610cb057610cb0611b0a565b14610cfd5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e000000000000000000604482015260640161047b565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081610d165790505090506000835b8651811015610e7a5760208210610dc25760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201527f7374206c656e6774682e00000000000000000000000000000000000000000000606482015260840161047b565b600080610dff6040518060400160405280858c60000151610de39190611b50565b8152602001858c60200151610df89190611b63565b9052610e85565b509150915060405180604001604052808383610e1b9190611b63565b8152602001848b60200151610e309190611b63565b815250858581518110610e4557610e45611a74565b6020908102919091010152610e5b600185611b63565b9350610e678183611b63565b610e719084611b63565b92505050610d43565b508152949350505050565b600080600080846000015111610edd5760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e0000000000000000604482015260640161047b565b6020840151805160001a607f8111610f025760006001600094509450945050506111cf565b60b78111610f7e576000610f17608083611b50565b905080876000015111610f6c5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e00000000000000604482015260640161047b565b600195509350600092506111cf915050565b60bf811161106d576000610f9360b783611b50565b905080876000015111610fe85760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e00604482015260640161047b565b600183015160208290036101000a90046110028183611b63565b8851116110515760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e0000000000000000604482015260640161047b565b61105c826001611b63565b96509450600093506111cf92505050565b60f781116110e857600061108260c083611b50565b9050808760000151116110d75760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e000000000000000000604482015260640161047b565b6001955093508492506111cf915050565b60006110f560f783611b50565b90508087600001511161114a5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e000000604482015260640161047b565b600183015160208290036101000a90046111648183611b63565b8851116111b35760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420524c50206c6f6e67206c6973742e00000000000000000000604482015260640161047b565b6111be826001611b63565b96509450600193506111cf92505050565b9193909250565b606060008267ffffffffffffffff8111156111f3576111f3611959565b6040519080825280601f01601f19166020018201604052801561121d576020820181803683370190505b509050805160000361123057905061020d565b8484016020820160005b8581101561125257828101518282015260200161123a565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b600061050c8261165c565b805160009060010361129e57506000919050565b81516015146112ef5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e000000000000604482015260640161047b565b61050c8261127f565b60608161130681601f611b63565b10156113545760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161047b565b8261135f8382611b63565b10156113ad5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161047b565b6113b78284611b63565b845110156114075760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161047b565b606082158015611426576040519150600082526020820160405261148e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561145f578051835260209283019201611447565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6060815167ffffffffffffffff8111156114b3576114b3611959565b6040519080825280602002602001820160405280156114f957816020015b6040805180820190915260008152606060208201528152602001906001900390816114d15790505b50905060005b825181101561165657600061151f8483815181106109b5576109b5611a74565b90506000611539826000815181106106d5576106d5611a74565b90506000611553836001815181106109b5576109b5611a74565b90506000815167ffffffffffffffff81111561157157611571611959565b60405190808252806020026020018201604052801561159a578160200160208202803683370190505b50905060005b82518110156115f8576115cb8382815181106115be576115be611a74565b602002602001015161165c565b8282815181106115dd576115dd611a74565b60209081029190910101526115f181611ad2565b90506115a0565b5060405180604001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018281525086868151811061163657611636611a74565b6020026020010181905250505050508061164f90611ad2565b90506114ff565b50919050565b60006021826000015111156116b35760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e000000000000604482015260640161047b565b60008060006116c185610e85565b9194509250905060008160018111156116dc576116dc611b0a565b146117295760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e000000000000604482015260640161047b565b600083866020015161173b9190611b63565b805190915060208410156117555760208490036101000a90045b9695505050505050565b60008060006040848603121561177457600080fd5b83359250602084013567ffffffffffffffff8082111561179357600080fd5b818601915086601f8301126117a757600080fd5b8135818111156117b657600080fd5b8760208285010111156117c857600080fd5b6020830194508093505050509250925092565b6000815180845260005b81811015611801576020818501810151868301820152016117e5565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b600061010060ff835116845273ffffffffffffffffffffffffffffffffffffffff60208401511660208501526040830151816040860152611882828601826117db565b9150506060830151606085015260808301516118a3608086018260ff169052565b5060a083015160a085015260c083015160c085015260e083015184820360e086015261059982826117db565b60006020808352604083018451828386015281815180845260608701915060608160051b8801019350848301925060005b8181101561194c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088860301835261193a85855161183f565b94509285019291850191600101611900565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561199b57600080fd5b82359150602083013567ffffffffffffffff808211156119ba57600080fd5b818501915085601f8301126119ce57600080fd5b8135818111156119e0576119e0611959565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611a2657611a26611959565b81604052828152886020848701011115611a3f57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60208152600061020d602083018461183f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b0357611b03611aa3565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b808202811582820484141761050c5761050c611aa3565b8181038181111561050c5761050c611aa3565b8082018082111561050c5761050c611aa356fea2646970667358221220977255eb91ee0bc83da7d64c4ccd4610769dfef0575766e3b1d355d99af47f7d64736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000006": { ++ "contractName": "AddressManager", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000019b4f9c381c7927fe33d853e48b560141a380c44", ++ "0xfb2e436f19bdbec4da734cf0919b4423eb4c7a14d4f249db9211e6070a6a653d": "0x0000000000000000000000000000777700000000000000000000000000000001", ++ "0x0aa3204ceb554139e74fc959b75d2c0961a8274eee43ddfb4c452fa0d56e55c3": "0x0000000000000000000000000000777700000000000000000000000000000004", ++ "0xc19602c1e190099bda9f0217b29220086721ab0cc7df1664d5392c1062c6d6a0": "0x0000000000000000000000000000777700000000000000000000000000000002", ++ "0x2230df1245aba8de92051ca9155400ea7ed51d37f62ecf6ceb23a360b8066ac7": "0x0000000000000000000000000000777700000000000000000000000000000003", ++ "0x61566bd8aa85fc0cba510177307735c5887d55659d67a1f0f76bfcaa381cbca5": "0x0000000000000000000000000000777700000000000000000000000000000007" ++ }, ++ "code": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063bf40fac111610050578063bf40fac1146100d7578063e1c7392a14610115578063f2fde38b1461011d57600080fd5b8063715018a6146100775780638da5cb5b146100815780639b2ea4bd146100c4575b600080fd5b61007f610130565b005b60335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f6100d2366004610796565b610144565b61009b6100e53660046107e4565b805160209182012060009081526065909152604090205473ffffffffffffffffffffffffffffffffffffffff1690565b61007f610216565b61007f61012b366004610821565b6103ad565b610138610461565b61014260006104e2565b565b61014c610461565b815160208084019190912060008181526065909252604091829020805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff00000000000000000000000000000000000000008316179092559251919216906101b9908590610843565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff808716845284166020840152917f9416a153a346f93d95f94b064ae3f148b6460473c6e82b3f9fc2521b873fcd6c910160405180910390a250505050565b600054610100900460ff16158080156102365750600054600160ff909116105b806102505750303b158015610250575060005460ff166001145b6102e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561033f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610347610559565b80156103aa57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6103b5610461565b73ffffffffffffffffffffffffffffffffffffffff8116610458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102d8565b6103aa816104e2565b60335473ffffffffffffffffffffffffffffffffffffffff163314610142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102d8565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166105f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102d8565b610142600054610100900460ff1661068a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102d8565b610142336104e2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126106d357600080fd5b813567ffffffffffffffff808211156106ee576106ee610693565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561073457610734610693565b8160405283815286602085880101111561074d57600080fd5b836020870160208301376000602085830101528094505050505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461079157600080fd5b919050565b600080604083850312156107a957600080fd5b823567ffffffffffffffff8111156107c057600080fd5b6107cc858286016106c2565b9250506107db6020840161076d565b90509250929050565b6000602082840312156107f657600080fd5b813567ffffffffffffffff81111561080d57600080fd5b610819848285016106c2565b949350505050565b60006020828403121561083357600080fd5b61083c8261076d565b9392505050565b6000825160005b81811015610864576020818601810151858301520161084a565b50600092019182525091905056fea2646970667358221220d05082af8e0e2cbc9ddc35de7e94b4f45055b3cbd8e60239532b1697a91218c864736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000001": { ++ "contractName": "TaikoL2", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000032": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000777700000000000000000000000000000006", ++ "0x0000000000000000000000000000000000000000000000000000000000000035": "0x68ce81c266ebf073d5146e3a6a2145d4d2c1ed50490002a530826beee087fd9e" ++ }, ++ "code": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c8063975e09a011610076578063c3f909d41161005b578063c3f909d41461019e578063c7b96908146102dd578063ee82ac5e146102e657600080fd5b8063975e09a014610176578063a0ca2d081461018b57600080fd5b806325bf86f2116100a757806325bf86f2146101135780633ab76e9f146101415780635155ce9f1461015f57600080fd5b80630ca4dffd146100c35780631be2bfa714610100575b600080fd5b6100d66100d1366004612415565b6102f9565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d661010e366004612463565b61030f565b6101336101213660046124ba565b60009081526034602052604090205490565b6040519081526020016100f7565b60005473ffffffffffffffffffffffffffffffffffffffff166100d6565b603654600090815260346020526040902054610133565b6101896101843660046124d3565b610326565b005b610189610199366004612560565b61040f565b6101a6610485565b6040516100f79190815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261018080830151908201526101a080830151908201526101c080830151908201526101e080830151908201526102008083015167ffffffffffffffff90811691830191909152610220808401518216908301526102408084015182169083015261026080840151821690830152610280808401518216908301526102a080840151909116908201526102c0808301511515908201526102e080830151151590820152610300918201511515918101919091526103200190565b61013360365481565b6101336102f43660046124ba565b610596565b6000610306468484610677565b90505b92915050565b600061031c848484610677565b90505b9392505050565b3371777735367b36bc9b61c50022d9d0700db4ec14610371576040517f6494e9f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3a156103a9576040517f497d3b1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006103b3610485565b90506103c281868686866107ad565b806102e00151156103d5576103d5610a53565b6103df8585610b5e565b6040517f64b299ff9f8ba674288abb53380419048a4271dda03b837ecba6b40e6ddea4a290600090a25050505050565b6000610419610485565b9050806102e001511561042e5761042e610a53565b6036839055600083815260346020526040908190208390555183907f58313b60ec6c5bfc381e52f0de3ede0faac3cdffea26f7d6bcc3d09b61018691906104789085815260200190565b60405180910390a2505050565b61058660405180610320016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581526020016000151581526020016000151581525090565b61058e610b80565b468152919050565b60004382106105a757506000919050565b43821080156105c157506105bd610100436125b1565b8210155b156105cb57504090565b5060009081526033602052604090205490565b919050565b73ffffffffffffffffffffffffffffffffffffffff8116610630576040517f9a109b0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008061068385610d60565b846040516020016106959291906125e8565b60408051601f19818403018152908290526000547fbf40fac100000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff169063bf40fac1906106fa908490600401612640565b602060405180830381865afa158015610717573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073b9190612697565b9150826107a55760405173ffffffffffffffffffffffffffffffffffffffff831615159061076d9083906020016126b2565b604051602081830303815290604052906107a35760405162461bcd60e51b815260040161079a9190612640565b60405180910390fd5b505b509392505050565b60e08501518311156107c8576107c38282610e1e565b610a4c565b84516040517f4eb7f19900000000000000000000000000000000000000000000000000000000815273658d9Ff6257D5254FC536d29641E43144Fbe8d8C91634eb7f1999161081d9190889088906004016126f7565b600060405180830381865af492505050801561085b57506040513d6000823e601f3d908101601f19168201604052610858919081019061278b565b60015b61089f573d808015610889576040519150601f19603f3d011682016040523d82523d6000602084013e61088e565b606091505b506108998383610e1e565b50610a4c565b60c086015181515111156108b7576108998383610e1e565b8560a001516108c582610e79565b11156108d5576108998383610e1e565b8051518210610910576040517fb431f3fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000816000015183815181106109285761092861292b565b60200260200101519050600160028111156109455761094561295a565b8460028111156109575761095761295a565b036109bf57865160009061096b9083610ecb565b73ffffffffffffffffffffffffffffffffffffffff16146109b8576040517ff8092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050610a4c565b60028460028111156109d3576109d361295a565b03610a1a578661010001518160600151106109b8576040517ff8092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f9343055600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b610a5b6122bb565b434660025b6101008111158015610a725750808310155b15610abe57610a8181846125b1565b408460ff610a8f84876125b1565b610a9991906129b8565b60ff8110610aa957610aa961292b565b6020020152610ab7816129cc565b9050610a60565b506000610acc6001846125b1565b90508040610add8383600088610f5c565b60355414610b17576040517fd719258d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8085610b2460ff856129b8565b60ff8110610b3457610b3461292b565b6020020152610b468385600088610f5c565b60355560009182526033602052604090912055505050565b60008282604051610b70929190612a04565b6040518091039020905092915050565b610c8160405180610320016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581526020016000151581526020016000151581525090565b50604080516103208101825262028c5c81526108016020820152602891810191909152600a606082015260006080820152625b8d8060a0820152604f60c08201526201d4c060e08201526152086101008201526203d090610120820152620e71d9610140820152606461016082015260196101808201526104006101a082018190526101c082018190526101e0820152610190610200820181905260c8610220830152610240820152603c61026082015261070861028082015262278d006102a082015260016102c082018190526102e0820181905261030082015290565b60606000610d6d83610f95565b600101905060008167ffffffffffffffff811115610d8d57610d8d6122da565b6040519080825280601f01601f191660200182016040528015610db7576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610dc157509392505050565b6000826002811115610e3257610e3261295a565b141580610e3e57508015155b15610e75576040517f11abdc5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b8051600090815b8151811015610ec457818181518110610e9b57610e9b61292b565b60200260200101516060015183610eb29190612a14565b9250610ebd816129cc565b9050610e80565b5050919050565b60006001610ed98484611077565b6080840151610ee990601b612a27565b60a085015160c0860151604080516000815260200190819052610f28949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015610f4a573d6000803e3d6000fd5b5050604051601f190151949350505050565b600084848484604051602001610f759493929190612a40565b604051602081830303815290604052805190602001209050949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610fde577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061100a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061102857662386f26fc10000830492506010015b6305f5e1008310611040576305f5e100830492506008015b612710831061105457612710830492506004015b60648310611066576064830492506002015b600a83106103095760010192915050565b60006060826000015160ff1660000361109e576110978360e00151611465565b90506110b8565b6110b56110b08460e001516001611498565b611465565b90505b825160ff1660000361111a5780516009146111155760405162461bcd60e51b815260206004820152601160248201527f696e76616c696420726c70206974656d73000000000000000000000000000000604482015260640161079a565b61121c565b825160ff16600103611177578051600b146111155760405162461bcd60e51b815260206004820152601160248201527f696e76616c696420726c70206974656d73000000000000000000000000000000604482015260640161079a565b825160ff166002036111d4578051600c146111155760405162461bcd60e51b815260206004820152601160248201527f696e76616c696420726c70206974656d73000000000000000000000000000000604482015260640161079a565b60405162461bcd60e51b815260206004820152600e60248201527f696e76616c696420747854797065000000000000000000000000000000000000604482015260640161079a565b825160009060ff161561123c576003825161123791906125b1565b61123f565b81515b67ffffffffffffffff811115611257576112576122da565b60405190808252806020026020018201604052801561128a57816020015b60608152602001906001900390816112755790505b50905060005b815181101561141257845160ff16158015906112b85750600182516112b591906125b1565b81145b15611301576112df8382815181106112d2576112d261292b565b60200260200101516114ce565b8282815181106112f1576112f161292b565b6020026020010181905250611402565b61132b6113268483815181106113195761131961292b565b60200260200101516114d9565b611569565b82828151811061133d5761133d61292b565b6020908102919091010152845160ff1615801561136657506004825161136391906125b1565b81145b1561140257611374866115d8565b82611380836001612a14565b815181106113905761139061292b565b60200260200101819052506113a560006115e6565b826113b1836002612a14565b815181106113c1576113c161292b565b60200260200101819052506113d660006115e6565b826113e2836003612a14565b815181106113f2576113f261292b565b6020026020010181905250611412565b61140b816129cc565b9050611290565b50600061141e826115fe565b855190915060ff16156114545784516040516114429160f81b908390602001612a8b565b60405160208183030381529060405290505b805160209091012095945050505050565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061030990611642565b6060825182106114b75750604080516020810190915260008152610309565b61030683838486516114c991906125b1565b611841565b6060610309826119c2565b606060008060006114e9856119d8565b9194509250905060008160018111156115045761150461295a565b146115515760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e0000000000000000604482015260640161079a565b61156085602001518484611d29565b95945050505050565b60608082516001148015611597575060808360008151811061158d5761158d61292b565b016020015160f81c105b156115a3575081610309565b6115af83516080611dd2565b836040516020016115c1929190612ad3565b604051602081830303815290604052905092915050565b606061030961132683611fba565b60606103096113268367ffffffffffffffff16611fba565b6060600061160b83612115565b9050611619815160c0611dd2565b8160405160200161162b929190612ad3565b604051602081830303815290604052915050919050565b6060600080611650846119d8565b9193509091506001905081600181111561166c5761166c61295a565b146116b95760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e000000000000000000604482015260640161079a565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816116d25790505090506000835b8651811015611836576020821061177e5760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201527f7374206c656e6774682e00000000000000000000000000000000000000000000606482015260840161079a565b6000806117bb6040518060400160405280858c6000015161179f91906125b1565b8152602001858c602001516117b49190612a14565b90526119d8565b5091509150604051806040016040528083836117d79190612a14565b8152602001848b602001516117ec9190612a14565b8152508585815181106118015761180161292b565b6020908102919091010152611817600185612a14565b93506118238183612a14565b61182d9084612a14565b925050506116ff565b508152949350505050565b60608161184f81601f612a14565b101561189d5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161079a565b826118a88382612a14565b10156118f65760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161079a565b6119008284612a14565b845110156119505760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161079a565b60608215801561196f57604051915060008252602082016040526119b9565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156119a8578051835260209283019201611990565b5050858452601f01601f1916604052505b50949350505050565b6060610309826020015160008460000151611d29565b600080600080846000015111611a305760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e0000000000000000604482015260640161079a565b6020840151805160001a607f8111611a55576000600160009450945094505050611d22565b60b78111611ad1576000611a6a6080836125b1565b905080876000015111611abf5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e00000000000000604482015260640161079a565b60019550935060009250611d22915050565b60bf8111611bc0576000611ae660b7836125b1565b905080876000015111611b3b5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e00604482015260640161079a565b600183015160208290036101000a9004611b558183612a14565b885111611ba45760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e0000000000000000604482015260640161079a565b611baf826001612a14565b9650945060009350611d2292505050565b60f78111611c3b576000611bd560c0836125b1565b905080876000015111611c2a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e000000000000000000604482015260640161079a565b600195509350849250611d22915050565b6000611c4860f7836125b1565b905080876000015111611c9d5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e000000604482015260640161079a565b600183015160208290036101000a9004611cb78183612a14565b885111611d065760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420524c50206c6f6e67206c6973742e00000000000000000000604482015260640161079a565b611d11826001612a14565b9650945060019350611d2292505050565b9193909250565b606060008267ffffffffffffffff811115611d4657611d466122da565b6040519080825280601f01601f191660200182016040528015611d70576020820181803683370190505b5090508051600003611d8357905061031f565b8484016020820160005b85811015611da5578281015182820152602001611d8d565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b6060806038841015611e515760408051600180825281830190925290602082018180368337019050509050611e078385612a27565b60f81b81600081518110611e1d57611e1d61292b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610306565b600060015b611e608187612b02565b15611e8357611e6e826129cc565b9150611e7c61010082612b16565b9050611e56565b611e8e826001612a14565b67ffffffffffffffff811115611ea657611ea66122da565b6040519080825280601f01601f191660200182016040528015611ed0576020820181803683370190505b509250611edd8583612a27565b611ee8906037612a27565b60f81b83600081518110611efe57611efe61292b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b8181116107a357610100611f4682846125b1565b611f5290610100612c4d565b611f5c9088612b02565b611f6691906129b8565b60f81b838281518110611f7b57611f7b61292b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611fb3816129cc565b9050611f32565b6060600082604051602001611fd191815260200190565b604051602081830303815290604052905060005b602081101561203e578181815181106120005761200061292b565b01602001517fff000000000000000000000000000000000000000000000000000000000000001660000361203e57612037816129cc565b9050611fe5565b600061204b8260206125b1565b67ffffffffffffffff811115612063576120636122da565b6040519080825280601f01601f19166020018201604052801561208d576020820181803683370190505b50905060005b81518110156119b95783836120a7816129cc565b9450815181106120b9576120b961292b565b602001015160f81c60f81b8282815181106120d6576120d661292b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061210e816129cc565b9050612093565b6060815160000361213457505060408051600081526020810190915290565b6000805b8351811015612179578381815181106121535761215361292b565b602002602001015151826121679190612a14565b9150612172816129cc565b9050612138565b60008267ffffffffffffffff811115612194576121946122da565b6040519080825280601f01601f1916602001820160405280156121be576020820181803683370190505b50600092509050602081015b85518310156119b95760008684815181106121e7576121e761292b565b60200260200101519050600060208201905061220583828451612240565b8785815181106122175761221761292b565b6020026020010151518361222b9190612a14565b9250505082612239906129cc565b92506121ca565b8282825b6020811061227c578151835261225b602084612a14565b9250612268602083612a14565b91506122756020826125b1565b9050612244565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b60405180611fe0016040528060ff906020820280368337509192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516020810167ffffffffffffffff8111828210171561232c5761232c6122da565b60405290565b604051610100810167ffffffffffffffff8111828210171561232c5761232c6122da565b604051601f8201601f1916810167ffffffffffffffff8111828210171561237f5761237f6122da565b604052919050565b600067ffffffffffffffff8211156123a1576123a16122da565b50601f01601f191660200190565b600082601f8301126123c057600080fd5b81356123d36123ce82612387565b612356565b8181528460208386010111156123e857600080fd5b816020850160208301376000918101602001919091529392505050565b803580151581146105de57600080fd5b6000806040838503121561242857600080fd5b823567ffffffffffffffff81111561243f57600080fd5b61244b858286016123af565b92505061245a60208401612405565b90509250929050565b60008060006060848603121561247857600080fd5b83359250602084013567ffffffffffffffff81111561249657600080fd5b6124a2868287016123af565b9250506124b160408501612405565b90509250925092565b6000602082840312156124cc57600080fd5b5035919050565b600080600080606085870312156124e957600080fd5b843567ffffffffffffffff8082111561250157600080fd5b818701915087601f83011261251557600080fd5b81358181111561252457600080fd5b88602082850101111561253657600080fd5b602092830196509450508501356003811061255057600080fd5b9396929550929360400135925050565b6000806040838503121561257357600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561030957610309612582565b60005b838110156125df5781810151838201526020016125c7565b50506000910152565b600083516125fa8184602088016125c4565b7f2e0000000000000000000000000000000000000000000000000000000000000090830190815283516126348160018401602088016125c4565b01600101949350505050565b602081526000825180602084015261265f8160408501602087016125c4565b601f01601f19169190910160400192915050565b805173ffffffffffffffffffffffffffffffffffffffff811681146105de57600080fd5b6000602082840312156126a957600080fd5b61030682612673565b7f41523a7a65726f416464723a00000000000000000000000000000000000000008152600082516126ea81600c8501602087016125c4565b91909101600c0192915050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b805160ff811681146105de57600080fd5b600082601f83011261274f57600080fd5b815161275d6123ce82612387565b81815284602083860101111561277257600080fd5b6127838260208301602087016125c4565b949350505050565b6000602080838503121561279e57600080fd5b825167ffffffffffffffff808211156127b657600080fd5b81850191508282870312156127ca57600080fd5b6127d2612309565b8251828111156127e157600080fd5b80840193505086601f8401126127f657600080fd5b825182811115612808576128086122da565b8060051b612817868201612356565b918252848101860191868101908a84111561283157600080fd5b87870192505b8383101561291b5782518681111561284e57600080fd5b8701610100818d03601f190181131561286657600080fd5b61286e612332565b6128798b840161272d565b815261288760408401612673565b8b82015260608301518981111561289d57600080fd5b6128ab8f8d8387010161273e565b6040830152506080830151606082015260a06128c881850161272d565b608083015260c0808501518284015260e09150818501518184015250828401519250898311156128f85760008081fd5b6129068f8d8587010161273e565b90820152845250509187019190870190612837565b8452509198975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826129c7576129c7612989565b500690565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129fd576129fd612582565b5060010190565b8183823760009101908152919050565b8082018082111561030957610309612582565b60ff818116838216019081111561030957610309612582565b848152600060208581840152846040840152606083018460005b60ff811015612a7757815183529183019190830190600101612a5a565b505050506120408201905095945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008316815260008251612ac58160018501602087016125c4565b919091016001019392505050565b60008351612ae58184602088016125c4565b835190830190612af98183602088016125c4565b01949350505050565b600082612b1157612b11612989565b500490565b808202811582820484141761030957610309612582565b600181815b80851115612b8657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612b6c57612b6c612582565b80851615612b7957918102915b93841c9390800290612b32565b509250929050565b600082612b9d57506001610309565b81612baa57506000610309565b8160018114612bc05760028114612bca57612be6565b6001915050610309565b60ff841115612bdb57612bdb612582565b50506001821b610309565b5060208310610133831016604e8410600b8410161715612c09575081810a610309565b612c138383612b2d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612c4557612c45612582565b029392505050565b60006103068383612b8e56fea2646970667358221220b0e2d2df211dd589d063e24dc61098a0aec86ea03c1fcd3241c1634bae25d5dd64736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000004": { ++ "contractName": "Bridge", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x00000000000000000000000019b4f9c381c7927fe33d853e48b560141a380c44", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" ++ }, ++ "code": "0x6080604052600436106101635760003560e01c8063715018a6116100c0578063ce70f39b11610074578063f2fde38b11610059578063f2fde38b1461051a578063f98039191461053a578063fee99b221461055a57600080fd5b8063ce70f39b1461048b578063d0496d6a146104ab57600080fd5b806396e17852116100a557806396e1785214610438578063a4444efd1461044b578063bac443e21461046b57600080fd5b8063715018a6146104055780638da5cb5b1461041a57600080fd5b80635075a9d4116101175780635817b0c3116100fc5780635817b0c3146103975780635d0bd986146103c5578063606b5b74146103e557600080fd5b80635075a9d41461034a578063540be6a31461037757600080fd5b80631be2bfa7116101485780631be2bfa7146102cc578063343b643c146102ec5780633ab76e9f1461032c57600080fd5b80630ca4dffd1461026f57806319ab453c146102ac57600080fd5b3661026a576101a86040518060400160405280600b81526020017f746f6b656e5f7661756c74000000000000000000000000000000000000000000815250600161057a565b6001600160a01b0316336001600160a01b03161415801561021a57506102046040518060400160405280600b81526020017f65746865725f7661756c74000000000000000000000000000000000000000000815250600161057a565b6001600160a01b0316336001600160a01b031614155b801561023157506065546001600160a01b03163314155b15610268576040517f8bba088a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561027b57600080fd5b5061028f61028a366004613914565b61057a565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102b857600080fd5b506102686102c7366004613986565b610590565b3480156102d857600080fd5b5061028f6102e73660046139a3565b610729565b3480156102f857600080fd5b5061031c6103073660046139fe565b600090815260cd602052604090205460ff1690565b60405190151581526020016102a3565b34801561033857600080fd5b506097546001600160a01b031661028f565b34801561035657600080fd5b5061036a6103653660046139fe565b61073e565b6040516102a39190613a81565b34801561038357600080fd5b5061031c6103923660046139fe565b610749565b3480156103a357600080fd5b506103b76103b2366004613aa8565b610755565b6040519081526020016102a3565b3480156103d157600080fd5b5061031c6103e03660046139fe565b610768565b3480156103f157600080fd5b506103b76104003660046139fe565b61077b565b34801561041157600080fd5b50610268610786565b34801561042657600080fd5b506065546001600160a01b031661028f565b6103b7610446366004613aa8565b61079a565b34801561045757600080fd5b5061031c610466366004613b26565b6107c8565b34801561047757600080fd5b50610268610486366004613b79565b6107e0565b34801561049757600080fd5b5061031c6104a6366004613b26565b610804565b3480156104b757600080fd5b50604080516060808201835260008083526020808401829052928401528251808201845260ca5480825260cb546001600160a01b0390811683860190815260cc5493870193845286519283525116938101939093525192820192909252016102a3565b34801561052657600080fd5b50610268610535366004613986565b610813565b34801561054657600080fd5b50610268610555366004613be2565b6108bd565b34801561056657600080fd5b50610268610575366004613b79565b6108db565b60006105874684846108f1565b90505b92915050565b600054610100900460ff16158080156105b05750600054600160ff909116105b806105ca5750303b1580156105ca575060005460ff166001145b61065b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156106b957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6106c282610a3c565b801561072557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006107368484846108f1565b949350505050565b600061058a82610a55565b600061058a3083610a78565b600061058a61076383613c18565b610bbd565b60006107743083610bed565b5092915050565b600061058a82610cc5565b61078e610d00565b6107986000610d74565b565b60006107a4610dde565b6107b860c9306107b385613c18565b610e51565b90506107c360018055565b919050565b60006107d73086868686611239565b95945050505050565b6107e8610dde565b6107f660c930858585611435565b6107ff60018055565b505050565b60006107d73086868686611823565b61081b610d00565b6001600160a01b0381166108b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610652565b6108ba81610d74565b50565b6108c5610dde565b6108d260c9308484611ba6565b61072560018055565b6108e3610dde565b6107f660c930858585611e82565b6000806108fd856124f5565b8460405160200161090f929190613d3e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526097547fbf40fac10000000000000000000000000000000000000000000000000000000083529092506001600160a01b03169063bf40fac190610985908490600401613de0565b602060405180830381865afa1580156109a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c69190613df3565b915082610a34576040516001600160a01b0383161515906109eb908390602001613e10565b60405160208183030381529060405290610a32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106529190613de0565b505b509392505050565b610a44612595565b610a4c612634565b6108ba816126d3565b600080610a6183610cc5565b805490915080600381111561073657610736613a17565b604080517f0ca4dffd0000000000000000000000000000000000000000000000000000000081526004810191909152600e60448201527f7369676e616c5f736572766963650000000000000000000000000000000000006064820152600060248201819052906001600160a01b03841690630ca4dffd90608401602060405180830381865afa158015610b0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b339190613df3565b6040517f32676bc6000000000000000000000000000000000000000000000000000000008152306004820152602481018490526001600160a01b0391909116906332676bc690604401602060405180830381865afa158015610b99573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105879190613e55565b600081604051602001610bd09190613f65565b604051602081830303815290604052805190602001209050919050565b6040517f1be2bfa70000000000000000000000000000000000000000000000000000000081526004810182905260606024820152600660648201527f627269646765000000000000000000000000000000000000000000000000000060848201526001604482015260009081906001600160a01b03851690631be2bfa79060a401602060405180830381865afa158015610c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610caf9190613df3565b6001600160a01b03811615159590945092505050565b6040517f4d4553534147455f5354415455530000000000000000000000000000000000006020820152602e8101829052600090604e01610bd0565b6065546001600160a01b03163314610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610652565b606580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260015403610e4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610652565b6002600155565b60808101516000906001600160a01b0316610e98576040517fd8c3418000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610ea9858560600151610bed565b91509150811580610ebd5750468460600151145b15610ef4576040517fe822b48d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a08401516001600160a01b03161580610f235750806001600160a01b03168460a001516001600160a01b0316145b15610f5a576040517fb9ad6a0f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008461012001518561010001518660e00151610f779190613fdb565b610f819190613fdb565b9050348114610fbc576040517f9826865c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080517f0ca4dffd0000000000000000000000000000000000000000000000000000000081526004810191909152600b60448201527f65746865725f7661756c740000000000000000000000000000000000000000006064820152600160248201526000906001600160a01b03881690630ca4dffd90608401602060405180830381865afa158015611053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110779190613df3565b90506001600160a01b0381161561109b5761109b6001600160a01b0382168361274d565b87548860006110a983613fee565b9091555086523360208701524660408701526110c486610bbd565b604080517f0ca4dffd0000000000000000000000000000000000000000000000000000000081526004810191909152600e60448201527f7369676e616c5f736572766963650000000000000000000000000000000000006064820152600060248201529095506001600160a01b03881690630ca4dffd90608401602060405180830381865afa15801561115b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117f9190613df3565b6001600160a01b03166366ca2bc0866040518263ffffffff1660e01b81526004016111ac91815260200190565b6020604051808303816000875af11580156111cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ef9190614008565b50847f47866f7dacd4a276245be6ed543cae03c9c17eb17e6980cee28e3dd168b7f9f3876040516112209190614021565b60405180910390a2505050509392505050565b60018055565b6040517f1be2bfa70000000000000000000000000000000000000000000000000000000081526004810184905260606024820152600660648201527f627269646765000000000000000000000000000000000000000000000000000060848201526000604482018190529081906001600160a01b03881690631be2bfa79060a401602060405180830381865afa1580156112d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fb9190613df3565b604080517f0ca4dffd0000000000000000000000000000000000000000000000000000000081526004810191909152600e60448201527f7369676e616c5f736572766963650000000000000000000000000000000000006064820152600060248201529091506001600160a01b03881690630ca4dffd90608401602060405180830381865afa158015611392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b69190613df3565b6001600160a01b0316635221f61386838988886040518663ffffffff1660e01b81526004016113e9959493929190614034565b602060405180830381865afa158015611406573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142a9190613e55565b979650505050505050565b600061144760a0850160808601613986565b6001600160a01b031603611487576040517fd8c3418000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b468360400135146114c4576040517fe822b48d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114d261076385613c18565b600081815260048801602052604090205490915060ff161515600103611524576040517fafde133500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611535858286606001358686611823565b61156b576040517f498b0b1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600487016020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556115b761010086013560e0870135613fdb565b905080156117c757604080517f0ca4dffd0000000000000000000000000000000000000000000000000000000081526004810191909152600b60448201527f65746865725f7661756c740000000000000000000000000000000000000000006064820152600160248201526000906001600160a01b03881690630ca4dffd90608401602060405180830381865afa158015611656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167a9190613df3565b90506001600160a01b03811615611727576001600160a01b03811663ba0bbd956116aa60a0890160808a01613986565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260248101859052604401600060405180830381600087803b15801561170a57600080fd5b505af115801561171e573d6000803e3d6000fd5b505050506117c5565b600061173960a0880160808901613986565b6001600160a01b03168360405160006040518083038185875af1925050503d8060008114611783576040519150601f19603f3d011682016040523d82523d6000602084013e611788565b606091505b50509050806117c3576040517ff6664cf100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b505b817fea00c741e39d1d9ab1c6703152d71f9da09a782ed4ae128414730dadbb9bd8476117f960a0880160808901613986565b604080516001600160a01b039092168252602082018590520160405180910390a250505050505050565b600046840361185e576040517fe822b48d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000859003611899576040517fa6407c9300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006118a783850185614145565b604080517f0ca4dffd0000000000000000000000000000000000000000000000000000000081526004810191909152600560448201527f7461696b6f00000000000000000000000000000000000000000000000000000060648201526000602482018190529192506001600160a01b03891690630ca4dffd90608401602060405180830381865afa158015611940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119649190613df3565b825161010001516040517f25bf86f20000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90911660048201526001600160a01b0391909116906325bf86f290602401602060405180830381865afa1580156119dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a019190614008565b9050801580611a1a57508151611a1690612810565b8114155b15611a2a576000925050506107d7565b81516060908101516040517f1be2bfa7000000000000000000000000000000000000000000000000000000008152600481018990526024810192909252600660648301527f627269646765000000000000000000000000000000000000000000000000000060848301526000604483015273B51f0f2bdCbf6cfabB35239921A5c672519F74ba91639603043991906001600160a01b038c1690631be2bfa79060a401602060405180830381865afa158015611ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0d9190613df3565b611b168b610cc5565b602087015160405160e086901b7fffffffff00000000000000000000000000000000000000000000000000000000168152611b59949392916003916004016142ea565b602060405180830381865af4158015611b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9a9190613e55565b98975050505050505050565b6101408201351580611bb55750805b15611c1457611bca60a0830160808401613986565b6001600160a01b0316336001600160a01b031614611c14576040517fd7f4fc9f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611c2261076384613c18565b90506001611c2f82610a55565b6003811115611c4057611c40613a17565b14611c77576040517f1f6646b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080517f0ca4dffd0000000000000000000000000000000000000000000000000000000081526004810191909152600b60448201527f65746865725f7661756c740000000000000000000000000000000000000000006064820152600160248201526000906001600160a01b03861690630ca4dffd90608401602060405180830381865afa158015611d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d329190613df3565b90506001600160a01b03811615611dbb576040517fd73bb3d000000000000000000000000000000000000000000000000000000000815261010085013560048201526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b158015611da257600080fd5b505af1158015611db6573d6000803e3d6000fd5b505050505b611dc78685845a612835565b15611ddc57611dd78260026129d6565b611e7a565b8215611e5357611ded8260036129d6565b600080611e0060e0870160c08801613986565b6001600160a01b031614611e2357611e1e60e0860160c08701613986565b611e33565b611e3360a0860160808701613986565b9050611e4d6001600160a01b03821661010087013561274d565b50611e7a565b6001600160a01b03811615611e7a57611e7a6001600160a01b03821661010086013561274d565b505050505050565b610140830135158015611eb65750611ea060a0840160808501613986565b6001600160a01b0316336001600160a01b031614155b15611eed576040517fe62d8d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b46836060013514611f2a576040517fe822b48d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611f3861076385613c18565b90506000611f4582610a55565b6003811115611f5657611f56613a17565b14611f8d576040517f2c3b0c4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080517f1be2bfa700000000000000000000000000000000000000000000000000000000815290850135600482015260606024820152600660648201527f62726964676500000000000000000000000000000000000000000000000000006084820152600060448201819052906001600160a01b03871690631be2bfa79060a401602060405180830381865afa15801561202c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120509190613df3565b604080517f0ca4dffd0000000000000000000000000000000000000000000000000000000081526004810191909152600e60448201527f7369676e616c5f736572766963650000000000000000000000000000000000006064820152600060248201529091506001600160a01b03871690630ca4dffd90608401602060405180830381865afa1580156120e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210b9190613df3565b6001600160a01b0316635221f6138660400135838588886040518663ffffffff1660e01b8152600401612142959493929190614034565b602060405180830381865afa15801561215f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121839190613e55565b6121b9576040517fa282639800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006101208601356121d461010088013560e0890135613fdb565b6121de9190613fdb565b604080517f0ca4dffd0000000000000000000000000000000000000000000000000000000081526004810191909152600b60448201527f65746865725f7661756c740000000000000000000000000000000000000000006064820152600160248201529091506000906001600160a01b03891690630ca4dffd90608401602060405180830381865afa158015612278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229c9190613df3565b90506001600160a01b038116158015906122b65750600082115b1561232f576040517fd73bb3d0000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b15801561231657600080fd5b505af115801561232a573d6000803e3d6000fd5b505050505b60e0870135156123605761236060e088013561235160a08a0160808b01613986565b6001600160a01b03169061274d565b6000803061237460c08b0160a08c01613986565b6001600160a01b031614806123a15750600061239660c08b0160a08c01613986565b6001600160a01b0316145b156123b657506002905061010088013561243c565b60006123c860a08b0160808c01613986565b6001600160a01b0316336001600160a01b0316146123eb578961014001356123ed565b5a5b905060006123fd8d8c8a85612835565b9050801561240e5760029350612439565b600193506001600160a01b03851615612439576124396001600160a01b0386166101008d013561274d565b50505b61244686836129d6565b60008061245960e08c0160c08d01613986565b6001600160a01b03161461247c5761247760e08b0160c08c01613986565b61248c565b61248c60a08b0160808c01613986565b90506001600160a01b03811633036124c5576124c06124b0836101208d0135613fdb565b6001600160a01b0383169061274d565b6124e7565b6124d4336101208c013561274d565b6124e76001600160a01b0382168361274d565b505050505050505050505050565b6060600061250283612a4f565b600101905060008167ffffffffffffffff811115612522576125226137bb565b6040519080825280601f01601f19166020018201604052801561254c576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461255657509392505050565b600054610100900460ff1661262c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610652565b610798612b31565b600054610100900460ff166126cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610652565b610798612bc8565b6001600160a01b038116612713576040517f9a109b0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b609780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b8015610725576000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146127a0576040519150601f19603f3d011682016040523d82523d6000602084013e6127a5565b606091505b50509050806107ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f455448207472616e73666572206661696c6564000000000000000000000000006044820152606401610652565b600080612826612821846000612c68565b6130ac565b80516020909101209392505050565b600081600003612871576040517ffe1d2c1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052808481526020018560200160208101906128959190613986565b6001600160a01b039081168252604087810135602093840152835160018a0155918301516002890180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055015160038601556128ff60c0850160a08601613986565b6001600160a01b03168261010086013561291d61016088018861434d565b60405161292b9291906143b2565b600060405180830381858888f193505050503d8060008114612969576040519150601f19603f3d011682016040523d82523d6000602084013e61296e565b606091505b505060408051606081018252600180825260208201819052600019919092018190528782018290556002880180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560039096019590955550929392505050565b8060038111156129e8576129e8613a17565b6129f183610a55565b6003811115612a0257612a02613a17565b1461072557612a1182826130f0565b817f0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c8233604051612a439291906143c2565b60405180910390a25050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612a98577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310612ac4576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612ae257662386f26fc10000830492506010015b6305f5e1008310612afa576305f5e100830492506008015b6127108310612b0e57612710830492506004015b60648310612b20576064830492506002015b600a831061058a5760010192915050565b600054610100900460ff16611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610652565b600054610100900460ff16612c5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610652565b61079833610d74565b61020082015160609015612cd457612c81826011613fdb565b67ffffffffffffffff811115612c9957612c996137bb565b604051908082528060200260200182016040528015612ccc57816020015b6060815260200190600190039081612cb75790505b509050612d44565b6101e083015115612cea57612c81826010613fdb565b612cf582600f613fdb565b67ffffffffffffffff811115612d0d57612d0d6137bb565b604051908082528060200260200182016040528015612d4057816020015b6060815260200190600190039081612d2b5790505b5090505b8251612d4f90613119565b81600081518110612d6257612d626143e6565b6020026020010181905250612d7a8360200151613119565b81600181518110612d8d57612d8d6143e6565b6020026020010181905250612da5836040015161312c565b81600281518110612db857612db86143e6565b6020026020010181905250612dd08360600151613119565b81600381518110612de357612de36143e6565b6020026020010181905250612dfb8360800151613119565b81600481518110612e0e57612e0e6143e6565b6020026020010181905250612e268360a00151613119565b81600581518110612e3957612e396143e6565b6020026020010181905250612e708360c00151604051602001612e5c9190614415565b604051602081830303815290604052613168565b81600681518110612e8357612e836143e6565b6020026020010181905250612e9b8360e001516131d7565b81600781518110612eae57612eae6143e6565b6020026020010181905250612ed98361010001516fffffffffffffffffffffffffffffffff166131d7565b81600881518110612eec57612eec6143e6565b6020026020010181905250612f058361012001516131e5565b81600981518110612f1857612f186143e6565b6020026020010181905250612f318361014001516131e5565b81600a81518110612f4457612f446143e6565b6020026020010181905250612f5d8361016001516131e5565b81600b81518110612f7057612f706143e6565b6020026020010181905250612f89836101800151613168565b81600c81518110612f9c57612f9c6143e6565b6020026020010181905250612fb5836101a00151613119565b81600d81518110612fc857612fc86143e6565b6020026020010181905250613017836101c00151604051602001612e5c919060c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016815260080190565b81600e8151811061302a5761302a6143e6565b6020026020010181905250826101e0015160001461306f57613050836101e001516131d7565b81600f81518110613063576130636143e6565b60200260200101819052505b6102008301511561058a57613088836102000151613119565b8160108151811061309b5761309b6143e6565b602002602001018190525092915050565b606060006130b9836131fd565b90506130c7815160c0613333565b816040516020016130d992919061444a565b604051602081830303815290604052915050919050565b60006130fb83610cc5565b9050600082600381111561311157613111613a17565b909155505050565b606061058a6131278361351b565b613168565b604051606082811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301529061058a90603401612e5c565b60608082516001148015613196575060808360008151811061318c5761318c6143e6565b016020015160f81c105b156131a257508161058a565b6131ae83516080613333565b836040516020016131c092919061444a565b604051602081830303815290604052905092915050565b606061058a61312783613603565b606061058a6131278367ffffffffffffffff16613603565b6060815160000361321e576040805160008082526020820190925290610774565b6000805b83518110156132635783818151811061323d5761323d6143e6565b602002602001015151826132519190613fdb565b915061325c81613fee565b9050613222565b60008267ffffffffffffffff81111561327e5761327e6137bb565b6040519080825280601f01601f1916602001820160405280156132a8576020820181803683370190505b50600092509050602081015b855183101561332a5760008684815181106132d1576132d16143e6565b6020026020010151905060006020820190506132ef8382845161375e565b878581518110613301576133016143e6565b602002602001015151836133159190613fdb565b925050508261332390613fee565b92506132b4565b50949350505050565b60608060388410156133b257604080516001808252818301909252906020820181803683370190505090506133688385614479565b60f81b8160008151811061337e5761337e6143e6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610587565b600060015b6133c18187614492565b156133e4576133cf82613fee565b91506133dd610100826144a6565b90506133b7565b6133ef826001613fdb565b67ffffffffffffffff811115613407576134076137bb565b6040519080825280601f01601f191660200182016040528015613431576020820181803683370190505b50925061343e8583614479565b613449906037614479565b60f81b8360008151811061345f5761345f6143e6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b818111610a32576101006134a782846144bd565b6134b3906101006145b4565b6134bd9088614492565b6134c791906145c0565b60f81b8382815181106134dc576134dc6143e6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061351481613fee565b9050613493565b606060008260405160200161353291815260200190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815260208084528383019092529250600091829160208201818036833701905050905060005b815181101561332a57838361359581613fee565b9450815181106135a7576135a76143e6565b602001015160f81c60f81b8282815181106135c4576135c46143e6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506135fc81613fee565b9050613581565b606060008260405160200161361a91815260200190565b604051602081830303815290604052905060005b602081101561368757818181518110613649576136496143e6565b01602001517fff00000000000000000000000000000000000000000000000000000000000000166000036136875761368081613fee565b905061362e565b60006136948260206144bd565b67ffffffffffffffff8111156136ac576136ac6137bb565b6040519080825280601f01601f1916602001820160405280156136d6576020820181803683370190505b50905060005b815181101561332a5783836136f081613fee565b945081518110613702576137026143e6565b602001015160f81c60f81b82828151811061371f5761371f6143e6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061375781613fee565b90506136dc565b8282825b6020811061379a5781518352613779602084613fdb565b9250613786602083613fdb565b91506137936020826144bd565b9050613762565b905182516020929092036101000a6000190180199091169116179052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff8111828210171561380e5761380e6137bb565b60405290565b6040805190810167ffffffffffffffff8111828210171561380e5761380e6137bb565b604051610220810167ffffffffffffffff8111828210171561380e5761380e6137bb565b600082601f83011261386c57600080fd5b813567ffffffffffffffff80821115613887576138876137bb565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156138cd576138cd6137bb565b816040528381528660208588010111156138e657600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146108ba57600080fd5b6000806040838503121561392757600080fd5b823567ffffffffffffffff81111561393e57600080fd5b61394a8582860161385b565b925050602083013561395b81613906565b809150509250929050565b6001600160a01b03811681146108ba57600080fd5b80356107c381613966565b60006020828403121561399857600080fd5b813561058781613966565b6000806000606084860312156139b857600080fd5b83359250602084013567ffffffffffffffff8111156139d657600080fd5b6139e28682870161385b565b92505060408401356139f381613906565b809150509250925092565b600060208284031215613a1057600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110613a7d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b6020810161058a8284613a46565b60006101a08284031215613aa257600080fd5b50919050565b600060208284031215613aba57600080fd5b813567ffffffffffffffff811115613ad157600080fd5b61073684828501613a8f565b60008083601f840112613aef57600080fd5b50813567ffffffffffffffff811115613b0757600080fd5b602083019150836020828501011115613b1f57600080fd5b9250929050565b60008060008060608587031215613b3c57600080fd5b8435935060208501359250604085013567ffffffffffffffff811115613b6157600080fd5b613b6d87828801613add565b95989497509550505050565b600080600060408486031215613b8e57600080fd5b833567ffffffffffffffff80821115613ba657600080fd5b613bb287838801613a8f565b94506020860135915080821115613bc857600080fd5b50613bd586828701613add565b9497909650939450505050565b60008060408385031215613bf557600080fd5b823567ffffffffffffffff811115613c0c57600080fd5b61394a85828601613a8f565b60006101a08236031215613c2b57600080fd5b613c336137ea565b82358152613c436020840161397b565b60208201526040830135604082015260608301356060820152613c686080840161397b565b6080820152613c7960a0840161397b565b60a0820152613c8a60c0840161397b565b60c082015260e083810135908201526101008084013590820152610120808401359082015261014080840135908201526101608084013567ffffffffffffffff80821115613cd757600080fd5b613ce33683880161385b565b83850152610180925082860135915080821115613cff57600080fd5b50613d0c3682870161385b565b918301919091525092915050565b60005b83811015613d35578181015183820152602001613d1d565b50506000910152565b60008351613d50818460208801613d1a565b7f2e000000000000000000000000000000000000000000000000000000000000009083019081528351613d8a816001840160208801613d1a565b01600101949350505050565b60008151808452613dae816020860160208601613d1a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105876020830184613d96565b600060208284031215613e0557600080fd5b815161058781613966565b7f41523a7a65726f416464723a0000000000000000000000000000000000000000815260008251613e4881600c850160208701613d1a565b91909101600c0192915050565b600060208284031215613e6757600080fd5b815161058781613906565b60006101a0825184526020830151613e9560208601826001600160a01b03169052565b5060408301516040850152606083015160608501526080830151613ec460808601826001600160a01b03169052565b5060a0830151613edf60a08601826001600160a01b03169052565b5060c0830151613efa60c08601826001600160a01b03169052565b5060e0838101519085015261010080840151908501526101208084015190850152610140808401519085015261016080840151818601839052613f3f83870182613d96565b925050506101808084015185830382870152613f5b8382613d96565b9695505050505050565b60408152601460408201527f5441494b4f5f4252494447455f4d45535341474500000000000000000000000060608201526080602082015260006105876080830184613e72565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561058a5761058a613fac565b6000600019820361400157614001613fac565b5060010190565b60006020828403121561401a57600080fd5b5051919050565b6020815260006105876020830184613e72565b8581526001600160a01b038516602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101949350505050565b600082601f8301126140b057600080fd5b60405161010080820182811067ffffffffffffffff821117156140d5576140d56137bb565b604052830181858211156140e857600080fd5b845b828110156141025780358252602091820191016140ea565b509195945050505050565b80356fffffffffffffffffffffffffffffffff811681146107c357600080fd5b803567ffffffffffffffff811681146107c357600080fd5b60006020828403121561415757600080fd5b813567ffffffffffffffff8082111561416f57600080fd5b908301906040828603121561418357600080fd5b61418b613814565b82358281111561419a57600080fd5b830161030081880312156141ad57600080fd5b6141b5613837565b81358152602082013560208201526141cf6040830161397b565b6040820152606082013560608201526080820135608082015260a082013560a08201526141ff8860c0840161409f565b60c08201526101c08083013560e08301526101e061421e81850161410d565b61010084015261020061423281860161412d565b610120850152614245610220860161412d565b610140850152614258610240860161412d565b6101608501526102608501358781111561427157600080fd5b61427d8c82880161385b565b610180860152506102808501356101a085015261429d6102a0860161412d565b838501526102c0850135828501526102e08501358185015250505080835250506020830135828111156142cf57600080fd5b6142db8782860161385b565b60208301525095945050505050565b8581526001600160a01b038516602082015283604082015282606082015260a06080820152600061142a60a0830184613d96565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261438257600080fd5b83018035915067ffffffffffffffff82111561439d57600080fd5b602001915036819003821315613b1f57600080fd5b8183823760009101908152919050565b604081016143d08285613a46565b6001600160a01b03831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008183825b600881101561443a57815183526020928301929091019060010161441b565b5050506101008201905092915050565b6000835161445c818460208801613d1a565b835190830190614470818360208801613d1a565b01949350505050565b60ff818116838216019081111561058a5761058a613fac565b6000826144a1576144a161431e565b500490565b808202811582820484141761058a5761058a613fac565b8181038181111561058a5761058a613fac565b600181815b8085111561450b5781600019048211156144f1576144f1613fac565b808516156144fe57918102915b93841c93908002906144d5565b509250929050565b6000826145225750600161058a565b8161452f5750600061058a565b8160018114614545576002811461454f5761456b565b600191505061058a565b60ff84111561456057614560613fac565b50506001821b61058a565b5060208310610133831016604e8410600b841016171561458e575081810a61058a565b61459883836144d0565b80600019048211156145ac576145ac613fac565b029392505050565b60006105878383614513565b6000826145cf576145cf61431e565b50069056fea2646970667358221220ec239ef73d6cbee8dbd31c663f4221c77b52ed6e7ce663cdda28f4eaa6af115964736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000002": { ++ "contractName": "TokenVault", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x00000000000000000000000019b4f9c381c7927fe33d853e48b560141a380c44", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" ++ }, ++ "code": "0x6080604052600436106100e85760003560e01c8063715018a61161008a5780639aa8605c116100595780639aa8605c146102b0578063c287e578146102e1578063ee1490b214610321578063f2fde38b1461033457600080fd5b8063715018a6146101fe578063780b64f0146102135780638da5cb5b146102725780639754149b1461029057600080fd5b80631be2bfa7116100c65780631be2bfa71461016c57806339da33ba1461018c5780633ab76e9f1461019f57806367090ccf146101bd57600080fd5b80630c6fab82146100ed5780630ca4dffd1461010f57806319ab453c1461014c575b600080fd5b3480156100f957600080fd5b5061010d6101083660046128f5565b610354565b005b34801561011b57600080fd5b5061012f61012a366004612a50565b610609565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015857600080fd5b5061010d610167366004612aa2565b61061f565b34801561017857600080fd5b5061012f610187366004612abf565b61079e565b61010d61019a366004612b1a565b6107b5565b3480156101ab57600080fd5b506097546001600160a01b031661012f565b3480156101c957600080fd5b5061012f6101d8366004612b98565b60cb6020908152600092835260408084209091529082529020546001600160a01b031681565b34801561020a57600080fd5b5061010d610adb565b34801561021f57600080fd5b5061025361022e366004612bbd565b60cc60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610143565b34801561027e57600080fd5b506065546001600160a01b031661012f565b34801561029c57600080fd5b5061010d6102ab366004612bd6565b610aef565b3480156102bc57600080fd5b506102d06102cb366004612aa2565b610f16565b604051610143959493929190612cc6565b3480156102ed57600080fd5b506103116102fc366004612aa2565b60c96020526000908152604090205460ff1681565b6040519015158152602001610143565b61010d61032f366004612d15565b611078565b34801561034057600080fd5b5061010d61034f366004612aa2565b611a29565b61035c611ab9565b6040518060400160405280600681526020017f627269646765000000000000000000000000000000000000000000000000000081525061039d816000610609565b6001600160a01b0316336001600160a01b0316146103e7576040517f1b0b999e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044b9190612db1565b905061049281604001516040518060400160405280600b81526020017f746f6b656e5f7661756c74000000000000000000000000000000000000000000815250600061079e565b6001600160a01b031681602001516001600160a01b0316146104e0576040517f80962e1c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600046873503610515576104fa6040880160208901612aa2565b90506105106001600160a01b0382168686611b12565b61059e565b61051e87611bbb565b6040517f42e91bb30000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260248201879052919250908216906342e91bb390604401600060405180830381600087803b15801561058557600080fd5b505af1158015610599573d6000803e3d6000fd5b505050505b815160408084015181519081526001600160a01b0384811660208301529181018790528188169291891691907fe5da926519fc972010fe65b35c1e3339e6dc72b35ffaec203999c2a2a2593eac9060600160405180910390a450505061060360018055565b50505050565b6000610616468484611c1a565b90505b92915050565b600054610100900460ff161580801561063f5750600054600160ff909116105b806106595750303b158015610659575060005460ff166001145b6106d05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561072e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61073782611d2d565b801561079a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006107ab848484611c1a565b90505b9392505050565b6107bd611ab9565b6001600160a01b0385161580610824575061080f866040518060400160405280600b81526020017f746f6b656e5f7661756c74000000000000000000000000000000000000000000815250600061079e565b6001600160a01b0316856001600160a01b0316145b1561085b576040517f4694641b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b823411610894576040517fae3718b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610923604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018790523360808201526001600160a01b03861660a0820152610140810185905261012081018490526109598434612e13565b60e08201526001600160a01b03831660c08201526101808101829052610100810151156109b2576040517f3dd99f7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109f46040518060400160405280600681526020017f62726964676500000000000000000000000000000000000000000000000000008152506000610609565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b8152600401610a209190612e4d565b60206040518083038185885af1158015610a3e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a639190612f47565b90508160a001516001600160a01b031682608001516001600160a01b0316827fe2f39179c279514a7b46983846e33f95a561128e0660602a211cc1e61cddb9bd8b8660e00151604051610ac0929190918252602082015260400190565b60405180910390a45050610ad360018055565b505050505050565b610ae3611d46565b610aed6000611da0565b565b610af7611ab9565b6000610b0960a0850160808601612aa2565b6001600160a01b031603610b49576040517f72b41cdf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b46836040013514610b86576040517f48bc100500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610bc86040518060400160405280600681526020017f62726964676500000000000000000000000000000000000000000000000000008152506000610609565b90506000816001600160a01b0316635817b0c3866040518263ffffffff1660e01b8152600401610bf89190612ff6565b602060405180830381865afa158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190612f47565b600081815260cc6020526040902080546001909101549192506001600160a01b03169081610c93576040517f7c6addb700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fce70f39b0000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063ce70f39b90610ce290869060608c0135908b908b90600401613114565b602060405180830381865afa158015610cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d239190613134565b610d59576040517f45d24f2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820182526000808252602080830182815287835260cc909152929020905181547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390911617815590516001909101558015610e9d576001600160a01b038216600090815260c9602052604090205460ff1615610e79576001600160a01b0382166342e91bb3610dfc60a08a0160808b01612aa2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b158015610e5c57600080fd5b505af1158015610e70573d6000803e3d6000fd5b50505050610e9d565b610e9d610e8c60a0890160808a01612aa2565b6001600160a01b0384169083611b12565b610ead60a0880160808901612aa2565b6001600160a01b0316837fc5d9f7cd7998e24ecf12ad69eca9339764e2cb13788d5d9616f502601b219af68484604051610efc9291906001600160a01b03929092168252602082015260400190565b60405180910390a350505050610f1160018055565b505050565b60ca6020526000908152604090208054600182015460028301805492936001600160a01b038316937401000000000000000000000000000000000000000090930460ff1692909190610f6790613151565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9390613151565b8015610fe05780601f10610fb557610100808354040283529160200191610fe0565b820191906000526020600020905b815481529060010190602001808311610fc357829003601f168201915b505050505090806003018054610ff590613151565b80601f016020809104026020016040519081016040528092919081815260200182805461102190613151565b801561106e5780601f106110435761010080835404028352916020019161106e565b820191906000526020600020905b81548152906001019060200180831161105157829003601f168201915b5050505050905085565b611080611ab9565b6001600160a01b03871615806110e757506110d2886040518060400160405280600b81526020017f746f6b656e5f7661756c74000000000000000000000000000000000000000000815250600061079e565b6001600160a01b0316876001600160a01b0316145b1561111e576040517f4694641b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03861661115e576040517f7c6addb700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84600003611198576040517f015f093200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a08101825260008082526020820181905291810191909152606080820181905260808201526001600160a01b038716600090815260c9602052604081205460ff1615611432576040517f77be18a8000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038916906377be18a890604401600060405180830381600087803b15801561124457600080fd5b505af1158015611258573d6000803e3d6000fd5b505050506001600160a01b03888116600090815260ca6020908152604091829020825160a081018452815481526001820154948516928101929092527401000000000000000000000000000000000000000090930460ff16918101919091526002820180549192916060840191906112cf90613151565b80601f01602080910402602001604051908101604052809291908181526020018280546112fb90613151565b80156113485780601f1061131d57610100808354040283529160200191611348565b820191906000526020600020905b81548152906001019060200180831161132b57829003601f168201915b5050505050815260200160038201805461136190613151565b80601f016020809104026020016040519081016040528092919081815260200182805461138d90613151565b80156113da5780601f106113af576101008083540402835291602001916113da565b820191906000526020600020905b8154815290600101906020018083116113bd57829003601f168201915b5050509190925250505060208101519092506001600160a01b031661142b576040517ff91680d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50856116c4565b60008890506040518060a001604052804681526020018a6001600160a01b03168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b991906131b3565b60ff168152602001826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156114ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261152791908101906131d0565b8152602001826001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801561156a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261159291908101906131d0565b90526040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529093506000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156115f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161b9190612f47565b90506116326001600160a01b03831633308c611e0a565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015611691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b59190612f47565b6116bf9190612e13565b925050505b611753604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018b905233608082015260408051808201909152600b81527f746f6b656e5f7661756c7400000000000000000000000000000000000000000060208201526117a1908c90600061079e565b6001600160a01b031660a082015260808101516040517f0c6fab8200000000000000000000000000000000000000000000000000000000916117ec918691908e908790602401613247565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526101608201526101408101879052610120810186905261186b8634612e13565b60e08201526001600160a01b03851660c0820152610180810184905260408051808201909152600681527f627269646765000000000000000000000000000000000000000000000000000060208201526000906118c89082610609565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b81526004016118f49190612e4d565b60206040518083038185885af1158015611912573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119379190612f47565b905060405180604001604052808b6001600160a01b031681526020018481525060cc600083815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101559050508a6001600160a01b031682608001516001600160a01b0316827f325cab7553038374e17f39bb45e2a2c90f66c6a52798cb5f95c20d94c11c95e28f8e88604051611a0a939291909283526001600160a01b03919091166020830152604082015260600190565b60405180910390a450505050611a1f60018055565b5050505050505050565b611a31611d46565b6001600160a01b038116611aad5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106c7565b611ab681611da0565b50565b600260015403611b0b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106c7565b6002600155565b6040516001600160a01b038316602482015260448101829052610f119084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611e5b565b8035600090815260cb60209081526040808320839290918391611be2918701908701612aa2565b6001600160a01b0390811682526020820192909252604001600020541690508061061957611c0f83611f40565b6107ae565b60018055565b600080611c26856121f7565b84604051602001611c389291906132fe565b60408051601f19818403018152908290526097547fbf40fac10000000000000000000000000000000000000000000000000000000083529092506001600160a01b03169063bf40fac190611c90908490600401613356565b602060405180830381865afa158015611cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd19190613369565b915082611d25576040516001600160a01b038316151590611cf6908390602001613386565b60405160208183030381529060405290611d235760405162461bcd60e51b81526004016106c79190613356565b505b509392505050565b611d356122b5565b611d3d61233a565b611ab6816123bf565b6065546001600160a01b03163314610aed5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106c7565b606580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526106039085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611b57565b6000611eb0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166124399092919063ffffffff16565b805190915015610f115780806020019051810190611ece9190613134565b610f115760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106c7565b6000611fd5818335611f586040860160208701612aa2565b604051602001611f9792919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b6040516020818303038152906040528051906020012060405180602001611fbd906128c3565b601f1982820381018352601f90910116604052612448565b6097549091506001600160a01b0380831691636c0db62b9116611ffe6040860160208701612aa2565b853561201060608801604089016133cb565b61201d60608901896133e8565b61202a60808b018b6133e8565b60405161203e9291908d359060200161344d565b6040516020818303038152906040526040518863ffffffff1660e01b815260040161206f97969594939291906134d0565b600060405180830381600087803b15801561208957600080fd5b505af115801561209d573d6000803e3d6000fd5b5050506001600160a01b038216600090815260c96020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560ca90915290208391506120f8828261366f565b50508135600090815260cb6020908152604080832084939092909161212291908701908701612aa2565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b03168260200160208101906121839190612aa2565b6001600160a01b031683357f9e465b29e576a3e01584e31d607353f21b80c055e813af907c0a495f6cf4f7bc6121bc60608701876133e8565b6121c960808901896133e8565b6121d960608b0160408c016133cb565b6040516121ea95949392919061371d565b60405180910390a4919050565b606060006122048361254c565b600101905060008167ffffffffffffffff81111561222457612224612964565b6040519080825280601f01601f19166020018201604052801561224e576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461225857509392505050565b600054610100900460ff166123325760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c7565b610aed61262e565b600054610100900460ff166123b75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c7565b610aed6126ab565b6001600160a01b0381166123ff576040517f9a109b0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b609780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60606107ab8484600085612731565b60008347101561249a5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016106c7565b81516000036124eb5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016106c7565b8282516020840186f590506001600160a01b0381166107ae5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016106c7565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612595577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106125c1576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106125df57662386f26fc10000830492506010015b6305f5e10083106125f7576305f5e100830492506008015b612710831061260b57612710830492506004015b6064831061261d576064830492506002015b600a83106106195760010192915050565b600054610100900460ff16611c145760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c7565b600054610100900460ff166127285760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c7565b610aed33611da0565b6060824710156127a95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106c7565b600080866001600160a01b031685876040516127c5919061375a565b60006040518083038185875af1925050503d8060008114612802576040519150601f19603f3d011682016040523d82523d6000602084013e612807565b606091505b509150915061281887838387612825565b925050505b949350505050565b6060831561289457825160000361288d576001600160a01b0385163b61288d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106c7565b508161281d565b61281d83838151156128a95781518083602001fd5b8060405162461bcd60e51b81526004016106c79190613356565b6121518061377783390190565b6001600160a01b0381168114611ab657600080fd5b80356128f0816128d0565b919050565b6000806000806080858703121561290b57600080fd5b843567ffffffffffffffff81111561292257600080fd5b850160a0818803121561293457600080fd5b93506020850135612944816128d0565b92506040850135612954816128d0565b9396929550929360600135925050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156129bc576129bc612964565b604052919050565b600067ffffffffffffffff8211156129de576129de612964565b50601f01601f191660200190565b600082601f8301126129fd57600080fd5b8135612a10612a0b826129c4565b612993565b818152846020838601011115612a2557600080fd5b816020850160208301376000918101602001919091529392505050565b8015158114611ab657600080fd5b60008060408385031215612a6357600080fd5b823567ffffffffffffffff811115612a7a57600080fd5b612a86858286016129ec565b9250506020830135612a9781612a42565b809150509250929050565b600060208284031215612ab457600080fd5b81356107ae816128d0565b600080600060608486031215612ad457600080fd5b83359250602084013567ffffffffffffffff811115612af257600080fd5b612afe868287016129ec565b9250506040840135612b0f81612a42565b809150509250925092565b60008060008060008060c08789031215612b3357600080fd5b863595506020870135612b45816128d0565b945060408701359350606087013592506080870135612b63816128d0565b915060a087013567ffffffffffffffff811115612b7f57600080fd5b612b8b89828a016129ec565b9150509295509295509295565b60008060408385031215612bab57600080fd5b823591506020830135612a97816128d0565b600060208284031215612bcf57600080fd5b5035919050565b600080600060408486031215612beb57600080fd5b833567ffffffffffffffff80821115612c0357600080fd5b908501906101a08288031215612c1857600080fd5b90935060208501359080821115612c2e57600080fd5b818601915086601f830112612c4257600080fd5b813581811115612c5157600080fd5b876020828501011115612c6357600080fd5b6020830194508093505050509250925092565b60005b83811015612c91578181015183820152602001612c79565b50506000910152565b60008151808452612cb2816020860160208601612c76565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260ff8416604082015260a060608201526000612cf760a0830185612c9a565b8281036080840152612d098185612c9a565b98975050505050505050565b600080600080600080600080610100898b031215612d3257600080fd5b883597506020890135612d44816128d0565b96506040890135612d54816128d0565b9550606089013594506080890135935060a0890135925060c0890135612d79816128d0565b915060e089013567ffffffffffffffff811115612d9557600080fd5b612da18b828c016129ec565b9150509295985092959890939650565b600060608284031215612dc357600080fd5b6040516060810181811067ffffffffffffffff82111715612de657612de6612964565b604052825181526020830151612dfb816128d0565b60208201526040928301519281019290925250919050565b81810381811115610619577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b602081528151602082015260006020830151612e7460408401826001600160a01b03169052565b5060408301516060830152606083015160808301526080830151612ea360a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a0610180808501829052612f216101c0860184612c9a565b90860151858203601f190183870152909250612f3d8382612c9a565b9695505050505050565b600060208284031215612f5957600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612f9557600080fd5b830160208101925035905067ffffffffffffffff811115612fb557600080fd5b803603821315612fc457600080fd5b9250929050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6020815281356020820152600061300f602084016128e5565b6001600160a01b038116604084015250604083013560608301526060830135608083015261303f608084016128e5565b6001600160a01b03811660a08401525061305b60a084016128e5565b6001600160a01b03811660c08401525061307760c084016128e5565b6001600160a01b03811660e08401525061010060e0840135818401526101208185013581850152610140915080850135828501525061016081850135818501526130c381860186612f60565b925090506101a061018081818701526130e16101c087018585612fcb565b93506130ef81880188612f60565b93509050601f198685030182870152613109848483612fcb565b979650505050505050565b848152836020820152606060408201526000612f3d606083018486612fcb565b60006020828403121561314657600080fd5b81516107ae81612a42565b600181811c9082168061316557607f821691505b60208210810361319e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60ff81168114611ab657600080fd5b6000602082840312156131c557600080fd5b81516107ae816131a4565b6000602082840312156131e257600080fd5b815167ffffffffffffffff8111156131f957600080fd5b8201601f8101841361320a57600080fd5b8051613218612a0b826129c4565b81815285602083850101111561322d57600080fd5b61323e826020830160208601612c76565b95945050505050565b6080815284516080820152600060208601516001600160a01b0380821660a085015260ff60408901511660c08501526060880151915060a060e0850152613292610120850183612c9a565b915060808801517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80858403016101008601526132ce8382612c9a565b9188166020860152506001600160a01b038616604085015291506132ef9050565b82606083015295945050505050565b60008351613310818460208801612c76565b7f2e00000000000000000000000000000000000000000000000000000000000000908301908152835161334a816001840160208801612c76565b01600101949350505050565b6020815260006106166020830184612c9a565b60006020828403121561337b57600080fd5b81516107ae816128d0565b7f41523a7a65726f416464723a00000000000000000000000000000000000000008152600082516133be81600c850160208701612c76565b91909101600c0192915050565b6000602082840312156133dd57600080fd5b81356107ae816131a4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261341d57600080fd5b83018035915067ffffffffffffffff82111561343857600080fd5b602001915036819003821315612fc457600080fd5b828482377f286272696467656400000000000000000000000000000000000000000000000092019182527ff09f8c88000000000000000000000000000000000000000000000000000000006008830152600c8201527f2900000000000000000000000000000000000000000000000000000000000000602c820152602d01919050565b60006001600160a01b03808a16835280891660208401525086604083015260ff8616606083015260c0608083015261350c60c083018587612fcb565b82810360a084015261351e8185612c9a565b9a9950505050505050505050565b601f821115610f1157600081815260208120601f850160051c810160208610156135535750805b601f850160051c820191505b81811015610ad35782815560010161355f565b67ffffffffffffffff83111561358a5761358a612964565b61359e836135988354613151565b8361352c565b6000601f8411600181146135f057600085156135ba5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355613668565b600083815260209020601f19861690835b828110156136215786850135825560209485019460019092019101613601565b508682101561365c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81358155600181016020830135613685816128d0565b81546040850135613695816131a4565b74ff00000000000000000000000000000000000000008160a01b166001600160a01b0384167fffffffffffffffffffffff000000000000000000000000000000000000000000841617178455505050506136f260608301836133e8565b613700818360028601613572565b505061370f60808301836133e8565b610603818360038601613572565b606081526000613731606083018789612fcb565b8281036020840152613744818688612fcb565b91505060ff831660408301529695505050505050565b6000825161376c818460208701612c76565b919091019291505056fe608060405234801561001057600080fd5b50612131806100206000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806367e828bf116100e35780638da5cb5b1161008c578063a9059cbb11610066578063a9059cbb146103b4578063dd62ed3e146103c7578063f2fde38b1461040d57600080fd5b80638da5cb5b1461037b57806395d89b4114610399578063a457c2d7146103a157600080fd5b8063715018a6116100bd578063715018a61461034057806377be18a8146103485780637cf8ed0d1461035b57600080fd5b806367e828bf146102a75780636c0db62b146102f757806370a082311461030a57600080fd5b806323b872dd116101455780633ab76e9f1161011f5780633ab76e9f1461026b57806342e91bb31461028957806349d126051461029e57600080fd5b806323b872dd14610230578063313ce56714610243578063395093511461025857600080fd5b80630ca4dffd116101765780630ca4dffd146101d357806318160ddd1461020b5780631be2bfa71461021d57600080fd5b806306fdde0314610192578063095ea7b3146101b0575b600080fd5b61019a610420565b6040516101a79190611abd565b60405180910390f35b6101c36101be366004611b30565b6104b2565b60405190151581526020016101a7565b6101e66101e1366004611c4b565b6104cc565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b60cb545b6040519081526020016101a7565b6101e661022b366004611c99565b6104e0565b6101c361023e366004611cf0565b6104f5565b60ce5460405160ff90911681526020016101a7565b6101c3610266366004611b30565b610551565b60975473ffffffffffffffffffffffffffffffffffffffff166101e6565b61029c610297366004611b30565b61059d565b005b61020f60fc5481565b6102cb60fb5460fc5473ffffffffffffffffffffffffffffffffffffffff90911691565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b61029c610305366004611d31565b6106a1565b61020f610318366004611ddb565b73ffffffffffffffffffffffffffffffffffffffff16600090815260c9602052604090205490565b61029c6108eb565b61029c610356366004611b30565b6108ff565b60fb546101e69073ffffffffffffffffffffffffffffffffffffffff1681565b60655473ffffffffffffffffffffffffffffffffffffffff166101e6565b61019a6109f6565b6101c36103af366004611b30565b610a05565b6101c36103c2366004611b30565b610ac7565b61020f6103d5366004611df8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260ca6020908152604080832093909416825291909152205490565b61029c61041b366004611ddb565b610b22565b606060cc805461042f90611e31565b80601f016020809104026020016040519081016040528092919081815260200182805461045b90611e31565b80156104a85780601f1061047d576101008083540402835291602001916104a8565b820191906000526020600020905b81548152906001019060200180831161048b57829003601f168201915b5050505050905090565b6000336104c0818585610bbf565b60019150505b92915050565b60006104d9468484610d3e565b9392505050565b60006104ed848484610d3e565b949350505050565b60003073ffffffffffffffffffffffffffffffffffffffff841603610546576040517f669bcddc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104ed848484610e89565b33600081815260ca6020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c09082908690610598908790611eb3565b610bbf565b6040518060400160405280600b81526020017f746f6b656e5f7661756c740000000000000000000000000000000000000000008152506105de8160006104cc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610642576040517f1b0b999e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064c8383610ea2565b8273ffffffffffffffffffffffffffffffffffffffff167f397b33b307fc137878ebfc75b295289ec0ee25a31bb5bf034f33256fe8ea2aa68360405161069491815260200190565b60405180910390a2505050565b600054610100900460ff16158080156106c15750600054600160ff909116105b806106db5750303b1580156106db575060005460ff166001145b6107525760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156107b057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff861615806107d1575084155b806107db57504685145b806107e557508251155b806107ef57508151155b15610826576040517ff12d598000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61082f87610f60565b61083a828486610f79565b60fb80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881617905560fc85905580156108e257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6108f3611006565b6108fd600061106d565b565b6040518060400160405280600b81526020017f746f6b656e5f7661756c740000000000000000000000000000000000000000008152506109408160006104cc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109a4576040517f1b0b999e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109ae83836110e4565b8273ffffffffffffffffffffffffffffffffffffffff167f9b5b9a05e4726d8bb959f1440e05c6b8109443f2083bc4e386237d76545265538360405161069491815260200190565b606060cd805461042f90611e31565b33600081815260ca6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610aaf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610749565b610abc8286868403610bbf565b506001949350505050565b60003073ffffffffffffffffffffffffffffffffffffffff841603610b18576040517f669bcddc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104d98383611255565b610b2a611006565b73ffffffffffffffffffffffffffffffffffffffff8116610bb35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610749565b610bbc8161106d565b50565b73ffffffffffffffffffffffffffffffffffffffff8316610c475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610749565b73ffffffffffffffffffffffffffffffffffffffff8216610cd05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610749565b73ffffffffffffffffffffffffffffffffffffffff838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080610d4a85611263565b84604051602001610d5c929190611ec6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526097547fbf40fac100000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff169063bf40fac190610ddf908490600401611abd565b602060405180830381865afa158015610dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e209190611f1e565b915082610e815760405173ffffffffffffffffffffffffffffffffffffffff8316151590610e52908390602001611f3b565b60405160208183030381529060405290610e7f5760405162461bcd60e51b81526004016107499190611abd565b505b509392505050565b600033610e97858285611321565b610abc8585856113de565b73ffffffffffffffffffffffffffffffffffffffff8216610f055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610749565b8060cb6000828254610f179190611eb3565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260c9602052604081208054839290610f51908490611eb3565b90915550610f5c9050565b5050565b610f68611643565b610f706116c8565b610bbc8161174d565b600054610100900460ff16610ff65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610749565b6110018383836117e1565b505050565b60655473ffffffffffffffffffffffffffffffffffffffff1633146108fd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610749565b6065805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff821661116d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610749565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260c96020526040902054818110156112095760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610749565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260c960205260408120838303905560cb8054849290611245908490611f80565b9091555061100190508360008483565b6000336104c08185856113de565b60606000611270836118ae565b600101905060008167ffffffffffffffff81111561129057611290611b5c565b6040519080825280601f01601f1916602001820160405280156112ba576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846112c457509392505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260ca60209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113d857818110156113cb5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610749565b6113d88484848403610bbf565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166114675760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610749565b73ffffffffffffffffffffffffffffffffffffffff82166114f05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610749565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260c960205260409020548181101561158c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610749565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260c960205260408082208585039055918516815290812080548492906115d0908490611eb3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161163691815260200190565b60405180910390a36113d8565b600054610100900460ff166116c05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610749565b6108fd611990565b600054610100900460ff166117455760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610749565b6108fd611a13565b73ffffffffffffffffffffffffffffffffffffffff811661179a576040517f9a109b0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900460ff1661185e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610749565b60cc61186a8482611fe1565b5060cd6118778382611fe1565b5060ce80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff929092169190911790555050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106118f7577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611923576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061194157662386f26fc10000830492506010015b6305f5e1008310611959576305f5e100830492506008015b612710831061196d57612710830492506004015b6064831061197f576064830492506002015b600a83106104c65760010192915050565b600054610100900460ff16611a0d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610749565b60018055565b600054610100900460ff16611a905760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610749565b6108fd3361106d565b60005b83811015611ab4578181015183820152602001611a9c565b50506000910152565b6020815260008251806020840152611adc816040850160208701611a99565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610bbc57600080fd5b60008060408385031215611b4357600080fd5b8235611b4e81611b0e565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611b9c57600080fd5b813567ffffffffffffffff80821115611bb757611bb7611b5c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611bfd57611bfd611b5c565b81604052838152866020858801011115611c1657600080fd5b836020870160208301376000602085830101528094505050505092915050565b80358015158114611c4657600080fd5b919050565b60008060408385031215611c5e57600080fd5b823567ffffffffffffffff811115611c7557600080fd5b611c8185828601611b8b565b925050611c9060208401611c36565b90509250929050565b600080600060608486031215611cae57600080fd5b83359250602084013567ffffffffffffffff811115611ccc57600080fd5b611cd886828701611b8b565b925050611ce760408501611c36565b90509250925092565b600080600060608486031215611d0557600080fd5b8335611d1081611b0e565b92506020840135611d2081611b0e565b929592945050506040919091013590565b60008060008060008060c08789031215611d4a57600080fd5b8635611d5581611b0e565b95506020870135611d6581611b0e565b945060408701359350606087013560ff81168114611d8257600080fd5b9250608087013567ffffffffffffffff80821115611d9f57600080fd5b611dab8a838b01611b8b565b935060a0890135915080821115611dc157600080fd5b50611dce89828a01611b8b565b9150509295509295509295565b600060208284031215611ded57600080fd5b81356104d981611b0e565b60008060408385031215611e0b57600080fd5b8235611e1681611b0e565b91506020830135611e2681611b0e565b809150509250929050565b600181811c90821680611e4557607f821691505b602082108103611e7e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156104c6576104c6611e84565b60008351611ed8818460208801611a99565b7f2e000000000000000000000000000000000000000000000000000000000000009083019081528351611f12816001840160208801611a99565b01600101949350505050565b600060208284031215611f3057600080fd5b81516104d981611b0e565b7f41523a7a65726f416464723a0000000000000000000000000000000000000000815260008251611f7381600c850160208701611a99565b91909101600c0192915050565b818103818111156104c6576104c6611e84565b601f82111561100157600081815260208120601f850160051c81016020861015611fba5750805b601f850160051c820191505b81811015611fd957828155600101611fc6565b505050505050565b815167ffffffffffffffff811115611ffb57611ffb611b5c565b61200f816120098454611e31565b84611f93565b602080601f831160018114612062576000841561202c5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611fd9565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156120af57888601518255948401946001909101908401612090565b50858210156120eb57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea264697066735822122097aea87c926aeac94c95489d7f3674e61115440bca078ca4ef2af4eae4f9fea364736f6c63430008120033a264697066735822122089e27a345c7c6ec2e044b333ee9138d2f0743901e70542a655eb5279da9b965b64736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000003": { ++ "contractName": "EtherVault", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x00000000000000000000000019b4f9c381c7927fe33d853e48b560141a380c44", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006", ++ "0x029ae2e2f1d6964720a0fa7e6ffa902f995c156242f4f5a930aa9d9765d167d0": "0x0000000000000000000000000000000000000000000000000000000000000001" ++ }, ++ "code": "0x6080604052600436106100c05760003560e01c8063715018a611610074578063d73bb3d01161004e578063d73bb3d014610257578063f2fde38b14610277578063fe9fbb801461029757600080fd5b8063715018a6146101f75780638da5cb5b1461020c578063ba0bbd951461023757600080fd5b80631be2bfa7116100a55780631be2bfa71461018c5780632d1fb389146101ac5780633ab76e9f146101cc57600080fd5b80630ca4dffd1461012257806319ab453c1461016c57600080fd5b3661011d5747158015906100e4575033600090815260c9602052604090205460ff16155b1561011b576040517f4fa3f24500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561012e57600080fd5b5061014261013d36600461119e565b6102ed565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561017857600080fd5b5061011b61018736600461120e565b610301565b34801561019857600080fd5b506101426101a736600461122b565b61049a565b3480156101b857600080fd5b5061011b6101c7366004611282565b6104af565b3480156101d857600080fd5b5060975473ffffffffffffffffffffffffffffffffffffffff16610142565b34801561020357600080fd5b5061011b6105c6565b34801561021857600080fd5b5060655473ffffffffffffffffffffffffffffffffffffffff16610142565b34801561024357600080fd5b5061011b6102523660046112ae565b6105da565b34801561026357600080fd5b5061011b6102723660046112da565b6106f1565b34801561028357600080fd5b5061011b61029236600461120e565b61078d565b3480156102a357600080fd5b506102dd6102b236600461120e565b73ffffffffffffffffffffffffffffffffffffffff16600090815260c9602052604090205460ff1690565b6040519015158152602001610163565b60006102fa468484610841565b9392505050565b600054610100900460ff16158080156103215750600054600160ff909116105b8061033b5750303b15801561033b575060005460ff166001145b6103cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561042a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610433826109a6565b801561049657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006104a7848484610841565b949350505050565b6104b76109bf565b73ffffffffffffffffffffffffffffffffffffffff82161580610505575073ffffffffffffffffffffffffffffffffffffffff8216600090815260c9602052604090205460ff161515811515145b1561053c576040517f6faf7e9c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600081815260c9602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b6105ce6109bf565b6105d86000610a40565b565b33600090815260c9602052604090205460ff16610623576040517f4fa3f24500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61062b610ab7565b73ffffffffffffffffffffffffffffffffffffffff8216610678576040517f687563df00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61069873ffffffffffffffffffffffffffffffffffffffff831682610b2a565b8173ffffffffffffffffffffffffffffffffffffffff167f7b9f77d35803cd201eac9c4ed739bc1fcd3f1be6ab8877d925d1e55517b6fd6e826040516106e091815260200190565b60405180910390a261049660018055565b33600090815260c9602052604090205460ff1661073a576040517f4fa3f24500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610742610ab7565b61074c3382610b2a565b60405181815233907f7b9f77d35803cd201eac9c4ed739bc1fcd3f1be6ab8877d925d1e55517b6fd6e9060200160405180910390a261078a60018055565b50565b6107956109bf565b73ffffffffffffffffffffffffffffffffffffffff8116610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103c3565b61078a81610a40565b60008061084d85610c05565b8460405160200161085f929190611317565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526097547fbf40fac100000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff169063bf40fac1906108e290849060040161136f565b602060405180830381865afa1580156108ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092391906113c0565b91508261099e5760405173ffffffffffffffffffffffffffffffffffffffff83161515906109559083906020016113dd565b6040516020818303038152906040529061099c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c3919061136f565b505b509392505050565b6109ae610cc3565b6109b6610d62565b61078a81610e01565b60655473ffffffffffffffffffffffffffffffffffffffff1633146105d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c3565b6065805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260015403610b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103c3565b6002600155565b80156104965760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610b8a576040519150601f19603f3d011682016040523d82523d6000602084013e610b8f565b606091505b5050905080610bfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f455448207472616e73666572206661696c65640000000000000000000000000060448201526064016103c3565b505050565b60018055565b60606000610c1283610e95565b600101905060008167ffffffffffffffff811115610c3257610c326110af565b6040519080825280601f01601f191660200182016040528015610c5c576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610c6657509392505050565b600054610100900460ff16610d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103c3565b6105d8610f78565b600054610100900460ff16610df9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103c3565b6105d861100f565b73ffffffffffffffffffffffffffffffffffffffff8116610e4e576040517f9a109b0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610ede577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610f0a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610f2857662386f26fc10000830492506010015b6305f5e1008310610f40576305f5e100830492506008015b6127108310610f5457612710830492506004015b60648310610f66576064830492506002015b600a8310610f72576001015b92915050565b600054610100900460ff16610bff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103c3565b600054610100900460ff166110a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103c3565b6105d833610a40565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126110ef57600080fd5b813567ffffffffffffffff8082111561110a5761110a6110af565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611150576111506110af565b8160405283815286602085880101111561116957600080fd5b836020870160208301376000602085830101528094505050505092915050565b8035801515811461119957600080fd5b919050565b600080604083850312156111b157600080fd5b823567ffffffffffffffff8111156111c857600080fd5b6111d4858286016110de565b9250506111e360208401611189565b90509250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461078a57600080fd5b60006020828403121561122057600080fd5b81356102fa816111ec565b60008060006060848603121561124057600080fd5b83359250602084013567ffffffffffffffff81111561125e57600080fd5b61126a868287016110de565b92505061127960408501611189565b90509250925092565b6000806040838503121561129557600080fd5b82356112a0816111ec565b91506111e360208401611189565b600080604083850312156112c157600080fd5b82356112cc816111ec565b946020939093013593505050565b6000602082840312156112ec57600080fd5b5035919050565b60005b8381101561130e5781810151838201526020016112f6565b50506000910152565b600083516113298184602088016112f3565b7f2e0000000000000000000000000000000000000000000000000000000000000090830190815283516113638160018401602088016112f3565b01600101949350505050565b602081526000825180602084015261138e8160408501602087016112f3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000602082840312156113d257600080fd5b81516102fa816111ec565b7f41523a7a65726f416464723a000000000000000000000000000000000000000081526000825161141581600c8501602087016112f3565b91909101600c019291505056fea26469706673582212205ba76b4da10c920143efe8a59a5126aa1d82a4e0405a1710388f185b06f3d9e964736f6c63430008120033", ++ "balance": "0xffffffffffffff59776f94274fffffff" ++ }, ++ "0x0000777700000000000000000000000000000007": { ++ "contractName": "SignalService", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x00000000000000000000000019b4f9c381c7927fe33d853e48b560141a380c44", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" ++ }, ++ "code": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80635221f613116100815780638da5cb5b1161005b5780638da5cb5b146101b0578063f2fde38b146101ce578063f8f3f844146101e157600080fd5b80635221f6131461017457806366ca2bc014610187578063715018a6146101a857600080fd5b80631be2bfa7116100b25780631be2bfa71461012057806332676bc6146101335780633ab76e9f1461015657600080fd5b80630ca4dffd146100ce57806319ab453c1461010b575b600080fd5b6100e16100dc366004611c53565b61020b565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61011e610119366004611cd7565b610221565b005b6100e161012e366004611cf4565b6103ba565b610146610141366004611d4f565b6103cf565b6040519015158152602001610102565b60975473ffffffffffffffffffffffffffffffffffffffff166100e1565b610146610182366004611d7b565b61047a565b61019a610195366004611e11565b610767565b604051908152602001610102565b61011e6107c3565b60655473ffffffffffffffffffffffffffffffffffffffff166100e1565b61011e6101dc366004611cd7565b6107d7565b61019a6101ef366004611d4f565b6040805192835260208301919091528082206060909201905290565b600061021846848461088e565b90505b92915050565b600054610100900460ff16158080156102415750600054600160ff909116105b8061025b5750303b15801561025b575060005460ff166001145b6102ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561034a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610353826109f3565b80156103b657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006103c784848461088e565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff831661041e576040517fa99bf91a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000829003610459576040517f053c769c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50604080519283526020830191909152808220606090920190525460011490565b60004686036104b5576040517fe822b48d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610502576040517fa99bf91a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084900361053d576040517f053c769c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061054b83850185611ed0565b9050600061058f6040518060400160405280600581526020017f7461696b6f000000000000000000000000000000000000000000000000000000815250600061020b565b825161010001516040517f25bf86f20000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff91909116906325bf86f290602401602060405180830381865afa158015610615573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106399190612075565b905080158015906106535750815161065090610a0c565b81145b801561075b575073B51f0f2bdCbf6cfabB35239921A5c672519F74ba63960304398360000151606001516106be8b6040518060400160405280600e81526020017f7369676e616c5f7365727669636500000000000000000000000000000000000081525060006103ba565b604080518c8152602081018c9052818120606090910190915260208701516040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815261071a949392916001916004016120fc565b602060405180830381865af4158015610737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075b9190612148565b98975050505050505050565b60008181036107a2576040517f053c769c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50604080513381526020810192909252808220606090920190526001815590565b6107cb610a31565b6107d56000610ab2565b565b6107df610a31565b73ffffffffffffffffffffffffffffffffffffffff8116610882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102e3565b61088b81610ab2565b50565b60008061089a85610b29565b846040516020016108ac929190612165565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526097547fbf40fac100000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff169063bf40fac19061092f9084906004016121bd565b602060405180830381865afa15801561094c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097091906121d0565b9150826109eb5760405173ffffffffffffffffffffffffffffffffffffffff83161515906109a29083906020016121ed565b604051602081830303815290604052906109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e391906121bd565b505b509392505050565b6109fb610be7565b610a03610c86565b61088b81610d25565b600080610a22610a1d846000610db9565b6111fd565b80516020909101209392505050565b60655473ffffffffffffffffffffffffffffffffffffffff1633146107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102e3565b6065805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606000610b3683611241565b600101905060008167ffffffffffffffff811115610b5657610b56611b1e565b6040519080825280601f01601f191660200182016040528015610b80576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610b8a57509392505050565b600054610100900460ff16610c7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102e3565b6107d5611323565b600054610100900460ff16610d1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102e3565b6107d56113c0565b73ffffffffffffffffffffffffffffffffffffffff8116610d72576040517f9a109b0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61020082015160609015610e2557610dd2826011612290565b67ffffffffffffffff811115610dea57610dea611b1e565b604051908082528060200260200182016040528015610e1d57816020015b6060815260200190600190039081610e085790505b509050610e95565b6101e083015115610e3b57610dd2826010612290565b610e4682600f612290565b67ffffffffffffffff811115610e5e57610e5e611b1e565b604051908082528060200260200182016040528015610e9157816020015b6060815260200190600190039081610e7c5790505b5090505b8251610ea090611460565b81600081518110610eb357610eb36122a3565b6020026020010181905250610ecb8360200151611460565b81600181518110610ede57610ede6122a3565b6020026020010181905250610ef68360400151611473565b81600281518110610f0957610f096122a3565b6020026020010181905250610f218360600151611460565b81600381518110610f3457610f346122a3565b6020026020010181905250610f4c8360800151611460565b81600481518110610f5f57610f5f6122a3565b6020026020010181905250610f778360a00151611460565b81600581518110610f8a57610f8a6122a3565b6020026020010181905250610fc18360c00151604051602001610fad91906122d2565b6040516020818303038152906040526114af565b81600681518110610fd457610fd46122a3565b6020026020010181905250610fec8360e0015161151e565b81600781518110610fff57610fff6122a3565b602002602001018190525061102a8361010001516fffffffffffffffffffffffffffffffff1661151e565b8160088151811061103d5761103d6122a3565b602002602001018190525061105683610120015161152c565b81600981518110611069576110696122a3565b602002602001018190525061108283610140015161152c565b81600a81518110611095576110956122a3565b60200260200101819052506110ae83610160015161152c565b81600b815181106110c1576110c16122a3565b60200260200101819052506110da8361018001516114af565b81600c815181106110ed576110ed6122a3565b6020026020010181905250611106836101a00151611460565b81600d81518110611119576111196122a3565b6020026020010181905250611168836101c00151604051602001610fad919060c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016815260080190565b81600e8151811061117b5761117b6122a3565b6020026020010181905250826101e001516000146111c0576111a1836101e0015161151e565b81600f815181106111b4576111b46122a3565b60200260200101819052505b6102008301511561021b576111d9836102000151611460565b816010815181106111ec576111ec6122a3565b602002602001018190525092915050565b6060600061120a83611544565b9050611218815160c0611678565b8160405160200161122a929190612307565b604051602081830303815290604052915050919050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061128a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106112b6576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106112d457662386f26fc10000830492506010015b6305f5e10083106112ec576305f5e100830492506008015b612710831061130057612710830492506004015b60648310611312576064830492506002015b600a831061021b5760010192915050565b600054610100900460ff166113ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102e3565b60018055565b600054610100900460ff16611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102e3565b6107d533610ab2565b606061021b61146e83611860565b6114af565b604051606082811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301529061021b90603401610fad565b606080825160011480156114dd57506080836000815181106114d3576114d36122a3565b016020015160f81c105b156114e957508161021b565b6114f583516080611678565b83604051602001611507929190612307565b604051602081830303815290604052905092915050565b606061021b61146e83611948565b606061021b61146e8367ffffffffffffffff16611948565b6060815160000361156357505060408051600081526020810190915290565b6000805b83518110156115a857838181518110611582576115826122a3565b602002602001015151826115969190612290565b91506115a181612336565b9050611567565b60008267ffffffffffffffff8111156115c3576115c3611b1e565b6040519080825280601f01601f1916602001820160405280156115ed576020820181803683370190505b50600092509050602081015b855183101561166f576000868481518110611616576116166122a3565b60200260200101519050600060208201905061163483828451611aa3565b878581518110611646576116466122a3565b6020026020010151518361165a9190612290565b925050508261166890612336565b92506115f9565b50949350505050565b60608060388410156116f757604080516001808252818301909252906020820181803683370190505090506116ad838561236e565b60f81b816000815181106116c3576116c36122a3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610218565b600060015b6117068187612387565b156117295761171482612336565b91506117226101008261239b565b90506116fc565b611734826001612290565b67ffffffffffffffff81111561174c5761174c611b1e565b6040519080825280601f01601f191660200182016040528015611776576020820181803683370190505b509250611783858361236e565b61178e90603761236e565b60f81b836000815181106117a4576117a46122a3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b8181116109e9576101006117ec82846123b2565b6117f8906101006124e5565b6118029088612387565b61180c91906124f1565b60f81b838281518110611821576118216122a3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061185981612336565b90506117d8565b606060008260405160200161187791815260200190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815260208084528383019092529250600091829160208201818036833701905050905060005b815181101561166f5783836118da81612336565b9450815181106118ec576118ec6122a3565b602001015160f81c60f81b828281518110611909576119096122a3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061194181612336565b90506118c6565b606060008260405160200161195f91815260200190565b604051602081830303815290604052905060005b60208110156119cc5781818151811061198e5761198e6122a3565b01602001517fff00000000000000000000000000000000000000000000000000000000000000166000036119cc576119c581612336565b9050611973565b60006119d98260206123b2565b67ffffffffffffffff8111156119f1576119f1611b1e565b6040519080825280601f01601f191660200182016040528015611a1b576020820181803683370190505b50905060005b815181101561166f578383611a3581612336565b945081518110611a4757611a476122a3565b602001015160f81c60f81b828281518110611a6457611a646122a3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611a9c81612336565b9050611a21565b8282825b60208110611adf5781518352611abe602084612290565b9250611acb602083612290565b9150611ad86020826123b2565b9050611aa7565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611b7057611b70611b1e565b60405290565b604051610220810167ffffffffffffffff81118282101715611b7057611b70611b1e565b600082601f830112611bab57600080fd5b813567ffffffffffffffff80821115611bc657611bc6611b1e565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611c0c57611c0c611b1e565b81604052838152866020858801011115611c2557600080fd5b836020870160208301376000602085830101528094505050505092915050565b801515811461088b57600080fd5b60008060408385031215611c6657600080fd5b823567ffffffffffffffff811115611c7d57600080fd5b611c8985828601611b9a565b9250506020830135611c9a81611c45565b809150509250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461088b57600080fd5b8035611cd281611ca5565b919050565b600060208284031215611ce957600080fd5b813561021881611ca5565b600080600060608486031215611d0957600080fd5b83359250602084013567ffffffffffffffff811115611d2757600080fd5b611d3386828701611b9a565b9250506040840135611d4481611c45565b809150509250925092565b60008060408385031215611d6257600080fd5b8235611d6d81611ca5565b946020939093013593505050565b600080600080600060808688031215611d9357600080fd5b853594506020860135611da581611ca5565b935060408601359250606086013567ffffffffffffffff80821115611dc957600080fd5b818801915088601f830112611ddd57600080fd5b813581811115611dec57600080fd5b896020828501011115611dfe57600080fd5b9699959850939650602001949392505050565b600060208284031215611e2357600080fd5b5035919050565b600082601f830112611e3b57600080fd5b60405161010080820182811067ffffffffffffffff82111715611e6057611e60611b1e565b60405283018185821115611e7357600080fd5b845b82811015611e8d578035825260209182019101611e75565b509195945050505050565b80356fffffffffffffffffffffffffffffffff81168114611cd257600080fd5b803567ffffffffffffffff81168114611cd257600080fd5b600060208284031215611ee257600080fd5b813567ffffffffffffffff80821115611efa57600080fd5b9083019060408286031215611f0e57600080fd5b611f16611b4d565b823582811115611f2557600080fd5b83016103008188031215611f3857600080fd5b611f40611b76565b8135815260208201356020820152611f5a60408301611cc7565b6040820152606082013560608201526080820135608082015260a082013560a0820152611f8a8860c08401611e2a565b60c08201526101c08083013560e08301526101e0611fa9818501611e98565b610100840152610200611fbd818601611eb8565b610120850152611fd06102208601611eb8565b610140850152611fe36102408601611eb8565b61016085015261026085013587811115611ffc57600080fd5b6120088c828801611b9a565b610180860152506102808501356101a08501526120286102a08601611eb8565b838501526102c0850135828501526102e085013581850152505050808352505060208301358281111561205a57600080fd5b61206687828601611b9a565b60208301525095945050505050565b60006020828403121561208757600080fd5b5051919050565b60005b838110156120a9578181015183820152602001612091565b50506000910152565b600081518084526120ca81602086016020860161208e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b85815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a06080820152600061213d60a08301846120b2565b979650505050505050565b60006020828403121561215a57600080fd5b815161021881611c45565b6000835161217781846020880161208e565b7f2e0000000000000000000000000000000000000000000000000000000000000090830190815283516121b181600184016020880161208e565b01600101949350505050565b60208152600061021860208301846120b2565b6000602082840312156121e257600080fd5b815161021881611ca5565b7f41523a7a65726f416464723a000000000000000000000000000000000000000081526000825161222581600c85016020870161208e565b91909101600c0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561021b5761021b612261565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008183825b60088110156122f75781518352602092830192909101906001016122d8565b5050506101008201905092915050565b6000835161231981846020880161208e565b83519083019061232d81836020880161208e565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361236757612367612261565b5060010190565b60ff818116838216019081111561021b5761021b612261565b60008261239657612396612232565b500490565b808202811582820484141761021b5761021b612261565b8181038181111561021b5761021b612261565b600181815b8085111561241e57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561240457612404612261565b8085161561241157918102915b93841c93908002906123ca565b509250929050565b6000826124355750600161021b565b816124425750600061021b565b816001811461245857600281146124625761247e565b600191505061021b565b60ff84111561247357612473612261565b50506001821b61021b565b5060208310610133831016604e8410600b84101617156124a1575081810a61021b565b6124ab83836123c5565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156124dd576124dd612261565b029392505050565b60006102188383612426565b60008261250057612500612232565b50069056fea26469706673582212209e7235233ea73cd822dc3fc71cb88aeed9bb6967b10cbcf6820dcc506b275d0164736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000005": { ++ "contractName": "TestERC20", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000003": "0x5072656465706c6f79455243323000000000000000000000000000000000001c", ++ "0x0000000000000000000000000000000000000000000000000000000000000004": "0x5052450000000000000000000000000000000000000000000000000000000006", ++ "0x0000000000000000000000000000000000000000000000000000000000000002": "0x00000000000000000000000000000000000000000000000000000000002ee000", ++ "0x0fbcff3234c0e4fa090508601e67e2155e18580b7c6ab4cb716e8ef2dca88184": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x55385a0c2ad17c21b4fe396be9b1f10f500e7eebad11fcd1afe36c68ee5fa4cd": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x478db7f3c43c550c1670aa0517a6d515b9e15f22ea28e4f99e8c5f8bcf58e406": "0x00000000000000000000000000000000000000000000000000000000000fa000" ++ }, ++ "code": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610908565b60405180910390f35b6100ff6100fa36600461099d565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109c7565b6102ac565b604051601281526020016100e3565b6100ff61015136600461099d565b6102d0565b610113610164366004610a03565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031c565b6100ff6101a236600461099d565b61032b565b6100ff6101b536600461099d565b610401565b6101136101c8366004610a25565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a58565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a58565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040f565b60019150505b92915050565b6000336102ba8582856105c2565b6102c5858585610699565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610317908790610aab565b61040f565b60606004805461020f90610a58565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c5828686840361040f565b6000336102a0818585610699565b73ffffffffffffffffffffffffffffffffffffffff83166104b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff8216610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106935781811015610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103eb565b610693848484840361040f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff82166107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103eb565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610693565b600060208083528351808285015260005b8181101561093557858101830151858201604001528201610919565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461099857600080fd5b919050565b600080604083850312156109b057600080fd5b6109b983610974565b946020939093013593505050565b6000806000606084860312156109dc57600080fd5b6109e584610974565b92506109f360208501610974565b9150604084013590509250925092565b600060208284031215610a1557600080fd5b610a1e82610974565b9392505050565b60008060408385031215610a3857600080fd5b610a4183610974565b9150610a4f60208401610974565b90509250929050565b600181811c90821680610a6c57607f821691505b602082108103610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122066fafca01d431074160bbb4b6fc540b95eb31fa8c4479f896ac206b98463328464736f6c63430008120033", ++ "balance": "0x0" ++ } ++}
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+139
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/core/taiko_genesis/internal-1.json taikoxyz/taiko-geth/core/taiko_genesis/internal-1.json +new file mode 100644 +index 0000000000000000000000000000000000000000..36fd1e3955554fd396ab16c2da42dc0a5328b3ed +--- /dev/null ++++ taikoxyz/taiko-geth/core/taiko_genesis/internal-1.json +@@ -0,0 +1,139 @@ ++{ ++ "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x70997970C51812dc3A010C7d01b50e0d17dc79C8": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x90F79bf6EB2c4f870365E785982E1f101E93b906": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x976EA74026E726554dB657fA54763abd0C3a0aa9": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x489Fc09698479ac665A7c91502acDB69A047Fe1a": { ++ "contractName": "LibTrieProof", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063a54274621461003a575b600080fd5b61004d61004836600461173e565b610061565b604051901515815260200160405180910390f35b600080806100718486018661188e565b6040516bffffffffffffffffffffffff1960608c901b166020820152919350915060009081906100b490603401604051602081830303815290604052858d610184565b915091508161010a5760405162461bcd60e51b815260206004820152601960248201527f4c54503a696e76616c6964206163636f756e742070726f6f660000000000000060448201526064015b60405180910390fd5b6000610115826101ad565b9050600061013c8260028151811061012f5761012f6118f2565b60200260200101516101e6565b90506101738b60405160200161015491815260200190565b60405160208183030381529060405261016c8c6102e9565b87846102fc565b9d9c50505050505050505050505050565b60006060600061019386610316565b90506101a0818686610348565b9250925050935093915050565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906101e090610423565b92915050565b600060218260000151111561023d5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610101565b600080600061024b8561060f565b91945092509050600081600181111561026657610266611908565b146102b35760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610101565b60008386602001516102c59190611934565b805190915060208410156102df5760208490036101000a90045b9695505050505050565b60606101e06102f783610959565b610a8d565b60008061030886610316565b90506102df81868686610afc565b6060818051906020012060405160200161033291815260200190565b6040516020818303038152906040529050919050565b60006060600061035785610b39565b90506000806000610369848a89610c32565b8151929550909350915015808061037d5750815b6103c95760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610101565b6000816103e55760405180602001604052806000815250610411565b610411866103f4600188611947565b81518110610404576104046118f2565b6020026020010151611052565b919b919a509098505050505050505050565b60606000806104318461060f565b9193509091506001905081600181111561044d5761044d611908565b1461049a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610101565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816104b35790505090506000835b8651811015610604576020821061054c5760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b6064820152608401610101565b6000806105896040518060400160405280858c6000015161056d9190611947565b8152602001858c602001516105829190611934565b905261060f565b5091509150604051806040016040528083836105a59190611934565b8152602001848b602001516105ba9190611934565b8152508585815181106105cf576105cf6118f2565b60209081029190910101526105e5600185611934565b93506105f18183611934565b6105fb9084611934565b925050506104e0565b508152949350505050565b6000806000808460000151116106675760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610101565b6020840151805160001a607f811161068c576000600160009450945094505050610952565b60b781116107085760006106a1608083611947565b9050808760000151116106f65760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610101565b60019550935060009250610952915050565b60bf81116107f757600061071d60b783611947565b9050808760000151116107725760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610101565b600183015160208290036101000a900461078c8183611934565b8851116107db5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610101565b6107e6826001611934565b965094506000935061095292505050565b60f7811161087257600061080c60c083611947565b9050808760000151116108615760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610101565b600195509350849250610952915050565b600061087f60f783611947565b9050808760000151116108d45760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610101565b600183015160208290036101000a90046108ee8183611934565b8851116109365760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b6044820152606401610101565b610941826001611934565b965094506001935061095292505050565b9193909250565b606060008260405160200161097091815260200190565b604051602081830303815290604052905060005b60208110156109c55781818151811061099f5761099f6118f2565b01602001516001600160f81b0319166000036109c5576109be8161195a565b9050610984565b60006109d2826020611947565b67ffffffffffffffff8111156109ea576109ea6117eb565b6040519080825280601f01601f191660200182016040528015610a14576020820181803683370190505b50905060005b8151811015610a84578383610a2e8161195a565b945081518110610a4057610a406118f2565b602001015160f81c60f81b828281518110610a5d57610a5d6118f2565b60200101906001600160f81b031916908160001a905350610a7d8161195a565b9050610a1a565b50949350505050565b60608082516001148015610abb5750608083600081518110610ab157610ab16118f2565b016020015160f81c105b15610ac75750816101e0565b610ad383516080611079565b83604051602001610ae59291906119a3565b604051602081830303815290604052905092915050565b6000806000610b0c878686610348565b91509150818015610b2e57508051602080830191909120875191880191909120145b979650505050505050565b60606000610b46836101ad565b90506000815167ffffffffffffffff811115610b6457610b646117eb565b604051908082528060200260200182016040528015610ba957816020015b6040805180820190915260608082526020820152815260200190600190039081610b825790505b50905060005b8251811015610c2a576000610bdc848381518110610bcf57610bcf6118f2565b6020026020010151611223565b90506040518060400160405280610bf2836101ad565b815260200182815250838381518110610c0d57610c0d6118f2565b60200260200101819052505080610c239061195a565b9050610baf565b509392505050565b600060606000806000610c44876112b3565b90506000869050600080610c6b604051806040016040528060608152602001606081525090565b60005b8c5181101561102a578c8181518110610c8957610c896118f2565b602002602001015191508284610c9f9190611934565b9350610cac600188611934565b965083600003610d09578482602001518051906020012014610d045760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b6044820152606401610101565b610dcb565b602082602001515110610d70578482602001518051906020012014610d045760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610101565b84610d7e83602001516113ec565b14610dcb5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610101565b610dd7601060016119c0565b60ff1682600001515103610e45578551841461102a576000868581518110610e0157610e016118f2565b01602001518351805160f89290921c925060009183908110610e2557610e256118f2565b60200260200101519050610e3881611414565b965060019450505061101a565b81515160011901610fd2576000610e5b8361144a565b9050600081600081518110610e7257610e726118f2565b016020015160f81c90506000610e896002836119ef565b610e94906002611a11565b90506000610ea5848360ff1661146e565b90506000610eb38b8a61146e565b90506000610ec183836114a4565b905060ff851660021480610ed8575060ff85166003145b15610f1257808351148015610eed5750808251145b15610eff57610efc818b611934565b99505b50600160ff1b995061102a945050505050565b60ff85161580610f25575060ff85166001145b15610f7b5782518114610f455750600160ff1b995061102a945050505050565b610f6c8860000151600181518110610f5f57610f5f6118f2565b6020026020010151611414565b9a50975061101a945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b6064820152608401610101565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610101565b6110238161195a565b9050610c6e565b50600160ff1b84148661103d878661146e565b909e909d50909b509950505050505050505050565b805180516060916101e09161106990600190611947565b81518110610bcf57610bcf6118f2565b60608060388410156110e057604080516001808252818301909252906020820181803683370190505090506110ae83856119c0565b60f81b816000815181106110c4576110c46118f2565b60200101906001600160f81b031916908160001a90535061121c565b600060015b6110ef8187611a2a565b15611112576110fd8261195a565b915061110b61010082611a3e565b90506110e5565b61111d826001611934565b67ffffffffffffffff811115611135576111356117eb565b6040519080825280601f01601f19166020018201604052801561115f576020820181803683370190505b50925061116c85836119c0565b6111779060376119c0565b60f81b8360008151811061118d5761118d6118f2565b60200101906001600160f81b031916908160001a905350600190505b818111611219576101006111bd8284611947565b6111c990610100611b39565b6111d39088611a2a565b6111dd9190611b45565b60f81b8382815181106111f2576111f26118f2565b60200101906001600160f81b031916908160001a9053506112128161195a565b90506111a9565b50505b9392505050565b606060008060006112338561060f565b91945092509050600081600181111561124e5761124e611908565b1461129b5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610101565b6112aa8560200151848461151e565b95945050505050565b60606000825160026112c59190611a3e565b67ffffffffffffffff8111156112dd576112dd6117eb565b6040519080825280601f01601f191660200182016040528015611307576020820181803683370190505b50905060005b83518110156113e557600484828151811061132a5761132a6118f2565b01602001516001600160f81b031916901c82611347836002611a3e565b81518110611357576113576118f2565b60200101906001600160f81b031916908160001a9053506010848281518110611382576113826118f2565b0160200151611394919060f81c6119ef565b60f81b826113a3836002611a3e565b6113ae906001611934565b815181106113be576113be6118f2565b60200101906001600160f81b031916908160001a9053506113de8161195a565b905061130d565b5092915050565b600060208251101561140057506020015190565b818060200190518101906101e09190611b59565b600060606020836000015110156114355761142e836115c7565b9050611441565b61143e83611223565b90505b61121c816113ec565b60606101e06114698360000151600081518110610bcf57610bcf6118f2565b6112b3565b60608251821061148d57506040805160208101909152600081526101e0565b61121c838384865161149f9190611947565b6115d2565b6000805b8084511180156114b85750808351115b801561150957508281815181106114d1576114d16118f2565b602001015160f81c60f81b6001600160f81b0319168482815181106114f8576114f86118f2565b01602001516001600160f81b031916145b1561121c576115178161195a565b90506114a8565b606060008267ffffffffffffffff81111561153b5761153b6117eb565b6040519080825280601f01601f191660200182016040528015611565576020820181803683370190505b509050805160000361157857905061121c565b8484016020820160005b8581101561159a578281015182820152602001611582565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b60606101e082611728565b6060816115e081601f611934565b101561161f5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610101565b8261162a8382611934565b10156116695760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610101565b6116738284611934565b845110156116b75760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610101565b6060821580156116d65760405191506000825260208201604052610a84565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561170f5780518352602092830192016116f7565b5050858452601f01601f19166040525050949350505050565b60606101e082602001516000846000015161151e565b60008060008060008060a0878903121561175757600080fd5b8635955060208701356001600160a01b038116811461177557600080fd5b94506040870135935060608701359250608087013567ffffffffffffffff808211156117a057600080fd5b818901915089601f8301126117b457600080fd5b8135818111156117c357600080fd5b8a60208285010111156117d557600080fd5b6020830194508093505050509295509295509295565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261181257600080fd5b813567ffffffffffffffff8082111561182d5761182d6117eb565b604051601f8301601f19908116603f01168101908282118183101715611855576118556117eb565b8160405283815286602085880101111561186e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156118a157600080fd5b823567ffffffffffffffff808211156118b957600080fd5b6118c586838701611801565b935060208501359150808211156118db57600080fd5b506118e885828601611801565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156101e0576101e061191e565b818103818111156101e0576101e061191e565b60006001820161196c5761196c61191e565b5060010190565b6000815160005b81811015611994576020818501810151868301520161197a565b50600093019283525090919050565b60006119b86119b28386611973565b84611973565b949350505050565b60ff81811683821601908111156101e0576101e061191e565b634e487b7160e01b600052601260045260246000fd5b600060ff831680611a0257611a026119d9565b8060ff84160691505092915050565b60ff82811682821603908111156101e0576101e061191e565b600082611a3957611a396119d9565b500490565b80820281158282048414176101e0576101e061191e565b600181815b80851115611a90578160001904821115611a7657611a7661191e565b80851615611a8357918102915b93841c9390800290611a5a565b509250929050565b600082611aa7575060016101e0565b81611ab4575060006101e0565b8160018114611aca5760028114611ad457611af0565b60019150506101e0565b60ff841115611ae557611ae561191e565b50506001821b6101e0565b5060208310610133831016604e8410600b8410161715611b13575081810a6101e0565b611b1d8383611a55565b8060001904821115611b3157611b3161191e565b029392505050565b600061121c8383611a98565b600082611b5457611b546119d9565b500690565b600060208284031215611b6b57600080fd5b505191905056fea264697066735822122089c52cc4ef50a5809ef7d03c56023e58cbc47b629b8e36e895509de5ee91d97c64736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x4e97243Ed38B3EBFeA36670f04c196F7440C4ECe": { ++ "contractName": "LibBridgeRetry", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200f731b40b9f0eb3b18a5d4800d220eb7eabce85b95986566c66c0bc5a95a569064736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x54b475ed81c3e2d061D4750664710Fc0FF180a57": { ++ "contractName": "LibBridgeProcess", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122088061568e0924f349b162a4d90a55180d6eed3f3537ccbaa4e705c2f0c53f4b564736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000006": { ++ "contractName": "AddressManager", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", ++ "0x6b013a0e951a047258ecfbbfd8b9a49a53289bd1f7cc04707d44361932bc1ff4": "0x0000000000000000000000000000777700000000000000000000000000000001", ++ "0x6e6c3efa1ea957de4ff121455278e0e3ab0563ed7474b931f9489cdd3cf93cfa": "0x0000000000000000000000000000777700000000000000000000000000000004", ++ "0xdb36eb862ffcc1e04a0530d9d2a0a0906c10dfbb4c92f3215c4a6c5c851fb36d": "0x0000000000000000000000000000777700000000000000000000000000000002", ++ "0xb89e0d65684560eb877371fa3bbdc47dfc9efc7e113ec86ce9ae0fa1c43b85b9": "0x0000000000000000000000000000777700000000000000000000000000000003", ++ "0x37ecd6787fe0bc6398f481a64352c06039ac5637068ea40e2973573d1042f212": "0x0000000000000000000000000000777700000000000000000000000000000007" ++ }, ++ "code": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c8063656b06a414610067578063715018a6146100b75780638da5cb5b146100c1578063decd8e39146100d2578063e1c7392a146100e5578063f2fde38b146100ed575b600080fd5b61009b610075366004610428565b60009182526065602090815260408084209284529190529020546001600160a01b031690565b6040516001600160a01b03909116815260200160405180910390f35b6100bf610100565b005b6033546001600160a01b031661009b565b6100bf6100e0366004610466565b610114565b6100bf610196565b6100bf6100fb36600461049b565b6102ac565b610108610322565b610112600061037c565b565b61011c610322565b600083815260656020908152604080832085845282529182902080546001600160a01b038581166001600160a01b0319831681179093558451928352169181018290529091849186917fe41a6e8584d6e19a0dfc5f9331be4ebe61b5f025d45da164c9ca6ee9b837cea9910160405180910390a350505050565b600054610100900460ff16158080156101b65750600054600160ff909116105b806101d05750303b1580156101d0575060005460ff166001145b6102385760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561025b576000805461ff0019166101001790555b6102636103ce565b80156102a9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6102b4610322565b6001600160a01b0381166103195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161022f565b6102a98161037c565b6033546001600160a01b031633146101125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166103f55760405162461bcd60e51b815260040161022f906104bd565b610112600054610100900460ff1661041f5760405162461bcd60e51b815260040161022f906104bd565b6101123361037c565b6000806040838503121561043b57600080fd5b50508035926020909101359150565b80356001600160a01b038116811461046157600080fd5b919050565b60008060006060848603121561047b57600080fd5b83359250602084013591506104926040850161044a565b90509250925092565b6000602082840312156104ad57600080fd5b6104b68261044a565b9392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220b92548ab061f4a8bac71e70e05ea2901a28e7edd3c53cc1a24fa425a5eb9657f64736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000001": { ++ "contractName": "TaikoL2", ++ "storage": { ++ "0x00000000000000000000000000000000000000000000000000000000000000cb": "0xf167b245aa70c0a5e2f44cd65a94f2b1c5c9e8c8ab059940e4bf1c47d7a39557", ++ "0x00000000000000000000000000000000000000000000000000000000000000cc": "0x0000000000bebc200000000058b8ef1c0000000485b9d2e799564d28c46075dd", ++ "0x00000000000000000000000000000000000000000000000000000000000000cd": "0x00000000000000000000000a9507f68000000000000000000000000064586f47" ++ }, ++ "code": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80639ee512f2116100c3578063e1848cb01161007c578063e1848cb01461031c578063ee82ac5e1461032f578063f2fde38b14610342578063f535bd5614610355578063f5c977401461036f578063f5d11edc1461038957600080fd5b80639ee512f2146102a7578063a86f9d9e146102c0578063b8914ce4146102d3578063bacb386d146102e6578063c7b96908146102f9578063dac5df781461031357600080fd5b8063539b8ade11610115578063539b8ade14610223578063591aad8a146102365780636c6563f614610268578063715018a61461027b5780638da5cb5b146102835780638f3ca30d1461029457600080fd5b806310da373814610152578063210c9fe81461018c5780633ab76e9f146101be5780633d384a4b146101e35780633fa85350146101f8575b600080fd5b6101797f92954368afd3caa1f3ce3ead0069c1af414054aefe1ef9aeacc1bf426222ce3881565b6040519081526020015b60405180910390f35b60cc546101a690600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610183565b6097546001600160a01b03165b6040516001600160a01b039091168152602001610183565b6101f66101f136600461169e565b6103a3565b005b60cc5461020b906001600160801b031681565b6040516001600160801b039091168152602001610183565b60cd546101a6906001600160401b031681565b6102496102443660046116e4565b610609565b6040805160ff9094168452602084019290925290820152606001610183565b6101cb61027636600461172a565b610844565b6101f661085b565b6065546001600160a01b03166101cb565b6101f66102a2366004611774565b61086f565b6101cb71777735367b36bc9b61c50022d9d0700db4ec81565b6101cb6102ce3660046117b5565b610c3c565b6101796102e13660046117e1565b610c52565b6101796102f43660046117e1565b610c8e565b60cd546101a690600160401b90046001600160401b031681565b61017960cb5481565b61017961032a3660046117fa565b610cc7565b61017961033d3660046117e1565b610ce3565b6101f661035036600461183f565b610d30565b60cd546101a690600160801b90046001600160401b031681565b60cc546101a690600160801b90046001600160401b031681565b60cd546101a690600160c01b90046001600160401b031681565b3371777735367b36bc9b61c50022d9d0700db4ec146103d557604051636494e9f760e01b815260040160405180910390fd5b60006103e2600143611872565b905080406000806103f284610da9565b915091508160cb541461042b5760cb54604051636340d9fb60e11b81526004810191909152602481018390526044015b60405180910390fd5b60cb819055600084815260c96020908152604080832086905560cd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c1690810291909117909155815180830183528c81528084018c815282865260ca8552948390209051815593516001949094019390935580518b81529182018a90527f7528bbd1cef0e5d13408706892a51ee8ef82bbf33d4ec0c37216f8beba71205b910160405180910390a260cc54600090600160c01b90046001600160401b03161561053f5760cd546105119061050a906001600160401b031642611872565b4588610e3c565b60cd80546001600160401b03909216600160801b0267ffffffffffffffff60801b1990921691909117905590505b80481461057257604051634083acad60e01b81526001600160401b03808316600483015248166024820152604401610422565b60cd805467ffffffffffffffff1916426001600160401b03908116918217909255604080514384168152848416602082015245909316908301526060820152608081018590524460a08201524160c082015263ffffffff461660e08201527f4dcb01f99c4a2c27a16ab38d00ec92434f8231be81fa62e058f260d3c7156029906101000160405180910390a1505050505050505050565b60008060008360ff1660011415801561062657508360ff16600214155b156106445760405163bcd2d90d60e01b815260040160405180910390fd5b8360ff16600114610675577fc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5610697565b7f79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f817985b915060008460ff166001146106cc577fad77eceea844778cb4376153fc8f06f12f1695df4585bf75bfb17ec19ce908186106ee565b7fb4a95509ce05fe8d45987859a067780d16a367c0e2cacf79cd301b93fb7179405b905060008560ff16600114610723577f71620584f61c57e688bbd3fd7a39a036e588d962c4c830f3dacbc15c917e02f2610745565b7f45b59254b0320fd853f3f38ac574999e91bd75fd5e6cab9c22c5e71fc6d276e45b82880192831001905060ff861660010361077f576107788282600170014551231950b75fc4402da1732fc9bebe19610ee9565b92506107ee565b6107c77f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a16107c28484600170014551231950b75fc4402da1732fc9bebe19610ee9565b610f38565b90925090506107eb8282600170014551231950b75fc4402da1732fc9bebe19610ee9565b92505b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561083b576108328370014551231950b75fc4402da1732fc9bebe19611872565b92506001851894505b50509250925092565b6000610851848484610f57565b90505b9392505050565b610863611070565b61086d60006110ca565b565b600054610100900460ff161580801561088f5750600054600160ff909116105b806108a95750303b1580156108a9575060005460ff166001145b61090c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610422565b6000805460ff19166001179055801561092f576000805461ff0019166101001790555b600146111580610943575063ffffffff4610155b15610961576040516306cffa2760e01b815260040160405180910390fd5b600143111561098357604051635a0f9e4160e11b815260040160405180910390fd5b6109936040830160208401611885565b6001600160401b031615610b98576109ae6020830183611885565b6001600160401b031615806109d957506109ce6060830160408401611885565b6001600160401b0316155b806109fa57506109ef6080830160608401611885565b6001600160401b0316155b80610a1b5750610a1060a0830160808401611885565b6001600160401b0316155b15610a3957604051639cc448b560e01b815260040160405180910390fd5b6000610a80610a4e6060850160408601611885565b610a5b6020860186611885565b610a6b6080870160608801611885565b610a7b60a0880160808901611885565b61111c565b60cc80546fffffffffffffffffffffffffffffffff19166001600160801b0392831617905590915081161580610ac657506001600160401b036001600160801b03821610155b80610ada575060cc546001600160801b0316155b15610af857604051639cc448b560e01b815260040160405180910390fd5b60cc805467ffffffffffffffff60801b1916600160801b6001600160401b03841602179055610b2d6040840160208501611885565b60cc80546001600160401b0392909216600160c01b026001600160c01b039092169190911790556002610b666060850160408601611885565b610b7091906118b6565b60cd60106101000a8154816001600160401b0302191690836001600160401b03160217905550505b60cd805467ffffffffffffffff1916426001600160401b0316179055610bbd8361121b565b610bc643610da9565b5060cb554315610bf1576000610bdd600143611872565b600081815260c96020526040902090409055505b8015610c37576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610c49468484610f57565b90505b92915050565b6000808215610c615782610c75565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020600101549392505050565b6000808215610c9d5782610cb1565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020549392505050565b6000610cda8463ffffffff168484610e3c565b50949350505050565b6000438210610cf457506000919050565b4382108015610d0e5750610d0a61010043611872565b8210155b15610d1857504090565b50600090815260c9602052604090205490565b919050565b610d38611070565b6001600160a01b038116610d9d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610422565b610da6816110ca565b50565b600080610db4611667565b60005b60ff81108015610dca5750806001018510155b15610dfc576000198186030180408360ff83066101008110610dee57610dee6118dc565b602002015250600101610db7565b5046611fe082015261200081209250834081610e1960ff876118f2565b6101008110610e2a57610e2a6118dc565b60200201526120009020919391925050565b600080806202bf206001600160401b03851611610e5a576000610e61565b6202bf2084035b60cd5460cc54919250600160801b90046001600160401b039081168184160191600160c01b90048116880290610ea39082610e9c8582611234565b039061124a565b60cc54909450610ed293506001600160401b03600160801b82041692506001600160801b03169050838761125f565b915081600003610ee157600191505b935093915050565b600060405160408152602080820152602060408201528460608201528560808201528360a08201528260c082015260208160e08360056107d05a03fa610f2e57600080fd5b5195945050505050565b6000806000198385098385029250828110838203039150509250929050565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcc9190611906565b905081610854576040516001600160a01b03821615159061103b90869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b604051602081830303815290604052906110685760405162461bcd60e51b81526004016104229190611923565b509392505050565b6065546001600160a01b0316331461086d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610422565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080856001600160401b031660000361113857611138611971565b60006111456002886118b6565b90506111636001600160401b038816680755bf798b4a1bf1e4611987565b925061118261117d84886001600160401b0316848961125f565b61131e565b915060006111928484848961125f565b905060006111ac8585856111a78b60026119a1565b61125f565b90506000826111bd836127106119cc565b6111c791906119e3565b9050806001600160401b0316876001600160401b03161461120e576040516331c2ec2360e21b81526001600160401b03808916600483015282166024820152604401610422565b5050505094509492505050565b61122361138b565b61122b6113ba565b610da6816113e9565b60008183116112435781610c49565b5090919050565b60008183116112595782610c49565b50919050565b60006001600160801b0385161580159061128157506001600160801b03841615155b61128d5761128d611971565b60006001600160401b038316156112a457826112a7565b60015b905060006112be856001600160401b031688611432565b905060006112de6112cf84886119f7565b6001600160401b031689611432565b90506001600160801b0387166001600160401b0384166112fe8484611872565b61130891906119e3565b61131291906119e3565b98975050505050505050565b60006001600160801b038211156113875760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610422565b5090565b600054610100900460ff166113b25760405162461bcd60e51b815260040161042290611a1e565b61086d611484565b600054610100900460ff166113e15760405162461bcd60e51b815260040161042290611a1e565b61086d6114b1565b6001600160a01b03811661141057604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806114486001600160801b038416856119cc565b9050680755bf798b4a1bf1e48110611473576040516372de381d60e01b815260040160405180910390fd5b61147c816114e1565b949350505050565b600054610100900460ff166114ab5760405162461bcd60e51b815260040161042290611a1e565b60018055565b600054610100900460ff166114d85760405162461bcd60e51b815260040161042290611a1e565b61086d336110ca565b6000680248ce36a70cb26b3e1982136114fc57506000919050565b680755bf798b4a1bf1e5821261152557604051631a93c68960e11b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b6d2c06887d92262d378b9593af35346c09791803c2923d5d9721c3da80929091056001605f1b0190921d6bb17217f7d1cf79abc9e3b39881029095039081018102606090811d6d019dd9374d4315c8464a395fc09881016c1bff318b126baa436ea9aeaffd19840102821d93840193016d29c9ad45cc0beb0a2ff097a7bab40192909202821d6dcf3c27b2e487711b467e90f19320016c22fcd1cffa6fa000f6e27eeca082018202831d6d022f98fbc368092c79210d196fa0018202831d6d13aaae3ba38de06adc25ebfacc0901820290921d6d624dcbeb5e25df590e409325888a01026d360d7aeea093263ec6495851bd9760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b604051806120000160405280610100906020820280368337509192915050565b80356001600160401b0381168114610d2b57600080fd5b600080600080608085870312156116b457600080fd5b84359350602085013592506116cb60408601611687565b91506116d960608601611687565b905092959194509250565b600080604083850312156116f757600080fd5b82359150602083013560ff8116811461170f57600080fd5b809150509250929050565b80358015158114610d2b57600080fd5b60008060006060848603121561173f57600080fd5b83359250602084013591506117566040850161171a565b90509250925092565b6001600160a01b0381168114610da657600080fd5b60008082840360c081121561178857600080fd5b83356117938161175f565b925060a0601f19820112156117a757600080fd5b506020830190509250929050565b600080604083850312156117c857600080fd5b823591506117d86020840161171a565b90509250929050565b6000602082840312156117f357600080fd5b5035919050565b60008060006060848603121561180f57600080fd5b833563ffffffff8116811461182357600080fd5b925061183160208501611687565b915061175660408501611687565b60006020828403121561185157600080fd5b81356108548161175f565b634e487b7160e01b600052601160045260246000fd5b81810381811115610c4c57610c4c61185c565b60006020828403121561189757600080fd5b610c4982611687565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b03808416806118d0576118d06118a0565b92169190910492915050565b634e487b7160e01b600052603260045260246000fd5b600082611901576119016118a0565b500690565b60006020828403121561191857600080fd5b81516108548161175f565b600060208083528351808285015260005b8181101561195057858101830151858201604001528201611934565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052600160045260246000fd5b60006001600160801b03808416806118d0576118d06118a0565b6001600160401b038181168382160280821691908281146119c4576119c461185c565b505092915050565b8082028115828204841417610c4c57610c4c61185c565b6000826119f2576119f26118a0565b500490565b6001600160401b03818116838216019080821115611a1757611a1761185c565b5092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220164408943d146de5931c8102d2aef6caacb374d927d48456e904de7daa94972e64736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000004": { ++ "contractName": "Bridge", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" ++ }, ++ "code": "0x6080604052600436106101235760003560e01c80638da5cb5b116100a0578063ce70f39b11610064578063ce70f39b146103e0578063d0496d6a14610400578063f2fde38b1461046f578063f98039191461048f578063fee99b22146104af57600080fd5b80638da5cb5b1461034f57806396e178521461036d578063a4444efd14610380578063a86f9d9e146103a0578063bac443e2146103c057600080fd5b80635817b0c3116100e75780635817b0c3146102ac5780635d0bd986146102da578063606b5b74146102fa5780636c6563f61461031a578063715018a61461033a57600080fd5b806319ab453c146101c8578063343b643c146101e85780633ab76e9f1461022d5780635075a9d41461025f578063540be6a31461028c57600080fd5b366101c3576101416a1d1bdad95b97dd985d5b1d60aa1b60016104cf565b6001600160a01b0316336001600160a01b03161415801561018c57506101766a195d1a195c97dd985d5b1d60aa1b60016104cf565b6001600160a01b0316336001600160a01b031614155b80156101a357506065546001600160a01b03163314155b156101c1576040516345dd044560e11b815260040160405180910390fd5b005b600080fd5b3480156101d457600080fd5b506101c16101e3366004612afc565b6104e5565b3480156101f457600080fd5b50610218610203366004612b19565b600090815260cd602052604090205460ff1690565b60405190151581526020015b60405180910390f35b34801561023957600080fd5b506097546001600160a01b03165b6040516001600160a01b039091168152602001610224565b34801561026b57600080fd5b5061027f61027a366004612b19565b6105fd565b6040516102249190612b6a565b34801561029857600080fd5b506102186102a7366004612b19565b610608565b3480156102b857600080fd5b506102cc6102c7366004612b91565b610614565b604051908152602001610224565b3480156102e657600080fd5b506102186102f5366004612b19565b610627565b34801561030657600080fd5b506102cc610315366004612b19565b61063a565b34801561032657600080fd5b50610247610335366004612bd3565b610645565b34801561034657600080fd5b506101c161065c565b34801561035b57600080fd5b506065546001600160a01b0316610247565b6102cc61037b366004612b91565b610670565b34801561038c57600080fd5b5061021861039b366004612c54565b61069e565b3480156103ac57600080fd5b506102476103bb366004612ca6565b6104cf565b3480156103cc57600080fd5b506101c16103db366004612cd6565b6106b6565b3480156103ec57600080fd5b506102186103fb366004612c54565b6106da565b34801561040c57600080fd5b50604080516060808201835260008083526020808401829052928401528251808201845260ca5480825260cb546001600160a01b0390811683860190815260cc549387019384528651928352511693810193909352519282019290925201610224565b34801561047b57600080fd5b506101c161048a366004612afc565b6106e9565b34801561049b57600080fd5b506101c16104aa366004612d3e565b610762565b3480156104bb57600080fd5b506101c16104ca366004612cd6565b610780565b60006104dc468484610796565b90505b92915050565b600054610100900460ff16158080156105055750600054600160ff909116105b8061051f5750303b15801561051f575060005460ff166001145b6105875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156105aa576000805461ff0019166101001790555b6105b3826108af565b80156105f9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006104df826108c8565b60006104df30836108f3565b60006104df61062283612e94565b6109d4565b60006106333083610a04565b5092915050565b60006104df82610a8d565b6000610652848484610796565b90505b9392505050565b610664610ac8565b61066e6000610b22565b565b600061067a610b74565b61068e60c93061068985612e94565b610bcd565b905061069960018055565b919050565b60006106ad3086868686610eae565b95945050505050565b6106be610b74565b6106cc60c930858585611011565b6106d560018055565b505050565b60006106ad3086868686611302565b6106f1610ac8565b6001600160a01b0381166107565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161057e565b61075f81610b22565b50565b61076a610b74565b61077760c9308484611587565b6105f960018055565b610788610b74565b6106cc60c9308585856117bf565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa1580156107e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080b9190612f95565b905081610655576040516001600160a01b03821615159061087a90869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b604051602081830303815290604052906108a75760405162461bcd60e51b815260040161057e9190613002565b509392505050565b6108b7611cbe565b6108bf611ced565b61075f81611d1c565b6000806108d483610a8d565b80549091508060038111156108eb576108eb612b32565b949350505050565b604051635437cecf60e11b81526000906001600160a01b0384169063a86f9d9e90610922908490600401613015565b602060405180830381865afa15801561093f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109639190612f95565b604051631933b5e360e11b8152306004820152602481018490526001600160a01b0391909116906332676bc690604401602060405180830381865afa1580156109b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104dc9190613037565b6000816040516020016109e79190613054565b604051602081830303815290604052805190602001209050919050565b600080836001600160a01b0316636c6563f68460016040518363ffffffff1660e01b8152600401610a3692919061314e565b602060405180830381865afa158015610a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a779190612f95565b6001600160a01b03811615159590945092505050565b60006040518060400160405280600e81526020016d4d4553534147455f53544154555360901b815250826040516020016109e792919061316d565b6065546001600160a01b0316331461066e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161057e565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260015403610bc65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161057e565b6002600155565b60808101516000906001600160a01b0316610bfb576040516301b1868360e71b815260040160405180910390fd5b600080610c0c858560600151610a04565b91509150811580610c205750468460600151145b15610c3e5760405163e822b48d60e01b815260040160405180910390fd5b60a08401516001600160a01b03161580610c6d5750806001600160a01b03168460a001516001600160a01b0316145b15610c8b5760405163b9ad6a0f60e01b815260040160405180910390fd5b60008461012001518561010001518660e00151610ca891906131a5565b610cb291906131a5565b9050348114610cd457604051632609a19760e21b815260040160405180910390fd5b604051635437cecf60e11b81526000906001600160a01b0388169063a86f9d9e90610d04906001906004016131b8565b602060405180830381865afa158015610d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d459190612f95565b9050610d5a6001600160a01b03821683611d65565b8754886000610d68836131d7565b909155508652336020870152466040870152610d83866109d4565b604051635437cecf60e11b81529095506001600160a01b0388169063a86f9d9e90610db390600090600401613015565b602060405180830381865afa158015610dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df49190612f95565b6001600160a01b03166366ca2bc0866040518263ffffffff1660e01b8152600401610e2191815260200190565b6020604051808303816000875af1158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6491906131f0565b50847f47866f7dacd4a276245be6ed543cae03c9c17eb17e6980cee28e3dd168b7f9f387604051610e959190613054565b60405180910390a2505050509392505050565b60018055565b600080866001600160a01b0316636c6563f68660006040518363ffffffff1660e01b8152600401610ee092919061314e565b602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f219190612f95565b604051635437cecf60e11b81529091506001600160a01b0388169063a86f9d9e90610f5190600090600401613015565b602060405180830381865afa158015610f6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f929190612f95565b6001600160a01b0316635221f61386838988886040518663ffffffff1660e01b8152600401610fc5959493929190613209565b602060405180830381865afa158015610fe2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110069190613037565b979650505050505050565b600061102360a0850160808601612afc565b6001600160a01b03160361104a576040516301b1868360e71b815260040160405180910390fd5b4683604001351461106e5760405163e822b48d60e01b815260040160405180910390fd5b600061107c61062285612e94565b600081815260048801602052604090205490915060ff1615156001036110b55760405163afde133560e01b815260040160405180910390fd5b6110c6858286606001358686611302565b6110e35760405163498b0b1d60e01b815260040160405180910390fd5b60008181526004870160205260408120805460ff1916600117905561111161010086013560e08701356131a5565b905080156112a657604051635437cecf60e11b81526000906001600160a01b0388169063a86f9d9e90611149906001906004016131b8565b602060405180830381865afa158015611166573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118a9190612f95565b90506001600160a01b0381161561121f576001600160a01b03811663ba0bbd956111ba60a0890160808a01612afc565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052604401600060405180830381600087803b15801561120257600080fd5b505af1158015611216573d6000803e3d6000fd5b505050506112a4565b600061123160a0880160808901612afc565b6001600160a01b03168360405160006040518083038185875af1925050503d806000811461127b576040519150601f19603f3d011682016040523d82523d6000602084013e611280565b606091505b50509050806112a25760405163f6664cf160e01b815260040160405180910390fd5b505b505b817fea00c741e39d1d9ab1c6703152d71f9da09a782ed4ae128414730dadbb9bd8476112d860a0880160808901612afc565b604080516001600160a01b039092168252602082018590520160405180910390a250505050505050565b60004684036113245760405163e822b48d60e01b815260040160405180910390fd5b60008590036113465760405163a6407c9360e01b815260040160405180910390fd5b6000611354838501856132f3565b604051635437cecf60e11b8152647461696b6f60d81b60048201526000602482018190529192506001600160a01b0389169063a86f9d9e90604401602060405180830381865afa1580156113ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d09190612f95565b8251610100015160405163bacb386d60e01b81526001600160801b0390911660048201526001600160a01b03919091169063bacb386d90602401602060405180830381865afa158015611427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144b91906131f0565b90508015806114645750815161146090611e1b565b8114155b15611474576000925050506106ad565b815160600151604051633632b1fb60e11b815273489Fc09698479ac665A7c91502acDB69A047Fe1a9163a5427462916001600160a01b038c1690636c6563f6906114c5908c9060009060040161314e565b602060405180830381865afa1580156114e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115069190612f95565b61150f8b610a8d565b602087015160405160e086901b6001600160e01b031916815261153a94939291600391600401613497565b602060405180830381865af4158015611557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157b9190613037565b98975050505050505050565b61014082013515806115965750805b156115dc576115ab60a0830160808401612afc565b6001600160a01b0316336001600160a01b0316146115dc5760405163d7f4fc9f60e01b815260040160405180910390fd5b60006115ea61062284612e94565b905060016115f7826108c8565b600381111561160857611608612b32565b1461162657604051631f6646b560e01b815260040160405180910390fd5b604051635437cecf60e11b81526000906001600160a01b0386169063a86f9d9e90611656906001906004016131b8565b602060405180830381865afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190612f95565b90506001600160a01b0381161561170757604051630d73bb3d60e41b815261010085013560048201526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b1580156116ee57600080fd5b505af1158015611702573d6000803e3d6000fd5b505050505b6117138685845a611e40565b1561172857611723826002611f98565b6117b7565b821561179f57611739826003611f98565b60008061174c60e0870160c08801612afc565b6001600160a01b03161461176f5761176a60e0860160c08701612afc565b61177f565b61177f60a0860160808701612afc565b90506117996001600160a01b038216610100870135611d65565b506117b7565b6117b76001600160a01b038216610100860135611d65565b505050505050565b6101408301351580156117f357506117dd60a0840160808501612afc565b6001600160a01b0316336001600160a01b031614155b156118115760405163398b635960e21b815260040160405180910390fd5b468360600135146118355760405163e822b48d60e01b815260040160405180910390fd5b600061184361062285612e94565b90506000611850826108c8565b600381111561186157611861612b32565b1461187f57604051632c3b0c4b60e01b815260040160405180910390fd5b6000856001600160a01b0316636c6563f6866040013560006040518363ffffffff1660e01b81526004016118b492919061314e565b602060405180830381865afa1580156118d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f59190612f95565b604051635437cecf60e11b81529091506001600160a01b0387169063a86f9d9e9061192590600090600401613015565b602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119669190612f95565b6001600160a01b0316635221f6138660400135838588886040518663ffffffff1660e01b815260040161199d959493929190613209565b602060405180830381865afa1580156119ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119de9190613037565b6119fb576040516314504c7360e31b815260040160405180910390fd5b6000610120860135611a1661010088013560e08901356131a5565b611a2091906131a5565b90506000876001600160a01b031663a86f9d9e60016040518263ffffffff1660e01b8152600401611a5191906131b8565b602060405180830381865afa158015611a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a929190612f95565b90506001600160a01b03811615801590611aac5750600082115b15611b0c57604051630d73bb3d60e41b8152600481018390526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b158015611af357600080fd5b505af1158015611b07573d6000803e3d6000fd5b505050505b611b3360e0880135611b2460a08a0160808b01612afc565b6001600160a01b031690611d65565b60008030611b4760c08b0160a08c01612afc565b6001600160a01b03161480611b7457506000611b6960c08b0160a08c01612afc565b6001600160a01b0316145b15611b89575060029050610100880135611c00565b6000611b9b60a08b0160808c01612afc565b6001600160a01b0316336001600160a01b031614611bbe57896101400135611bc0565b5a5b90506000611bd08d8c8a85611e40565b90508015611be15760029350611bfd565b60019350611bfd6001600160a01b0386166101008d0135611d65565b50505b611c0a8683611f98565b600080611c1d60e08c0160c08d01612afc565b6001600160a01b031614611c4057611c3b60e08b0160c08c01612afc565b611c50565b611c5060a08b0160808c01612afc565b90506001600160a01b0381163303611c8e576000611c73836101208d01356131a5565b9050611c886001600160a01b03831682611d65565b50611cb0565b611c9d336101208c0135611d65565b611cb06001600160a01b03821683611d65565b505050505050505050505050565b600054610100900460ff16611ce55760405162461bcd60e51b815260040161057e906134ca565b61066e612011565b600054610100900460ff16611d145760405162461bcd60e51b815260040161057e906134ca565b61066e612038565b6001600160a01b038116611d4357604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b801580611d7957506001600160a01b038216155b15611d82575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611dcf576040519150601f19603f3d011682016040523d82523d6000602084013e611dd4565b606091505b50509050806106d55760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b604482015260640161057e565b600080611e31611e2c846000612068565b612489565b80516020909101209392505050565b600081600003611e6357604051637f0e960960e11b815260040160405180910390fd5b6040518060600160405280848152602001856020016020810190611e879190612afc565b6001600160a01b039081168252604087810135602093840152835160018a0155918301516002890180546001600160a01b0319169190921617905501516003860155611ed960c0850160a08601612afc565b6001600160a01b031682610100860135611ef7610160880188613515565b604051611f0592919061355b565b600060405180830381858888f193505050503d8060008114611f43576040519150601f19603f3d011682016040523d82523d6000602084013e611f48565b606091505b505060408051606081018252600180825260208201819052600019919092018190528782018290556002880180546001600160a01b03191690921790915560039096019590955550929392505050565b806003811115611faa57611faa612b32565b611fb3836108c8565b6003811115611fc457611fc4612b32565b146105f957611fd382826124cd565b817f0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c823360405161200592919061356b565b60405180910390a25050565b600054610100900460ff16610ea85760405162461bcd60e51b815260040161057e906134ca565b600054610100900460ff1661205f5760405162461bcd60e51b815260040161057e906134ca565b61066e33610b22565b610200820151606090156120d3576120818260116131a5565b6001600160401b0381111561209857612098612d84565b6040519080825280602002602001820160405280156120cb57816020015b60608152602001906001900390816120b65790505b509050612142565b6101e0830151156120e9576120818260106131a5565b6120f482600f6131a5565b6001600160401b0381111561210b5761210b612d84565b60405190808252806020026020018201604052801561213e57816020015b60608152602001906001900390816121295790505b5090505b825161214d906124f6565b8160008151811061216057612160613591565b602002602001018190525061217883602001516124f6565b8160018151811061218b5761218b613591565b60200260200101819052506121a38360400151612509565b816002815181106121b6576121b6613591565b60200260200101819052506121ce83606001516124f6565b816003815181106121e1576121e1613591565b60200260200101819052506121f983608001516124f6565b8160048151811061220c5761220c613591565b60200260200101819052506122248360a001516124f6565b8160058151811061223757612237613591565b602002602001018190525061226e8360c0015160405160200161225a91906135a7565b604051602081830303815290604052612532565b8160068151811061228157612281613591565b60200260200101819052506122998360e001516125a1565b816007815181106122ac576122ac613591565b60200260200101819052506122ce8361010001516001600160801b03166125a1565b816008815181106122e1576122e1613591565b60200260200101819052506122fa8361012001516125af565b8160098151811061230d5761230d613591565b60200260200101819052506123268361014001516125af565b81600a8151811061233957612339613591565b60200260200101819052506123528361016001516125af565b81600b8151811061236557612365613591565b602002602001018190525061237e836101800151612532565b81600c8151811061239157612391613591565b60200260200101819052506123aa836101a001516124f6565b81600d815181106123bd576123bd613591565b60200260200101819052506123f4836101c0015160405160200161225a919060c09190911b6001600160c01b031916815260080190565b81600e8151811061240757612407613591565b6020026020010181905250826101e0015160001461244c5761242d836101e001516125a1565b81600f8151811061244057612440613591565b60200260200101819052505b610200830151156104df576124658361020001516124f6565b8160108151811061247857612478613591565b602002602001018190525092915050565b60606000612496836125c6565b90506124a4815160c06126fb565b816040516020016124b69291906135dc565b604051602081830303815290604052915050919050565b60006124d883610a8d565b905060008260038111156124ee576124ee612b32565b909155505050565b60606104df612504836128a3565b612532565b604051606082811b6bffffffffffffffffffffffff19166020830152906104df9060340161225a565b60608082516001148015612560575060808360008151811061255657612556613591565b016020015160f81c105b1561256c5750816104df565b612578835160806126fb565b8360405160200161258a9291906135dc565b604051602081830303815290604052905092915050565b60606104df61250483612955565b60606104df612504836001600160401b0316612955565b606081516000036125e7576040805160008082526020820190925290610633565b6000805b835181101561262c5783818151811061260657612606613591565b6020026020010151518261261a91906131a5565b9150612625816131d7565b90506125eb565b6000826001600160401b0381111561264657612646612d84565b6040519080825280601f01601f191660200182016040528015612670576020820181803683370190505b50600092509050602081015b85518310156126f257600086848151811061269957612699613591565b6020026020010151905060006020820190506126b783828451612a7f565b8785815181106126c9576126c9613591565b602002602001015151836126dd91906131a5565b92505050826126eb906131d7565b925061267c565b50949350505050565b60608060388410156127625760408051600180825281830190925290602082018180368337019050509050612730838561360b565b60f81b8160008151811061274657612746613591565b60200101906001600160f81b031916908160001a9053506104dc565b600060015b612771818761363a565b156127945761277f826131d7565b915061278d6101008261364e565b9050612767565b61279f8260016131a5565b6001600160401b038111156127b6576127b6612d84565b6040519080825280601f01601f1916602001820160405280156127e0576020820181803683370190505b5092506127ed858361360b565b6127f890603761360b565b60f81b8360008151811061280e5761280e613591565b60200101906001600160f81b031916908160001a905350600190505b81811161289a5761010061283e8284613665565b61284a9061010061375c565b612854908861363a565b61285e9190613768565b60f81b83828151811061287357612873613591565b60200101906001600160f81b031916908160001a905350612893816131d7565b905061282a565b50509392505050565b60606000826040516020016128ba91815260200190565b60408051808303601f1901815260208084528383019092529250600091829160208201818036833701905050905060005b81518110156126f25783836128ff816131d7565b94508151811061291157612911613591565b602001015160f81c60f81b82828151811061292e5761292e613591565b60200101906001600160f81b031916908160001a90535061294e816131d7565b90506128eb565b606060008260405160200161296c91815260200190565b604051602081830303815290604052905060005b60208110156129c15781818151811061299b5761299b613591565b01602001516001600160f81b0319166000036129c1576129ba816131d7565b9050612980565b60006129ce826020613665565b6001600160401b038111156129e5576129e5612d84565b6040519080825280601f01601f191660200182016040528015612a0f576020820181803683370190505b50905060005b81518110156126f2578383612a29816131d7565b945081518110612a3b57612a3b613591565b602001015160f81c60f81b828281518110612a5857612a58613591565b60200101906001600160f81b031916908160001a905350612a78816131d7565b9050612a15565b8282825b60208110612abb5781518352612a9a6020846131a5565b9250612aa76020836131a5565b9150612ab4602082613665565b9050612a83565b905182516020929092036101000a6000190180199091169116179052505050565b6001600160a01b038116811461075f57600080fd5b803561069981612adc565b600060208284031215612b0e57600080fd5b81356104dc81612adc565b600060208284031215612b2b57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110612b6657634e487b7160e01b600052602160045260246000fd5b9052565b602081016104df8284612b48565b60006101a08284031215612b8b57600080fd5b50919050565b600060208284031215612ba357600080fd5b81356001600160401b03811115612bb957600080fd5b6108eb84828501612b78565b801515811461075f57600080fd5b600080600060608486031215612be857600080fd5b83359250602084013591506040840135612c0181612bc5565b809150509250925092565b60008083601f840112612c1e57600080fd5b5081356001600160401b03811115612c3557600080fd5b602083019150836020828501011115612c4d57600080fd5b9250929050565b60008060008060608587031215612c6a57600080fd5b843593506020850135925060408501356001600160401b03811115612c8e57600080fd5b612c9a87828801612c0c565b95989497509550505050565b60008060408385031215612cb957600080fd5b823591506020830135612ccb81612bc5565b809150509250929050565b600080600060408486031215612ceb57600080fd5b83356001600160401b0380821115612d0257600080fd5b612d0e87838801612b78565b94506020860135915080821115612d2457600080fd5b50612d3186828701612c0c565b9497909650939450505050565b60008060408385031215612d5157600080fd5b82356001600160401b03811115612d6757600080fd5b612d7385828601612b78565b9250506020830135612ccb81612bc5565b634e487b7160e01b600052604160045260246000fd5b6040516101a081016001600160401b0381118282101715612dbd57612dbd612d84565b60405290565b604080519081016001600160401b0381118282101715612dbd57612dbd612d84565b60405161022081016001600160401b0381118282101715612dbd57612dbd612d84565b600082601f830112612e1957600080fd5b81356001600160401b0380821115612e3357612e33612d84565b604051601f8301601f19908116603f01168101908282118183101715612e5b57612e5b612d84565b81604052838152866020858801011115612e7457600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006101a08236031215612ea757600080fd5b612eaf612d9a565b82358152612ebf60208401612af1565b60208201526040830135604082015260608301356060820152612ee460808401612af1565b6080820152612ef560a08401612af1565b60a0820152612f0660c08401612af1565b60c082015260e08381013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401356001600160401b0380821115612f5257600080fd5b612f5e36838801612e08565b83850152610180925082860135915080821115612f7a57600080fd5b50612f8736828701612e08565b918301919091525092915050565b600060208284031215612fa757600080fd5b81516104dc81612adc565b60005b83811015612fcd578181015183820152602001612fb5565b50506000910152565b60008151808452612fee816020860160208601612fb2565b601f01601f19169290920160200192915050565b6020815260006104dc6020830184612fd6565b6d7369676e616c5f7365727669636560901b8152901515602082015260400190565b60006020828403121561304957600080fd5b81516104dc81612bc5565b60208152815160208201526000602083015161307b60408401826001600160a01b03169052565b50604083015160608301526060830151608083015260808301516130aa60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526131286101c0860184612fd6565b90860151858203601f1901838701529092506131448382612fd6565b9695505050505050565b9182526562726964676560d01b60208301521515604082015260600190565b6000835161317f818460208801612fb2565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104df576104df61318f565b6a195d1a195c97dd985d5b1d60aa1b8152901515602082015260400190565b6000600182016131e9576131e961318f565b5060010190565b60006020828403121561320257600080fd5b5051919050565b8581526001600160a01b0385166020820152604081018490526080606082018190528101829052818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b600082601f83011261326957600080fd5b6040516101008082018281106001600160401b038211171561328d5761328d612d84565b604052830181858211156132a057600080fd5b845b828110156132ba5780358252602091820191016132a2565b509195945050505050565b80356001600160801b038116811461069957600080fd5b80356001600160401b038116811461069957600080fd5b60006020828403121561330557600080fd5b81356001600160401b038082111561331c57600080fd5b908301906040828603121561333057600080fd5b613338612dc3565b82358281111561334757600080fd5b8301610300818803121561335a57600080fd5b613362612de5565b813581526020820135602082015261337c60408301612af1565b6040820152606082013560608201526080820135608082015260a082013560a08201526133ac8860c08401613258565b60c08201526101c08083013560e08301526101e06133cb8185016132c5565b6101008401526102006133df8186016132dc565b6101208501526133f261022086016132dc565b61014085015261340561024086016132dc565b6101608501526102608501358781111561341e57600080fd5b61342a8c828801612e08565b610180860152506102808501356101a085015261344a6102a086016132dc565b838501526102c0850135828501526102e085013581850152505050808352505060208301358281111561347c57600080fd5b61348887828601612e08565b60208301525095945050505050565b85815260018060a01b038516602082015283604082015282606082015260a06080820152600061100660a0830184612fd6565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000808335601e1984360301811261352c57600080fd5b8301803591506001600160401b0382111561354657600080fd5b602001915036819003821315612c4d57600080fd5b8183823760009101908152919050565b604081016135798285612b48565b6001600160a01b039290921660209190910152919050565b634e487b7160e01b600052603260045260246000fd5b60008183825b60088110156135cc5781518352602092830192909101906001016135ad565b5050506101008201905092915050565b600083516135ee818460208801612fb2565b835190830190613602818360208801612fb2565b01949350505050565b60ff81811683821601908111156104df576104df61318f565b634e487b7160e01b600052601260045260246000fd5b60008261364957613649613624565b500490565b80820281158282048414176104df576104df61318f565b818103818111156104df576104df61318f565b600181815b808511156136b35781600019048211156136995761369961318f565b808516156136a657918102915b93841c939080029061367d565b509250929050565b6000826136ca575060016104df565b816136d7575060006104df565b81600181146136ed57600281146136f757613713565b60019150506104df565b60ff8411156137085761370861318f565b50506001821b6104df565b5060208310610133831016604e8410600b8410161715613736575081810a6104df565b6137408383613678565b80600019048211156137545761375461318f565b029392505050565b60006104dc83836136bb565b60008261377757613777613624565b50069056fea264697066735822122042a8d268e2fd7923ed754bdf5bf9e025f6ca644d095e2c02b7f16035145fe86c64736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000002": { ++ "contractName": "TokenVault", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" ++ }, ++ "code": "0x6080604052600436106100dd5760003560e01c80638da5cb5b1161007f578063a86f9d9e11610059578063a86f9d9e1461029f578063c287e578146102bf578063ee1490b2146102ff578063f2fde38b1461031257600080fd5b80638da5cb5b146102305780639754149b1461024e5780639aa8605c1461026e57600080fd5b806367090ccf116100bb57806367090ccf1461015b5780636c6563f61461019c578063715018a6146101bc578063780b64f0146101d157600080fd5b80630c6fab82146100e257806319ab453c146101045780633ab76e9f14610124575b600080fd5b3480156100ee57600080fd5b506101026100fd366004611f9b565b610332565b005b34801561011057600080fd5b5061010261011f36600461200a565b610549565b34801561013057600080fd5b506097546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561016757600080fd5b5061013e610176366004612027565b60cb6020908152600092835260408084209091529082529020546001600160a01b031681565b3480156101a857600080fd5b5061013e6101b7366004612065565b610661565b3480156101c857600080fd5b50610102610678565b3480156101dd57600080fd5b506102116101ec36600461209e565b60cc60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610152565b34801561023c57600080fd5b506065546001600160a01b031661013e565b34801561025a57600080fd5b506101026102693660046120b7565b61068c565b34801561027a57600080fd5b5061028e61028936600461200a565b6109da565b6040516101529594939291906121a7565b3480156102ab57600080fd5b5061013e6102ba3660046121f8565b610b2b565b3480156102cb57600080fd5b506102ef6102da36600461200a565b60c96020526000908152604090205460ff1681565b6040519015158152602001610152565b61010261030d36600461228c565b610b41565b34801561031e57600080fd5b5061010261032d36600461200a565b611371565b61033a6113ea565b6562726964676560d01b61034f816000610b2b565b6001600160a01b0316336001600160a01b03161461038057604051630d85cccf60e11b815260040160405180910390fd5b6000336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156103c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e4919061236b565b905061040481604001516a1d1bdad95b97dd985d5b1d60aa1b6000610661565b6001600160a01b031681602001516001600160a01b031614610439576040516320258b8760e21b815260040160405180910390fd5b60004687350361046e57610453604088016020890161200a565b90506104696001600160a01b0382168686611443565b6104de565b610477876114a6565b6040516342e91bb360e01b81526001600160a01b03878116600483015260248201879052919250908216906342e91bb390604401600060405180830381600087803b1580156104c557600080fd5b505af11580156104d9573d6000803e3d6000fd5b505050505b815160408084015181519081526001600160a01b0384811660208301529181018790528188169291891691907fe5da926519fc972010fe65b35c1e3339e6dc72b35ffaec203999c2a2a2593eac9060600160405180910390a450505061054360018055565b50505050565b600054610100900460ff16158080156105695750600054600160ff909116105b806105835750303b158015610583575060005460ff166001145b6105eb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561060e576000805461ff0019166101001790555b61061782611505565b801561065d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600061066e84848461151e565b90505b9392505050565b610680611637565b61068a6000611691565b565b6106946113ea565b60006106a660a085016080860161200a565b6001600160a01b0316036106cd576040516372b41cdf60e01b815260040160405180910390fd5b468360400135146106f1576040516348bc100560e01b815260040160405180910390fd5b60006107076562726964676560d01b6000610b2b565b90506000816001600160a01b0316635817b0c3866040518263ffffffff1660e01b81526004016107379190612443565b602060405180830381865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107789190612561565b600081815260cc6020526040902080546001909101549192506001600160a01b031690816107b957604051637c6addb760e01b815260040160405180910390fd5b60405163ce70f39b60e01b81526001600160a01b0385169063ce70f39b906107ef90869060608c0135908b908b9060040161257a565b602060405180830381865afa15801561080c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083091906125a4565b61084d576040516308ba49e560e31b815260040160405180910390fd5b6040805180820182526000808252602080830182815287835260cc909152929020905181546001600160a01b0319166001600160a01b0390911617815590516001909101558015610961576001600160a01b038216600090815260c9602052604090205460ff161561093d576001600160a01b0382166342e91bb36108d860a08a0160808b0161200a565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b15801561092057600080fd5b505af1158015610934573d6000803e3d6000fd5b50505050610961565b61096161095060a0890160808a0161200a565b6001600160a01b0384169083611443565b61097160a088016080890161200a565b6001600160a01b0316837fc5d9f7cd7998e24ecf12ad69eca9339764e2cb13788d5d9616f502601b219af684846040516109c09291906001600160a01b03929092168252602082015260400190565b60405180910390a3505050506109d560018055565b505050565b60ca6020526000908152604090208054600182015460028301805492936001600160a01b03831693600160a01b90930460ff1692909190610a1a906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a46906125c1565b8015610a935780601f10610a6857610100808354040283529160200191610a93565b820191906000526020600020905b815481529060010190602001808311610a7657829003601f168201915b505050505090806003018054610aa8906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad4906125c1565b8015610b215780601f10610af657610100808354040283529160200191610b21565b820191906000526020600020905b815481529060010190602001808311610b0457829003601f168201915b5050505050905085565b6000610b3846848461151e565b90505b92915050565b610b496113ea565b6001600160a01b0387161580610b895750610b74886a1d1bdad95b97dd985d5b1d60aa1b6000610661565b6001600160a01b0316876001600160a01b0316145b15610ba757604051634694641b60e01b815260040160405180910390fd5b6001600160a01b038616610bce57604051637c6addb760e01b815260040160405180910390fd5b84600003610bee5760405162af849960e11b815260040160405180910390fd5b6040805160a08101825260008082526020820181905291810191909152606080820181905260808201526001600160a01b038716600090815260c9602052604081205460ff1615610e4557604051630ef7c31560e31b8152336004820152602481018890526001600160a01b038916906377be18a890604401600060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b505050506001600160a01b03888116600090815260ca6020908152604091829020825160a08101845281548152600182015494851692810192909252600160a01b90930460ff1691810191909152600282018054919291606084019190610cfb906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610d27906125c1565b8015610d745780601f10610d4957610100808354040283529160200191610d74565b820191906000526020600020905b815481529060010190602001808311610d5757829003601f168201915b50505050508152602001600382018054610d8d906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610db9906125c1565b8015610e065780601f10610ddb57610100808354040283529160200191610e06565b820191906000526020600020905b815481529060010190602001808311610de957829003601f168201915b5050509190925250505060208101519092506001600160a01b0316610e3e57604051633e45a03560e21b815260040160405180910390fd5b50856110a5565b60008890506040518060a001604052804681526020018a6001600160a01b03168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc919061260a565b60ff168152602001826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f3a9190810190612627565b8152602001826001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fa59190810190612627565b90526040516370a0823160e01b81523060048201529093506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ff1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110159190612561565b905061102c6001600160a01b03831633308c6116e3565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015611072573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110969190612561565b6110a0919061269e565b925050505b611134604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018b905233608082015261115b8b6a1d1bdad95b97dd985d5b1d60aa1b6000610661565b6001600160a01b031660a08201526080810151604051630637d5c160e11b9161118d918691908e9087906024016126bf565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610160820152610140810187905261012081018690526111df863461269e565b60e08201526001600160a01b03851660c0820152610180810184905260006112106562726964676560d01b82610b2b565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b815260040161123c9190612757565b60206040518083038185885af115801561125a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061127f9190612561565b905060405180604001604052808b6001600160a01b031681526020018481525060cc600083815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101559050508a6001600160a01b031682608001516001600160a01b0316827f325cab7553038374e17f39bb45e2a2c90f66c6a52798cb5f95c20d94c11c95e28f8e88604051611352939291909283526001600160a01b03919091166020830152604082015260600190565b60405180910390a45050505061136760018055565b5050505050505050565b611379611637565b6001600160a01b0381166113de5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e2565b6113e781611691565b50565b60026001540361143c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105e2565b6002600155565b6040516001600160a01b0383166024820152604481018290526109d590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261171b565b8035600090815260cb602090815260408083208392909183916114cd91870190870161200a565b6001600160a01b03908116825260208201929092526040016000205416905080610b3b576114fa836117ed565b610671565b60018055565b61150d611a72565b611515611aa1565b6113e781611ad0565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa15801561156f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115939190612847565b905081610671576040516001600160a01b03821615159061160290869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b6040516020818303038152906040529061162f5760405162461bcd60e51b81526004016105e29190612864565b509392505050565b6065546001600160a01b0316331461068a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e2565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526105439085906323b872dd60e01b9060840161146f565b6000611770826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b199092919063ffffffff16565b8051909150156109d5578080602001905181019061178e91906125a4565b6109d55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105e2565b6000611866818335611805604086016020870161200a565b60405161182892916001600160a01b031690602001918252602082015260400190565b604051602081830303815290604052805190602001206040518060200161184e90611f69565b601f1982820381018352601f90910116604052611b28565b6097549091506001600160a01b0380831691636c0db62b911661188f604086016020870161200a565b85356118a16060880160408901612877565b6118ae6060890189612894565b6118bb60808b018b612894565b6118c58c35611c2c565b6040516020016118d7939291906128db565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016119089796959493929190612924565b600060405180830381600087803b15801561192257600080fd5b505af1158015611936573d6000803e3d6000fd5b5050506001600160a01b038216600090815260c960209081526040808320805460ff1916600117905560ca90915290208391506119738282612a90565b50508135600090815260cb6020908152604080832084939092909161199d9190870190870161200a565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b03168260200160208101906119fe919061200a565b6001600160a01b031683357f9e465b29e576a3e01584e31d607353f21b80c055e813af907c0a495f6cf4f7bc611a376060870187612894565b611a446080890189612894565b611a5460608b0160408c01612877565b604051611a65959493929190612b17565b60405180910390a4919050565b600054610100900460ff16611a995760405162461bcd60e51b81526004016105e290612b54565b61068a611cbf565b600054610100900460ff16611ac85760405162461bcd60e51b81526004016105e290612b54565b61068a611ce6565b6001600160a01b038116611af757604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b606061066e8484600085611d16565b600083471015611b7a5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016105e2565b8151600003611bcb5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016105e2565b8282516020840186f590506001600160a01b0381166106715760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016105e2565b60606000611c3983611df3565b600101905060008167ffffffffffffffff811115611c5957611c5961221d565b6040519080825280601f01601f191660200182016040528015611c83576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611c8d57509392505050565b600054610100900460ff166114ff5760405162461bcd60e51b81526004016105e290612b54565b600054610100900460ff16611d0d5760405162461bcd60e51b81526004016105e290612b54565b61068a33611691565b606082471015611d775760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105e2565b600080866001600160a01b03168587604051611d939190612b9f565b60006040518083038185875af1925050503d8060008114611dd0576040519150601f19603f3d011682016040523d82523d6000602084013e611dd5565b606091505b5091509150611de687838387611ecb565b925050505b949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e325772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611e5e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611e7c57662386f26fc10000830492506010015b6305f5e1008310611e94576305f5e100830492506008015b6127108310611ea857612710830492506004015b60648310611eba576064830492506002015b600a8310610b3b5760010192915050565b60608315611f3a578251600003611f33576001600160a01b0385163b611f335760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105e2565b5081611deb565b611deb8383815115611f4f5781518083602001fd5b8060405162461bcd60e51b81526004016105e29190612864565b61169280612bbc83390190565b6001600160a01b03811681146113e757600080fd5b8035611f9681611f76565b919050565b60008060008060808587031215611fb157600080fd5b843567ffffffffffffffff811115611fc857600080fd5b850160a08188031215611fda57600080fd5b93506020850135611fea81611f76565b92506040850135611ffa81611f76565b9396929550929360600135925050565b60006020828403121561201c57600080fd5b813561067181611f76565b6000806040838503121561203a57600080fd5b82359150602083013561204c81611f76565b809150509250929050565b80151581146113e757600080fd5b60008060006060848603121561207a57600080fd5b8335925060208401359150604084013561209381612057565b809150509250925092565b6000602082840312156120b057600080fd5b5035919050565b6000806000604084860312156120cc57600080fd5b833567ffffffffffffffff808211156120e457600080fd5b908501906101a082880312156120f957600080fd5b9093506020850135908082111561210f57600080fd5b818601915086601f83011261212357600080fd5b81358181111561213257600080fd5b87602082850101111561214457600080fd5b6020830194508093505050509250925092565b60005b8381101561217257818101518382015260200161215a565b50506000910152565b60008151808452612193816020860160208601612157565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260ff8416604082015260a0606082018190526000906121da9083018561217b565b82810360808401526121ec818561217b565b98975050505050505050565b6000806040838503121561220b57600080fd5b82359150602083013561204c81612057565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561225c5761225c61221d565b604052919050565b600067ffffffffffffffff82111561227e5761227e61221d565b50601f01601f191660200190565b600080600080600080600080610100898b0312156122a957600080fd5b8835975060208901356122bb81611f76565b965060408901356122cb81611f76565b9550606089013594506080890135935060a0890135925060c08901356122f081611f76565b915060e089013567ffffffffffffffff81111561230c57600080fd5b8901601f81018b1361231d57600080fd5b803561233061232b82612264565b612233565b8181528c602083850101111561234557600080fd5b816020840160208301376000602083830101528093505050509295985092959890939650565b60006060828403121561237d57600080fd5b6040516060810181811067ffffffffffffffff821117156123a0576123a061221d565b6040528251815260208301516123b581611f76565b60208201526040928301519281019290925250919050565b6000808335601e198436030181126123e457600080fd5b830160208101925035905067ffffffffffffffff81111561240457600080fd5b80360382131561241357600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815281356020820152600061245c60208401611f8b565b6001600160a01b038116604084015250604083013560608301526060830135608083015261248c60808401611f8b565b6001600160a01b03811660a0840152506124a860a08401611f8b565b6001600160a01b03811660c0840152506124c460c08401611f8b565b6001600160a01b03811660e08401525061010060e084013581840152610120818501358185015261014091508085013582850152506101608185013581850152612510818601866123cd565b925090506101a0610180818187015261252e6101c08701858561241a565b935061253c818801886123cd565b878603601f1901848901529350905061255684848361241a565b979650505050505050565b60006020828403121561257357600080fd5b5051919050565b84815283602082015260606040820152600061259a60608301848661241a565b9695505050505050565b6000602082840312156125b657600080fd5b815161067181612057565b600181811c908216806125d557607f821691505b6020821081036125f557634e487b7160e01b600052602260045260246000fd5b50919050565b60ff811681146113e757600080fd5b60006020828403121561261c57600080fd5b8151610671816125fb565b60006020828403121561263957600080fd5b815167ffffffffffffffff81111561265057600080fd5b8201601f8101841361266157600080fd5b805161266f61232b82612264565b81815285602083850101111561268457600080fd5b612695826020830160208601612157565b95945050505050565b81810381811115610b3b57634e487b7160e01b600052601160045260246000fd5b60808152845160808201526000602086015160018060a01b0380821660a085015260ff60408901511660c08501526060880151915060a060e085015261270961012085018361217b565b91506080880151607f1985840301610100860152612727838261217b565b9188166020860152506001600160a01b038616604085015291506127489050565b82606083015295945050505050565b60208152815160208201526000602083015161277e60408401826001600160a01b03169052565b50604083015160608301526060830151608083015260808301516127ad60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a061018080850182905261282b6101c086018461217b565b90860151858203601f19018387015290925061259a838261217b565b60006020828403121561285957600080fd5b815161067181611f76565b602081526000610b38602083018461217b565b60006020828403121561288957600080fd5b8135610671816125fb565b6000808335601e198436030181126128ab57600080fd5b83018035915067ffffffffffffffff8211156128c657600080fd5b60200191503681900382131561241357600080fd5b8284823760008382016b050c4e4d2c8cecac9e13f19160a31b8152835161290981600c840160208801612157565b602960f81b600c9290910191820152600d0195945050505050565b6001600160a01b038881168252871660208201526040810186905260ff8516606082015260c060808201819052600090612961908301858761241a565b82810360a0840152612973818561217b565b9a9950505050505050505050565b601f8211156109d557600081815260208120601f850160051c810160208610156129a85750805b601f850160051c820191505b818110156129c7578281556001016129b4565b505050505050565b67ffffffffffffffff8311156129e7576129e761221d565b6129fb836129f583546125c1565b83612981565b6000601f841160018114612a2f5760008515612a175750838201355b600019600387901b1c1916600186901b178355612a89565b600083815260209020601f19861690835b82811015612a605786850135825560209485019460019092019101612a40565b5086821015612a7d5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81358155600181016020830135612aa681611f76565b81546040850135612ab6816125fb565b60ff60a01b60a09190911b166001600160a01b03929092166001600160a81b03199190911617179055612aec6060830183612894565b612afa8183600286016129cf565b5050612b096080830183612894565b6105438183600386016129cf565b606081526000612b2b60608301878961241a565b8281036020840152612b3e81868861241a565b91505060ff831660408301529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251612bb1818460208701612157565b919091019291505056fe608060405234801561001057600080fd5b50611672806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80636c6563f6116100c357806395d89b411161007c57806395d89b41146102e7578063a457c2d7146102ef578063a86f9d9e14610302578063a9059cbb14610315578063dd62ed3e14610328578063f2fde38b1461033b57600080fd5b80636c6563f61461026c57806370a082311461027f578063715018a6146102a857806377be18a8146102b05780637cf8ed0d146102c35780638da5cb5b146102d657600080fd5b8063395093511161011557806339509351146101cd5780633ab76e9f146101e057806342e91bb31461020557806349d126051461021a57806367e828bf146102235780636c0db62b1461025957600080fd5b806306fdde0314610152578063095ea7b31461017057806318160ddd1461019357806323b872dd146101a5578063313ce567146101b8575b600080fd5b61015a61034e565b6040516101679190611182565b60405180910390f35b61018361017e3660046111e5565b6103e0565b6040519015158152602001610167565b60cb545b604051908152602001610167565b6101836101b3366004611211565b6103fa565b60fd5460405160ff9091168152602001610167565b6101836101db3660046111e5565b61043a565b6097546001600160a01b03165b6040516001600160a01b039091168152602001610167565b6102186102133660046111e5565b61045c565b005b61019760fc5481565b61023a60fb5460fc546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610167565b6102186102673660046112f5565b6104f9565b6101ed61027a3660046113b4565b61069f565b61019761028d3660046113e9565b6001600160a01b0316600090815260c9602052604090205490565b6102186106ac565b6102186102be3660046111e5565b6106c0565b60fb546101ed906001600160a01b031681565b6065546001600160a01b03166101ed565b61015a610750565b6101836102fd3660046111e5565b61075f565b6101ed610310366004611406565b6107e5565b6101836103233660046111e5565b6107f2565b610197610336366004611432565b610827565b6102186103493660046113e9565b610852565b606060cc805461035d9061146b565b80601f01602080910402602001604051908101604052809291908181526020018280546103899061146b565b80156103d65780601f106103ab576101008083540402835291602001916103d6565b820191906000526020600020905b8154815290600101906020018083116103b957829003601f168201915b5050505050905090565b6000336103ee8185856108cb565b60019150505b92915050565b6000306001600160a01b03841603610425576040516319a6f37760e21b815260040160405180910390fd5b6104308484846109f0565b90505b9392505050565b6000336103ee81858561044d8383610827565b61045791906114a5565b6108cb565b6a1d1bdad95b97dd985d5b1d60aa1b6104768160006107e5565b6001600160a01b0316336001600160a01b0316146104a757604051630d85cccf60e11b815260040160405180910390fd5b6104b18383610a09565b826001600160a01b03167f397b33b307fc137878ebfc75b295289ec0ee25a31bb5bf034f33256fe8ea2aa6836040516104ec91815260200190565b60405180910390a2505050565b600054610100900460ff16158080156105195750600054600160ff909116105b806105335750303b158015610533575060005460ff166001145b61059b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156105be576000805461ff0019166101001790555b6001600160a01b03861615806105d2575084155b806105dc57504685145b806105e657508251155b806105f057508151155b1561060e576040516301e25ab360e71b815260040160405180910390fd5b61061787610acb565b6106218284610ae4565b60fb80546001600160a01b0319166001600160a01b03881617905560fc85905560fd805460ff191660ff86161790558015610696576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6000610430848484610b15565b6106b4610c2e565b6106be6000610c88565b565b6a1d1bdad95b97dd985d5b1d60aa1b6106da8160006107e5565b6001600160a01b0316336001600160a01b03161461070b57604051630d85cccf60e11b815260040160405180910390fd5b6107158383610cda565b826001600160a01b03167f9b5b9a05e4726d8bb959f1440e05c6b8109443f2083bc4e386237d7654526553836040516104ec91815260200190565b606060cd805461035d9061146b565b6000338161076d8286610827565b9050838110156107cd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610592565b6107da82868684036108cb565b506001949350505050565b6000610433468484610b15565b6000306001600160a01b0384160361081d576040516319a6f37760e21b815260040160405180910390fd5b6104338383610e0b565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b61085a610c2e565b6001600160a01b0381166108bf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610592565b6108c881610c88565b50565b6001600160a01b03831661092d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610592565b6001600160a01b03821661098e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610592565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000336109fe858285610e19565b6107da858585610e93565b6001600160a01b038216610a5f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610592565b8060cb6000828254610a7191906114a5565b90915550506001600160a01b038216600081815260c960209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b5050565b610ad361103e565b610adb61106d565b6108c88161109c565b600054610100900460ff16610b0b5760405162461bcd60e51b8152600401610592906114c6565b610ac782826110e5565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8a9190611511565b905081610433576040516001600160a01b038216151590610bf990869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b60405160208183030381529060405290610c265760405162461bcd60e51b81526004016105929190611182565b509392505050565b6065546001600160a01b031633146106be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610592565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610d3a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610592565b6001600160a01b038216600090815260c9602052604090205481811015610dae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610592565b6001600160a01b038316600081815260c960209081526040808320868603905560cb80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016109e3565b505050565b6000336103ee818585610e93565b6000610e258484610827565b90506000198114610e8d5781811015610e805760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610592565b610e8d84848484036108cb565b50505050565b6001600160a01b038316610ef75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610592565b6001600160a01b038216610f595760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610592565b6001600160a01b038316600090815260c9602052604090205481811015610fd15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610592565b6001600160a01b03808516600081815260c9602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110319086815260200190565b60405180910390a3610e8d565b600054610100900460ff166110655760405162461bcd60e51b8152600401610592906114c6565b6106be611125565b600054610100900460ff166110945760405162461bcd60e51b8152600401610592906114c6565b6106be611152565b6001600160a01b0381166110c357604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661110c5760405162461bcd60e51b8152600401610592906114c6565b60cc611118838261157c565b5060cd610e06828261157c565b600054610100900460ff1661114c5760405162461bcd60e51b8152600401610592906114c6565b60018055565b600054610100900460ff166111795760405162461bcd60e51b8152600401610592906114c6565b6106be33610c88565b600060208083528351808285015260005b818110156111af57858101830151858201604001528201611193565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146108c857600080fd5b600080604083850312156111f857600080fd5b8235611203816111d0565b946020939093013593505050565b60008060006060848603121561122657600080fd5b8335611231816111d0565b92506020840135611241816111d0565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261127957600080fd5b813567ffffffffffffffff8082111561129457611294611252565b604051601f8301601f19908116603f011681019082821181831017156112bc576112bc611252565b816040528381528660208588010111156112d557600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060008060c0878903121561130e57600080fd5b8635611319816111d0565b95506020870135611329816111d0565b945060408701359350606087013560ff8116811461134657600080fd5b9250608087013567ffffffffffffffff8082111561136357600080fd5b61136f8a838b01611268565b935060a089013591508082111561138557600080fd5b5061139289828a01611268565b9150509295509295509295565b803580151581146113af57600080fd5b919050565b6000806000606084860312156113c957600080fd5b83359250602084013591506113e06040850161139f565b90509250925092565b6000602082840312156113fb57600080fd5b8135610433816111d0565b6000806040838503121561141957600080fd5b823591506114296020840161139f565b90509250929050565b6000806040838503121561144557600080fd5b8235611450816111d0565b91506020830135611460816111d0565b809150509250929050565b600181811c9082168061147f57607f821691505b60208210810361149f57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156103f457634e487b7160e01b600052601160045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561152357600080fd5b8151610433816111d0565b601f821115610e0657600081815260208120601f850160051c810160208610156115555750805b601f850160051c820191505b8181101561157457828155600101611561565b505050505050565b815167ffffffffffffffff81111561159657611596611252565b6115aa816115a4845461146b565b8461152e565b602080601f8311600181146115df57600084156115c75750858301515b600019600386901b1c1916600185901b178555611574565b600085815260208120601f198616915b8281101561160e578886015182559484019460019091019084016115ef565b508582101561162c5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220aa6bb11dc55118477def21036c59af1b27ca026c692cdc5dcd86310e02edd01d64736f6c63430008120033a2646970667358221220fc3eb34df0bf01db8441fdaa57744a93e112176036f99e8579515a267310f84564736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000003": { ++ "contractName": "EtherVault", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006", ++ "0x029ae2e2f1d6964720a0fa7e6ffa902f995c156242f4f5a930aa9d9765d167d0": "0x0000000000000000000000000000000000000000000000000000000000000001" ++ }, ++ "code": "0x6080604052600436106100a05760003560e01c80638da5cb5b116100645780638da5cb5b14610195578063a86f9d9e146101b3578063ba0bbd95146101d3578063d73bb3d0146101f3578063f2fde38b14610213578063fe9fbb801461023357600080fd5b806319ab453c146100e95780632d1fb389146101095780633ab76e9f146101295780636c6563f614610160578063715018a61461018057600080fd5b366100e45747158015906100c4575033600090815260c9602052604090205460ff16155b156100e257604051634fa3f24560e01b815260040160405180910390fd5b005b600080fd5b3480156100f557600080fd5b506100e2610104366004610a47565b61027c565b34801561011557600080fd5b506100e2610124366004610a79565b610394565b34801561013557600080fd5b506097546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561016c57600080fd5b5061014361017b366004610aae565b61044d565b34801561018c57600080fd5b506100e2610464565b3480156101a157600080fd5b506065546001600160a01b0316610143565b3480156101bf57600080fd5b506101436101ce366004610ae3565b610478565b3480156101df57600080fd5b506100e26101ee366004610b06565b610485565b3480156101ff57600080fd5b506100e261020e366004610b32565b610543565b34801561021f57600080fd5b506100e261022e366004610a47565b6105c6565b34801561023f57600080fd5b5061026c61024e366004610a47565b6001600160a01b0316600090815260c9602052604090205460ff1690565b6040519015158152602001610157565b600054610100900460ff161580801561029c5750600054600160ff909116105b806102b65750303b1580156102b6575060005460ff166001145b61031e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610341576000805461ff0019166101001790555b61034a8261063c565b8015610390576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b61039c610655565b6001600160a01b03821615806103d057506001600160a01b038216600090815260c9602052604090205460ff161515811515145b156103ee57604051631bebdfa760e21b815260040160405180910390fd5b6001600160a01b038216600081815260c96020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b600061045a8484846106af565b90505b9392505050565b61046c610655565b61047660006107c8565b565b600061045d4684846106af565b33600090815260c9602052604090205460ff166104b557604051634fa3f24560e01b815260040160405180910390fd5b6104bd61081a565b6001600160a01b0382166104e45760405163687563df60e01b815260040160405180910390fd5b6104f76001600160a01b03831682610873565b816001600160a01b03167f7b9f77d35803cd201eac9c4ed739bc1fcd3f1be6ab8877d925d1e55517b6fd6e8260405161053291815260200190565b60405180910390a261039060018055565b33600090815260c9602052604090205460ff1661057357604051634fa3f24560e01b815260040160405180910390fd5b61057b61081a565b6105853382610873565b60405181815233907f7b9f77d35803cd201eac9c4ed739bc1fcd3f1be6ab8877d925d1e55517b6fd6e9060200160405180910390a26105c360018055565b50565b6105ce610655565b6001600160a01b0381166106335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610315565b6105c3816107c8565b610644610934565b61064c610963565b6105c381610992565b6065546001600160a01b031633146104765760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610315565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107249190610b4b565b90508161045d576040516001600160a01b03821615159061079390869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b604051602081830303815290604052906107c05760405162461bcd60e51b81526004016103159190610b68565b509392505050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60026001540361086c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610315565b6002600155565b80158061088757506001600160a01b038216155b15610890575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146108dd576040519150601f19603f3d011682016040523d82523d6000602084013e6108e2565b606091505b50509050806109295760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610315565b505050565b60018055565b600054610100900460ff1661095b5760405162461bcd60e51b815260040161031590610bb6565b6104766109db565b600054610100900460ff1661098a5760405162461bcd60e51b815260040161031590610bb6565b610476610a02565b6001600160a01b0381166109b957604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661092e5760405162461bcd60e51b815260040161031590610bb6565b600054610100900460ff16610a295760405162461bcd60e51b815260040161031590610bb6565b610476336107c8565b6001600160a01b03811681146105c357600080fd5b600060208284031215610a5957600080fd5b813561045d81610a32565b80358015158114610a7457600080fd5b919050565b60008060408385031215610a8c57600080fd5b8235610a9781610a32565b9150610aa560208401610a64565b90509250929050565b600080600060608486031215610ac357600080fd5b8335925060208401359150610ada60408501610a64565b90509250925092565b60008060408385031215610af657600080fd5b82359150610aa560208401610a64565b60008060408385031215610b1957600080fd5b8235610b2481610a32565b946020939093013593505050565b600060208284031215610b4457600080fd5b5035919050565b600060208284031215610b5d57600080fd5b815161045d81610a32565b600060208083528351808285015260005b81811015610b9557858101830151858201604001528201610b79565b506000604082860101526040601f19601f8301168501019250505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea264697066735822122013d4ce04e85b4097bbe860e0a2cf9a01422a1ddd52b24ceb5fd83be8df1a928964736f6c63430008120033", ++ "balance": "0xfffffffffffffdd4e373edd85fffffff" ++ }, ++ "0x0000777700000000000000000000000000000007": { ++ "contractName": "SignalService", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" ++ }, ++ "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80636c6563f6116100715780636c6563f614610144578063715018a6146101575780638da5cb5b1461015f578063a86f9d9e14610170578063f2fde38b14610183578063f8f3f8441461019657600080fd5b806319ab453c146100ae57806332676bc6146100c35780633ab76e9f146100eb5780635221f6131461011057806366ca2bc014610123575b600080fd5b6100c16100bc3660046119d4565b6101c2565b005b6100d66100d13660046119f1565b6102da565b60405190151581526020015b60405180910390f35b6097546001600160a01b03165b6040516001600160a01b0390911681526020016100e2565b6100d661011e366004611a1d565b61034c565b610136610131366004611ab3565b6104bc565b6040519081526020016100e2565b6100f8610152366004611ae1565b610501565b6100c1610518565b6065546001600160a01b03166100f8565b6100f861017e366004611b16565b61052c565b6100c16101913660046119d4565b610539565b6101366101a43660046119f1565b6040805192835260208301919091526034600c830120918101905290565b600054610100900460ff16158080156101e25750600054600160ff909116105b806101fc5750303b1580156101fc575060005460ff166001145b6102645760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610287576000805461ff0019166101001790555b610290826105b2565b80156102d6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006001600160a01b038316610303576040516354cdfc8d60e11b815260040160405180910390fd5b60008290036103255760405163014f1da760e21b815260040160405180910390fd5b5060408051838152602081018390526034600c820120908201909152546001145b92915050565b600046860361036e5760405163e822b48d60e01b815260040160405180910390fd5b6001600160a01b038516610395576040516354cdfc8d60e11b815260040160405180910390fd5b60008490036103b75760405163014f1da760e21b815260040160405180910390fd5b60006103c583850185611bb2565b905060006103dc647461696b6f60d81b600061052c565b8251604051632e24533960e21b81526001600160a01b03929092169163b8914ce49161040e9160040190815260200190565b602060405180830381865afa15801561042b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044f9190611c79565b60408051898152602081018990526034600c82012081830190925260608101919091529091506104b090608001604051602081830303815290604052604051806040016040528060018152602001600160f81b8152508460200151846105cb565b98975050505050505050565b60008181036104de5760405163014f1da760e21b815260040160405180910390fd5b506040805133815260208101929092526034600c83012091810190526001815590565b600061050e8484846105ef565b90505b9392505050565b610520610708565b61052a6000610762565b565b60006105114684846105ef565b610541610708565b6001600160a01b0381166105a65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161025b565b6105af81610762565b50565b6105ba6107b4565b6105c26107e3565b6105af81610812565b6000806105d78661085b565b90506105e58186868661088d565b9695505050505050565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106649190611c92565b905081610511576040516001600160a01b0382161515906106d390869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b604051602081830303815290604052906107005760405162461bcd60e51b815260040161025b9190611caf565b509392505050565b6065546001600160a01b0316331461052a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161025b565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166107db5760405162461bcd60e51b815260040161025b90611cfd565b61052a6108ca565b600054610100900460ff1661080a5760405162461bcd60e51b815260040161025b90611cfd565b61052a6108f7565b6001600160a01b03811661083957604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6060818051906020012060405160200161087791815260200190565b6040516020818303038152906040529050919050565b600080600061089d878686610927565b915091508180156108bf57508051602080830191909120875191880191909120145b979650505050505050565b600054610100900460ff166108f15760405162461bcd60e51b815260040161025b90611cfd565b60018055565b600054610100900460ff1661091e5760405162461bcd60e51b815260040161025b90611cfd565b61052a33610762565b60006060600061093685610a02565b90506000806000610948848a89610af3565b8151929550909350915015808061095c5750815b6109a85760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e000000000000604482015260640161025b565b6000816109c457604051806020016040528060008152506109f0565b6109f0866109d3600188611d5e565b815181106109e3576109e3611d71565b6020026020010151610f13565b919b919a509098505050505050505050565b60606000610a0f83610f3a565b90506000815167ffffffffffffffff811115610a2d57610a2d611b42565b604051908082528060200260200182016040528015610a7257816020015b6040805180820190915260608082526020820152815260200190600190039081610a4b5790505b50905060005b8251811015610700576000610aa5848381518110610a9857610a98611d71565b6020026020010151610f6d565b90506040518060400160405280610abb83610f3a565b815260200182815250838381518110610ad657610ad6611d71565b60200260200101819052505080610aec90611d87565b9050610a78565b600060606000806000610b0587610ffd565b90506000869050600080610b2c604051806040016040528060608152602001606081525090565b60005b8c51811015610eeb578c8181518110610b4a57610b4a611d71565b602002602001015191508284610b609190611da0565b9350610b6d600188611da0565b965083600003610bca578482602001518051906020012014610bc55760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b604482015260640161025b565b610c8c565b602082602001515110610c31578482602001518051906020012014610bc55760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c20686173680000000000604482015260640161025b565b84610c3f8360200151611136565b14610c8c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f64652068617368000000000000604482015260640161025b565b610c9860106001611db3565b60ff1682600001515103610d065785518414610eeb576000868581518110610cc257610cc2611d71565b01602001518351805160f89290921c925060009183908110610ce657610ce6611d71565b60200260200101519050610cf98161115e565b9650600194505050610edb565b81515160011901610e93576000610d1c83611194565b9050600081600081518110610d3357610d33611d71565b016020015160f81c90506000610d4a600283611dcc565b610d55906002611dfc565b90506000610d66848360ff166111b8565b90506000610d748b8a6111b8565b90506000610d8283836111ee565b905060ff851660021480610d99575060ff85166003145b15610dd357808351148015610dae5750808251145b15610dc057610dbd818b611da0565b99505b50600160ff1b9950610eeb945050505050565b60ff85161580610de6575060ff85166001145b15610e3c5782518114610e065750600160ff1b9950610eeb945050505050565b610e2d8860000151600181518110610e2057610e20611d71565b602002602001015161115e565b9a509750610edb945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b606482015260840161025b565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e000000604482015260640161025b565b610ee481611d87565b9050610b2f565b50600160ff1b841486610efe87866111b8565b909e909d50909b509950505050505050505050565b8051805160609161034691610f2a90600190611d5e565b81518110610a9857610a98611d71565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061034690611268565b60606000806000610f7d85611454565b919450925090506000816001811115610f9857610f98611e15565b14610fe55760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e0000000000000000604482015260640161025b565b610ff48560200151848461179e565b95945050505050565b606060008251600261100f9190611e2b565b67ffffffffffffffff81111561102757611027611b42565b6040519080825280601f01601f191660200182016040528015611051576020820181803683370190505b50905060005b835181101561112f57600484828151811061107457611074611d71565b01602001516001600160f81b031916901c82611091836002611e2b565b815181106110a1576110a1611d71565b60200101906001600160f81b031916908160001a90535060108482815181106110cc576110cc611d71565b01602001516110de919060f81c611dcc565b60f81b826110ed836002611e2b565b6110f8906001611da0565b8151811061110857611108611d71565b60200101906001600160f81b031916908160001a90535061112881611d87565b9050611057565b5092915050565b600060208251101561114a57506020015190565b818060200190518101906103469190611c79565b6000606060208360000151101561117f5761117883611847565b905061118b565b61118883610f6d565b90505b61051181611136565b60606103466111b38360000151600081518110610a9857610a98611d71565b610ffd565b6060825182106111d75750604080516020810190915260008152610346565b61051183838486516111e99190611d5e565b611852565b6000805b8084511180156112025750808351115b8015611253575082818151811061121b5761121b611d71565b602001015160f81c60f81b6001600160f81b03191684828151811061124257611242611d71565b01602001516001600160f81b031916145b156105115761126181611d87565b90506111f2565b606060008061127684611454565b9193509091506001905081600181111561129257611292611e15565b146112df5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e000000000000000000604482015260640161025b565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816112f85790505090506000835b865181101561144957602082106113915760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b606482015260840161025b565b6000806113ce6040518060400160405280858c600001516113b29190611d5e565b8152602001858c602001516113c79190611da0565b9052611454565b5091509150604051806040016040528083836113ea9190611da0565b8152602001848b602001516113ff9190611da0565b81525085858151811061141457611414611d71565b602090810291909101015261142a600185611da0565b93506114368183611da0565b6114409084611da0565b92505050611325565b508152949350505050565b6000806000808460000151116114ac5760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e0000000000000000604482015260640161025b565b6020840151805160001a607f81116114d1576000600160009450945094505050611797565b60b7811161154d5760006114e6608083611d5e565b90508087600001511161153b5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e00000000000000604482015260640161025b565b60019550935060009250611797915050565b60bf811161163c57600061156260b783611d5e565b9050808760000151116115b75760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e00604482015260640161025b565b600183015160208290036101000a90046115d18183611da0565b8851116116205760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e0000000000000000604482015260640161025b565b61162b826001611da0565b965094506000935061179792505050565b60f781116116b757600061165160c083611d5e565b9050808760000151116116a65760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e000000000000000000604482015260640161025b565b600195509350849250611797915050565b60006116c460f783611d5e565b9050808760000151116117195760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e000000604482015260640161025b565b600183015160208290036101000a90046117338183611da0565b88511161177b5760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b604482015260640161025b565b611786826001611da0565b965094506001935061179792505050565b9193909250565b606060008267ffffffffffffffff8111156117bb576117bb611b42565b6040519080825280601f01601f1916602001820160405280156117e5576020820181803683370190505b50905080516000036117f8579050610511565b8484016020820160005b8581101561181a578281015182820152602001611802565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b6060610346826119a9565b60608161186081601f611da0565b101561189f5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161025b565b826118aa8382611da0565b10156118e95760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161025b565b6118f38284611da0565b845110156119375760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161025b565b60608215801561195657604051915060008252602082016040526119a0565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561198f578051835260209283019201611977565b5050858452601f01601f1916604052505b50949350505050565b606061034682602001516000846000015161179e565b6001600160a01b03811681146105af57600080fd5b6000602082840312156119e657600080fd5b8135610511816119bf565b60008060408385031215611a0457600080fd5b8235611a0f816119bf565b946020939093013593505050565b600080600080600060808688031215611a3557600080fd5b853594506020860135611a47816119bf565b935060408601359250606086013567ffffffffffffffff80821115611a6b57600080fd5b818801915088601f830112611a7f57600080fd5b813581811115611a8e57600080fd5b896020828501011115611aa057600080fd5b9699959850939650602001949392505050565b600060208284031215611ac557600080fd5b5035919050565b80358015158114611adc57600080fd5b919050565b600080600060608486031215611af657600080fd5b8335925060208401359150611b0d60408501611acc565b90509250925092565b60008060408385031215611b2957600080fd5b82359150611b3960208401611acc565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611b7b57611b7b611b42565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611baa57611baa611b42565b604052919050565b60006020808385031215611bc557600080fd5b823567ffffffffffffffff80821115611bdd57600080fd5b9084019060408287031215611bf157600080fd5b611bf9611b58565b823581528383013582811115611c0e57600080fd5b80840193505086601f840112611c2357600080fd5b823582811115611c3557611c35611b42565b611c47601f8201601f19168601611b81565b92508083528785828601011115611c5d57600080fd5b8085850186850137600090830185015292830152509392505050565b600060208284031215611c8b57600080fd5b5051919050565b600060208284031215611ca457600080fd5b8151610511816119bf565b600060208083528351808285015260005b81811015611cdc57858101830151858201604001528201611cc0565b506000604082860101526040601f19601f8301168501019250505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561034657610346611d48565b634e487b7160e01b600052603260045260246000fd5b600060018201611d9957611d99611d48565b5060010190565b8082018082111561034657610346611d48565b60ff818116838216019081111561034657610346611d48565b600060ff831680611ded57634e487b7160e01b600052601260045260246000fd5b8060ff84160691505092915050565b60ff828116828216039081111561034657610346611d48565b634e487b7160e01b600052602160045260246000fd5b808202811582820484141761034657610346611d4856fea26469706673582212200ea71954d3e54306cb268035417910e7cfe418e53bc25804068ff831c8ca44b064736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000005": { ++ "contractName": "RegularERC20", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000003": "0x526567756c617245524332300000000000000000000000000000000000000018", ++ "0x0000000000000000000000000000000000000000000000000000000000000004": "0x52474c0000000000000000000000000000000000000000000000000000000006", ++ "0x0000000000000000000000000000000000000000000000000000000000000002": "0x00000000000000000000000000000000000000000000000000000000009c4000", ++ "0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x14e04a66bf74771820a7400ff6cf065175b3d7eb25805a5bd1633b161af5d101": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x215be5d23550ceb1beff54fb579a765903ba2ccc85b6f79bcf9bda4e8cb86034": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x6d1035fce6503985ab075a4ff3f7ce2e57cd5a9c5e6a0589dccacfea7bcb0af4": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x2a95ee547cef07a2fff0a68144824a0d9ded35ed87da118a53e1cda4aca8b944": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x7fcecd2a720442e9bc0cf1a8a6976f9fbddf6b996dc0d78af7e94dadf360d579": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x18bbf5fcf8fe870ecff419c4677497c08b2e6a5431bb94541d06c9da3f308e55": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x6e3431b4e42570cb9e3d926eb26f9e54de2df536ae0741ae16350d17a6c16ddc": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0xdb302bf24b1ad5f23949da8e6b05747dc699499a995361a7bf40ec7204696d6f": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955": "0x00000000000000000000000000000000000000000000000000000000000fa000" ++ }, ++ "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069c565b60405180910390f35b6100df6100da366004610706565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610730565b61024c565b604051601281526020016100c3565b6100df610131366004610706565b610270565b6100f361014436600461076c565b6001600160a01b031660009081526020819052604090205490565b6100b6610292565b6100df610175366004610706565b6102a1565b6100df610188366004610706565b610321565b6100f361019b36600461078e565b61032f565b6060600380546101af906107c1565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c1565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b60003361024081858561035a565b60019150505b92915050565b60003361025a85828561047e565b6102658585856104f8565b506001949350505050565b600033610240818585610283838361032f565b61028d91906107fb565b61035a565b6060600480546101af906107c1565b600033816102af828661032f565b9050838110156103145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610265828686840361035a565b6000336102408185856104f8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103bc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161030b565b6001600160a01b03821661041d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161030b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061048a848461032f565b905060001981146104f257818110156104e55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161030b565b6104f2848484840361035a565b50505050565b6001600160a01b03831661055c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161030b565b6001600160a01b0382166105be5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161030b565b6001600160a01b038316600090815260208190526040902054818110156106365760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161030b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f2565b600060208083528351808285015260005b818110156106c9578581018301518582016040015282016106ad565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461070157600080fd5b919050565b6000806040838503121561071957600080fd5b610722836106ea565b946020939093013593505050565b60008060006060848603121561074557600080fd5b61074e846106ea565b925061075c602085016106ea565b9150604084013590509250925092565b60006020828403121561077e57600080fd5b610787826106ea565b9392505050565b600080604083850312156107a157600080fd5b6107aa836106ea565b91506107b8602084016106ea565b90509250929050565b600181811c908216806107d557607f821691505b6020821081036107f557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024657634e487b7160e01b600052601160045260246000fdfea2646970667358221220ee71a9bd9ebcdb754dffdeeca92502fc82a7f09e67a7cfd411c733adc57b169664736f6c63430008120033", ++ "balance": "0x0" ++ } ++}
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+139
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/core/taiko_genesis/internal-2.json taikoxyz/taiko-geth/core/taiko_genesis/internal-2.json +new file mode 100644 +index 0000000000000000000000000000000000000000..06012d168507fecfab3917aea8dfba2697a0ff77 +--- /dev/null ++++ taikoxyz/taiko-geth/core/taiko_genesis/internal-2.json +@@ -0,0 +1,139 @@ ++{ ++ "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x70997970C51812dc3A010C7d01b50e0d17dc79C8": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x90F79bf6EB2c4f870365E785982E1f101E93b906": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x976EA74026E726554dB657fA54763abd0C3a0aa9": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x4F6d0287F08bD8b05DB0272c493A2e9DA9675301": { ++ "contractName": "LibTrieProof", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063a54274621461003a575b600080fd5b61004d61004836600461173e565b610061565b604051901515815260200160405180910390f35b600080806100718486018661188e565b6040516bffffffffffffffffffffffff1960608c901b166020820152919350915060009081906100b490603401604051602081830303815290604052858d610184565b915091508161010a5760405162461bcd60e51b815260206004820152601960248201527f4c54503a696e76616c6964206163636f756e742070726f6f660000000000000060448201526064015b60405180910390fd5b6000610115826101ad565b9050600061013c8260028151811061012f5761012f6118f2565b60200260200101516101e6565b90506101738b60405160200161015491815260200190565b60405160208183030381529060405261016c8c6102e9565b87846102fc565b9d9c50505050505050505050505050565b60006060600061019386610316565b90506101a0818686610348565b9250925050935093915050565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906101e090610423565b92915050565b600060218260000151111561023d5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610101565b600080600061024b8561060f565b91945092509050600081600181111561026657610266611908565b146102b35760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610101565b60008386602001516102c59190611934565b805190915060208410156102df5760208490036101000a90045b9695505050505050565b60606101e06102f783610959565b610a8d565b60008061030886610316565b90506102df81868686610afc565b6060818051906020012060405160200161033291815260200190565b6040516020818303038152906040529050919050565b60006060600061035785610b39565b90506000806000610369848a89610c32565b8151929550909350915015808061037d5750815b6103c95760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610101565b6000816103e55760405180602001604052806000815250610411565b610411866103f4600188611947565b81518110610404576104046118f2565b6020026020010151611052565b919b919a509098505050505050505050565b60606000806104318461060f565b9193509091506001905081600181111561044d5761044d611908565b1461049a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610101565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816104b35790505090506000835b8651811015610604576020821061054c5760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b6064820152608401610101565b6000806105896040518060400160405280858c6000015161056d9190611947565b8152602001858c602001516105829190611934565b905261060f565b5091509150604051806040016040528083836105a59190611934565b8152602001848b602001516105ba9190611934565b8152508585815181106105cf576105cf6118f2565b60209081029190910101526105e5600185611934565b93506105f18183611934565b6105fb9084611934565b925050506104e0565b508152949350505050565b6000806000808460000151116106675760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610101565b6020840151805160001a607f811161068c576000600160009450945094505050610952565b60b781116107085760006106a1608083611947565b9050808760000151116106f65760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610101565b60019550935060009250610952915050565b60bf81116107f757600061071d60b783611947565b9050808760000151116107725760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610101565b600183015160208290036101000a900461078c8183611934565b8851116107db5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610101565b6107e6826001611934565b965094506000935061095292505050565b60f7811161087257600061080c60c083611947565b9050808760000151116108615760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610101565b600195509350849250610952915050565b600061087f60f783611947565b9050808760000151116108d45760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610101565b600183015160208290036101000a90046108ee8183611934565b8851116109365760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b6044820152606401610101565b610941826001611934565b965094506001935061095292505050565b9193909250565b606060008260405160200161097091815260200190565b604051602081830303815290604052905060005b60208110156109c55781818151811061099f5761099f6118f2565b01602001516001600160f81b0319166000036109c5576109be8161195a565b9050610984565b60006109d2826020611947565b67ffffffffffffffff8111156109ea576109ea6117eb565b6040519080825280601f01601f191660200182016040528015610a14576020820181803683370190505b50905060005b8151811015610a84578383610a2e8161195a565b945081518110610a4057610a406118f2565b602001015160f81c60f81b828281518110610a5d57610a5d6118f2565b60200101906001600160f81b031916908160001a905350610a7d8161195a565b9050610a1a565b50949350505050565b60608082516001148015610abb5750608083600081518110610ab157610ab16118f2565b016020015160f81c105b15610ac75750816101e0565b610ad383516080611079565b83604051602001610ae59291906119a3565b604051602081830303815290604052905092915050565b6000806000610b0c878686610348565b91509150818015610b2e57508051602080830191909120875191880191909120145b979650505050505050565b60606000610b46836101ad565b90506000815167ffffffffffffffff811115610b6457610b646117eb565b604051908082528060200260200182016040528015610ba957816020015b6040805180820190915260608082526020820152815260200190600190039081610b825790505b50905060005b8251811015610c2a576000610bdc848381518110610bcf57610bcf6118f2565b6020026020010151611223565b90506040518060400160405280610bf2836101ad565b815260200182815250838381518110610c0d57610c0d6118f2565b60200260200101819052505080610c239061195a565b9050610baf565b509392505050565b600060606000806000610c44876112b3565b90506000869050600080610c6b604051806040016040528060608152602001606081525090565b60005b8c5181101561102a578c8181518110610c8957610c896118f2565b602002602001015191508284610c9f9190611934565b9350610cac600188611934565b965083600003610d09578482602001518051906020012014610d045760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b6044820152606401610101565b610dcb565b602082602001515110610d70578482602001518051906020012014610d045760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610101565b84610d7e83602001516113ec565b14610dcb5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610101565b610dd7601060016119c0565b60ff1682600001515103610e45578551841461102a576000868581518110610e0157610e016118f2565b01602001518351805160f89290921c925060009183908110610e2557610e256118f2565b60200260200101519050610e3881611414565b965060019450505061101a565b81515160011901610fd2576000610e5b8361144a565b9050600081600081518110610e7257610e726118f2565b016020015160f81c90506000610e896002836119ef565b610e94906002611a11565b90506000610ea5848360ff1661146e565b90506000610eb38b8a61146e565b90506000610ec183836114a4565b905060ff851660021480610ed8575060ff85166003145b15610f1257808351148015610eed5750808251145b15610eff57610efc818b611934565b99505b50600160ff1b995061102a945050505050565b60ff85161580610f25575060ff85166001145b15610f7b5782518114610f455750600160ff1b995061102a945050505050565b610f6c8860000151600181518110610f5f57610f5f6118f2565b6020026020010151611414565b9a50975061101a945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b6064820152608401610101565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610101565b6110238161195a565b9050610c6e565b50600160ff1b84148661103d878661146e565b909e909d50909b509950505050505050505050565b805180516060916101e09161106990600190611947565b81518110610bcf57610bcf6118f2565b60608060388410156110e057604080516001808252818301909252906020820181803683370190505090506110ae83856119c0565b60f81b816000815181106110c4576110c46118f2565b60200101906001600160f81b031916908160001a90535061121c565b600060015b6110ef8187611a2a565b15611112576110fd8261195a565b915061110b61010082611a3e565b90506110e5565b61111d826001611934565b67ffffffffffffffff811115611135576111356117eb565b6040519080825280601f01601f19166020018201604052801561115f576020820181803683370190505b50925061116c85836119c0565b6111779060376119c0565b60f81b8360008151811061118d5761118d6118f2565b60200101906001600160f81b031916908160001a905350600190505b818111611219576101006111bd8284611947565b6111c990610100611b39565b6111d39088611a2a565b6111dd9190611b45565b60f81b8382815181106111f2576111f26118f2565b60200101906001600160f81b031916908160001a9053506112128161195a565b90506111a9565b50505b9392505050565b606060008060006112338561060f565b91945092509050600081600181111561124e5761124e611908565b1461129b5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610101565b6112aa8560200151848461151e565b95945050505050565b60606000825160026112c59190611a3e565b67ffffffffffffffff8111156112dd576112dd6117eb565b6040519080825280601f01601f191660200182016040528015611307576020820181803683370190505b50905060005b83518110156113e557600484828151811061132a5761132a6118f2565b01602001516001600160f81b031916901c82611347836002611a3e565b81518110611357576113576118f2565b60200101906001600160f81b031916908160001a9053506010848281518110611382576113826118f2565b0160200151611394919060f81c6119ef565b60f81b826113a3836002611a3e565b6113ae906001611934565b815181106113be576113be6118f2565b60200101906001600160f81b031916908160001a9053506113de8161195a565b905061130d565b5092915050565b600060208251101561140057506020015190565b818060200190518101906101e09190611b59565b600060606020836000015110156114355761142e836115c7565b9050611441565b61143e83611223565b90505b61121c816113ec565b60606101e06114698360000151600081518110610bcf57610bcf6118f2565b6112b3565b60608251821061148d57506040805160208101909152600081526101e0565b61121c838384865161149f9190611947565b6115d2565b6000805b8084511180156114b85750808351115b801561150957508281815181106114d1576114d16118f2565b602001015160f81c60f81b6001600160f81b0319168482815181106114f8576114f86118f2565b01602001516001600160f81b031916145b1561121c576115178161195a565b90506114a8565b606060008267ffffffffffffffff81111561153b5761153b6117eb565b6040519080825280601f01601f191660200182016040528015611565576020820181803683370190505b509050805160000361157857905061121c565b8484016020820160005b8581101561159a578281015182820152602001611582565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b60606101e082611728565b6060816115e081601f611934565b101561161f5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610101565b8261162a8382611934565b10156116695760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610101565b6116738284611934565b845110156116b75760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610101565b6060821580156116d65760405191506000825260208201604052610a84565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561170f5780518352602092830192016116f7565b5050858452601f01601f19166040525050949350505050565b60606101e082602001516000846000015161151e565b60008060008060008060a0878903121561175757600080fd5b8635955060208701356001600160a01b038116811461177557600080fd5b94506040870135935060608701359250608087013567ffffffffffffffff808211156117a057600080fd5b818901915089601f8301126117b457600080fd5b8135818111156117c357600080fd5b8a60208285010111156117d557600080fd5b6020830194508093505050509295509295509295565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261181257600080fd5b813567ffffffffffffffff8082111561182d5761182d6117eb565b604051601f8301601f19908116603f01168101908282118183101715611855576118556117eb565b8160405283815286602085880101111561186e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156118a157600080fd5b823567ffffffffffffffff808211156118b957600080fd5b6118c586838701611801565b935060208501359150808211156118db57600080fd5b506118e885828601611801565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156101e0576101e061191e565b818103818111156101e0576101e061191e565b60006001820161196c5761196c61191e565b5060010190565b6000815160005b81811015611994576020818501810151868301520161197a565b50600093019283525090919050565b60006119b86119b28386611973565b84611973565b949350505050565b60ff81811683821601908111156101e0576101e061191e565b634e487b7160e01b600052601260045260246000fd5b600060ff831680611a0257611a026119d9565b8060ff84160691505092915050565b60ff82811682821603908111156101e0576101e061191e565b600082611a3957611a396119d9565b500490565b80820281158282048414176101e0576101e061191e565b600181815b80851115611a90578160001904821115611a7657611a7661191e565b80851615611a8357918102915b93841c9390800290611a5a565b509250929050565b600082611aa7575060016101e0565b81611ab4575060006101e0565b8160018114611aca5760028114611ad457611af0565b60019150506101e0565b60ff841115611ae557611ae561191e565b50506001821b6101e0565b5060208310610133831016604e8410600b8410161715611b13575081810a6101e0565b611b1d8383611a55565b8060001904821115611b3157611b3161191e565b029392505050565b600061121c8383611a98565b600082611b5457611b546119d9565b500690565b600060208284031215611b6b57600080fd5b505191905056fea264697066735822122089c52cc4ef50a5809ef7d03c56023e58cbc47b629b8e36e895509de5ee91d97c64736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x048f359A4E6BdfC19685C0a8c18B1B5218b51B75": { ++ "contractName": "LibBridgeRetry", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200f731b40b9f0eb3b18a5d4800d220eb7eabce85b95986566c66c0bc5a95a569064736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0xb9aB9265390A5813b0073e0a678a527498919bea": { ++ "contractName": "LibBridgeProcess", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122088061568e0924f349b162a4d90a55180d6eed3f3537ccbaa4e705c2f0c53f4b564736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000006": { ++ "contractName": "AddressManager", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", ++ "0xff8959e8c71db849773cf97c3b9d85b4a718b66a9dd50782caaf354b57db3d6b": "0x0000000000000000000000000000777700000000000000000000000000000001", ++ "0x99058c93124480b002badc5d0110ed1acb6b27cdc34775dc56d6fed405dc8136": "0x0000000000000000000000000000777700000000000000000000000000000004", ++ "0x90b0bfceab611f7b70d60951f5ae6a7fab6c151c65fd31ba73a7fc9695deafaf": "0x0000000000000000000000000000777700000000000000000000000000000002", ++ "0x4e5812bcbdde873c5fe239352366ed228c76696457942c5015c492f11c9b7da2": "0x0000000000000000000000000000777700000000000000000000000000000003", ++ "0x3735f25b8e8f7ccb1ab37444024f5f04c1a1168bf4782d75a02bf365a9bce56f": "0x0000000000000000000000000000777700000000000000000000000000000007" ++ }, ++ "code": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c8063656b06a414610067578063715018a6146100b75780638da5cb5b146100c1578063decd8e39146100d2578063e1c7392a146100e5578063f2fde38b146100ed575b600080fd5b61009b610075366004610428565b60009182526065602090815260408084209284529190529020546001600160a01b031690565b6040516001600160a01b03909116815260200160405180910390f35b6100bf610100565b005b6033546001600160a01b031661009b565b6100bf6100e0366004610466565b610114565b6100bf610196565b6100bf6100fb36600461049b565b6102ac565b610108610322565b610112600061037c565b565b61011c610322565b600083815260656020908152604080832085845282529182902080546001600160a01b038581166001600160a01b0319831681179093558451928352169181018290529091849186917fe41a6e8584d6e19a0dfc5f9331be4ebe61b5f025d45da164c9ca6ee9b837cea9910160405180910390a350505050565b600054610100900460ff16158080156101b65750600054600160ff909116105b806101d05750303b1580156101d0575060005460ff166001145b6102385760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561025b576000805461ff0019166101001790555b6102636103ce565b80156102a9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6102b4610322565b6001600160a01b0381166103195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161022f565b6102a98161037c565b6033546001600160a01b031633146101125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166103f55760405162461bcd60e51b815260040161022f906104bd565b610112600054610100900460ff1661041f5760405162461bcd60e51b815260040161022f906104bd565b6101123361037c565b6000806040838503121561043b57600080fd5b50508035926020909101359150565b80356001600160a01b038116811461046157600080fd5b919050565b60008060006060848603121561047b57600080fd5b83359250602084013591506104926040850161044a565b90509250925092565b6000602082840312156104ad57600080fd5b6104b68261044a565b9392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220b92548ab061f4a8bac71e70e05ea2901a28e7edd3c53cc1a24fa425a5eb9657f64736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000001": { ++ "contractName": "TaikoL2", ++ "storage": { ++ "0x00000000000000000000000000000000000000000000000000000000000000cb": "0xb1cdc1a3b51cd0ae1113eb88f95dfd26aab10c50b39e31811e63cffc250b0da2", ++ "0x00000000000000000000000000000000000000000000000000000000000000cc": "0x0000000000bebc200000000058b8ef1c0000000485b9d2e799564d28c46075dd", ++ "0x00000000000000000000000000000000000000000000000000000000000000cd": "0x00000000000000000000000a9507f68000000000000000000000000064586efd" ++ }, ++ "code": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80639ee512f2116100c3578063e1848cb01161007c578063e1848cb01461031c578063ee82ac5e1461032f578063f2fde38b14610342578063f535bd5614610355578063f5c977401461036f578063f5d11edc1461038957600080fd5b80639ee512f2146102a7578063a86f9d9e146102c0578063b8914ce4146102d3578063bacb386d146102e6578063c7b96908146102f9578063dac5df781461031357600080fd5b8063539b8ade11610115578063539b8ade14610223578063591aad8a146102365780636c6563f614610268578063715018a61461027b5780638da5cb5b146102835780638f3ca30d1461029457600080fd5b806310da373814610152578063210c9fe81461018c5780633ab76e9f146101be5780633d384a4b146101e35780633fa85350146101f8575b600080fd5b6101797f92954368afd3caa1f3ce3ead0069c1af414054aefe1ef9aeacc1bf426222ce3881565b6040519081526020015b60405180910390f35b60cc546101a690600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610183565b6097546001600160a01b03165b6040516001600160a01b039091168152602001610183565b6101f66101f136600461169e565b6103a3565b005b60cc5461020b906001600160801b031681565b6040516001600160801b039091168152602001610183565b60cd546101a6906001600160401b031681565b6102496102443660046116e4565b610609565b6040805160ff9094168452602084019290925290820152606001610183565b6101cb61027636600461172a565b610844565b6101f661085b565b6065546001600160a01b03166101cb565b6101f66102a2366004611774565b61086f565b6101cb71777735367b36bc9b61c50022d9d0700db4ec81565b6101cb6102ce3660046117b5565b610c3c565b6101796102e13660046117e1565b610c52565b6101796102f43660046117e1565b610c8e565b60cd546101a690600160401b90046001600160401b031681565b61017960cb5481565b61017961032a3660046117fa565b610cc7565b61017961033d3660046117e1565b610ce3565b6101f661035036600461183f565b610d30565b60cd546101a690600160801b90046001600160401b031681565b60cc546101a690600160801b90046001600160401b031681565b60cd546101a690600160c01b90046001600160401b031681565b3371777735367b36bc9b61c50022d9d0700db4ec146103d557604051636494e9f760e01b815260040160405180910390fd5b60006103e2600143611872565b905080406000806103f284610da9565b915091508160cb541461042b5760cb54604051636340d9fb60e11b81526004810191909152602481018390526044015b60405180910390fd5b60cb819055600084815260c96020908152604080832086905560cd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c1690810291909117909155815180830183528c81528084018c815282865260ca8552948390209051815593516001949094019390935580518b81529182018a90527f7528bbd1cef0e5d13408706892a51ee8ef82bbf33d4ec0c37216f8beba71205b910160405180910390a260cc54600090600160c01b90046001600160401b03161561053f5760cd546105119061050a906001600160401b031642611872565b4588610e3c565b60cd80546001600160401b03909216600160801b0267ffffffffffffffff60801b1990921691909117905590505b80481461057257604051634083acad60e01b81526001600160401b03808316600483015248166024820152604401610422565b60cd805467ffffffffffffffff1916426001600160401b03908116918217909255604080514384168152848416602082015245909316908301526060820152608081018590524460a08201524160c082015263ffffffff461660e08201527f4dcb01f99c4a2c27a16ab38d00ec92434f8231be81fa62e058f260d3c7156029906101000160405180910390a1505050505050505050565b60008060008360ff1660011415801561062657508360ff16600214155b156106445760405163bcd2d90d60e01b815260040160405180910390fd5b8360ff16600114610675577fc6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5610697565b7f79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f817985b915060008460ff166001146106cc577fad77eceea844778cb4376153fc8f06f12f1695df4585bf75bfb17ec19ce908186106ee565b7fb4a95509ce05fe8d45987859a067780d16a367c0e2cacf79cd301b93fb7179405b905060008560ff16600114610723577f71620584f61c57e688bbd3fd7a39a036e588d962c4c830f3dacbc15c917e02f2610745565b7f45b59254b0320fd853f3f38ac574999e91bd75fd5e6cab9c22c5e71fc6d276e45b82880192831001905060ff861660010361077f576107788282600170014551231950b75fc4402da1732fc9bebe19610ee9565b92506107ee565b6107c77f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a16107c28484600170014551231950b75fc4402da1732fc9bebe19610ee9565b610f38565b90925090506107eb8282600170014551231950b75fc4402da1732fc9bebe19610ee9565b92505b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561083b576108328370014551231950b75fc4402da1732fc9bebe19611872565b92506001851894505b50509250925092565b6000610851848484610f57565b90505b9392505050565b610863611070565b61086d60006110ca565b565b600054610100900460ff161580801561088f5750600054600160ff909116105b806108a95750303b1580156108a9575060005460ff166001145b61090c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610422565b6000805460ff19166001179055801561092f576000805461ff0019166101001790555b600146111580610943575063ffffffff4610155b15610961576040516306cffa2760e01b815260040160405180910390fd5b600143111561098357604051635a0f9e4160e11b815260040160405180910390fd5b6109936040830160208401611885565b6001600160401b031615610b98576109ae6020830183611885565b6001600160401b031615806109d957506109ce6060830160408401611885565b6001600160401b0316155b806109fa57506109ef6080830160608401611885565b6001600160401b0316155b80610a1b5750610a1060a0830160808401611885565b6001600160401b0316155b15610a3957604051639cc448b560e01b815260040160405180910390fd5b6000610a80610a4e6060850160408601611885565b610a5b6020860186611885565b610a6b6080870160608801611885565b610a7b60a0880160808901611885565b61111c565b60cc80546fffffffffffffffffffffffffffffffff19166001600160801b0392831617905590915081161580610ac657506001600160401b036001600160801b03821610155b80610ada575060cc546001600160801b0316155b15610af857604051639cc448b560e01b815260040160405180910390fd5b60cc805467ffffffffffffffff60801b1916600160801b6001600160401b03841602179055610b2d6040840160208501611885565b60cc80546001600160401b0392909216600160c01b026001600160c01b039092169190911790556002610b666060850160408601611885565b610b7091906118b6565b60cd60106101000a8154816001600160401b0302191690836001600160401b03160217905550505b60cd805467ffffffffffffffff1916426001600160401b0316179055610bbd8361121b565b610bc643610da9565b5060cb554315610bf1576000610bdd600143611872565b600081815260c96020526040902090409055505b8015610c37576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000610c49468484610f57565b90505b92915050565b6000808215610c615782610c75565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020600101549392505050565b6000808215610c9d5782610cb1565b60cd54600160401b90046001600160401b03165b600090815260ca60205260409020549392505050565b6000610cda8463ffffffff168484610e3c565b50949350505050565b6000438210610cf457506000919050565b4382108015610d0e5750610d0a61010043611872565b8210155b15610d1857504090565b50600090815260c9602052604090205490565b919050565b610d38611070565b6001600160a01b038116610d9d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610422565b610da6816110ca565b50565b600080610db4611667565b60005b60ff81108015610dca5750806001018510155b15610dfc576000198186030180408360ff83066101008110610dee57610dee6118dc565b602002015250600101610db7565b5046611fe082015261200081209250834081610e1960ff876118f2565b6101008110610e2a57610e2a6118dc565b60200201526120009020919391925050565b600080806202bf206001600160401b03851611610e5a576000610e61565b6202bf2084035b60cd5460cc54919250600160801b90046001600160401b039081168184160191600160c01b90048116880290610ea39082610e9c8582611234565b039061124a565b60cc54909450610ed293506001600160401b03600160801b82041692506001600160801b03169050838761125f565b915081600003610ee157600191505b935093915050565b600060405160408152602080820152602060408201528460608201528560808201528360a08201528260c082015260208160e08360056107d05a03fa610f2e57600080fd5b5195945050505050565b6000806000198385098385029250828110838203039150509250929050565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcc9190611906565b905081610854576040516001600160a01b03821615159061103b90869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b604051602081830303815290604052906110685760405162461bcd60e51b81526004016104229190611923565b509392505050565b6065546001600160a01b0316331461086d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610422565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080856001600160401b031660000361113857611138611971565b60006111456002886118b6565b90506111636001600160401b038816680755bf798b4a1bf1e4611987565b925061118261117d84886001600160401b0316848961125f565b61131e565b915060006111928484848961125f565b905060006111ac8585856111a78b60026119a1565b61125f565b90506000826111bd836127106119cc565b6111c791906119e3565b9050806001600160401b0316876001600160401b03161461120e576040516331c2ec2360e21b81526001600160401b03808916600483015282166024820152604401610422565b5050505094509492505050565b61122361138b565b61122b6113ba565b610da6816113e9565b60008183116112435781610c49565b5090919050565b60008183116112595782610c49565b50919050565b60006001600160801b0385161580159061128157506001600160801b03841615155b61128d5761128d611971565b60006001600160401b038316156112a457826112a7565b60015b905060006112be856001600160401b031688611432565b905060006112de6112cf84886119f7565b6001600160401b031689611432565b90506001600160801b0387166001600160401b0384166112fe8484611872565b61130891906119e3565b61131291906119e3565b98975050505050505050565b60006001600160801b038211156113875760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610422565b5090565b600054610100900460ff166113b25760405162461bcd60e51b815260040161042290611a1e565b61086d611484565b600054610100900460ff166113e15760405162461bcd60e51b815260040161042290611a1e565b61086d6114b1565b6001600160a01b03811661141057604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806114486001600160801b038416856119cc565b9050680755bf798b4a1bf1e48110611473576040516372de381d60e01b815260040160405180910390fd5b61147c816114e1565b949350505050565b600054610100900460ff166114ab5760405162461bcd60e51b815260040161042290611a1e565b60018055565b600054610100900460ff166114d85760405162461bcd60e51b815260040161042290611a1e565b61086d336110ca565b6000680248ce36a70cb26b3e1982136114fc57506000919050565b680755bf798b4a1bf1e5821261152557604051631a93c68960e11b815260040160405180910390fd5b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b6d2c06887d92262d378b9593af35346c09791803c2923d5d9721c3da80929091056001605f1b0190921d6bb17217f7d1cf79abc9e3b39881029095039081018102606090811d6d019dd9374d4315c8464a395fc09881016c1bff318b126baa436ea9aeaffd19840102821d93840193016d29c9ad45cc0beb0a2ff097a7bab40192909202821d6dcf3c27b2e487711b467e90f19320016c22fcd1cffa6fa000f6e27eeca082018202831d6d022f98fbc368092c79210d196fa0018202831d6d13aaae3ba38de06adc25ebfacc0901820290921d6d624dcbeb5e25df590e409325888a01026d360d7aeea093263ec6495851bd9760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b604051806120000160405280610100906020820280368337509192915050565b80356001600160401b0381168114610d2b57600080fd5b600080600080608085870312156116b457600080fd5b84359350602085013592506116cb60408601611687565b91506116d960608601611687565b905092959194509250565b600080604083850312156116f757600080fd5b82359150602083013560ff8116811461170f57600080fd5b809150509250929050565b80358015158114610d2b57600080fd5b60008060006060848603121561173f57600080fd5b83359250602084013591506117566040850161171a565b90509250925092565b6001600160a01b0381168114610da657600080fd5b60008082840360c081121561178857600080fd5b83356117938161175f565b925060a0601f19820112156117a757600080fd5b506020830190509250929050565b600080604083850312156117c857600080fd5b823591506117d86020840161171a565b90509250929050565b6000602082840312156117f357600080fd5b5035919050565b60008060006060848603121561180f57600080fd5b833563ffffffff8116811461182357600080fd5b925061183160208501611687565b915061175660408501611687565b60006020828403121561185157600080fd5b81356108548161175f565b634e487b7160e01b600052601160045260246000fd5b81810381811115610c4c57610c4c61185c565b60006020828403121561189757600080fd5b610c4982611687565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b03808416806118d0576118d06118a0565b92169190910492915050565b634e487b7160e01b600052603260045260246000fd5b600082611901576119016118a0565b500690565b60006020828403121561191857600080fd5b81516108548161175f565b600060208083528351808285015260005b8181101561195057858101830151858201604001528201611934565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052600160045260246000fd5b60006001600160801b03808416806118d0576118d06118a0565b6001600160401b038181168382160280821691908281146119c4576119c461185c565b505092915050565b8082028115828204841417610c4c57610c4c61185c565b6000826119f2576119f26118a0565b500490565b6001600160401b03818116838216019080821115611a1757611a1761185c565b5092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220164408943d146de5931c8102d2aef6caacb374d927d48456e904de7daa94972e64736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000004": { ++ "contractName": "Bridge", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" ++ }, ++ "code": "0x6080604052600436106101235760003560e01c80638da5cb5b116100a0578063ce70f39b11610064578063ce70f39b146103e0578063d0496d6a14610400578063f2fde38b1461046f578063f98039191461048f578063fee99b22146104af57600080fd5b80638da5cb5b1461034f57806396e178521461036d578063a4444efd14610380578063a86f9d9e146103a0578063bac443e2146103c057600080fd5b80635817b0c3116100e75780635817b0c3146102ac5780635d0bd986146102da578063606b5b74146102fa5780636c6563f61461031a578063715018a61461033a57600080fd5b806319ab453c146101c8578063343b643c146101e85780633ab76e9f1461022d5780635075a9d41461025f578063540be6a31461028c57600080fd5b366101c3576101416a1d1bdad95b97dd985d5b1d60aa1b60016104cf565b6001600160a01b0316336001600160a01b03161415801561018c57506101766a195d1a195c97dd985d5b1d60aa1b60016104cf565b6001600160a01b0316336001600160a01b031614155b80156101a357506065546001600160a01b03163314155b156101c1576040516345dd044560e11b815260040160405180910390fd5b005b600080fd5b3480156101d457600080fd5b506101c16101e3366004612afc565b6104e5565b3480156101f457600080fd5b50610218610203366004612b19565b600090815260cd602052604090205460ff1690565b60405190151581526020015b60405180910390f35b34801561023957600080fd5b506097546001600160a01b03165b6040516001600160a01b039091168152602001610224565b34801561026b57600080fd5b5061027f61027a366004612b19565b6105fd565b6040516102249190612b6a565b34801561029857600080fd5b506102186102a7366004612b19565b610608565b3480156102b857600080fd5b506102cc6102c7366004612b91565b610614565b604051908152602001610224565b3480156102e657600080fd5b506102186102f5366004612b19565b610627565b34801561030657600080fd5b506102cc610315366004612b19565b61063a565b34801561032657600080fd5b50610247610335366004612bd3565b610645565b34801561034657600080fd5b506101c161065c565b34801561035b57600080fd5b506065546001600160a01b0316610247565b6102cc61037b366004612b91565b610670565b34801561038c57600080fd5b5061021861039b366004612c54565b61069e565b3480156103ac57600080fd5b506102476103bb366004612ca6565b6104cf565b3480156103cc57600080fd5b506101c16103db366004612cd6565b6106b6565b3480156103ec57600080fd5b506102186103fb366004612c54565b6106da565b34801561040c57600080fd5b50604080516060808201835260008083526020808401829052928401528251808201845260ca5480825260cb546001600160a01b0390811683860190815260cc549387019384528651928352511693810193909352519282019290925201610224565b34801561047b57600080fd5b506101c161048a366004612afc565b6106e9565b34801561049b57600080fd5b506101c16104aa366004612d3e565b610762565b3480156104bb57600080fd5b506101c16104ca366004612cd6565b610780565b60006104dc468484610796565b90505b92915050565b600054610100900460ff16158080156105055750600054600160ff909116105b8061051f5750303b15801561051f575060005460ff166001145b6105875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156105aa576000805461ff0019166101001790555b6105b3826108af565b80156105f9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006104df826108c8565b60006104df30836108f3565b60006104df61062283612e94565b6109d4565b60006106333083610a04565b5092915050565b60006104df82610a8d565b6000610652848484610796565b90505b9392505050565b610664610ac8565b61066e6000610b22565b565b600061067a610b74565b61068e60c93061068985612e94565b610bcd565b905061069960018055565b919050565b60006106ad3086868686610eae565b95945050505050565b6106be610b74565b6106cc60c930858585611011565b6106d560018055565b505050565b60006106ad3086868686611302565b6106f1610ac8565b6001600160a01b0381166107565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161057e565b61075f81610b22565b50565b61076a610b74565b61077760c9308484611587565b6105f960018055565b610788610b74565b6106cc60c9308585856117bf565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa1580156107e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080b9190612f95565b905081610655576040516001600160a01b03821615159061087a90869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b604051602081830303815290604052906108a75760405162461bcd60e51b815260040161057e9190613002565b509392505050565b6108b7611cbe565b6108bf611ced565b61075f81611d1c565b6000806108d483610a8d565b80549091508060038111156108eb576108eb612b32565b949350505050565b604051635437cecf60e11b81526000906001600160a01b0384169063a86f9d9e90610922908490600401613015565b602060405180830381865afa15801561093f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109639190612f95565b604051631933b5e360e11b8152306004820152602481018490526001600160a01b0391909116906332676bc690604401602060405180830381865afa1580156109b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104dc9190613037565b6000816040516020016109e79190613054565b604051602081830303815290604052805190602001209050919050565b600080836001600160a01b0316636c6563f68460016040518363ffffffff1660e01b8152600401610a3692919061314e565b602060405180830381865afa158015610a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a779190612f95565b6001600160a01b03811615159590945092505050565b60006040518060400160405280600e81526020016d4d4553534147455f53544154555360901b815250826040516020016109e792919061316d565b6065546001600160a01b0316331461066e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161057e565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600260015403610bc65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161057e565b6002600155565b60808101516000906001600160a01b0316610bfb576040516301b1868360e71b815260040160405180910390fd5b600080610c0c858560600151610a04565b91509150811580610c205750468460600151145b15610c3e5760405163e822b48d60e01b815260040160405180910390fd5b60a08401516001600160a01b03161580610c6d5750806001600160a01b03168460a001516001600160a01b0316145b15610c8b5760405163b9ad6a0f60e01b815260040160405180910390fd5b60008461012001518561010001518660e00151610ca891906131a5565b610cb291906131a5565b9050348114610cd457604051632609a19760e21b815260040160405180910390fd5b604051635437cecf60e11b81526000906001600160a01b0388169063a86f9d9e90610d04906001906004016131b8565b602060405180830381865afa158015610d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d459190612f95565b9050610d5a6001600160a01b03821683611d65565b8754886000610d68836131d7565b909155508652336020870152466040870152610d83866109d4565b604051635437cecf60e11b81529095506001600160a01b0388169063a86f9d9e90610db390600090600401613015565b602060405180830381865afa158015610dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df49190612f95565b6001600160a01b03166366ca2bc0866040518263ffffffff1660e01b8152600401610e2191815260200190565b6020604051808303816000875af1158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6491906131f0565b50847f47866f7dacd4a276245be6ed543cae03c9c17eb17e6980cee28e3dd168b7f9f387604051610e959190613054565b60405180910390a2505050509392505050565b60018055565b600080866001600160a01b0316636c6563f68660006040518363ffffffff1660e01b8152600401610ee092919061314e565b602060405180830381865afa158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f219190612f95565b604051635437cecf60e11b81529091506001600160a01b0388169063a86f9d9e90610f5190600090600401613015565b602060405180830381865afa158015610f6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f929190612f95565b6001600160a01b0316635221f61386838988886040518663ffffffff1660e01b8152600401610fc5959493929190613209565b602060405180830381865afa158015610fe2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110069190613037565b979650505050505050565b600061102360a0850160808601612afc565b6001600160a01b03160361104a576040516301b1868360e71b815260040160405180910390fd5b4683604001351461106e5760405163e822b48d60e01b815260040160405180910390fd5b600061107c61062285612e94565b600081815260048801602052604090205490915060ff1615156001036110b55760405163afde133560e01b815260040160405180910390fd5b6110c6858286606001358686611302565b6110e35760405163498b0b1d60e01b815260040160405180910390fd5b60008181526004870160205260408120805460ff1916600117905561111161010086013560e08701356131a5565b905080156112a657604051635437cecf60e11b81526000906001600160a01b0388169063a86f9d9e90611149906001906004016131b8565b602060405180830381865afa158015611166573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118a9190612f95565b90506001600160a01b0381161561121f576001600160a01b03811663ba0bbd956111ba60a0890160808a01612afc565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052604401600060405180830381600087803b15801561120257600080fd5b505af1158015611216573d6000803e3d6000fd5b505050506112a4565b600061123160a0880160808901612afc565b6001600160a01b03168360405160006040518083038185875af1925050503d806000811461127b576040519150601f19603f3d011682016040523d82523d6000602084013e611280565b606091505b50509050806112a25760405163f6664cf160e01b815260040160405180910390fd5b505b505b817fea00c741e39d1d9ab1c6703152d71f9da09a782ed4ae128414730dadbb9bd8476112d860a0880160808901612afc565b604080516001600160a01b039092168252602082018590520160405180910390a250505050505050565b60004684036113245760405163e822b48d60e01b815260040160405180910390fd5b60008590036113465760405163a6407c9360e01b815260040160405180910390fd5b6000611354838501856132f3565b604051635437cecf60e11b8152647461696b6f60d81b60048201526000602482018190529192506001600160a01b0389169063a86f9d9e90604401602060405180830381865afa1580156113ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d09190612f95565b8251610100015160405163bacb386d60e01b81526001600160801b0390911660048201526001600160a01b03919091169063bacb386d90602401602060405180830381865afa158015611427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144b91906131f0565b90508015806114645750815161146090611e1b565b8114155b15611474576000925050506106ad565b815160600151604051633632b1fb60e11b8152734F6d0287F08bD8b05DB0272c493A2e9DA96753019163a5427462916001600160a01b038c1690636c6563f6906114c5908c9060009060040161314e565b602060405180830381865afa1580156114e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115069190612f95565b61150f8b610a8d565b602087015160405160e086901b6001600160e01b031916815261153a94939291600391600401613497565b602060405180830381865af4158015611557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157b9190613037565b98975050505050505050565b61014082013515806115965750805b156115dc576115ab60a0830160808401612afc565b6001600160a01b0316336001600160a01b0316146115dc5760405163d7f4fc9f60e01b815260040160405180910390fd5b60006115ea61062284612e94565b905060016115f7826108c8565b600381111561160857611608612b32565b1461162657604051631f6646b560e01b815260040160405180910390fd5b604051635437cecf60e11b81526000906001600160a01b0386169063a86f9d9e90611656906001906004016131b8565b602060405180830381865afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190612f95565b90506001600160a01b0381161561170757604051630d73bb3d60e41b815261010085013560048201526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b1580156116ee57600080fd5b505af1158015611702573d6000803e3d6000fd5b505050505b6117138685845a611e40565b1561172857611723826002611f98565b6117b7565b821561179f57611739826003611f98565b60008061174c60e0870160c08801612afc565b6001600160a01b03161461176f5761176a60e0860160c08701612afc565b61177f565b61177f60a0860160808701612afc565b90506117996001600160a01b038216610100870135611d65565b506117b7565b6117b76001600160a01b038216610100860135611d65565b505050505050565b6101408301351580156117f357506117dd60a0840160808501612afc565b6001600160a01b0316336001600160a01b031614155b156118115760405163398b635960e21b815260040160405180910390fd5b468360600135146118355760405163e822b48d60e01b815260040160405180910390fd5b600061184361062285612e94565b90506000611850826108c8565b600381111561186157611861612b32565b1461187f57604051632c3b0c4b60e01b815260040160405180910390fd5b6000856001600160a01b0316636c6563f6866040013560006040518363ffffffff1660e01b81526004016118b492919061314e565b602060405180830381865afa1580156118d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f59190612f95565b604051635437cecf60e11b81529091506001600160a01b0387169063a86f9d9e9061192590600090600401613015565b602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119669190612f95565b6001600160a01b0316635221f6138660400135838588886040518663ffffffff1660e01b815260040161199d959493929190613209565b602060405180830381865afa1580156119ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119de9190613037565b6119fb576040516314504c7360e31b815260040160405180910390fd5b6000610120860135611a1661010088013560e08901356131a5565b611a2091906131a5565b90506000876001600160a01b031663a86f9d9e60016040518263ffffffff1660e01b8152600401611a5191906131b8565b602060405180830381865afa158015611a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a929190612f95565b90506001600160a01b03811615801590611aac5750600082115b15611b0c57604051630d73bb3d60e41b8152600481018390526001600160a01b0382169063d73bb3d090602401600060405180830381600087803b158015611af357600080fd5b505af1158015611b07573d6000803e3d6000fd5b505050505b611b3360e0880135611b2460a08a0160808b01612afc565b6001600160a01b031690611d65565b60008030611b4760c08b0160a08c01612afc565b6001600160a01b03161480611b7457506000611b6960c08b0160a08c01612afc565b6001600160a01b0316145b15611b89575060029050610100880135611c00565b6000611b9b60a08b0160808c01612afc565b6001600160a01b0316336001600160a01b031614611bbe57896101400135611bc0565b5a5b90506000611bd08d8c8a85611e40565b90508015611be15760029350611bfd565b60019350611bfd6001600160a01b0386166101008d0135611d65565b50505b611c0a8683611f98565b600080611c1d60e08c0160c08d01612afc565b6001600160a01b031614611c4057611c3b60e08b0160c08c01612afc565b611c50565b611c5060a08b0160808c01612afc565b90506001600160a01b0381163303611c8e576000611c73836101208d01356131a5565b9050611c886001600160a01b03831682611d65565b50611cb0565b611c9d336101208c0135611d65565b611cb06001600160a01b03821683611d65565b505050505050505050505050565b600054610100900460ff16611ce55760405162461bcd60e51b815260040161057e906134ca565b61066e612011565b600054610100900460ff16611d145760405162461bcd60e51b815260040161057e906134ca565b61066e612038565b6001600160a01b038116611d4357604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b801580611d7957506001600160a01b038216155b15611d82575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611dcf576040519150601f19603f3d011682016040523d82523d6000602084013e611dd4565b606091505b50509050806106d55760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b604482015260640161057e565b600080611e31611e2c846000612068565b612489565b80516020909101209392505050565b600081600003611e6357604051637f0e960960e11b815260040160405180910390fd5b6040518060600160405280848152602001856020016020810190611e879190612afc565b6001600160a01b039081168252604087810135602093840152835160018a0155918301516002890180546001600160a01b0319169190921617905501516003860155611ed960c0850160a08601612afc565b6001600160a01b031682610100860135611ef7610160880188613515565b604051611f0592919061355b565b600060405180830381858888f193505050503d8060008114611f43576040519150601f19603f3d011682016040523d82523d6000602084013e611f48565b606091505b505060408051606081018252600180825260208201819052600019919092018190528782018290556002880180546001600160a01b03191690921790915560039096019590955550929392505050565b806003811115611faa57611faa612b32565b611fb3836108c8565b6003811115611fc457611fc4612b32565b146105f957611fd382826124cd565b817f0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c823360405161200592919061356b565b60405180910390a25050565b600054610100900460ff16610ea85760405162461bcd60e51b815260040161057e906134ca565b600054610100900460ff1661205f5760405162461bcd60e51b815260040161057e906134ca565b61066e33610b22565b610200820151606090156120d3576120818260116131a5565b6001600160401b0381111561209857612098612d84565b6040519080825280602002602001820160405280156120cb57816020015b60608152602001906001900390816120b65790505b509050612142565b6101e0830151156120e9576120818260106131a5565b6120f482600f6131a5565b6001600160401b0381111561210b5761210b612d84565b60405190808252806020026020018201604052801561213e57816020015b60608152602001906001900390816121295790505b5090505b825161214d906124f6565b8160008151811061216057612160613591565b602002602001018190525061217883602001516124f6565b8160018151811061218b5761218b613591565b60200260200101819052506121a38360400151612509565b816002815181106121b6576121b6613591565b60200260200101819052506121ce83606001516124f6565b816003815181106121e1576121e1613591565b60200260200101819052506121f983608001516124f6565b8160048151811061220c5761220c613591565b60200260200101819052506122248360a001516124f6565b8160058151811061223757612237613591565b602002602001018190525061226e8360c0015160405160200161225a91906135a7565b604051602081830303815290604052612532565b8160068151811061228157612281613591565b60200260200101819052506122998360e001516125a1565b816007815181106122ac576122ac613591565b60200260200101819052506122ce8361010001516001600160801b03166125a1565b816008815181106122e1576122e1613591565b60200260200101819052506122fa8361012001516125af565b8160098151811061230d5761230d613591565b60200260200101819052506123268361014001516125af565b81600a8151811061233957612339613591565b60200260200101819052506123528361016001516125af565b81600b8151811061236557612365613591565b602002602001018190525061237e836101800151612532565b81600c8151811061239157612391613591565b60200260200101819052506123aa836101a001516124f6565b81600d815181106123bd576123bd613591565b60200260200101819052506123f4836101c0015160405160200161225a919060c09190911b6001600160c01b031916815260080190565b81600e8151811061240757612407613591565b6020026020010181905250826101e0015160001461244c5761242d836101e001516125a1565b81600f8151811061244057612440613591565b60200260200101819052505b610200830151156104df576124658361020001516124f6565b8160108151811061247857612478613591565b602002602001018190525092915050565b60606000612496836125c6565b90506124a4815160c06126fb565b816040516020016124b69291906135dc565b604051602081830303815290604052915050919050565b60006124d883610a8d565b905060008260038111156124ee576124ee612b32565b909155505050565b60606104df612504836128a3565b612532565b604051606082811b6bffffffffffffffffffffffff19166020830152906104df9060340161225a565b60608082516001148015612560575060808360008151811061255657612556613591565b016020015160f81c105b1561256c5750816104df565b612578835160806126fb565b8360405160200161258a9291906135dc565b604051602081830303815290604052905092915050565b60606104df61250483612955565b60606104df612504836001600160401b0316612955565b606081516000036125e7576040805160008082526020820190925290610633565b6000805b835181101561262c5783818151811061260657612606613591565b6020026020010151518261261a91906131a5565b9150612625816131d7565b90506125eb565b6000826001600160401b0381111561264657612646612d84565b6040519080825280601f01601f191660200182016040528015612670576020820181803683370190505b50600092509050602081015b85518310156126f257600086848151811061269957612699613591565b6020026020010151905060006020820190506126b783828451612a7f565b8785815181106126c9576126c9613591565b602002602001015151836126dd91906131a5565b92505050826126eb906131d7565b925061267c565b50949350505050565b60608060388410156127625760408051600180825281830190925290602082018180368337019050509050612730838561360b565b60f81b8160008151811061274657612746613591565b60200101906001600160f81b031916908160001a9053506104dc565b600060015b612771818761363a565b156127945761277f826131d7565b915061278d6101008261364e565b9050612767565b61279f8260016131a5565b6001600160401b038111156127b6576127b6612d84565b6040519080825280601f01601f1916602001820160405280156127e0576020820181803683370190505b5092506127ed858361360b565b6127f890603761360b565b60f81b8360008151811061280e5761280e613591565b60200101906001600160f81b031916908160001a905350600190505b81811161289a5761010061283e8284613665565b61284a9061010061375c565b612854908861363a565b61285e9190613768565b60f81b83828151811061287357612873613591565b60200101906001600160f81b031916908160001a905350612893816131d7565b905061282a565b50509392505050565b60606000826040516020016128ba91815260200190565b60408051808303601f1901815260208084528383019092529250600091829160208201818036833701905050905060005b81518110156126f25783836128ff816131d7565b94508151811061291157612911613591565b602001015160f81c60f81b82828151811061292e5761292e613591565b60200101906001600160f81b031916908160001a90535061294e816131d7565b90506128eb565b606060008260405160200161296c91815260200190565b604051602081830303815290604052905060005b60208110156129c15781818151811061299b5761299b613591565b01602001516001600160f81b0319166000036129c1576129ba816131d7565b9050612980565b60006129ce826020613665565b6001600160401b038111156129e5576129e5612d84565b6040519080825280601f01601f191660200182016040528015612a0f576020820181803683370190505b50905060005b81518110156126f2578383612a29816131d7565b945081518110612a3b57612a3b613591565b602001015160f81c60f81b828281518110612a5857612a58613591565b60200101906001600160f81b031916908160001a905350612a78816131d7565b9050612a15565b8282825b60208110612abb5781518352612a9a6020846131a5565b9250612aa76020836131a5565b9150612ab4602082613665565b9050612a83565b905182516020929092036101000a6000190180199091169116179052505050565b6001600160a01b038116811461075f57600080fd5b803561069981612adc565b600060208284031215612b0e57600080fd5b81356104dc81612adc565b600060208284031215612b2b57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60048110612b6657634e487b7160e01b600052602160045260246000fd5b9052565b602081016104df8284612b48565b60006101a08284031215612b8b57600080fd5b50919050565b600060208284031215612ba357600080fd5b81356001600160401b03811115612bb957600080fd5b6108eb84828501612b78565b801515811461075f57600080fd5b600080600060608486031215612be857600080fd5b83359250602084013591506040840135612c0181612bc5565b809150509250925092565b60008083601f840112612c1e57600080fd5b5081356001600160401b03811115612c3557600080fd5b602083019150836020828501011115612c4d57600080fd5b9250929050565b60008060008060608587031215612c6a57600080fd5b843593506020850135925060408501356001600160401b03811115612c8e57600080fd5b612c9a87828801612c0c565b95989497509550505050565b60008060408385031215612cb957600080fd5b823591506020830135612ccb81612bc5565b809150509250929050565b600080600060408486031215612ceb57600080fd5b83356001600160401b0380821115612d0257600080fd5b612d0e87838801612b78565b94506020860135915080821115612d2457600080fd5b50612d3186828701612c0c565b9497909650939450505050565b60008060408385031215612d5157600080fd5b82356001600160401b03811115612d6757600080fd5b612d7385828601612b78565b9250506020830135612ccb81612bc5565b634e487b7160e01b600052604160045260246000fd5b6040516101a081016001600160401b0381118282101715612dbd57612dbd612d84565b60405290565b604080519081016001600160401b0381118282101715612dbd57612dbd612d84565b60405161022081016001600160401b0381118282101715612dbd57612dbd612d84565b600082601f830112612e1957600080fd5b81356001600160401b0380821115612e3357612e33612d84565b604051601f8301601f19908116603f01168101908282118183101715612e5b57612e5b612d84565b81604052838152866020858801011115612e7457600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006101a08236031215612ea757600080fd5b612eaf612d9a565b82358152612ebf60208401612af1565b60208201526040830135604082015260608301356060820152612ee460808401612af1565b6080820152612ef560a08401612af1565b60a0820152612f0660c08401612af1565b60c082015260e08381013590820152610100808401359082015261012080840135908201526101408084013590820152610160808401356001600160401b0380821115612f5257600080fd5b612f5e36838801612e08565b83850152610180925082860135915080821115612f7a57600080fd5b50612f8736828701612e08565b918301919091525092915050565b600060208284031215612fa757600080fd5b81516104dc81612adc565b60005b83811015612fcd578181015183820152602001612fb5565b50506000910152565b60008151808452612fee816020860160208601612fb2565b601f01601f19169290920160200192915050565b6020815260006104dc6020830184612fd6565b6d7369676e616c5f7365727669636560901b8152901515602082015260400190565b60006020828403121561304957600080fd5b81516104dc81612bc5565b60208152815160208201526000602083015161307b60408401826001600160a01b03169052565b50604083015160608301526060830151608083015260808301516130aa60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526131286101c0860184612fd6565b90860151858203601f1901838701529092506131448382612fd6565b9695505050505050565b9182526562726964676560d01b60208301521515604082015260600190565b6000835161317f818460208801612fb2565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104df576104df61318f565b6a195d1a195c97dd985d5b1d60aa1b8152901515602082015260400190565b6000600182016131e9576131e961318f565b5060010190565b60006020828403121561320257600080fd5b5051919050565b8581526001600160a01b0385166020820152604081018490526080606082018190528101829052818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b600082601f83011261326957600080fd5b6040516101008082018281106001600160401b038211171561328d5761328d612d84565b604052830181858211156132a057600080fd5b845b828110156132ba5780358252602091820191016132a2565b509195945050505050565b80356001600160801b038116811461069957600080fd5b80356001600160401b038116811461069957600080fd5b60006020828403121561330557600080fd5b81356001600160401b038082111561331c57600080fd5b908301906040828603121561333057600080fd5b613338612dc3565b82358281111561334757600080fd5b8301610300818803121561335a57600080fd5b613362612de5565b813581526020820135602082015261337c60408301612af1565b6040820152606082013560608201526080820135608082015260a082013560a08201526133ac8860c08401613258565b60c08201526101c08083013560e08301526101e06133cb8185016132c5565b6101008401526102006133df8186016132dc565b6101208501526133f261022086016132dc565b61014085015261340561024086016132dc565b6101608501526102608501358781111561341e57600080fd5b61342a8c828801612e08565b610180860152506102808501356101a085015261344a6102a086016132dc565b838501526102c0850135828501526102e085013581850152505050808352505060208301358281111561347c57600080fd5b61348887828601612e08565b60208301525095945050505050565b85815260018060a01b038516602082015283604082015282606082015260a06080820152600061100660a0830184612fd6565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000808335601e1984360301811261352c57600080fd5b8301803591506001600160401b0382111561354657600080fd5b602001915036819003821315612c4d57600080fd5b8183823760009101908152919050565b604081016135798285612b48565b6001600160a01b039290921660209190910152919050565b634e487b7160e01b600052603260045260246000fd5b60008183825b60088110156135cc5781518352602092830192909101906001016135ad565b5050506101008201905092915050565b600083516135ee818460208801612fb2565b835190830190613602818360208801612fb2565b01949350505050565b60ff81811683821601908111156104df576104df61318f565b634e487b7160e01b600052601260045260246000fd5b60008261364957613649613624565b500490565b80820281158282048414176104df576104df61318f565b818103818111156104df576104df61318f565b600181815b808511156136b35781600019048211156136995761369961318f565b808516156136a657918102915b93841c939080029061367d565b509250929050565b6000826136ca575060016104df565b816136d7575060006104df565b81600181146136ed57600281146136f757613713565b60019150506104df565b60ff8411156137085761370861318f565b50506001821b6104df565b5060208310610133831016604e8410600b8410161715613736575081810a6104df565b6137408383613678565b80600019048211156137545761375461318f565b029392505050565b60006104dc83836136bb565b60008261377757613777613624565b50069056fea264697066735822122042a8d268e2fd7923ed754bdf5bf9e025f6ca644d095e2c02b7f16035145fe86c64736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000002": { ++ "contractName": "TokenVault", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" ++ }, ++ "code": "0x6080604052600436106100dd5760003560e01c80638da5cb5b1161007f578063a86f9d9e11610059578063a86f9d9e1461029f578063c287e578146102bf578063ee1490b2146102ff578063f2fde38b1461031257600080fd5b80638da5cb5b146102305780639754149b1461024e5780639aa8605c1461026e57600080fd5b806367090ccf116100bb57806367090ccf1461015b5780636c6563f61461019c578063715018a6146101bc578063780b64f0146101d157600080fd5b80630c6fab82146100e257806319ab453c146101045780633ab76e9f14610124575b600080fd5b3480156100ee57600080fd5b506101026100fd366004611f9b565b610332565b005b34801561011057600080fd5b5061010261011f36600461200a565b610549565b34801561013057600080fd5b506097546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561016757600080fd5b5061013e610176366004612027565b60cb6020908152600092835260408084209091529082529020546001600160a01b031681565b3480156101a857600080fd5b5061013e6101b7366004612065565b610661565b3480156101c857600080fd5b50610102610678565b3480156101dd57600080fd5b506102116101ec36600461209e565b60cc60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610152565b34801561023c57600080fd5b506065546001600160a01b031661013e565b34801561025a57600080fd5b506101026102693660046120b7565b61068c565b34801561027a57600080fd5b5061028e61028936600461200a565b6109da565b6040516101529594939291906121a7565b3480156102ab57600080fd5b5061013e6102ba3660046121f8565b610b2b565b3480156102cb57600080fd5b506102ef6102da36600461200a565b60c96020526000908152604090205460ff1681565b6040519015158152602001610152565b61010261030d36600461228c565b610b41565b34801561031e57600080fd5b5061010261032d36600461200a565b611371565b61033a6113ea565b6562726964676560d01b61034f816000610b2b565b6001600160a01b0316336001600160a01b03161461038057604051630d85cccf60e11b815260040160405180910390fd5b6000336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156103c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e4919061236b565b905061040481604001516a1d1bdad95b97dd985d5b1d60aa1b6000610661565b6001600160a01b031681602001516001600160a01b031614610439576040516320258b8760e21b815260040160405180910390fd5b60004687350361046e57610453604088016020890161200a565b90506104696001600160a01b0382168686611443565b6104de565b610477876114a6565b6040516342e91bb360e01b81526001600160a01b03878116600483015260248201879052919250908216906342e91bb390604401600060405180830381600087803b1580156104c557600080fd5b505af11580156104d9573d6000803e3d6000fd5b505050505b815160408084015181519081526001600160a01b0384811660208301529181018790528188169291891691907fe5da926519fc972010fe65b35c1e3339e6dc72b35ffaec203999c2a2a2593eac9060600160405180910390a450505061054360018055565b50505050565b600054610100900460ff16158080156105695750600054600160ff909116105b806105835750303b158015610583575060005460ff166001145b6105eb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561060e576000805461ff0019166101001790555b61061782611505565b801561065d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600061066e84848461151e565b90505b9392505050565b610680611637565b61068a6000611691565b565b6106946113ea565b60006106a660a085016080860161200a565b6001600160a01b0316036106cd576040516372b41cdf60e01b815260040160405180910390fd5b468360400135146106f1576040516348bc100560e01b815260040160405180910390fd5b60006107076562726964676560d01b6000610b2b565b90506000816001600160a01b0316635817b0c3866040518263ffffffff1660e01b81526004016107379190612443565b602060405180830381865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107789190612561565b600081815260cc6020526040902080546001909101549192506001600160a01b031690816107b957604051637c6addb760e01b815260040160405180910390fd5b60405163ce70f39b60e01b81526001600160a01b0385169063ce70f39b906107ef90869060608c0135908b908b9060040161257a565b602060405180830381865afa15801561080c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083091906125a4565b61084d576040516308ba49e560e31b815260040160405180910390fd5b6040805180820182526000808252602080830182815287835260cc909152929020905181546001600160a01b0319166001600160a01b0390911617815590516001909101558015610961576001600160a01b038216600090815260c9602052604090205460ff161561093d576001600160a01b0382166342e91bb36108d860a08a0160808b0161200a565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b15801561092057600080fd5b505af1158015610934573d6000803e3d6000fd5b50505050610961565b61096161095060a0890160808a0161200a565b6001600160a01b0384169083611443565b61097160a088016080890161200a565b6001600160a01b0316837fc5d9f7cd7998e24ecf12ad69eca9339764e2cb13788d5d9616f502601b219af684846040516109c09291906001600160a01b03929092168252602082015260400190565b60405180910390a3505050506109d560018055565b505050565b60ca6020526000908152604090208054600182015460028301805492936001600160a01b03831693600160a01b90930460ff1692909190610a1a906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610a46906125c1565b8015610a935780601f10610a6857610100808354040283529160200191610a93565b820191906000526020600020905b815481529060010190602001808311610a7657829003601f168201915b505050505090806003018054610aa8906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad4906125c1565b8015610b215780601f10610af657610100808354040283529160200191610b21565b820191906000526020600020905b815481529060010190602001808311610b0457829003601f168201915b5050505050905085565b6000610b3846848461151e565b90505b92915050565b610b496113ea565b6001600160a01b0387161580610b895750610b74886a1d1bdad95b97dd985d5b1d60aa1b6000610661565b6001600160a01b0316876001600160a01b0316145b15610ba757604051634694641b60e01b815260040160405180910390fd5b6001600160a01b038616610bce57604051637c6addb760e01b815260040160405180910390fd5b84600003610bee5760405162af849960e11b815260040160405180910390fd5b6040805160a08101825260008082526020820181905291810191909152606080820181905260808201526001600160a01b038716600090815260c9602052604081205460ff1615610e4557604051630ef7c31560e31b8152336004820152602481018890526001600160a01b038916906377be18a890604401600060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b505050506001600160a01b03888116600090815260ca6020908152604091829020825160a08101845281548152600182015494851692810192909252600160a01b90930460ff1691810191909152600282018054919291606084019190610cfb906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610d27906125c1565b8015610d745780601f10610d4957610100808354040283529160200191610d74565b820191906000526020600020905b815481529060010190602001808311610d5757829003601f168201915b50505050508152602001600382018054610d8d906125c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610db9906125c1565b8015610e065780601f10610ddb57610100808354040283529160200191610e06565b820191906000526020600020905b815481529060010190602001808311610de957829003601f168201915b5050509190925250505060208101519092506001600160a01b0316610e3e57604051633e45a03560e21b815260040160405180910390fd5b50856110a5565b60008890506040518060a001604052804681526020018a6001600160a01b03168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc919061260a565b60ff168152602001826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f3a9190810190612627565b8152602001826001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fa59190810190612627565b90526040516370a0823160e01b81523060048201529093506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ff1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110159190612561565b905061102c6001600160a01b03831633308c6116e3565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015611072573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110969190612561565b6110a0919061269e565b925050505b611134604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018b905233608082015261115b8b6a1d1bdad95b97dd985d5b1d60aa1b6000610661565b6001600160a01b031660a08201526080810151604051630637d5c160e11b9161118d918691908e9087906024016126bf565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610160820152610140810187905261012081018690526111df863461269e565b60e08201526001600160a01b03851660c0820152610180810184905260006112106562726964676560d01b82610b2b565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b815260040161123c9190612757565b60206040518083038185885af115801561125a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061127f9190612561565b905060405180604001604052808b6001600160a01b031681526020018481525060cc600083815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101559050508a6001600160a01b031682608001516001600160a01b0316827f325cab7553038374e17f39bb45e2a2c90f66c6a52798cb5f95c20d94c11c95e28f8e88604051611352939291909283526001600160a01b03919091166020830152604082015260600190565b60405180910390a45050505061136760018055565b5050505050505050565b611379611637565b6001600160a01b0381166113de5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e2565b6113e781611691565b50565b60026001540361143c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105e2565b6002600155565b6040516001600160a01b0383166024820152604481018290526109d590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261171b565b8035600090815260cb602090815260408083208392909183916114cd91870190870161200a565b6001600160a01b03908116825260208201929092526040016000205416905080610b3b576114fa836117ed565b610671565b60018055565b61150d611a72565b611515611aa1565b6113e781611ad0565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa15801561156f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115939190612847565b905081610671576040516001600160a01b03821615159061160290869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b6040516020818303038152906040529061162f5760405162461bcd60e51b81526004016105e29190612864565b509392505050565b6065546001600160a01b0316331461068a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e2565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526105439085906323b872dd60e01b9060840161146f565b6000611770826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b199092919063ffffffff16565b8051909150156109d5578080602001905181019061178e91906125a4565b6109d55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105e2565b6000611866818335611805604086016020870161200a565b60405161182892916001600160a01b031690602001918252602082015260400190565b604051602081830303815290604052805190602001206040518060200161184e90611f69565b601f1982820381018352601f90910116604052611b28565b6097549091506001600160a01b0380831691636c0db62b911661188f604086016020870161200a565b85356118a16060880160408901612877565b6118ae6060890189612894565b6118bb60808b018b612894565b6118c58c35611c2c565b6040516020016118d7939291906128db565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016119089796959493929190612924565b600060405180830381600087803b15801561192257600080fd5b505af1158015611936573d6000803e3d6000fd5b5050506001600160a01b038216600090815260c960209081526040808320805460ff1916600117905560ca90915290208391506119738282612a90565b50508135600090815260cb6020908152604080832084939092909161199d9190870190870161200a565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b03168260200160208101906119fe919061200a565b6001600160a01b031683357f9e465b29e576a3e01584e31d607353f21b80c055e813af907c0a495f6cf4f7bc611a376060870187612894565b611a446080890189612894565b611a5460608b0160408c01612877565b604051611a65959493929190612b17565b60405180910390a4919050565b600054610100900460ff16611a995760405162461bcd60e51b81526004016105e290612b54565b61068a611cbf565b600054610100900460ff16611ac85760405162461bcd60e51b81526004016105e290612b54565b61068a611ce6565b6001600160a01b038116611af757604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b606061066e8484600085611d16565b600083471015611b7a5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016105e2565b8151600003611bcb5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016105e2565b8282516020840186f590506001600160a01b0381166106715760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016105e2565b60606000611c3983611df3565b600101905060008167ffffffffffffffff811115611c5957611c5961221d565b6040519080825280601f01601f191660200182016040528015611c83576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611c8d57509392505050565b600054610100900460ff166114ff5760405162461bcd60e51b81526004016105e290612b54565b600054610100900460ff16611d0d5760405162461bcd60e51b81526004016105e290612b54565b61068a33611691565b606082471015611d775760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105e2565b600080866001600160a01b03168587604051611d939190612b9f565b60006040518083038185875af1925050503d8060008114611dd0576040519150601f19603f3d011682016040523d82523d6000602084013e611dd5565b606091505b5091509150611de687838387611ecb565b925050505b949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e325772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611e5e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611e7c57662386f26fc10000830492506010015b6305f5e1008310611e94576305f5e100830492506008015b6127108310611ea857612710830492506004015b60648310611eba576064830492506002015b600a8310610b3b5760010192915050565b60608315611f3a578251600003611f33576001600160a01b0385163b611f335760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105e2565b5081611deb565b611deb8383815115611f4f5781518083602001fd5b8060405162461bcd60e51b81526004016105e29190612864565b61169280612bbc83390190565b6001600160a01b03811681146113e757600080fd5b8035611f9681611f76565b919050565b60008060008060808587031215611fb157600080fd5b843567ffffffffffffffff811115611fc857600080fd5b850160a08188031215611fda57600080fd5b93506020850135611fea81611f76565b92506040850135611ffa81611f76565b9396929550929360600135925050565b60006020828403121561201c57600080fd5b813561067181611f76565b6000806040838503121561203a57600080fd5b82359150602083013561204c81611f76565b809150509250929050565b80151581146113e757600080fd5b60008060006060848603121561207a57600080fd5b8335925060208401359150604084013561209381612057565b809150509250925092565b6000602082840312156120b057600080fd5b5035919050565b6000806000604084860312156120cc57600080fd5b833567ffffffffffffffff808211156120e457600080fd5b908501906101a082880312156120f957600080fd5b9093506020850135908082111561210f57600080fd5b818601915086601f83011261212357600080fd5b81358181111561213257600080fd5b87602082850101111561214457600080fd5b6020830194508093505050509250925092565b60005b8381101561217257818101518382015260200161215a565b50506000910152565b60008151808452612193816020860160208601612157565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260ff8416604082015260a0606082018190526000906121da9083018561217b565b82810360808401526121ec818561217b565b98975050505050505050565b6000806040838503121561220b57600080fd5b82359150602083013561204c81612057565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561225c5761225c61221d565b604052919050565b600067ffffffffffffffff82111561227e5761227e61221d565b50601f01601f191660200190565b600080600080600080600080610100898b0312156122a957600080fd5b8835975060208901356122bb81611f76565b965060408901356122cb81611f76565b9550606089013594506080890135935060a0890135925060c08901356122f081611f76565b915060e089013567ffffffffffffffff81111561230c57600080fd5b8901601f81018b1361231d57600080fd5b803561233061232b82612264565b612233565b8181528c602083850101111561234557600080fd5b816020840160208301376000602083830101528093505050509295985092959890939650565b60006060828403121561237d57600080fd5b6040516060810181811067ffffffffffffffff821117156123a0576123a061221d565b6040528251815260208301516123b581611f76565b60208201526040928301519281019290925250919050565b6000808335601e198436030181126123e457600080fd5b830160208101925035905067ffffffffffffffff81111561240457600080fd5b80360382131561241357600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815281356020820152600061245c60208401611f8b565b6001600160a01b038116604084015250604083013560608301526060830135608083015261248c60808401611f8b565b6001600160a01b03811660a0840152506124a860a08401611f8b565b6001600160a01b03811660c0840152506124c460c08401611f8b565b6001600160a01b03811660e08401525061010060e084013581840152610120818501358185015261014091508085013582850152506101608185013581850152612510818601866123cd565b925090506101a0610180818187015261252e6101c08701858561241a565b935061253c818801886123cd565b878603601f1901848901529350905061255684848361241a565b979650505050505050565b60006020828403121561257357600080fd5b5051919050565b84815283602082015260606040820152600061259a60608301848661241a565b9695505050505050565b6000602082840312156125b657600080fd5b815161067181612057565b600181811c908216806125d557607f821691505b6020821081036125f557634e487b7160e01b600052602260045260246000fd5b50919050565b60ff811681146113e757600080fd5b60006020828403121561261c57600080fd5b8151610671816125fb565b60006020828403121561263957600080fd5b815167ffffffffffffffff81111561265057600080fd5b8201601f8101841361266157600080fd5b805161266f61232b82612264565b81815285602083850101111561268457600080fd5b612695826020830160208601612157565b95945050505050565b81810381811115610b3b57634e487b7160e01b600052601160045260246000fd5b60808152845160808201526000602086015160018060a01b0380821660a085015260ff60408901511660c08501526060880151915060a060e085015261270961012085018361217b565b91506080880151607f1985840301610100860152612727838261217b565b9188166020860152506001600160a01b038616604085015291506127489050565b82606083015295945050505050565b60208152815160208201526000602083015161277e60408401826001600160a01b03169052565b50604083015160608301526060830151608083015260808301516127ad60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a061018080850182905261282b6101c086018461217b565b90860151858203601f19018387015290925061259a838261217b565b60006020828403121561285957600080fd5b815161067181611f76565b602081526000610b38602083018461217b565b60006020828403121561288957600080fd5b8135610671816125fb565b6000808335601e198436030181126128ab57600080fd5b83018035915067ffffffffffffffff8211156128c657600080fd5b60200191503681900382131561241357600080fd5b8284823760008382016b050c4e4d2c8cecac9e13f19160a31b8152835161290981600c840160208801612157565b602960f81b600c9290910191820152600d0195945050505050565b6001600160a01b038881168252871660208201526040810186905260ff8516606082015260c060808201819052600090612961908301858761241a565b82810360a0840152612973818561217b565b9a9950505050505050505050565b601f8211156109d557600081815260208120601f850160051c810160208610156129a85750805b601f850160051c820191505b818110156129c7578281556001016129b4565b505050505050565b67ffffffffffffffff8311156129e7576129e761221d565b6129fb836129f583546125c1565b83612981565b6000601f841160018114612a2f5760008515612a175750838201355b600019600387901b1c1916600186901b178355612a89565b600083815260209020601f19861690835b82811015612a605786850135825560209485019460019092019101612a40565b5086821015612a7d5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81358155600181016020830135612aa681611f76565b81546040850135612ab6816125fb565b60ff60a01b60a09190911b166001600160a01b03929092166001600160a81b03199190911617179055612aec6060830183612894565b612afa8183600286016129cf565b5050612b096080830183612894565b6105438183600386016129cf565b606081526000612b2b60608301878961241a565b8281036020840152612b3e81868861241a565b91505060ff831660408301529695505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251612bb1818460208701612157565b919091019291505056fe608060405234801561001057600080fd5b50611672806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80636c6563f6116100c357806395d89b411161007c57806395d89b41146102e7578063a457c2d7146102ef578063a86f9d9e14610302578063a9059cbb14610315578063dd62ed3e14610328578063f2fde38b1461033b57600080fd5b80636c6563f61461026c57806370a082311461027f578063715018a6146102a857806377be18a8146102b05780637cf8ed0d146102c35780638da5cb5b146102d657600080fd5b8063395093511161011557806339509351146101cd5780633ab76e9f146101e057806342e91bb31461020557806349d126051461021a57806367e828bf146102235780636c0db62b1461025957600080fd5b806306fdde0314610152578063095ea7b31461017057806318160ddd1461019357806323b872dd146101a5578063313ce567146101b8575b600080fd5b61015a61034e565b6040516101679190611182565b60405180910390f35b61018361017e3660046111e5565b6103e0565b6040519015158152602001610167565b60cb545b604051908152602001610167565b6101836101b3366004611211565b6103fa565b60fd5460405160ff9091168152602001610167565b6101836101db3660046111e5565b61043a565b6097546001600160a01b03165b6040516001600160a01b039091168152602001610167565b6102186102133660046111e5565b61045c565b005b61019760fc5481565b61023a60fb5460fc546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610167565b6102186102673660046112f5565b6104f9565b6101ed61027a3660046113b4565b61069f565b61019761028d3660046113e9565b6001600160a01b0316600090815260c9602052604090205490565b6102186106ac565b6102186102be3660046111e5565b6106c0565b60fb546101ed906001600160a01b031681565b6065546001600160a01b03166101ed565b61015a610750565b6101836102fd3660046111e5565b61075f565b6101ed610310366004611406565b6107e5565b6101836103233660046111e5565b6107f2565b610197610336366004611432565b610827565b6102186103493660046113e9565b610852565b606060cc805461035d9061146b565b80601f01602080910402602001604051908101604052809291908181526020018280546103899061146b565b80156103d65780601f106103ab576101008083540402835291602001916103d6565b820191906000526020600020905b8154815290600101906020018083116103b957829003601f168201915b5050505050905090565b6000336103ee8185856108cb565b60019150505b92915050565b6000306001600160a01b03841603610425576040516319a6f37760e21b815260040160405180910390fd5b6104308484846109f0565b90505b9392505050565b6000336103ee81858561044d8383610827565b61045791906114a5565b6108cb565b6a1d1bdad95b97dd985d5b1d60aa1b6104768160006107e5565b6001600160a01b0316336001600160a01b0316146104a757604051630d85cccf60e11b815260040160405180910390fd5b6104b18383610a09565b826001600160a01b03167f397b33b307fc137878ebfc75b295289ec0ee25a31bb5bf034f33256fe8ea2aa6836040516104ec91815260200190565b60405180910390a2505050565b600054610100900460ff16158080156105195750600054600160ff909116105b806105335750303b158015610533575060005460ff166001145b61059b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156105be576000805461ff0019166101001790555b6001600160a01b03861615806105d2575084155b806105dc57504685145b806105e657508251155b806105f057508151155b1561060e576040516301e25ab360e71b815260040160405180910390fd5b61061787610acb565b6106218284610ae4565b60fb80546001600160a01b0319166001600160a01b03881617905560fc85905560fd805460ff191660ff86161790558015610696576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6000610430848484610b15565b6106b4610c2e565b6106be6000610c88565b565b6a1d1bdad95b97dd985d5b1d60aa1b6106da8160006107e5565b6001600160a01b0316336001600160a01b03161461070b57604051630d85cccf60e11b815260040160405180910390fd5b6107158383610cda565b826001600160a01b03167f9b5b9a05e4726d8bb959f1440e05c6b8109443f2083bc4e386237d7654526553836040516104ec91815260200190565b606060cd805461035d9061146b565b6000338161076d8286610827565b9050838110156107cd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610592565b6107da82868684036108cb565b506001949350505050565b6000610433468484610b15565b6000306001600160a01b0384160361081d576040516319a6f37760e21b815260040160405180910390fd5b6104338383610e0b565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b61085a610c2e565b6001600160a01b0381166108bf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610592565b6108c881610c88565b50565b6001600160a01b03831661092d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610592565b6001600160a01b03821661098e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610592565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000336109fe858285610e19565b6107da858585610e93565b6001600160a01b038216610a5f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610592565b8060cb6000828254610a7191906114a5565b90915550506001600160a01b038216600081815260c960209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b5050565b610ad361103e565b610adb61106d565b6108c88161109c565b600054610100900460ff16610b0b5760405162461bcd60e51b8152600401610592906114c6565b610ac782826110e5565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8a9190611511565b905081610433576040516001600160a01b038216151590610bf990869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b60405160208183030381529060405290610c265760405162461bcd60e51b81526004016105929190611182565b509392505050565b6065546001600160a01b031633146106be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610592565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610d3a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610592565b6001600160a01b038216600090815260c9602052604090205481811015610dae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610592565b6001600160a01b038316600081815260c960209081526040808320868603905560cb80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016109e3565b505050565b6000336103ee818585610e93565b6000610e258484610827565b90506000198114610e8d5781811015610e805760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610592565b610e8d84848484036108cb565b50505050565b6001600160a01b038316610ef75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610592565b6001600160a01b038216610f595760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610592565b6001600160a01b038316600090815260c9602052604090205481811015610fd15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610592565b6001600160a01b03808516600081815260c9602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110319086815260200190565b60405180910390a3610e8d565b600054610100900460ff166110655760405162461bcd60e51b8152600401610592906114c6565b6106be611125565b600054610100900460ff166110945760405162461bcd60e51b8152600401610592906114c6565b6106be611152565b6001600160a01b0381166110c357604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661110c5760405162461bcd60e51b8152600401610592906114c6565b60cc611118838261157c565b5060cd610e06828261157c565b600054610100900460ff1661114c5760405162461bcd60e51b8152600401610592906114c6565b60018055565b600054610100900460ff166111795760405162461bcd60e51b8152600401610592906114c6565b6106be33610c88565b600060208083528351808285015260005b818110156111af57858101830151858201604001528201611193565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146108c857600080fd5b600080604083850312156111f857600080fd5b8235611203816111d0565b946020939093013593505050565b60008060006060848603121561122657600080fd5b8335611231816111d0565b92506020840135611241816111d0565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261127957600080fd5b813567ffffffffffffffff8082111561129457611294611252565b604051601f8301601f19908116603f011681019082821181831017156112bc576112bc611252565b816040528381528660208588010111156112d557600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060008060c0878903121561130e57600080fd5b8635611319816111d0565b95506020870135611329816111d0565b945060408701359350606087013560ff8116811461134657600080fd5b9250608087013567ffffffffffffffff8082111561136357600080fd5b61136f8a838b01611268565b935060a089013591508082111561138557600080fd5b5061139289828a01611268565b9150509295509295509295565b803580151581146113af57600080fd5b919050565b6000806000606084860312156113c957600080fd5b83359250602084013591506113e06040850161139f565b90509250925092565b6000602082840312156113fb57600080fd5b8135610433816111d0565b6000806040838503121561141957600080fd5b823591506114296020840161139f565b90509250929050565b6000806040838503121561144557600080fd5b8235611450816111d0565b91506020830135611460816111d0565b809150509250929050565b600181811c9082168061147f57607f821691505b60208210810361149f57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156103f457634e487b7160e01b600052601160045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561152357600080fd5b8151610433816111d0565b601f821115610e0657600081815260208120601f850160051c810160208610156115555750805b601f850160051c820191505b8181101561157457828155600101611561565b505050505050565b815167ffffffffffffffff81111561159657611596611252565b6115aa816115a4845461146b565b8461152e565b602080601f8311600181146115df57600084156115c75750858301515b600019600386901b1c1916600185901b178555611574565b600085815260208120601f198616915b8281101561160e578886015182559484019460019091019084016115ef565b508582101561162c5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220aa6bb11dc55118477def21036c59af1b27ca026c692cdc5dcd86310e02edd01d64736f6c63430008120033a2646970667358221220fc3eb34df0bf01db8441fdaa57744a93e112176036f99e8579515a267310f84564736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000003": { ++ "contractName": "EtherVault", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006", ++ "0x029ae2e2f1d6964720a0fa7e6ffa902f995c156242f4f5a930aa9d9765d167d0": "0x0000000000000000000000000000000000000000000000000000000000000001" ++ }, ++ "code": "0x6080604052600436106100a05760003560e01c80638da5cb5b116100645780638da5cb5b14610195578063a86f9d9e146101b3578063ba0bbd95146101d3578063d73bb3d0146101f3578063f2fde38b14610213578063fe9fbb801461023357600080fd5b806319ab453c146100e95780632d1fb389146101095780633ab76e9f146101295780636c6563f614610160578063715018a61461018057600080fd5b366100e45747158015906100c4575033600090815260c9602052604090205460ff16155b156100e257604051634fa3f24560e01b815260040160405180910390fd5b005b600080fd5b3480156100f557600080fd5b506100e2610104366004610a47565b61027c565b34801561011557600080fd5b506100e2610124366004610a79565b610394565b34801561013557600080fd5b506097546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561016c57600080fd5b5061014361017b366004610aae565b61044d565b34801561018c57600080fd5b506100e2610464565b3480156101a157600080fd5b506065546001600160a01b0316610143565b3480156101bf57600080fd5b506101436101ce366004610ae3565b610478565b3480156101df57600080fd5b506100e26101ee366004610b06565b610485565b3480156101ff57600080fd5b506100e261020e366004610b32565b610543565b34801561021f57600080fd5b506100e261022e366004610a47565b6105c6565b34801561023f57600080fd5b5061026c61024e366004610a47565b6001600160a01b0316600090815260c9602052604090205460ff1690565b6040519015158152602001610157565b600054610100900460ff161580801561029c5750600054600160ff909116105b806102b65750303b1580156102b6575060005460ff166001145b61031e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610341576000805461ff0019166101001790555b61034a8261063c565b8015610390576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b61039c610655565b6001600160a01b03821615806103d057506001600160a01b038216600090815260c9602052604090205460ff161515811515145b156103ee57604051631bebdfa760e21b815260040160405180910390fd5b6001600160a01b038216600081815260c96020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b600061045a8484846106af565b90505b9392505050565b61046c610655565b61047660006107c8565b565b600061045d4684846106af565b33600090815260c9602052604090205460ff166104b557604051634fa3f24560e01b815260040160405180910390fd5b6104bd61081a565b6001600160a01b0382166104e45760405163687563df60e01b815260040160405180910390fd5b6104f76001600160a01b03831682610873565b816001600160a01b03167f7b9f77d35803cd201eac9c4ed739bc1fcd3f1be6ab8877d925d1e55517b6fd6e8260405161053291815260200190565b60405180910390a261039060018055565b33600090815260c9602052604090205460ff1661057357604051634fa3f24560e01b815260040160405180910390fd5b61057b61081a565b6105853382610873565b60405181815233907f7b9f77d35803cd201eac9c4ed739bc1fcd3f1be6ab8877d925d1e55517b6fd6e9060200160405180910390a26105c360018055565b50565b6105ce610655565b6001600160a01b0381166106335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610315565b6105c3816107c8565b610644610934565b61064c610963565b6105c381610992565b6065546001600160a01b031633146104765760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610315565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107249190610b4b565b90508161045d576040516001600160a01b03821615159061079390869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b604051602081830303815290604052906107c05760405162461bcd60e51b81526004016103159190610b68565b509392505050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60026001540361086c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610315565b6002600155565b80158061088757506001600160a01b038216155b15610890575050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146108dd576040519150601f19603f3d011682016040523d82523d6000602084013e6108e2565b606091505b50509050806109295760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610315565b505050565b60018055565b600054610100900460ff1661095b5760405162461bcd60e51b815260040161031590610bb6565b6104766109db565b600054610100900460ff1661098a5760405162461bcd60e51b815260040161031590610bb6565b610476610a02565b6001600160a01b0381166109b957604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661092e5760405162461bcd60e51b815260040161031590610bb6565b600054610100900460ff16610a295760405162461bcd60e51b815260040161031590610bb6565b610476336107c8565b6001600160a01b03811681146105c357600080fd5b600060208284031215610a5957600080fd5b813561045d81610a32565b80358015158114610a7457600080fd5b919050565b60008060408385031215610a8c57600080fd5b8235610a9781610a32565b9150610aa560208401610a64565b90509250929050565b600080600060608486031215610ac357600080fd5b8335925060208401359150610ada60408501610a64565b90509250925092565b60008060408385031215610af657600080fd5b82359150610aa560208401610a64565b60008060408385031215610b1957600080fd5b8235610b2481610a32565b946020939093013593505050565b600060208284031215610b4457600080fd5b5035919050565b600060208284031215610b5d57600080fd5b815161045d81610a32565b600060208083528351808285015260005b81811015610b9557858101830151858201604001528201610b79565b506000604082860101526040601f19601f8301168501019250505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea264697066735822122013d4ce04e85b4097bbe860e0a2cf9a01422a1ddd52b24ceb5fd83be8df1a928964736f6c63430008120033", ++ "balance": "0xfffffffffffffdd4e373edd85fffffff" ++ }, ++ "0x0000777700000000000000000000000000000007": { ++ "contractName": "SignalService", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" ++ }, ++ "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80636c6563f6116100715780636c6563f614610144578063715018a6146101575780638da5cb5b1461015f578063a86f9d9e14610170578063f2fde38b14610183578063f8f3f8441461019657600080fd5b806319ab453c146100ae57806332676bc6146100c35780633ab76e9f146100eb5780635221f6131461011057806366ca2bc014610123575b600080fd5b6100c16100bc3660046119d4565b6101c2565b005b6100d66100d13660046119f1565b6102da565b60405190151581526020015b60405180910390f35b6097546001600160a01b03165b6040516001600160a01b0390911681526020016100e2565b6100d661011e366004611a1d565b61034c565b610136610131366004611ab3565b6104bc565b6040519081526020016100e2565b6100f8610152366004611ae1565b610501565b6100c1610518565b6065546001600160a01b03166100f8565b6100f861017e366004611b16565b61052c565b6100c16101913660046119d4565b610539565b6101366101a43660046119f1565b6040805192835260208301919091526034600c830120918101905290565b600054610100900460ff16158080156101e25750600054600160ff909116105b806101fc5750303b1580156101fc575060005460ff166001145b6102645760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610287576000805461ff0019166101001790555b610290826105b2565b80156102d6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006001600160a01b038316610303576040516354cdfc8d60e11b815260040160405180910390fd5b60008290036103255760405163014f1da760e21b815260040160405180910390fd5b5060408051838152602081018390526034600c820120908201909152546001145b92915050565b600046860361036e5760405163e822b48d60e01b815260040160405180910390fd5b6001600160a01b038516610395576040516354cdfc8d60e11b815260040160405180910390fd5b60008490036103b75760405163014f1da760e21b815260040160405180910390fd5b60006103c583850185611bb2565b905060006103dc647461696b6f60d81b600061052c565b8251604051632e24533960e21b81526001600160a01b03929092169163b8914ce49161040e9160040190815260200190565b602060405180830381865afa15801561042b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044f9190611c79565b60408051898152602081018990526034600c82012081830190925260608101919091529091506104b090608001604051602081830303815290604052604051806040016040528060018152602001600160f81b8152508460200151846105cb565b98975050505050505050565b60008181036104de5760405163014f1da760e21b815260040160405180910390fd5b506040805133815260208101929092526034600c83012091810190526001815590565b600061050e8484846105ef565b90505b9392505050565b610520610708565b61052a6000610762565b565b60006105114684846105ef565b610541610708565b6001600160a01b0381166105a65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161025b565b6105af81610762565b50565b6105ba6107b4565b6105c26107e3565b6105af81610812565b6000806105d78661085b565b90506105e58186868661088d565b9695505050505050565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106649190611c92565b905081610511576040516001600160a01b0382161515906106d390869086906020016080808252600c908201526b20a91d3d32b937a0b232391d60a11b60a0820152602081019290925260c060408301819052600190830152601760f91b60e083015260608201526101000190565b604051602081830303815290604052906107005760405162461bcd60e51b815260040161025b9190611caf565b509392505050565b6065546001600160a01b0316331461052a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161025b565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166107db5760405162461bcd60e51b815260040161025b90611cfd565b61052a6108ca565b600054610100900460ff1661080a5760405162461bcd60e51b815260040161025b90611cfd565b61052a6108f7565b6001600160a01b03811661083957604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6060818051906020012060405160200161087791815260200190565b6040516020818303038152906040529050919050565b600080600061089d878686610927565b915091508180156108bf57508051602080830191909120875191880191909120145b979650505050505050565b600054610100900460ff166108f15760405162461bcd60e51b815260040161025b90611cfd565b60018055565b600054610100900460ff1661091e5760405162461bcd60e51b815260040161025b90611cfd565b61052a33610762565b60006060600061093685610a02565b90506000806000610948848a89610af3565b8151929550909350915015808061095c5750815b6109a85760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e000000000000604482015260640161025b565b6000816109c457604051806020016040528060008152506109f0565b6109f0866109d3600188611d5e565b815181106109e3576109e3611d71565b6020026020010151610f13565b919b919a509098505050505050505050565b60606000610a0f83610f3a565b90506000815167ffffffffffffffff811115610a2d57610a2d611b42565b604051908082528060200260200182016040528015610a7257816020015b6040805180820190915260608082526020820152815260200190600190039081610a4b5790505b50905060005b8251811015610700576000610aa5848381518110610a9857610a98611d71565b6020026020010151610f6d565b90506040518060400160405280610abb83610f3a565b815260200182815250838381518110610ad657610ad6611d71565b60200260200101819052505080610aec90611d87565b9050610a78565b600060606000806000610b0587610ffd565b90506000869050600080610b2c604051806040016040528060608152602001606081525090565b60005b8c51811015610eeb578c8181518110610b4a57610b4a611d71565b602002602001015191508284610b609190611da0565b9350610b6d600188611da0565b965083600003610bca578482602001518051906020012014610bc55760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b604482015260640161025b565b610c8c565b602082602001515110610c31578482602001518051906020012014610bc55760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c20686173680000000000604482015260640161025b565b84610c3f8360200151611136565b14610c8c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f64652068617368000000000000604482015260640161025b565b610c9860106001611db3565b60ff1682600001515103610d065785518414610eeb576000868581518110610cc257610cc2611d71565b01602001518351805160f89290921c925060009183908110610ce657610ce6611d71565b60200260200101519050610cf98161115e565b9650600194505050610edb565b81515160011901610e93576000610d1c83611194565b9050600081600081518110610d3357610d33611d71565b016020015160f81c90506000610d4a600283611dcc565b610d55906002611dfc565b90506000610d66848360ff166111b8565b90506000610d748b8a6111b8565b90506000610d8283836111ee565b905060ff851660021480610d99575060ff85166003145b15610dd357808351148015610dae5750808251145b15610dc057610dbd818b611da0565b99505b50600160ff1b9950610eeb945050505050565b60ff85161580610de6575060ff85166001145b15610e3c5782518114610e065750600160ff1b9950610eeb945050505050565b610e2d8860000151600181518110610e2057610e20611d71565b602002602001015161115e565b9a509750610edb945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b606482015260840161025b565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e000000604482015260640161025b565b610ee481611d87565b9050610b2f565b50600160ff1b841486610efe87866111b8565b909e909d50909b509950505050505050505050565b8051805160609161034691610f2a90600190611d5e565b81518110610a9857610a98611d71565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061034690611268565b60606000806000610f7d85611454565b919450925090506000816001811115610f9857610f98611e15565b14610fe55760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e0000000000000000604482015260640161025b565b610ff48560200151848461179e565b95945050505050565b606060008251600261100f9190611e2b565b67ffffffffffffffff81111561102757611027611b42565b6040519080825280601f01601f191660200182016040528015611051576020820181803683370190505b50905060005b835181101561112f57600484828151811061107457611074611d71565b01602001516001600160f81b031916901c82611091836002611e2b565b815181106110a1576110a1611d71565b60200101906001600160f81b031916908160001a90535060108482815181106110cc576110cc611d71565b01602001516110de919060f81c611dcc565b60f81b826110ed836002611e2b565b6110f8906001611da0565b8151811061110857611108611d71565b60200101906001600160f81b031916908160001a90535061112881611d87565b9050611057565b5092915050565b600060208251101561114a57506020015190565b818060200190518101906103469190611c79565b6000606060208360000151101561117f5761117883611847565b905061118b565b61118883610f6d565b90505b61051181611136565b60606103466111b38360000151600081518110610a9857610a98611d71565b610ffd565b6060825182106111d75750604080516020810190915260008152610346565b61051183838486516111e99190611d5e565b611852565b6000805b8084511180156112025750808351115b8015611253575082818151811061121b5761121b611d71565b602001015160f81c60f81b6001600160f81b03191684828151811061124257611242611d71565b01602001516001600160f81b031916145b156105115761126181611d87565b90506111f2565b606060008061127684611454565b9193509091506001905081600181111561129257611292611e15565b146112df5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e000000000000000000604482015260640161025b565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816112f85790505090506000835b865181101561144957602082106113915760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b606482015260840161025b565b6000806113ce6040518060400160405280858c600001516113b29190611d5e565b8152602001858c602001516113c79190611da0565b9052611454565b5091509150604051806040016040528083836113ea9190611da0565b8152602001848b602001516113ff9190611da0565b81525085858151811061141457611414611d71565b602090810291909101015261142a600185611da0565b93506114368183611da0565b6114409084611da0565b92505050611325565b508152949350505050565b6000806000808460000151116114ac5760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e0000000000000000604482015260640161025b565b6020840151805160001a607f81116114d1576000600160009450945094505050611797565b60b7811161154d5760006114e6608083611d5e565b90508087600001511161153b5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e00000000000000604482015260640161025b565b60019550935060009250611797915050565b60bf811161163c57600061156260b783611d5e565b9050808760000151116115b75760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e00604482015260640161025b565b600183015160208290036101000a90046115d18183611da0565b8851116116205760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e0000000000000000604482015260640161025b565b61162b826001611da0565b965094506000935061179792505050565b60f781116116b757600061165160c083611d5e565b9050808760000151116116a65760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e000000000000000000604482015260640161025b565b600195509350849250611797915050565b60006116c460f783611d5e565b9050808760000151116117195760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e000000604482015260640161025b565b600183015160208290036101000a90046117338183611da0565b88511161177b5760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b604482015260640161025b565b611786826001611da0565b965094506001935061179792505050565b9193909250565b606060008267ffffffffffffffff8111156117bb576117bb611b42565b6040519080825280601f01601f1916602001820160405280156117e5576020820181803683370190505b50905080516000036117f8579050610511565b8484016020820160005b8581101561181a578281015182820152602001611802565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b6060610346826119a9565b60608161186081601f611da0565b101561189f5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161025b565b826118aa8382611da0565b10156118e95760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161025b565b6118f38284611da0565b845110156119375760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161025b565b60608215801561195657604051915060008252602082016040526119a0565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561198f578051835260209283019201611977565b5050858452601f01601f1916604052505b50949350505050565b606061034682602001516000846000015161179e565b6001600160a01b03811681146105af57600080fd5b6000602082840312156119e657600080fd5b8135610511816119bf565b60008060408385031215611a0457600080fd5b8235611a0f816119bf565b946020939093013593505050565b600080600080600060808688031215611a3557600080fd5b853594506020860135611a47816119bf565b935060408601359250606086013567ffffffffffffffff80821115611a6b57600080fd5b818801915088601f830112611a7f57600080fd5b813581811115611a8e57600080fd5b896020828501011115611aa057600080fd5b9699959850939650602001949392505050565b600060208284031215611ac557600080fd5b5035919050565b80358015158114611adc57600080fd5b919050565b600080600060608486031215611af657600080fd5b8335925060208401359150611b0d60408501611acc565b90509250925092565b60008060408385031215611b2957600080fd5b82359150611b3960208401611acc565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611b7b57611b7b611b42565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611baa57611baa611b42565b604052919050565b60006020808385031215611bc557600080fd5b823567ffffffffffffffff80821115611bdd57600080fd5b9084019060408287031215611bf157600080fd5b611bf9611b58565b823581528383013582811115611c0e57600080fd5b80840193505086601f840112611c2357600080fd5b823582811115611c3557611c35611b42565b611c47601f8201601f19168601611b81565b92508083528785828601011115611c5d57600080fd5b8085850186850137600090830185015292830152509392505050565b600060208284031215611c8b57600080fd5b5051919050565b600060208284031215611ca457600080fd5b8151610511816119bf565b600060208083528351808285015260005b81811015611cdc57858101830151858201604001528201611cc0565b506000604082860101526040601f19601f8301168501019250505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561034657610346611d48565b634e487b7160e01b600052603260045260246000fd5b600060018201611d9957611d99611d48565b5060010190565b8082018082111561034657610346611d48565b60ff818116838216019081111561034657610346611d48565b600060ff831680611ded57634e487b7160e01b600052601260045260246000fd5b8060ff84160691505092915050565b60ff828116828216039081111561034657610346611d48565b634e487b7160e01b600052602160045260246000fd5b808202811582820484141761034657610346611d4856fea26469706673582212200ea71954d3e54306cb268035417910e7cfe418e53bc25804068ff831c8ca44b064736f6c63430008120033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000005": { ++ "contractName": "RegularERC20", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000003": "0x526567756c617245524332300000000000000000000000000000000000000018", ++ "0x0000000000000000000000000000000000000000000000000000000000000004": "0x52474c0000000000000000000000000000000000000000000000000000000006", ++ "0x0000000000000000000000000000000000000000000000000000000000000002": "0x00000000000000000000000000000000000000000000000000000000009c4000", ++ "0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x14e04a66bf74771820a7400ff6cf065175b3d7eb25805a5bd1633b161af5d101": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x215be5d23550ceb1beff54fb579a765903ba2ccc85b6f79bcf9bda4e8cb86034": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x6d1035fce6503985ab075a4ff3f7ce2e57cd5a9c5e6a0589dccacfea7bcb0af4": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x2a95ee547cef07a2fff0a68144824a0d9ded35ed87da118a53e1cda4aca8b944": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x7fcecd2a720442e9bc0cf1a8a6976f9fbddf6b996dc0d78af7e94dadf360d579": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x18bbf5fcf8fe870ecff419c4677497c08b2e6a5431bb94541d06c9da3f308e55": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x6e3431b4e42570cb9e3d926eb26f9e54de2df536ae0741ae16350d17a6c16ddc": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0xdb302bf24b1ad5f23949da8e6b05747dc699499a995361a7bf40ec7204696d6f": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955": "0x00000000000000000000000000000000000000000000000000000000000fa000" ++ }, ++ "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069c565b60405180910390f35b6100df6100da366004610706565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610730565b61024c565b604051601281526020016100c3565b6100df610131366004610706565b610270565b6100f361014436600461076c565b6001600160a01b031660009081526020819052604090205490565b6100b6610292565b6100df610175366004610706565b6102a1565b6100df610188366004610706565b610321565b6100f361019b36600461078e565b61032f565b6060600380546101af906107c1565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c1565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b60003361024081858561035a565b60019150505b92915050565b60003361025a85828561047e565b6102658585856104f8565b506001949350505050565b600033610240818585610283838361032f565b61028d91906107fb565b61035a565b6060600480546101af906107c1565b600033816102af828661032f565b9050838110156103145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610265828686840361035a565b6000336102408185856104f8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103bc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161030b565b6001600160a01b03821661041d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161030b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061048a848461032f565b905060001981146104f257818110156104e55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161030b565b6104f2848484840361035a565b50505050565b6001600160a01b03831661055c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161030b565b6001600160a01b0382166105be5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161030b565b6001600160a01b038316600090815260208190526040902054818110156106365760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161030b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f2565b600060208083528351808285015260005b818110156106c9578581018301518582016040015282016106ad565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461070157600080fd5b919050565b6000806040838503121561071957600080fd5b610722836106ea565b946020939093013593505050565b60008060006060848603121561074557600080fd5b61074e846106ea565b925061075c602085016106ea565b9150604084013590509250925092565b60006020828403121561077e57600080fd5b610787826106ea565b9392505050565b600080604083850312156107a157600080fd5b6107aa836106ea565b91506107b8602084016106ea565b90509250929050565b600181811c908216806107d557607f821691505b6020821081036107f557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024657634e487b7160e01b600052601160045260246000fdfea2646970667358221220ee71a9bd9ebcdb754dffdeeca92502fc82a7f09e67a7cfd411c733adc57b169664736f6c63430008120033", ++ "balance": "0x0" ++ } ++}
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+189
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/core/taiko_genesis/mainnet.json taikoxyz/taiko-geth/core/taiko_genesis/mainnet.json +new file mode 100644 +index 0000000000000000000000000000000000000000..b742945cf26d5f26cb116bb268a48ceb94eec980 +--- /dev/null ++++ taikoxyz/taiko-geth/core/taiko_genesis/mainnet.json +@@ -0,0 +1,189 @@ ++{ ++ "0xDf08F82De32B8d460adbE8D72043E3a7e25A3B39": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x4Ec242468812B6fFC8Be8FF423Af7bd23108d991": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x513b9b8bffd6b79056f5250b04b0e863814d6dd6": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x79b9f64744c98cd8cc20adb79b6a297e964254cc": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0xdD2FD4581271e230360230F9337D5c0430Bf44C0": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0xbDA5747bFD65F08deb54cb465eB87D40e51B197E": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x2546BcD3c84621e976D8185a91A922aE77ECEc30": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0xcd3B766CCDd6AE721141F452C550Ca635964ce71": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0xdF3e18d64BC6A983f673Ab319CCaE4f1a57C7097": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x1CBd3b2770909D4e10f157cABC84C7264073C9Ec": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0xFABB0ac9d68B0B445fB7357272Ff202C5651694a": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x71bE63f3384f5fb98995898A86B02Fb2426c5788": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0xBcd4042DE499D14e55001CcbB24a551F3b954096": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x976EA74026E726554dB657fA54763abd0C3a0aa9": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x90F79bf6EB2c4f870365E785982E1f101E93b906": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x70997970C51812dc3A010C7d01b50e0d17dc79C8": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266": { ++ "balance": "0x3782dace9d90000000" ++ }, ++ "0x80ff01dc365337F25546f79Ee7cB38721ad26352": { ++ "contractName": "LibTrieProof", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063960304391461003a575b600080fd5b61004d6100483660046119a5565b61004f565b005b60008061005e83850185611b39565b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608b901b166020820152919350915060009081906100b490603401604051602081830303815290604052858c6101d3565b915091508161010a5760405162461bcd60e51b815260206004820152601960248201527f4c54503a696e76616c6964206163636f756e742070726f6f660000000000000060448201526064015b60405180910390fd5b6000610115826101fc565b9050600061013c8260028151811061012f5761012f611b9d565b6020026020010151610235565b905060006101758b60405160200161015691815260200190565b60405160208183030381529060405261016e8c610338565b888561034b565b9050806101c45760405162461bcd60e51b815260206004820152601960248201527f4c54503a696e76616c69642073746f726167652070726f6f66000000000000006044820152606401610101565b50505050505050505050505050565b6000606060006101e286610365565b90506101ef818686610397565b9250925050935093915050565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061022f90610472565b92915050565b600060218260000151111561028c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610101565b600080600061029a85610671565b9194509250905060008160018111156102b5576102b5611bcc565b146103025760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610101565b60008386602001516103149190611c2a565b8051909150602084101561032e5760208490036101000a90045b9695505050505050565b606061022f610346836109c2565b610b2d565b60008061035786610365565b905061032e81868686610b9c565b6060818051906020012060405160200161038191815260200190565b6040516020818303038152906040529050919050565b6000606060006103a685610bd9565b905060008060006103b8848a89610cd4565b815192955090935091501580806103cc5750815b6104185760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610101565b6000816104345760405180602001604052806000815250610460565b61046086610443600188611c42565b8151811061045357610453611b9d565b602002602001015161116f565b919b919a509098505050505050505050565b606060008061048084610671565b9193509091506001905081600181111561049c5761049c611bcc565b146104e95760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610101565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816105025790505090506000835b865181101561066657602082106105ae5760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201527f7374206c656e6774682e000000000000000000000000000000000000000000006064820152608401610101565b6000806105eb6040518060400160405280858c600001516105cf9190611c42565b8152602001858c602001516105e49190611c2a565b9052610671565b5091509150604051806040016040528083836106079190611c2a565b8152602001848b6020015161061c9190611c2a565b81525085858151811061063157610631611b9d565b6020908102919091010152610647600185611c2a565b93506106538183611c2a565b61065d9084611c2a565b9250505061052f565b508152949350505050565b6000806000808460000151116106c95760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610101565b6020840151805160001a607f81116106ee5760006001600094509450945050506109bb565b60b7811161076a576000610703608083611c42565b9050808760000151116107585760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610101565b600195509350600092506109bb915050565b60bf811161085957600061077f60b783611c42565b9050808760000151116107d45760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610101565b600183015160208290036101000a90046107ee8183611c2a565b88511161083d5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610101565b610848826001611c2a565b96509450600093506109bb92505050565b60f781116108d457600061086e60c083611c42565b9050808760000151116108c35760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610101565b6001955093508492506109bb915050565b60006108e160f783611c42565b9050808760000151116109365760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610101565b600183015160208290036101000a90046109508183611c2a565b88511161099f5760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420524c50206c6f6e67206c6973742e000000000000000000006044820152606401610101565b6109aa826001611c2a565b96509450600193506109bb92505050565b9193909250565b60606000826040516020016109d991815260200190565b604051602081830303815290604052905060005b6020811015610a4b57818181518110610a0857610a08611b9d565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615610a3957610a4b565b80610a4381611c59565b9150506109ed565b6000610a58826020611c42565b67ffffffffffffffff811115610a7057610a70611a5f565b6040519080825280601f01601f191660200182016040528015610a9a576020820181803683370190505b50905060005b8151811015610b24578383610ab481611c59565b945081518110610ac657610ac6611b9d565b602001015160f81c60f81b828281518110610ae357610ae3611b9d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080610b1c81611c59565b915050610aa0565b50949350505050565b60608082516001148015610b5b5750608083600081518110610b5157610b51611b9d565b016020015160f81c105b15610b6757508161022f565b610b7383516080611199565b83604051602001610b85929190611ccd565b604051602081830303815290604052905092915050565b6000806000610bac878686610397565b91509150818015610bce57508051602080830191909120875191880191909120145b979650505050505050565b60606000610be6836101fc565b90506000815167ffffffffffffffff811115610c0457610c04611a5f565b604051908082528060200260200182016040528015610c4957816020015b6040805180820190915260608082526020820152815260200190600190039081610c225790505b50905060005b8251811015610ccc576000610c7c848381518110610c6f57610c6f611b9d565b6020026020010151611390565b90506040518060400160405280828152602001610c98836101fc565b815250838381518110610cad57610cad611b9d565b6020026020010181905250508080610cc490611c59565b915050610c4f565b509392505050565b60006060818080610ce487611420565b90506000869050600080610d0b604051806040016040528060608152602001606081525090565b60005b8c5181101561112b578c8181518110610d2957610d29611b9d565b602002602001015191508284610d3f9190611c2a565b9350610d4c600188611c2a565b965083610db057815180516020909101208514610dab5760405162461bcd60e51b815260206004820152601160248201527f496e76616c696420726f6f7420686173680000000000000000000000000000006044820152606401610101565b610e6d565b815151602011610e1257815180516020909101208514610dab5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610101565b84610e2083600001516115a3565b14610e6d5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610101565b610e7960106001611c2a565b8260200151511415610ef2578551841415610e935761112b565b6000868581518110610ea757610ea7611b9d565b602001015160f81c60f81b60f81c9050600083602001518260ff1681518110610ed257610ed2611b9d565b60200260200101519050610ee5816115cb565b9650600194505050611119565b600282602001515114156110d1576000610f0b83611601565b9050600081600081518110610f2257610f22611b9d565b016020015160f81c90506000610f39600283611d19565b610f44906002611d3b565b90506000610f55848360ff16611625565b90506000610f638b8a611625565b90506000610f71838361165b565b905060ff851660021480610f88575060ff85166003145b15610fde57808351148015610f9d5750808251145b15610faf57610fac818b611c2a565b99505b507f8000000000000000000000000000000000000000000000000000000000000000995061112b945050505050565b60ff85161580610ff1575060ff85166001145b15611063578251811461102d57507f8000000000000000000000000000000000000000000000000000000000000000995061112b945050505050565b611054886020015160018151811061104757611047611b9d565b60200260200101516115cb565b9a509750611119945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e2060448201527f70726566697800000000000000000000000000000000000000000000000000006064820152608401610101565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610101565b8061112381611c59565b915050610d0e565b507f800000000000000000000000000000000000000000000000000000000000000084148661115a8786611625565b909e909d50909b509950505050505050505050565b6020810151805160609161022f9161118990600190611c42565b81518110610c6f57610c6f611b9d565b606080603884101561121857604080516001808252818301909252906020820181803683370190505090506111ce8385611d5e565b60f81b816000815181106111e4576111e4611b9d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611389565b600060015b6112278187611d83565b1561124d578161123681611c59565b9250611246905061010082611d97565b905061121d565b611258826001611c2a565b67ffffffffffffffff81111561127057611270611a5f565b6040519080825280601f01601f19166020018201604052801561129a576020820181803683370190505b5092506112a78583611d5e565b6112b2906037611d5e565b60f81b836000815181106112c8576112c8611b9d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b818111611386576101006113108284611c42565b61131c90610100611ef4565b6113269088611d83565b6113309190611f00565b60f81b83828151811061134557611345611b9d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061137e81611c59565b9150506112fc565b50505b9392505050565b606060008060006113a085610671565b9194509250905060008160018111156113bb576113bb611bcc565b146114085760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610101565b61141785602001518484611707565b95945050505050565b60606000825160026114329190611d97565b67ffffffffffffffff81111561144a5761144a611a5f565b6040519080825280601f01601f191660200182016040528015611474576020820181803683370190505b50905060005b835181101561159c57600484828151811061149757611497611b9d565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c826114cc836002611d97565b815181106114dc576114dc611b9d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350601084828151811061151f5761151f611b9d565b0160200151611531919060f81c611d19565b60f81b82611540836002611d97565b61154b906001611c2a565b8151811061155b5761155b611b9d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061159481611c59565b91505061147a565b5092915050565b60006020825110156115b757506020015190565b8180602001905181019061022f9190611f14565b600060606020836000015110156115ec576115e5836117e6565b90506115f8565b6115f583611390565b90505b611389816115a3565b606061022f6116208360200151600081518110610c6f57610c6f611b9d565b611420565b606082518210611644575060408051602081019091526000815261022f565b61138983838486516116569190611c42565b6117f1565b6000805b80845111801561166f5750808351115b80156116f0575082818151811061168857611688611b9d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181106116c7576116c7611b9d565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b1561138957806116ff81611c59565b91505061165f565b606060008267ffffffffffffffff81111561172457611724611a5f565b6040519080825280601f01601f19166020018201604052801561174e576020820181803683370190505b509050805160001415611762579050611389565b600061176e8587611c2a565b90506020820160005b611782602087611d83565b8110156117b95782518252611798602084611c2a565b92506117a5602083611c2a565b9150806117b181611c59565b915050611777565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b606061022f8261198f565b6060816117ff81601f611c2a565b101561184d5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610101565b826118588382611c2a565b10156118a65760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610101565b6118b08284611c2a565b845110156119005760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610101565b60608215801561191f5760405191506000825260208201604052610b24565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611958578051835260209283019201611940565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166040525050949350505050565b606061022f826020015160008460000151611707565b60008060008060008060a087890312156119be57600080fd5b86359550602087013573ffffffffffffffffffffffffffffffffffffffff811681146119e957600080fd5b94506040870135935060608701359250608087013567ffffffffffffffff80821115611a1457600080fd5b818901915089601f830112611a2857600080fd5b813581811115611a3757600080fd5b8a6020828501011115611a4957600080fd5b6020830194508093505050509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611a9f57600080fd5b813567ffffffffffffffff80821115611aba57611aba611a5f565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611b0057611b00611a5f565b81604052838152866020858801011115611b1957600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215611b4c57600080fd5b823567ffffffffffffffff80821115611b6457600080fd5b611b7086838701611a8e565b93506020850135915080821115611b8657600080fd5b50611b9385828601611a8e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611c3d57611c3d611bfb565b500190565b600082821015611c5457611c54611bfb565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c8b57611c8b611bfb565b5060010190565b6000815160005b81811015611cb35760208185018101518683015201611c99565b81811115611cc2576000828601525b509290920192915050565b6000611ce2611cdc8386611c92565b84611c92565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600060ff831680611d2c57611d2c611cea565b8060ff84160691505092915050565b600060ff821660ff841680821015611d5557611d55611bfb565b90039392505050565b600060ff821660ff84168060ff03821115611d7b57611d7b611bfb565b019392505050565b600082611d9257611d92611cea565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611dcf57611dcf611bfb565b500290565b600181815b80851115611e2d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611e1357611e13611bfb565b80851615611e2057918102915b93841c9390800290611dd9565b509250929050565b600082611e445750600161022f565b81611e515750600061022f565b8160018114611e675760028114611e7157611e8d565b600191505061022f565b60ff841115611e8257611e82611bfb565b50506001821b61022f565b5060208310610133831016604e8410600b8410161715611eb0575081810a61022f565b611eba8383611dd4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611eec57611eec611bfb565b029392505050565b60006113898383611e35565b600082611f0f57611f0f611cea565b500690565b600060208284031215611f2657600080fd5b505191905056fea26469706673582212204527daab2617e83bc325069d9ebb9fdf4f8c744b570e547b33f588a64900163264736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0x9F3301BccE1a59AAAaAc2185FCAf17C6896f7D58": { ++ "contractName": "LibBridgeRetry", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c806346eb9db51461003a575b600080fd5b81801561004657600080fd5b5061005a6100553660046107f9565b61005c565b005b610140820135158061006b5750805b156101195761008060a0830160808401610880565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f423a64656e69656400000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600061012c610127846109a8565b610432565b90506001600082815260018701602052604090205460ff16600381111561015557610155610aaa565b146101bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f423a6e6f74466f756e64000000000000000000000000000000000000000000006044820152606401610110565b6040517f461a447800000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f65746865725f7661756c74000000000000000000000000000000000000000000604482015260009073ffffffffffffffffffffffffffffffffffffffff86169063461a44789060640160206040518083038186803b15801561025257600080fd5b505afa158015610266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028a9190610ad9565b905073ffffffffffffffffffffffffffffffffffffffff81161561032d576040517f1efa4ec0000000000000000000000000000000000000000000000000000000008152610100850135600482015273ffffffffffffffffffffffffffffffffffffffff821690631efa4ec090602401600060405180830381600087803b15801561031457600080fd5b505af1158015610328573d6000803e3d6000fd5b505050505b6103418661033a866109a8565b845a610462565b156103575761035286836002610634565b61042a565b82156103e95761036986836003610634565b60008061037c60e0870160c08801610880565b73ffffffffffffffffffffffffffffffffffffffff16146103ac576103a760e0860160c08701610880565b6103bc565b6103bc60a0860160808701610880565b90506103e373ffffffffffffffffffffffffffffffffffffffff8216610100870135610700565b5061042a565b73ffffffffffffffffffffffffffffffffffffffff81161561042a5761042a73ffffffffffffffffffffffffffffffffffffffff8216610100860135610700565b505050505050565b6000816040516020016104459190610b70565b604051602081830303815290604052805190602001209050919050565b60008082116104cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f423a6761734c696d6974000000000000000000000000000000000000000000006044820152606401610110565b6040805160608101825284815260208681015173ffffffffffffffffffffffffffffffffffffffff90811691830182905287840151928401839052600389018790556004890180547fffffffffffffffffffffffff000000000000000000000000000000000000000016909217909155600588019190915560a08601516101008701516101608801519351919092169285929161056a9190610d04565b600060405180830381858888f193505050503d80600081146105a8576040519150601f19603f3d011682016040523d82523d6000602084013e6105ad565b606091505b5050604080516060810182526001808252602082018190527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91909201819052600388018290556004880180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560059096019590955550929392505050565b80600381111561064657610646610aaa565b600083815260018501602052604090205460ff16600381111561066b5761066b610aaa565b146106fb57600082815260018085016020526040909120805483927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116908360038111156106bd576106bd610aaa565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516106f29190610d20565b60405180910390a25b505050565b80156107d05760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610760576040519150601f19603f3d011682016040523d82523d6000602084013e610765565b606091505b50509050806106fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f455448207472616e73666572206661696c6564000000000000000000000000006044820152606401610110565b5050565b73ffffffffffffffffffffffffffffffffffffffff811681146107f657600080fd5b50565b6000806000806080858703121561080f57600080fd5b843593506020850135610821816107d4565b9250604085013567ffffffffffffffff81111561083d57600080fd5b85016101a0818803121561085057600080fd5b91506060850135801515811461086557600080fd5b939692955090935050565b803561087b816107d4565b919050565b60006020828403121561089257600080fd5b813561089d816107d4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff811182821017156108f7576108f76108a4565b60405290565b600082601f83011261090e57600080fd5b813567ffffffffffffffff80821115610929576109296108a4565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561096f5761096f6108a4565b8160405283815286602085880101111561098857600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006101a082360312156109bb57600080fd5b6109c36108d3565b823581526109d360208401610870565b602082015260408301356040820152606083013560608201526109f860808401610870565b6080820152610a0960a08401610870565b60a0820152610a1a60c08401610870565b60c082015260e083810135908201526101008084013590820152610120808401359082015261014080840135908201526101608084013567ffffffffffffffff80821115610a6757600080fd5b610a73368388016108fd565b83850152610180925082860135915080821115610a8f57600080fd5b50610a9c368287016108fd565b918301919091525092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215610aeb57600080fd5b815161089d816107d4565b60005b83811015610b11578181015183820152602001610af9565b83811115610b20576000848401525b50505050565b60008151808452610b3e816020860160208601610af6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60408152601460408201527f5441494b4f5f4252494447455f4d4553534147450000000000000000000000006060820152608060208201528151608082015260006020830151610bd860a084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015160c0830152606083015160e08301526080830151610100610c168185018373ffffffffffffffffffffffffffffffffffffffff169052565b60a08501519150610120610c418186018473ffffffffffffffffffffffffffffffffffffffff169052565b60c08601519250610140610c6c8187018573ffffffffffffffffffffffffffffffffffffffff169052565b60e0870151610160878101919091529287015161018080880191909152918701516101a080880191909152908701516101c0870152918601516101e0860192909252909150610cbf610220850183610b26565b908501518482037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8001610200860152909150610cfb8282610b26565b95945050505050565b60008251610d16818460208701610af6565b9190910192915050565b6020810160048310610d5b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9190529056fea2646970667358221220be000ee7941371b373db7fa144a7897e6750926b6582ca0b04b2626c98a5bac964736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0xc85d2777A112D31DED2bC7f59f849CbDE4103cA1": { ++ "contractName": "LibBridgeProcess", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063c0249e2d1461003a575b600080fd5b81801561004657600080fd5b5061005a6100553660046119c3565b61005c565b005b61014083013561010f5761007660a0840160808501611a8d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461010f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f423a666f7262696464656e00000000000000000000000000000000000000000060448201526064015b60405180910390fd5b4683606001351461017c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f423a64657374436861696e4964000000000000000000000000000000000000006044820152606401610106565b600061018f61018a85611bf5565b61073d565b905060008082815260018801602052604090205460ff1660038111156101b7576101b7611cf7565b1461021e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f423a7374617475730000000000000000000000000000000000000000000000006044820152606401610106565b604080517ff16c79340000000000000000000000000000000000000000000000000000000081528186013560048201526024810191909152600660448201527f6272696467650000000000000000000000000000000000000000000000000000606482015260009073ffffffffffffffffffffffffffffffffffffffff87169063f16c79349060840160206040518083038186803b1580156102bf57600080fd5b505afa1580156102d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f79190611d26565b905061030786828385888861076d565b61036d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f423a6e6f745265636569766564000000000000000000000000000000000000006044820152606401610106565b6040517f461a447800000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f65746865725f7661756c74000000000000000000000000000000000000000000604482015260009073ffffffffffffffffffffffffffffffffffffffff88169063461a44789060640160206040518083038186803b15801561040357600080fd5b505afa158015610417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043b9190611d26565b905073ffffffffffffffffffffffffffffffffffffffff8116156104e95773ffffffffffffffffffffffffffffffffffffffff8116631efa4ec061012088013561048e6101008a013560e08b0135611d72565b6104989190611d72565b6040518263ffffffff1660e01b81526004016104b691815260200190565b600060405180830381600087803b1580156104d057600080fd5b505af11580156104e4573d6000803e3d6000fd5b505050505b61051d60e087013561050160a0890160808a01611a8d565b73ffffffffffffffffffffffffffffffffffffffff1690610b33565b6000803061053160c08a0160a08b01611a8d565b73ffffffffffffffffffffffffffffffffffffffff1614806105785750600061056060c08a0160a08b01611a8d565b73ffffffffffffffffffffffffffffffffffffffff16145b1561058d57506002905061010087013561064f565b600061059f60a08a0160808b01611a8d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105dc578861014001356105de565b5a5b905060006105f68c6105ef8c611bf5565b8985610c09565b90508015610607576002935061064c565b6001935073ffffffffffffffffffffffffffffffffffffffff85161561064c5761064c73ffffffffffffffffffffffffffffffffffffffff86166101008c0135610b33565b50505b61065a8a8684610dbd565b60008061066d60e08b0160c08c01611a8d565b73ffffffffffffffffffffffffffffffffffffffff161461069d5761069860e08a0160c08b01611a8d565b6106ad565b6106ad60a08a0160808b01611a8d565b90503373ffffffffffffffffffffffffffffffffffffffff82161415610701576106fc6106df6101208b013584611d72565b73ffffffffffffffffffffffffffffffffffffffff831690610b33565b610730565b610710336101208b0135610b33565b61073073ffffffffffffffffffffffffffffffffffffffff821683610b33565b5050505050505050505050565b6000816040516020016107509190611e04565b604051602081830303815290604052805190602001209050919050565b6000848473ffffffffffffffffffffffffffffffffffffffff82166107ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f423a73656e6465720000000000000000000000000000000000000000000000006044820152606401610106565b80610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f423a7369676e616c0000000000000000000000000000000000000000000000006044820152606401610106565b73ffffffffffffffffffffffffffffffffffffffff88166108d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f423a7372634272696467650000000000000000000000000000000000000000006044820152606401610106565b60006108e08587018761203e565b90507380ff01dc365337F25546f79Ee7cB38721ad2635263960304398260000151606001518b6109108c8c610e88565b60208601516040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152610953949392916001916004016121d7565b60006040518083038186803b15801561096b57600080fd5b505af415801561097f573d6000803e3d6000fd5b50506040517f461a447800000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f7461696b6f00000000000000000000000000000000000000000000000000000060448201526000925073ffffffffffffffffffffffffffffffffffffffff8d16915063461a44789060640160206040518083038186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a519190611d26565b825161010001516040517f25bf86f20000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff91909116906325bf86f29060240160206040518083038186803b158015610ad257600080fd5b505afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612223565b90508015801590610b2457508151610b2190610ee3565b81145b9b9a5050505050505050505050565b8015610c055760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610b93576040519150601f19603f3d011682016040523d82523d6000602084013e610b98565b606091505b5050905080610c03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f455448207472616e73666572206661696c6564000000000000000000000000006044820152606401610106565b505b5050565b6000808211610c74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f423a6761734c696d6974000000000000000000000000000000000000000000006044820152606401610106565b6040805160608101825284815260208681015173ffffffffffffffffffffffffffffffffffffffff90811691830182905287840151928401839052600389018790556004890180547fffffffffffffffffffffffff000000000000000000000000000000000000000016909217909155600588019190915560a086015161010087015161016088015193519190921692859291610d11919061223c565b600060405180830381858888f193505050503d8060008114610d4f576040519150601f19603f3d011682016040523d82523d6000602084013e610d54565b606091505b50506040805160608101825260018082526020820181905260001991909201819052600388018290556004880180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560059096019590955550929392505050565b806003811115610dcf57610dcf611cf7565b600083815260018501602052604090205460ff166003811115610df457610df4611cf7565b14610c0357600082815260018085016020526040909120805483927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911690836003811115610e4657610e46611cf7565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b257563482604051610e7b9190612258565b60405180910390a2505050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012090505b92915050565b60006060826101e0015160001415610f285760408051600f808252610200820190925290816020015b6060815260200190600190039081610f0c579050509050610f57565b604080516010808252610220820190925290816020015b6060815260200190600190039081610f3f5790505090505b8251610f629061129d565b81600081518110610f7557610f75612299565b6020026020010181905250610f8d836020015161129d565b81600181518110610fa057610fa0612299565b6020026020010181905250610fb883604001516112b0565b81600281518110610fcb57610fcb612299565b6020026020010181905250610fe3836060015161129d565b81600381518110610ff657610ff6612299565b602002602001018190525061100e836080015161129d565b8160048151811061102157611021612299565b60200260200101819052506110398360a0015161129d565b8160058151811061104c5761104c612299565b60200260200101819052506110838360c0015160405160200161106f91906122c8565b6040516020818303038152906040526112ec565b8160068151811061109657611096612299565b60200260200101819052506110ae8360e0015161135b565b816007815181106110c1576110c1612299565b60200260200101819052506110ec8361010001516fffffffffffffffffffffffffffffffff1661135b565b816008815181106110ff576110ff612299565b6020026020010181905250611118836101200151611369565b8160098151811061112b5761112b612299565b6020026020010181905250611144836101400151611369565b81600a8151811061115757611157612299565b6020026020010181905250611170836101600151611369565b81600b8151811061118357611183612299565b602002602001018190525061119c8361018001516112ec565b81600c815181106111af576111af612299565b60200260200101819052506111c8836101a0015161129d565b81600d815181106111db576111db612299565b602002602001018190525061122a836101c0015160405160200161106f919060c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016815260080190565b81600e8151811061123d5761123d612299565b6020026020010181905250826101e0015160001461128257611263836101e0015161135b565b81600f8151811061127657611276612299565b60200260200101819052505b600061128d82611381565b8051602090910120949350505050565b6060610edd6112ab836113c5565b6112ec565b604051606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602083015290610edd9060340161106f565b6060808251600114801561131a575060808360008151811061131057611310612299565b016020015160f81c105b15611326575081610edd565b611332835160806114b8565b836040516020016113449291906122fd565b604051602081830303815290604052905092915050565b6060610edd6112ab836116af565b6060610edd6112ab8367ffffffffffffffff166116af565b6060600061138e83611811565b905061139c815160c06114b8565b816040516020016113ae9291906122fd565b604051602081830303815290604052915050919050565b60606000826040516020016113dc91815260200190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815260208084528383019092529250600091829160208201818036833701905050905060005b81518110156114af57838361143f8161232c565b94508151811061145157611451612299565b602001015160f81c60f81b82828151811061146e5761146e612299565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806114a78161232c565b91505061142b565b50949350505050565b606080603884101561153757604080516001808252818301909252906020820181803683370190505090506114ed8385612347565b60f81b8160008151811061150357611503612299565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506116a8565b600060015b611546818761239b565b1561156c57816115558161232c565b92506115659050610100826123af565b905061153c565b611577826001611d72565b67ffffffffffffffff81111561158f5761158f611aaa565b6040519080825280601f01601f1916602001820160405280156115b9576020820181803683370190505b5092506115c68583612347565b6115d1906037612347565b60f81b836000815181106115e7576115e7612299565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b8181116116a55761010061162f82846123ce565b61163b906101006124c9565b611645908861239b565b61164f91906124d5565b60f81b83828151811061166457611664612299565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061169d8161232c565b91505061161b565b50505b9392505050565b60606000826040516020016116c691815260200190565b604051602081830303815290604052905060005b6020811015611738578181815181106116f5576116f5612299565b01602001517fff00000000000000000000000000000000000000000000000000000000000000161561172657611738565b806117308161232c565b9150506116da565b60006117458260206123ce565b67ffffffffffffffff81111561175d5761175d611aaa565b6040519080825280601f01601f191660200182016040528015611787576020820181803683370190505b50905060005b81518110156114af5783836117a18161232c565b9450815181106117b3576117b3612299565b602001015160f81c60f81b8282815181106117d0576117d0612299565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806118098161232c565b91505061178d565b606081516000141561183157505060408051600081526020810190915290565b6000805b83518110156118785783818151811061185057611850612299565b602002602001015151826118649190611d72565b9150806118708161232c565b915050611835565b60008267ffffffffffffffff81111561189357611893611aaa565b6040519080825280601f01601f1916602001820160405280156118bd576020820181803683370190505b50600092509050602081015b85518310156114af5760008684815181106118e6576118e6612299565b60200260200101519050600060208201905061190483828451611941565b87858151811061191657611916612299565b6020026020010151518361192a9190611d72565b9250505082806119399061232c565b9350506118c9565b8282825b6020811061197d578151835261195c602084611d72565b9250611969602083611d72565b91506119766020826123ce565b9050611945565b905182516020929092036101000a6000190180199091169116179052505050565b73ffffffffffffffffffffffffffffffffffffffff811681146119c057600080fd5b50565b6000806000806000608086880312156119db57600080fd5b8535945060208601356119ed8161199e565b9350604086013567ffffffffffffffff80821115611a0a57600080fd5b908701906101a0828a031215611a1f57600080fd5b90935060608701359080821115611a3557600080fd5b818801915088601f830112611a4957600080fd5b813581811115611a5857600080fd5b896020828501011115611a6a57600080fd5b9699959850939650602001949392505050565b8035611a888161199e565b919050565b600060208284031215611a9f57600080fd5b81356116a88161199e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff81118282101715611afd57611afd611aaa565b60405290565b6040805190810167ffffffffffffffff81118282101715611afd57611afd611aaa565b604051610200810167ffffffffffffffff81118282101715611afd57611afd611aaa565b600082601f830112611b5b57600080fd5b813567ffffffffffffffff80821115611b7657611b76611aaa565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611bbc57611bbc611aaa565b81604052838152866020858801011115611bd557600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006101a08236031215611c0857600080fd5b611c10611ad9565b82358152611c2060208401611a7d565b60208201526040830135604082015260608301356060820152611c4560808401611a7d565b6080820152611c5660a08401611a7d565b60a0820152611c6760c08401611a7d565b60c082015260e083810135908201526101008084013590820152610120808401359082015261014080840135908201526101608084013567ffffffffffffffff80821115611cb457600080fd5b611cc036838801611b4a565b83850152610180925082860135915080821115611cdc57600080fd5b50611ce936828701611b4a565b918301919091525092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215611d3857600080fd5b81516116a88161199e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611d8557611d85611d43565b500190565b60005b83811015611da5578181015183820152602001611d8d565b83811115611db4576000848401525b50505050565b60008151808452611dd2816020860160208601611d8a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60408152601460408201527f5441494b4f5f4252494447455f4d4553534147450000000000000000000000006060820152608060208201528151608082015260006020830151611e6c60a084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015160c0830152606083015160e08301526080830151610100611eaa8185018373ffffffffffffffffffffffffffffffffffffffff169052565b60a08501519150610120611ed58186018473ffffffffffffffffffffffffffffffffffffffff169052565b60c08601519250610140611f008187018573ffffffffffffffffffffffffffffffffffffffff169052565b60e0870151610160878101919091529287015161018080880191909152918701516101a080880191909152908701516101c0870152918601516101e0860192909252909150611f53610220850183611dba565b908501518482037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8001610200860152909150611f8f8282611dba565b95945050505050565b600082601f830112611fa957600080fd5b60405161010080820182811067ffffffffffffffff82111715611fce57611fce611aaa565b60405283018185821115611fe157600080fd5b845b82811015611ffb578035825260209182019101611fe3565b509195945050505050565b80356fffffffffffffffffffffffffffffffff81168114611a8857600080fd5b803567ffffffffffffffff81168114611a8857600080fd5b60006020828403121561205057600080fd5b813567ffffffffffffffff8082111561206857600080fd5b908301906040828603121561207c57600080fd5b612084611b03565b82358281111561209357600080fd5b83016102e081880312156120a657600080fd5b6120ae611b26565b81358152602082013560208201526120c860408301611a7d565b6040820152606082013560608201526080820135608082015260a082013560a08201526120f88860c08401611f98565b60c08201526101c08083013560e08301526101e0612117818501612006565b61010084015261212a6102008501612026565b61012084015261213d6102208501612026565b6101408401526121506102408501612026565b6101608401526102608401358681111561216957600080fd5b6121758b828701611b4a565b610180850152506102808401356101a08401526121956102a08501612026565b828401526102c084013581840152505080835250506020830135828111156121bc57600080fd5b6121c887828601611b4a565b60208301525095945050505050565b85815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a06080820152600061221860a0830184611dba565b979650505050505050565b60006020828403121561223557600080fd5b5051919050565b6000825161224e818460208701611d8a565b9190910192915050565b6020810160048310612293577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008183825b60088110156122ed5781518352602092830192909101906001016122ce565b5050506101008201905092915050565b6000835161230f818460208801611d8a565b835190830190612323818360208801611d8a565b01949350505050565b600060001982141561234057612340611d43565b5060010190565b600060ff821660ff84168060ff0382111561236457612364611d43565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826123aa576123aa61236c565b500490565b60008160001904831182151516156123c9576123c9611d43565b500290565b6000828210156123e0576123e0611d43565b500390565b600181815b8085111561242057816000190482111561240657612406611d43565b8085161561241357918102915b93841c93908002906123ea565b509250929050565b60008261243757506001610edd565b8161244457506000610edd565b816001811461245a576002811461246457612480565b6001915050610edd565b60ff84111561247557612475611d43565b50506001821b610edd565b5060208310610133831016604e8410600b84101617156124a3575081810a610edd565b6124ad83836123e5565b80600019048211156124c1576124c1611d43565b029392505050565b60006116a88383612428565b6000826124e4576124e461236c565b50069056fea2646970667358221220e4700496da92f960533af9c30ae61d105fd9a841c77b02091968c6033ef6f1bd64736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0xb9942052e20E93f740A6acBb4b2284972c4cB629": { ++ "contractName": "LibTxDecoder", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80632cb6101a14610045578063dae029d31461006e575b600080fd5b6100586100533660046117b6565b61008e565b6040516100659190611923565b60405180910390f35b61008161007c3660046119dc565b610218565b6040516100659190611aab565b604080516020810190915260608152816100a757610212565b60006100e884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104e092505050565b90506000815167ffffffffffffffff811115610106576101066119ad565b60405190808252806020026020018201604052801561019b57816020015b610188604051806101000160405280600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160008152602001600060ff1681526020016000815260200160008152602001606081525090565b8152602001906001900390816101245790505b50905060005b82518110156101ff576101cf61007c8483815181106101c2576101c2611abe565b6020026020010151610513565b8282815181106101e1576101e1611abe565b602002602001018190525080806101f790611b1c565b9150506101a1565b5060408051602081019091529081529150505b92915050565b61027c604051806101000160405280600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160008152602001600060ff1681526020016000815260200160008152602001606081525090565b602082015160e0820183905260001a60c081108015906102a0575060fe8160ff1611155b156103265760008083526102b3846104e0565b905060006102c0826105a3565b60408082015160608088019190915282015173ffffffffffffffffffffffffffffffffffffffff16602087015260c08083015160ff16608088015260e083015160a080890191909152610100840151918801919091529091015190850152506104da9050565b607f8160ff16116104925760ff81168252600061034c6103478560016107bb565b6104e0565b90508160ff16600114156103c4576000610365826107f8565b6060808201519086015260808082015173ffffffffffffffffffffffffffffffffffffffff16602087015261010082015160ff169086015261012081015160a086015261014081015160c080870191909152015160408501525061048c565b826000015160ff166002141561043f5760006103df82610a39565b608080820151606087015260a08083015173ffffffffffffffffffffffffffffffffffffffff16602088015261012083015160ff16918701919091526101408201519086015261016081015160c086015260e0015160408501525061048c565b60405162461bcd60e51b815260206004820152600e60248201527f696e76616c69642074785479706500000000000000000000000000000000000060448201526064015b60405180910390fd5b506104da565b60405162461bcd60e51b815260206004820152600e60248201527f696e76616c6964207072656669780000000000000000000000000000000000006044820152606401610483565b50919050565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061021290610c8e565b6060600080600061052385610e8d565b91945092509050600081600181111561053e5761053e611b55565b1461058b5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610483565b61059a856020015184846111de565b95945050505050565b61060b604051806101200160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001600060ff16815260200160008152602001600081525090565b815160091461065c5760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206974656d73206c656e6774680000000000000000000000006044820152606401610483565b61067f8260008151811061067257610672611abe565b60200260200101516112d7565b8152815161069a908390600190811061067257610672611abe565b602082015281516106b8908390600290811061067257610672611abe565b604082015281516106e390839060039081106106d6576106d6611abe565b60200260200101516112e2565b73ffffffffffffffffffffffffffffffffffffffff1660608201528151610717908390600490811061067257610672611abe565b6080820152815161073590839060059081106101c2576101c2611abe565b60a082015261074660a76002611b84565b61075c8360068151811061067257610672611abe565b6107669190611bc1565b610771906023611bd8565b60ff1660c08201528151610792908390600790811061067257610672611abe565b60e082015281516107b0908390600890811061067257610672611abe565b610100820152919050565b6060825182106107da5750604080516020810190915260008152610212565b6107f183838486516107ec9190611bc1565b611351565b9392505050565b61086e60405180610160016040528060008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016060815260200160608152602001600060ff16815260200160008152602001600081525090565b8151600b146108bf5760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206974656d73206c656e6774680000000000000000000000006044820152606401610483565b6108d58260008151811061067257610672611abe565b815281516108f0908390600190811061067257610672611abe565b6020820152815161090e908390600290811061067257610672611abe565b6040820152815161092c908390600390811061067257610672611abe565b6060820152815161094a90839060049081106106d6576106d6611abe565b73ffffffffffffffffffffffffffffffffffffffff166080820152815161097e908390600590811061067257610672611abe565b60a0820152815161099c90839060069081106101c2576101c2611abe565b8160c001819052506109cf6109ca836007815181106109bd576109bd611abe565b6020026020010151610c8e565b6114f0565b8160e001819052506109ed8260088151811061067257610672611abe565b60ff166101008201528151610a0f908390600990811061067257610672611abe565b6101208201528151610a2e908390600a90811061067257610672611abe565b610140820152919050565b610ab66040518061018001604052806000815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016060815260200160608152602001600060ff16815260200160008152602001600081525090565b8151600c14610b075760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206974656d73206c656e6774680000000000000000000000006044820152606401610483565b610b1d8260008151811061067257610672611abe565b81528151610b38908390600190811061067257610672611abe565b60208201528151610b56908390600290811061067257610672611abe565b60408201528151610b74908390600390811061067257610672611abe565b60608201528151610b92908390600490811061067257610672611abe565b60808201528151610bb090839060059081106106d6576106d6611abe565b73ffffffffffffffffffffffffffffffffffffffff1660a08201528151610be4908390600690811061067257610672611abe565b60c08201528151610c0290839060079081106101c2576101c2611abe565b8160e00181905250610c236109ca836008815181106109bd576109bd611abe565b816101000181905250610c428260098151811061067257610672611abe565b60ff166101208201528151610c64908390600a90811061067257610672611abe565b6101408201528151610c83908390600b90811061067257610672611abe565b610160820152919050565b6060600080610c9c84610e8d565b91935090915060019050816001811115610cb857610cb8611b55565b14610d055760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610483565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081610d1e5790505090506000835b8651811015610e825760208210610dca5760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201527f7374206c656e6774682e000000000000000000000000000000000000000000006064820152608401610483565b600080610e076040518060400160405280858c60000151610deb9190611bc1565b8152602001858c60200151610e009190611bd8565b9052610e8d565b509150915060405180604001604052808383610e239190611bd8565b8152602001848b60200151610e389190611bd8565b815250858581518110610e4d57610e4d611abe565b6020908102919091010152610e63600185611bd8565b9350610e6f8183611bd8565b610e799084611bd8565b92505050610d4b565b508152949350505050565b600080600080846000015111610ee55760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610483565b6020840151805160001a607f8111610f0a5760006001600094509450945050506111d7565b60b78111610f86576000610f1f608083611bc1565b905080876000015111610f745760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610483565b600195509350600092506111d7915050565b60bf8111611075576000610f9b60b783611bc1565b905080876000015111610ff05760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610483565b600183015160208290036101000a900461100a8183611bd8565b8851116110595760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610483565b611064826001611bd8565b96509450600093506111d792505050565b60f781116110f057600061108a60c083611bc1565b9050808760000151116110df5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610483565b6001955093508492506111d7915050565b60006110fd60f783611bc1565b9050808760000151116111525760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610483565b600183015160208290036101000a900461116c8183611bd8565b8851116111bb5760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420524c50206c6f6e67206c6973742e000000000000000000006044820152606401610483565b6111c6826001611bd8565b96509450600193506111d792505050565b9193909250565b606060008267ffffffffffffffff8111156111fb576111fb6119ad565b6040519080825280601f01601f191660200182016040528015611225576020820181803683370190505b5090508051600014156112395790506107f1565b60006112458587611bd8565b90506020820160005b611259602087611bf0565b811015611290578251825261126f602084611bd8565b925061127c602083611bd8565b91508061128881611b1c565b91505061124e565b5080519151601f959095166020036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019182169119909416179092525092915050565b6000610212826116b3565b8051600090600114156112f757506000919050565b81516015146113485760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e0000000000006044820152606401610483565b610212826112d7565b60608161135f81601f611bd8565b10156113ad5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610483565b826113b88382611bd8565b10156114065760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610483565b6114108284611bd8565b845110156114605760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610483565b60608215801561147f57604051915060008252602082016040526114e7565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156114b85780518352602092830192016114a0565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6060815167ffffffffffffffff81111561150c5761150c6119ad565b60405190808252806020026020018201604052801561155257816020015b60408051808201909152600081526060602082015281526020019060019003908161152a5790505b50905060005b82518110156104da5760006115788483815181106109bd576109bd611abe565b90506000611592826000815181106106d6576106d6611abe565b905060006115ac836001815181106109bd576109bd611abe565b90506000815167ffffffffffffffff8111156115ca576115ca6119ad565b6040519080825280602002602001820160405280156115f3578160200160208202803683370190505b50905060005b82518110156116535761162483828151811061161757611617611abe565b60200260200101516116b3565b82828151811061163657611636611abe565b60209081029190910101528061164b81611b1c565b9150506115f9565b5060405180604001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018281525086868151811061169157611691611abe565b60200260200101819052505050505080806116ab90611b1c565b915050611558565b600060218260000151111561170a5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610483565b600080600061171885610e8d565b91945092509050600081600181111561173357611733611b55565b146117805760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610483565b60008386602001516117929190611bd8565b805190915060208410156117ac5760208490036101000a90045b9695505050505050565b600080602083850312156117c957600080fd5b823567ffffffffffffffff808211156117e157600080fd5b818501915085601f8301126117f557600080fd5b81358181111561180457600080fd5b86602082850101111561181657600080fd5b60209290920196919550909350505050565b6000815180845260005b8181101561184e57602081850181015186830182015201611832565b81811115611860576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600061010060ff835116845273ffffffffffffffffffffffffffffffffffffffff602084015116602085015260408301518160408601526118d682860182611828565b9150506060830151606085015260808301516118f7608086018260ff169052565b5060a083015160a085015260c083015160c085015260e083015184820360e086015261059a8282611828565b60006020808352604083018451828386015281815180845260608701915060608160051b8801019350848301925060005b818110156119a0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088860301835261198e858551611893565b94509285019291850191600101611954565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156119ee57600080fd5b813567ffffffffffffffff80821115611a0657600080fd5b818401915084601f830112611a1a57600080fd5b813581811115611a2c57611a2c6119ad565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611a7257611a726119ad565b81604052828152876020848701011115611a8b57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6020815260006107f16020830184611893565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611b4e57611b4e611aed565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611bbc57611bbc611aed565b500290565b600082821015611bd357611bd3611aed565b500390565b60008219821115611beb57611beb611aed565b500190565b600082611c26577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220f0c04ea52bb4ef33bbc5cdd3c4405997682c7754167ff97f3551bd2e3057739564736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000006": { ++ "contractName": "AddressManager", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", ++ "0xf2788e89d7c79ca6d64d9b54dd2245abe2f67f721ea4481187cfc61c4e012c9d": "0x0000000000000000000000000000777700000000000000000000000000000001", ++ "0x39144e58593d61126fb2007eb6796e8fc629a8687b3040516ae06b83fba5d77b": "0x0000000000000000000000000000777700000000000000000000000000000004", ++ "0xd35832be3d733e61e9aa31a7c8bfc30558a0db9f8e34f9dc38d0ff4b2c24e83a": "0x0000000000000000000000000000777700000000000000000000000000000002", ++ "0xef35bee4949ddf625ee5d73acd9405eca2ea2b57030d5af1b0dcf2ea2e8f047f": "0x0000000000000000000000000000777700000000000000000000000000000003" ++ }, ++ "code": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063bf40fac111610050578063bf40fac1146100d7578063e1c7392a146100ea578063f2fde38b146100f257600080fd5b8063715018a6146100775780638da5cb5b146100815780639b2ea4bd146100c4575b600080fd5b61007f610105565b005b60335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f6100d23660046107d8565b610119565b61009b6100e5366004610826565b6101ec565b61007f610228565b61007f610100366004610863565b6103bf565b61010d610473565b61011760006104f4565b565b610121610473565b600061012c8361056b565b60008181526065602052604090819020805473ffffffffffffffffffffffffffffffffffffffff8681167fffffffffffffffffffffffff00000000000000000000000000000000000000008316179092559151929350169061018f908590610885565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff808716845284166020840152917f9416a153a346f93d95f94b064ae3f148b6460473c6e82b3f9fc2521b873fcd6c910160405180910390a250505050565b6000606560006101fb8461056b565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff1692915050565b600054610100900460ff16158080156102485750600054600160ff909116105b806102625750303b158015610262575060005460ff166001145b6102f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561035157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61035961059b565b80156103bc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6103c7610473565b73ffffffffffffffffffffffffffffffffffffffff811661046a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102ea565b6103bc816104f4565b60335473ffffffffffffffffffffffffffffffffffffffff163314610117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ea565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008160405160200161057e9190610885565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16610632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102ea565b610117600054610100900460ff166106cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102ea565b610117336104f4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261071557600080fd5b813567ffffffffffffffff80821115610730576107306106d5565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610776576107766106d5565b8160405283815286602085880101111561078f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d357600080fd5b919050565b600080604083850312156107eb57600080fd5b823567ffffffffffffffff81111561080257600080fd5b61080e85828601610704565b92505061081d602084016107af565b90509250929050565b60006020828403121561083857600080fd5b813567ffffffffffffffff81111561084f57600080fd5b61085b84828501610704565b949350505050565b60006020828403121561087557600080fd5b61087e826107af565b9392505050565b6000825160005b818110156108a6576020818601810151858301520161088c565b818111156108b5576000828501525b50919091019291505056fea26469706673582212209ccf9148f40423041eb69c219f3e0b8f42f3554b8eb4488c0f65d004ebcb9b1264736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000001": { ++ "contractName": "TaikoL2", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000032": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000777700000000000000000000000000000006", ++ "0x0000000000000000000000000000000000000000000000000000000000000035": "0x29b59582b23d773d29b32682e6776e804549a0c1052b6c3b5d1cd57ff7f140cc" ++ }, ++ "code": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80639a295e7311610081578063dac5df781161005b578063dac5df78146101ef578063ee82ac5e146101f8578063f16c79341461020b57600080fd5b80639a295e7314610170578063a0ca2d08146101d3578063c8d772ab146101e657600080fd5b8063461a4478116100b2578063461a4478146101405780635155ce9f14610153578063975e09a01461015b57600080fd5b806325bf86f2146100ce5780633ab76e9f14610101575b600080fd5b6100ee6100dc366004611e74565b60009081526034602052604090205490565b6040519081526020015b60405180910390f35b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f8565b61011b61014e366004611fb8565b61021e565b6036546100ee565b61016e610169366004611fed565b610230565b005b604080516001815260a760208201526108019181019190915260146060820181905260006080830152600560a0830152624c4b4060c083015260e08201526128006101008201526152086101208201526203d090610140820152610160016100f8565b61016e6101e136600461207a565b6102e9565b6100ee60365481565b6100ee60355481565b6100ee610206366004611e74565b610349565b61011b61021936600461209c565b610396565b600061022a4683610453565b92915050565b600061023e8585858561052e565b90506000816006811115610254576102546120e3565b14156102a75760405162461bcd60e51b815260206004820152600960248201527f4c323a726561736f6e000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6102af61082b565b6102b9858561094e565b6040517f64b299ff9f8ba674288abb53380419048a4271dda03b837ecba6b40e6ddea4a290600090a25050505050565b6102f161082b565b60008281526034602052604090819020829055603682905551829043907f930c750845026c7bb04c0e3d9111d512b4c86981713c4944a35a10a4a7a854f39061033d9085815260200190565b60405180910390a35050565b600043821061035a57506000919050565b4382108015610374575061037061010043612141565b8210155b1561037e57504090565b5060009081526033602052604090205490565b919050565b60006103a28383610453565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811661040c5760405162461bcd60e51b815260206004820152600e60248201527f41523a7a65726f41646472657373000000000000000000000000000000000000604482015260640161029e565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008061045f84610970565b83604051602001610471929190612188565b60408051601f19818403018152908290526000547fbf40fac100000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff169063bf40fac1906104d69084906004016121e0565b60206040518083038186803b1580156104ee57600080fd5b505afa158015610502573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105269190612237565b949350505050565b600061280084111561054257506001610526565b6040517f2cb6101a00000000000000000000000000000000000000000000000000000000815273b9942052e20E93f740A6acBb4b2284972c4cB62990632cb6101a906105949088908890600401612252565b60006040518083038186803b1580156105ac57600080fd5b505af49250505080156105e157506040513d6000823e601f3d908101601f191682016040526105de91908101906122d7565b60015b61061f573d80801561060f576040519150601f19603f3d011682016040523d82523d6000602084013e610614565b606091505b506002915050610526565b80515160141015610634576003915050610526565b624c4b4061064182610aa2565b1115610651576004915050610526565b80515183106106a25760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420747849647800000000000000000000000000000000000000604482015260640161029e565b6000816000015184815181106106ba576106ba612477565b60200260200101519050600560068111156106d7576106d76120e3565b8560068111156106e9576106e96120e3565b14156107685760006106fa82610af6565b73ffffffffffffffffffffffffffffffffffffffff161461075d5760405162461bcd60e51b815260206004820152601760248201527f6261642068696e742054585f494e56414c49445f534947000000000000000000604482015260640161029e565b600592505050610526565b600685600681111561077c5761077c6120e3565b14156107e357615208816060015110156107d85760405162461bcd60e51b815260206004820152600860248201527f6261642068696e74000000000000000000000000000000000000000000000000604482015260640161029e565b600692505050610526565b60405162461bcd60e51b815260206004820152601e60248201527f6661696c656420746f2070726f76652074786c69737420696e76616c69640000604482015260640161029e565b610833611e55565b434660025b610100811115801561084a5750808310155b15610898576108598184612141565b408460ff6108678487612141565b61087191906124d5565b60ff811061088157610881612477565b602002015280610890816124e9565b915050610838565b5060006108a6600184612141565b905080406108b78383600088610b85565b603554146109075760405162461bcd60e51b815260206004820152601260248201527f4c323a7075626c6963496e707574486173680000000000000000000000000000604482015260640161029e565b808561091460ff856124d5565b60ff811061092457610924612477565b60200201526109368385600088610b85565b60355560009182526033602052604090912055505050565b60008282604051610960929190612522565b6040518091039020905092915050565b6060816109b057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156109da57806109c4816124e9565b91506109d39050600a83612532565b91506109b4565b60008167ffffffffffffffff8111156109f5576109f5611e8d565b6040519080825280601f01601f191660200182016040528015610a1f576020820181803683370190505b5090505b841561052657610a34600183612141565b9150610a41600a866124d5565b610a4c906030612546565b60f81b818381518110610a6157610a61612477565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610a9b600a86612532565b9450610a23565b8051600090815b8151811015610aef57818181518110610ac457610ac4612477565b60200260200101516060015183610adb9190612546565b925080610ae7816124e9565b915050610aa9565b5050919050565b60006001610b0383610bbe565b6080840151610b1390601b61255e565b60a085015160c0860151604080516000815260200190819052610b52949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015610b74573d6000803e3d6000fd5b5050604051601f1901519392505050565b600084848484604051602001610b9e9493929190612583565b604051602081830303815290604052805190602001209050949350505050565b805160009060609060ff16610be157610bda8360e00151610faf565b9050610bfb565b610bf8610bf38460e001516001610fe2565b610faf565b90505b825160ff16610c5a578051600914610c555760405162461bcd60e51b815260206004820152601160248201527f696e76616c696420726c70206974656d73000000000000000000000000000000604482015260640161029e565b610d64565b826000015160ff1660011415610cbb578051600b14610c555760405162461bcd60e51b815260206004820152601160248201527f696e76616c696420726c70206974656d73000000000000000000000000000000604482015260640161029e565b826000015160ff1660021415610d1c578051600c14610c555760405162461bcd60e51b815260206004820152601160248201527f696e76616c696420726c70206974656d73000000000000000000000000000000604482015260640161029e565b60405162461bcd60e51b815260206004820152600e60248201527f696e76616c696420747854797065000000000000000000000000000000000000604482015260640161029e565b825160009060ff1615610d845760038251610d7f9190612141565b610d87565b81515b67ffffffffffffffff811115610d9f57610d9f611e8d565b604051908082528060200260200182016040528015610dd257816020015b6060815260200190600190039081610dbd5790505b50905060005b8151811015610f5d57845160ff1615801590610e00575060018251610dfd9190612141565b81145b15610e4957610e27838281518110610e1a57610e1a612477565b6020026020010151611018565b828281518110610e3957610e39612477565b6020026020010181905250610f4b565b610e73610e6e848381518110610e6157610e61612477565b6020026020010151611023565b6110b3565b828281518110610e8557610e85612477565b6020908102919091010152845160ff16158015610eae575060048251610eab9190612141565b81145b15610f4b57610ebd60a7611122565b82610ec9836001612546565b81518110610ed957610ed9612477565b6020026020010181905250610eee6000611130565b82610efa836002612546565b81518110610f0a57610f0a612477565b6020026020010181905250610f1f6000611130565b82610f2b836003612546565b81518110610f3b57610f3b612477565b6020026020010181905250610f5d565b80610f55816124e9565b915050610dd8565b506000610f6982611148565b855190915060ff1615610f9f578451604051610f8d9160f81b9083906020016125ce565b60405160208183030381529060405290505b8051602090910120949350505050565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061022a9061118c565b606082518210611001575060408051602081019091526000815261022a565b6103a283838486516110139190612141565b61138b565b606061022a8261150c565b6060600080600061103385611522565b91945092509050600081600181111561104e5761104e6120e3565b1461109b5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e0000000000000000604482015260640161029e565b6110aa85602001518484611873565b95945050505050565b606080825160011480156110e157506080836000815181106110d7576110d7612477565b016020015160f81c105b156110ed57508161022a565b6110f983516080611952565b8360405160200161110b929190612616565b604051602081830303815290604052905092915050565b606061022a610e6e83611b48565b606061022a610e6e8367ffffffffffffffff16611b48565b6060600061115583611caa565b9050611163815160c0611952565b81604051602001611175929190612616565b604051602081830303815290604052915050919050565b606060008061119a84611522565b919350909150600190508160018111156111b6576111b66120e3565b146112035760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e000000000000000000604482015260640161029e565b6040805160208082526104208201909252600091816020015b604080518082019091526000808252602082015281526020019060019003908161121c5790505090506000835b865181101561138057602082106112c85760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201527f7374206c656e6774682e00000000000000000000000000000000000000000000606482015260840161029e565b6000806113056040518060400160405280858c600001516112e99190612141565b8152602001858c602001516112fe9190612546565b9052611522565b5091509150604051806040016040528083836113219190612546565b8152602001848b602001516113369190612546565b81525085858151811061134b5761134b612477565b6020908102919091010152611361600185612546565b935061136d8183612546565b6113779084612546565b92505050611249565b508152949350505050565b60608161139981601f612546565b10156113e75760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161029e565b826113f28382612546565b10156114405760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161029e565b61144a8284612546565b8451101561149a5760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161029e565b6060821580156114b95760405191506000825260208201604052611503565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156114f25780518352602092830192016114da565b5050858452601f01601f1916604052505b50949350505050565b606061022a826020015160008460000151611873565b60008060008084600001511161157a5760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e0000000000000000604482015260640161029e565b6020840151805160001a607f811161159f57600060016000945094509450505061186c565b60b7811161161b5760006115b4608083612141565b9050808760000151116116095760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e00000000000000604482015260640161029e565b6001955093506000925061186c915050565b60bf811161170a57600061163060b783612141565b9050808760000151116116855760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e00604482015260640161029e565b600183015160208290036101000a900461169f8183612546565b8851116116ee5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e0000000000000000604482015260640161029e565b6116f9826001612546565b965094506000935061186c92505050565b60f7811161178557600061171f60c083612141565b9050808760000151116117745760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e000000000000000000604482015260640161029e565b60019550935084925061186c915050565b600061179260f783612141565b9050808760000151116117e75760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e000000604482015260640161029e565b600183015160208290036101000a90046118018183612546565b8851116118505760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420524c50206c6f6e67206c6973742e00000000000000000000604482015260640161029e565b61185b826001612546565b965094506001935061186c92505050565b9193909250565b606060008267ffffffffffffffff81111561189057611890611e8d565b6040519080825280601f01601f1916602001820160405280156118ba576020820181803683370190505b5090508051600014156118ce5790506103a2565b60006118da8587612546565b90506020820160005b6118ee602087612532565b8110156119255782518252611904602084612546565b9250611911602083612546565b91508061191d816124e9565b9150506118e3565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b60608060388410156119d15760408051600180825281830190925290602082018180368337019050509050611987838561255e565b60f81b8160008151811061199d5761199d612477565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506103a2565b600060015b6119e08187612532565b15611a0657816119ef816124e9565b92506119ff905061010082612645565b90506119d6565b611a11826001612546565b67ffffffffffffffff811115611a2957611a29611e8d565b6040519080825280601f01601f191660200182016040528015611a53576020820181803683370190505b509250611a60858361255e565b611a6b90603761255e565b60f81b83600081518110611a8157611a81612477565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b818111611b3f57610100611ac98284612141565b611ad5906101006127a2565b611adf9088612532565b611ae991906124d5565b60f81b838281518110611afe57611afe612477565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080611b37816124e9565b915050611ab5565b50509392505050565b6060600082604051602001611b5f91815260200190565b604051602081830303815290604052905060005b6020811015611bd157818181518110611b8e57611b8e612477565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615611bbf57611bd1565b80611bc9816124e9565b915050611b73565b6000611bde826020612141565b67ffffffffffffffff811115611bf657611bf6611e8d565b6040519080825280601f01601f191660200182016040528015611c20576020820181803683370190505b50905060005b8151811015611503578383611c3a816124e9565b945081518110611c4c57611c4c612477565b602001015160f81c60f81b828281518110611c6957611c69612477565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080611ca2816124e9565b915050611c26565b6060815160001415611cca57505060408051600081526020810190915290565b6000805b8351811015611d1157838181518110611ce957611ce9612477565b60200260200101515182611cfd9190612546565b915080611d09816124e9565b915050611cce565b60008267ffffffffffffffff811115611d2c57611d2c611e8d565b6040519080825280601f01601f191660200182016040528015611d56576020820181803683370190505b50600092509050602081015b8551831015611503576000868481518110611d7f57611d7f612477565b602002602001015190506000602082019050611d9d83828451611dda565b878581518110611daf57611daf612477565b60200260200101515183611dc39190612546565b925050508280611dd2906124e9565b935050611d62565b8282825b60208110611e165781518352611df5602084612546565b9250611e02602083612546565b9150611e0f602082612141565b9050611dde565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b60405180611fe0016040528060ff906020820280368337509192915050565b600060208284031215611e8657600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516020810167ffffffffffffffff81118282101715611edf57611edf611e8d565b60405290565b604051610100810167ffffffffffffffff81118282101715611edf57611edf611e8d565b604051601f8201601f1916810167ffffffffffffffff81118282101715611f3257611f32611e8d565b604052919050565b600067ffffffffffffffff821115611f5457611f54611e8d565b50601f01601f191660200190565b600082601f830112611f7357600080fd5b8135611f86611f8182611f3a565b611f09565b818152846020838601011115611f9b57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611fca57600080fd5b813567ffffffffffffffff811115611fe157600080fd5b61052684828501611f62565b6000806000806060858703121561200357600080fd5b843567ffffffffffffffff8082111561201b57600080fd5b818701915087601f83011261202f57600080fd5b81358181111561203e57600080fd5b88602082850101111561205057600080fd5b602092830196509450508501356007811061206a57600080fd5b9396929550929360400135925050565b6000806040838503121561208d57600080fd5b50508035926020909101359150565b600080604083850312156120af57600080fd5b82359150602083013567ffffffffffffffff8111156120cd57600080fd5b6120d985828601611f62565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561215357612153612112565b500390565b60005b8381101561217357818101518382015260200161215b565b83811115612182576000848401525b50505050565b6000835161219a818460208801612158565b7f2e0000000000000000000000000000000000000000000000000000000000000090830190815283516121d4816001840160208801612158565b01600101949350505050565b60208152600082518060208401526121ff816040850160208701612158565b601f01601f19169190910160400192915050565b805173ffffffffffffffffffffffffffffffffffffffff8116811461039157600080fd5b60006020828403121561224957600080fd5b6103a282612213565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b805160ff8116811461039157600080fd5b600082601f8301126122a357600080fd5b81516122b1611f8182611f3a565b8181528460208386010111156122c657600080fd5b610526826020830160208701612158565b600060208083850312156122ea57600080fd5b825167ffffffffffffffff8082111561230257600080fd5b818501915082828703121561231657600080fd5b61231e611ebc565b82518281111561232d57600080fd5b80840193505086601f84011261234257600080fd5b82518281111561235457612354611e8d565b8060051b612363868201611f09565b918252848101860191868101908a84111561237d57600080fd5b87870192505b838310156124675782518681111561239a57600080fd5b8701610100818d03601f19018113156123b257600080fd5b6123ba611ee5565b6123c58b8401612281565b81526123d360408401612213565b8b8201526060830151898111156123e957600080fd5b6123f78f8d83870101612292565b6040830152506080830151606082015260a0612414818501612281565b608083015260c0808501518284015260e09150818501518184015250828401519250898311156124445760008081fd5b6124528f8d85870101612292565b90820152845250509187019190870190612383565b8452509198975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826124e4576124e46124a6565b500690565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561251b5761251b612112565b5060010190565b8183823760009101908152919050565b600082612541576125416124a6565b500490565b6000821982111561255957612559612112565b500190565b600060ff821660ff84168060ff0382111561257b5761257b612112565b019392505050565b848152600060208581840152846040840152606083018460005b60ff8110156125ba5781518352918301919083019060010161259d565b505050506120408201905095945050505050565b7fff000000000000000000000000000000000000000000000000000000000000008316815260008251612608816001850160208701612158565b919091016001019392505050565b60008351612628818460208801612158565b83519083019061263c818360208801612158565b01949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561267d5761267d612112565b500290565b600181815b808511156126db57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156126c1576126c1612112565b808516156126ce57918102915b93841c9390800290612687565b509250929050565b6000826126f25750600161022a565b816126ff5750600061022a565b8160018114612715576002811461271f5761273b565b600191505061022a565b60ff84111561273057612730612112565b50506001821b61022a565b5060208310610133831016604e8410600b841016171561275e575081810a61022a565b6127688383612682565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561279a5761279a612112565b029392505050565b60006103a283836126e356fea2646970667358221220db1d28bd7eaec2338f7eb69243e9e2170b1846909853a01fabcca8ea29134c2064736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000004": { ++ "contractName": "Bridge", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" ++ }, ++ "code": "0x6080604052600436106101485760003560e01c80636950f0de116100c0578063d0496d6a11610074578063f2fde38b11610059578063f2fde38b14610421578063f980391914610441578063fee99b221461046157600080fd5b8063d0496d6a14610385578063f16c79341461040157600080fd5b80638da5cb5b116100a55780638da5cb5b1461031957806396e1785214610344578063a4444efd1461036557600080fd5b80636950f0de146102e4578063715018a61461030457600080fd5b8063461a447811610117578063540be6a3116100fc578063540be6a3146102745780635d0bd9861461029457806366ca2bc0146102c457600080fd5b8063461a4478146102175780635075a9d41461023757600080fd5b806319ab453c1461015457806332676bc6146101765780633ab76e9f146101ab5780633aec8585146101f757600080fd5b3661014f57005b600080fd5b34801561016057600080fd5b5061017461016f36600461260a565b610481565b005b34801561018257600080fd5b50610196610191366004612627565b610600565b60405190151581526020015b60405180910390f35b3480156101b757600080fd5b5060975473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a2565b34801561020357600080fd5b5061019661021236600461269c565b610615565b34801561022357600080fd5b506101d2610232366004612851565b610672565b34801561024357600080fd5b50610267610252366004612886565b600090815260ca602052604090205460ff1690565b6040516101a2919061289f565b34801561028057600080fd5b5061019661028f366004612886565b61067e565b3480156102a057600080fd5b506101966102af366004612886565b600090815260c9602052604090205460ff1690565b3480156102d057600080fd5b506101746102df366004612886565b61068a565b3480156102f057600080fd5b506101746102ff3660046128f0565b6106d0565b34801561031057600080fd5b5061017461073c565b34801561032557600080fd5b5060655473ffffffffffffffffffffffffffffffffffffffff166101d2565b610357610352366004612935565b610750565b6040519081526020016101a2565b34801561037157600080fd5b5061019661038036600461296a565b6107c8565b34801561039157600080fd5b50604080516060808201835260008083526020808401829052928401528251808201845260cc5480825260cd5473ffffffffffffffffffffffffffffffffffffffff90811683860190815260ce5493870193845286519283525116938101939093525192820192909252016101a2565b34801561040d57600080fd5b506101d261041c3660046129bd565b610824565b34801561042d57600080fd5b5061017461043c36600461260a565b610830565b34801561044d57600080fd5b5061017461045c366004612a04565b6108cd565b34801561046d57600080fd5b5061017461047c366004612a49565b6109b4565b600054610100900460ff16158080156104a15750600054600160ff909116105b806104bb5750303b1580156104bb575060005460ff166001145b6105325760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561059057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61059982610a9e565b80156105fc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600061060c8383610ab7565b90505b92915050565b600080610657866040518060400160405280600681526020017f6272696467650000000000000000000000000000000000000000000000000000815250610824565b90506106673082878a8888610bc9565b979650505050505050565b600061060f4683610f96565b600061060f3083610ab7565b610694338261108f565b60408051338152602081018390527ff0958489d2a32db2b0faf27a72a31fdf28f2636ca5532f1b077ddc2f51b20d1d910160405180910390a150565b600260015414156107235760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610529565b600260015561073460c9838361119d565b505060018055565b61074461126d565b61074e60006112d4565b565b6000600260015414156107a55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610529565b60026001556107be60c9306107b985612ab2565b61134b565b6001805592915050565b60008061080a856040518060400160405280600681526020017f6272696467650000000000000000000000000000000000000000000000000000815250610824565b905061081a308283898888610bc9565b9695505050505050565b600061060c8383610f96565b61083861126d565b73ffffffffffffffffffffffffffffffffffffffff81166108c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610529565b6108ca816112d4565b50565b600260015414156109205760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610529565b60026001556040517f46eb9db5000000000000000000000000000000000000000000000000000000008152739F3301BccE1a59AAAaAc2185FCAf17C6896f7D58906346eb9db59061097c9060c990309087908790600401612d8e565b60006040518083038186803b15801561099457600080fd5b505af41580156109a8573d6000803e3d6000fd5b50505050505060018055565b60026001541415610a075760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610529565b60026001556040517fc0249e2d00000000000000000000000000000000000000000000000000000000815273c85d2777A112D31DED2bC7f59f849CbDE4103cA19063c0249e2d90610a659060c9903090889088908890600401612dd6565b60006040518083038186803b158015610a7d57600080fd5b505af4158015610a91573d6000803e3d6000fd5b5050505050506001805550565b610aa6611626565b610aae6116ab565b6108ca81611730565b6000828273ffffffffffffffffffffffffffffffffffffffff8216610b1e5760405162461bcd60e51b815260206004820152600860248201527f423a73656e6465720000000000000000000000000000000000000000000000006044820152606401610529565b80610b6b5760405162461bcd60e51b815260206004820152600860248201527f423a7369676e616c0000000000000000000000000000000000000000000000006044820152606401610529565b50506040805160609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208086019190915260348086019490945281518086039094018452605490940190525080519101205460011490565b6000848473ffffffffffffffffffffffffffffffffffffffff8216610c305760405162461bcd60e51b815260206004820152600860248201527f423a73656e6465720000000000000000000000000000000000000000000000006044820152606401610529565b80610c7d5760405162461bcd60e51b815260206004820152600860248201527f423a7369676e616c0000000000000000000000000000000000000000000000006044820152606401610529565b73ffffffffffffffffffffffffffffffffffffffff8816610ce05760405162461bcd60e51b815260206004820152600b60248201527f423a7372634272696467650000000000000000000000000000000000000000006044820152606401610529565b6000610cee85870187612ed0565b90507380ff01dc365337F25546f79Ee7cB38721ad2635263960304398260000151606001518b610d738c8c6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b60208601516040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152610db6949392916001916004016130e3565b60006040518083038186803b158015610dce57600080fd5b505af4158015610de2573d6000803e3d6000fd5b50506040517f461a447800000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f7461696b6f00000000000000000000000000000000000000000000000000000060448201526000925073ffffffffffffffffffffffffffffffffffffffff8d16915063461a44789060640160206040518083038186803b158015610e7c57600080fd5b505afa158015610e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb49190613124565b825161010001516040517f25bf86f20000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff91909116906325bf86f29060240160206040518083038186803b158015610f3557600080fd5b505afa158015610f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6d9190613141565b90508015801590610f8757508151610f84906117da565b81145b9b9a5050505050505050505050565b600080610fa284611b94565b83604051602001610fb492919061315a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526097547fbf40fac100000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff169063bf40fac1906110379084906004016131b2565b60206040518083038186803b15801561104f57600080fd5b505afa158015611063573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110879190613124565b949350505050565b818173ffffffffffffffffffffffffffffffffffffffff82166110f45760405162461bcd60e51b815260206004820152600860248201527f423a73656e6465720000000000000000000000000000000000000000000000006044820152606401610529565b806111415760405162461bcd60e51b815260206004820152600860248201527f423a7369676e616c0000000000000000000000000000000000000000000000006044820152606401610529565b50506040805160609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020808501919091526034808501939093528151808503909301835260549093019052805191012060019055565b6000821180156111ad5750468214155b6111f95760405162461bcd60e51b815260206004820152600960248201527f423a636861696e496400000000000000000000000000000000000000000000006044820152606401610529565b6000828152602084815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016841515908117909155915191825283917f9f391218c06d4fc365ceb15f340bb3d77306b28ac0b8d4e519aec2654794536d910160405180910390a2505050565b60655473ffffffffffffffffffffffffffffffffffffffff16331461074e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610529565b6065805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b608081015160009073ffffffffffffffffffffffffffffffffffffffff166113b55760405162461bcd60e51b815260206004820152600760248201527f423a6f776e6572000000000000000000000000000000000000000000000000006044820152606401610529565b468260600151141580156113dc5750606082015160009081526020859052604090205460ff165b6114285760405162461bcd60e51b815260206004820152600d60248201527f423a64657374436861696e4964000000000000000000000000000000000000006044820152606401610529565b60008261012001518361010001518460e0015161144591906131f4565b61144f91906131f4565b90503481146114a05760405162461bcd60e51b815260206004820152600760248201527f423a76616c7565000000000000000000000000000000000000000000000000006044820152606401610529565b6040517f461a447800000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f65746865725f7661756c74000000000000000000000000000000000000000000604482015260009073ffffffffffffffffffffffffffffffffffffffff86169063461a44789060640160206040518083038186803b15801561153657600080fd5b505afa15801561154a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156e9190613124565b905073ffffffffffffffffffffffffffffffffffffffff8116156115ac576115ac73ffffffffffffffffffffffffffffffffffffffff821683611cc6565b6002860180549060006115be8361320c565b9091555084523360208501524660408501526115d984611d81565b92506115e5308461108f565b827f47866f7dacd4a276245be6ed543cae03c9c17eb17e6980cee28e3dd168b7f9f3856040516116159190613362565b60405180910390a250509392505050565b600054610100900460ff166116a35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610529565b61074e611db1565b600054610100900460ff166117285760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610529565b61074e611e34565b73ffffffffffffffffffffffffffffffffffffffff81166117935760405162461bcd60e51b815260206004820152600e60248201527f41523a7a65726f416464726573730000000000000000000000000000000000006044820152606401610529565b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006060826101e001516000141561181f5760408051600f808252610200820190925290816020015b606081526020019060019003908161180357905050905061184e565b604080516010808252610220820190925290816020015b60608152602001906001900390816118365790505090505b825161185990611eba565b8160008151811061186c5761186c613375565b60200260200101819052506118848360200151611eba565b8160018151811061189757611897613375565b60200260200101819052506118af8360400151611ecd565b816002815181106118c2576118c2613375565b60200260200101819052506118da8360600151611eba565b816003815181106118ed576118ed613375565b60200260200101819052506119058360800151611eba565b8160048151811061191857611918613375565b60200260200101819052506119308360a00151611eba565b8160058151811061194357611943613375565b602002602001018190525061197a8360c0015160405160200161196691906133a4565b604051602081830303815290604052611f09565b8160068151811061198d5761198d613375565b60200260200101819052506119a58360e00151611f78565b816007815181106119b8576119b8613375565b60200260200101819052506119e38361010001516fffffffffffffffffffffffffffffffff16611f78565b816008815181106119f6576119f6613375565b6020026020010181905250611a0f836101200151611f86565b81600981518110611a2257611a22613375565b6020026020010181905250611a3b836101400151611f86565b81600a81518110611a4e57611a4e613375565b6020026020010181905250611a67836101600151611f86565b81600b81518110611a7a57611a7a613375565b6020026020010181905250611a93836101800151611f09565b81600c81518110611aa657611aa6613375565b6020026020010181905250611abf836101a00151611eba565b81600d81518110611ad257611ad2613375565b6020026020010181905250611b21836101c00151604051602001611966919060c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016815260080190565b81600e81518110611b3457611b34613375565b6020026020010181905250826101e00151600014611b7957611b5a836101e00151611f78565b81600f81518110611b6d57611b6d613375565b60200260200101819052505b6000611b8482611f9e565b8051602090910120949350505050565b606081611bd457505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611bfe5780611be88161320c565b9150611bf79050600a83613408565b9150611bd8565b60008167ffffffffffffffff811115611c1957611c19612706565b6040519080825280601f01601f191660200182016040528015611c43576020820181803683370190505b5090505b841561108757611c5860018361341c565b9150611c65600a86613433565b611c709060306131f4565b60f81b818381518110611c8557611c85613375565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611cbf600a86613408565b9450611c47565b80156105fc5760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611d26576040519150601f19603f3d011682016040523d82523d6000602084013e611d2b565b606091505b5050905080611d7c5760405162461bcd60e51b815260206004820152601360248201527f455448207472616e73666572206661696c6564000000000000000000000000006044820152606401610529565b505050565b600081604051602001611d949190613447565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16611e2e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610529565b60018055565b600054610100900460ff16611eb15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610529565b61074e336112d4565b606061060f611ec883611fe2565b611f09565b604051606082811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301529061060f90603401611966565b60608082516001148015611f375750608083600081518110611f2d57611f2d613375565b016020015160f81c105b15611f4357508161060f565b611f4f835160806120d5565b83604051602001611f6192919061348e565b604051602081830303815290604052905092915050565b606061060f611ec8836122cb565b606061060f611ec88367ffffffffffffffff166122cb565b60606000611fab8361242d565b9050611fb9815160c06120d5565b81604051602001611fcb92919061348e565b604051602081830303815290604052915050919050565b6060600082604051602001611ff991815260200190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815260208084528383019092529250600091829160208201818036833701905050905060005b81518110156120cc57838361205c8161320c565b94508151811061206e5761206e613375565b602001015160f81c60f81b82828151811061208b5761208b613375565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806120c48161320c565b915050612048565b50949350505050565b6060806038841015612154576040805160018082528183019092529060208201818036833701905050905061210a83856134bd565b60f81b8160008151811061212057612120613375565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061060c565b600060015b6121638187613408565b1561218957816121728161320c565b92506121829050610100826134e2565b9050612159565b6121948260016131f4565b67ffffffffffffffff8111156121ac576121ac612706565b6040519080825280601f01601f1916602001820160405280156121d6576020820181803683370190505b5092506121e385836134bd565b6121ee9060376134bd565b60f81b8360008151811061220457612204613375565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b8181116122c25761010061224c828461341c565b6122589061010061363f565b6122629088613408565b61226c9190613433565b60f81b83828151811061228157612281613375565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806122ba8161320c565b915050612238565b50509392505050565b60606000826040516020016122e291815260200190565b604051602081830303815290604052905060005b60208110156123545781818151811061231157612311613375565b01602001517fff00000000000000000000000000000000000000000000000000000000000000161561234257612354565b8061234c8161320c565b9150506122f6565b600061236182602061341c565b67ffffffffffffffff81111561237957612379612706565b6040519080825280601f01601f1916602001820160405280156123a3576020820181803683370190505b50905060005b81518110156120cc5783836123bd8161320c565b9450815181106123cf576123cf613375565b602001015160f81c60f81b8282815181106123ec576123ec613375565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806124258161320c565b9150506123a9565b606081516000141561244d57505060408051600081526020810190915290565b6000805b83518110156124945783818151811061246c5761246c613375565b6020026020010151518261248091906131f4565b91508061248c8161320c565b915050612451565b60008267ffffffffffffffff8111156124af576124af612706565b6040519080825280601f01601f1916602001820160405280156124d9576020820181803683370190505b50600092509050602081015b85518310156120cc57600086848151811061250257612502613375565b6020026020010151905060006020820190506125208382845161255d565b87858151811061253257612532613375565b6020026020010151518361254691906131f4565b9250505082806125559061320c565b9350506124e5565b8282825b6020811061259957815183526125786020846131f4565b92506125856020836131f4565b915061259260208261341c565b9050612561565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108ca57600080fd5b8035612605816125d8565b919050565b60006020828403121561261c57600080fd5b813561060c816125d8565b6000806040838503121561263a57600080fd5b8235612645816125d8565b946020939093013593505050565b60008083601f84011261266557600080fd5b50813567ffffffffffffffff81111561267d57600080fd5b60208301915083602082850101111561269557600080fd5b9250929050565b6000806000806000608086880312156126b457600080fd5b853594506020860135935060408601356126cd816125d8565b9250606086013567ffffffffffffffff8111156126e957600080fd5b6126f588828901612653565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff8111828210171561275957612759612706565b60405290565b6040805190810167ffffffffffffffff8111828210171561275957612759612706565b604051610200810167ffffffffffffffff8111828210171561275957612759612706565b600082601f8301126127b757600080fd5b813567ffffffffffffffff808211156127d2576127d2612706565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561281857612818612706565b8160405283815286602085880101111561283157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561286357600080fd5b813567ffffffffffffffff81111561287a57600080fd5b611087848285016127a6565b60006020828403121561289857600080fd5b5035919050565b60208101600483106128da577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b8035801515811461260557600080fd5b6000806040838503121561290357600080fd5b82359150612913602084016128e0565b90509250929050565b60006101a0828403121561292f57600080fd5b50919050565b60006020828403121561294757600080fd5b813567ffffffffffffffff81111561295e57600080fd5b6110878482850161291c565b6000806000806060858703121561298057600080fd5b8435935060208501359250604085013567ffffffffffffffff8111156129a557600080fd5b6129b187828801612653565b95989497509550505050565b600080604083850312156129d057600080fd5b82359150602083013567ffffffffffffffff8111156129ee57600080fd5b6129fa858286016127a6565b9150509250929050565b60008060408385031215612a1757600080fd5b823567ffffffffffffffff811115612a2e57600080fd5b612a3a8582860161291c565b925050612913602084016128e0565b600080600060408486031215612a5e57600080fd5b833567ffffffffffffffff80821115612a7657600080fd5b612a828783880161291c565b94506020860135915080821115612a9857600080fd5b50612aa586828701612653565b9497909650939450505050565b60006101a08236031215612ac557600080fd5b612acd612735565b82358152612add602084016125fa565b60208201526040830135604082015260608301356060820152612b02608084016125fa565b6080820152612b1360a084016125fa565b60a0820152612b2460c084016125fa565b60c082015260e083810135908201526101008084013590820152610120808401359082015261014080840135908201526101608084013567ffffffffffffffff80821115612b7157600080fd5b612b7d368388016127a6565b83850152610180925082860135915080821115612b9957600080fd5b50612ba6368287016127a6565b918301919091525092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612be957600080fd5b830160208101925035905067ffffffffffffffff811115612c0957600080fd5b80360383131561269557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006101a082358452612c76602084016125fa565b73ffffffffffffffffffffffffffffffffffffffff81166020860152506040830135604085015260608301356060850152612cb3608084016125fa565b73ffffffffffffffffffffffffffffffffffffffff166080850152612cda60a084016125fa565b73ffffffffffffffffffffffffffffffffffffffff1660a0850152612d0160c084016125fa565b73ffffffffffffffffffffffffffffffffffffffff1660c085015260e08381013590850152610100808401359085015261012080840135908501526101408084013590850152610160612d5681850185612bb4565b8383880152612d688488018284612c18565b9350505050610180612d7c81850185612bb4565b86840383880152610667848284612c18565b84815273ffffffffffffffffffffffffffffffffffffffff84166020820152608060408201526000612dc36080830185612c61565b9050821515606083015295945050505050565b85815273ffffffffffffffffffffffffffffffffffffffff85166020820152608060408201526000612e0b6080830186612c61565b8281036060840152612e1e818587612c18565b98975050505050505050565b600082601f830112612e3b57600080fd5b60405161010080820182811067ffffffffffffffff82111715612e6057612e60612706565b60405283018185821115612e7357600080fd5b845b82811015612e8d578035825260209182019101612e75565b509195945050505050565b80356fffffffffffffffffffffffffffffffff8116811461260557600080fd5b803567ffffffffffffffff8116811461260557600080fd5b600060208284031215612ee257600080fd5b813567ffffffffffffffff80821115612efa57600080fd5b9083019060408286031215612f0e57600080fd5b612f1661275f565b823582811115612f2557600080fd5b83016102e08188031215612f3857600080fd5b612f40612782565b8135815260208201356020820152612f5a604083016125fa565b6040820152606082013560608201526080820135608082015260a082013560a0820152612f8a8860c08401612e2a565b60c08201526101c08083013560e08301526101e0612fa9818501612e98565b610100840152612fbc6102008501612eb8565b610120840152612fcf6102208501612eb8565b610140840152612fe26102408501612eb8565b61016084015261026084013586811115612ffb57600080fd5b6130078b8287016127a6565b610180850152506102808401356101a08401526130276102a08501612eb8565b828401526102c0840135818401525050808352505060208301358281111561304e57600080fd5b61305a878286016127a6565b60208301525095945050505050565b60005b8381101561308457818101518382015260200161306c565b83811115613093576000848401525b50505050565b600081518084526130b1816020860160208601613069565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b85815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a06080820152600061066760a0830184613099565b60006020828403121561313657600080fd5b815161060c816125d8565b60006020828403121561315357600080fd5b5051919050565b6000835161316c818460208801613069565b7f2e0000000000000000000000000000000000000000000000000000000000000090830190815283516131a6816001840160208801613069565b01600101949350505050565b60208152600061060c6020830184613099565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613207576132076131c5565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561323e5761323e6131c5565b5060010190565b60006101a0825184526020830151613275602086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015160408501526060830151606085015260808301516132b1608086018273ffffffffffffffffffffffffffffffffffffffff169052565b5060a08301516132d960a086018273ffffffffffffffffffffffffffffffffffffffff169052565b5060c083015161330160c086018273ffffffffffffffffffffffffffffffffffffffff169052565b5060e083810151908501526101008084015190850152610120808401519085015261014080840151908501526101608084015181860183905261334683870182613099565b92505050610180808401518583038287015261081a8382613099565b60208152600061060c6020830184613245565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008183825b60088110156133c95781518352602092830192909101906001016133aa565b5050506101008201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613417576134176133d9565b500490565b60008282101561342e5761342e6131c5565b500390565b600082613442576134426133d9565b500690565b60408152601460408201527f5441494b4f5f4252494447455f4d455353414745000000000000000000000000606082015260806020820152600061060c6080830184613245565b600083516134a0818460208801613069565b8351908301906134b4818360208801613069565b01949350505050565b600060ff821660ff84168060ff038211156134da576134da6131c5565b019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561351a5761351a6131c5565b500290565b600181815b8085111561357857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561355e5761355e6131c5565b8085161561356b57918102915b93841c9390800290613524565b509250929050565b60008261358f5750600161060f565b8161359c5750600061060f565b81600181146135b257600281146135bc576135d8565b600191505061060f565b60ff8411156135cd576135cd6131c5565b50506001821b61060f565b5060208310610133831016604e8410600b84101617156135fb575081810a61060f565b613605838361351f565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613637576136376131c5565b029392505050565b600061060c838361358056fea2646970667358221220780f457a18c1de4e613d8ca524cb4cdb0e1840183b36a1087511ffeda1527b9a64736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000002": { ++ "contractName": "TokenVault", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" ++ }, ++ "code": "0x6080604052600436106100d25760003560e01c8063715018a61161007f578063c287e57811610059578063c287e57814610228578063ee1490b214610268578063f16c79341461027b578063f2fde38b1461029b57600080fd5b8063715018a6146101c45780638da5cb5b146101d95780639aa8605c146101f757600080fd5b80633ab76e9f116100b05780633ab76e9f1461012c578063461a44781461016357806367090ccf1461018357600080fd5b80630c6fab82146100d757806319ab453c146100f957806339da33ba14610119575b600080fd5b3480156100e357600080fd5b506100f76100f2366004612459565b6102bb565b005b34801561010557600080fd5b506100f76101143660046124c8565b6105f9565b6100f76101273660046125c3565b610773565b34801561013857600080fd5b506097546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561016f57600080fd5b5061014661017e366004612641565b610ad1565b34801561018f57600080fd5b5061014661019e366004612676565b60cb6020908152600092835260408084209091529082529020546001600160a01b031681565b3480156101d057600080fd5b506100f7610ae3565b3480156101e557600080fd5b506065546001600160a01b0316610146565b34801561020357600080fd5b506102176102123660046124c8565b610af7565b60405161015a9594939291906126fe565b34801561023457600080fd5b506102586102433660046124c8565b60c96020526000908152604090205460ff1681565b604051901515815260200161015a565b6100f761027636600461274d565b610c59565b34801561028757600080fd5b506101466102963660046127e9565b611682565b3480156102a757600080fd5b506100f76102b63660046124c8565b611695565b600260015414156103135760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260015560408051808201909152600681527f6272696467650000000000000000000000000000000000000000000000000000602082015261035581610ad1565b6001600160a01b0316336001600160a01b0316146103b55760405162461bcd60e51b815260206004820152600960248201527f41523a64656e6965640000000000000000000000000000000000000000000000604482015260640161030a565b6000336001600160a01b031663d0496d6a6040518163ffffffff1660e01b815260040160606040518083038186803b1580156103f057600080fd5b505afa158015610404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104289190612830565b905061046d81604001516040518060400160405280600b81526020017f746f6b656e5f7661756c74000000000000000000000000000000000000000000815250611682565b6001600160a01b031681602001516001600160a01b0316146104d15760405162461bcd60e51b815260206004820152600860248201527f563a73656e646572000000000000000000000000000000000000000000000000604482015260640161030a565b60008635461415610507576104ec60408801602089016124c8565b90506105026001600160a01b0382168686611725565b610590565b610510876117d3565b6040517f42e91bb30000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260248201879052919250908216906342e91bb390604401600060405180830381600087803b15801561057757600080fd5b505af115801561058b573d6000803e3d6000fd5b505050505b60408281015181516001600160a01b038981168252602082019290925283821681840152606081018790529151908716917f485a7041eaecffd5ef478f291c05a2a47a1e6af7e7780e46578f18bf03e1bf3f919081900360800190a25050600180555050505050565b600054610100900460ff16158080156106195750600054600160ff909116105b806106335750303b158015610633575060005460ff166001145b6106a55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161030a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561070357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61070c8261182c565b801561076f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600260015414156107c65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161030a565b60026001556001600160a01b03851615801590610833575061081d866040518060400160405280600b81526020017f746f6b656e5f7661756c74000000000000000000000000000000000000000000815250611682565b6001600160a01b0316856001600160a01b031614155b6108815760405162461bcd60e51b815260040161030a9060208082526004908201527f563a746f00000000000000000000000000000000000000000000000000000000604082015260600190565b8234116108d05760405162461bcd60e51b815260206004820152600a60248201527f563a6d736756616c756500000000000000000000000000000000000000000000604482015260640161030a565b61095f604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018790523360808201526001600160a01b03861660a08201526101408101859052610120810184905261099584346128c1565b60e08201526001600160a01b03831660c0820152610180810182905260408051808201909152600681527f627269646765000000000000000000000000000000000000000000000000000060208201526000906109f190610ad1565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b8152600401610a1d91906128d8565b6020604051808303818588803b158015610a3657600080fd5b505af1158015610a4a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a6f91906129d2565b60e0830151604080518b8152602081019290925281018290529091506001600160a01b038816907fc4f150c33b1c9146a833662318b1e72e3d07a471886bb6f3a547a8e0bc3a7cfa9060600160405180910390a2505060018055505050505050565b6000610add4683611845565b92915050565b610aeb611913565b610af5600061196d565b565b60ca6020526000908152604090208054600182015460028301805492936001600160a01b038316937401000000000000000000000000000000000000000090930460ff1692909190610b48906129eb565b80601f0160208091040260200160405190810160405280929190818152602001828054610b74906129eb565b8015610bc15780601f10610b9657610100808354040283529160200191610bc1565b820191906000526020600020905b815481529060010190602001808311610ba457829003601f168201915b505050505090806003018054610bd6906129eb565b80601f0160208091040260200160405190810160405280929190818152602001828054610c02906129eb565b8015610c4f5780601f10610c2457610100808354040283529160200191610c4f565b820191906000526020600020905b815481529060010190602001808311610c3257829003601f168201915b5050505050905085565b60026001541415610cac5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161030a565b60026001556001600160a01b03871615801590610d195750610d03886040518060400160405280600b81526020017f746f6b656e5f7661756c74000000000000000000000000000000000000000000815250611682565b6001600160a01b0316876001600160a01b031614155b610d675760405162461bcd60e51b815260040161030a9060208082526004908201527f563a746f00000000000000000000000000000000000000000000000000000000604082015260600190565b6001600160a01b038616610dbd5760405162461bcd60e51b815260206004820152600760248201527f563a746f6b656e00000000000000000000000000000000000000000000000000604482015260640161030a565b60008511610e0d5760405162461bcd60e51b815260206004820152600860248201527f563a616d6f756e74000000000000000000000000000000000000000000000000604482015260640161030a565b6040805160a08101825260008082526020820181905291810191909152606080820181905260808201526001600160a01b038716600090815260c9602052604081205460ff16156110bd576040517f77be18a8000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038916906377be18a890604401600060405180830381600087803b158015610eb957600080fd5b505af1158015610ecd573d6000803e3d6000fd5b505050506001600160a01b03888116600090815260ca6020908152604091829020825160a081018452815481526001820154948516928101929092527401000000000000000000000000000000000000000090930460ff1691810191909152600282018054919291606084019190610f44906129eb565b80601f0160208091040260200160405190810160405280929190818152602001828054610f70906129eb565b8015610fbd5780601f10610f9257610100808354040283529160200191610fbd565b820191906000526020600020905b815481529060010190602001808311610fa057829003601f168201915b50505050508152602001600382018054610fd6906129eb565b80601f0160208091040260200160405190810160405280929190818152602001828054611002906129eb565b801561104f5780601f106110245761010080835404028352916020019161104f565b820191906000526020600020905b81548152906001019060200180831161103257829003601f168201915b5050509190925250505060208101519092506001600160a01b03166110b65760405162461bcd60e51b815260206004820152601060248201527f563a63616e6f6e6963616c546f6b656e00000000000000000000000000000000604482015260640161030a565b508561139a565b60008890506040518060a001604052804681526020018a6001600160a01b03168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561111b57600080fd5b505afa15801561112f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111539190612a4e565b60ff168152602001826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561119457600080fd5b505afa1580156111a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111d09190810190612a6b565b8152602001826001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b15801561120e57600080fd5b505afa158015611222573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261124a9190810190612a6b565b90526040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529093506000906001600160a01b038316906370a082319060240160206040518083038186803b1580156112aa57600080fd5b505afa1580156112be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e291906129d2565b90506112f96001600160a01b03831633308c6119d7565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281906001600160a01b038416906370a082319060240160206040518083038186803b15801561135357600080fd5b505afa158015611367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138b91906129d2565b61139591906128c1565b925050505b611429604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018b905233608082015260408051808201909152600b81527f746f6b656e5f7661756c740000000000000000000000000000000000000000006020820152611475908c90611682565b6001600160a01b031660a082015260808101516040517f0c6fab8200000000000000000000000000000000000000000000000000000000916114c0918691908e908790602401612ae2565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526101608201526101408101879052610120810186905261153f86346128c1565b60e08201526001600160a01b03851660c0820152610180810184905260408051808201909152600681527f6272696467650000000000000000000000000000000000000000000000000000602082015260009061159b90610ad1565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b81526004016115c791906128d8565b6020604051808303818588803b1580156115e057600080fd5b505af11580156115f4573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061161991906129d2565b604080518e81526001600160a01b038d81166020830152918101869052606081018390529192508c16907ffd41c851d9a68cdf761055c8f7cb21010b653b27f89f6e3fa224a75eb82a40ac9060800160405180910390a250506001805550505050505050505050565b600061168e8383611845565b9392505050565b61169d611913565b6001600160a01b0381166117195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161030a565b6117228161196d565b50565b6040516001600160a01b0383166024820152604481018290526117ce9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a2e565b505050565b8035600090815260cb602090815260408083208392909183916117fa9187019087016124c8565b6001600160a01b03908116825260208201929092526040016000205416905080610add5761182783611b13565b61168e565b611834611dd0565b61183c611e55565b61172281611eda565b60008061185184611f6a565b83604051602001611863929190612b99565b60408051601f19818403018152908290526097547fbf40fac10000000000000000000000000000000000000000000000000000000083529092506001600160a01b03169063bf40fac1906118bb908490600401612bf1565b60206040518083038186803b1580156118d357600080fd5b505afa1580156118e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190b9190612c04565b949350505050565b6065546001600160a01b03163314610af55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030a565b606580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052611a289085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161176a565b50505050565b6000611a83826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661209c9092919063ffffffff16565b8051909150156117ce5780806020019051810190611aa19190612c21565b6117ce5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161030a565b6000808235611b2860408501602086016124c8565b604051602001611b6792919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b604051602081830303815290604052805190602001209050611bad60008260405180602001611b9590612437565b601f1982820381018352601f909101166040526120ab565b6097549092506001600160a01b0380841691636c0db62b9116611bd660408701602088016124c8565b8635611be86060890160408a01612c43565b611bf560608a018a612c60565b611c0260808c018c612c60565b604051611c169291908e3590602001612ccc565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401611c479796959493929190612d7a565b600060405180830381600087803b158015611c6157600080fd5b505af1158015611c75573d6000803e3d6000fd5b5050506001600160a01b038316600090815260c96020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560ca9091529020849150611cd08282612f21565b50508235600090815260cb60209081526040808320859390929091611cfa919088019088016124c8565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316836020016020810190611d5b91906124c8565b6001600160a01b031684357f9e465b29e576a3e01584e31d607353f21b80c055e813af907c0a495f6cf4f7bc611d946060880188612c60565b611da160808a018a612c60565b611db160608c0160408d01612c43565b604051611dc2959493929190612ff9565b60405180910390a450919050565b600054610100900460ff16611e4d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161030a565b610af56121ad565b600054610100900460ff16611ed25760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161030a565b610af5612230565b6001600160a01b038116611f305760405162461bcd60e51b815260206004820152600e60248201527f41523a7a65726f41646472657373000000000000000000000000000000000000604482015260640161030a565b609780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b606081611faa57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611fd45780611fbe81613036565b9150611fcd9050600a8361309e565b9150611fae565b60008167ffffffffffffffff811115611fef57611fef6124e5565b6040519080825280601f01601f191660200182016040528015612019576020820181803683370190505b5090505b841561190b5761202e6001836128c1565b915061203b600a866130b2565b6120469060306130c6565b60f81b81838151811061205b5761205b6130de565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612095600a8661309e565b945061201d565b606061190b84846000856122b6565b600080844710156120fe5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161030a565b825161214c5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161030a565b8383516020850187f590506001600160a01b03811661190b5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161030a565b600054610100900460ff1661222a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161030a565b60018055565b600054610100900460ff166122ad5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161030a565b610af53361196d565b60608247101561232e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161030a565b6001600160a01b0385163b6123855760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161030a565b600080866001600160a01b031685876040516123a1919061310d565b60006040518083038185875af1925050503d80600081146123de576040519150601f19603f3d011682016040523d82523d6000602084013e6123e3565b606091505b50915091506123f38282866123fe565b979650505050505050565b6060831561240d57508161168e565b82511561241d5782518084602001fd5b8160405162461bcd60e51b815260040161030a9190612bf1565b6120a08061312a83390190565b6001600160a01b038116811461172257600080fd5b6000806000806080858703121561246f57600080fd5b843567ffffffffffffffff81111561248657600080fd5b850160a0818803121561249857600080fd5b935060208501356124a881612444565b925060408501356124b881612444565b9396929550929360600135925050565b6000602082840312156124da57600080fd5b813561168e81612444565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561253d5761253d6124e5565b604052919050565b600067ffffffffffffffff82111561255f5761255f6124e5565b50601f01601f191660200190565b600082601f83011261257e57600080fd5b813561259161258c82612545565b612514565b8181528460208386010111156125a657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c087890312156125dc57600080fd5b8635955060208701356125ee81612444565b94506040870135935060608701359250608087013561260c81612444565b915060a087013567ffffffffffffffff81111561262857600080fd5b61263489828a0161256d565b9150509295509295509295565b60006020828403121561265357600080fd5b813567ffffffffffffffff81111561266a57600080fd5b61190b8482850161256d565b6000806040838503121561268957600080fd5b82359150602083013561269b81612444565b809150509250929050565b60005b838110156126c15781810151838201526020016126a9565b83811115611a285750506000910152565b600081518084526126ea8160208601602086016126a6565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260ff8416604082015260a06060820152600061272f60a08301856126d2565b828103608084015261274181856126d2565b98975050505050505050565b600080600080600080600080610100898b03121561276a57600080fd5b88359750602089013561277c81612444565b9650604089013561278c81612444565b9550606089013594506080890135935060a0890135925060c08901356127b181612444565b915060e089013567ffffffffffffffff8111156127cd57600080fd5b6127d98b828c0161256d565b9150509295985092959890939650565b600080604083850312156127fc57600080fd5b82359150602083013567ffffffffffffffff81111561281a57600080fd5b6128268582860161256d565b9150509250929050565b60006060828403121561284257600080fd5b6040516060810181811067ffffffffffffffff82111715612865576128656124e5565b60405282518152602083015161287a81612444565b60208201526040928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156128d3576128d3612892565b500390565b6020815281516020820152600060208301516128ff60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015161292e60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526129ac6101c08601846126d2565b90860151858203601f1901838701529092506129c883826126d2565b9695505050505050565b6000602082840312156129e457600080fd5b5051919050565b600181811c908216806129ff57607f821691505b60208210811415612a39577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60ff8116811461172257600080fd5b600060208284031215612a6057600080fd5b815161168e81612a3f565b600060208284031215612a7d57600080fd5b815167ffffffffffffffff811115612a9457600080fd5b8201601f81018413612aa557600080fd5b8051612ab361258c82612545565b818152856020838501011115612ac857600080fd5b612ad98260208301602086016126a6565b95945050505050565b6080815284516080820152600060208601516001600160a01b0380821660a085015260ff60408901511660c08501526060880151915060a060e0850152612b2d6101208501836126d2565b915060808801517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8085840301610100860152612b6983826126d2565b9188166020860152506001600160a01b03861660408501529150612b8a9050565b82606083015295945050505050565b60008351612bab8184602088016126a6565b7f2e000000000000000000000000000000000000000000000000000000000000009083019081528351612be58160018401602088016126a6565b01600101949350505050565b60208152600061168e60208301846126d2565b600060208284031215612c1657600080fd5b815161168e81612444565b600060208284031215612c3357600080fd5b8151801515811461168e57600080fd5b600060208284031215612c5557600080fd5b813561168e81612a3f565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c9557600080fd5b83018035915067ffffffffffffffff821115612cb057600080fd5b602001915036819003821315612cc557600080fd5b9250929050565b828482377f286272696467656400000000000000000000000000000000000000000000000092019182527ff09f8c88000000000000000000000000000000000000000000000000000000006008830152600c8201527f2900000000000000000000000000000000000000000000000000000000000000602c820152602d01919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60006001600160a01b03808a16835280891660208401525086604083015260ff8616606083015260c06080830152612db660c083018587612d4f565b82810360a0840152612dc881856126d2565b9a9950505050505050505050565b601f8211156117ce57600081815260208120601f850160051c81016020861015612dfd5750805b601f850160051c820191505b81811015612e1c57828155600101612e09565b505050505050565b67ffffffffffffffff831115612e3c57612e3c6124e5565b612e5083612e4a83546129eb565b83612dd6565b6000601f841160018114612ea25760008515612e6c5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355612f1a565b600083815260209020601f19861690835b82811015612ed35786850135825560209485019460019092019101612eb3565b5086821015612f0e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81358155600181016020830135612f3781612444565b6001600160a01b03811690508154817fffffffffffffffffffffffff000000000000000000000000000000000000000082161783556040850135612f7a81612a3f565b74ff00000000000000000000000000000000000000008160a01b16837fffffffffffffffffffffff00000000000000000000000000000000000000000084161717845550505050612fce6060830183612c60565b612fdc818360028601612e24565b5050612feb6080830183612c60565b611a28818360038601612e24565b60608152600061300d606083018789612d4f565b8281036020840152613020818688612d4f565b91505060ff831660408301529695505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561306857613068612892565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826130ad576130ad61306f565b500490565b6000826130c1576130c161306f565b500690565b600082198211156130d9576130d9612892565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000825161311f8184602087016126a6565b919091019291505056fe608060405234801561001057600080fd5b50612080806100206000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80636c0db62b116100e357806395d89b411161008c578063dd62ed3e11610066578063dd62ed3e146103b0578063f16c7934146103f6578063f2fde38b1461040957600080fd5b806395d89b4114610382578063a457c2d71461038a578063a9059cbb1461039d57600080fd5b806377be18a8116100bd57806377be18a8146103315780637cf8ed0d146103445780638da5cb5b1461036457600080fd5b80636c0db62b146102e057806370a08231146102f3578063715018a61461032957600080fd5b80633950935111610145578063461a44781161011f578063461a44781461027457806349d126051461028757806367e828bf1461029057600080fd5b8063395093511461020d5780633ab76e9f1461022057806342e91bb31461025f57600080fd5b806318160ddd1161017657806318160ddd146101d357806323b872dd146101e5578063313ce567146101f857600080fd5b806306fdde0314610192578063095ea7b3146101b0575b600080fd5b61019a61041c565b6040516101a79190611b2e565b60405180910390f35b6101c36101be366004611ba1565b6104ae565b60405190151581526020016101a7565b60cb545b6040519081526020016101a7565b6101c36101f3366004611bcd565b6104c6565b60ce5460405160ff90911681526020016101a7565b6101c361021b366004611ba1565b610546565b60975473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b61027261026d366004611ba1565b610592565b005b61023a610282366004611ce8565b6106aa565b6101d760fc5481565b6102b460fb5460fc5473ffffffffffffffffffffffffffffffffffffffff90911691565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6102726102ee366004611d1d565b6106bc565b6101d7610301366004611dc7565b73ffffffffffffffffffffffffffffffffffffffff16600090815260c9602052604090205490565b610272610921565b61027261033f366004611ba1565b610935565b60fb5461023a9073ffffffffffffffffffffffffffffffffffffffff1681565b60655473ffffffffffffffffffffffffffffffffffffffff1661023a565b61019a610a40565b6101c3610398366004611ba1565b610a4f565b6101c36103ab366004611ba1565b610b11565b6101d76103be366004611de4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260ca6020908152604080832093909416825291909152205490565b61023a610404366004611e1d565b610b8a565b610272610417366004611dc7565b610b96565b606060cc805461042b90611e64565b80601f016020809104026020016040519081016040528092919081815260200182805461045790611e64565b80156104a45780601f10610479576101008083540402835291602001916104a4565b820191906000526020600020905b81548152906001019060200180831161048757829003601f168201915b5050505050905090565b6000336104bc818585610c33565b5060019392505050565b600073ffffffffffffffffffffffffffffffffffffffff83163014156105335760405162461bcd60e51b815260206004820152600560248201527f42453a746f00000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61053e848484610db2565b949350505050565b33600081815260ca6020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104bc908290869061058d908790611ee7565b610c33565b6040518060400160405280600b81526020017f746f6b656e5f7661756c740000000000000000000000000000000000000000008152506105d1816106aa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461064b5760405162461bcd60e51b815260206004820152600960248201527f41523a64656e6965640000000000000000000000000000000000000000000000604482015260640161052a565b6106558383610dcb565b8273ffffffffffffffffffffffffffffffffffffffff167f397b33b307fc137878ebfc75b295289ec0ee25a31bb5bf034f33256fe8ea2aa68360405161069d91815260200190565b60405180910390a2505050565b60006106b64683610e89565b92915050565b600054610100900460ff16158080156106dc5750600054600160ff909116105b806106f65750303b1580156106f6575060005460ff166001145b6107685760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161052a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156107c657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff8616158015906107ea57508415155b80156107f65750468514155b8015610803575060008351115b8015610810575060008251115b61085c5760405162461bcd60e51b815260206004820152600960248201527f42453a706172616d730000000000000000000000000000000000000000000000604482015260640161052a565b61086587610f7a565b610870828486610f93565b60fb80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881617905560fc859055801561091857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610929611020565b6109336000611087565b565b6040518060400160405280600b81526020017f746f6b656e5f7661756c74000000000000000000000000000000000000000000815250610974816106aa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109ee5760405162461bcd60e51b815260206004820152600960248201527f41523a64656e6965640000000000000000000000000000000000000000000000604482015260640161052a565b6109f883836110fe565b8273ffffffffffffffffffffffffffffffffffffffff167f9b5b9a05e4726d8bb959f1440e05c6b8109443f2083bc4e386237d76545265538360405161069d91815260200190565b606060cd805461042b90611e64565b33600081815260ca6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610af95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161052a565b610b068286868403610c33565b506001949350505050565b600073ffffffffffffffffffffffffffffffffffffffff8316301415610b795760405162461bcd60e51b815260206004820152600560248201527f42453a746f000000000000000000000000000000000000000000000000000000604482015260640161052a565b610b83838361126f565b9392505050565b6000610b838383610e89565b610b9e611020565b73ffffffffffffffffffffffffffffffffffffffff8116610c275760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161052a565b610c3081611087565b50565b73ffffffffffffffffffffffffffffffffffffffff8316610cbb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8216610d445760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600033610dc085828561127d565b610b0685858561133a565b73ffffffffffffffffffffffffffffffffffffffff8216610e2e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161052a565b8060cb6000828254610e409190611ee7565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260c9602052604081208054839290610e7a908490611ee7565b90915550610e859050565b5050565b600080610e958461159f565b83604051602001610ea7929190611eff565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526097547fbf40fac100000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff169063bf40fac190610f2a908490600401611b2e565b60206040518083038186803b158015610f4257600080fd5b505afa158015610f56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053e9190611f57565b610f826116d1565b610f8a611756565b610c30816117db565b600054610100900460ff166110105760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161052a565b61101b838383611885565b505050565b60655473ffffffffffffffffffffffffffffffffffffffff1633146109335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052a565b6065805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff82166111875760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260c96020526040902054818110156112235760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260c960205260408120838303905560cb805484929061125f908490611f74565b9091555061101b90508360008483565b6000336104bc81858561133a565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260ca60209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461133457818110156113275760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161052a565b6113348484848403610c33565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166113c35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff821661144c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260c96020526040902054818110156114e85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260c9602052604080822085850390559185168152908120805484929061152c908490611ee7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161159291815260200190565b60405180910390a3611334565b6060816115df57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561160957806115f381611f8b565b91506116029050600a83611ff3565b91506115e3565b60008167ffffffffffffffff81111561162457611624611c0e565b6040519080825280601f01601f19166020018201604052801561164e576020820181803683370190505b5090505b841561053e57611663600183611f74565b9150611670600a86612007565b61167b906030611ee7565b60f81b8183815181106116905761169061201b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506116ca600a86611ff3565b9450611652565b600054610100900460ff1661174e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161052a565b610933611960565b600054610100900460ff166117d35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161052a565b6109336119e3565b73ffffffffffffffffffffffffffffffffffffffff811661183e5760405162461bcd60e51b815260206004820152600e60248201527f41523a7a65726f41646472657373000000000000000000000000000000000000604482015260640161052a565b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900460ff166119025760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161052a565b82516119159060cc906020860190611a69565b5081516119299060cd906020850190611a69565b5060ce80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff929092169190911790555050565b600054610100900460ff166119dd5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161052a565b60018055565b600054610100900460ff16611a605760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161052a565b61093333611087565b828054611a7590611e64565b90600052602060002090601f016020900481019282611a975760008555611add565b82601f10611ab057805160ff1916838001178555611add565b82800160010185558215611add579182015b82811115611add578251825591602001919060010190611ac2565b50611ae9929150611aed565b5090565b5b80821115611ae95760008155600101611aee565b60005b83811015611b1d578181015183820152602001611b05565b838111156113345750506000910152565b6020815260008251806020840152611b4d816040850160208701611b02565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610c3057600080fd5b60008060408385031215611bb457600080fd5b8235611bbf81611b7f565b946020939093013593505050565b600080600060608486031215611be257600080fd5b8335611bed81611b7f565b92506020840135611bfd81611b7f565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611c4e57600080fd5b813567ffffffffffffffff80821115611c6957611c69611c0e565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611caf57611caf611c0e565b81604052838152866020858801011115611cc857600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215611cfa57600080fd5b813567ffffffffffffffff811115611d1157600080fd5b61053e84828501611c3d565b60008060008060008060c08789031215611d3657600080fd5b8635611d4181611b7f565b95506020870135611d5181611b7f565b945060408701359350606087013560ff81168114611d6e57600080fd5b9250608087013567ffffffffffffffff80821115611d8b57600080fd5b611d978a838b01611c3d565b935060a0890135915080821115611dad57600080fd5b50611dba89828a01611c3d565b9150509295509295509295565b600060208284031215611dd957600080fd5b8135610b8381611b7f565b60008060408385031215611df757600080fd5b8235611e0281611b7f565b91506020830135611e1281611b7f565b809150509250929050565b60008060408385031215611e3057600080fd5b82359150602083013567ffffffffffffffff811115611e4e57600080fd5b611e5a85828601611c3d565b9150509250929050565b600181811c90821680611e7857607f821691505b60208210811415611eb2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611efa57611efa611eb8565b500190565b60008351611f11818460208801611b02565b7f2e000000000000000000000000000000000000000000000000000000000000009083019081528351611f4b816001840160208801611b02565b01600101949350505050565b600060208284031215611f6957600080fd5b8151610b8381611b7f565b600082821015611f8657611f86611eb8565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611fbd57611fbd611eb8565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261200257612002611fc4565b500490565b60008261201657612016611fc4565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220bfb915fd27fef7a29a63cc56d7e2036f13d6e4de66f1c0813f470772de08b30564736f6c63430008090033a2646970667358221220b6af7ba722c604eef2157bac87e0db0f770f34310dfd7dc2c7d309ffb509468c64736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000003": { ++ "contractName": "EtherVault", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006", ++ "0x029ae2e2f1d6964720a0fa7e6ffa902f995c156242f4f5a930aa9d9765d167d0": "0x0000000000000000000000000000000000000000000000000000000000000001" ++ }, ++ "code": "0x6080604052600436106100b55760003560e01c8063715018a611610069578063f16c79341161004e578063f16c79341461023f578063f2fde38b1461025f578063fe9fbb801461027f57600080fd5b8063715018a6146101ff5780638da5cb5b1461021457600080fd5b80632d1fb3891161009a5780632d1fb3891461016e5780633ab76e9f1461018e578063461a4478146101df57600080fd5b806319ab453c1461012e5780631efa4ec01461014e57600080fd5b36610129574715806100d6575033600090815260c9602052604090205460ff165b6101275760405162461bcd60e51b815260206004820152600960248201527f45563a64656e696564000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b34801561013a57600080fd5b50610127610149366004610dd8565b6102d5565b34801561015a57600080fd5b50610127610169366004610df5565b61044f565b34801561017a57600080fd5b50610127610189366004610e0e565b610517565b34801561019a57600080fd5b5060975473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101eb57600080fd5b506101b56101fa366004610f26565b610646565b34801561020b57600080fd5b50610127610658565b34801561022057600080fd5b5060655473ffffffffffffffffffffffffffffffffffffffff166101b5565b34801561024b57600080fd5b506101b561025a366004610f5b565b61066c565b34801561026b57600080fd5b5061012761027a366004610dd8565b61067f565b34801561028b57600080fd5b506102c561029a366004610dd8565b73ffffffffffffffffffffffffffffffffffffffff16600090815260c9602052604090205460ff1690565b60405190151581526020016101d6565b600054610100900460ff16158080156102f55750600054600160ff909116105b8061030f5750303b15801561030f575060005460ff166001145b6103815760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161011e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156103df57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6103e88261071c565b801561044b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600090815260c9602052604090205460ff166104ae5760405162461bcd60e51b815260206004820152600960248201527f45563a64656e6965640000000000000000000000000000000000000000000000604482015260640161011e565b600260015414156105015760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161011e565b60026001556105103382610735565b5060018055565b61051f6107f0565b73ffffffffffffffffffffffffffffffffffffffff821615801590610570575073ffffffffffffffffffffffffffffffffffffffff8216600090815260c9602052604090205460ff16151581151514155b6105bc5760405162461bcd60e51b815260206004820152600860248201527f45563a706172616d000000000000000000000000000000000000000000000000604482015260640161011e565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260c9602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b60006106524683610857565b92915050565b6106606107f0565b61066a6000610950565b565b60006106788383610857565b9392505050565b6106876107f0565b73ffffffffffffffffffffffffffffffffffffffff81166107105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161011e565b61071981610950565b50565b6107246109c7565b61072c610a4c565b61071981610ad1565b801561044b5760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610795576040519150601f19603f3d011682016040523d82523d6000602084013e61079a565b606091505b50509050806107eb5760405162461bcd60e51b815260206004820152601360248201527f455448207472616e73666572206661696c656400000000000000000000000000604482015260640161011e565b505050565b60655473ffffffffffffffffffffffffffffffffffffffff16331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161011e565b60008061086384610b7b565b83604051602001610875929190610fd2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526097547fbf40fac100000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff169063bf40fac1906108f890849060040161102a565b60206040518083038186803b15801561091057600080fd5b505afa158015610924573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610948919061107b565b949350505050565b6065805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610a445760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161011e565b61066a610cad565b600054610100900460ff16610ac95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161011e565b61066a610d30565b73ffffffffffffffffffffffffffffffffffffffff8116610b345760405162461bcd60e51b815260206004820152600e60248201527f41523a7a65726f41646472657373000000000000000000000000000000000000604482015260640161011e565b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606081610bbb57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610be55780610bcf816110c7565b9150610bde9050600a8361112f565b9150610bbf565b60008167ffffffffffffffff811115610c0057610c00610e4c565b6040519080825280601f01601f191660200182016040528015610c2a576020820181803683370190505b5090505b841561094857610c3f600183611143565b9150610c4c600a8661115a565b610c5790603061116e565b60f81b818381518110610c6c57610c6c611186565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610ca6600a8661112f565b9450610c2e565b600054610100900460ff16610d2a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161011e565b60018055565b600054610100900460ff16610dad5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161011e565b61066a33610950565b73ffffffffffffffffffffffffffffffffffffffff8116811461071957600080fd5b600060208284031215610dea57600080fd5b813561067881610db6565b600060208284031215610e0757600080fd5b5035919050565b60008060408385031215610e2157600080fd5b8235610e2c81610db6565b915060208301358015158114610e4157600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610e8c57600080fd5b813567ffffffffffffffff80821115610ea757610ea7610e4c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610eed57610eed610e4c565b81604052838152866020858801011115610f0657600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215610f3857600080fd5b813567ffffffffffffffff811115610f4f57600080fd5b61094884828501610e7b565b60008060408385031215610f6e57600080fd5b82359150602083013567ffffffffffffffff811115610f8c57600080fd5b610f9885828601610e7b565b9150509250929050565b60005b83811015610fbd578181015183820152602001610fa5565b83811115610fcc576000848401525b50505050565b60008351610fe4818460208801610fa2565b7f2e00000000000000000000000000000000000000000000000000000000000000908301908152835161101e816001840160208801610fa2565b01600101949350505050565b6020815260008251806020840152611049816040850160208701610fa2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60006020828403121561108d57600080fd5b815161067881610db6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156110f9576110f9611098565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261113e5761113e611100565b500490565b60008282101561115557611155611098565b500390565b60008261116957611169611100565b500690565b6000821982111561118157611181611098565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220425c47272987a752e95e0d9aefe995c7647e5cc27314542edeefb60d9435c89664736f6c63430008090033", ++ "balance": "0xfffffffffffffacbbb7ca13a7fffffff" ++ }, ++ "0x0000777700000000000000000000000000000005": { ++ "contractName": "TestERC20", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000003": "0x5072656465706c6f79455243323000000000000000000000000000000000001c", ++ "0x0000000000000000000000000000000000000000000000000000000000000004": "0x5052450000000000000000000000000000000000000000000000000000000006", ++ "0x0000000000000000000000000000000000000000000000000000000000000002": "0x0000000000000000000000000000000000000000000000000000000001770000", ++ "0x1fe6b582a6b4d9b61da9024a045cb9bafc343b4b12713ba001e47b3500867413": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x9676269451a315b0ded689bad1200ec6dbf3f9700303561ec5066eb95587cfd5": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x8a3e7888889808647be35f285cf7b4bb11d2d84f970c99274b7baabf9e752d18": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x615c0001b04b13045538ef103e675d8380fb9b34666c53e4e4b91b794062a885": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x673de83553dc3a2c0f59aa7193de392a4530feb73b9d6cd4fcef68802b8195c1": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x6d5faa5f4e671e6fe47b0eab51c62f8cebf354e21e8fdccf8cdfc0293dd341a3": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x352c3281a58937f04ef7cc7b88f3456b6ffd47f52a321c253dc083fb53a3a114": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x4663d660b5d810c9ab2f6dc64af7ff84ebae28a72342391622649a7fe87c93d4": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x271927a243b678b7a071f19b4051ef93b16e397066e3fdef5bba26527e34a1a1": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x1c7a29f5a750951acb14fdf82a876085914eb17f15a162b054a3d2f8c92e2451": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x3836a017087644fbf6925ae1aca14201ce898a35434d9dea9ebd03cea44e049a": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x2fe2844d12634f5dce1e2be5be96b2ea1c573f8f25171997e2f4bd943dd32f92": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x6a3bb1dada7c82a99b4a02d16da3fda07cb31d8887b9b99ec829ab67fd7a817e": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x454340b1295f9ff1c0fb9192166d0215d33f84dc5f2dc3f3e5732a4b557186bf": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0xdb302bf24b1ad5f23949da8e6b05747dc699499a995361a7bf40ec7204696d6f": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x6e3431b4e42570cb9e3d926eb26f9e54de2df536ae0741ae16350d17a6c16ddc": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x18bbf5fcf8fe870ecff419c4677497c08b2e6a5431bb94541d06c9da3f308e55": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x7fcecd2a720442e9bc0cf1a8a6976f9fbddf6b996dc0d78af7e94dadf360d579": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x2a95ee547cef07a2fff0a68144824a0d9ded35ed87da118a53e1cda4aca8b944": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x6d1035fce6503985ab075a4ff3f7ce2e57cd5a9c5e6a0589dccacfea7bcb0af4": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x215be5d23550ceb1beff54fb579a765903ba2ccc85b6f79bcf9bda4e8cb86034": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x14e04a66bf74771820a7400ff6cf065175b3d7eb25805a5bd1633b161af5d101": "0x00000000000000000000000000000000000000000000000000000000000fa000", ++ "0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722": "0x00000000000000000000000000000000000000000000000000000000000fa000" ++ }, ++ "code": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094a565b60405180910390f35b6100ff6100fa3660046109e6565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f366004610a10565b6102aa565b604051601281526020016100e3565b6100ff6101513660046109e6565b6102ce565b610113610164366004610a4c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031a565b6100ff6101a23660046109e6565b610329565b6100ff6101b53660046109e6565b6103ff565b6101136101c8366004610a6e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610aa1565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040d565b5060019392505050565b6000336102b88582856105c0565b6102c3858585610697565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610315908790610af5565b61040d565b60606004805461020f90610aa1565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c3828686840361040d565b6000336102a0818585610697565b73ffffffffffffffffffffffffffffffffffffffff83166104af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8216610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106915781811015610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e9565b610691848484840361040d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff82166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906108d7908490610af5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093d91815260200190565b60405180910390a3610691565b600060208083528351808285015260005b818110156109775785810183015185820160400152820161095b565b81811115610989576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109e157600080fd5b919050565b600080604083850312156109f957600080fd5b610a02836109bd565b946020939093013593505050565b600080600060608486031215610a2557600080fd5b610a2e846109bd565b9250610a3c602085016109bd565b9150604084013590509250925092565b600060208284031215610a5e57600080fd5b610a67826109bd565b9392505050565b60008060408385031215610a8157600080fd5b610a8a836109bd565b9150610a98602084016109bd565b90509250929050565b600181811c90821680610ab557607f821691505b60208210811415610aef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610b2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea2646970667358221220390ab46a2b26ee0e645275c49ff741c2587e86f329e50575d8af96f2092fa0dd64736f6c63430008090033", ++ "balance": "0x0" ++ } ++}
+
+ + +
+ + +
+
+
+ + (new) + +
+ + +
+
+ +
+ +
+
+98
+
-0
+
+ +
+
+
diff --git ethereum/go-ethereum/core/taiko_genesis/snæfellsjökull.json taikoxyz/taiko-geth/core/taiko_genesis/snæfellsjökull.json +new file mode 100644 +index 0000000000000000000000000000000000000000..01ce4e45c7d785d860e9e73a0645ac95da4d1729 +--- /dev/null ++++ taikoxyz/taiko-geth/core/taiko_genesis/snæfellsjökull.json +@@ -0,0 +1,98 @@ ++{ ++ "0x26250179C8e8E12104e556C4Cd03bCF4dabd51b9": { ++ "balance": "0xfffffffffffffacbbb7ca13a7fffffff" ++ }, ++ "0x9D716db5fF59f8dd903D44a56C41BcbE99bA666c": { ++ "balance": "0xfffffffffffffacbbb7ca13a7fffffff" ++ }, ++ "0x11f080128e565c07caD6fF7ADbb50Be1f62B84DB": { ++ "balance": "0xfffffffffffffacbbb7ca13a7fffffff" ++ }, ++ "0x617138FAdFEeE2E57f87cCba7dd6D6902aB0427d": { ++ "balance": "0xfffffffffffffacbbb7ca13a7fffffff" ++ }, ++ "0x5fa99CB8C2201B2a8CFfe2edfbF11ed6B78cb069": { ++ "balance": "0x8ac7230489e80000" ++ }, ++ "0xC5d653E17c24928B788a17838F11d2AcF0c922A3": { ++ "contractName": "LibTrieProof", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063960304391461003a575b600080fd5b61004d6100483660046119a5565b61004f565b005b60008061005e83850185611b39565b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608b901b166020820152919350915060009081906100b490603401604051602081830303815290604052858c6101d3565b915091508161010a5760405162461bcd60e51b815260206004820152601960248201527f4c54503a696e76616c6964206163636f756e742070726f6f660000000000000060448201526064015b60405180910390fd5b6000610115826101fc565b9050600061013c8260028151811061012f5761012f611b9d565b6020026020010151610235565b905060006101758b60405160200161015691815260200190565b60405160208183030381529060405261016e8c610338565b888561034b565b9050806101c45760405162461bcd60e51b815260206004820152601960248201527f4c54503a696e76616c69642073746f726167652070726f6f66000000000000006044820152606401610101565b50505050505050505050505050565b6000606060006101e286610365565b90506101ef818686610397565b9250925050935093915050565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061022f90610472565b92915050565b600060218260000151111561028c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610101565b600080600061029a85610671565b9194509250905060008160018111156102b5576102b5611bcc565b146103025760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610101565b60008386602001516103149190611c2a565b8051909150602084101561032e5760208490036101000a90045b9695505050505050565b606061022f610346836109c2565b610b2d565b60008061035786610365565b905061032e81868686610b9c565b6060818051906020012060405160200161038191815260200190565b6040516020818303038152906040529050919050565b6000606060006103a685610bd9565b905060008060006103b8848a89610cd4565b815192955090935091501580806103cc5750815b6104185760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610101565b6000816104345760405180602001604052806000815250610460565b61046086610443600188611c42565b8151811061045357610453611b9d565b602002602001015161116f565b919b919a509098505050505050505050565b606060008061048084610671565b9193509091506001905081600181111561049c5761049c611bcc565b146104e95760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610101565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816105025790505090506000835b865181101561066657602082106105ae5760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201527f7374206c656e6774682e000000000000000000000000000000000000000000006064820152608401610101565b6000806105eb6040518060400160405280858c600001516105cf9190611c42565b8152602001858c602001516105e49190611c2a565b9052610671565b5091509150604051806040016040528083836106079190611c2a565b8152602001848b6020015161061c9190611c2a565b81525085858151811061063157610631611b9d565b6020908102919091010152610647600185611c2a565b93506106538183611c2a565b61065d9084611c2a565b9250505061052f565b508152949350505050565b6000806000808460000151116106c95760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610101565b6020840151805160001a607f81116106ee5760006001600094509450945050506109bb565b60b7811161076a576000610703608083611c42565b9050808760000151116107585760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610101565b600195509350600092506109bb915050565b60bf811161085957600061077f60b783611c42565b9050808760000151116107d45760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610101565b600183015160208290036101000a90046107ee8183611c2a565b88511161083d5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610101565b610848826001611c2a565b96509450600093506109bb92505050565b60f781116108d457600061086e60c083611c42565b9050808760000151116108c35760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610101565b6001955093508492506109bb915050565b60006108e160f783611c42565b9050808760000151116109365760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610101565b600183015160208290036101000a90046109508183611c2a565b88511161099f5760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420524c50206c6f6e67206c6973742e000000000000000000006044820152606401610101565b6109aa826001611c2a565b96509450600193506109bb92505050565b9193909250565b60606000826040516020016109d991815260200190565b604051602081830303815290604052905060005b6020811015610a4b57818181518110610a0857610a08611b9d565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615610a3957610a4b565b80610a4381611c59565b9150506109ed565b6000610a58826020611c42565b67ffffffffffffffff811115610a7057610a70611a5f565b6040519080825280601f01601f191660200182016040528015610a9a576020820181803683370190505b50905060005b8151811015610b24578383610ab481611c59565b945081518110610ac657610ac6611b9d565b602001015160f81c60f81b828281518110610ae357610ae3611b9d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080610b1c81611c59565b915050610aa0565b50949350505050565b60608082516001148015610b5b5750608083600081518110610b5157610b51611b9d565b016020015160f81c105b15610b6757508161022f565b610b7383516080611199565b83604051602001610b85929190611ccd565b604051602081830303815290604052905092915050565b6000806000610bac878686610397565b91509150818015610bce57508051602080830191909120875191880191909120145b979650505050505050565b60606000610be6836101fc565b90506000815167ffffffffffffffff811115610c0457610c04611a5f565b604051908082528060200260200182016040528015610c4957816020015b6040805180820190915260608082526020820152815260200190600190039081610c225790505b50905060005b8251811015610ccc576000610c7c848381518110610c6f57610c6f611b9d565b6020026020010151611390565b90506040518060400160405280828152602001610c98836101fc565b815250838381518110610cad57610cad611b9d565b6020026020010181905250508080610cc490611c59565b915050610c4f565b509392505050565b60006060818080610ce487611420565b90506000869050600080610d0b604051806040016040528060608152602001606081525090565b60005b8c5181101561112b578c8181518110610d2957610d29611b9d565b602002602001015191508284610d3f9190611c2a565b9350610d4c600188611c2a565b965083610db057815180516020909101208514610dab5760405162461bcd60e51b815260206004820152601160248201527f496e76616c696420726f6f7420686173680000000000000000000000000000006044820152606401610101565b610e6d565b815151602011610e1257815180516020909101208514610dab5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610101565b84610e2083600001516115a3565b14610e6d5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610101565b610e7960106001611c2a565b8260200151511415610ef2578551841415610e935761112b565b6000868581518110610ea757610ea7611b9d565b602001015160f81c60f81b60f81c9050600083602001518260ff1681518110610ed257610ed2611b9d565b60200260200101519050610ee5816115cb565b9650600194505050611119565b600282602001515114156110d1576000610f0b83611601565b9050600081600081518110610f2257610f22611b9d565b016020015160f81c90506000610f39600283611d19565b610f44906002611d3b565b90506000610f55848360ff16611625565b90506000610f638b8a611625565b90506000610f71838361165b565b905060ff851660021480610f88575060ff85166003145b15610fde57808351148015610f9d5750808251145b15610faf57610fac818b611c2a565b99505b507f8000000000000000000000000000000000000000000000000000000000000000995061112b945050505050565b60ff85161580610ff1575060ff85166001145b15611063578251811461102d57507f8000000000000000000000000000000000000000000000000000000000000000995061112b945050505050565b611054886020015160018151811061104757611047611b9d565b60200260200101516115cb565b9a509750611119945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e2060448201527f70726566697800000000000000000000000000000000000000000000000000006064820152608401610101565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610101565b8061112381611c59565b915050610d0e565b507f800000000000000000000000000000000000000000000000000000000000000084148661115a8786611625565b909e909d50909b509950505050505050505050565b6020810151805160609161022f9161118990600190611c42565b81518110610c6f57610c6f611b9d565b606080603884101561121857604080516001808252818301909252906020820181803683370190505090506111ce8385611d5e565b60f81b816000815181106111e4576111e4611b9d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611389565b600060015b6112278187611d83565b1561124d578161123681611c59565b9250611246905061010082611d97565b905061121d565b611258826001611c2a565b67ffffffffffffffff81111561127057611270611a5f565b6040519080825280601f01601f19166020018201604052801561129a576020820181803683370190505b5092506112a78583611d5e565b6112b2906037611d5e565b60f81b836000815181106112c8576112c8611b9d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b818111611386576101006113108284611c42565b61131c90610100611ef4565b6113269088611d83565b6113309190611f00565b60f81b83828151811061134557611345611b9d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061137e81611c59565b9150506112fc565b50505b9392505050565b606060008060006113a085610671565b9194509250905060008160018111156113bb576113bb611bcc565b146114085760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610101565b61141785602001518484611707565b95945050505050565b60606000825160026114329190611d97565b67ffffffffffffffff81111561144a5761144a611a5f565b6040519080825280601f01601f191660200182016040528015611474576020820181803683370190505b50905060005b835181101561159c57600484828151811061149757611497611b9d565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c826114cc836002611d97565b815181106114dc576114dc611b9d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350601084828151811061151f5761151f611b9d565b0160200151611531919060f81c611d19565b60f81b82611540836002611d97565b61154b906001611c2a565b8151811061155b5761155b611b9d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061159481611c59565b91505061147a565b5092915050565b60006020825110156115b757506020015190565b8180602001905181019061022f9190611f14565b600060606020836000015110156115ec576115e5836117e6565b90506115f8565b6115f583611390565b90505b611389816115a3565b606061022f6116208360200151600081518110610c6f57610c6f611b9d565b611420565b606082518210611644575060408051602081019091526000815261022f565b61138983838486516116569190611c42565b6117f1565b6000805b80845111801561166f5750808351115b80156116f0575082818151811061168857611688611b9d565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181106116c7576116c7611b9d565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b1561138957806116ff81611c59565b91505061165f565b606060008267ffffffffffffffff81111561172457611724611a5f565b6040519080825280601f01601f19166020018201604052801561174e576020820181803683370190505b509050805160001415611762579050611389565b600061176e8587611c2a565b90506020820160005b611782602087611d83565b8110156117b95782518252611798602084611c2a565b92506117a5602083611c2a565b9150806117b181611c59565b915050611777565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b606061022f8261198f565b6060816117ff81601f611c2a565b101561184d5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610101565b826118588382611c2a565b10156118a65760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610101565b6118b08284611c2a565b845110156119005760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610101565b60608215801561191f5760405191506000825260208201604052610b24565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611958578051835260209283019201611940565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166040525050949350505050565b606061022f826020015160008460000151611707565b60008060008060008060a087890312156119be57600080fd5b86359550602087013573ffffffffffffffffffffffffffffffffffffffff811681146119e957600080fd5b94506040870135935060608701359250608087013567ffffffffffffffff80821115611a1457600080fd5b818901915089601f830112611a2857600080fd5b813581811115611a3757600080fd5b8a6020828501011115611a4957600080fd5b6020830194508093505050509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611a9f57600080fd5b813567ffffffffffffffff80821115611aba57611aba611a5f565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611b0057611b00611a5f565b81604052838152866020858801011115611b1957600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215611b4c57600080fd5b823567ffffffffffffffff80821115611b6457600080fd5b611b7086838701611a8e565b93506020850135915080821115611b8657600080fd5b50611b9385828601611a8e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611c3d57611c3d611bfb565b500190565b600082821015611c5457611c54611bfb565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611c8b57611c8b611bfb565b5060010190565b6000815160005b81811015611cb35760208185018101518683015201611c99565b81811115611cc2576000828601525b509290920192915050565b6000611ce2611cdc8386611c92565b84611c92565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600060ff831680611d2c57611d2c611cea565b8060ff84160691505092915050565b600060ff821660ff841680821015611d5557611d55611bfb565b90039392505050565b600060ff821660ff84168060ff03821115611d7b57611d7b611bfb565b019392505050565b600082611d9257611d92611cea565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611dcf57611dcf611bfb565b500290565b600181815b80851115611e2d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611e1357611e13611bfb565b80851615611e2057918102915b93841c9390800290611dd9565b509250929050565b600082611e445750600161022f565b81611e515750600061022f565b8160018114611e675760028114611e7157611e8d565b600191505061022f565b60ff841115611e8257611e82611bfb565b50506001821b61022f565b5060208310610133831016604e8410600b8410161715611eb0575081810a61022f565b611eba8383611dd4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611eec57611eec611bfb565b029392505050565b60006113898383611e35565b600082611f0f57611f0f611cea565b500690565b600060208284031215611f2657600080fd5b505191905056fea2646970667358221220f7f04c88df651530a5c547edaa8d0ac57b5adf851950adbf06f8245338f8d71564736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0x8A9E82Ebf0E219BBdB4fBBd50FEd45d098a8Ba1e": { ++ "contractName": "LibBridgeRetry", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c806346eb9db51461003a575b600080fd5b81801561004657600080fd5b5061005a6100553660046107f9565b61005c565b005b610140820135158061006b5750805b156101195761008060a0830160808401610880565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f423a64656e69656400000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600061012c610127846109a8565b610432565b90506001600082815260018701602052604090205460ff16600381111561015557610155610aaa565b146101bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f423a6e6f74466f756e64000000000000000000000000000000000000000000006044820152606401610110565b6040517f461a447800000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f65746865725f7661756c74000000000000000000000000000000000000000000604482015260009073ffffffffffffffffffffffffffffffffffffffff86169063461a44789060640160206040518083038186803b15801561025257600080fd5b505afa158015610266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028a9190610ad9565b905073ffffffffffffffffffffffffffffffffffffffff81161561032d576040517f1efa4ec0000000000000000000000000000000000000000000000000000000008152610100850135600482015273ffffffffffffffffffffffffffffffffffffffff821690631efa4ec090602401600060405180830381600087803b15801561031457600080fd5b505af1158015610328573d6000803e3d6000fd5b505050505b6103418661033a866109a8565b845a610462565b156103575761035286836002610634565b61042a565b82156103e95761036986836003610634565b60008061037c60e0870160c08801610880565b73ffffffffffffffffffffffffffffffffffffffff16146103ac576103a760e0860160c08701610880565b6103bc565b6103bc60a0860160808701610880565b90506103e373ffffffffffffffffffffffffffffffffffffffff8216610100870135610700565b5061042a565b73ffffffffffffffffffffffffffffffffffffffff81161561042a5761042a73ffffffffffffffffffffffffffffffffffffffff8216610100860135610700565b505050505050565b6000816040516020016104459190610b70565b604051602081830303815290604052805190602001209050919050565b60008082116104cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f423a6761734c696d6974000000000000000000000000000000000000000000006044820152606401610110565b6040805160608101825284815260208681015173ffffffffffffffffffffffffffffffffffffffff90811691830182905287840151928401839052600389018790556004890180547fffffffffffffffffffffffff000000000000000000000000000000000000000016909217909155600588019190915560a08601516101008701516101608801519351919092169285929161056a9190610d04565b600060405180830381858888f193505050503d80600081146105a8576040519150601f19603f3d011682016040523d82523d6000602084013e6105ad565b606091505b5050604080516060810182526001808252602082018190527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91909201819052600388018290556004880180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560059096019590955550929392505050565b80600381111561064657610646610aaa565b600083815260018501602052604090205460ff16600381111561066b5761066b610aaa565b146106fb57600082815260018085016020526040909120805483927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116908360038111156106bd576106bd610aaa565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516106f29190610d20565b60405180910390a25b505050565b80156107d05760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610760576040519150601f19603f3d011682016040523d82523d6000602084013e610765565b606091505b50509050806106fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f455448207472616e73666572206661696c6564000000000000000000000000006044820152606401610110565b5050565b73ffffffffffffffffffffffffffffffffffffffff811681146107f657600080fd5b50565b6000806000806080858703121561080f57600080fd5b843593506020850135610821816107d4565b9250604085013567ffffffffffffffff81111561083d57600080fd5b85016101a0818803121561085057600080fd5b91506060850135801515811461086557600080fd5b939692955090935050565b803561087b816107d4565b919050565b60006020828403121561089257600080fd5b813561089d816107d4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff811182821017156108f7576108f76108a4565b60405290565b600082601f83011261090e57600080fd5b813567ffffffffffffffff80821115610929576109296108a4565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561096f5761096f6108a4565b8160405283815286602085880101111561098857600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006101a082360312156109bb57600080fd5b6109c36108d3565b823581526109d360208401610870565b602082015260408301356040820152606083013560608201526109f860808401610870565b6080820152610a0960a08401610870565b60a0820152610a1a60c08401610870565b60c082015260e083810135908201526101008084013590820152610120808401359082015261014080840135908201526101608084013567ffffffffffffffff80821115610a6757600080fd5b610a73368388016108fd565b83850152610180925082860135915080821115610a8f57600080fd5b50610a9c368287016108fd565b918301919091525092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215610aeb57600080fd5b815161089d816107d4565b60005b83811015610b11578181015183820152602001610af9565b83811115610b20576000848401525b50505050565b60008151808452610b3e816020860160208601610af6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60408152601460408201527f5441494b4f5f4252494447455f4d4553534147450000000000000000000000006060820152608060208201528151608082015260006020830151610bd860a084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015160c0830152606083015160e08301526080830151610100610c168185018373ffffffffffffffffffffffffffffffffffffffff169052565b60a08501519150610120610c418186018473ffffffffffffffffffffffffffffffffffffffff169052565b60c08601519250610140610c6c8187018573ffffffffffffffffffffffffffffffffffffffff169052565b60e0870151610160878101919091529287015161018080880191909152918701516101a080880191909152908701516101c0870152918601516101e0860192909252909150610cbf610220850183610b26565b908501518482037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8001610200860152909150610cfb8282610b26565b95945050505050565b60008251610d16818460208701610af6565b9190910192915050565b6020810160048310610d5b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9190529056fea2646970667358221220ef77fa8abe15893a91d42d96908d637a4ee0724e51d926aff79565effe20a22c64736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0xf7c52068c40213E7C49313B0d6FCc11Cb2C45dbF": { ++ "contractName": "LibBridgeProcess", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063c0249e2d1461003a575b600080fd5b81801561004657600080fd5b5061005a6100553660046119c3565b61005c565b005b61014083013561010f5761007660a0840160808501611a8d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461010f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f423a666f7262696464656e00000000000000000000000000000000000000000060448201526064015b60405180910390fd5b4683606001351461017c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f423a64657374436861696e4964000000000000000000000000000000000000006044820152606401610106565b600061018f61018a85611bf5565b61073d565b905060008082815260018801602052604090205460ff1660038111156101b7576101b7611cf7565b1461021e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f423a7374617475730000000000000000000000000000000000000000000000006044820152606401610106565b604080517ff16c79340000000000000000000000000000000000000000000000000000000081528186013560048201526024810191909152600660448201527f6272696467650000000000000000000000000000000000000000000000000000606482015260009073ffffffffffffffffffffffffffffffffffffffff87169063f16c79349060840160206040518083038186803b1580156102bf57600080fd5b505afa1580156102d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f79190611d26565b905061030786828385888861076d565b61036d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f423a6e6f745265636569766564000000000000000000000000000000000000006044820152606401610106565b6040517f461a447800000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f65746865725f7661756c74000000000000000000000000000000000000000000604482015260009073ffffffffffffffffffffffffffffffffffffffff88169063461a44789060640160206040518083038186803b15801561040357600080fd5b505afa158015610417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043b9190611d26565b905073ffffffffffffffffffffffffffffffffffffffff8116156104e95773ffffffffffffffffffffffffffffffffffffffff8116631efa4ec061012088013561048e6101008a013560e08b0135611d72565b6104989190611d72565b6040518263ffffffff1660e01b81526004016104b691815260200190565b600060405180830381600087803b1580156104d057600080fd5b505af11580156104e4573d6000803e3d6000fd5b505050505b61051d60e087013561050160a0890160808a01611a8d565b73ffffffffffffffffffffffffffffffffffffffff1690610b33565b6000803061053160c08a0160a08b01611a8d565b73ffffffffffffffffffffffffffffffffffffffff1614806105785750600061056060c08a0160a08b01611a8d565b73ffffffffffffffffffffffffffffffffffffffff16145b1561058d57506002905061010087013561064f565b600061059f60a08a0160808b01611a8d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105dc578861014001356105de565b5a5b905060006105f68c6105ef8c611bf5565b8985610c09565b90508015610607576002935061064c565b6001935073ffffffffffffffffffffffffffffffffffffffff85161561064c5761064c73ffffffffffffffffffffffffffffffffffffffff86166101008c0135610b33565b50505b61065a8a8684610dbd565b60008061066d60e08b0160c08c01611a8d565b73ffffffffffffffffffffffffffffffffffffffff161461069d5761069860e08a0160c08b01611a8d565b6106ad565b6106ad60a08a0160808b01611a8d565b90503373ffffffffffffffffffffffffffffffffffffffff82161415610701576106fc6106df6101208b013584611d72565b73ffffffffffffffffffffffffffffffffffffffff831690610b33565b610730565b610710336101208b0135610b33565b61073073ffffffffffffffffffffffffffffffffffffffff821683610b33565b5050505050505050505050565b6000816040516020016107509190611e04565b604051602081830303815290604052805190602001209050919050565b6000848473ffffffffffffffffffffffffffffffffffffffff82166107ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f423a73656e6465720000000000000000000000000000000000000000000000006044820152606401610106565b80610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f423a7369676e616c0000000000000000000000000000000000000000000000006044820152606401610106565b73ffffffffffffffffffffffffffffffffffffffff88166108d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f423a7372634272696467650000000000000000000000000000000000000000006044820152606401610106565b60006108e08587018761203e565b905073C5d653E17c24928B788a17838F11d2AcF0c922A363960304398260000151606001518b6109108c8c610e88565b60208601516040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152610953949392916001916004016121d7565b60006040518083038186803b15801561096b57600080fd5b505af415801561097f573d6000803e3d6000fd5b50506040517f461a447800000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f7461696b6f00000000000000000000000000000000000000000000000000000060448201526000925073ffffffffffffffffffffffffffffffffffffffff8d16915063461a44789060640160206040518083038186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a519190611d26565b825161010001516040517f25bf86f20000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff91909116906325bf86f29060240160206040518083038186803b158015610ad257600080fd5b505afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190612223565b90508015801590610b2457508151610b2190610ee3565b81145b9b9a5050505050505050505050565b8015610c055760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610b93576040519150601f19603f3d011682016040523d82523d6000602084013e610b98565b606091505b5050905080610c03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f455448207472616e73666572206661696c6564000000000000000000000000006044820152606401610106565b505b5050565b6000808211610c74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f423a6761734c696d6974000000000000000000000000000000000000000000006044820152606401610106565b6040805160608101825284815260208681015173ffffffffffffffffffffffffffffffffffffffff90811691830182905287840151928401839052600389018790556004890180547fffffffffffffffffffffffff000000000000000000000000000000000000000016909217909155600588019190915560a086015161010087015161016088015193519190921692859291610d11919061223c565b600060405180830381858888f193505050503d8060008114610d4f576040519150601f19603f3d011682016040523d82523d6000602084013e610d54565b606091505b50506040805160608101825260018082526020820181905260001991909201819052600388018290556004880180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690921790915560059096019590955550929392505050565b806003811115610dcf57610dcf611cf7565b600083815260018501602052604090205460ff166003811115610df457610df4611cf7565b14610c0357600082815260018085016020526040909120805483927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911690836003811115610e4657610e46611cf7565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b257563482604051610e7b9190612258565b60405180910390a2505050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012090505b92915050565b60006060826101e0015160001415610f285760408051600f808252610200820190925290816020015b6060815260200190600190039081610f0c579050509050610f57565b604080516010808252610220820190925290816020015b6060815260200190600190039081610f3f5790505090505b8251610f629061129d565b81600081518110610f7557610f75612299565b6020026020010181905250610f8d836020015161129d565b81600181518110610fa057610fa0612299565b6020026020010181905250610fb883604001516112b0565b81600281518110610fcb57610fcb612299565b6020026020010181905250610fe3836060015161129d565b81600381518110610ff657610ff6612299565b602002602001018190525061100e836080015161129d565b8160048151811061102157611021612299565b60200260200101819052506110398360a0015161129d565b8160058151811061104c5761104c612299565b60200260200101819052506110838360c0015160405160200161106f91906122c8565b6040516020818303038152906040526112ec565b8160068151811061109657611096612299565b60200260200101819052506110ae8360e0015161135b565b816007815181106110c1576110c1612299565b60200260200101819052506110ec8361010001516fffffffffffffffffffffffffffffffff1661135b565b816008815181106110ff576110ff612299565b6020026020010181905250611118836101200151611369565b8160098151811061112b5761112b612299565b6020026020010181905250611144836101400151611369565b81600a8151811061115757611157612299565b6020026020010181905250611170836101600151611369565b81600b8151811061118357611183612299565b602002602001018190525061119c8361018001516112ec565b81600c815181106111af576111af612299565b60200260200101819052506111c8836101a0015161129d565b81600d815181106111db576111db612299565b602002602001018190525061122a836101c0015160405160200161106f919060c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016815260080190565b81600e8151811061123d5761123d612299565b6020026020010181905250826101e0015160001461128257611263836101e0015161135b565b81600f8151811061127657611276612299565b60200260200101819052505b600061128d82611381565b8051602090910120949350505050565b6060610edd6112ab836113c5565b6112ec565b604051606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602083015290610edd9060340161106f565b6060808251600114801561131a575060808360008151811061131057611310612299565b016020015160f81c105b15611326575081610edd565b611332835160806114b8565b836040516020016113449291906122fd565b604051602081830303815290604052905092915050565b6060610edd6112ab836116af565b6060610edd6112ab8367ffffffffffffffff166116af565b6060600061138e83611811565b905061139c815160c06114b8565b816040516020016113ae9291906122fd565b604051602081830303815290604052915050919050565b60606000826040516020016113dc91815260200190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815260208084528383019092529250600091829160208201818036833701905050905060005b81518110156114af57838361143f8161232c565b94508151811061145157611451612299565b602001015160f81c60f81b82828151811061146e5761146e612299565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806114a78161232c565b91505061142b565b50949350505050565b606080603884101561153757604080516001808252818301909252906020820181803683370190505090506114ed8385612347565b60f81b8160008151811061150357611503612299565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506116a8565b600060015b611546818761239b565b1561156c57816115558161232c565b92506115659050610100826123af565b905061153c565b611577826001611d72565b67ffffffffffffffff81111561158f5761158f611aaa565b6040519080825280601f01601f1916602001820160405280156115b9576020820181803683370190505b5092506115c68583612347565b6115d1906037612347565b60f81b836000815181106115e7576115e7612299565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b8181116116a55761010061162f82846123ce565b61163b906101006124c9565b611645908861239b565b61164f91906124d5565b60f81b83828151811061166457611664612299565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061169d8161232c565b91505061161b565b50505b9392505050565b60606000826040516020016116c691815260200190565b604051602081830303815290604052905060005b6020811015611738578181815181106116f5576116f5612299565b01602001517fff00000000000000000000000000000000000000000000000000000000000000161561172657611738565b806117308161232c565b9150506116da565b60006117458260206123ce565b67ffffffffffffffff81111561175d5761175d611aaa565b6040519080825280601f01601f191660200182016040528015611787576020820181803683370190505b50905060005b81518110156114af5783836117a18161232c565b9450815181106117b3576117b3612299565b602001015160f81c60f81b8282815181106117d0576117d0612299565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806118098161232c565b91505061178d565b606081516000141561183157505060408051600081526020810190915290565b6000805b83518110156118785783818151811061185057611850612299565b602002602001015151826118649190611d72565b9150806118708161232c565b915050611835565b60008267ffffffffffffffff81111561189357611893611aaa565b6040519080825280601f01601f1916602001820160405280156118bd576020820181803683370190505b50600092509050602081015b85518310156114af5760008684815181106118e6576118e6612299565b60200260200101519050600060208201905061190483828451611941565b87858151811061191657611916612299565b6020026020010151518361192a9190611d72565b9250505082806119399061232c565b9350506118c9565b8282825b6020811061197d578151835261195c602084611d72565b9250611969602083611d72565b91506119766020826123ce565b9050611945565b905182516020929092036101000a6000190180199091169116179052505050565b73ffffffffffffffffffffffffffffffffffffffff811681146119c057600080fd5b50565b6000806000806000608086880312156119db57600080fd5b8535945060208601356119ed8161199e565b9350604086013567ffffffffffffffff80821115611a0a57600080fd5b908701906101a0828a031215611a1f57600080fd5b90935060608701359080821115611a3557600080fd5b818801915088601f830112611a4957600080fd5b813581811115611a5857600080fd5b896020828501011115611a6a57600080fd5b9699959850939650602001949392505050565b8035611a888161199e565b919050565b600060208284031215611a9f57600080fd5b81356116a88161199e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff81118282101715611afd57611afd611aaa565b60405290565b6040805190810167ffffffffffffffff81118282101715611afd57611afd611aaa565b604051610200810167ffffffffffffffff81118282101715611afd57611afd611aaa565b600082601f830112611b5b57600080fd5b813567ffffffffffffffff80821115611b7657611b76611aaa565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611bbc57611bbc611aaa565b81604052838152866020858801011115611bd557600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006101a08236031215611c0857600080fd5b611c10611ad9565b82358152611c2060208401611a7d565b60208201526040830135604082015260608301356060820152611c4560808401611a7d565b6080820152611c5660a08401611a7d565b60a0820152611c6760c08401611a7d565b60c082015260e083810135908201526101008084013590820152610120808401359082015261014080840135908201526101608084013567ffffffffffffffff80821115611cb457600080fd5b611cc036838801611b4a565b83850152610180925082860135915080821115611cdc57600080fd5b50611ce936828701611b4a565b918301919091525092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215611d3857600080fd5b81516116a88161199e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611d8557611d85611d43565b500190565b60005b83811015611da5578181015183820152602001611d8d565b83811115611db4576000848401525b50505050565b60008151808452611dd2816020860160208601611d8a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60408152601460408201527f5441494b4f5f4252494447455f4d4553534147450000000000000000000000006060820152608060208201528151608082015260006020830151611e6c60a084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015160c0830152606083015160e08301526080830151610100611eaa8185018373ffffffffffffffffffffffffffffffffffffffff169052565b60a08501519150610120611ed58186018473ffffffffffffffffffffffffffffffffffffffff169052565b60c08601519250610140611f008187018573ffffffffffffffffffffffffffffffffffffffff169052565b60e0870151610160878101919091529287015161018080880191909152918701516101a080880191909152908701516101c0870152918601516101e0860192909252909150611f53610220850183611dba565b908501518482037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8001610200860152909150611f8f8282611dba565b95945050505050565b600082601f830112611fa957600080fd5b60405161010080820182811067ffffffffffffffff82111715611fce57611fce611aaa565b60405283018185821115611fe157600080fd5b845b82811015611ffb578035825260209182019101611fe3565b509195945050505050565b80356fffffffffffffffffffffffffffffffff81168114611a8857600080fd5b803567ffffffffffffffff81168114611a8857600080fd5b60006020828403121561205057600080fd5b813567ffffffffffffffff8082111561206857600080fd5b908301906040828603121561207c57600080fd5b612084611b03565b82358281111561209357600080fd5b83016102e081880312156120a657600080fd5b6120ae611b26565b81358152602082013560208201526120c860408301611a7d565b6040820152606082013560608201526080820135608082015260a082013560a08201526120f88860c08401611f98565b60c08201526101c08083013560e08301526101e0612117818501612006565b61010084015261212a6102008501612026565b61012084015261213d6102208501612026565b6101408401526121506102408501612026565b6101608401526102608401358681111561216957600080fd5b6121758b828701611b4a565b610180850152506102808401356101a08401526121956102a08501612026565b828401526102c084013581840152505080835250506020830135828111156121bc57600080fd5b6121c887828601611b4a565b60208301525095945050505050565b85815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a06080820152600061221860a0830184611dba565b979650505050505050565b60006020828403121561223557600080fd5b5051919050565b6000825161224e818460208701611d8a565b9190910192915050565b6020810160048310612293577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008183825b60088110156122ed5781518352602092830192909101906001016122ce565b5050506101008201905092915050565b6000835161230f818460208801611d8a565b835190830190612323818360208801611d8a565b01949350505050565b600060001982141561234057612340611d43565b5060010190565b600060ff821660ff84168060ff0382111561236457612364611d43565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826123aa576123aa61236c565b500490565b60008160001904831182151516156123c9576123c9611d43565b500290565b6000828210156123e0576123e0611d43565b500390565b600181815b8085111561242057816000190482111561240657612406611d43565b8085161561241357918102915b93841c93908002906123ea565b509250929050565b60008261243757506001610edd565b8161244457506000610edd565b816001811461245a576002811461246457612480565b6001915050610edd565b60ff84111561247557612475611d43565b50506001821b610edd565b5060208310610133831016604e8410600b84101617156124a3575081810a610edd565b6124ad83836123e5565b80600019048211156124c1576124c1611d43565b029392505050565b60006116a88383612428565b6000826124e4576124e461236c565b50069056fea264697066735822122014b842a0757d4ec0c7768c8c29fec84d20bd7c03ad1a5e3376215194d1c9806464736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0x1FEEE7d2A4da93fE4899fFf3ff844A224b1A143d": { ++ "contractName": "LibTxDecoder", ++ "storage": {}, ++ "code": "0x73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80632cb6101a14610045578063dae029d31461006e575b600080fd5b6100586100533660046117b8565b61008e565b6040516100659190611925565b60405180910390f35b61008161007c3660046119de565b610218565b6040516100659190611aad565b604080516020810190915260608152816100a757610212565b60006100e884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104e092505050565b90506000815167ffffffffffffffff811115610106576101066119af565b60405190808252806020026020018201604052801561019b57816020015b610188604051806101000160405280600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160008152602001600060ff1681526020016000815260200160008152602001606081525090565b8152602001906001900390816101245790505b50905060005b82518110156101ff576101cf61007c8483815181106101c2576101c2611ac0565b6020026020010151610513565b8282815181106101e1576101e1611ac0565b602002602001018190525080806101f790611b1e565b9150506101a1565b5060408051602081019091529081529150505b92915050565b61027c604051806101000160405280600060ff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160008152602001600060ff1681526020016000815260200160008152602001606081525090565b602082015160e0820183905260001a60c081108015906102a0575060fe8160ff1611155b156103265760008083526102b3846104e0565b905060006102c0826105a3565b60408082015160608088019190915282015173ffffffffffffffffffffffffffffffffffffffff16602087015260c08083015160ff16608088015260e083015160a080890191909152610100840151918801919091529091015190850152506104da9050565b607f8160ff16116104925760ff81168252600061034c6103478560016107bd565b6104e0565b90508160ff16600114156103c4576000610365826107fa565b6060808201519086015260808082015173ffffffffffffffffffffffffffffffffffffffff16602087015261010082015160ff169086015261012081015160a086015261014081015160c080870191909152015160408501525061048c565b826000015160ff166002141561043f5760006103df82610a3b565b608080820151606087015260a08083015173ffffffffffffffffffffffffffffffffffffffff16602088015261012083015160ff16918701919091526101408201519086015261016081015160c086015260e0015160408501525061048c565b60405162461bcd60e51b815260206004820152600e60248201527f696e76616c69642074785479706500000000000000000000000000000000000060448201526064015b60405180910390fd5b506104da565b60405162461bcd60e51b815260206004820152600e60248201527f696e76616c6964207072656669780000000000000000000000000000000000006044820152606401610483565b50919050565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061021290610c90565b6060600080600061052385610e8f565b91945092509050600081600181111561053e5761053e611b57565b1461058b5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610483565b61059a856020015184846111e0565b95945050505050565b61060b604051806101200160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001600060ff16815260200160008152602001600081525090565b815160091461065c5760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206974656d73206c656e6774680000000000000000000000006044820152606401610483565b61067f8260008151811061067257610672611ac0565b60200260200101516112d9565b8152815161069a908390600190811061067257610672611ac0565b602082015281516106b8908390600290811061067257610672611ac0565b604082015281516106e390839060039081106106d6576106d6611ac0565b60200260200101516112e4565b73ffffffffffffffffffffffffffffffffffffffff1660608201528151610717908390600490811061067257610672611ac0565b6080820152815161073590839060059081106101c2576101c2611ac0565b60a082015261074862028c5b6002611b86565b61075e8360068151811061067257610672611ac0565b6107689190611bc3565b610773906023611bda565b60ff1660c08201528151610794908390600790811061067257610672611ac0565b60e082015281516107b2908390600890811061067257610672611ac0565b610100820152919050565b6060825182106107dc5750604080516020810190915260008152610212565b6107f383838486516107ee9190611bc3565b611353565b9392505050565b61087060405180610160016040528060008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016060815260200160608152602001600060ff16815260200160008152602001600081525090565b8151600b146108c15760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206974656d73206c656e6774680000000000000000000000006044820152606401610483565b6108d78260008151811061067257610672611ac0565b815281516108f2908390600190811061067257610672611ac0565b60208201528151610910908390600290811061067257610672611ac0565b6040820152815161092e908390600390811061067257610672611ac0565b6060820152815161094c90839060049081106106d6576106d6611ac0565b73ffffffffffffffffffffffffffffffffffffffff1660808201528151610980908390600590811061067257610672611ac0565b60a0820152815161099e90839060069081106101c2576101c2611ac0565b8160c001819052506109d16109cc836007815181106109bf576109bf611ac0565b6020026020010151610c90565b6114f2565b8160e001819052506109ef8260088151811061067257610672611ac0565b60ff166101008201528151610a11908390600990811061067257610672611ac0565b6101208201528151610a30908390600a90811061067257610672611ac0565b610140820152919050565b610ab86040518061018001604052806000815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016060815260200160608152602001600060ff16815260200160008152602001600081525090565b8151600c14610b095760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206974656d73206c656e6774680000000000000000000000006044820152606401610483565b610b1f8260008151811061067257610672611ac0565b81528151610b3a908390600190811061067257610672611ac0565b60208201528151610b58908390600290811061067257610672611ac0565b60408201528151610b76908390600390811061067257610672611ac0565b60608201528151610b94908390600490811061067257610672611ac0565b60808201528151610bb290839060059081106106d6576106d6611ac0565b73ffffffffffffffffffffffffffffffffffffffff1660a08201528151610be6908390600690811061067257610672611ac0565b60c08201528151610c0490839060079081106101c2576101c2611ac0565b8160e00181905250610c256109cc836008815181106109bf576109bf611ac0565b816101000181905250610c448260098151811061067257610672611ac0565b60ff166101208201528151610c66908390600a90811061067257610672611ac0565b6101408201528151610c85908390600b90811061067257610672611ac0565b610160820152919050565b6060600080610c9e84610e8f565b91935090915060019050816001811115610cba57610cba611b57565b14610d075760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610483565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081610d205790505090506000835b8651811015610e845760208210610dcc5760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201527f7374206c656e6774682e000000000000000000000000000000000000000000006064820152608401610483565b600080610e096040518060400160405280858c60000151610ded9190611bc3565b8152602001858c60200151610e029190611bda565b9052610e8f565b509150915060405180604001604052808383610e259190611bda565b8152602001848b60200151610e3a9190611bda565b815250858581518110610e4f57610e4f611ac0565b6020908102919091010152610e65600185611bda565b9350610e718183611bda565b610e7b9084611bda565b92505050610d4d565b508152949350505050565b600080600080846000015111610ee75760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610483565b6020840151805160001a607f8111610f0c5760006001600094509450945050506111d9565b60b78111610f88576000610f21608083611bc3565b905080876000015111610f765760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610483565b600195509350600092506111d9915050565b60bf8111611077576000610f9d60b783611bc3565b905080876000015111610ff25760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610483565b600183015160208290036101000a900461100c8183611bda565b88511161105b5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610483565b611066826001611bda565b96509450600093506111d992505050565b60f781116110f257600061108c60c083611bc3565b9050808760000151116110e15760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610483565b6001955093508492506111d9915050565b60006110ff60f783611bc3565b9050808760000151116111545760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610483565b600183015160208290036101000a900461116e8183611bda565b8851116111bd5760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420524c50206c6f6e67206c6973742e000000000000000000006044820152606401610483565b6111c8826001611bda565b96509450600193506111d992505050565b9193909250565b606060008267ffffffffffffffff8111156111fd576111fd6119af565b6040519080825280601f01601f191660200182016040528015611227576020820181803683370190505b50905080516000141561123b5790506107f3565b60006112478587611bda565b90506020820160005b61125b602087611bf2565b8110156112925782518252611271602084611bda565b925061127e602083611bda565b91508061128a81611b1e565b915050611250565b5080519151601f959095166020036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019182169119909416179092525092915050565b6000610212826116b5565b8051600090600114156112f957506000919050565b815160151461134a5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020616464726573732076616c75652e0000000000006044820152606401610483565b610212826112d9565b60608161136181601f611bda565b10156113af5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610483565b826113ba8382611bda565b10156114085760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610483565b6114128284611bda565b845110156114625760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610483565b60608215801561148157604051915060008252602082016040526114e9565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156114ba5780518352602092830192016114a2565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6060815167ffffffffffffffff81111561150e5761150e6119af565b60405190808252806020026020018201604052801561155457816020015b60408051808201909152600081526060602082015281526020019060019003908161152c5790505b50905060005b82518110156104da57600061157a8483815181106109bf576109bf611ac0565b90506000611594826000815181106106d6576106d6611ac0565b905060006115ae836001815181106109bf576109bf611ac0565b90506000815167ffffffffffffffff8111156115cc576115cc6119af565b6040519080825280602002602001820160405280156115f5578160200160208202803683370190505b50905060005b82518110156116555761162683828151811061161957611619611ac0565b60200260200101516116b5565b82828151811061163857611638611ac0565b60209081029190910101528061164d81611b1e565b9150506115fb565b5060405180604001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018281525086868151811061169357611693611ac0565b60200260200101819052505050505080806116ad90611b1e565b91505061155a565b600060218260000151111561170c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610483565b600080600061171a85610e8f565b91945092509050600081600181111561173557611735611b57565b146117825760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e0000000000006044820152606401610483565b60008386602001516117949190611bda565b805190915060208410156117ae5760208490036101000a90045b9695505050505050565b600080602083850312156117cb57600080fd5b823567ffffffffffffffff808211156117e357600080fd5b818501915085601f8301126117f757600080fd5b81358181111561180657600080fd5b86602082850101111561181857600080fd5b60209290920196919550909350505050565b6000815180845260005b8181101561185057602081850181015186830182015201611834565b81811115611862576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600061010060ff835116845273ffffffffffffffffffffffffffffffffffffffff602084015116602085015260408301518160408601526118d88286018261182a565b9150506060830151606085015260808301516118f9608086018260ff169052565b5060a083015160a085015260c083015160c085015260e083015184820360e086015261059a828261182a565b60006020808352604083018451828386015281815180845260608701915060608160051b8801019350848301925060005b818110156119a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888603018352611990858551611895565b94509285019291850191600101611956565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156119f057600080fd5b813567ffffffffffffffff80821115611a0857600080fd5b818401915084601f830112611a1c57600080fd5b813581811115611a2e57611a2e6119af565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611a7457611a746119af565b81604052828152876020848701011115611a8d57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6020815260006107f36020830184611895565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611b5057611b50611aef565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611bbe57611bbe611aef565b500290565b600082821015611bd557611bd5611aef565b500390565b60008219821115611bed57611bed611aef565b500190565b600082611c28577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220ce05fa3cbf6e91edf039ea061baf84063d7d321bf9eb0101e512c682c93dd08f64736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000006": { ++ "contractName": "AddressManager", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000026250179c8e8e12104e556c4cd03bcf4dabd51b9", ++ "0x9e150550d912c06ad86bcac5075c8239136cbee2772f59805934f638390787fd": "0x0000000000000000000000000000777700000000000000000000000000000001", ++ "0xdf0a4e0e7239b530f3a9e9f04f6a2a1d6919446d7589e04de0d7da7f18f5d05a": "0x0000000000000000000000000000777700000000000000000000000000000004", ++ "0x20beed59eb6fea4f4c6192069320a80e7e285095b80b0603151a98cc480424ce": "0x0000000000000000000000000000777700000000000000000000000000000002", ++ "0x3d81277ccd96113ddd1d87267c98b973367fd126e1b94b601a82a8474494f54f": "0x0000000000000000000000000000777700000000000000000000000000000003" ++ }, ++ "code": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063bf40fac111610050578063bf40fac1146100d7578063e1c7392a146100ea578063f2fde38b146100f257600080fd5b8063715018a6146100775780638da5cb5b146100815780639b2ea4bd146100c4575b600080fd5b61007f610105565b005b60335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f6100d23660046107d8565b610119565b61009b6100e5366004610826565b6101ec565b61007f610228565b61007f610100366004610863565b6103bf565b61010d610473565b61011760006104f4565b565b610121610473565b600061012c8361056b565b60008181526065602052604090819020805473ffffffffffffffffffffffffffffffffffffffff8681167fffffffffffffffffffffffff00000000000000000000000000000000000000008316179092559151929350169061018f908590610885565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff808716845284166020840152917f9416a153a346f93d95f94b064ae3f148b6460473c6e82b3f9fc2521b873fcd6c910160405180910390a250505050565b6000606560006101fb8461056b565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff1692915050565b600054610100900460ff16158080156102485750600054600160ff909116105b806102625750303b158015610262575060005460ff166001145b6102f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561035157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61035961059b565b80156103bc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6103c7610473565b73ffffffffffffffffffffffffffffffffffffffff811661046a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102ea565b6103bc816104f4565b60335473ffffffffffffffffffffffffffffffffffffffff163314610117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102ea565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008160405160200161057e9190610885565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16610632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102ea565b610117600054610100900460ff166106cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102ea565b610117336104f4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261071557600080fd5b813567ffffffffffffffff80821115610730576107306106d5565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610776576107766106d5565b8160405283815286602085880101111561078f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107d357600080fd5b919050565b600080604083850312156107eb57600080fd5b823567ffffffffffffffff81111561080257600080fd5b61080e85828601610704565b92505061081d602084016107af565b90509250929050565b60006020828403121561083857600080fd5b813567ffffffffffffffff81111561084f57600080fd5b61085b84828501610704565b949350505050565b60006020828403121561087557600080fd5b61087e826107af565b9392505050565b6000825160005b818110156108a6576020818601810151858301520161088c565b818111156108b5576000828501525b50919091019291505056fea264697066735822122073e1836383d35ef46f9abd6688521406480eb2e7754e7387e4dd208fb4d7c6e464736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000001": { ++ "contractName": "TaikoL2", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000032": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000777700000000000000000000000000000006", ++ "0x0000000000000000000000000000000000000000000000000000000000000035": "0x7eb68e48c9bb3d707a9aba14662dab6ddd0a07c15abb07e83f02d11a86c15560" ++ }, ++ "code": "0x608060405234801561001057600080fd5b50600436106100c95760003560e01c80639a295e7311610081578063dac5df781161005b578063dac5df78146101f2578063ee82ac5e146101fb578063f16c79341461020e57600080fd5b80639a295e7314610170578063a0ca2d08146101d6578063c8d772ab146101e957600080fd5b8063461a4478116100b2578063461a4478146101405780635155ce9f14610153578063975e09a01461015b57600080fd5b806325bf86f2146100ce5780633ab76e9f14610101575b600080fd5b6100ee6100dc366004611e7a565b60009081526034602052604090205490565b6040519081526020015b60405180910390f35b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f8565b61011b61014e366004611fbe565b610221565b6036546100ee565b61016e610169366004611ff3565b610233565b005b604080516001815262028c5b6020820152610801918101919091526014606082015260006080820152600560a0820152624c4b4060c0820152606460e0820152620927c06101008201526152086101208201526203d090610140820152610160016100f8565b61016e6101e4366004612080565b6102ec565b6100ee60365481565b6100ee60355481565b6100ee610209366004611e7a565b61034c565b61011b61021c3660046120a2565b610399565b600061022d4683610456565b92915050565b600061024185858585610531565b90506000816006811115610257576102576120e9565b14156102aa5760405162461bcd60e51b815260206004820152600960248201527f4c323a726561736f6e000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6102b261082f565b6102bc8585610952565b6040517f64b299ff9f8ba674288abb53380419048a4271dda03b837ecba6b40e6ddea4a290600090a25050505050565b6102f461082f565b60008281526034602052604090819020829055603682905551829043907f930c750845026c7bb04c0e3d9111d512b4c86981713c4944a35a10a4a7a854f3906103409085815260200190565b60405180910390a35050565b600043821061035d57506000919050565b4382108015610377575061037361010043612147565b8210155b1561038157504090565b5060009081526033602052604090205490565b919050565b60006103a58383610456565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811661040f5760405162461bcd60e51b815260206004820152600e60248201527f41523a7a65726f4164647265737300000000000000000000000000000000000060448201526064016102a1565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008061046284610974565b8360405160200161047492919061218e565b60408051601f19818403018152908290526000547fbf40fac100000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff169063bf40fac1906104d99084906004016121e6565b60206040518083038186803b1580156104f157600080fd5b505afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610529919061223d565b949350505050565b6000620927c084111561054657506001610529565b6040517f2cb6101a000000000000000000000000000000000000000000000000000000008152731FEEE7d2A4da93fE4899fFf3ff844A224b1A143d90632cb6101a906105989088908890600401612258565b60006040518083038186803b1580156105b057600080fd5b505af49250505080156105e557506040513d6000823e601f3d908101601f191682016040526105e291908101906122dd565b60015b610623573d808015610613576040519150601f19603f3d011682016040523d82523d6000602084013e610618565b606091505b506002915050610529565b80515160641015610638576003915050610529565b624c4b4061064582610aa6565b1115610655576004915050610529565b80515183106106a65760405162461bcd60e51b815260206004820152600d60248201527f696e76616c69642074784964780000000000000000000000000000000000000060448201526064016102a1565b6000816000015184815181106106be576106be61247d565b60200260200101519050600560068111156106db576106db6120e9565b8560068111156106ed576106ed6120e9565b141561076c5760006106fe82610afa565b73ffffffffffffffffffffffffffffffffffffffff16146107615760405162461bcd60e51b815260206004820152601760248201527f6261642068696e742054585f494e56414c49445f53494700000000000000000060448201526064016102a1565b600592505050610529565b6006856006811115610780576107806120e9565b14156107e757615208816060015110156107dc5760405162461bcd60e51b815260206004820152600860248201527f6261642068696e7400000000000000000000000000000000000000000000000060448201526064016102a1565b600692505050610529565b60405162461bcd60e51b815260206004820152601e60248201527f6661696c656420746f2070726f76652074786c69737420696e76616c6964000060448201526064016102a1565b610837611e5b565b434660025b610100811115801561084e5750808310155b1561089c5761085d8184612147565b408460ff61086b8487612147565b61087591906124db565b60ff81106108855761088561247d565b602002015280610894816124ef565b91505061083c565b5060006108aa600184612147565b905080406108bb8383600088610b89565b6035541461090b5760405162461bcd60e51b815260206004820152601260248201527f4c323a7075626c6963496e70757448617368000000000000000000000000000060448201526064016102a1565b808561091860ff856124db565b60ff81106109285761092861247d565b602002015261093a8385600088610b89565b60355560009182526033602052604090912055505050565b60008282604051610964929190612528565b6040518091039020905092915050565b6060816109b457505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156109de57806109c8816124ef565b91506109d79050600a83612538565b91506109b8565b60008167ffffffffffffffff8111156109f9576109f9611e93565b6040519080825280601f01601f191660200182016040528015610a23576020820181803683370190505b5090505b841561052957610a38600183612147565b9150610a45600a866124db565b610a5090603061254c565b60f81b818381518110610a6557610a6561247d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610a9f600a86612538565b9450610a27565b8051600090815b8151811015610af357818181518110610ac857610ac861247d565b60200260200101516060015183610adf919061254c565b925080610aeb816124ef565b915050610aad565b5050919050565b60006001610b0783610bc2565b6080840151610b1790601b612564565b60a085015160c0860151604080516000815260200190819052610b56949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015610b78573d6000803e3d6000fd5b5050604051601f1901519392505050565b600084848484604051602001610ba29493929190612589565b604051602081830303815290604052805190602001209050949350505050565b805160009060609060ff16610be557610bde8360e00151610fb5565b9050610bff565b610bfc610bf78460e001516001610fe8565b610fb5565b90505b825160ff16610c5e578051600914610c595760405162461bcd60e51b815260206004820152601160248201527f696e76616c696420726c70206974656d7300000000000000000000000000000060448201526064016102a1565b610d68565b826000015160ff1660011415610cbf578051600b14610c595760405162461bcd60e51b815260206004820152601160248201527f696e76616c696420726c70206974656d7300000000000000000000000000000060448201526064016102a1565b826000015160ff1660021415610d20578051600c14610c595760405162461bcd60e51b815260206004820152601160248201527f696e76616c696420726c70206974656d7300000000000000000000000000000060448201526064016102a1565b60405162461bcd60e51b815260206004820152600e60248201527f696e76616c69642074785479706500000000000000000000000000000000000060448201526064016102a1565b825160009060ff1615610d885760038251610d839190612147565b610d8b565b81515b67ffffffffffffffff811115610da357610da3611e93565b604051908082528060200260200182016040528015610dd657816020015b6060815260200190600190039081610dc15790505b50905060005b8151811015610f6357845160ff1615801590610e04575060018251610e019190612147565b81145b15610e4d57610e2b838281518110610e1e57610e1e61247d565b602002602001015161101e565b828281518110610e3d57610e3d61247d565b6020026020010181905250610f51565b610e77610e72848381518110610e6557610e6561247d565b6020026020010151611029565b6110b9565b828281518110610e8957610e8961247d565b6020908102919091010152845160ff16158015610eb2575060048251610eaf9190612147565b81145b15610f5157610ec362028c5b611128565b82610ecf83600161254c565b81518110610edf57610edf61247d565b6020026020010181905250610ef46000611136565b82610f0083600261254c565b81518110610f1057610f1061247d565b6020026020010181905250610f256000611136565b82610f3183600361254c565b81518110610f4157610f4161247d565b6020026020010181905250610f63565b80610f5b816124ef565b915050610ddc565b506000610f6f8261114e565b855190915060ff1615610fa5578451604051610f939160f81b9083906020016125d4565b60405160208183030381529060405290505b8051602090910120949350505050565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061022d90611192565b606082518210611007575060408051602081019091526000815261022d565b6103a583838486516110199190612147565b611391565b606061022d82611512565b6060600080600061103985611528565b919450925090506000816001811115611054576110546120e9565b146110a15760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e000000000000000060448201526064016102a1565b6110b085602001518484611879565b95945050505050565b606080825160011480156110e757506080836000815181106110dd576110dd61247d565b016020015160f81c105b156110f357508161022d565b6110ff83516080611958565b8360405160200161111192919061261c565b604051602081830303815290604052905092915050565b606061022d610e7283611b4e565b606061022d610e728367ffffffffffffffff16611b4e565b6060600061115b83611cb0565b9050611169815160c0611958565b8160405160200161117b92919061261c565b604051602081830303815290604052915050919050565b60606000806111a084611528565b919350909150600190508160018111156111bc576111bc6120e9565b146112095760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e00000000000000000060448201526064016102a1565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816112225790505090506000835b865181101561138657602082106112ce5760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201527f7374206c656e6774682e0000000000000000000000000000000000000000000060648201526084016102a1565b60008061130b6040518060400160405280858c600001516112ef9190612147565b8152602001858c60200151611304919061254c565b9052611528565b509150915060405180604001604052808383611327919061254c565b8152602001848b6020015161133c919061254c565b8152508585815181106113515761135161247d565b602090810291909101015261136760018561254c565b9350611373818361254c565b61137d908461254c565b9250505061124f565b508152949350505050565b60608161139f81601f61254c565b10156113ed5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016102a1565b826113f8838261254c565b10156114465760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016102a1565b611450828461254c565b845110156114a05760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016102a1565b6060821580156114bf5760405191506000825260208201604052611509565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156114f85780518352602092830192016114e0565b5050858452601f01601f1916604052505b50949350505050565b606061022d826020015160008460000151611879565b6000806000808460000151116115805760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e000000000000000060448201526064016102a1565b6020840151805160001a607f81116115a5576000600160009450945094505050611872565b60b781116116215760006115ba608083612147565b90508087600001511161160f5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e0000000000000060448201526064016102a1565b60019550935060009250611872915050565b60bf811161171057600061163660b783612147565b90508087600001511161168b5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e0060448201526064016102a1565b600183015160208290036101000a90046116a5818361254c565b8851116116f45760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e000000000000000060448201526064016102a1565b6116ff82600161254c565b965094506000935061187292505050565b60f7811161178b57600061172560c083612147565b90508087600001511161177a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e00000000000000000060448201526064016102a1565b600195509350849250611872915050565b600061179860f783612147565b9050808760000151116117ed5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e00000060448201526064016102a1565b600183015160208290036101000a9004611807818361254c565b8851116118565760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420524c50206c6f6e67206c6973742e0000000000000000000060448201526064016102a1565b61186182600161254c565b965094506001935061187292505050565b9193909250565b606060008267ffffffffffffffff81111561189657611896611e93565b6040519080825280601f01601f1916602001820160405280156118c0576020820181803683370190505b5090508051600014156118d45790506103a5565b60006118e0858761254c565b90506020820160005b6118f4602087612538565b81101561192b578251825261190a60208461254c565b925061191760208361254c565b915080611923816124ef565b9150506118e9565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b60608060388410156119d7576040805160018082528183019092529060208201818036833701905050905061198d8385612564565b60f81b816000815181106119a3576119a361247d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506103a5565b600060015b6119e68187612538565b15611a0c57816119f5816124ef565b9250611a0590506101008261264b565b90506119dc565b611a1782600161254c565b67ffffffffffffffff811115611a2f57611a2f611e93565b6040519080825280601f01601f191660200182016040528015611a59576020820181803683370190505b509250611a668583612564565b611a71906037612564565b60f81b83600081518110611a8757611a8761247d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b818111611b4557610100611acf8284612147565b611adb906101006127a8565b611ae59088612538565b611aef91906124db565b60f81b838281518110611b0457611b0461247d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080611b3d816124ef565b915050611abb565b50509392505050565b6060600082604051602001611b6591815260200190565b604051602081830303815290604052905060005b6020811015611bd757818181518110611b9457611b9461247d565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615611bc557611bd7565b80611bcf816124ef565b915050611b79565b6000611be4826020612147565b67ffffffffffffffff811115611bfc57611bfc611e93565b6040519080825280601f01601f191660200182016040528015611c26576020820181803683370190505b50905060005b8151811015611509578383611c40816124ef565b945081518110611c5257611c5261247d565b602001015160f81c60f81b828281518110611c6f57611c6f61247d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080611ca8816124ef565b915050611c2c565b6060815160001415611cd057505060408051600081526020810190915290565b6000805b8351811015611d1757838181518110611cef57611cef61247d565b60200260200101515182611d03919061254c565b915080611d0f816124ef565b915050611cd4565b60008267ffffffffffffffff811115611d3257611d32611e93565b6040519080825280601f01601f191660200182016040528015611d5c576020820181803683370190505b50600092509050602081015b8551831015611509576000868481518110611d8557611d8561247d565b602002602001015190506000602082019050611da383828451611de0565b878581518110611db557611db561247d565b60200260200101515183611dc9919061254c565b925050508280611dd8906124ef565b935050611d68565b8282825b60208110611e1c5781518352611dfb60208461254c565b9250611e0860208361254c565b9150611e15602082612147565b9050611de4565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b60405180611fe0016040528060ff906020820280368337509192915050565b600060208284031215611e8c57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516020810167ffffffffffffffff81118282101715611ee557611ee5611e93565b60405290565b604051610100810167ffffffffffffffff81118282101715611ee557611ee5611e93565b604051601f8201601f1916810167ffffffffffffffff81118282101715611f3857611f38611e93565b604052919050565b600067ffffffffffffffff821115611f5a57611f5a611e93565b50601f01601f191660200190565b600082601f830112611f7957600080fd5b8135611f8c611f8782611f40565b611f0f565b818152846020838601011115611fa157600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611fd057600080fd5b813567ffffffffffffffff811115611fe757600080fd5b61052984828501611f68565b6000806000806060858703121561200957600080fd5b843567ffffffffffffffff8082111561202157600080fd5b818701915087601f83011261203557600080fd5b81358181111561204457600080fd5b88602082850101111561205657600080fd5b602092830196509450508501356007811061207057600080fd5b9396929550929360400135925050565b6000806040838503121561209357600080fd5b50508035926020909101359150565b600080604083850312156120b557600080fd5b82359150602083013567ffffffffffffffff8111156120d357600080fd5b6120df85828601611f68565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561215957612159612118565b500390565b60005b83811015612179578181015183820152602001612161565b83811115612188576000848401525b50505050565b600083516121a081846020880161215e565b7f2e0000000000000000000000000000000000000000000000000000000000000090830190815283516121da81600184016020880161215e565b01600101949350505050565b602081526000825180602084015261220581604085016020870161215e565b601f01601f19169190910160400192915050565b805173ffffffffffffffffffffffffffffffffffffffff8116811461039457600080fd5b60006020828403121561224f57600080fd5b6103a582612219565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b805160ff8116811461039457600080fd5b600082601f8301126122a957600080fd5b81516122b7611f8782611f40565b8181528460208386010111156122cc57600080fd5b61052982602083016020870161215e565b600060208083850312156122f057600080fd5b825167ffffffffffffffff8082111561230857600080fd5b818501915082828703121561231c57600080fd5b612324611ec2565b82518281111561233357600080fd5b80840193505086601f84011261234857600080fd5b82518281111561235a5761235a611e93565b8060051b612369868201611f0f565b918252848101860191868101908a84111561238357600080fd5b87870192505b8383101561246d578251868111156123a057600080fd5b8701610100818d03601f19018113156123b857600080fd5b6123c0611eeb565b6123cb8b8401612287565b81526123d960408401612219565b8b8201526060830151898111156123ef57600080fd5b6123fd8f8d83870101612298565b6040830152506080830151606082015260a061241a818501612287565b608083015260c0808501518284015260e091508185015181840152508284015192508983111561244a5760008081fd5b6124588f8d85870101612298565b90820152845250509187019190870190612389565b8452509198975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826124ea576124ea6124ac565b500690565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561252157612521612118565b5060010190565b8183823760009101908152919050565b600082612547576125476124ac565b500490565b6000821982111561255f5761255f612118565b500190565b600060ff821660ff84168060ff0382111561258157612581612118565b019392505050565b848152600060208581840152846040840152606083018460005b60ff8110156125c0578151835291830191908301906001016125a3565b505050506120408201905095945050505050565b7fff00000000000000000000000000000000000000000000000000000000000000831681526000825161260e81600185016020870161215e565b919091016001019392505050565b6000835161262e81846020880161215e565b83519083019061264281836020880161215e565b01949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561268357612683612118565b500290565b600181815b808511156126e157817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156126c7576126c7612118565b808516156126d457918102915b93841c939080029061268d565b509250929050565b6000826126f85750600161022d565b816127055750600061022d565b816001811461271b576002811461272557612741565b600191505061022d565b60ff84111561273657612736612118565b50506001821b61022d565b5060208310610133831016604e8410600b8410161715612764575081810a61022d565b61276e8383612688565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156127a0576127a0612118565b029392505050565b60006103a583836126e956fea264697066735822122033da65b31403f3528dc6eca551c4217b5ea7512d6e8827e9af8f7449068335bf64736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000004": { ++ "contractName": "Bridge", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x00000000000000000000000026250179c8e8e12104e556c4cd03bcf4dabd51b9", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" ++ }, ++ "code": "0x6080604052600436106101485760003560e01c80636950f0de116100c0578063d0496d6a11610074578063f2fde38b11610059578063f2fde38b14610421578063f980391914610441578063fee99b221461046157600080fd5b8063d0496d6a14610385578063f16c79341461040157600080fd5b80638da5cb5b116100a55780638da5cb5b1461031957806396e1785214610344578063a4444efd1461036557600080fd5b80636950f0de146102e4578063715018a61461030457600080fd5b8063461a447811610117578063540be6a3116100fc578063540be6a3146102745780635d0bd9861461029457806366ca2bc0146102c457600080fd5b8063461a4478146102175780635075a9d41461023757600080fd5b806319ab453c1461015457806332676bc6146101765780633ab76e9f146101ab5780633aec8585146101f757600080fd5b3661014f57005b600080fd5b34801561016057600080fd5b5061017461016f36600461260a565b610481565b005b34801561018257600080fd5b50610196610191366004612627565b610600565b60405190151581526020015b60405180910390f35b3480156101b757600080fd5b5060975473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a2565b34801561020357600080fd5b5061019661021236600461269c565b610615565b34801561022357600080fd5b506101d2610232366004612851565b610672565b34801561024357600080fd5b50610267610252366004612886565b600090815260ca602052604090205460ff1690565b6040516101a2919061289f565b34801561028057600080fd5b5061019661028f366004612886565b61067e565b3480156102a057600080fd5b506101966102af366004612886565b600090815260c9602052604090205460ff1690565b3480156102d057600080fd5b506101746102df366004612886565b61068a565b3480156102f057600080fd5b506101746102ff3660046128f0565b6106d0565b34801561031057600080fd5b5061017461073c565b34801561032557600080fd5b5060655473ffffffffffffffffffffffffffffffffffffffff166101d2565b610357610352366004612935565b610750565b6040519081526020016101a2565b34801561037157600080fd5b5061019661038036600461296a565b6107c8565b34801561039157600080fd5b50604080516060808201835260008083526020808401829052928401528251808201845260cc5480825260cd5473ffffffffffffffffffffffffffffffffffffffff90811683860190815260ce5493870193845286519283525116938101939093525192820192909252016101a2565b34801561040d57600080fd5b506101d261041c3660046129bd565b610824565b34801561042d57600080fd5b5061017461043c36600461260a565b610830565b34801561044d57600080fd5b5061017461045c366004612a04565b6108cd565b34801561046d57600080fd5b5061017461047c366004612a49565b6109b4565b600054610100900460ff16158080156104a15750600054600160ff909116105b806104bb5750303b1580156104bb575060005460ff166001145b6105325760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561059057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61059982610a9e565b80156105fc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600061060c8383610ab7565b90505b92915050565b600080610657866040518060400160405280600681526020017f6272696467650000000000000000000000000000000000000000000000000000815250610824565b90506106673082878a8888610bc9565b979650505050505050565b600061060f4683610f96565b600061060f3083610ab7565b610694338261108f565b60408051338152602081018390527ff0958489d2a32db2b0faf27a72a31fdf28f2636ca5532f1b077ddc2f51b20d1d910160405180910390a150565b600260015414156107235760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610529565b600260015561073460c9838361119d565b505060018055565b61074461126d565b61074e60006112d4565b565b6000600260015414156107a55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610529565b60026001556107be60c9306107b985612ab2565b61134b565b6001805592915050565b60008061080a856040518060400160405280600681526020017f6272696467650000000000000000000000000000000000000000000000000000815250610824565b905061081a308283898888610bc9565b9695505050505050565b600061060c8383610f96565b61083861126d565b73ffffffffffffffffffffffffffffffffffffffff81166108c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610529565b6108ca816112d4565b50565b600260015414156109205760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610529565b60026001556040517f46eb9db5000000000000000000000000000000000000000000000000000000008152738A9E82Ebf0E219BBdB4fBBd50FEd45d098a8Ba1e906346eb9db59061097c9060c990309087908790600401612d8e565b60006040518083038186803b15801561099457600080fd5b505af41580156109a8573d6000803e3d6000fd5b50505050505060018055565b60026001541415610a075760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610529565b60026001556040517fc0249e2d00000000000000000000000000000000000000000000000000000000815273f7c52068c40213E7C49313B0d6FCc11Cb2C45dbF9063c0249e2d90610a659060c9903090889088908890600401612dd6565b60006040518083038186803b158015610a7d57600080fd5b505af4158015610a91573d6000803e3d6000fd5b5050505050506001805550565b610aa6611626565b610aae6116ab565b6108ca81611730565b6000828273ffffffffffffffffffffffffffffffffffffffff8216610b1e5760405162461bcd60e51b815260206004820152600860248201527f423a73656e6465720000000000000000000000000000000000000000000000006044820152606401610529565b80610b6b5760405162461bcd60e51b815260206004820152600860248201527f423a7369676e616c0000000000000000000000000000000000000000000000006044820152606401610529565b50506040805160609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208086019190915260348086019490945281518086039094018452605490940190525080519101205460011490565b6000848473ffffffffffffffffffffffffffffffffffffffff8216610c305760405162461bcd60e51b815260206004820152600860248201527f423a73656e6465720000000000000000000000000000000000000000000000006044820152606401610529565b80610c7d5760405162461bcd60e51b815260206004820152600860248201527f423a7369676e616c0000000000000000000000000000000000000000000000006044820152606401610529565b73ffffffffffffffffffffffffffffffffffffffff8816610ce05760405162461bcd60e51b815260206004820152600b60248201527f423a7372634272696467650000000000000000000000000000000000000000006044820152606401610529565b6000610cee85870187612ed0565b905073C5d653E17c24928B788a17838F11d2AcF0c922A363960304398260000151606001518b610d738c8c6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b60208601516040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152610db6949392916001916004016130e3565b60006040518083038186803b158015610dce57600080fd5b505af4158015610de2573d6000803e3d6000fd5b50506040517f461a447800000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f7461696b6f00000000000000000000000000000000000000000000000000000060448201526000925073ffffffffffffffffffffffffffffffffffffffff8d16915063461a44789060640160206040518083038186803b158015610e7c57600080fd5b505afa158015610e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb49190613124565b825161010001516040517f25bf86f20000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff91909116906325bf86f29060240160206040518083038186803b158015610f3557600080fd5b505afa158015610f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6d9190613141565b90508015801590610f8757508151610f84906117da565b81145b9b9a5050505050505050505050565b600080610fa284611b94565b83604051602001610fb492919061315a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526097547fbf40fac100000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff169063bf40fac1906110379084906004016131b2565b60206040518083038186803b15801561104f57600080fd5b505afa158015611063573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110879190613124565b949350505050565b818173ffffffffffffffffffffffffffffffffffffffff82166110f45760405162461bcd60e51b815260206004820152600860248201527f423a73656e6465720000000000000000000000000000000000000000000000006044820152606401610529565b806111415760405162461bcd60e51b815260206004820152600860248201527f423a7369676e616c0000000000000000000000000000000000000000000000006044820152606401610529565b50506040805160609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020808501919091526034808501939093528151808503909301835260549093019052805191012060019055565b6000821180156111ad5750468214155b6111f95760405162461bcd60e51b815260206004820152600960248201527f423a636861696e496400000000000000000000000000000000000000000000006044820152606401610529565b6000828152602084815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016841515908117909155915191825283917f9f391218c06d4fc365ceb15f340bb3d77306b28ac0b8d4e519aec2654794536d910160405180910390a2505050565b60655473ffffffffffffffffffffffffffffffffffffffff16331461074e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610529565b6065805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b608081015160009073ffffffffffffffffffffffffffffffffffffffff166113b55760405162461bcd60e51b815260206004820152600760248201527f423a6f776e6572000000000000000000000000000000000000000000000000006044820152606401610529565b468260600151141580156113dc5750606082015160009081526020859052604090205460ff165b6114285760405162461bcd60e51b815260206004820152600d60248201527f423a64657374436861696e4964000000000000000000000000000000000000006044820152606401610529565b60008261012001518361010001518460e0015161144591906131f4565b61144f91906131f4565b90503481146114a05760405162461bcd60e51b815260206004820152600760248201527f423a76616c7565000000000000000000000000000000000000000000000000006044820152606401610529565b6040517f461a447800000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f65746865725f7661756c74000000000000000000000000000000000000000000604482015260009073ffffffffffffffffffffffffffffffffffffffff86169063461a44789060640160206040518083038186803b15801561153657600080fd5b505afa15801561154a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156e9190613124565b905073ffffffffffffffffffffffffffffffffffffffff8116156115ac576115ac73ffffffffffffffffffffffffffffffffffffffff821683611cc6565b6002860180549060006115be8361320c565b9091555084523360208501524660408501526115d984611d81565b92506115e5308461108f565b827f47866f7dacd4a276245be6ed543cae03c9c17eb17e6980cee28e3dd168b7f9f3856040516116159190613362565b60405180910390a250509392505050565b600054610100900460ff166116a35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610529565b61074e611db1565b600054610100900460ff166117285760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610529565b61074e611e34565b73ffffffffffffffffffffffffffffffffffffffff81166117935760405162461bcd60e51b815260206004820152600e60248201527f41523a7a65726f416464726573730000000000000000000000000000000000006044820152606401610529565b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006060826101e001516000141561181f5760408051600f808252610200820190925290816020015b606081526020019060019003908161180357905050905061184e565b604080516010808252610220820190925290816020015b60608152602001906001900390816118365790505090505b825161185990611eba565b8160008151811061186c5761186c613375565b60200260200101819052506118848360200151611eba565b8160018151811061189757611897613375565b60200260200101819052506118af8360400151611ecd565b816002815181106118c2576118c2613375565b60200260200101819052506118da8360600151611eba565b816003815181106118ed576118ed613375565b60200260200101819052506119058360800151611eba565b8160048151811061191857611918613375565b60200260200101819052506119308360a00151611eba565b8160058151811061194357611943613375565b602002602001018190525061197a8360c0015160405160200161196691906133a4565b604051602081830303815290604052611f09565b8160068151811061198d5761198d613375565b60200260200101819052506119a58360e00151611f78565b816007815181106119b8576119b8613375565b60200260200101819052506119e38361010001516fffffffffffffffffffffffffffffffff16611f78565b816008815181106119f6576119f6613375565b6020026020010181905250611a0f836101200151611f86565b81600981518110611a2257611a22613375565b6020026020010181905250611a3b836101400151611f86565b81600a81518110611a4e57611a4e613375565b6020026020010181905250611a67836101600151611f86565b81600b81518110611a7a57611a7a613375565b6020026020010181905250611a93836101800151611f09565b81600c81518110611aa657611aa6613375565b6020026020010181905250611abf836101a00151611eba565b81600d81518110611ad257611ad2613375565b6020026020010181905250611b21836101c00151604051602001611966919060c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016815260080190565b81600e81518110611b3457611b34613375565b6020026020010181905250826101e00151600014611b7957611b5a836101e00151611f78565b81600f81518110611b6d57611b6d613375565b60200260200101819052505b6000611b8482611f9e565b8051602090910120949350505050565b606081611bd457505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611bfe5780611be88161320c565b9150611bf79050600a83613408565b9150611bd8565b60008167ffffffffffffffff811115611c1957611c19612706565b6040519080825280601f01601f191660200182016040528015611c43576020820181803683370190505b5090505b841561108757611c5860018361341c565b9150611c65600a86613433565b611c709060306131f4565b60f81b818381518110611c8557611c85613375565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611cbf600a86613408565b9450611c47565b80156105fc5760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611d26576040519150601f19603f3d011682016040523d82523d6000602084013e611d2b565b606091505b5050905080611d7c5760405162461bcd60e51b815260206004820152601360248201527f455448207472616e73666572206661696c6564000000000000000000000000006044820152606401610529565b505050565b600081604051602001611d949190613447565b604051602081830303815290604052805190602001209050919050565b600054610100900460ff16611e2e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610529565b60018055565b600054610100900460ff16611eb15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610529565b61074e336112d4565b606061060f611ec883611fe2565b611f09565b604051606082811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301529061060f90603401611966565b60608082516001148015611f375750608083600081518110611f2d57611f2d613375565b016020015160f81c105b15611f4357508161060f565b611f4f835160806120d5565b83604051602001611f6192919061348e565b604051602081830303815290604052905092915050565b606061060f611ec8836122cb565b606061060f611ec88367ffffffffffffffff166122cb565b60606000611fab8361242d565b9050611fb9815160c06120d5565b81604051602001611fcb92919061348e565b604051602081830303815290604052915050919050565b6060600082604051602001611ff991815260200190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815260208084528383019092529250600091829160208201818036833701905050905060005b81518110156120cc57838361205c8161320c565b94508151811061206e5761206e613375565b602001015160f81c60f81b82828151811061208b5761208b613375565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806120c48161320c565b915050612048565b50949350505050565b6060806038841015612154576040805160018082528183019092529060208201818036833701905050905061210a83856134bd565b60f81b8160008151811061212057612120613375565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061060c565b600060015b6121638187613408565b1561218957816121728161320c565b92506121829050610100826134e2565b9050612159565b6121948260016131f4565b67ffffffffffffffff8111156121ac576121ac612706565b6040519080825280601f01601f1916602001820160405280156121d6576020820181803683370190505b5092506121e385836134bd565b6121ee9060376134bd565b60f81b8360008151811061220457612204613375565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b8181116122c25761010061224c828461341c565b6122589061010061363f565b6122629088613408565b61226c9190613433565b60f81b83828151811061228157612281613375565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806122ba8161320c565b915050612238565b50509392505050565b60606000826040516020016122e291815260200190565b604051602081830303815290604052905060005b60208110156123545781818151811061231157612311613375565b01602001517fff00000000000000000000000000000000000000000000000000000000000000161561234257612354565b8061234c8161320c565b9150506122f6565b600061236182602061341c565b67ffffffffffffffff81111561237957612379612706565b6040519080825280601f01601f1916602001820160405280156123a3576020820181803683370190505b50905060005b81518110156120cc5783836123bd8161320c565b9450815181106123cf576123cf613375565b602001015160f81c60f81b8282815181106123ec576123ec613375565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806124258161320c565b9150506123a9565b606081516000141561244d57505060408051600081526020810190915290565b6000805b83518110156124945783818151811061246c5761246c613375565b6020026020010151518261248091906131f4565b91508061248c8161320c565b915050612451565b60008267ffffffffffffffff8111156124af576124af612706565b6040519080825280601f01601f1916602001820160405280156124d9576020820181803683370190505b50600092509050602081015b85518310156120cc57600086848151811061250257612502613375565b6020026020010151905060006020820190506125208382845161255d565b87858151811061253257612532613375565b6020026020010151518361254691906131f4565b9250505082806125559061320c565b9350506124e5565b8282825b6020811061259957815183526125786020846131f4565b92506125856020836131f4565b915061259260208261341c565b9050612561565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108ca57600080fd5b8035612605816125d8565b919050565b60006020828403121561261c57600080fd5b813561060c816125d8565b6000806040838503121561263a57600080fd5b8235612645816125d8565b946020939093013593505050565b60008083601f84011261266557600080fd5b50813567ffffffffffffffff81111561267d57600080fd5b60208301915083602082850101111561269557600080fd5b9250929050565b6000806000806000608086880312156126b457600080fd5b853594506020860135935060408601356126cd816125d8565b9250606086013567ffffffffffffffff8111156126e957600080fd5b6126f588828901612653565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff8111828210171561275957612759612706565b60405290565b6040805190810167ffffffffffffffff8111828210171561275957612759612706565b604051610200810167ffffffffffffffff8111828210171561275957612759612706565b600082601f8301126127b757600080fd5b813567ffffffffffffffff808211156127d2576127d2612706565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561281857612818612706565b8160405283815286602085880101111561283157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561286357600080fd5b813567ffffffffffffffff81111561287a57600080fd5b611087848285016127a6565b60006020828403121561289857600080fd5b5035919050565b60208101600483106128da577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b8035801515811461260557600080fd5b6000806040838503121561290357600080fd5b82359150612913602084016128e0565b90509250929050565b60006101a0828403121561292f57600080fd5b50919050565b60006020828403121561294757600080fd5b813567ffffffffffffffff81111561295e57600080fd5b6110878482850161291c565b6000806000806060858703121561298057600080fd5b8435935060208501359250604085013567ffffffffffffffff8111156129a557600080fd5b6129b187828801612653565b95989497509550505050565b600080604083850312156129d057600080fd5b82359150602083013567ffffffffffffffff8111156129ee57600080fd5b6129fa858286016127a6565b9150509250929050565b60008060408385031215612a1757600080fd5b823567ffffffffffffffff811115612a2e57600080fd5b612a3a8582860161291c565b925050612913602084016128e0565b600080600060408486031215612a5e57600080fd5b833567ffffffffffffffff80821115612a7657600080fd5b612a828783880161291c565b94506020860135915080821115612a9857600080fd5b50612aa586828701612653565b9497909650939450505050565b60006101a08236031215612ac557600080fd5b612acd612735565b82358152612add602084016125fa565b60208201526040830135604082015260608301356060820152612b02608084016125fa565b6080820152612b1360a084016125fa565b60a0820152612b2460c084016125fa565b60c082015260e083810135908201526101008084013590820152610120808401359082015261014080840135908201526101608084013567ffffffffffffffff80821115612b7157600080fd5b612b7d368388016127a6565b83850152610180925082860135915080821115612b9957600080fd5b50612ba6368287016127a6565b918301919091525092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612be957600080fd5b830160208101925035905067ffffffffffffffff811115612c0957600080fd5b80360383131561269557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006101a082358452612c76602084016125fa565b73ffffffffffffffffffffffffffffffffffffffff81166020860152506040830135604085015260608301356060850152612cb3608084016125fa565b73ffffffffffffffffffffffffffffffffffffffff166080850152612cda60a084016125fa565b73ffffffffffffffffffffffffffffffffffffffff1660a0850152612d0160c084016125fa565b73ffffffffffffffffffffffffffffffffffffffff1660c085015260e08381013590850152610100808401359085015261012080840135908501526101408084013590850152610160612d5681850185612bb4565b8383880152612d688488018284612c18565b9350505050610180612d7c81850185612bb4565b86840383880152610667848284612c18565b84815273ffffffffffffffffffffffffffffffffffffffff84166020820152608060408201526000612dc36080830185612c61565b9050821515606083015295945050505050565b85815273ffffffffffffffffffffffffffffffffffffffff85166020820152608060408201526000612e0b6080830186612c61565b8281036060840152612e1e818587612c18565b98975050505050505050565b600082601f830112612e3b57600080fd5b60405161010080820182811067ffffffffffffffff82111715612e6057612e60612706565b60405283018185821115612e7357600080fd5b845b82811015612e8d578035825260209182019101612e75565b509195945050505050565b80356fffffffffffffffffffffffffffffffff8116811461260557600080fd5b803567ffffffffffffffff8116811461260557600080fd5b600060208284031215612ee257600080fd5b813567ffffffffffffffff80821115612efa57600080fd5b9083019060408286031215612f0e57600080fd5b612f1661275f565b823582811115612f2557600080fd5b83016102e08188031215612f3857600080fd5b612f40612782565b8135815260208201356020820152612f5a604083016125fa565b6040820152606082013560608201526080820135608082015260a082013560a0820152612f8a8860c08401612e2a565b60c08201526101c08083013560e08301526101e0612fa9818501612e98565b610100840152612fbc6102008501612eb8565b610120840152612fcf6102208501612eb8565b610140840152612fe26102408501612eb8565b61016084015261026084013586811115612ffb57600080fd5b6130078b8287016127a6565b610180850152506102808401356101a08401526130276102a08501612eb8565b828401526102c0840135818401525050808352505060208301358281111561304e57600080fd5b61305a878286016127a6565b60208301525095945050505050565b60005b8381101561308457818101518382015260200161306c565b83811115613093576000848401525b50505050565b600081518084526130b1816020860160208601613069565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b85815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a06080820152600061066760a0830184613099565b60006020828403121561313657600080fd5b815161060c816125d8565b60006020828403121561315357600080fd5b5051919050565b6000835161316c818460208801613069565b7f2e0000000000000000000000000000000000000000000000000000000000000090830190815283516131a6816001840160208801613069565b01600101949350505050565b60208152600061060c6020830184613099565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613207576132076131c5565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561323e5761323e6131c5565b5060010190565b60006101a0825184526020830151613275602086018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015160408501526060830151606085015260808301516132b1608086018273ffffffffffffffffffffffffffffffffffffffff169052565b5060a08301516132d960a086018273ffffffffffffffffffffffffffffffffffffffff169052565b5060c083015161330160c086018273ffffffffffffffffffffffffffffffffffffffff169052565b5060e083810151908501526101008084015190850152610120808401519085015261014080840151908501526101608084015181860183905261334683870182613099565b92505050610180808401518583038287015261081a8382613099565b60208152600061060c6020830184613245565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008183825b60088110156133c95781518352602092830192909101906001016133aa565b5050506101008201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613417576134176133d9565b500490565b60008282101561342e5761342e6131c5565b500390565b600082613442576134426133d9565b500690565b60408152601460408201527f5441494b4f5f4252494447455f4d455353414745000000000000000000000000606082015260806020820152600061060c6080830184613245565b600083516134a0818460208801613069565b8351908301906134b4818360208801613069565b01949350505050565b600060ff821660ff84168060ff038211156134da576134da6131c5565b019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561351a5761351a6131c5565b500290565b600181815b8085111561357857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561355e5761355e6131c5565b8085161561356b57918102915b93841c9390800290613524565b509250929050565b60008261358f5750600161060f565b8161359c5750600061060f565b81600181146135b257600281146135bc576135d8565b600191505061060f565b60ff8411156135cd576135cd6131c5565b50506001821b61060f565b5060208310610133831016604e8410600b84101617156135fb575081810a61060f565b613605838361351f565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613637576136376131c5565b029392505050565b600061060c838361358056fea2646970667358221220d5e1fe055176dc14480cf9170f5a503d79f8793c534119929c5bbb34db12f54764736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000002": { ++ "contractName": "TokenVault", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x00000000000000000000000026250179c8e8e12104e556c4cd03bcf4dabd51b9", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006" ++ }, ++ "code": "0x6080604052600436106100d25760003560e01c8063715018a61161007f578063c287e57811610059578063c287e57814610228578063ee1490b214610268578063f16c79341461027b578063f2fde38b1461029b57600080fd5b8063715018a6146101c45780638da5cb5b146101d95780639aa8605c146101f757600080fd5b80633ab76e9f116100b05780633ab76e9f1461012c578063461a44781461016357806367090ccf1461018357600080fd5b80630c6fab82146100d757806319ab453c146100f957806339da33ba14610119575b600080fd5b3480156100e357600080fd5b506100f76100f2366004612459565b6102bb565b005b34801561010557600080fd5b506100f76101143660046124c8565b6105f9565b6100f76101273660046125c3565b610773565b34801561013857600080fd5b506097546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561016f57600080fd5b5061014661017e366004612641565b610ad1565b34801561018f57600080fd5b5061014661019e366004612676565b60cb6020908152600092835260408084209091529082529020546001600160a01b031681565b3480156101d057600080fd5b506100f7610ae3565b3480156101e557600080fd5b506065546001600160a01b0316610146565b34801561020357600080fd5b506102176102123660046124c8565b610af7565b60405161015a9594939291906126fe565b34801561023457600080fd5b506102586102433660046124c8565b60c96020526000908152604090205460ff1681565b604051901515815260200161015a565b6100f761027636600461274d565b610c59565b34801561028757600080fd5b506101466102963660046127e9565b611682565b3480156102a757600080fd5b506100f76102b63660046124c8565b611695565b600260015414156103135760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260015560408051808201909152600681527f6272696467650000000000000000000000000000000000000000000000000000602082015261035581610ad1565b6001600160a01b0316336001600160a01b0316146103b55760405162461bcd60e51b815260206004820152600960248201527f41523a64656e6965640000000000000000000000000000000000000000000000604482015260640161030a565b6000336001600160a01b031663d0496d6a6040518163ffffffff1660e01b815260040160606040518083038186803b1580156103f057600080fd5b505afa158015610404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104289190612830565b905061046d81604001516040518060400160405280600b81526020017f746f6b656e5f7661756c74000000000000000000000000000000000000000000815250611682565b6001600160a01b031681602001516001600160a01b0316146104d15760405162461bcd60e51b815260206004820152600860248201527f563a73656e646572000000000000000000000000000000000000000000000000604482015260640161030a565b60008635461415610507576104ec60408801602089016124c8565b90506105026001600160a01b0382168686611725565b610590565b610510876117d3565b6040517f42e91bb30000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260248201879052919250908216906342e91bb390604401600060405180830381600087803b15801561057757600080fd5b505af115801561058b573d6000803e3d6000fd5b505050505b60408281015181516001600160a01b038981168252602082019290925283821681840152606081018790529151908716917f485a7041eaecffd5ef478f291c05a2a47a1e6af7e7780e46578f18bf03e1bf3f919081900360800190a25050600180555050505050565b600054610100900460ff16158080156106195750600054600160ff909116105b806106335750303b158015610633575060005460ff166001145b6106a55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161030a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561070357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61070c8261182c565b801561076f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600260015414156107c65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161030a565b60026001556001600160a01b03851615801590610833575061081d866040518060400160405280600b81526020017f746f6b656e5f7661756c74000000000000000000000000000000000000000000815250611682565b6001600160a01b0316856001600160a01b031614155b6108815760405162461bcd60e51b815260040161030a9060208082526004908201527f563a746f00000000000000000000000000000000000000000000000000000000604082015260600190565b8234116108d05760405162461bcd60e51b815260206004820152600a60248201527f563a6d736756616c756500000000000000000000000000000000000000000000604482015260640161030a565b61095f604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018790523360808201526001600160a01b03861660a08201526101408101859052610120810184905261099584346128c1565b60e08201526001600160a01b03831660c0820152610180810182905260408051808201909152600681527f627269646765000000000000000000000000000000000000000000000000000060208201526000906109f190610ad1565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b8152600401610a1d91906128d8565b6020604051808303818588803b158015610a3657600080fd5b505af1158015610a4a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a6f91906129d2565b60e0830151604080518b8152602081019290925281018290529091506001600160a01b038816907fc4f150c33b1c9146a833662318b1e72e3d07a471886bb6f3a547a8e0bc3a7cfa9060600160405180910390a2505060018055505050505050565b6000610add4683611845565b92915050565b610aeb611913565b610af5600061196d565b565b60ca6020526000908152604090208054600182015460028301805492936001600160a01b038316937401000000000000000000000000000000000000000090930460ff1692909190610b48906129eb565b80601f0160208091040260200160405190810160405280929190818152602001828054610b74906129eb565b8015610bc15780601f10610b9657610100808354040283529160200191610bc1565b820191906000526020600020905b815481529060010190602001808311610ba457829003601f168201915b505050505090806003018054610bd6906129eb565b80601f0160208091040260200160405190810160405280929190818152602001828054610c02906129eb565b8015610c4f5780601f10610c2457610100808354040283529160200191610c4f565b820191906000526020600020905b815481529060010190602001808311610c3257829003601f168201915b5050505050905085565b60026001541415610cac5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161030a565b60026001556001600160a01b03871615801590610d195750610d03886040518060400160405280600b81526020017f746f6b656e5f7661756c74000000000000000000000000000000000000000000815250611682565b6001600160a01b0316876001600160a01b031614155b610d675760405162461bcd60e51b815260040161030a9060208082526004908201527f563a746f00000000000000000000000000000000000000000000000000000000604082015260600190565b6001600160a01b038616610dbd5760405162461bcd60e51b815260206004820152600760248201527f563a746f6b656e00000000000000000000000000000000000000000000000000604482015260640161030a565b60008511610e0d5760405162461bcd60e51b815260206004820152600860248201527f563a616d6f756e74000000000000000000000000000000000000000000000000604482015260640161030a565b6040805160a08101825260008082526020820181905291810191909152606080820181905260808201526001600160a01b038716600090815260c9602052604081205460ff16156110bd576040517f77be18a8000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038916906377be18a890604401600060405180830381600087803b158015610eb957600080fd5b505af1158015610ecd573d6000803e3d6000fd5b505050506001600160a01b03888116600090815260ca6020908152604091829020825160a081018452815481526001820154948516928101929092527401000000000000000000000000000000000000000090930460ff1691810191909152600282018054919291606084019190610f44906129eb565b80601f0160208091040260200160405190810160405280929190818152602001828054610f70906129eb565b8015610fbd5780601f10610f9257610100808354040283529160200191610fbd565b820191906000526020600020905b815481529060010190602001808311610fa057829003601f168201915b50505050508152602001600382018054610fd6906129eb565b80601f0160208091040260200160405190810160405280929190818152602001828054611002906129eb565b801561104f5780601f106110245761010080835404028352916020019161104f565b820191906000526020600020905b81548152906001019060200180831161103257829003601f168201915b5050509190925250505060208101519092506001600160a01b03166110b65760405162461bcd60e51b815260206004820152601060248201527f563a63616e6f6e6963616c546f6b656e00000000000000000000000000000000604482015260640161030a565b508561139a565b60008890506040518060a001604052804681526020018a6001600160a01b03168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561111b57600080fd5b505afa15801561112f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111539190612a4e565b60ff168152602001826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561119457600080fd5b505afa1580156111a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111d09190810190612a6b565b8152602001826001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b15801561120e57600080fd5b505afa158015611222573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261124a9190810190612a6b565b90526040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529093506000906001600160a01b038316906370a082319060240160206040518083038186803b1580156112aa57600080fd5b505afa1580156112be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e291906129d2565b90506112f96001600160a01b03831633308c6119d7565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281906001600160a01b038416906370a082319060240160206040518083038186803b15801561135357600080fd5b505afa158015611367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138b91906129d2565b61139591906128c1565b925050505b611429604051806101a001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b606081018b905233608082015260408051808201909152600b81527f746f6b656e5f7661756c740000000000000000000000000000000000000000006020820152611475908c90611682565b6001600160a01b031660a082015260808101516040517f0c6fab8200000000000000000000000000000000000000000000000000000000916114c0918691908e908790602401612ae2565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526101608201526101408101879052610120810186905261153f86346128c1565b60e08201526001600160a01b03851660c0820152610180810184905260408051808201909152600681527f6272696467650000000000000000000000000000000000000000000000000000602082015260009061159b90610ad1565b6001600160a01b03166396e1785234846040518363ffffffff1660e01b81526004016115c791906128d8565b6020604051808303818588803b1580156115e057600080fd5b505af11580156115f4573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061161991906129d2565b604080518e81526001600160a01b038d81166020830152918101869052606081018390529192508c16907ffd41c851d9a68cdf761055c8f7cb21010b653b27f89f6e3fa224a75eb82a40ac9060800160405180910390a250506001805550505050505050505050565b600061168e8383611845565b9392505050565b61169d611913565b6001600160a01b0381166117195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161030a565b6117228161196d565b50565b6040516001600160a01b0383166024820152604481018290526117ce9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a2e565b505050565b8035600090815260cb602090815260408083208392909183916117fa9187019087016124c8565b6001600160a01b03908116825260208201929092526040016000205416905080610add5761182783611b13565b61168e565b611834611dd0565b61183c611e55565b61172281611eda565b60008061185184611f6a565b83604051602001611863929190612b99565b60408051601f19818403018152908290526097547fbf40fac10000000000000000000000000000000000000000000000000000000083529092506001600160a01b03169063bf40fac1906118bb908490600401612bf1565b60206040518083038186803b1580156118d357600080fd5b505afa1580156118e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190b9190612c04565b949350505050565b6065546001600160a01b03163314610af55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030a565b606580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052611a289085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161176a565b50505050565b6000611a83826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661209c9092919063ffffffff16565b8051909150156117ce5780806020019051810190611aa19190612c21565b6117ce5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161030a565b6000808235611b2860408501602086016124c8565b604051602001611b6792919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b604051602081830303815290604052805190602001209050611bad60008260405180602001611b9590612437565b601f1982820381018352601f909101166040526120ab565b6097549092506001600160a01b0380841691636c0db62b9116611bd660408701602088016124c8565b8635611be86060890160408a01612c43565b611bf560608a018a612c60565b611c0260808c018c612c60565b604051611c169291908e3590602001612ccc565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401611c479796959493929190612d7a565b600060405180830381600087803b158015611c6157600080fd5b505af1158015611c75573d6000803e3d6000fd5b5050506001600160a01b038316600090815260c96020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560ca9091529020849150611cd08282612f21565b50508235600090815260cb60209081526040808320859390929091611cfa919088019088016124c8565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316836020016020810190611d5b91906124c8565b6001600160a01b031684357f9e465b29e576a3e01584e31d607353f21b80c055e813af907c0a495f6cf4f7bc611d946060880188612c60565b611da160808a018a612c60565b611db160608c0160408d01612c43565b604051611dc2959493929190612ff9565b60405180910390a450919050565b600054610100900460ff16611e4d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161030a565b610af56121ad565b600054610100900460ff16611ed25760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161030a565b610af5612230565b6001600160a01b038116611f305760405162461bcd60e51b815260206004820152600e60248201527f41523a7a65726f41646472657373000000000000000000000000000000000000604482015260640161030a565b609780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b606081611faa57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611fd45780611fbe81613036565b9150611fcd9050600a8361309e565b9150611fae565b60008167ffffffffffffffff811115611fef57611fef6124e5565b6040519080825280601f01601f191660200182016040528015612019576020820181803683370190505b5090505b841561190b5761202e6001836128c1565b915061203b600a866130b2565b6120469060306130c6565b60f81b81838151811061205b5761205b6130de565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612095600a8661309e565b945061201d565b606061190b84846000856122b6565b600080844710156120fe5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161030a565b825161214c5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161030a565b8383516020850187f590506001600160a01b03811661190b5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161030a565b600054610100900460ff1661222a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161030a565b60018055565b600054610100900460ff166122ad5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161030a565b610af53361196d565b60608247101561232e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161030a565b6001600160a01b0385163b6123855760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161030a565b600080866001600160a01b031685876040516123a1919061310d565b60006040518083038185875af1925050503d80600081146123de576040519150601f19603f3d011682016040523d82523d6000602084013e6123e3565b606091505b50915091506123f38282866123fe565b979650505050505050565b6060831561240d57508161168e565b82511561241d5782518084602001fd5b8160405162461bcd60e51b815260040161030a9190612bf1565b6120a08061312a83390190565b6001600160a01b038116811461172257600080fd5b6000806000806080858703121561246f57600080fd5b843567ffffffffffffffff81111561248657600080fd5b850160a0818803121561249857600080fd5b935060208501356124a881612444565b925060408501356124b881612444565b9396929550929360600135925050565b6000602082840312156124da57600080fd5b813561168e81612444565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561253d5761253d6124e5565b604052919050565b600067ffffffffffffffff82111561255f5761255f6124e5565b50601f01601f191660200190565b600082601f83011261257e57600080fd5b813561259161258c82612545565b612514565b8181528460208386010111156125a657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c087890312156125dc57600080fd5b8635955060208701356125ee81612444565b94506040870135935060608701359250608087013561260c81612444565b915060a087013567ffffffffffffffff81111561262857600080fd5b61263489828a0161256d565b9150509295509295509295565b60006020828403121561265357600080fd5b813567ffffffffffffffff81111561266a57600080fd5b61190b8482850161256d565b6000806040838503121561268957600080fd5b82359150602083013561269b81612444565b809150509250929050565b60005b838110156126c15781810151838201526020016126a9565b83811115611a285750506000910152565b600081518084526126ea8160208601602086016126a6565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260ff8416604082015260a06060820152600061272f60a08301856126d2565b828103608084015261274181856126d2565b98975050505050505050565b600080600080600080600080610100898b03121561276a57600080fd5b88359750602089013561277c81612444565b9650604089013561278c81612444565b9550606089013594506080890135935060a0890135925060c08901356127b181612444565b915060e089013567ffffffffffffffff8111156127cd57600080fd5b6127d98b828c0161256d565b9150509295985092959890939650565b600080604083850312156127fc57600080fd5b82359150602083013567ffffffffffffffff81111561281a57600080fd5b6128268582860161256d565b9150509250929050565b60006060828403121561284257600080fd5b6040516060810181811067ffffffffffffffff82111715612865576128656124e5565b60405282518152602083015161287a81612444565b60208201526040928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156128d3576128d3612892565b500390565b6020815281516020820152600060208301516128ff60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015161292e60a08401826001600160a01b03169052565b5060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100838101919091528301516101208084019190915283015161014080840191909152830151610160808401919091528301516101a06101808085018290526129ac6101c08601846126d2565b90860151858203601f1901838701529092506129c883826126d2565b9695505050505050565b6000602082840312156129e457600080fd5b5051919050565b600181811c908216806129ff57607f821691505b60208210811415612a39577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60ff8116811461172257600080fd5b600060208284031215612a6057600080fd5b815161168e81612a3f565b600060208284031215612a7d57600080fd5b815167ffffffffffffffff811115612a9457600080fd5b8201601f81018413612aa557600080fd5b8051612ab361258c82612545565b818152856020838501011115612ac857600080fd5b612ad98260208301602086016126a6565b95945050505050565b6080815284516080820152600060208601516001600160a01b0380821660a085015260ff60408901511660c08501526060880151915060a060e0850152612b2d6101208501836126d2565b915060808801517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8085840301610100860152612b6983826126d2565b9188166020860152506001600160a01b03861660408501529150612b8a9050565b82606083015295945050505050565b60008351612bab8184602088016126a6565b7f2e000000000000000000000000000000000000000000000000000000000000009083019081528351612be58160018401602088016126a6565b01600101949350505050565b60208152600061168e60208301846126d2565b600060208284031215612c1657600080fd5b815161168e81612444565b600060208284031215612c3357600080fd5b8151801515811461168e57600080fd5b600060208284031215612c5557600080fd5b813561168e81612a3f565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c9557600080fd5b83018035915067ffffffffffffffff821115612cb057600080fd5b602001915036819003821315612cc557600080fd5b9250929050565b828482377f286272696467656400000000000000000000000000000000000000000000000092019182527ff09f8c88000000000000000000000000000000000000000000000000000000006008830152600c8201527f2900000000000000000000000000000000000000000000000000000000000000602c820152602d01919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60006001600160a01b03808a16835280891660208401525086604083015260ff8616606083015260c06080830152612db660c083018587612d4f565b82810360a0840152612dc881856126d2565b9a9950505050505050505050565b601f8211156117ce57600081815260208120601f850160051c81016020861015612dfd5750805b601f850160051c820191505b81811015612e1c57828155600101612e09565b505050505050565b67ffffffffffffffff831115612e3c57612e3c6124e5565b612e5083612e4a83546129eb565b83612dd6565b6000601f841160018114612ea25760008515612e6c5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355612f1a565b600083815260209020601f19861690835b82811015612ed35786850135825560209485019460019092019101612eb3565b5086821015612f0e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81358155600181016020830135612f3781612444565b6001600160a01b03811690508154817fffffffffffffffffffffffff000000000000000000000000000000000000000082161783556040850135612f7a81612a3f565b74ff00000000000000000000000000000000000000008160a01b16837fffffffffffffffffffffff00000000000000000000000000000000000000000084161717845550505050612fce6060830183612c60565b612fdc818360028601612e24565b5050612feb6080830183612c60565b611a28818360038601612e24565b60608152600061300d606083018789612d4f565b8281036020840152613020818688612d4f565b91505060ff831660408301529695505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561306857613068612892565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826130ad576130ad61306f565b500490565b6000826130c1576130c161306f565b500690565b600082198211156130d9576130d9612892565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000825161311f8184602087016126a6565b919091019291505056fe608060405234801561001057600080fd5b50612080806100206000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80636c0db62b116100e357806395d89b411161008c578063dd62ed3e11610066578063dd62ed3e146103b0578063f16c7934146103f6578063f2fde38b1461040957600080fd5b806395d89b4114610382578063a457c2d71461038a578063a9059cbb1461039d57600080fd5b806377be18a8116100bd57806377be18a8146103315780637cf8ed0d146103445780638da5cb5b1461036457600080fd5b80636c0db62b146102e057806370a08231146102f3578063715018a61461032957600080fd5b80633950935111610145578063461a44781161011f578063461a44781461027457806349d126051461028757806367e828bf1461029057600080fd5b8063395093511461020d5780633ab76e9f1461022057806342e91bb31461025f57600080fd5b806318160ddd1161017657806318160ddd146101d357806323b872dd146101e5578063313ce567146101f857600080fd5b806306fdde0314610192578063095ea7b3146101b0575b600080fd5b61019a61041c565b6040516101a79190611b2e565b60405180910390f35b6101c36101be366004611ba1565b6104ae565b60405190151581526020016101a7565b60cb545b6040519081526020016101a7565b6101c36101f3366004611bcd565b6104c6565b60ce5460405160ff90911681526020016101a7565b6101c361021b366004611ba1565b610546565b60975473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b61027261026d366004611ba1565b610592565b005b61023a610282366004611ce8565b6106aa565b6101d760fc5481565b6102b460fb5460fc5473ffffffffffffffffffffffffffffffffffffffff90911691565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a7565b6102726102ee366004611d1d565b6106bc565b6101d7610301366004611dc7565b73ffffffffffffffffffffffffffffffffffffffff16600090815260c9602052604090205490565b610272610921565b61027261033f366004611ba1565b610935565b60fb5461023a9073ffffffffffffffffffffffffffffffffffffffff1681565b60655473ffffffffffffffffffffffffffffffffffffffff1661023a565b61019a610a40565b6101c3610398366004611ba1565b610a4f565b6101c36103ab366004611ba1565b610b11565b6101d76103be366004611de4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260ca6020908152604080832093909416825291909152205490565b61023a610404366004611e1d565b610b8a565b610272610417366004611dc7565b610b96565b606060cc805461042b90611e64565b80601f016020809104026020016040519081016040528092919081815260200182805461045790611e64565b80156104a45780601f10610479576101008083540402835291602001916104a4565b820191906000526020600020905b81548152906001019060200180831161048757829003601f168201915b5050505050905090565b6000336104bc818585610c33565b5060019392505050565b600073ffffffffffffffffffffffffffffffffffffffff83163014156105335760405162461bcd60e51b815260206004820152600560248201527f42453a746f00000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61053e848484610db2565b949350505050565b33600081815260ca6020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104bc908290869061058d908790611ee7565b610c33565b6040518060400160405280600b81526020017f746f6b656e5f7661756c740000000000000000000000000000000000000000008152506105d1816106aa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461064b5760405162461bcd60e51b815260206004820152600960248201527f41523a64656e6965640000000000000000000000000000000000000000000000604482015260640161052a565b6106558383610dcb565b8273ffffffffffffffffffffffffffffffffffffffff167f397b33b307fc137878ebfc75b295289ec0ee25a31bb5bf034f33256fe8ea2aa68360405161069d91815260200190565b60405180910390a2505050565b60006106b64683610e89565b92915050565b600054610100900460ff16158080156106dc5750600054600160ff909116105b806106f65750303b1580156106f6575060005460ff166001145b6107685760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161052a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156107c657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff8616158015906107ea57508415155b80156107f65750468514155b8015610803575060008351115b8015610810575060008251115b61085c5760405162461bcd60e51b815260206004820152600960248201527f42453a706172616d730000000000000000000000000000000000000000000000604482015260640161052a565b61086587610f7a565b610870828486610f93565b60fb80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff881617905560fc859055801561091857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610929611020565b6109336000611087565b565b6040518060400160405280600b81526020017f746f6b656e5f7661756c74000000000000000000000000000000000000000000815250610974816106aa565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109ee5760405162461bcd60e51b815260206004820152600960248201527f41523a64656e6965640000000000000000000000000000000000000000000000604482015260640161052a565b6109f883836110fe565b8273ffffffffffffffffffffffffffffffffffffffff167f9b5b9a05e4726d8bb959f1440e05c6b8109443f2083bc4e386237d76545265538360405161069d91815260200190565b606060cd805461042b90611e64565b33600081815260ca6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610af95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161052a565b610b068286868403610c33565b506001949350505050565b600073ffffffffffffffffffffffffffffffffffffffff8316301415610b795760405162461bcd60e51b815260206004820152600560248201527f42453a746f000000000000000000000000000000000000000000000000000000604482015260640161052a565b610b83838361126f565b9392505050565b6000610b838383610e89565b610b9e611020565b73ffffffffffffffffffffffffffffffffffffffff8116610c275760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161052a565b610c3081611087565b50565b73ffffffffffffffffffffffffffffffffffffffff8316610cbb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8216610d445760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600033610dc085828561127d565b610b0685858561133a565b73ffffffffffffffffffffffffffffffffffffffff8216610e2e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161052a565b8060cb6000828254610e409190611ee7565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260c9602052604081208054839290610e7a908490611ee7565b90915550610e859050565b5050565b600080610e958461159f565b83604051602001610ea7929190611eff565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526097547fbf40fac100000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff169063bf40fac190610f2a908490600401611b2e565b60206040518083038186803b158015610f4257600080fd5b505afa158015610f56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053e9190611f57565b610f826116d1565b610f8a611756565b610c30816117db565b600054610100900460ff166110105760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161052a565b61101b838383611885565b505050565b60655473ffffffffffffffffffffffffffffffffffffffff1633146109335760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052a565b6065805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff82166111875760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260c96020526040902054818110156112235760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260c960205260408120838303905560cb805484929061125f908490611f74565b9091555061101b90508360008483565b6000336104bc81858561133a565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260ca60209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461133457818110156113275760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161052a565b6113348484848403610c33565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166113c35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff821661144c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260c96020526040902054818110156114e85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161052a565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260c9602052604080822085850390559185168152908120805484929061152c908490611ee7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161159291815260200190565b60405180910390a3611334565b6060816115df57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561160957806115f381611f8b565b91506116029050600a83611ff3565b91506115e3565b60008167ffffffffffffffff81111561162457611624611c0e565b6040519080825280601f01601f19166020018201604052801561164e576020820181803683370190505b5090505b841561053e57611663600183611f74565b9150611670600a86612007565b61167b906030611ee7565b60f81b8183815181106116905761169061201b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506116ca600a86611ff3565b9450611652565b600054610100900460ff1661174e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161052a565b610933611960565b600054610100900460ff166117d35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161052a565b6109336119e3565b73ffffffffffffffffffffffffffffffffffffffff811661183e5760405162461bcd60e51b815260206004820152600e60248201527f41523a7a65726f41646472657373000000000000000000000000000000000000604482015260640161052a565b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900460ff166119025760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161052a565b82516119159060cc906020860190611a69565b5081516119299060cd906020850190611a69565b5060ce80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff929092169190911790555050565b600054610100900460ff166119dd5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161052a565b60018055565b600054610100900460ff16611a605760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161052a565b61093333611087565b828054611a7590611e64565b90600052602060002090601f016020900481019282611a975760008555611add565b82601f10611ab057805160ff1916838001178555611add565b82800160010185558215611add579182015b82811115611add578251825591602001919060010190611ac2565b50611ae9929150611aed565b5090565b5b80821115611ae95760008155600101611aee565b60005b83811015611b1d578181015183820152602001611b05565b838111156113345750506000910152565b6020815260008251806020840152611b4d816040850160208701611b02565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610c3057600080fd5b60008060408385031215611bb457600080fd5b8235611bbf81611b7f565b946020939093013593505050565b600080600060608486031215611be257600080fd5b8335611bed81611b7f565b92506020840135611bfd81611b7f565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611c4e57600080fd5b813567ffffffffffffffff80821115611c6957611c69611c0e565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611caf57611caf611c0e565b81604052838152866020858801011115611cc857600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215611cfa57600080fd5b813567ffffffffffffffff811115611d1157600080fd5b61053e84828501611c3d565b60008060008060008060c08789031215611d3657600080fd5b8635611d4181611b7f565b95506020870135611d5181611b7f565b945060408701359350606087013560ff81168114611d6e57600080fd5b9250608087013567ffffffffffffffff80821115611d8b57600080fd5b611d978a838b01611c3d565b935060a0890135915080821115611dad57600080fd5b50611dba89828a01611c3d565b9150509295509295509295565b600060208284031215611dd957600080fd5b8135610b8381611b7f565b60008060408385031215611df757600080fd5b8235611e0281611b7f565b91506020830135611e1281611b7f565b809150509250929050565b60008060408385031215611e3057600080fd5b82359150602083013567ffffffffffffffff811115611e4e57600080fd5b611e5a85828601611c3d565b9150509250929050565b600181811c90821680611e7857607f821691505b60208210811415611eb2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611efa57611efa611eb8565b500190565b60008351611f11818460208801611b02565b7f2e000000000000000000000000000000000000000000000000000000000000009083019081528351611f4b816001840160208801611b02565b01600101949350505050565b600060208284031215611f6957600080fd5b8151610b8381611b7f565b600082821015611f8657611f86611eb8565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611fbd57611fbd611eb8565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261200257612002611fc4565b500490565b60008261201657612016611fc4565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220f24dcb708d1867134df56fe5efc5ccc3a875e0deca527b2af220b5bde7e6b93664736f6c63430008090033a2646970667358221220abf8c5a35e42ce1f54480f59a3b073492445c3fe339322ddb4639465be6e49ee64736f6c63430008090033", ++ "balance": "0x0" ++ }, ++ "0x0000777700000000000000000000000000000003": { ++ "contractName": "EtherVault", ++ "storage": { ++ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", ++ "0x0000000000000000000000000000000000000000000000000000000000000065": "0x00000000000000000000000026250179c8e8e12104e556c4cd03bcf4dabd51b9", ++ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000000000777700000000000000000000000000000006", ++ "0x029ae2e2f1d6964720a0fa7e6ffa902f995c156242f4f5a930aa9d9765d167d0": "0x0000000000000000000000000000000000000000000000000000000000000001" ++ }, ++ "code": "0x6080604052600436106100b55760003560e01c8063715018a611610069578063f16c79341161004e578063f16c79341461023f578063f2fde38b1461025f578063fe9fbb801461027f57600080fd5b8063715018a6146101ff5780638da5cb5b1461021457600080fd5b80632d1fb3891161009a5780632d1fb3891461016e5780633ab76e9f1461018e578063461a4478146101df57600080fd5b806319ab453c1461012e5780631efa4ec01461014e57600080fd5b36610129574715806100d6575033600090815260c9602052604090205460ff165b6101275760405162461bcd60e51b815260206004820152600960248201527f45563a64656e696564000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b34801561013a57600080fd5b50610127610149366004610dd8565b6102d5565b34801561015a57600080fd5b50610127610169366004610df5565b61044f565b34801561017a57600080fd5b50610127610189366004610e0e565b610517565b34801561019a57600080fd5b5060975473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101eb57600080fd5b506101b56101fa366004610f26565b610646565b34801561020b57600080fd5b50610127610658565b34801561022057600080fd5b5060655473ffffffffffffffffffffffffffffffffffffffff166101b5565b34801561024b57600080fd5b506101b561025a366004610f5b565b61066c565b34801561026b57600080fd5b5061012761027a366004610dd8565b61067f565b34801561028b57600080fd5b506102c561029a366004610dd8565b73ffffffffffffffffffffffffffffffffffffffff16600090815260c9602052604090205460ff1690565b60405190151581526020016101d6565b600054610100900460ff16158080156102f55750600054600160ff909116105b8061030f5750303b15801561030f575060005460ff166001145b6103815760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161011e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156103df57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6103e88261071c565b801561044b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600090815260c9602052604090205460ff166104ae5760405162461bcd60e51b815260206004820152600960248201527f45563a64656e6965640000000000000000000000000000000000000000000000604482015260640161011e565b600260015414156105015760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161011e565b60026001556105103382610735565b5060018055565b61051f6107f0565b73ffffffffffffffffffffffffffffffffffffffff821615801590610570575073ffffffffffffffffffffffffffffffffffffffff8216600090815260c9602052604090205460ff16151581151514155b6105bc5760405162461bcd60e51b815260206004820152600860248201527f45563a706172616d000000000000000000000000000000000000000000000000604482015260640161011e565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260c9602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b60006106524683610857565b92915050565b6106606107f0565b61066a6000610950565b565b60006106788383610857565b9392505050565b6106876107f0565b73ffffffffffffffffffffffffffffffffffffffff81166107105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161011e565b61071981610950565b50565b6107246109c7565b61072c610a4c565b61071981610ad1565b801561044b5760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610795576040519150601f19603f3d011682016040523d82523d6000602084013e61079a565b606091505b50509050806107eb5760405162461bcd60e51b815260206004820152601360248201527f455448207472616e73666572206661696c656400000000000000000000000000604482015260640161011e565b505050565b60655473ffffffffffffffffffffffffffffffffffffffff16331461066a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161011e565b60008061086384610b7b565b83604051602001610875929190610fd2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526097547fbf40fac100000000000000000000000000000000000000000000000000000000835290925073ffffffffffffffffffffffffffffffffffffffff169063bf40fac1906108f890849060040161102a565b60206040518083038186803b15801561091057600080fd5b505afa158015610924573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610948919061107b565b949350505050565b6065805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610a445760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161011e565b61066a610cad565b600054610100900460ff16610ac95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161011e565b61066a610d30565b73ffffffffffffffffffffffffffffffffffffffff8116610b345760405162461bcd60e51b815260206004820152600e60248201527f41523a7a65726f41646472657373000000000000000000000000000000000000604482015260640161011e565b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606081610bbb57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610be55780610bcf816110c7565b9150610bde9050600a8361112f565b9150610bbf565b60008167ffffffffffffffff811115610c0057610c00610e4c565b6040519080825280601f01601f191660200182016040528015610c2a576020820181803683370190505b5090505b841561094857610c3f600183611143565b9150610c4c600a8661115a565b610c5790603061116e565b60f81b818381518110610c6c57610c6c611186565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610ca6600a8661112f565b9450610c2e565b600054610100900460ff16610d2a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161011e565b60018055565b600054610100900460ff16610dad5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161011e565b61066a33610950565b73ffffffffffffffffffffffffffffffffffffffff8116811461071957600080fd5b600060208284031215610dea57600080fd5b813561067881610db6565b600060208284031215610e0757600080fd5b5035919050565b60008060408385031215610e2157600080fd5b8235610e2c81610db6565b915060208301358015158114610e4157600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610e8c57600080fd5b813567ffffffffffffffff80821115610ea757610ea7610e4c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610eed57610eed610e4c565b81604052838152866020858801011115610f0657600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215610f3857600080fd5b813567ffffffffffffffff811115610f4f57600080fd5b61094884828501610e7b565b60008060408385031215610f6e57600080fd5b82359150602083013567ffffffffffffffff811115610f8c57600080fd5b610f9885828601610e7b565b9150509250929050565b60005b83811015610fbd578181015183820152602001610fa5565b83811115610fcc576000848401525b50505050565b60008351610fe4818460208801610fa2565b7f2e00000000000000000000000000000000000000000000000000000000000000908301908152835161101e816001840160208801610fa2565b01600101949350505050565b6020815260008251806020840152611049816040850160208701610fa2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60006020828403121561108d57600080fd5b815161067881610db6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156110f9576110f9611098565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261113e5761113e611100565b500490565b60008282101561115557611155611098565b500390565b60008261116957611169611100565b500690565b6000821982111561118157611181611098565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220a9a80c6d09a8fe0110adcdabd6682b37ae15ded4282fed28d917343fa3f34e2564736f6c63430008090033", ++ "balance": "0xffffffffffffffc87d2531626fffffff" ++ } ++}
+
+ + +
+
+ +
+
+
+ +
+ +
+
+
+ + + + + + + + diff --git a/packages/tokenomics/README.md b/packages/tokenomics/README.md new file mode 100644 index 0000000000..bd5568f415 --- /dev/null +++ b/packages/tokenomics/README.md @@ -0,0 +1,3 @@ +# Overview + +This package contains some simulations for Taiko protocol tokenomics.