From dd22cf2f2faad7a7020f6e039aaef28ffdcce159 Mon Sep 17 00:00:00 2001 From: buddh0 Date: Sun, 29 Sep 2024 10:15:37 +0800 Subject: [PATCH] core: clearup testflag for Bohr --- cmd/geth/chaincmd.go | 5 ----- cmd/geth/config.go | 4 ---- cmd/geth/main.go | 1 - cmd/utils/flags.go | 5 ----- core/genesis.go | 5 +---- .../systemcontracts/bohr/rialto/StakeHubContract | 1 - .../bohr/rialto/ValidatorContract | 1 - core/systemcontracts/bohr/types.go | 8 -------- core/systemcontracts/upgrade.go | 16 ---------------- eth/backend.go | 5 +---- eth/ethconfig/config.go | 3 --- eth/ethconfig/gen_config.go | 6 ------ 12 files changed, 2 insertions(+), 58 deletions(-) delete mode 100644 core/systemcontracts/bohr/rialto/StakeHubContract delete mode 100644 core/systemcontracts/bohr/rialto/ValidatorContract diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index ff6e52ed27..140d256870 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -63,7 +63,6 @@ var ( Flags: flags.Merge([]cli.Flag{ utils.CachePreimagesFlag, utils.OverridePassedForkTime, - utils.OverrideBohr, utils.OverridePascal, utils.OverridePrague, utils.OverrideVerkle, @@ -260,10 +259,6 @@ func initGenesis(ctx *cli.Context) error { v := ctx.Uint64(utils.OverridePassedForkTime.Name) overrides.OverridePassedForkTime = &v } - if ctx.IsSet(utils.OverrideBohr.Name) { - v := ctx.Uint64(utils.OverrideBohr.Name) - overrides.OverrideBohr = &v - } if ctx.IsSet(utils.OverridePascal.Name) { v := ctx.Uint64(utils.OverridePascal.Name) overrides.OverridePascal = &v diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 4be0ff6655..7ab27cd3c3 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -191,10 +191,6 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { v := ctx.Uint64(utils.OverridePassedForkTime.Name) cfg.Eth.OverridePassedForkTime = &v } - if ctx.IsSet(utils.OverrideBohr.Name) { - v := ctx.Uint64(utils.OverrideBohr.Name) - cfg.Eth.OverrideBohr = &v - } if ctx.IsSet(utils.OverridePascal.Name) { v := ctx.Uint64(utils.OverridePascal.Name) cfg.Eth.OverridePascal = &v diff --git a/cmd/geth/main.go b/cmd/geth/main.go index e5e954cb8b..3a041fcc3a 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -73,7 +73,6 @@ var ( utils.SmartCardDaemonPathFlag, utils.RialtoHash, utils.OverridePassedForkTime, - utils.OverrideBohr, utils.OverridePascal, utils.OverridePrague, utils.OverrideVerkle, diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 858f396901..207628c161 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -313,11 +313,6 @@ var ( Usage: "Manually specify the hard fork timestamps which have passed on the mainnet, overriding the bundled setting", Category: flags.EthCategory, } - OverrideBohr = &cli.Uint64Flag{ - Name: "override.bohr", - Usage: "Manually specify the Bohr fork timestamp, overriding the bundled setting", - Category: flags.EthCategory, - } OverridePascal = &cli.Uint64Flag{ Name: "override.pascal", Usage: "Manually specify the Pascal fork timestamp, overriding the bundled setting", diff --git a/core/genesis.go b/core/genesis.go index 02d27031fd..e06938f327 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -217,7 +217,6 @@ func (e *GenesisMismatchError) Error() string { // Typically, these modifications involve hardforks that are not enabled on the BSC mainnet, intended for testing purposes. type ChainOverrides struct { OverridePassedForkTime *uint64 - OverrideBohr *uint64 OverridePascal *uint64 OverridePrague *uint64 OverrideVerkle *uint64 @@ -254,9 +253,7 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *triedb.Database, g config.CancunTime = overrides.OverridePassedForkTime config.HaberTime = overrides.OverridePassedForkTime config.HaberFixTime = overrides.OverridePassedForkTime - } - if overrides != nil && overrides.OverrideBohr != nil { - config.BohrTime = overrides.OverrideBohr + config.BohrTime = overrides.OverridePassedForkTime } if overrides != nil && overrides.OverridePascal != nil { config.PascalTime = overrides.OverridePascal diff --git a/core/systemcontracts/bohr/rialto/StakeHubContract b/core/systemcontracts/bohr/rialto/StakeHubContract deleted file mode 100644 index d07faefad6..0000000000 --- a/core/systemcontracts/bohr/rialto/StakeHubContract +++ /dev/null @@ -1 +0,0 @@ -608060405260043610620003ff5760003560e01c80638456cb59116200020f578063cbb04d9d1162000123578063e992aaf511620000ad578063f80a34021162000078578063f80a34021462000c97578063fb50b31f1462000cbc578063fc0c5ff11462000ce1578063ff69ab611462000cf957600080fd5b8063e992aaf51462000c14578063efdbf0e11462000c2c578063f1f74d841462000c68578063f1fad1041462000c8057600080fd5b8063d8ca511f11620000ee578063d8ca511f1462000ba7578063daacdb661462000bbf578063dbda7fb31462000bd7578063e8f67c3b1462000bfc57600080fd5b8063cbb04d9d1462000b03578063d115a2061462000b44578063d6ca429d1462000b5d578063d7c2dfc81462000b8257600080fd5b8063ac43175111620001a5578063bff02e201162000170578063bff02e201462000a90578063c38fbec81462000ac6578063c473318f1462000aeb578063c8509d8114620008e457600080fd5b8063ac4317511462000a0e578063b187bd261462000a33578063baa7199e1462000a53578063bdceadf31462000a7857600080fd5b80638cd22b2211620001e65780638cd22b221462000979578063982ef0a7146200099e578063a43569b314620009b5578063aad3ec9614620009e957600080fd5b80638456cb59146200090957806386d5450614620009215780638a4d3fa8146200095b57600080fd5b806349f41a42116200031357806364028fbd116200029d57806375cc7d89116200026857806375cc7d89146200088f57806376e7d6d614620008b45780638129fc1c14620008cc578063831d65d114620008e457600080fd5b806364028fbd14620007ca578063663706d314620007e15780636ec01b2714620008125780636f8e2fa4146200086a57600080fd5b80634e6fd6c411620002de5780634e6fd6c414620007315780635949187114620007495780635e7cc1c9146200076e57806363a036b5146200079357600080fd5b806349f41a4214620006985780634a49ac4c14620006bd5780634bf6c88214620006e25780634d99dd16146200070c57600080fd5b80631fa8882b1162000395578063417c73a71162000360578063417c73a714620005e4578063449ecfe6146200060957806345211bfd146200062e5780634838d165146200065357600080fd5b80631fa8882b14620005555780632b727c86146200056d5780632e8e8c7114620005925780633840998814620005cc57600080fd5b8063092193ab11620003d6578063092193ab14620004a05780630e9fbf5114620004b75780631182b87514620004dc57806317b4f353146200051057600080fd5b8063046f7da2146200041f578063059ddd2214620004375780630661806e146200047957600080fd5b366200041a5760345460ff166001146200041857600080fd5b005b600080fd5b3480156200042c57600080fd5b506200041862000d11565b3480156200044457600080fd5b506200045c6200045636600462009910565b62000da3565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200048657600080fd5b506200049160365481565b60405190815260200162000470565b62000418620004b136600462009910565b620011cb565b348015620004c457600080fd5b5062000418620004d636600462009974565b6200181c565b348015620004e957600080fd5b5062000501620004fb366004620099b9565b62001b46565b60405162000470919062009a6c565b3480156200051d57600080fd5b506200045c6200052f36600462009b62565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200056257600080fd5b506200049161025881565b3480156200057a57600080fd5b506200045c6200058c36600462009910565b62001eb9565b3480156200059f57600080fd5b506200045c620005b136600462009910565b604d602052600090815260409020546001600160a01b031681565b348015620005d957600080fd5b506200049160375481565b348015620005f157600080fd5b50620004186200060336600462009910565b62001f0e565b3480156200061657600080fd5b50620004186200062836600462009910565b62001f90565b3480156200063b57600080fd5b50620004186200064d36600462009910565b62002175565b3480156200066057600080fd5b50620006876200067236600462009910565b60016020526000908152604090205460ff1681565b604051901515815260200162000470565b348015620006a557600080fd5b5062000418620006b736600462009910565b62002373565b348015620006ca57600080fd5b5062000418620006dc36600462009910565b6200258f565b348015620006ef57600080fd5b50620006f9600881565b60405160ff909116815260200162000470565b3480156200071957600080fd5b50620004186200072b36600462009bb7565b6200260b565b3480156200073e57600080fd5b506200045c61dead81565b3480156200075657600080fd5b50620004186200076836600462009bf5565b62002c3b565b3480156200077b57600080fd5b50620004186200078d36600462009c65565b62003a34565b348015620007a057600080fd5b50620007b8620007b236600462009c85565b62003c5d565b60405162000470949392919062009cee565b62000418620007db36600462009daa565b62004302565b348015620007ee57600080fd5b50620004916200080036600462009910565b60446020526000908152604090205481565b3480156200081f57600080fd5b50620008376200083136600462009910565b62004986565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000470565b3480156200087757600080fd5b50620005016200088936600462009910565b62004a2b565b3480156200089c57600080fd5b5062000418620008ae36600462009910565b62004e57565b348015620008c157600080fd5b5062000491603d5481565b348015620008d957600080fd5b506200041862005029565b348015620008f157600080fd5b506200041862000903366004620099b9565b6200533b565b3480156200091657600080fd5b5062000418620053a5565b3480156200092e57600080fd5b506200045c6200094036600462009910565b6043602052600090815260409020546001600160a01b031681565b3480156200096857600080fd5b5062000491670de0b6b3a764000081565b3480156200098657600080fd5b50620004916200099836600462009bb7565b6200543d565b62000418620009af36600462009e82565b620054f6565b348015620009c257600080fd5b50620009da620009d436600462009910565b62005b93565b60405162000470919062009ec0565b348015620009f657600080fd5b506200041862000a0836600462009bb7565b62005e80565b34801562000a1b57600080fd5b506200041862000a2d36600462009f3d565b62005eed565b34801562000a4057600080fd5b5060005462010000900460ff1662000687565b34801562000a6057600080fd5b506200041862000a7236600462009ff6565b62006d8c565b34801562000a8557600080fd5b5062000491603c5481565b34801562000a9d57600080fd5b5062000ab562000aaf36600462009c85565b62006f59565b60405162000470939291906200a052565b34801562000ad357600080fd5b506200041862000ae536600462009910565b62007135565b34801562000af857600080fd5b506200049160385481565b34801562000b1057600080fd5b5062000b2862000b2236600462009910565b620073f5565b6040805193845291151560208401529082015260600162000470565b34801562000b5157600080fd5b5062000491620186a081565b34801562000b6a57600080fd5b506200041862000b7c3660046200a0af565b62007838565b34801562000b8f57600080fd5b506200041862000ba13660046200a198565b62007a5d565b34801562000bb457600080fd5b5062000491603b5481565b34801562000bcc57600080fd5b506200049160495481565b34801562000be457600080fd5b506200045c62000bf636600462009910565b62007b53565b34801562000c0957600080fd5b506200049160355481565b34801562000c2157600080fd5b5062000491603a5481565b34801562000c3957600080fd5b506200049162000c4b36600462009b62565b805160208183018101805160468252928201919093012091525481565b34801562000c7557600080fd5b5062000491603e5481565b34801562000c8d57600080fd5b50620006f9601181565b34801562000ca457600080fd5b506200049162000cb636600462009bb7565b62007f7d565b34801562000cc957600080fd5b506200041862000cdb36600462009f3d565b62007fee565b34801562000cee57600080fd5b506200049160395481565b34801562000d0657600080fd5b5062000491604a5481565b600054630100000090046001600160a01b0316331462000d44576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000d6e57604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000e0e906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462000e3c906200a1fe565b801562000e8d5780601f1062000e615761010080835404028352916020019162000e8d565b820191906000526020600020905b81548152906001019060200180831162000e6f57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000eb8906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462000ee6906200a1fe565b801562000f375780601f1062000f0b5761010080835404028352916020019162000f37565b820191906000526020600020905b81548152906001019060200180831162000f1957829003601f168201915b5050505050815260200160018201805462000f52906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462000f80906200a1fe565b801562000fd15780601f1062000fa55761010080835404028352916020019162000fd1565b820191906000526020600020905b81548152906001019060200180831162000fb357829003601f168201915b5050505050815260200160028201805462000fec906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200101a906200a1fe565b80156200106b5780601f106200103f576101008083540402835291602001916200106b565b820191906000526020600020905b8154815290600101906020018083116200104d57829003601f168201915b5050505050815260200160038201805462001086906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620010b4906200a1fe565b8015620011055780601f10620010d95761010080835404028352916020019162001105565b820191906000526020600020905b815481529060010190602001808311620010e757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620011a4575050509190925250509051949350505050565b3361100014620011f757604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b0380821660009081526043602090815260408083205484168084526041835281842082516101808101845281548716815260018201548716948101949094526002810154909516918301919091526003840154606083015260048401805491949160808401919062001270906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200129e906200a1fe565b8015620012ef5780601f10620012c357610100808354040283529160200191620012ef565b820191906000526020600020905b815481529060010190602001808311620012d157829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200131a906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462001348906200a1fe565b8015620013995780601f106200136d5761010080835404028352916020019162001399565b820191906000526020600020905b8154815290600101906020018083116200137b57829003601f168201915b50505050508152602001600182018054620013b4906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620013e2906200a1fe565b8015620014335780601f10620014075761010080835404028352916020019162001433565b820191906000526020600020905b8154815290600101906020018083116200141557829003601f168201915b505050505081526020016002820180546200144e906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200147c906200a1fe565b8015620014cd5780601f10620014a157610100808354040283529160200191620014cd565b820191906000526020600020905b815481529060010190602001808311620014af57829003601f168201915b50505050508152602001600382018054620014e8906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462001516906200a1fe565b8015620015675780601f106200153b5761010080835404028352916020019162001567565b820191906000526020600020905b8154815290600101906020018083116200154957829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162001606575050509190925250505060408101519091506001600160a01b031615806200164357508060e001515b156200170057604051611002903490600081818185875af1925050503d80600081146200168d576040519150601f19603f3d011682016040523d82523d6000602084013e62001692565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d604051620016f39060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200175757600080fd5b505af11580156200176c573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea634604051620017ad91815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b91620017e2919086906004016200a234565b600060405180830381600087803b158015620017fd57600080fd5b505af115801562001812573d6000803e3d6000fd5b5050505050505b50565b33611001146200184457604051630f22c43960e41b81526110016004820152602401620011ee565b60005462010000900460ff16156200186f57604051631785c68160e01b815260040160405180910390fd5b600060458383604051620018859291906200a24e565b908152604051908190036020019020546001600160a01b03169050620018ad603f8262008257565b620018cb5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038116600090815260416020526040812090620018f2610258426200a274565b604a546000828152604b602052604090205491925011620019265760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b60205260408120805460019290620019479084906200a297565b90915550506040516046906200196190879087906200a24e565b908152602001604051809103902054600014158015620019b157504261025860468787604051620019949291906200a24e565b908152602001604051809103902054620019af91906200a297565b105b15620019d057604051631898eb6b60e01b815260040160405180910390fd5b600080620019e08560026200827a565b915091508162001a0357604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562001a56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a7c91906200a2ad565b905062001a8a858362008304565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600260405162001aca939291906200a2dd565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001b08916001600160a01b0316908a906004016200a234565b600060405180830381600087803b15801562001b2357600080fd5b505af115801562001b38573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001b7057604051630f22c43960e41b81526120006004820152602401620011ee565b60005462010000900460ff161562001b9b57604051631785c68160e01b815260040160405180910390fd5b6034805460ff19166001179055604080516020601f8501819004810282018101909252838152600091829162001bec918790879081908401838280828437600092019190915250620084cb92505050565b915091508062001c0f5760405163035ede3560e21b815260040160405180910390fd5b816060015160000362001c35575050604080516000815260208101909152905062001ea8565b606082015160405163e04c83a760e01b81526000916110049163e04c83a79162001c659160040190815260200190565b6020604051808303816000875af115801562001c85573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cab91906200a30c565b90508062001d525782602001516001600160a01b031683600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a8560600151600160405162001d079291906200a32c565b60405180910390a385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092965062001ea895505050505050565b600062001d5f846200862e565b9050600081600481111562001d785762001d786200a2c7565b0362001d9a575050604080516000815260208101909152925062001ea8915050565b6040516000906110049047908381818185875af1925050503d806000811462001de0576040519150601f19603f3d011682016040523d82523d6000602084013e62001de5565b606091505b505090508062001e08576040516312171d8360e31b815260040160405180910390fd5b84602001516001600160a01b031685600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a87606001518560405162001e5b9291906200a32c565b60405180910390a387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092985062001ea8975050505050505050565b6034805460ff191690559392505050565b60008162001ec9603f8262008257565b62001ee75760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038084166000908152604160205260409020600d01541691505b50919050565b600054630100000090046001600160a01b0316331462001f41576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001fbb57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001fed5760405163b1d02c3d60e01b815260040160405180910390fd5b8062001ffb603f8262008257565b620020195760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff166200205757604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa158015620020a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020cd91906200a2ad565b1015620020ed576040516317b204bf60e11b815260040160405180910390fd5b4281600b01541115620021135760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff191690556049805460019190600090620021379084906200a353565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff1615620021a057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620021d25760405163b1d02c3d60e01b815260040160405180910390fd5b620021dc62008c97565b620021e9603f8262008257565b620022075760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166200222f57604051636520611b60e11b815260040160405180910390fd5b6001600160a01b03828116600090815260436020526040902054161515806200227057506001600160a01b03821660009081526047602052604090205460ff165b156200228f57604051631e6f587560e11b815260040160405180910390fd5b60006200229b62008c97565b6001600160a01b0381166000908152604160205260409020600c810154919250904290620022cd90610258906200a297565b1115620022ed57604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b3362002381603f8262008257565b6200239f5760405163056e881160e01b815260040160405180910390fd5b60005462010000900460ff1615620023ca57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620023fc5760405163b1d02c3d60e01b815260040160405180910390fd5b6001600160a01b038281166000908152604d60205260409020541615620024365760405163bebdc75760e01b815260040160405180910390fd5b62002443603f8362008257565b15620024625760405163bebdc75760e01b815260040160405180910390fd5b336000818152604160205260409020600d01546001600160a01b039081169084168103620024a35760405163bebdc75760e01b815260040160405180910390fd5b6001600160a01b03811615620024da576001600160a01b0381166000908152604d6020526040902080546001600160a01b03191690555b6001600160a01b038281166000908152604160205260409020600d0180546001600160a01b0319169186169182179055156200253f576001600160a01b038481166000908152604d6020526040902080546001600160a01b0319169184169190911790555b836001600160a01b0316816001600160a01b0316836001600160a01b03167fcbb728765de145e99c00e8ae32a325231e850359b7b8a6da3b84d672ab3f1d0a60405160405180910390a450505050565b600054630100000090046001600160a01b03163314620025c2576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff16156200263657604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620026685760405163b1d02c3d60e01b815260040160405180910390fd5b8162002676603f8262008257565b620026945760405163056e881160e01b815260040160405180910390fd5b81600003620026b657604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b03808416600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805433949160808401916200271e906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200274c906200a1fe565b80156200279d5780601f1062002771576101008083540402835291602001916200279d565b820191906000526020600020905b8154815290600101906020018083116200277f57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620027c8906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620027f6906200a1fe565b8015620028475780601f106200281b5761010080835404028352916020019162002847565b820191906000526020600020905b8154815290600101906020018083116200282957829003601f168201915b5050505050815260200160018201805462002862906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462002890906200a1fe565b8015620028e15780601f10620028b557610100808354040283529160200191620028e1565b820191906000526020600020905b815481529060010190602001808311620028c357829003601f168201915b50505050508152602001600282018054620028fc906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200292a906200a1fe565b80156200297b5780601f106200294f576101008083540402835291602001916200297b565b820191906000526020600020905b8154815290600101906020018083116200295d57829003601f168201915b5050505050815260200160038201805462002996906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620029c4906200a1fe565b801562002a155780601f10620029e95761010080835404028352916020019162002a15565b820191906000526020600020905b815481529060010190602001808311620029f757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162002ab4575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af115801562002b2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b5491906200a2ad565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b40829802878460405162002ba5929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b03160362002bd25762002bd28662008cd8565b6040808301519051633041949b60e01b815261200591633041949b9162002bff919087906004016200a234565b600060405180830381600087803b15801562002c1a57600080fd5b505af115801562002c2f573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff161562002c6657604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562002c985760405163b1d02c3d60e01b815260040160405180910390fd5b8362002ca6603f8262008257565b62002cc45760405163056e881160e01b815260040160405180910390fd5b8362002cd2603f8262008257565b62002cf05760405163056e881160e01b815260040160405180910390fd5b6034805460ff19166001179055600084900362002d2057604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b03160362002d535760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162002dbb906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462002de9906200a1fe565b801562002e3a5780601f1062002e0e5761010080835404028352916020019162002e3a565b820191906000526020600020905b81548152906001019060200180831162002e1c57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002e65906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462002e93906200a1fe565b801562002ee45780601f1062002eb85761010080835404028352916020019162002ee4565b820191906000526020600020905b81548152906001019060200180831162002ec657829003601f168201915b5050505050815260200160018201805462002eff906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462002f2d906200a1fe565b801562002f7e5780601f1062002f525761010080835404028352916020019162002f7e565b820191906000526020600020905b81548152906001019060200180831162002f6057829003601f168201915b5050505050815260200160028201805462002f99906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462002fc7906200a1fe565b8015620030185780601f1062002fec5761010080835404028352916020019162003018565b820191906000526020600020905b81548152906001019060200180831162002ffa57829003601f168201915b5050505050815260200160038201805462003033906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462003061906200a1fe565b8015620030b25780601f106200308657610100808354040283529160200191620030b2565b820191906000526020600020905b8154815290600101906020018083116200309457829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200315157505050919092525050506001600160a01b03808916600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805494955091939092916080840191620031dc906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200320a906200a1fe565b80156200325b5780601f106200322f576101008083540402835291602001916200325b565b820191906000526020600020905b8154815290600101906020018083116200323d57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003286906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620032b4906200a1fe565b8015620033055780601f10620032d95761010080835404028352916020019162003305565b820191906000526020600020905b815481529060010190602001808311620032e757829003601f168201915b5050505050815260200160018201805462003320906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200334e906200a1fe565b80156200339f5780601f1062003373576101008083540402835291602001916200339f565b820191906000526020600020905b8154815290600101906020018083116200338157829003601f168201915b50505050508152602001600282018054620033ba906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620033e8906200a1fe565b8015620034395780601f106200340d5761010080835404028352916020019162003439565b820191906000526020600020905b8154815290600101906020018083116200341b57829003601f168201915b5050505050815260200160038201805462003454906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462003482906200a1fe565b8015620034d35780601f10620034a757610100808354040283529160200191620034d3565b820191906000526020600020905b815481529060010190602001808311620034b557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620035725750505050508152505090508060e001518015620035b55750876001600160a01b0316836001600160a01b031614155b15620035d457604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af11580156200362b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200365191906200a2ad565b9050603754811015620036775760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b03161480156200370c57506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa158015620036e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200370a91906200a2ad565b105b156200372b576040516317b204bf60e11b815260040160405180910390fd5b6000620186a0603a54836200374191906200a369565b6200374d91906200a274565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d8060008114620037a2576040519150601f19603f3d011682016040523d82523d6000602084013e620037a7565b606091505b5050905080620037ca576040516312171d8360e31b815260040160405180910390fd5b620037d682846200a353565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af11580156200382c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200385391906200a2ad565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e8589604051620038b8939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620038fc57620038fc6200a383565b60200260200101906001600160a01b031690816001600160a01b0316815250508560400151816001815181106200393757620039376200a383565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620039789084908c906004016200a399565b600060405180830381600087803b1580156200399357600080fd5b505af1158015620039a8573d6000803e3d6000fd5b505050508a1562003a1a576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b8152600401620039e59291906200a234565b600060405180830381600087803b15801562003a0057600080fd5b505af115801562003a15573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff161562003a5f57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562003a915760405163b1d02c3d60e01b815260040160405180910390fd5b62003a9b62008c97565b62003aa8603f8262008257565b62003ac65760405163056e881160e01b815260040160405180910390fd5b600062003ad262008c97565b6001600160a01b0381166000908152604160205260409020600c81015491925090429062003b0490610258906200a297565b111562003b2457604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b9091048116908516111562003b5e5760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b03908116908616101562003b9c57600982015462003b969086906001600160401b03166200a3c5565b62003bb6565b600982015462003bb6906001600160401b0316866200a3c5565b60098301546001600160401b039182169250600160801b90041681111562003bf15760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062003c70603f62008dfe565b905080861015620042f957841562003c89578462003c8b565b805b945060008562003c9c88846200a353565b1162003cb45762003cae87836200a353565b62003cb6565b855b9050806001600160401b0381111562003cd35762003cd362009a81565b60405190808252806020026020018201604052801562003cfd578160200160208202803683370190505b509450806001600160401b0381111562003d1b5762003d1b62009a81565b60405190808252806020026020018201604052801562003d45578160200160208202803683370190505b509350806001600160401b0381111562003d635762003d6362009a81565b60405190808252806020026020018201604052801562003d9857816020015b606081526020019060019003908162003d825790505b50925060005b81811015620042f657600062003dc262003db9838b6200a297565b603f9062008e09565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162003e2f906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462003e5d906200a1fe565b801562003eae5780601f1062003e825761010080835404028352916020019162003eae565b820191906000526020600020905b81548152906001019060200180831162003e9057829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003ed9906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462003f07906200a1fe565b801562003f585780601f1062003f2c5761010080835404028352916020019162003f58565b820191906000526020600020905b81548152906001019060200180831162003f3a57829003601f168201915b5050505050815260200160018201805462003f73906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462003fa1906200a1fe565b801562003ff25780601f1062003fc65761010080835404028352916020019162003ff2565b820191906000526020600020905b81548152906001019060200180831162003fd457829003601f168201915b505050505081526020016002820180546200400d906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200403b906200a1fe565b80156200408c5780601f1062004060576101008083540402835291602001916200408c565b820191906000526020600020905b8154815290600101906020018083116200406e57829003601f168201915b50505050508152602001600382018054620040a7906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620040d5906200a1fe565b8015620041265780601f10620040fa5761010080835404028352916020019162004126565b820191906000526020600020905b8154815290600101906020018083116200410857829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620041c55750505050508152505090508060000151888481518110620041fe57620041fe6200a383565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e00151620042975780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200426b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200429191906200a2ad565b6200429a565b60005b878481518110620042af57620042af6200a383565b6020026020010181815250508060800151868481518110620042d557620042d56200a383565b6020026020010181905250505080620042ee906200a3e8565b905062003d9e565b50505b92959194509250565b60005462010000900460ff16156200432d57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200435f5760405163b1d02c3d60e01b815260040160405180910390fd5b336200436d603f8262008257565b156200438c57604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152604d60205260409020541615620043c657604051631a0a9b9f60e21b815260040160405180910390fd5b6001600160a01b03888116600090815260436020526040902054161515806200440757506001600160a01b03881660009081526047602052604090205460ff165b156200442657604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b031660458888604051620044459291906200a24e565b908152604051908190036020019020546001600160a01b03161415806200448f5750604887876040516200447b9291906200a24e565b9081526040519081900360200190205460ff165b15620044ae576040516311fdb94760e01b815260040160405180910390fd5b6000620044bc83806200a404565b604051602001620044cf9291906200a24e565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff1615620045195760405163c0bf414360e01b815260040160405180910390fd5b60006200452f670de0b6b3a7640000346200a353565b905060365481101562004555576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a166200457d57604051636520611b60e11b815260040160405180910390fd5b61138862004592604087016020880162009c65565b6001600160401b03161180620045d85750620045b5604086016020870162009c65565b6001600160401b0316620045cd602087018762009c65565b6001600160401b0316115b80620046175750620045f1604086016020870162009c65565b6001600160401b03166200460c606087016040880162009c65565b6001600160401b0316115b15620046365760405163dc81db8560e01b815260040160405180910390fd5b620046816200464685806200a404565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062008e1792505050565b6200469f57604051635dba5ad760e01b815260040160405180910390fd5b620046ae838a8a8a8a62008fb9565b620046cc57604051631647e3cb60e11b815260040160405180910390fd5b60006200471a84620046df87806200a404565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620090e992505050565b905062004729603f85620091ea565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620047a98b8d836200a4ac565b508560058201620047bb82826200a574565b5087905060098201620047cf82826200a6ad565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b031916928816929092179091555185906045906200481d908e908e906200a24e565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620048a09291906200a77d565b60405180910390a460408051848152602081018590526001600160a01b0387169182916000805160206200ba84833981519152910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816916000805160206200ba84833981519152910160405180910390a3604051633041949b60e01b815261200590633041949b906200494490859089906004016200a234565b600060405180830381600087803b1580156200495f57600080fd5b505af115801562004974573d6000803e3d6000fd5b50505050505050505050505050505050565b604080516060810182526000808252602082018190529181019190915281620049b1603f8262008257565b620049cf5760405163056e881160e01b815260040160405180910390fd5b50506001600160a01b031660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915290565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608281019190915260048401805491949160808401919062004a98906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462004ac6906200a1fe565b801562004b175780601f1062004aeb5761010080835404028352916020019162004b17565b820191906000526020600020905b81548152906001019060200180831162004af957829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462004b42906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462004b70906200a1fe565b801562004bc15780601f1062004b955761010080835404028352916020019162004bc1565b820191906000526020600020905b81548152906001019060200180831162004ba357829003601f168201915b5050505050815260200160018201805462004bdc906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462004c0a906200a1fe565b801562004c5b5780601f1062004c2f5761010080835404028352916020019162004c5b565b820191906000526020600020905b81548152906001019060200180831162004c3d57829003601f168201915b5050505050815260200160028201805462004c76906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462004ca4906200a1fe565b801562004cf55780601f1062004cc95761010080835404028352916020019162004cf5565b820191906000526020600020905b81548152906001019060200180831162004cd757829003601f168201915b5050505050815260200160038201805462004d10906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462004d3e906200a1fe565b801562004d8f5780601f1062004d635761010080835404028352916020019162004d8f565b820191906000526020600020905b81548152906001019060200180831162004d7157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162004e2e5750505091909252505050608001519392505050565b336110011462004e7f57604051630f22c43960e41b81526110016004820152602401620011ee565b6001600160a01b038082166000908152604360205260409020541662004ea7603f8262008257565b62004ec55760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004f28573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f4e91906200a2ad565b90506000603d544262004f6291906200a297565b905062004f70838262008304565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004fb0939291906200a2dd565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004fee916001600160a01b03169088906004016200a234565b600060405180830381600087803b1580156200500957600080fd5b505af11580156200501e573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff16158080156200504a5750600054600160ff909116105b80620050665750303b15801562005066575060005460ff166001145b620050cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620011ee565b6000805460ff191660011790558015620050ef576000805461ff0019166101001790555b334114620051105760405163022d8c9560e31b815260040160405180910390fd5b3a1562005130576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755602d603855607860398190556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c55603d9190915560b4603e55604a556040805160c0810190915260a080825260609182916200baa46020830139806020019051810190620051bc91906200a7b9565b9150604051806101e001604052806101c081526020016200bb446101c09139806020019051810190620051f091906200a85d565b905060005b82518110156200525f576001604760008584815181106200521a576200521a6200a383565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562005257816200a3e8565b9050620051f5565b5060005b8151811015620052d057600160488383815181106200528657620052866200a383565b60200260200101516040516200529d91906200a95a565b908152604051908190036020019020805491151560ff19909216919091179055620052c8816200a3e8565b905062005263565b50620052f07304d63abcd2b9b1baa327f2dda0f873f197ccd18662009201565b5050801562001819576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b33612000146200536357604051630f22c43960e41b81526120006004820152602401620011ee565b7faa5ba621c8b3d7d05bb9e51a7506108251d4d5dbe542ca66fc7bb52aacb02b6583838360405162005398939291906200a978565b60405180910390a1505050565b600054630100000090046001600160a01b03163314620053d8576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff16156200540357604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60006200544c603f8462008257565b6200546a5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa158015620054c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620054ed91906200a2ad565b90505b92915050565b60005462010000900460ff16156200552157604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620055535760405163b1d02c3d60e01b815260040160405180910390fd5b8162005561603f8262008257565b6200557f5760405163056e881160e01b815260040160405180910390fd5b6037543490811015620055a55760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b03808516600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805433949160808401916200560d906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200563b906200a1fe565b80156200568c5780601f1062005660576101008083540402835291602001916200568c565b820191906000526020600020905b8154815290600101906020018083116200566e57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620056b7906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620056e5906200a1fe565b8015620057365780601f106200570a5761010080835404028352916020019162005736565b820191906000526020600020905b8154815290600101906020018083116200571857829003601f168201915b5050505050815260200160018201805462005751906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200577f906200a1fe565b8015620057d05780601f10620057a457610100808354040283529160200191620057d0565b820191906000526020600020905b815481529060010190602001808311620057b257829003601f168201915b50505050508152602001600282018054620057eb906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462005819906200a1fe565b80156200586a5780601f106200583e576101008083540402835291602001916200586a565b820191906000526020600020905b8154815290600101906020018083116200584c57829003601f168201915b5050505050815260200160038201805462005885906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620058b3906200a1fe565b8015620059045780601f10620058d85761010080835404028352916020019162005904565b820191906000526020600020905b815481529060010190602001808311620058e657829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620059a35750505050508152505090508060e001518015620059e65750856001600160a01b0316826001600160a01b031614155b1562005a0557604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562005a56573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062005a7d91906200a2ad565b9050826001600160a01b0316876001600160a01b03166000805160206200ba84833981519152838760405162005abd929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b9162005af2919087906004016200a234565b600060405180830381600087803b15801562005b0d57600080fd5b505af115801562005b22573d6000803e3d6000fd5b50505050851562001812576040516372f6ad8f60e11b81526120059063e5ed5b1e9062005b569086908b906004016200a234565b600060405180830381600087803b15801562005b7157600080fd5b505af115801562005b86573d6000803e3d6000fd5b5050505050505050505050565b62005bbf6040518060800160405280606081526020016060815260200160608152602001606081525090565b8162005bcd603f8262008257565b62005beb5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383166000908152604160205260409081902081516080810190925260050180548290829062005c22906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462005c50906200a1fe565b801562005ca15780601f1062005c755761010080835404028352916020019162005ca1565b820191906000526020600020905b81548152906001019060200180831162005c8357829003601f168201915b5050505050815260200160018201805462005cbc906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462005cea906200a1fe565b801562005d3b5780601f1062005d0f5761010080835404028352916020019162005d3b565b820191906000526020600020905b81548152906001019060200180831162005d1d57829003601f168201915b5050505050815260200160028201805462005d56906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462005d84906200a1fe565b801562005dd55780601f1062005da95761010080835404028352916020019162005dd5565b820191906000526020600020905b81548152906001019060200180831162005db757829003601f168201915b5050505050815260200160038201805462005df0906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462005e1e906200a1fe565b801562005e6f5780601f1062005e435761010080835404028352916020019162005e6f565b820191906000526020600020905b81548152906001019060200180831162005e5157829003601f168201915b505050505081525050915050919050565b60005462010000900460ff161562005eab57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005edd5760405163b1d02c3d60e01b815260040160405180910390fd5b62005ee982826200929a565b5050565b336110071462005f1557604051630f22c43960e41b81526110076004820152602401620011ee565b62005f826040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b156200603d576020811462005fb45783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162005ff7918585808385018382808284376000920191909152509293925050620094039050565b90506108fc8110806200600b575061271081115b15620060345784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b60355562006d47565b620060ae6040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b15620061785760208114620060e05783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006123918585808385018382808284376000920191909152509293925050620094039050565b9050683635c9adc5dea0000081108062006146575069152d02c7e14af680000081115b156200616f5784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b60365562006d47565b620061eb604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b15620062b257602081146200621d5783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006260918585808385018382808284376000920191909152509293925050620094039050565b905067016345785d8a0000811080620062805750678ac7230489e8000081115b15620062a95784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b60375562006d47565b62006323604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b15620063db5760208114620063555783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006398918585808385018382808284376000920191909152509293925050620094039050565b9050801580620063a957506101f481115b15620063d25784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b60385562006d47565b620064446040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b15620065015760208114620064765783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f8401819004810282018101909252828152600091620064b9918585808385018382808284376000920191909152509293925050620094039050565b90506203f480811080620064cf575062278d0081115b15620064f85784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b60395562006d47565b6200656f60405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b156200661c5760208114620065a15783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f8401819004810282018101909252828152600091620065e4918585808385018382808284376000920191909152509293925050620094039050565b90506064811115620066135784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b603a5562006d47565b6200668c60405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b156200674d5760208114620066be5783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006701918585808385018382808284376000920191909152509293925050620094039050565b9050674563918244f400008110806200671b5750603c5481115b15620067445784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b603b5562006d47565b620067bb6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b156200687e5760208114620067ed5783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006830918585808385018382808284376000920191909152509293925050620094039050565b905068056bc75e2d631000008110806200684c5750603b548111155b15620068755784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b603c5562006d47565b620068eb6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b15620069a857602081146200691d5783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006960918585808385018382808284376000920191909152509293925050620094039050565b90506202a300811080620069765750603e548110155b156200699f5784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b603d5562006d47565b62006a136040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b1562006ad0576020811462006a455783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006a88918585808385018382808284376000920191909152509293925050620094039050565b9050620d2f0081108062006a9e5750603d548111155b1562006ac75784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b603e5562006d47565b62006b4a6040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b1562006bf6576020811462006b7c5783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006bbf918585808385018382808284376000920191909152509293925050620094039050565b90508060000362006bed5784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b604a5562006d47565b62006c646040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b1562006d24576014811462006c965783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b600062006cde601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620094039050565b90506001600160a01b03811662006d125784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b62006d1d8162009408565b5062006d47565b838383836040516325ee20d560e21b8152600401620011ee94939291906200a997565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405162006d7e94939291906200a997565b60405180910390a150505050565b60005462010000900460ff161562006db757604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562006de95760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b0381111562006e075762006e0762009a81565b60405190808252806020026020018201604052801562006e31578160200160208202803683370190505b5090506000805b8381101562006f2f5762006e7a87878381811062006e5a5762006e5a6200a383565b905060200201602081019062006e71919062009910565b603f9062008257565b62006e985760405163056e881160e01b815260040160405180910390fd5b6041600088888481811062006eb15762006eb16200a383565b905060200201602081019062006ec8919062009910565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006f045762006f046200a383565b6001600160a01b039092166020928302919091019091015262006f27816200a3e8565b905062006e38565b50604051634484077560e01b81526120059063448407759062002bff90859088906004016200a399565b606080600062006f6a603f62008dfe565b9050808510156200712e57831562006f83578362006f85565b805b935060008462006f9687846200a353565b1162006fae5762006fa886836200a353565b62006fb0565b845b9050806001600160401b0381111562006fcd5762006fcd62009a81565b60405190808252806020026020018201604052801562006ff7578160200160208202803683370190505b509350806001600160401b0381111562007015576200701562009a81565b6040519080825280602002602001820160405280156200703f578160200160208202803683370190505b50925060005b818110156200712b576200705e62003db982896200a297565b8582815181106200707357620070736200a383565b60200260200101906001600160a01b031690816001600160a01b03168152505060416000868381518110620070ac57620070ac6200a383565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b03168482815181106200710057620071006200a383565b6001600160a01b039092166020928302919091019091015262007123816200a3e8565b905062007045565b50505b9250925092565b33611001146200715d57604051630f22c43960e41b81526110016004820152602401620011ee565b60005462010000900460ff16156200718857604051631785c68160e01b815260040160405180910390fd5b6001600160a01b0380821660009081526043602052604090205416620071b0603f8262008257565b620071ce5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038116600090815260416020526040812090620071f5610258426200a274565b604a546000828152604b602052604090205491925011620072295760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b602052604081208054600192906200724a9084906200a297565b90915550506001600160a01b038416600090815260446020526040902054158015906200729e57506001600160a01b03841660009081526044602052604090205442906200729c90610258906200a297565b105b15620072bd576040516330abb81d60e21b815260040160405180910390fd5b600080620072cd8560006200827a565b9150915081620072f057604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562007343573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200736991906200a2ad565b905062007377858362008304565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836000604051620073b7939291906200a2dd565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162005b56916001600160a01b0316908a906004016200a234565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384938493849390929160808401919062007466906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007494906200a1fe565b8015620074e55780601f10620074b957610100808354040283529160200191620074e5565b820191906000526020600020905b815481529060010190602001808311620074c757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462007510906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200753e906200a1fe565b80156200758f5780601f1062007563576101008083540402835291602001916200758f565b820191906000526020600020905b8154815290600101906020018083116200757157829003601f168201915b50505050508152602001600182018054620075aa906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620075d8906200a1fe565b8015620076295780601f10620075fd5761010080835404028352916020019162007629565b820191906000526020600020905b8154815290600101906020018083116200760b57829003601f168201915b5050505050815260200160028201805462007644906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007672906200a1fe565b8015620076c35780601f106200769757610100808354040283529160200191620076c3565b820191906000526020600020905b815481529060010190602001808311620076a557829003601f168201915b50505050508152602001600382018054620076de906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200770c906200a1fe565b80156200775d5780601f1062007731576101008083540402835291602001916200775d565b820191906000526020600020905b8154815290600101906020018083116200773f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620077fc5750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200786357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620078955760405163b1d02c3d60e01b815260040160405180910390fd5b6200789f62008c97565b620078ac603f8262008257565b620078ca5760405163056e881160e01b815260040160405180910390fd5b6000620078d662008c97565b6001600160a01b0381166000908152604160205260409020600c8101549192509042906200790890610258906200a297565b11156200792857604051631f92cdbd60e11b815260040160405180910390fd5b60058101805462007939906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007967906200a1fe565b8015620079b85780601f106200798c57610100808354040283529160200191620079b8565b820191906000526020600020905b8154815290600101906020018083116200799a57829003601f168201915b5050508287525085916005840191508190620079d590826200a9c2565b5060208201516001820190620079ec90826200a9c2565b506040820151600282019062007a0390826200a9c2565b506060820151600382019062007a1a90826200a9c2565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff161562007a8857604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007aba5760405163b1d02c3d60e01b815260040160405180910390fd5b82811462007adb576040516341abc80160e01b815260040160405180910390fd5b60005b8381101562007b4c5762007b3985858381811062007b005762007b006200a383565b905060200201602081019062007b17919062009910565b84848481811062007b2c5762007b2c6200a383565b905060200201356200929a565b62007b44816200a3e8565b905062007ade565b5050505050565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162007bbe906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007bec906200a1fe565b801562007c3d5780601f1062007c115761010080835404028352916020019162007c3d565b820191906000526020600020905b81548152906001019060200180831162007c1f57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462007c68906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007c96906200a1fe565b801562007ce75780601f1062007cbb5761010080835404028352916020019162007ce7565b820191906000526020600020905b81548152906001019060200180831162007cc957829003601f168201915b5050505050815260200160018201805462007d02906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007d30906200a1fe565b801562007d815780601f1062007d555761010080835404028352916020019162007d81565b820191906000526020600020905b81548152906001019060200180831162007d6357829003601f168201915b5050505050815260200160028201805462007d9c906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007dca906200a1fe565b801562007e1b5780601f1062007def5761010080835404028352916020019162007e1b565b820191906000526020600020905b81548152906001019060200180831162007dfd57829003601f168201915b5050505050815260200160038201805462007e36906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007e64906200a1fe565b801562007eb55780601f1062007e895761010080835404028352916020019162007eb5565b820191906000526020600020905b81548152906001019060200180831162007e9757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162007f545750505091909252505050604001519392505050565b600062007f8c603f8462008257565b62007faa5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd90602401620054a9565b60005462010000900460ff16156200801957604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200804b5760405163b1d02c3d60e01b815260040160405180910390fd5b6200805562008c97565b62008062603f8262008257565b620080805760405163056e881160e01b815260040160405180910390fd5b60006200808c62008c97565b90506200809d818787878762008fb9565b620080bb57604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b031660458787604051620080da9291906200a24e565b908152604051908190036020019020546001600160a01b031614158062008124575060488686604051620081109291906200a24e565b9081526040519081900360200190205460ff165b1562008143576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c81015442906200817190610258906200a297565b11156200819157604051631f92cdbd60e11b815260040160405180910390fd5b42604682600401604051620081a791906200aa8a565b9081526040519081900360200190205560048101620081c88789836200a4ac565b5042600c8201556040518290604590620081e6908a908a906200a24e565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062008246908a908a906200a77d565b60405180910390a250505050505050565b6001600160a01b03811660009081526001830160205260408120541515620054ed565b60008060008484604051602001620082949291906200ab08565b60408051601f1981840301815291815281516020928301206000818152604c90935291205490915042811115620082d457600080935093505050620082fd565b603e54620082e390426200a297565b6000928352604c6020526040909220829055506001925090505b9250929050565b8154604051631507fdb760e11b81526001600160a01b03909116600482015261100090632a0ffb6e90602401600060405180830381600087803b1580156200834b57600080fd5b505af115801562008360573d6000803e3d6000fd5b505050506000600162008374603f62008dfe565b6200838091906200a353565b60495410801591506200843e5760405163d31f968d60e01b81526110006004820152600860248201526120009063d31f968d90604401602060405180830381865afa158015620083d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620083fa91906200a30c565b6200843e5760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b01548211156200845357600b83018290555b600a83015460ff16620084c657600a8301805460ff1916600190811790915560498054600090620084869084906200a297565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b604080516080808201835260008083526020808401829052838501829052606080850183905285519384018652828452838201839052838601839052830182905284518086018652828152810182905284518086019095528551855285810190850152919282906200853d9062009474565b90506000805b6200854e83620094e7565b156200862157806000036200858357620085726200856c846200950d565b62009571565b6001600160a01b031684526200860e565b80600103620085af576200859b6200856c846200950d565b6001600160a01b031660208501526200860e565b80600203620085db57620085c76200856c846200950d565b6001600160a01b031660408501526200860e565b806003036200860857620085f9620085f3846200950d565b62009589565b6060850152600191506200860e565b62008621565b62008619816200a3e8565b905062008543565b5091959194509092505050565b6020808201516001600160a01b031660009081526001909152604081205460ff168062008666575060208201516001600160a01b0316155b156200867457506004919050565b81516200868490603f9062008257565b6200869157506002919050565b81516001600160a01b03908116600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805492939192608084019190620086fd906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200872b906200a1fe565b80156200877c5780601f1062008750576101008083540402835291602001916200877c565b820191906000526020600020905b8154815290600101906020018083116200875e57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620087a7906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620087d5906200a1fe565b8015620088265780601f10620087fa5761010080835404028352916020019162008826565b820191906000526020600020905b8154815290600101906020018083116200880857829003601f168201915b5050505050815260200160018201805462008841906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200886f906200a1fe565b8015620088c05780601f106200889457610100808354040283529160200191620088c0565b820191906000526020600020905b815481529060010190602001808311620088a257829003601f168201915b50505050508152602001600282018054620088db906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462008909906200a1fe565b80156200895a5780601f106200892e576101008083540402835291602001916200895a565b820191906000526020600020905b8154815290600101906020018083116200893c57829003601f168201915b5050505050815260200160038201805462008975906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620089a3906200a1fe565b8015620089f45780601f10620089c857610100808354040283529160200191620089f4565b820191906000526020600020905b815481529060010190602001808311620089d657829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162008a935750505050508152505090508060e00151801562008ade575082600001516001600160a01b031683602001516001600160a01b031614155b1562008aed5750600392915050565b6040808201516060850151602086015192516317066a5760e21b81526001600160a01b03938416600482015260009390921691635c19a95c919060240160206040518083038185885af115801562008b49573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062008b7091906200a2ad565b905083602001516001600160a01b031684600001516001600160a01b03166000805160206200ba8483398151915283876060015160405162008bbc929190918252602082015260400190565b60405180910390a383602001516001600160a01b031684600001516001600160a01b03167f607b17598da6bdca05650a2fc08bd2bc8e38c3236806a0fa8e0daabc1d6cb1d883876060015160405162008c1f929190918252602082015260400190565b60405180910390a360408083015160208601519151633041949b60e01b815261200592633041949b9262008c59929091906004016200a234565b600060405180830381600087803b15801562008c7457600080fd5b505af115801562008c89573d6000803e3d6000fd5b506000979650505050505050565b336000908152604d60205260408120546001600160a01b03161562008cd35750336000908152604d60205260409020546001600160a01b031690565b503390565b6001600160a01b0381166000908152604160205260409020600a81015460ff161562008d02575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562008d52573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008d7891906200a2ad565b101562005ee95762008d9a81603d544262008d9491906200a297565b62008304565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b15801562008de157600080fd5b505af115801562008df6573d6000803e3d6000fd5b505050505050565b6000620054f0825490565b6000620054ed838362009661565b60008082905060038151108062008e2f575060098151115b1562008e3e5750600092915050565b60418160008151811062008e565762008e566200a383565b016020015160f81c108062008e885750605a8160008151811062008e7e5762008e7e6200a383565b016020015160f81c115b1562008e975750600092915050565b60015b815181101562008faf57603082828151811062008ebb5762008ebb6200a383565b016020015160f81c108062008eec5750603982828151811062008ee25762008ee26200a383565b016020015160f81c115b801562008f3c5750604182828151811062008f0b5762008f0b6200a383565b016020015160f81c108062008f3c5750605a82828151811062008f325762008f326200a383565b016020015160f81c115b801562008f8c5750606182828151811062008f5b5762008f5b6200a383565b016020015160f81c108062008f8c5750607a82828151811062008f825762008f826200a383565b016020015160f81c115b1562008f9c575060009392505050565b62008fa7816200a3e8565b905062008e9a565b5060019392505050565b600060308414158062008fcd575060608214155b1562008fdc57506000620090e0565b60008686864660405160200162008ff794939291906200ab46565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a604051602001620090519594939291906200ab73565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa6200909b57600080fd5b50600081600081518110620090b457620090b46200a383565b016020015160f81c905060018114620090d657600095505050505050620090e0565b6001955050505050505b95945050505050565b60008061200361dead6040516200910090620098ec565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562009143573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b8152600401620091779291906200abab565b6000604051808303818588803b1580156200919157600080fd5b505af1158015620091a6573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b6000620054ed836001600160a01b0384166200968e565b600054610100900460ff166200926e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620011ee565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b81620092a8603f8262008257565b620092c65760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af11580156200932a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200935091906200a2ad565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd3992683836040516200939891815260200190565b60405180910390a350505050565b600081604051602001620093bb91906200a95a565b6040516020818303038152906040528051906020012083604051602001620093e491906200a95a565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6040805160808101825260009181018281526060820183905281526020810191909152620094a282620096e0565b620094ac57600080fd5b6000620094bd836020015162009713565b8360200151620094ce91906200a297565b6040805180820190915293845260208401525090919050565b80518051602082015160009291620094ff916200a297565b836020015110915050919050565b60408051808201909152600080825260208201526200952c82620094e7565b6200953657600080fd5b602082015160006200954882620097a2565b90506200955681836200a297565b60209485015260408051808201909152908152928301525090565b80516000906015146200958357600080fd5b620054f0825b8051600090158015906200959f57508151602110155b620095a957600080fd5b6000620095ba836020015162009713565b90508083600001511015620096125760405162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f66667365740000000000006044820152606401620011ee565b8251600090620096249083906200a353565b90506000808386602001516200963b91906200a297565b90508051915060208310156200965857826020036101000a820491505b50949350505050565b60008260000182815481106200967b576200967b6200a383565b9060005260206000200154905092915050565b6000818152600183016020526040812054620096d757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620054f0565b506000620054f0565b80516000908103620096f457506000919050565b6020820151805160001a9060c082101562008faf575060009392505050565b8051600090811a60808110156200972d5750600092915050565b60b88110806200974a575060c081108015906200974a575060f881105b15620097595750600192915050565b60c0811015620097945762009771600160b86200abd1565b620097809060ff16826200a353565b6200978d9060016200a297565b9392505050565b62009771600160f86200abd1565b80516000908190811a6080811015620097bf5760019150620098e5565b60b8811015620097eb57620097d66080826200a353565b620097e39060016200a297565b9150620098e5565b60c08110156200986457600060b78203600186019550806020036101000a8651049150600181018201935050808310156200985d5760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b6044820152606401620011ee565b50620098e5565b60f88110156200987b57620097d660c0826200a353565b600060f78203600186019550806020036101000a865104915060018101820193505080831015620098e35760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b6044820152606401620011ee565b505b5092915050565b610e96806200abee83390190565b6001600160a01b03811681146200181957600080fd5b6000602082840312156200992357600080fd5b81356200978d81620098fa565b60008083601f8401126200994357600080fd5b5081356001600160401b038111156200995b57600080fd5b602083019150836020828501011115620082fd57600080fd5b600080602083850312156200998857600080fd5b82356001600160401b038111156200999f57600080fd5b620099ad8582860162009930565b90969095509350505050565b600080600060408486031215620099cf57600080fd5b833560ff81168114620099e157600080fd5b925060208401356001600160401b03811115620099fd57600080fd5b62009a0b8682870162009930565b9497909650939450505050565b60005b8381101562009a3557818101518382015260200162009a1b565b50506000910152565b6000815180845262009a5881602086016020860162009a18565b601f01601f19169290920160200192915050565b602081526000620054ed602083018462009a3e565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b038111828210171562009abc5762009abc62009a81565b60405290565b604051601f8201601f191681016001600160401b038111828210171562009aed5762009aed62009a81565b604052919050565b60006001600160401b0382111562009b115762009b1162009a81565b50601f01601f191660200190565b600062009b3662009b308462009af5565b62009ac2565b905082815283838301111562009b4b57600080fd5b828260208301376000602084830101529392505050565b60006020828403121562009b7557600080fd5b81356001600160401b0381111562009b8c57600080fd5b8201601f8101841362009b9e57600080fd5b62009baf8482356020840162009b1f565b949350505050565b6000806040838503121562009bcb57600080fd5b823562009bd881620098fa565b946020939093013593505050565b80151581146200181957600080fd5b6000806000806080858703121562009c0c57600080fd5b843562009c1981620098fa565b9350602085013562009c2b81620098fa565b925060408501359150606085013562009c448162009be6565b939692955090935050565b6001600160401b03811681146200181957600080fd5b60006020828403121562009c7857600080fd5b81356200978d8162009c4f565b6000806040838503121562009c9957600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562009ce35781516001600160a01b03168752958201959082019060010162009cbc565b509495945050505050565b60808152600062009d03608083018762009ca8565b82810360208481019190915286518083528782019282019060005b8181101562009d3c5784518352938301939183019160010162009d1e565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562009d9157601f1985840301875262009d7e83835162009a3e565b9686019692509085019060010162009d5f565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e081121562009dc757600080fd5b883562009dd481620098fa565b975060208901356001600160401b038082111562009df157600080fd5b62009dff8c838d0162009930565b909950975060408b013591508082111562009e1957600080fd5b62009e278c838d0162009930565b90975095508591506060605f198401121562009e4257600080fd5b60608b01945060c08b013592508083111562009e5d57600080fd5b505088016080818b03121562009e7257600080fd5b8091505092959891949750929550565b6000806040838503121562009e9657600080fd5b823562009ea381620098fa565b9150602083013562009eb58162009be6565b809150509250929050565b60208152600082516080602084015262009ede60a084018262009a3e565b90506020840151601f198085840301604086015262009efe838362009a3e565b9250604086015191508085840301606086015262009f1d838362009a3e565b9250606086015191508085840301608086015250620090e0828262009a3e565b6000806000806040858703121562009f5457600080fd5b84356001600160401b038082111562009f6c57600080fd5b62009f7a8883890162009930565b9096509450602087013591508082111562009f9457600080fd5b5062009fa38782880162009930565b95989497509550505050565b60008083601f84011262009fc257600080fd5b5081356001600160401b0381111562009fda57600080fd5b6020830191508360208260051b8501011115620082fd57600080fd5b6000806000604084860312156200a00c57600080fd5b83356001600160401b038111156200a02357600080fd5b6200a0318682870162009faf565b90945092505060208401356200a04781620098fa565b809150509250925092565b6060815260006200a067606083018662009ca8565b82810360208401526200a07b818662009ca8565b915050826040830152949350505050565b600082601f8301126200a09e57600080fd5b620054ed8383356020850162009b1f565b6000602082840312156200a0c257600080fd5b81356001600160401b03808211156200a0da57600080fd5b90830190608082860312156200a0ef57600080fd5b6200a0f962009a97565b8235828111156200a10957600080fd5b6200a117878286016200a08c565b8252506020830135828111156200a12d57600080fd5b6200a13b878286016200a08c565b6020830152506040830135828111156200a15457600080fd5b6200a162878286016200a08c565b6040830152506060830135828111156200a17b57600080fd5b6200a189878286016200a08c565b60608301525095945050505050565b600080600080604085870312156200a1af57600080fd5b84356001600160401b03808211156200a1c757600080fd5b6200a1d58883890162009faf565b909650945060208701359150808211156200a1ef57600080fd5b5062009fa38782880162009faf565b600181811c908216806200a21357607f821691505b60208210810362001f0857634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b6000826200a29257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620054f057620054f06200a25e565b6000602082840312156200a2c057600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b8381526020810183905260608101600383106200a2fe576200a2fe6200a2c7565b826040830152949350505050565b6000602082840312156200a31f57600080fd5b81516200978d8162009be6565b82815260408101600583106200a346576200a3466200a2c7565b8260208301529392505050565b81810381811115620054f057620054f06200a25e565b8082028115828204841417620054f057620054f06200a25e565b634e487b7160e01b600052603260045260246000fd5b6040815260006200a3ae604083018562009ca8565b905060018060a01b03831660208301529392505050565b6001600160401b03828116828216039080821115620098e557620098e56200a25e565b6000600182016200a3fd576200a3fd6200a25e565b5060010190565b6000808335601e198436030181126200a41c57600080fd5b8301803591506001600160401b038211156200a43757600080fd5b602001915036819003821315620082fd57600080fd5b601f821115620084c657600081815260208120601f850160051c810160208610156200a4765750805b601f850160051c820191505b8181101562008df6578281556001016200a482565b600019600383901b1c191660019190911b1790565b6001600160401b038311156200a4c6576200a4c662009a81565b6200a4de836200a4d783546200a1fe565b836200a44d565b6000601f8411600181146200a51157600085156200a4fc5750838201355b6200a50886826200a497565b84555062007b4c565b600083815260209020601f19861690835b828110156200a54457868501358255602094850194600190920191016200a522565b50868210156200a5625760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6200a58082836200a404565b6001600160401b038111156200a59a576200a59a62009a81565b6200a5b2816200a5ab85546200a1fe565b856200a44d565b6000601f8211600181146200a5e557600083156200a5d05750838201355b6200a5dc84826200a497565b8655506200a642565b600085815260209020601f19841690835b828110156200a61857868501358255602094850194600190920191016200a5f6565b50848210156200a6365760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506200a65560208301836200a404565b6200a6658183600186016200a4ac565b50506200a67660408301836200a404565b6200a6868183600286016200a4ac565b50506200a69760608301836200a404565b6200a6a78183600386016200a4ac565b50505050565b81356200a6ba8162009c4f565b6001600160401b03811690508154816001600160401b0319821617835560208401356200a6e78162009c4f565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff198316841781178555908501356200a7278162009c4f565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062009baf6020830184866200a754565b60006001600160401b038211156200a7af576200a7af62009a81565b5060051b60200190565b600060208083850312156200a7cd57600080fd5b82516001600160401b038111156200a7e457600080fd5b8301601f810185136200a7f657600080fd5b80516200a80762009b30826200a793565b81815260059190911b820183019083810190878311156200a82757600080fd5b928401925b828410156200a8525783516200a84281620098fa565b825292840192908401906200a82c565b979650505050505050565b600060208083850312156200a87157600080fd5b82516001600160401b03808211156200a88957600080fd5b818501915085601f8301126200a89e57600080fd5b81516200a8af62009b30826200a793565b81815260059190911b830184019084810190888311156200a8cf57600080fd5b8585015b838110156200a94d578051858111156200a8ed5760008081fd5b8601603f81018b136200a9005760008081fd5b8781015160406200a91562009b308362009af5565b8281528d828486010111156200a92b5760008081fd5b6200a93c838c830184870162009a18565b86525050509186019186016200a8d3565b5098975050505050505050565b600082516200a96e81846020870162009a18565b9190910192915050565b60ff84168152604060208201526000620090e06040830184866200a754565b6040815260006200a9ad6040830186886200a754565b82810360208401526200a8528185876200a754565b81516001600160401b038111156200a9de576200a9de62009a81565b6200a9f6816200a9ef84546200a1fe565b846200a44d565b602080601f8311600181146200aa2a57600084156200aa155750858301515b6200aa2185826200a497565b86555062008df6565b600085815260208120601f198616915b828110156200aa5b578886015182559484019460019091019084016200aa3a565b50858210156200aa7a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200aa9a816200a1fe565b600182811680156200aab557600181146200aacb576200aafc565b60ff19841687528215158302870194506200aafc565b8760005260208060002060005b858110156200aaf35781548a8201529084019082016200aad8565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b1681526000600383106200ab32576200ab326200a2c7565b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b600086516200ab87818460208b0162009a18565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b038316815260406020820181905260009062009baf9083018462009a3e565b60ff8281168282160390811115620054f057620054f06200a25e56fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656424d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000030b86b3146bdd2200b1dbdb1cea5e40d3451c028cbb4fb03b1826f7f2d82bee76bbd5cd68a74a16a7eceea093fd5826b9200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003087ce273bb9b51fd69e50de7a8d9a99cfb3b1a5c6a7b85f6673d137a5a2ce7df3d6ee4e6d579a142d58b0606c4a7a1c27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a33ac14980d85c0d154c5909ebf7a11d455f54beb4d5d0dc1d8b3670b9c4a6b6c450ee3d623ecc48026f09ed1f0b5c1200000000000000000000000000000000a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/bohr/rialto/ValidatorContract b/core/systemcontracts/bohr/rialto/ValidatorContract deleted file mode 100644 index 78dbe27aa8..0000000000 --- a/core/systemcontracts/bohr/rialto/ValidatorContract +++ /dev/null @@ -1 +0,0 @@ -60806040526004361061051c5760003560e01c80638a7beb01116102a2578063c81b166211610165578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610d8d578063f9a2bbc714610da2578063fc3e590814610db7578063fccc281314610dcc578063fd4ad81f14610de1578063fd6a687914610e1057610523565b8063e40716a114610cfb578063ea321e4914610d10578063eb57e20214610d30578063eda5868c14610d50578063f1fad10414610d65578063f340fa0114610d7a57610523565b8063d86222d51161011e578063d86222d514610c7d578063daacdb6614610c92578063dc927faf14610ca7578063df8079e914610cbc578063e086c7b114610cd1578063e1c7392a14610ce657610523565b8063c81b166214610c09578063c8509d81146109ae578063cb75a59214610c1e578063ce910b0c14610c33578063d58918ae14610c53578063d68fb56a14610c6857610523565b8063aa82dce111610209578063aef198a9116101c2578063aef198a914610b93578063b7ab4db514610ba8578063b8cf4ef114610bca578063bf9f499514610734578063c466689d14610bdf578063c6d3394514610bf457610523565b8063aa82dce114610aff578063aad5606314610b14578063aaf5eb6814610b29578063ab51bb9614610b3e578063ac43175114610b53578063ad3c9da614610b7357610523565b80639dc092621161025b5780639dc0926214610a815780639fe0f81614610a96578063a0dc275814610aab578063a1a11bf514610ac0578063a5422d5c14610ad5578063a78abc1614610aea57610523565b80638a7beb01146109f85780638b5ad0c914610a0d5780638c5d749d14610a225780638d19a41014610a375780639369d7de14610a5757806396713da914610a6c57610523565b80635192c82c116103ea578063718a8aa81161035157806381650b621161030a57806381650b6214610984578063820dcaa814610999578063831d65d1146109ae578063853230aa1461093057806386249882146109ce57806388b32f11146109e357610523565b8063718a8aa81461090657806375d47a0a1461091b57806378dfed4a146109305780637942fd05146109455780637a84ca2a1461095a5780637e434d541461096f57610523565b80635d77156c116103a35780635d77156c1461086057806360eba4fe1461087557806362b72cf5146108955780636969a25c146108aa5780636e47b482146108dc57806370fd5bad146108f157610523565b80635192c82c146107cc57806351b4dce3146107e157806351e80672146107f657806355614fcc1461080b578063565c56b31461082b5780635667515a1461084b57610523565b80632a0ffb6e1161048e5780633dffc387116104475780633dffc3871461073457806343756e5c1461075657806345cf9daf1461076b578063493279b1146107805780634bf6c882146107a25780634df6e0c3146107b757610523565b80632a0ffb6e14610671578063300c356714610691578063321d398a146106b15780633365af3a146106d157806335409f7f146106f15780633b071dcc1461071157610523565b8063152ad3b8116104e0578063152ad3b8146105db5780631bd14ed8146105fd5780631e4c1524146106125780631ff1806914610632578063219f22d514610647578063280870281461065c57610523565b806304c4fec61461052857806307a568471461053f5780630bee7a671461056a5780630e2374a51461058c5780631182b875146105ae57610523565b3661052357005b600080fd5b34801561053457600080fd5b5061053d610e25565b005b34801561054b57600080fd5b50610554610e99565b604051610561919061947a565b60405180910390f35b34801561057657600080fd5b5061057f610e9f565b60405161056191906194a4565b34801561059857600080fd5b506105a1610ea4565b60405161056191906185b8565b3480156105ba57600080fd5b506105ce6105c936600461849e565b610eaa565b604051610561919061876e565b3480156105e757600080fd5b506105f06111a6565b6040516105619190618763565b34801561060957600080fd5b506105546111af565b34801561061e57600080fd5b5061053d61062d3660046182ac565b6111b5565b34801561063e57600080fd5b5061055461188b565b34801561065357600080fd5b5061057f611891565b34801561066857600080fd5b506105a1611896565b34801561067d57600080fd5b5061053d61068c36600461820c565b61189c565b34801561069d57600080fd5b5061053d6106ac366004618244565b611949565b3480156106bd57600080fd5b506105f06106cc36600461844b565b611c92565b3480156106dd57600080fd5b506105f06106ec36600461844b565b611d61565b3480156106fd57600080fd5b5061053d61070c36600461820c565b611e12565b34801561071d57600080fd5b50610726611f77565b604051610561929190618679565b34801561074057600080fd5b50610749612253565b60405161056191906194b5565b34801561076257600080fd5b506105a1612258565b34801561077757600080fd5b5061055461225e565b34801561078c57600080fd5b50610795612264565b604051610561919061946b565b3480156107ae57600080fd5b5061074961226a565b3480156107c357600080fd5b5061072661226f565b3480156107d857600080fd5b506105546123fb565b3480156107ed57600080fd5b506105a1612401565b34801561080257600080fd5b506105a1612407565b34801561081757600080fd5b506105f061082636600461820c565b61240d565b34801561083757600080fd5b5061055461084636600461820c565b612442565b34801561085757600080fd5b50610749612493565b34801561086c57600080fd5b5061057f612498565b34801561088157600080fd5b506105ce61089036600461844b565b61249d565b3480156108a157600080fd5b50610554612543565b3480156108b657600080fd5b506108ca6108c536600461844b565b612549565b604051610561969594939291906185e5565b3480156108e857600080fd5b506105a16125ad565b3480156108fd57600080fd5b506107496125b3565b34801561091257600080fd5b506107496125b8565b34801561092757600080fd5b506105a16125bd565b34801561093c57600080fd5b506105546125c3565b34801561095157600080fd5b506107496125c9565b34801561096657600080fd5b506105546125ce565b34801561097b57600080fd5b506105a16125d4565b34801561099057600080fd5b5061057f6125da565b3480156109a557600080fd5b506105546125df565b3480156109ba57600080fd5b5061053d6109c936600461849e565b6125e5565b3480156109da57600080fd5b50610554612646565b3480156109ef57600080fd5b5061055461264c565b348015610a0457600080fd5b506105f0612652565b348015610a1957600080fd5b5061055461265b565b348015610a2e57600080fd5b50610554612661565b348015610a4357600080fd5b50610554610a5236600461820c565b61267e565b348015610a6357600080fd5b5061053d6126be565b348015610a7857600080fd5b506107496127d2565b348015610a8d57600080fd5b506105a16127d7565b348015610aa257600080fd5b506105546127dd565b348015610ab757600080fd5b506105546127e2565b348015610acc57600080fd5b506105a16127e7565b348015610ae157600080fd5b506105ce6127ed565b348015610af657600080fd5b506105f0612809565b348015610b0b57600080fd5b506105a1612812565b348015610b2057600080fd5b506105a1612818565b348015610b3557600080fd5b5061055461281e565b348015610b4a57600080fd5b5061057f612493565b348015610b5f57600080fd5b5061053d610b6e3660046183ef565b612827565b348015610b7f57600080fd5b50610554610b8e36600461820c565b613320565b348015610b9f57600080fd5b50610554613332565b348015610bb457600080fd5b50610bbd61333f565b6040516105619190618666565b348015610bd657600080fd5b5061055461342a565b348015610beb57600080fd5b5061055461342f565b348015610c0057600080fd5b506105546125b3565b348015610c1557600080fd5b506105a1613435565b348015610c2a57600080fd5b5061055461343b565b348015610c3f57600080fd5b506105ce610c4e36600461844b565b613441565b348015610c5f57600080fd5b5061055461344e565b348015610c7457600080fd5b50610554613454565b348015610c8957600080fd5b50610554613493565b348015610c9e57600080fd5b5061055461349f565b348015610cb357600080fd5b506105a16134a5565b348015610cc857600080fd5b506105a16134ab565b348015610cdd57600080fd5b50610554610e9f565b348015610cf257600080fd5b5061053d6134b1565b348015610d0757600080fd5b50610554613742565b348015610d1c57600080fd5b506105f0610d2b3660046183b0565b613748565b348015610d3c57600080fd5b5061053d610d4b36600461820c565b6138ce565b348015610d5c57600080fd5b5061057f6139d2565b348015610d7157600080fd5b506107496139d7565b61053d610d8836600461820c565b6139dc565b348015610d9957600080fd5b50610554613d92565b348015610dae57600080fd5b506105a1613d98565b348015610dc357600080fd5b506107496127dd565b348015610dd857600080fd5b506105a1613d9e565b348015610ded57600080fd5b50610e01610dfc36600461844b565b613da4565b60405161056193929190619483565b348015610e1c57600080fd5b506105a1613e66565b6000610e303361267e565b9050600b8181548110610e3f57fe5b600091825260209091206001601690920201015460ff16610e7b5760405162461bcd60e51b8152600401610e729061909b565b60405180910390fd5b6000610e85613454565b9050610e943383836001613e6c565b505050565b60095481565b606481565b61200181565b60005460609060ff16610ecf5760405162461bcd60e51b8152600401610e729061892d565b600b54610f8d57610ede617db8565b60015460005b81811015610f8957600b8054600181018255600091909152835160008051602061958783398151915260169092029182019081556020808601516000805160206195c78339815191528401805460ff1916911515919091179055604086015180518794610f65936000805160206195a7833981519152909101920190617de7565b506060820151610f7b9060038301906013617e61565b505050806001019050610ee4565b5050505b610f95617e8e565b6000610fd685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061414192505050565b9150915080610ff257610fe960646142fd565b9250505061119f565b815160009060ff16611017576110108360200151846040015161435e565b905061116b565b825160ff16600114156111675782602001515160011461105c5760008051602061956783398151915260405161104c90618f54565b60405180910390a1506067611162565b6000836020015160008151811061106f57fe5b602090810291909101810151516001600160a01b038116600090815260049092526040909120549091508015806110d057506001808203815481106110b057fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561110e576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a261115b565b600061111d8360018403615520565b905080611159576040516001600160a01b038416907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a25b505b6000925050505b61116b565b5060655b63ffffffff8116611190575050604080516000815260208101909152915061119f9050565b611199816142fd565b93505050505b9392505050565b60075460ff1681565b600f5481565b3341146111d45760405162461bcd60e51b8152600401610e72906192d2565b3a156111f25760405162461bcd60e51b8152600401610e7290618fda565b825160408051828152602080840282010190915260609082801561123057816020015b61121d617eb2565b8152602001906001900390816112155790505b50905060005b828110156112da576040518060c0016040528087838151811061125557fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200186838151811061129757fe5b60200260200101516001600160401b0316815260200160001515815260200160008152508282815181106112c757fe5b6020908102919091010152600101611236565b5060405163d31f968d60e01b81526120009063d31f968d90611305906110009060089060040161864a565b60206040518083038186803b15801561131d57600080fd5b505afa158015611331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113559190618390565b15611678578051601554818111156113f757815b818110156113f557601580548061137c57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b031916905560030155905560168054806113cf57fe5b6001900381819060005260206000200160006113eb9190617ee7565b9055600101611369565b505b60005b828110156116375781811061151f57601584828151811061141757fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a0015160039091015585516016908790839081106114e757fe5b602090810291909101810151825460018101845560009384529282902081516115199491909101929190910190617de7565b5061162f565b83818151811061152b57fe5b60200260200101516015828154811061154057fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a09091015160039091015585518690829081106115fb57fe5b60200260200101516016828154811061161057fe5b90600052602060002001908051906020019061162d929190617de7565b505b6001016113fa565b507fb8e726330a0dad1cf3d04e925663b17e391f1ed547d79b7f4e5f344119b4424682604051611667919061947a565b60405180910390a150505050610e94565b60608061168583866158e3565b9150915060005b60015481101561177b576000600182815481106116a557fe5b906000526020600020906004020160030154905080600014611772576000600183815481106116d057fe5b9060005260206000209060040201600301819055506120026001600160a01b031663092193ab826001858154811061170457fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b16815261173f926001600160a01b0390921691016185b8565b6000604051808303818588803b15801561175857600080fd5b505af115801561176c573d6000803e3d6000fd5b50505050505b5060010161168c565b5047156117e9577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516117b1919061947a565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156117e7573d6000803e3d6000fd5b505b60006003819055600555815115611804576118048282615dcd565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561184157600080fd5b505af1158015611855573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b61200581565b33612002146118bd5760405162461bcd60e51b8152600401610e7290619434565b60005b60155481101561194557816001600160a01b0316601582815481106118e157fe5b60009182526020909120600490910201546001600160a01b0316141561193d5760016015828154811061191057fe5b9060005260206000209060040201600201601c6101000a81548160ff021916908315150217905550611945565b6001016118c0565b5050565b3341146119685760405162461bcd60e51b8152600401610e72906192d2565b60105443116119895760405162461bcd60e51b8152600401610e7290618b4f565b3a156119a75760405162461bcd60e51b8152600401610e7290618fda565b60005460ff166119c95760405162461bcd60e51b8152600401610e729061892d565b60006110023168056bc75e2d63100000811115611a00576119f98168056bc75e2d6310000063ffffffff6165bc16565b9150611a07565b5050611c88565b6040516309a99b4f60e41b815261100290639a99b4f090611a2e90309086906004016185cc565b602060405180830381600087803b158015611a4857600080fd5b505af1158015611a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a809190618463565b915081611a8e575050611c88565b6000805b84811015611abc57858582818110611aa657fe5b9050602002013582019150806001019050611a92565b5080611aca57505050611c88565b6000806000805b89811015611c805784898983818110611ae657fe5b90506020020135880281611af657fe5b0493508a8a82818110611b0557fe5b9050602002016020810190611b1a919061820c565b6001600160a01b03811660009081526004602052604090205490935091508115611c36576000600180840381548110611b4f57fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff1615611bbc57836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8586604051611baf919061947a565b60405180910390a2611c30565b600354611bcf908663ffffffff6165fe16565b6003908155810154611be7908663ffffffff6165fe16565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611c2790889061947a565b60405180910390a25b50611c78565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611c6f919061947a565b60405180910390a25b600101611ad1565b505050505050505b5050436010555050565b6001546000908210611ca657506000611d5c565b60006001600160a01b031660018381548110611cbe57fe5b60009182526020909120600490910201546001600160a01b03161480611cee57506008541580611cee5750600a54155b80611cfd575060085460095410155b80611d0e5750611d0c82611d61565b155b80611d3757506000600b8381548110611d2357fe5b906000526020600020906016020160000154115b80611d4b57506001611d4761333f565b5111155b15611d5857506000611d5c565b5060015b919050565b6001546000908210611d7557506000611d5c565b600b548210611db25760018281548110611d8b57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611d5c565b60018281548110611dbf57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611e0c5750600b8281548110611df357fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611ed057611e21617db8565b60015460005b81811015611ecc57600b8054600181018255600091909152835160008051602061958783398151915260169092029182019081556020808601516000805160206195c78339815191528401805460ff1916911515919091179055604086015180518794611ea8936000805160206195a7833981519152909101920190617de7565b506060820151611ebe9060038301906013617e61565b505050806001019050611e27565b5050505b336110011480611ee1575033612002145b611efd5760405162461bcd60e51b8152600401610e7290618964565b6001600160a01b03811660009081526004602052604090205480611f215750611f74565b6001810390506000600b8281548110611f3657fe5b600091825260209091206001601690920201015460ff169050611f598383615520565b8015611f625750805b15610e94576009805460001901905550505b50565b60015460609081906000805b82811015611fca5760018181548110611f9857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611fc2576001909101905b600101611f83565b50606081604051908082528060200260200182016040528015611ff7578160200160208202803683370190505b50905060608260405190808252806020026020018201604052801561203057816020015b606081526020019060019003908161201b5790505b50600b54600094509091508414156121ab5760005b848110156121a5576001818154811061205a57fe5b9060005260206000209060040201600201601c9054906101000a900460ff1661219d576001818154811061208a57fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106120b557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b81815481106120e257fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561217a5780601f1061214f5761010080835404028352916020019161217a565b820191906000526020600020905b81548152906001019060200180831161215d57829003601f168201915b505050505082858151811061218b57fe5b60209081029190910101526001909301925b600101612045565b50612247565b60005b8481101561224557600181815481106121c357fe5b9060005260206000209060040201600201601c9054906101000a900460ff1661223d57600181815481106121f357fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061221e57fe5b6001600160a01b03909216602092830291909101909101526001909301925b6001016121ae565b505b909450925050505b9091565b600181565b61100181565b60085481565b6102ca81565b600881565b6060806000600e549050600080600c541161228b57601561228f565b600c545b9050606061229b61333f565b905060606122a882616623565b9050828251116122bf57909450925061224f915050565b838383510310156122d1578282510393505b83156123075760c843046122ed83838388880360008a8a616791565b6123058383838888038989038a8b8b8b510301616791565b505b606083604051908082528060200260200182016040528015612333578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561236c57816020015b60608152602001906001900390816123575790505b50905060005b858110156123ed5784818151811061238657fe5b602002602001015183828151811061239a57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106123c657fe5b60200260200101518282815181106123da57fe5b6020908102919091010152600101612372565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b03811660009081526004602052604081205480612435576000915050611d5c565b6000190161119f81611d61565b6001600160a01b0381166000908152600460205260408120548061246a576000915050611d5c565b60018082038154811061247957fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b601281815481106124aa57fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529350909183018282801561253b5780601f106125105761010080835404028352916020019161253b565b820191906000526020600020905b81548152906001019060200180831161251e57829003601f168201915b505050505081565b60105481565b6001818154811061255657fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b61200381565b606681565b61271081565b33612000146126065760405162461bcd60e51b8152600401610e7290619283565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051612639939291906194c3565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6000601754600014156126765750600161267b565b506017545b90565b6001600160a01b038116600090815260046020526040812054806126b45760405162461bcd60e51b8152600401610e729061920b565b6000190192915050565b600b5461277c576126cd617db8565b60015460005b8181101561277857600b8054600181018255600091909152835160008051602061958783398151915260169092029182019081556020808601516000805160206195c78339815191528401805460ff1916911515919091179055604086015180518794612754936000805160206195a7833981519152909101920190617de7565b50606082015161276a9060038301906013617e61565b5050508060010190506126d3565b5050505b6008546127895760036008555b600a54612796576002600a555b60006127a13361267e565b90506127ac81611c92565b6127c85760405162461bcd60e51b8152600401610e7290618f11565b611f7433826168e8565b600981565b61100781565b600381565b60c881565b61100681565b6040518060a00160405280607881526020016195e76078913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166128495760405162461bcd60e51b8152600401610e729061892d565b336110071461286a5760405162461bcd60e51b8152600401610e7290619008565b6128d484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506169809050565b1561297157602081146128f95760405162461bcd60e51b8152600401610e72906191c5565b604080516020601f8401819004810282018101909252828152600091612937918585808385018382808284376000920191909152506169d992505050565b90506064811015801561294d5750620186a08111155b6129695760405162461bcd60e51b8152600401610e7290618d72565b6002556132dd565b6129d184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506169809050565b15612a8657602081146129f65760405162461bcd60e51b8152600401610e72906187b3565b604080516020601f8401819004810282018101909252828152600091612a34918585808385018382808284376000920191909152506169d992505050565b9050612710612a60601854612a54600f54856165fe90919063ffffffff16565b9063ffffffff6165fe16565b1115612a7e5760405162461bcd60e51b8152600401610e7290618c98565b6006556132dd565b612af084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506169809050565b15612b8a5760208114612b155760405162461bcd60e51b8152600401610e72906187ea565b604080516020601f8401819004810282018101909252828152600091612b53918585808385018382808284376000920191909152506169d992505050565b600c5490915080612b62575060155b808210612b815760405162461bcd60e51b8152600401610e7290618bb9565b506008556132dd565b612bf384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506169809050565b15612c8c5760208114612c185760405162461bcd60e51b8152600401610e72906188b3565b604080516020601f8401819004810282018101909252828152600091612c56918585808385018382808284376000920191909152506169d992505050565b9050600081118015612c685750600a81105b612c845760405162461bcd60e51b8152600401610e7290619367565b600a556132dd565b612d0084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506169809050565b15612d8f5760208114612d255760405162461bcd60e51b8152600401610e7290618867565b604080516020601f8401819004810282018101909252828152600091612d63918585808385018382808284376000920191909152506169d992505050565b9050600d54811115612d875760405162461bcd60e51b8152600401610e7290618de8565b600e556132dd565b612df884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506169809050565b15612e7a5760208114612e1d5760405162461bcd60e51b8152600401610e7290619056565b604080516020601f8401819004810282018101909252828152600091612e5b918585808385018382808284376000920191909152506169d992505050565b600d819055600e54909150811015612e7457600d54600e555b506132dd565b612ede84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506169809050565b15612f8c5760208114612f035760405162461bcd60e51b8152600401610e72906188f8565b604080516020601f8401819004810282018101909252828152600091612f41918585808385018382808284376000920191909152506169d992505050565b905060008111612f635760405162461bcd60e51b8152600401610e7290618a61565b6064811115612f845760405162461bcd60e51b8152600401610e7290618aa9565b600c556132dd565b612ff884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601581527473797374656d52657761726442617365526174696f60581b602082015291506169809050565b156130a1576020811461301d5760405162461bcd60e51b8152600401610e729061931f565b604080516020601f840181900481028201810190925282815260009161305b918585808385018382808284376000920191909152506169d992505050565b905061271061307b601854612a54600654856165fe90919063ffffffff16565b11156130995760405162461bcd60e51b8152600401610e72906189d2565b600f556132dd565b61311584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f73797374656d526577617264416e74694d4556526174696f0000000000000000602082015291506169809050565b156131be576020811461313a5760405162461bcd60e51b8152600401610e7290618d27565b604080516020601f8401819004810282018101909252828152600091613178918585808385018382808284376000920191909152506169d992505050565b9050612710613198600f54612a54600654856165fe90919063ffffffff16565b11156131b65760405162461bcd60e51b8152600401610e7290618e82565b6018556132dd565b61321f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a8152690e8eae4dc98cadccee8d60b31b602082015291506169809050565b156132c557602081146132445760405162461bcd60e51b8152600401610e7290618c16565b604080516020601f8401819004810282018101909252828152600091613282918585808385018382808284376000920191909152506169d992505050565b905060038110158015613296575060098111155b806132a15750806001145b6132bd5760405162461bcd60e51b8152600401610e729061913f565b6017556132dd565b60405162461bcd60e51b8152600401610e72906193c4565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516133129493929190618781565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b8281101561336e5761335a81611d61565b15613366578160010191505b600101613349565b5060608160405190808252806020026020018201604052801561339b578160200160208202803683370190505b5090506000915060005b83811015613422576133b681611d61565b1561341a57600181815481106133c857fe5b600091825260209091206004909102015482516001600160a01b03909116908390859081106133f357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b6001016133a5565b509250505090565b601581565b61027181565b61100281565b60175481565b601381815481106124aa57fe5b60185481565b600061345e61333f565b519050600080600c5411613473576015613477565b600c545b905080821115613485578091505b8161348f57600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156134d45760405162461bcd60e51b8152600401610e7290619108565b6134dc617e8e565b60006134ff6040518060a00160405280607881526020016195e760789139614141565b91509150806135205760405162461bcd60e51b8152600401610e7290619242565b613528617db8565b60005b83602001515181101561372957600b8054600181018255600091909152825160008051602061958783398151915260169092029182019081556020808501516000805160206195c78339815191528401805460ff19169115159190911790556040850151805186946135b1936000805160206195a7833981519152909101920190617de7565b5060608201516135c79060038301906013617e61565b505050836040015181815181106135da57fe5b6020026020010151600b82815481106135ef57fe5b90600052602060002090601602016002019080519060200190613613929190617de7565b5060018460200151828151811061362657fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a0909301516003909301929092559187015180519185019391859081106136fc57fe5b602090810291909101810151516001600160a01b031682528101919091526040016000205560010161352b565b50506103e860025550506000805460ff19166001179055565b600d5481565b601354600090815b818110156138515761383985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506013805490925085915081106137a157fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561382f5780601f106138045761010080835404028352916020019161382f565b820191906000526020600020905b81548152906001019060200180831161381257829003601f168201915b50505050506169de565b1561384957600192505050611e0c565b600101613750565b5060125460005b818110156138c2576138a986868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506012805490925085915081106137a157fe5b156138ba5760019350505050611e0c565b600101613858565b50600095945050505050565b33611001146138ef5760405162461bcd60e51b8152600401610e72906193eb565b600b546139ad576138fe617db8565b60015460005b818110156139a957600b8054600181018255600091909152835160008051602061958783398151915260169092029182019081556020808601516000805160206195c78339815191528401805460ff1916911515919091179055604086015180518794613985936000805160206195a7833981519152909101920190617de7565b50606082015161399b9060038301906013617e61565b505050806001019050613904565b5050505b60006139b882616a42565b90506139c381611c92565b156119455761194582826168e8565b606581565b601181565b3341146139fb5760405162461bcd60e51b8152600401610e72906192d2565b60005460ff16613a1d5760405162461bcd60e51b8152600401610e729061892d565b60003411613a3d5760405162461bcd60e51b8152600401610e7290618db9565b3a15613a5b5760405162461bcd60e51b8152600401610e7290618fda565b6001600160a01b03811660009081526004602052604090205460145434919060ff16613a9b57610271600f556103e86006556014805460ff191660011790555b600f546017546001108015613ab257506000601854115b15613ad7576001601754036017544381613ac857fe5b066018540281613ad457fe5b04015b600083118015613ae75750600081115b15613b94576000613b10612710613b04348563ffffffff616bc516565b9063ffffffff616bff16565b90508015613b92576040516110029082156108fc029083906000818181858888f19350505050158015613b47573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d81604051613b77919061947a565b60405180910390a1613b8f848263ffffffff6165bc16565b93505b505b600083118015613ba657506000600654115b15613c4c576000613bc8612710613b0460065434616bc590919063ffffffff16565b90508015613c4a5760405161dead9082156108fc029083906000818181858888f19350505050158015613bff573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee581604051613c2f919061947a565b60405180910390a1613c47848263ffffffff6165bc16565b93505b505b8115613d4a576000600180840381548110613c6357fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff1615613cd057846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b485604051613cc3919061947a565b60405180910390a2613d44565b600354613ce3908563ffffffff6165fe16565b6003908155810154613cfb908563ffffffff6165fe16565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc05590613d3b90879061947a565b60405180910390a25b50613d8c565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b484604051613d83919061947a565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b8181548110613db157fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff90911694919291830182828015613e5c5780601f10613e3157610100808354040283529160200191613e5c565b820191906000526020600020905b815481529060010190602001808311613e3f57829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613e7d575082155b80613e885750600954155b15613e9557506000614139565b60096000815460019003919050819055506000613ee0600a54613b0486613b04600b8a81548110613ec257fe5b6000918252602090912060169091020154439063ffffffff6165bc16565b90506000600b8681548110613ef157fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613f5657600080fd5b505afa158015613f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f8e919061847b565b91509150600093508083106140ef57613fa78888615520565b5060405163436aa28360e11b8152600090612002906386d5450690613fd0908c906004016185b8565b60206040518083038186803b158015613fe857600080fd5b505afa158015613ffc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140209190618228565b6001600160a01b03161461408e576040516328aa02b160e01b8152611001906328aa02b190614057908b9087908a90600401618627565b600060405180830381600087803b15801561407157600080fd5b505af1158015614085573d6000803e3d6000fd5b505050506140e6565b6040516305bfb49960e41b815261100190635bfb4990906140b3908b906004016185b8565b600060405180830381600087803b1580156140cd57600080fd5b505af11580156140e1573d6000803e3d6000fd5b505050505b60019350614101565b818310614101576140ff88616a42565b505b6040516001600160a01b038916907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050505b949350505050565b614149617e8e565b6000614153617e8e565b61415b617f2b565b61416c61416786616c41565b616c66565b90506000805b61417b83616cb0565b156142ef57806141a05761419661419184616cd1565b616d1f565b60ff1684526142e7565b80600114156142e25760606141bc6141b785616cd1565b616d9f565b905080516040519080825280602002602001820160405280156141f957816020015b6141e6617eb2565b8152602001906001900390816141de5790505b508560200181905250805160405190808252806020026020018201604052801561423757816020015b60608152602001906001900390816142225790505b50604086015260005b81518110156142d757614251617eb2565b6060600061427185858151811061426457fe5b6020026020010151616e70565b92509250925080614291578860009a509a505050505050505050506142f8565b82896020015185815181106142a257fe5b602002602001018190525081896040015185815181106142be57fe5b6020026020010181905250505050806001019050614240565b5060019250506142e7565b6142ef565b600101614172565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b606081526020019060019003908161431757905050905061433d8363ffffffff16616f8a565b8160008151811061434a57fe5b602002602001018190525061119f81616f9d565b60006064835111156143955760008051602061956783398151915260405161438590618b06565b60405180910390a1506066611e0c565b60005b83518110156144335760005b8181101561442a578481815181106143b857fe5b6020026020010151600001516001600160a01b03168583815181106143d957fe5b6020026020010151600001516001600160a01b031614156144225760008051602061956783398151915260405161440f90618c4d565b60405180910390a1606692505050611e0c565b6001016143a4565b50600101614398565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156144e55760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a0830152908352909201910161445b565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156145ba5760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156145a65780601f1061457b576101008083540402835291602001916145a6565b820191906000526020600020905b81548152906001019060200180831161458957829003601f168201915b50505050508152602001906001019061450f565b50505050905060005b8251811015614617578281815181106145d857fe5b6020026020010151606001516003028382815181106145f357fe5b60209081029190910101516001600160401b039091166060909101526001016145c3565b5060608061462789898686617027565b9150915061463582826158e3565b60015460408051828152602080840282010190915292985090965060009550859450925060609150828015614674578160200160208202803683370190505b50905060005b828110156148055760006001600160a01b03166120026001600160a01b03166386d54506600184815481106146ab57fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b1681526146e6926001600160a01b0390921691016185b8565b60206040518083038186803b1580156146fe57600080fd5b505afa158015614712573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147369190618228565b6001600160a01b03161461479857600182828151811061475257fe5b602002602001019060ff16908160ff16815250506001818154811061477357fe5b906000526020600020906004020160030154600014614793578360010193505b6147fd565b67016345785d8a0000600182815481106147ae57fe5b906000526020600020906004020160030154106147d0578460010194506147fd565b600181815481106147dd57fe5b9060005260206000209060040201600301546000146147fd578360010193505b60010161467a565b50606084604051908082528060200260200182016040528015614832578160200160208202803683370190505b509050606085604051908082528060200260200182016040528015614861578160200160208202803683370190505b509050606086604051908082528060200260200182016040528015614890578160200160208202803683370190505b5090506060876040519080825280602002602001820160405280156148bf578160200160208202803683370190505b50905060006060886040519080825280602002602001820160405280156148f0578160200160208202803683370190505b50905060608960405190808252806020026020018201604052801561491f578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561496757600080fd5b505afa15801561497b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061499f9190618463565b905067016345785d8a00008111156149eb576000805160206195678339815191526040516149cc906190c7565b60405180910390a160689e505050505050505050505050505050611e0c565b60005b8a811015614d7f57898181518110614a0257fe5b602002602001015160ff1660011415614af85760018181548110614a2257fe5b906000526020600020906004020160030154600014614af35760018181548110614a4857fe5b600091825260209091206004909102015484516001600160a01b039091169085908e908110614a7357fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060018181548110614aa057fe5b906000526020600020906004020160030154838d81518110614abe57fe5b60200260200101818152505060018a8d81518110614ad857fe5b602002602001019060ff16908160ff16815250508b6001019b505b614d77565b67016345785d8a000060018281548110614b0e57fe5b90600052602060002090600402016003015410614c935760018181548110614b3257fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e81518110614b6357fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be40060018381548110614b9857fe5b90600052602060002090600402016003015481614bb157fe5b0660018381548110614bbf57fe5b906000526020600020906004020160030154039050614be783826165bc90919063ffffffff16565b898f81518110614bf357fe5b60200260200101818152505060018281548110614c0c57fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f81518110614c3d57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f81518110614c6a57fe5b6020908102919091010152614c85868263ffffffff6165fe16565b95508d6001019d5050614d77565b60018181548110614ca057fe5b906000526020600020906004020160030154600014614d775760018181548110614cc657fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d81518110614cf757fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060018181548110614d2457fe5b906000526020600020906004020160030154838d81518110614d4257fe5b60200260200101818152505060008a8d81518110614d5c57fe5b602002602001019060ff16908160ff16815250508b6001019b505b6001016149ee565b5060008415614ff5576002546040516303702b2960e51b815261100491636e056520918891614db9918e918e918d914201906004016186e9565b6020604051808303818588803b158015614dd257600080fd5b505af193505050508015614e03575060408051601f3d908101601f19168201909252614e0091810190618390565b60015b614f7a576040516000815260443d1015614e1f57506000614eba565b60046000803e60005160e01c6308c379a08114614e40576000915050614eba565b60043d036004833e81513d60248201116001600160401b0382111715614e6b57600092505050614eba565b80830180516001600160401b03811115614e8c576000945050505050614eba565b8060208301013d8601811115614eaa57600095505050505050614eba565b601f01601f191660405250925050505b80614ec55750614f07565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614ef9919061876e565b60405180910390a250614f75565b3d808015614f31576040519150601f19603f3d011682016040523d82523d6000602084013e614f36565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614f6b919061876e565b60405180910390a2505b614ff5565b8015614fbc577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614faf919061947a565b60405180910390a1614ff3565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614fea90618830565b60405180910390a25b505b80156151ab5760005b87518110156151a957600088828151811061501557fe5b6020026020010151905060006001828154811061502e57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc918590811061505f57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f193505050509050801561511b57600182815481106150a057fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d91859081106150ef57fe5b90600052602060002090600402016003015460405161510e919061947a565b60405180910390a261519f565b6001828154811061512857fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d918590811061517757fe5b906000526020600020906004020160030154604051615196919061947a565b60405180910390a25b5050600101614ffe565b505b8351156153a15760005b845181101561539f578a81815181106151ca57fe5b602002602001015160ff1660011415615269576120026001600160a01b031663092193ab8583815181106151fa57fe5b602002602001015187848151811061520e57fe5b60200260200101516040518363ffffffff1660e01b815260040161523291906185b8565b6000604051808303818588803b15801561524b57600080fd5b505af115801561525f573d6000803e3d6000fd5b5050505050615397565b600085828151811061527757fe5b60200260200101516001600160a01b03166108fc86848151811061529757fe5b60200260200101519081150290604051600060405180830381858888f193505050509050801561532d578582815181106152cd57fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d86848151811061530b57fe5b6020026020010151604051615320919061947a565b60405180910390a2615395565b85828151811061533957fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d86848151811061537757fe5b602002602001015160405161538c919061947a565b60405180910390a25b505b6001016151b5565b505b5050505050505050505050505060005b60015481101561540e57600181815481106153c857fe5b906000526020600020906004020160030154600014615406576000600182815481106153f057fe5b9060005260206000209060040201600301819055505b6001016153b1565b50471561547c577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051615444919061947a565b60405180910390a1604051611002904780156108fc02916000818181858888f1935050505015801561547a573d6000803e3d6000fd5b505b60006003819055600555815115615497576154978282615dcd565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156154d457600080fd5b505af11580156154e8573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b6000806001838154811061553057fe5b9060005260206000209060040201600301549050600060018080549050039050600161555a61333f565b511161558f5760006001858154811061556f57fe5b906000526020600020906004020160030181905550600092505050611e0c565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70836040516155c8919061947a565b60405180910390a26001600160a01b038516600090815260046020526040812055835b600154600019018110156157b5576001816001018154811061560957fe5b90600052602060002090600402016001828154811061562457fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b8054909183019081106156e557fe5b9060005260206000209060160201600b828154811061570057fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615757938386019390821615610100026000190190911604617f4b565b5061576a60038281019084016013617fc0565b5090505080600101600460006001848154811061578357fe5b600091825260208083206004909202909101546001600160a01b031683528201929092526040019020556001016155eb565b5060018054806157c157fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061581457fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906158466002830182617ee7565b615854600383016000617fea565b50509055600081838161586357fe5b04905080156158d75760015460005b818110156158d4576158ab836001838154811061588b57fe5b9060005260206000209060040201600301546165fe90919063ffffffff16565b600182815481106158b857fe5b6000918252602090912060036004909202010155600101615872565b50505b50600195945050505050565b6060806000808080806158f4613454565b6001549091505b8015615b2657600181039250600b838154811061591457fe5b600091825260209091206001601690920201015460ff1661593457615b1d565b6001838154811061594157fe5b600091825260208220600490910201546001600160a01b0316955061596b90869085908590613e6c565b93508361597757615b1d565b60405163436aa28360e11b81526000908190612002906386d54506906159a1908a906004016185b8565b60206040518083038186803b1580156159b957600080fd5b505afa1580156159cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906159f19190618228565b90506001600160a01b03811615615a7a576040516302ceee9160e11b81526120029063059ddd2290615a279084906004016185b8565b60206040518083038186803b158015615a3f57600080fd5b505afa158015615a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615a779190618228565b91505b60005b8c51811015615b1957876001600160a01b03168d8281518110615a9c57fe5b6020026020010151600001516001600160a01b03161480615ae55750826001600160a01b03168d8281518110615ace57fe5b6020026020010151600001516001600160a01b0316145b15615b115760018d8281518110615af857fe5b6020908102919091010151901515608090910152615b19565b600101615a7d565b5050505b600019016158fb565b5060005b8951811015615b9357898181518110615b3f57fe5b60200260200101516080015180615b7f575060006001600160a01b03168a8281518110615b6857fe5b6020026020010151600001516001600160a01b0316145b15615b8b578560010195505b600101615b2a565b5088518510615c7b5760408051600180825281830190925290816020015b615bb9617eb2565b815260200190600190039081615bb1575050604080516001808252818301909252919850602082015b6060815260200190600190039081615be257905050955088600081518110615c0657fe5b602002602001015187600081518110615c1b57fe5b602002602001018190525087600081518110615c3357fe5b602002602001015186600081518110615c4857fe5b6020026020010181905250600087600081518110615c6257fe5b6020908102919091010151901515608090910152615dc0565b84895103604051908082528060200260200182016040528015615cb857816020015b615ca5617eb2565b815260200190600190039081615c9d5790505b50965084895103604051908082528060200260200182016040528015615cf257816020015b6060815260200190600190039081615cdd5790505b5095506000915060005b8951811015615dbe57898181518110615d1157fe5b602002602001015160800151158015615d54575060006001600160a01b03168a8281518110615d3c57fe5b6020026020010151600001516001600160a01b031614155b15615db657898181518110615d6557fe5b6020026020010151888481518110615d7957fe5b6020026020010181905250888181518110615d9057fe5b6020026020010151878481518110615da457fe5b60200260200101819052508260010192505b600101615cfc565b505b50505050505b9250929050565b600154825160005b82811015615eea576001615de7617eb2565b60018381548110615df457fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b84811015615ebe57878181518110615e8457fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615eb65760009250615ebe565b600101615e70565b508115615ee05780516001600160a01b03166000908152600460205260408120555b5050600101615dd5565b5080821115615fa957805b82811015615fa7576001805480615f0857fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615f5b57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615f8d6002830182617ee7565b615f9b600383016000617fea565b50509055600101615ef5565b505b6000818310615fb85781615fba565b825b905060005b8181101561635e5761606c868281518110615fd657fe5b602002602001015160018381548110615feb57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a08201526173f3565b61622057806001016004600088848151811061608457fe5b6020026020010151600001516001600160a01b03166001600160a01b03168152602001908152602001600020819055508581815181106160c057fe5b6020026020010151600182815481106160d557fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061619057fe5b6020026020010151600b82815481106161a557fe5b906000526020600020906016020160020190805190602001906161c9929190617de7565b506000600b82815481106161d957fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b80548390811061620a57fe5b6000918252602090912060169091020155616356565b85818151811061622c57fe5b6020026020010151606001516001828154811061624557fe5b906000526020600020906004020160020160146101000a8154816001600160401b0302191690836001600160401b0316021790555061630b85828151811061628957fe5b6020026020010151600b838154811061629e57fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561382f5780601f106138045761010080835404028352916020019161382f565b6163565784818151811061631b57fe5b6020026020010151600b828154811061633057fe5b90600052602060002090601602016002019080519060200190616354929190617de7565b505b600101615fbf565b50828211156165365761636f617db8565b835b838110156165335785818151811061638557fe5b6020026020010151826040018190525060018782815181106163a357fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b80549283018155909352845160169091026000805160206195878339815191528101918255858301516000805160206195c78339815191528201805491151560ff19909216919091179055928501518051869492936164d9936000805160206195a783398151915201920190617de7565b5060608201516164ef9060038301906013617e61565b505050806001016004600089848151811061650657fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101616371565b50505b61653e61744f565b616546617631565b6000600981905560015493505b838110156165b4576000600b828154811061656a57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b80548390811061659b57fe5b6000918252602090912060169091020155600101616553565b505050505050565b600061119f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061781f565b60008282018381101561119f5760405162461bcd60e51b8152600401610e729061899b565b60015481516040805182815260208084028201019091526060929190839082801561666257816020015b606081526020019060019003908161664d5790505b50600b549091508314616679579250611d5c915050565b60005b8281101561678857600b60016004600089858151811061669857fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205403815481106166cc57fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156167645780601f1061673957610100808354040283529160200191616764565b820191906000526020600020905b81548152906001019060200180831161674757829003601f168201915b505050505082828151811061677557fe5b602090810291909101015260010161667c565b50949350505050565b60005b828110156168de57600082878388016040516020016167b49291906185aa565b6040516020818303038152906040528051906020012060001c816167d457fe5b069050808501828701146168d557600089838801815181106167f257fe5b602002602001015190506060898489018151811061680c57fe5b602002602001015190508a8388018151811061682457fe5b60200260200101518b858a018151811061683a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061686957fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061689757fe5b60200260200101518a858a01815181106168ad57fe5b6020026020010181905250808a848901815181106168c757fe5b602002602001018190525050505b50600101616794565b5050505050505050565b600980546001908101909155600b80548390811061690257fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b828154811061693857fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b600081604051602001616993919061858e565b60405160208183030381529060405280519060200120836040516020016169ba919061858e565b6040516020818303038152906040528051906020012014905092915050565b015190565b8151815160009160019181148083146169fa5760009250616a38565b600160208701838101602088015b600284838510011415616a33578051835114616a275760009650600093505b60209283019201616a08565b505050505b5090949350505050565b6001600160a01b03811660009081526004602052604081205480616a6b57506000199050611d5c565b600181039050600060018281548110616a8057fe5b9060005260206000209060040201600301549050600060018381548110616aa357fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90616afc90859061947a565b60405180910390a280616b1457829350505050611d5c565b6000818381616b1f57fe5b0490508015616bbb5760005b84811015616b6d57616b44826001838154811061588b57fe5b60018281548110616b5157fe5b6000918252602090912060036004909202010155600101616b2b565b50600180549085015b81811015616bb857616b8f836001838154811061588b57fe5b60018281548110616b9c57fe5b6000918252602090912060036004909202010155600101616b76565b50505b5091949350505050565b600082616bd457506000611e0c565b82820282848281616be157fe5b041461119f5760405162461bcd60e51b8152600401610e7290618f99565b600061119f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061784b565b616c49617ff9565b506040805180820190915281518152602082810190820152919050565b616c6e617f2b565b616c7782617882565b616c8057600080fd5b6000616c8f83602001516178bc565b60208085015160408051808201909152868152920190820152915050919050565b6000616cba617ff9565b505080518051602091820151919092015191011190565b616cd9617ff9565b616ce282616cb0565b616ceb57600080fd5b60208201516000616cfb8261791f565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590616d3457508151602110155b616d3d57600080fd5b6000616d4c83602001516178bc565b90508083600001511015616d725760405162461bcd60e51b8152600401610e729061918e565b82516020808501518301805192849003929183101561678857506020919091036101000a90049392505050565b6060616daa82617882565b616db357600080fd5b6000616dbe83617a00565b9050606081604051908082528060200260200182016040528015616dfc57816020015b616de9617ff9565b815260200190600190039081616de15790505b5090506000616e0e85602001516178bc565b60208601510190506000805b84811015616e6557616e2b8361791f565b9150604051806040016040528083815260200184815250848281518110616e4e57fe5b602090810291909101015291810191600101616e1a565b509195945050505050565b616e78617eb2565b60606000616e84617eb2565b6060616e8e617f2b565b616e9787616c66565b90506000805b616ea683616cb0565b15616f7b5780616ed157616ec1616ebc84616cd1565b617a5c565b6001600160a01b03168552616f73565b8060011415616ef957616ee6616ebc84616cd1565b6001600160a01b03166020860152616f73565b8060021415616f2157616f0e616ebc84616cd1565b6001600160a01b03166040860152616f73565b8060031415616f4d57616f3661419184616cd1565b6001600160401b0316606086015260019150616f73565b8060041415616f6e57616f67616f6284616cd1565b617a76565b9350616f73565b616f7b565b600101616e9d565b50929791965091945092505050565b6060611e0c616f9883617ae6565b617bcc565b6060815160001415616fbe5750604080516000815260208101909152611d5c565b606082600081518110616fcd57fe5b602002602001015190506000600190505b835181101561700e5761700482858381518110616ff757fe5b6020026020010151617c1e565b9150600101616fde565b5061119f617021825160c060ff16617c9b565b82617c1e565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561706757600080fd5b505afa15801561707b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061709f9190618463565b905080855188510110156170b4575083518651015b6060816040519080825280602002602001820160405280156170f057816020015b6170dd617eb2565b8152602001906001900390816170d55790505b50905060608260405190808252806020026020018201604052801561712957816020015b60608152602001906001900390816171145790505b50905060008060005b8b518310806171415750895182105b801561714c57508581105b156173e1578b518314156171bc5789828151811061716657fe5b602002602001015185828151811061717a57fe5b602002602001018190525088828151811061719157fe5b60200260200101518482815181106171a557fe5b602090810291909101015260019182019101617132565b8951821415617227578b83815181106171d157fe5b60200260200101518582815181106171e557fe5b60200260200101819052508a83815181106171fc57fe5b602002602001015184828151811061721057fe5b602090810291909101015260019283019201617132565b89828151811061723357fe5b6020026020010151606001516001600160401b03168c848151811061725457fe5b6020026020010151606001516001600160401b031611156172d0578b838151811061727b57fe5b602002602001015185828151811061728f57fe5b60200260200101819052508a83815181106172a657fe5b60200260200101518482815181106172ba57fe5b60200260200101819052508260010192506173d9565b8982815181106172dc57fe5b6020026020010151606001516001600160401b03168c84815181106172fd57fe5b6020026020010151606001516001600160401b031610156173795789828151811061732457fe5b602002602001015185828151811061733857fe5b602002602001018190525088828151811061734f57fe5b602002602001015184828151811061736357fe5b60200260200101819052508160010191506173d9565b89828151811061738557fe5b6020026020010151600001516001600160a01b03168c84815181106173a657fe5b6020026020010151600001516001600160a01b031610156173cd578b838151811061727b57fe5b89828151811061716657fe5b600101617132565b50929a91995090975050505050505050565b805182516000916001600160a01b03918216911614801561742d575081602001516001600160a01b031683602001516001600160a01b0316145b801561119f5750506040908101519101516001600160a01b0390811691161490565b6012546013548082111561749a57805b8281101561749857601280548061747257fe5b60019003818190600052602060002001600061748e9190617ee7565b905560010161745f565b505b60008183106174a957816174ab565b825b905060005b818110156175c357617568601282815481106174c857fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156175565780601f1061752b57610100808354040283529160200191617556565b820191906000526020600020905b81548152906001019060200180831161753957829003601f168201915b5050505050601383815481106137a157fe5b6175bb576013818154811061757957fe5b906000526020600020016012828154811061759057fe5b9060005260206000200190805460018160011615610100020316600290046175b9929190617f4b565b505b6001016174b0565b5082821115610e9457825b82811015613d8c576012601382815481106175e557fe5b6000918252602080832084546001818101875595855291909320929091018054617628949390920192909160026101009282161592909202600019011604617f4b565b506001016175ce565b601354600b548082111561767c57805b8281101561767a57601380548061765457fe5b6001900381819060005260206000200160006176709190617ee7565b9055600101617641565b505b600081831061768b578161768d565b825b905060005b818110156177ac5761774a601382815481106176aa57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156177385780601f1061770d57610100808354040283529160200191617738565b820191906000526020600020905b81548152906001019060200180831161771b57829003601f168201915b5050505050600b838154811061629e57fe5b6177a457600b818154811061775b57fe5b90600052602060002090601602016002016013828154811061777957fe5b9060005260206000200190805460018160011615610100020316600290046177a2929190617f4b565b505b600101617692565b5082821115610e9457825b82811015613d8c576013600b82815481106177ce57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461781695939094019390926000199082161561010002011604617f4b565b506001016177b7565b600081848411156178435760405162461bcd60e51b8152600401610e72919061876e565b505050900390565b6000818361786c5760405162461bcd60e51b8152600401610e72919061876e565b50600083858161787857fe5b0495945050505050565b805160009061789357506000611d5c565b6020820151805160001a9060c08210156178b257600092505050611d5c565b5060019392505050565b8051600090811a60808110156178d6576000915050611d5c565b60b88110806178f1575060c081108015906178f1575060f881105b15617900576001915050611d5c565b60c08110156179145760b519019050611d5c565b60f519019050611d5c565b80516000908190811a608081101561793a57600191506179f9565b60b881101561794f57607e19810191506179f9565b60c08110156179a057600060b78203600186019550806020036101000a86510491506001810182019350508083101561799a5760405162461bcd60e51b8152600401610e7290618e57565b506179f9565b60f88110156179b55760be19810191506179f9565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156179f75760405162461bcd60e51b8152600401610e7290618e57565b505b5092915050565b8051600090617a1157506000611d5c565b60008090506000617a2584602001516178bc565b602085015185519181019250015b80821015617a5357617a448261791f565b82019150826001019250617a33565b50909392505050565b8051600090601514617a6d57600080fd5b611e0c82616d1f565b8051606090617a8457600080fd5b6000617a9383602001516178bc565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015617aca576020820181803683370190505b5090506000816020019050616788848760200151018285617d6d565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416617b2a57506018617b4e565b6fffffffffffffffffffffffffffffffff198416617b4a57506010617b4e565b5060005b6020811015617b8457818181518110617b6357fe5b01602001516001600160f81b03191615617b7c57617b84565b600101617b4e565b60008160200390506060816040519080825280601f01601f191660200182016040528015617bb9576020820181803683370190505b5080830196909652508452509192915050565b606081516001148015617bfe5750607f60f81b82600081518110617bec57fe5b01602001516001600160f81b03191611155b15617c0a575080611d5c565b611e0c617c1c8351608060ff16617c9b565b835b6060806040519050835180825260208201818101602087015b81831015617c4f578051835260209283019201617c37565b50855184518101855292509050808201602086015b81831015617c7c578051835260209283019201617c64565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310617cc55760405162461bcd60e51b8152600401610e7290618b91565b60408051600180825281830190925260609160208201818036833701905050905060378411617d1f5782840160f81b81600081518110617d0157fe5b60200101906001600160f81b031916908160001a9053509050611e0c565b6060617d2a85617ae6565b90508381510160370160f81b82600081518110617d4357fe5b60200101906001600160f81b031916908160001a905350617d648282617c1e565b95945050505050565b80617d7757610e94565b5b60208110617d97578251825260209283019290910190601f1901617d78565b915181516020939093036101000a6000190180199091169216919091179052565b60405180608001604052806000815260200160001515815260200160608152602001617de2618013565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10617e2857805160ff1916838001178555617e55565b82800160010185558215617e55579182015b82811115617e55578251825591602001919060010190617e3a565b5061348f929150618032565b8260138101928215617e555791602002820182811115617e55578251825591602001919060010190617e3a565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f10617f0d5750611f74565b601f016020900490600052602060002090810190611f749190618032565b6040518060400160405280617f3e617ff9565b8152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10617f845780548555617e55565b82800160010185558215617e5557600052602060002091601f016020900482015b82811115617e55578254825591600101919060010190617fa5565b8260138101928215617e555791820182811115617e55578254825591600101919060010190617fa5565b50611f74906013810190618032565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b61267b91905b8082111561348f5760008155600101618038565b8035611e0c81619551565b60008083601f840112618068578182fd5b5081356001600160401b0381111561807e578182fd5b6020830191508360208083028501011115615dc657600080fd5b6000601f83818401126180a9578182fd5b82356180bc6180b782619506565b6194e0565b818152925060208084019085810160005b8481101561814e578135880189603f8201126180e857600080fd5b838101356001600160401b0381111561810057600080fd5b618111818901601f191686016194e0565b81815260408c8184860101111561812757600080fd5b828185018884013750600091810186019190915285525092820192908201906001016180cd565b50505050505092915050565b600082601f83011261816a578081fd5b81356181786180b782619506565b81815291506020808301908481018184028601820187101561819957600080fd5b6000805b8581101561814e5782356001600160401b03811681146181bb578283fd5b8552938301939183019160010161819d565b60008083601f8401126181de578182fd5b5081356001600160401b038111156181f4578182fd5b602083019150836020828501011115615dc657600080fd5b60006020828403121561821d578081fd5b813561119f81619551565b600060208284031215618239578081fd5b815161119f81619551565b60008060008060408587031215618259578283fd5b84356001600160401b038082111561826f578485fd5b61827b88838901618057565b90965094506020870135915080821115618293578384fd5b506182a087828801618057565b95989497509550505050565b6000806000606084860312156182c0578283fd5b83356001600160401b03808211156182d6578485fd5b81860187601f8201126182e7578586fd5b803592506182f76180b784619506565b80848252602080830192508084018b82838902870101111561831757898afd5b8994505b868510156183415761832d8c8261804c565b84526001949094019392810192810161831b565b509097508801359350505080821115618358578384fd5b6183648783880161815a565b93506040860135915080821115618379578283fd5b5061838686828701618098565b9150509250925092565b6000602082840312156183a1578081fd5b8151801515811461119f578182fd5b600080602083850312156183c2578182fd5b82356001600160401b038111156183d7578283fd5b6183e3858286016181cd565b90969095509350505050565b60008060008060408587031215618404578384fd5b84356001600160401b038082111561841a578586fd5b618426888389016181cd565b9096509450602087013591508082111561843e578384fd5b506182a0878288016181cd565b60006020828403121561845c578081fd5b5035919050565b600060208284031215618474578081fd5b5051919050565b6000806040838503121561848d578182fd5b505080516020909101519092909150565b6000806000604084860312156184b2578081fd5b833560ff811681146184c2578182fd5b925060208401356001600160401b038111156184dc578182fd5b6184e8868287016181cd565b9497909650939450505050565b6000815180845260208085019450808401835b8381101561852d5781516001600160a01b031687529582019590820190600101618508565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261857a816020860160208601619525565b601f01601f19169290920160200192915050565b600082516185a0818460208701619525565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b0392909216825260ff16602082015260400190565b60006020825261119f60208301846184f5565b60006040825261868c60408301856184f5565b602083820381850152818551808452828401915082838202850101838801865b838110156186da57601f198784030185526186c8838351618562565b948601949250908501906001016186ac565b50909998505050505050505050565b6000608082526186fc60808301876184f5565b828103602084810191909152865180835287820192820190845b8181101561873257845183529383019391830191600101618716565b5050848103604086015261874681886184f5565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b60006020825261119f6020830184618562565b600060408252618795604083018688618538565b82810360208401526187a8818587618538565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526063908201527f7468652073797374656d52657761726442617365526174696f20706c7573206260408201527f75726e526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252601d908201527f6c656e677468206f66207475726e4c656e677468206d69736d61746368000000604082015260600190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526063908201527f746865206275726e526174696f20706c75732073797374656d5265776172644260408201527f617365526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b6020808252602b908201527f6c656e677468206f662073797374656d526577617264416e74694d455652617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526063908201527f7468652073797374656d526577617264416e74694d4556526174696f20706c7560408201527f73206275726e526174696f20616e642073797374656d5265776172644261736560608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252602f908201527f746865207475726e4c656e6774682073686f756c6420626520696e205b332c3960408201526e5d206f7220657175616c20746f203160881b606082015260800190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526028908201527f6c656e677468206f662073797374656d52657761726442617365526174696f206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b6000848252831515602083015260606040830152617d646060830184618562565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617d64604083018486618538565b6040518181016001600160401b03811182821017156194fe57600080fd5b604052919050565b60006001600160401b0382111561951b578081fd5b5060209081020190565b60005b83811015619540578181015183820152602001619528565b83811115613d8c5750506000910152565b6001600160a01b0381168114611f7457600080fdfe70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/bohr/types.go b/core/systemcontracts/bohr/types.go index 7c859194a0..6995324b65 100644 --- a/core/systemcontracts/bohr/types.go +++ b/core/systemcontracts/bohr/types.go @@ -17,11 +17,3 @@ var ( //go:embed chapel/StakeHubContract ChapelStakeHubContract string ) - -// contract codes for Rialto upgrade -var ( - //go:embed rialto/ValidatorContract - RialtoValidatorContract string - //go:embed rialto/StakeHubContract - RialtoStakeHubContract string -) diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index f9a776e245..30492342d7 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -776,22 +776,6 @@ func init() { }, } - bohrUpgrade[rialtoNet] = &Upgrade{ - UpgradeName: "bohr", - Configs: []*UpgradeConfig{ - { - ContractAddr: common.HexToAddress(ValidatorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/398c9364aad5261c1ecd90ac3ab2df89b65c45e3", - Code: bohr.RialtoValidatorContract, - }, - { - ContractAddr: common.HexToAddress(StakeHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/398c9364aad5261c1ecd90ac3ab2df89b65c45e3", - Code: bohr.RialtoStakeHubContract, - }, - }, - } - pascalUpgrade[mainNet] = &Upgrade{ UpgradeName: "pascal", Configs: []*UpgradeConfig{ diff --git a/eth/backend.go b/eth/backend.go index 930924e7a6..56add41cc0 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -193,12 +193,9 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { chainConfig.CancunTime = config.OverridePassedForkTime chainConfig.HaberTime = config.OverridePassedForkTime chainConfig.HaberFixTime = config.OverridePassedForkTime + chainConfig.BohrTime = config.OverridePassedForkTime overrides.OverridePassedForkTime = config.OverridePassedForkTime } - if config.OverrideBohr != nil { - chainConfig.BohrTime = config.OverrideBohr - overrides.OverrideBohr = config.OverrideBohr - } if config.OverridePascal != nil { chainConfig.PascalTime = config.OverridePascal overrides.OverridePascal = config.OverridePascal diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index e40ec440cf..697a9fb91f 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -191,9 +191,6 @@ type Config struct { // OverridePassedForkTime OverridePassedForkTime *uint64 `toml:",omitempty"` - // OverrideBohr (TODO: remove after the fork) - OverrideBohr *uint64 `toml:",omitempty"` - // OverridePascal (TODO: remove after the fork) OverridePascal *uint64 `toml:",omitempty"` diff --git a/eth/ethconfig/gen_config.go b/eth/ethconfig/gen_config.go index bfad53a4d2..2d86b97ab1 100644 --- a/eth/ethconfig/gen_config.go +++ b/eth/ethconfig/gen_config.go @@ -71,7 +71,6 @@ func (c Config) MarshalTOML() (interface{}, error) { RPCEVMTimeout time.Duration RPCTxFeeCap float64 OverridePassedForkTime *uint64 `toml:",omitempty"` - OverrideBohr *uint64 `toml:",omitempty"` OverridePascal *uint64 `toml:",omitempty"` OverridePrague *uint64 `toml:",omitempty"` OverrideVerkle *uint64 `toml:",omitempty"` @@ -132,7 +131,6 @@ func (c Config) MarshalTOML() (interface{}, error) { enc.RPCEVMTimeout = c.RPCEVMTimeout enc.RPCTxFeeCap = c.RPCTxFeeCap enc.OverridePassedForkTime = c.OverridePassedForkTime - enc.OverrideBohr = c.OverrideBohr enc.OverridePascal = c.OverridePascal enc.OverridePrague = c.OverridePrague enc.OverrideVerkle = c.OverrideVerkle @@ -197,7 +195,6 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { RPCEVMTimeout *time.Duration RPCTxFeeCap *float64 OverridePassedForkTime *uint64 `toml:",omitempty"` - OverrideBohr *uint64 `toml:",omitempty"` OverridePascal *uint64 `toml:",omitempty"` OverridePrague *uint64 `toml:",omitempty"` OverrideVerkle *uint64 `toml:",omitempty"` @@ -369,9 +366,6 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { if dec.OverridePassedForkTime != nil { c.OverridePassedForkTime = dec.OverridePassedForkTime } - if dec.OverrideBohr != nil { - c.OverrideBohr = dec.OverrideBohr - } if dec.OverridePascal != nil { c.OverridePascal = dec.OverridePascal }