From b5603d2e984a181d1935687d9ce5ab4b5cf73ec2 Mon Sep 17 00:00:00 2001 From: Roshan Date: Thu, 14 Mar 2024 18:41:53 +0800 Subject: [PATCH] fix: add FeynmanFix upgrade for a testnet issue --- core/genesis.go | 14 +++++++---- core/systemcontracts/upgrade.go | 27 +++++++++++++++++++-- eth/backend.go | 4 +++ eth/ethconfig/config.go | 3 +++ params/config.go | 43 +++++++++++++++++++++++++++------ 5 files changed, 77 insertions(+), 14 deletions(-) diff --git a/core/genesis.go b/core/genesis.go index 5ff4e026a..9c2160ad5 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -276,11 +276,12 @@ func (e *GenesisMismatchError) Error() string { // ChainOverrides contains the changes to chain config // Typically, these modifications involve hardforks that are not enabled on the BSC mainnet, intended for testing purposes. type ChainOverrides struct { - OverrideShanghai *uint64 - OverrideKepler *uint64 - OverrideCancun *uint64 - OverrideVerkle *uint64 - OverrideFeynman *uint64 + OverrideShanghai *uint64 + OverrideKepler *uint64 + OverrideCancun *uint64 + OverrideVerkle *uint64 + OverrideFeynman *uint64 + OverrideFeynmanFix *uint64 } // SetupGenesisBlock writes or updates the genesis block in db. @@ -321,6 +322,9 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *trie.Database, gen if overrides != nil && overrides.OverrideFeynman != nil { config.FeynmanTime = overrides.OverrideFeynman } + if overrides != nil && overrides.OverrideFeynmanFix != nil { + config.FeynmanFixTime = overrides.OverrideFeynmanFix + } } } // Just commit the new block if there is no stored genesis block. diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index 973c023e1..cefd15f36 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -59,6 +59,8 @@ var ( keplerUpgrade = make(map[string]*Upgrade) feynmanUpgrade = make(map[string]*Upgrade) + + feynmanFixUpgrade = make(map[string]*Upgrade) ) func init() { @@ -634,8 +636,8 @@ func init() { }, { ContractAddr: common.HexToAddress(StakeHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", - Code: "608060405260043610620003db5760003560e01c806386d545061162000203578063d115a2061162000117578063e992aaf511620000ad578063f80a34021162000078578063f80a34021462000bed578063fb50b31f1462000c12578063fc0c5ff11462000c37578063ff69ab611462000c4f57600080fd5b8063e992aaf51462000b6a578063efdbf0e11462000b82578063f1f74d841462000bbe578063f1fad1041462000bd657600080fd5b8063d8ca511f11620000ee578063d8ca511f1462000afd578063daacdb661462000b15578063dbda7fb31462000b2d578063e8f67c3b1462000b5257600080fd5b8063d115a2061462000a9b578063d6ca429d1462000ab3578063d7c2dfc81462000ad857600080fd5b8063b187bd261162000199578063c38fbec81162000164578063c38fbec81462000a1d578063c473318f1462000a42578063c8509d81146200083b578063cbb04d9d1462000a5a57600080fd5b8063b187bd26146200098a578063baa7199e14620009aa578063bdceadf314620009cf578063bff02e2014620009e757600080fd5b8063982ef0a711620001da578063982ef0a714620008f5578063a43569b3146200090c578063aad3ec961462000940578063ac431751146200096557600080fd5b806386d5450614620008785780638a4d3fa814620008b25780638cd22b2214620008d057600080fd5b80634bf6c88211620002fb578063663706d3116200029157806376e7d6d6116200025c57806376e7d6d6146200080b5780638129fc1c1462000823578063831d65d1146200083b5780638456cb59146200086057600080fd5b8063663706d314620007385780636ec01b2714620007695780636f8e2fa414620007c157806375cc7d8914620007e657600080fd5b80635949187111620002d25780635949187114620006a05780635e7cc1c914620006c557806363a036b514620006ea57806364028fbd146200072157600080fd5b80634bf6c88214620006395780634d99dd1614620006635780634e6fd6c4146200068857600080fd5b80631fa8882b1162000371578063449ecfe61162000348578063449ecfe6146200058557806345211bfd14620005aa5780634838d16514620005cf5780634a49ac4c146200061457600080fd5b80631fa8882b1462000531578063384099881462000548578063417c73a7146200056057600080fd5b8063092193ab11620003b2578063092193ab146200047c5780630e9fbf5114620004935780631182b87514620004b857806317b4f35314620004ec57600080fd5b8063046f7da214620003fb578063059ddd2214620004135780630661806e146200045557600080fd5b36620003f65760345460ff16600114620003f457600080fd5b005b600080fd5b3480156200040857600080fd5b50620003f462000c67565b3480156200042057600080fd5b506200043862000432366004620093cc565b62000cf9565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200046257600080fd5b506200046d60365481565b6040519081526020016200044c565b620003f46200048d366004620093cc565b6200110e565b348015620004a057600080fd5b50620003f4620004b236600462009430565b6200174c565b348015620004c557600080fd5b50620004dd620004d736600462009475565b62001a74565b6040516200044c919062009528565b348015620004f957600080fd5b50620004386200050b3660046200961e565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200053e57600080fd5b506200046d603c81565b3480156200055557600080fd5b506200046d60375481565b3480156200056d57600080fd5b50620003f46200057f366004620093cc565b62001d4d565b3480156200059257600080fd5b50620003f4620005a4366004620093cc565b62001dcf565b348015620005b757600080fd5b50620003f4620005c9366004620093cc565b62001fb4565b348015620005dc57600080fd5b5062000603620005ee366004620093cc565b60016020526000908152604090205460ff1681565b60405190151581526020016200044c565b3480156200062157600080fd5b50620003f462000633366004620093cc565b6200218f565b3480156200064657600080fd5b5062000650600881565b60405160ff90911681526020016200044c565b3480156200067057600080fd5b50620003f46200068236600462009673565b6200220b565b3480156200069557600080fd5b506200043861dead81565b348015620006ad57600080fd5b50620003f4620006bf366004620096b1565b62002828565b348015620006d257600080fd5b50620003f4620006e436600462009721565b620035fa565b348015620006f757600080fd5b506200070f6200070936600462009741565b62003800565b6040516200044c9493929190620097aa565b620003f46200073236600462009866565b62003e92565b3480156200074557600080fd5b506200046d62000757366004620093cc565b60446020526000908152604090205481565b3480156200077657600080fd5b506200078e62000788366004620093cc565b620044dc565b6040805182516001600160401b03908116825260208085015182169083015292820151909216908201526060016200044c565b348015620007ce57600080fd5b50620004dd620007e0366004620093cc565b62004586565b348015620007f357600080fd5b50620003f462000805366004620093cc565b6200499f565b3480156200081857600080fd5b506200046d603d5481565b3480156200083057600080fd5b50620003f462004b71565b3480156200084857600080fd5b50620003f46200085a36600462009475565b62004e83565b3480156200086d57600080fd5b50620003f462004eed565b3480156200088557600080fd5b506200043862000897366004620093cc565b6043602052600090815260409020546001600160a01b031681565b348015620008bf57600080fd5b506200046d670de0b6b3a764000081565b348015620008dd57600080fd5b506200046d620008ef36600462009673565b62004f85565b620003f4620009063660046200993e565b6200503e565b3480156200091957600080fd5b50620009316200092b366004620093cc565b620056c8565b6040516200044c91906200997c565b3480156200094d57600080fd5b50620003f46200095f36600462009673565b620059b5565b3480156200097257600080fd5b50620003f462000984366004620099f9565b62005a22565b3480156200099757600080fd5b5060005462010000900460ff1662000603565b348015620009b757600080fd5b50620003f4620009c936600462009ab2565b620068c1565b348015620009dc57600080fd5b506200046d603c5481565b348015620009f457600080fd5b5062000a0c62000a0636600462009741565b62006a8e565b6040516200044c9392919062009b0e565b34801562000a2a57600080fd5b50620003f462000a3c366004620093cc565b62006c6a565b34801562000a4f57600080fd5b506200046d60385481565b34801562000a6757600080fd5b5062000a7f62000a79366004620093cc565b62006f28565b604080519384529115156020840152908201526060016200044c565b34801562000aa857600080fd5b506200046d61271081565b34801562000ac057600080fd5b50620003f462000ad236600462009b6b565b62007358565b34801562000ae557600080fd5b50620003f462000af736600462009c54565b6200755a565b34801562000b0a57600080fd5b506200046d603b5481565b34801562000b2257600080fd5b506200046d60495481565b34801562000b3a57600080fd5b506200043862000b4c366004620093cc565b62007650565b34801562000b5f57600080fd5b506200046d60355481565b34801562000b7757600080fd5b506200046d603a5481565b34801562000b8f57600080fd5b506200046d62000ba13660046200961e565b805160208183018101805160468252928201919093012091525481565b34801562000bcb57600080fd5b506200046d603e5481565b34801562000be357600080fd5b5062000650601181565b34801562000bfa57600080fd5b506200046d62000c0c36600462009673565b62007a67565b34801562000c1f57600080fd5b50620003f462000c31366004620099f9565b62007ad8565b34801562000c4457600080fd5b506200046d60395481565b34801562000c5c57600080fd5b506200046d604a5481565b600054630100000090046001600160a01b0316331462000c9a576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000cc457604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000d649062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462000d929062009cba565b801562000de35780601f1062000db75761010080835404028352916020019162000de3565b820191906000526020600020905b81548152906001019060200180831162000dc557829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000e0e9062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462000e3c9062009cba565b801562000e8d5780601f1062000e615761010080835404028352916020019162000e8d565b820191906000526020600020905b81548152906001019060200180831162000e6f57829003601f168201915b5050505050815260200160018201805462000ea89062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462000ed69062009cba565b801562000f275780601f1062000efb5761010080835404028352916020019162000f27565b820191906000526020600020905b81548152906001019060200180831162000f0957829003601f168201915b5050505050815260200160028201805462000f429062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462000f709062009cba565b801562000fc15780601f1062000f955761010080835404028352916020019162000fc1565b820191906000526020600020905b81548152906001019060200180831162000fa357829003601f168201915b5050505050815260200160038201805462000fdc9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200100a9062009cba565b80156200105b5780601f106200102f576101008083540402835291602001916200105b565b820191906000526020600020905b8154815290600101906020018083116200103d57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620010e7575050509190925250509051949350505050565b33611000146200113a57604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b03808216600090815260436020908152604080832054841680845260418352818420825161016081018452815487168152600182015487169481019490945260028101549095169183019190915260038401546060830152600484018054919491608084019190620011b39062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620011e19062009cba565b8015620012325780601f10620012065761010080835404028352916020019162001232565b820191906000526020600020905b8154815290600101906020018083116200121457829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200125d9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200128b9062009cba565b8015620012dc5780601f10620012b057610100808354040283529160200191620012dc565b820191906000526020600020905b815481529060010190602001808311620012be57829003601f168201915b50505050508152602001600182018054620012f79062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620013259062009cba565b8015620013765780601f106200134a5761010080835404028352916020019162001376565b820191906000526020600020905b8154815290600101906020018083116200135857829003601f168201915b50505050508152602001600282018054620013919062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620013bf9062009cba565b8015620014105780601f10620013e45761010080835404028352916020019162001410565b820191906000526020600020905b815481529060010190602001808311620013f257829003601f168201915b505050505081526020016003820180546200142b9062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620014599062009cba565b8015620014aa5780601f106200147e57610100808354040283529160200191620014aa565b820191906000526020600020905b8154815290600101906020018083116200148c57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162001536575050509190925250505060408101519091506001600160a01b031615806200157357508060e001515b156200163057604051611002903490600081818185875af1925050503d8060008114620015bd576040519150601f19603f3d011682016040523d82523d6000602084013e620015c2565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d604051620016239060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200168757600080fd5b505af11580156200169c573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea634604051620016dd91815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b91620017129190869060040162009cf0565b600060405180830381600087803b1580156200172d57600080fd5b505af115801562001742573d6000803e3d6000fd5b5050505050505b50565b33611001146200177457604051630f22c43960e41b8152611001600482015260240162001131565b60005462010000900460ff16156200179f57604051631785c68160e01b815260040160405180910390fd5b600060458383604051620017b592919062009d0a565b908152604051908190036020019020546001600160a01b03169050620017dd603f8262007d2a565b620017fb5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062001821603c4262009d30565b604a546000828152604b602052604090205491925011620018555760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b602052604081208054600192906200187690849062009d53565b909155505060405160469062001890908790879062009d0a565b908152602001604051809103902054600014158015620018df575042603c60468787604051620018c292919062009d0a565b908152602001604051809103902054620018dd919062009d53565b105b15620018fe57604051631898eb6b60e01b815260040160405180910390fd5b6000806200190e85600262007d4d565b91509150816200193157604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562001984573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019aa919062009d69565b9050620019b8858362007dd7565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620019f89392919062009d99565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001a36916001600160a01b0316908a9060040162009cf0565b600060405180830381600087803b15801562001a5157600080fd5b505af115801562001a66573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001a9e57604051630f22c43960e41b8152612000600482015260240162001131565b6034805460ff19166001179055604080516020601f8501819004810282018101909252838152600091829162001aef91879087908190840183828082843760009201919091525062007f9e92505050565b915091508062001b125760405163035ede3560e21b815260040160405180910390fd5b816060015160000362001b38575050604080516000815260208101909152905062001d3c565b606082015160405163e04c83a760e01b81526000916110049163e04c83a79162001b689160040190815260200190565b6020604051808303816000875af115801562001b88573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bae919062009dc8565b90508062001c555782602001516001600160a01b031683600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a8560600151600160405162001c0a92919062009de8565b60405180910390a385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092965062001d3c95505050505050565b600062001c628462008101565b9050600081600381111562001c7b5762001c7b62009d83565b0362001c9d575050604080516000815260208101909152925062001d3c915050565b83602001516001600160a01b031684600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a86606001518460405162001cf092919062009de8565b60405180910390a386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092975062001d3c9650505050505050565b6034805460ff191690559392505050565b600054630100000090046001600160a01b0316331462001d80576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001dfa57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001e2c5760405163b1d02c3d60e01b815260040160405180910390fd5b8062001e3a603f8262007d2a565b62001e585760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff1662001e9657604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001ee6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f0c919062009d69565b101562001f2c576040516317b204bf60e11b815260040160405180910390fd5b4281600b0154111562001f525760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff19169055604980546001919060009062001f7690849062009e0f565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff161562001fdf57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620020115760405163b1d02c3d60e01b815260040160405180910390fd5b336200201f603f8262007d2a565b6200203d5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166200206557604051636520611b60e11b815260040160405180910390fd5b6001600160a01b0382811660009081526043602052604090205416151580620020a657506001600160a01b03821660009081526047602052604090205460ff165b15620020c557604051631e6f587560e11b815260040160405180910390fd5b336000818152604160205260409020600c8101544290620020e990603c9062009d53565b11156200210957604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b600054630100000090046001600160a01b03163314620021c2576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff16156200223657604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620022685760405163b1d02c3d60e01b815260040160405180910390fd5b8162002276603f8262007d2a565b620022945760405163056e881160e01b815260040160405180910390fd5b81600003620022b657604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b03808416600090815260416020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805433949160808401916200231e9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200234c9062009cba565b80156200239d5780601f1062002371576101008083540402835291602001916200239d565b820191906000526020600020905b8154815290600101906020018083116200237f57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620023c89062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620023f69062009cba565b8015620024475780601f106200241b5761010080835404028352916020019162002447565b820191906000526020600020905b8154815290600101906020018083116200242957829003601f168201915b50505050508152602001600182018054620024629062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620024909062009cba565b8015620024e15780601f10620024b557610100808354040283529160200191620024e1565b820191906000526020600020905b815481529060010190602001808311620024c357829003601f168201915b50505050508152602001600282018054620024fc9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200252a9062009cba565b80156200257b5780601f106200254f576101008083540402835291602001916200257b565b820191906000526020600020905b8154815290600101906020018083116200255d57829003601f168201915b50505050508152602001600382018054620025969062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620025c49062009cba565b8015620026155780601f10620025e95761010080835404028352916020019162002615565b820191906000526020600020905b815481529060010190602001808311620025f757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620026a1575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af11580156200271b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002741919062009d69565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b40829802878460405162002792929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b031603620027bf57620027bf8662008794565b6040808301519051633041949b60e01b815261200591633041949b91620027ec9190879060040162009cf0565b600060405180830381600087803b1580156200280757600080fd5b505af11580156200281c573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff16156200285357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620028855760405163b1d02c3d60e01b815260040160405180910390fd5b8362002893603f8262007d2a565b620028b15760405163056e881160e01b815260040160405180910390fd5b83620028bf603f8262007d2a565b620028dd5760405163056e881160e01b815260040160405180910390fd5b6034805460ff1916600117905560008490036200290d57604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b031603620029405760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b0380871660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620029a89062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620029d69062009cba565b801562002a275780601f10620029fb5761010080835404028352916020019162002a27565b820191906000526020600020905b81548152906001019060200180831162002a0957829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002a529062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002a809062009cba565b801562002ad15780601f1062002aa55761010080835404028352916020019162002ad1565b820191906000526020600020905b81548152906001019060200180831162002ab357829003601f168201915b5050505050815260200160018201805462002aec9062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002b1a9062009cba565b801562002b6b5780601f1062002b3f5761010080835404028352916020019162002b6b565b820191906000526020600020905b81548152906001019060200180831162002b4d57829003601f168201915b5050505050815260200160028201805462002b869062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002bb49062009cba565b801562002c055780601f1062002bd95761010080835404028352916020019162002c05565b820191906000526020600020905b81548152906001019060200180831162002be757829003601f168201915b5050505050815260200160038201805462002c209062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002c4e9062009cba565b801562002c9f5780601f1062002c735761010080835404028352916020019162002c9f565b820191906000526020600020905b81548152906001019060200180831162002c8157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162002d2b57505050919092525050506001600160a01b0380891660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002db69062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002de49062009cba565b801562002e355780601f1062002e095761010080835404028352916020019162002e35565b820191906000526020600020905b81548152906001019060200180831162002e1757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002e609062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002e8e9062009cba565b801562002edf5780601f1062002eb35761010080835404028352916020019162002edf565b820191906000526020600020905b81548152906001019060200180831162002ec157829003601f168201915b5050505050815260200160018201805462002efa9062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002f289062009cba565b801562002f795780601f1062002f4d5761010080835404028352916020019162002f79565b820191906000526020600020905b81548152906001019060200180831162002f5b57829003601f168201915b5050505050815260200160028201805462002f949062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002fc29062009cba565b8015620030135780601f1062002fe75761010080835404028352916020019162003013565b820191906000526020600020905b81548152906001019060200180831162002ff557829003601f168201915b505050505081526020016003820180546200302e9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200305c9062009cba565b8015620030ad5780601f106200308157610100808354040283529160200191620030ad565b820191906000526020600020905b8154815290600101906020018083116200308f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620031395750505050508152505090508060e0015180156200317c5750876001600160a01b0316836001600160a01b031614155b156200319b57604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af1158015620031f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003218919062009d69565b90506037548110156200323e5760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b0316148015620032d357506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa158015620032ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032d1919062009d69565b105b15620032f2576040516317b204bf60e11b815260040160405180910390fd5b6000612710603a548362003307919062009e25565b62003313919062009d30565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d806000811462003368576040519150601f19603f3d011682016040523d82523d6000602084013e6200336d565b606091505b505090508062003390576040516312171d8360e31b815260040160405180910390fd5b6200339c828462009e0f565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af1158015620033f2573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062003419919062009d69565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e85896040516200347e939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620034c257620034c262009e3f565b60200260200101906001600160a01b031690816001600160a01b031681525050856040015181600181518110620034fd57620034fd62009e3f565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b8152612005906344840775906200353e9084908c9060040162009e55565b600060405180830381600087803b1580156200355957600080fd5b505af11580156200356e573d6000803e3d6000fd5b505050508a15620035e0576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b8152600401620035ab92919062009cf0565b600060405180830381600087803b158015620035c657600080fd5b505af1158015620035db573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff16156200362557604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620036575760405163b1d02c3d60e01b815260040160405180910390fd5b3362003665603f8262007d2a565b620036835760405163056e881160e01b815260040160405180910390fd5b336000818152604160205260409020600c8101544290620036a790603c9062009d53565b1115620036c757604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b90910481169085161115620037015760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b0390811690861610156200373f576009820154620037399086906001600160401b031662009e81565b62003759565b600982015462003759906001600160401b03168662009e81565b60098301546001600160401b039182169250600160801b900416811115620037945760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062003813603f620088ba565b90508086101562003e895784156200382c57846200382e565b805b94506000856200383f888462009e0f565b11620038575762003851878362009e0f565b62003859565b855b9050806001600160401b038111156200387657620038766200953d565b604051908082528060200260200182016040528015620038a0578160200160208202803683370190505b509450806001600160401b03811115620038be57620038be6200953d565b604051908082528060200260200182016040528015620038e8578160200160208202803683370190505b509350806001600160401b038111156200390657620039066200953d565b6040519080825280602002602001820160405280156200393b57816020015b6060815260200190600190039081620039255790505b50925060005b8181101562003e86576000620039656200395c838b62009d53565b603f90620088c5565b6001600160a01b03808216600090815260416020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805494955091939092916080840191620039d29062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462003a009062009cba565b801562003a515780601f1062003a255761010080835404028352916020019162003a51565b820191906000526020600020905b81548152906001019060200180831162003a3357829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003a7c9062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462003aaa9062009cba565b801562003afb5780601f1062003acf5761010080835404028352916020019162003afb565b820191906000526020600020905b81548152906001019060200180831162003add57829003601f168201915b5050505050815260200160018201805462003b169062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462003b449062009cba565b801562003b955780601f1062003b695761010080835404028352916020019162003b95565b820191906000526020600020905b81548152906001019060200180831162003b7757829003601f168201915b5050505050815260200160028201805462003bb09062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462003bde9062009cba565b801562003c2f5780601f1062003c035761010080835404028352916020019162003c2f565b820191906000526020600020905b81548152906001019060200180831162003c1157829003601f168201915b5050505050815260200160038201805462003c4a9062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462003c789062009cba565b801562003cc95780601f1062003c9d5761010080835404028352916020019162003cc9565b820191906000526020600020905b81548152906001019060200180831162003cab57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162003d55575050505050815250509050806000015188848151811062003d8e5762003d8e62009e3f565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e0015162003e275780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003dfb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e21919062009d69565b62003e2a565b60005b87848151811062003e3f5762003e3f62009e3f565b602002602001018181525050806080015186848151811062003e655762003e6562009e3f565b602002602001018190525050508062003e7e9062009ea4565b905062003941565b50505b92959194509250565b60005462010000900460ff161562003ebd57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562003eef5760405163b1d02c3d60e01b815260040160405180910390fd5b3362003efd603f8262007d2a565b1562003f1c57604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152604360205260409020541615158062003f5d57506001600160a01b03881660009081526047602052604090205460ff165b1562003f7c57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b03166045888860405162003f9b92919062009d0a565b908152604051908190036020019020546001600160a01b031614158062003fe557506048878760405162003fd192919062009d0a565b9081526040519081900360200190205460ff165b1562004004576040516311fdb94760e01b815260040160405180910390fd5b600062004012838062009ec0565b6040516020016200402592919062009d0a565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff16156200406f5760405163c0bf414360e01b815260040160405180910390fd5b600062004085670de0b6b3a76400003462009e0f565b9050603654811015620040ab576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a16620040d357604051636520611b60e11b815260040160405180910390fd5b611388620040e8604087016020880162009721565b6001600160401b031611806200412e57506200410b604086016020870162009721565b6001600160401b031662004123602087018762009721565b6001600160401b0316115b806200416d575062004147604086016020870162009721565b6001600160401b031662004162606087016040880162009721565b6001600160401b0316115b156200418c5760405163dc81db8560e01b815260040160405180910390fd5b620041d76200419c858062009ec0565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620088d392505050565b620041f557604051635dba5ad760e01b815260040160405180910390fd5b62004204838a8a8a8a62008a75565b6200422257604051631647e3cb60e11b815260040160405180910390fd5b6000620042708462004235878062009ec0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062008ba592505050565b90506200427f603f8562008ca6565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620042ff8b8d8362009f68565b5085600582016200431182826200a030565b50879050600982016200432582826200a169565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b0319169288169290921790915551859060459062004373908e908e9062009d0a565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620043f69291906200a239565b60405180910390a460408051848152602081018590526001600160a01b0387169182916000805160206200b540833981519152910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816916000805160206200b540833981519152910160405180910390a3604051633041949b60e01b815261200590633041949b906200449a908590899060040162009cf0565b600060405180830381600087803b158015620044b557600080fd5b505af1158015620044ca573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162004507603f8262007d2a565b620045255760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b6001600160a01b03808216600090815260416020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082810191909152600484018054919491608084019190620045f39062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620046219062009cba565b8015620046725780601f10620046465761010080835404028352916020019162004672565b820191906000526020600020905b8154815290600101906020018083116200465457829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200469d9062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620046cb9062009cba565b80156200471c5780601f10620046f0576101008083540402835291602001916200471c565b820191906000526020600020905b815481529060010190602001808311620046fe57829003601f168201915b50505050508152602001600182018054620047379062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620047659062009cba565b8015620047b65780601f106200478a57610100808354040283529160200191620047b6565b820191906000526020600020905b8154815290600101906020018083116200479857829003601f168201915b50505050508152602001600282018054620047d19062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620047ff9062009cba565b8015620048505780601f10620048245761010080835404028352916020019162004850565b820191906000526020600020905b8154815290600101906020018083116200483257829003601f168201915b505050505081526020016003820180546200486b9062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620048999062009cba565b8015620048ea5780601f10620048be57610100808354040283529160200191620048ea565b820191906000526020600020905b815481529060010190602001808311620048cc57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620049765750505091909252505050608001519392505050565b3361100114620049c757604051630f22c43960e41b8152611001600482015260240162001131565b6001600160a01b0380821660009081526043602052604090205416620049ef603f8262007d2a565b62004a0d5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004a70573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a96919062009d69565b90506000603d544262004aaa919062009d53565b905062004ab8838262007dd7565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004af89392919062009d99565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004b36916001600160a01b031690889060040162009cf0565b600060405180830381600087803b15801562004b5157600080fd5b505af115801562004b66573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562004b925750600054600160ff909116105b8062004bae5750303b15801562004bae575060005460ff166001145b62004c135760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162001131565b6000805460ff19166001179055801562004c37576000805461ff0019166101001790555b33411462004c585760405163022d8c9560e31b815260040160405180910390fd5b3a1562004c78576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755602d603855607860398190556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c55603d9190915560b4603e55604a556040805160c0810190915260a080825260609182916200b560602083013980602001905181019062004d0491906200a275565b9150604051806101e001604052806101c081526020016200b6006101c0913980602001905181019062004d3891906200a319565b905060005b825181101562004da75760016047600085848151811062004d625762004d6262009e3f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562004d9f8162009ea4565b905062004d3d565b5060005b815181101562004e18576001604883838151811062004dce5762004dce62009e3f565b602002602001015160405162004de591906200a416565b908152604051908190036020019020805491151560ff1990921691909117905562004e108162009ea4565b905062004dab565b5062004e3873df87f0e2b8519ea2dd4abd8b639cdd628497ed2562008cbd565b5050801562001749576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b336120001462004eab57604051630f22c43960e41b8152612000600482015260240162001131565b7faa5ba621c8b3d7d05bb9e51a7506108251d4d5dbe542ca66fc7bb52aacb02b6583838360405162004ee0939291906200a434565b60405180910390a1505050565b600054630100000090046001600160a01b0316331462004f20576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff161562004f4b57604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004f94603f8462007d2a565b62004fb25760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa1580156200500f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005035919062009d69565b90505b92915050565b60005462010000900460ff16156200506957604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200509b5760405163b1d02c3d60e01b815260040160405180910390fd5b81620050a9603f8262007d2a565b620050c75760405163056e881160e01b815260040160405180910390fd5b6037543490811015620050ed5760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b0380851660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620051559062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620051839062009cba565b8015620051d45780601f10620051a857610100808354040283529160200191620051d4565b820191906000526020600020905b815481529060010190602001808311620051b657829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620051ff9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200522d9062009cba565b80156200527e5780601f1062005252576101008083540402835291602001916200527e565b820191906000526020600020905b8154815290600101906020018083116200526057829003601f168201915b50505050508152602001600182018054620052999062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620052c79062009cba565b8015620053185780601f10620052ec5761010080835404028352916020019162005318565b820191906000526020600020905b815481529060010190602001808311620052fa57829003601f168201915b50505050508152602001600282018054620053339062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620053619062009cba565b8015620053b25780601f106200538657610100808354040283529160200191620053b2565b820191906000526020600020905b8154815290600101906020018083116200539457829003601f168201915b50505050508152602001600382018054620053cd9062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620053fb9062009cba565b80156200544c5780601f1062005420576101008083540402835291602001916200544c565b820191906000526020600020905b8154815290600101906020018083116200542e57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620054d85750505050508152505090508060e0015180156200551b5750856001600160a01b0316826001600160a01b031614155b156200553a57604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af11580156200558b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620055b2919062009d69565b9050826001600160a01b0316876001600160a01b03166000805160206200b5408339815191528387604051620055f2929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b91620056279190879060040162009cf0565b600060405180830381600087803b1580156200564257600080fd5b505af115801562005657573d6000803e3d6000fd5b50505050851562001742576040516372f6ad8f60e11b81526120059063e5ed5b1e906200568b9086908b9060040162009cf0565b600060405180830381600087803b158015620056a657600080fd5b505af1158015620056bb573d6000803e3d6000fd5b5050505050505050505050565b620056f46040518060800160405280606081526020016060815260200160608152602001606081525090565b8162005702603f8262007d2a565b620057205760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602052604090819020815160808101909252600501805482908290620057579062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620057859062009cba565b8015620057d65780601f10620057aa57610100808354040283529160200191620057d6565b820191906000526020600020905b815481529060010190602001808311620057b857829003601f168201915b50505050508152602001600182018054620057f19062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200581f9062009cba565b8015620058705780601f10620058445761010080835404028352916020019162005870565b820191906000526020600020905b8154815290600101906020018083116200585257829003601f168201915b505050505081526020016002820180546200588b9062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620058b99062009cba565b80156200590a5780601f10620058de576101008083540402835291602001916200590a565b820191906000526020600020905b815481529060010190602001808311620058ec57829003601f168201915b50505050508152602001600382018054620059259062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620059539062009cba565b8015620059a45780601f106200597857610100808354040283529160200191620059a4565b820191906000526020600020905b8154815290600101906020018083116200598657829003601f168201915b505050505081525050915050919050565b60005462010000900460ff1615620059e057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005a125760405163b1d02c3d60e01b815260040160405180910390fd5b62005a1e828262008d56565b5050565b336110071462005a4a57604051630f22c43960e41b8152611007600482015260240162001131565b62005ab76040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b1562005b72576020811462005ae95783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f840181900481028201810190925282815260009162005b2c91858580838501838280828437600092019190915250929392505062008ebf9050565b90506108fc81108062005b40575061271081115b1562005b695784848484604051630a5a604160e01b81526004016200113194939291906200a453565b6035556200687c565b62005be36040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b1562005cad576020811462005c155783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f840181900481028201810190925282815260009162005c5891858580838501838280828437600092019190915250929392505062008ebf9050565b9050683635c9adc5dea0000081108062005c7b575069152d02c7e14af680000081115b1562005ca45784848484604051630a5a604160e01b81526004016200113194939291906200a453565b6036556200687c565b62005d20604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b1562005de7576020811462005d525783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f840181900481028201810190925282815260009162005d9591858580838501838280828437600092019190915250929392505062008ebf9050565b905067016345785d8a000081108062005db55750678ac7230489e8000081115b1562005dde5784848484604051630a5a604160e01b81526004016200113194939291906200a453565b6037556200687c565b62005e58604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b1562005f10576020811462005e8a5783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f840181900481028201810190925282815260009162005ecd91858580838501838280828437600092019190915250929392505062008ebf9050565b905080158062005ede57506101f481115b1562005f075784848484604051630a5a604160e01b81526004016200113194939291906200a453565b6038556200687c565b62005f796040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b1562006036576020811462005fab5783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f840181900481028201810190925282815260009162005fee91858580838501838280828437600092019190915250929392505062008ebf9050565b90506203f48081108062006004575062278d0081115b156200602d5784848484604051630a5a604160e01b81526004016200113194939291906200a453565b6039556200687c565b620060a460405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b15620061515760208114620060d65783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f84018190048102820181019092528281526000916200611991858580838501838280828437600092019190915250929392505062008ebf9050565b90506064811115620061485784848484604051630a5a604160e01b81526004016200113194939291906200a453565b603a556200687c565b620061c160405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b15620062825760208114620061f35783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f84018190048102820181019092528281526000916200623691858580838501838280828437600092019190915250929392505062008ebf9050565b9050674563918244f40000811080620062505750603c5481115b15620062795784848484604051630a5a604160e01b81526004016200113194939291906200a453565b603b556200687c565b620062f06040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b15620063b35760208114620063225783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f84018190048102820181019092528281526000916200636591858580838501838280828437600092019190915250929392505062008ebf9050565b905068056bc75e2d63100000811080620063815750603b548111155b15620063aa5784848484604051630a5a604160e01b81526004016200113194939291906200a453565b603c556200687c565b620064206040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b15620064dd5760208114620064525783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f84018190048102820181019092528281526000916200649591858580838501838280828437600092019190915250929392505062008ebf9050565b90506202a300811080620064ab5750603e548110155b15620064d45784848484604051630a5a604160e01b81526004016200113194939291906200a453565b603d556200687c565b620065486040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b156200660557602081146200657a5783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f8401819004810282018101909252828152600091620065bd91858580838501838280828437600092019190915250929392505062008ebf9050565b9050620d2f00811080620065d35750603d548111155b15620065fc5784848484604051630a5a604160e01b81526004016200113194939291906200a453565b603e556200687c565b6200667f6040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b156200672b5760208114620066b15783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f8401819004810282018101909252828152600091620066f491858580838501838280828437600092019190915250929392505062008ebf9050565b905080600003620067225784848484604051630a5a604160e01b81526004016200113194939291906200a453565b604a556200687c565b620067996040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b15620068595760148114620067cb5783838383604051630a5a604160e01b81526004016200113194939291906200a453565b600062006813601484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ebf9050565b90506001600160a01b038116620068475784848484604051630a5a604160e01b81526004016200113194939291906200a453565b620068528162008ec4565b506200687c565b838383836040516325ee20d560e21b81526004016200113194939291906200a453565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051620068b394939291906200a453565b60405180910390a150505050565b60005462010000900460ff1615620068ec57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200691e5760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b038111156200693c576200693c6200953d565b60405190808252806020026020018201604052801562006966578160200160208202803683370190505b5090506000805b8381101562006a6457620069af8787838181106200698f576200698f62009e3f565b9050602002016020810190620069a69190620093cc565b603f9062007d2a565b620069cd5760405163056e881160e01b815260040160405180910390fd5b60416000888884818110620069e657620069e662009e3f565b9050602002016020810190620069fd9190620093cc565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006a395762006a3962009e3f565b6001600160a01b039092166020928302919091019091015262006a5c8162009ea4565b90506200696d565b50604051634484077560e01b815261200590634484077590620027ec908590889060040162009e55565b606080600062006a9f603f620088ba565b90508085101562006c6357831562006ab8578362006aba565b805b935060008462006acb878462009e0f565b1162006ae35762006add868362009e0f565b62006ae5565b845b9050806001600160401b0381111562006b025762006b026200953d565b60405190808252806020026020018201604052801562006b2c578160200160208202803683370190505b509350806001600160401b0381111562006b4a5762006b4a6200953d565b60405190808252806020026020018201604052801562006b74578160200160208202803683370190505b50925060005b8181101562006c605762006b936200395c828962009d53565b85828151811062006ba85762006ba862009e3f565b60200260200101906001600160a01b031690816001600160a01b0316815250506041600086838151811062006be15762006be162009e3f565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b031684828151811062006c355762006c3562009e3f565b6001600160a01b039092166020928302919091019091015262006c588162009ea4565b905062006b7a565b50505b9250925092565b336110011462006c9257604051630f22c43960e41b8152611001600482015260240162001131565b60005462010000900460ff161562006cbd57604051631785c68160e01b815260040160405180910390fd5b6001600160a01b038082166000908152604360205260409020541662006ce5603f8262007d2a565b62006d035760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062006d29603c4262009d30565b604a546000828152604b60205260409020549192501162006d5d5760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b6020526040812080546001929062006d7e90849062009d53565b90915550506001600160a01b0384166000908152604460205260409020541580159062006dd157506001600160a01b038416600090815260446020526040902054429062006dcf90603c9062009d53565b105b1562006df0576040516330abb81d60e21b815260040160405180910390fd5b60008062006e0085600062007d4d565b915091508162006e2357604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562006e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e9c919062009d69565b905062006eaa858362007dd7565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162006eea9392919062009d99565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b916200568b916001600160a01b0316908a9060040162009cf0565b6001600160a01b038082166000908152604160209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384938493849390929160808401919062006f999062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462006fc79062009cba565b8015620070185780601f1062006fec5761010080835404028352916020019162007018565b820191906000526020600020905b81548152906001019060200180831162006ffa57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620070439062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620070719062009cba565b8015620070c25780601f106200709657610100808354040283529160200191620070c2565b820191906000526020600020905b815481529060010190602001808311620070a457829003601f168201915b50505050508152602001600182018054620070dd9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200710b9062009cba565b80156200715c5780601f1062007130576101008083540402835291602001916200715c565b820191906000526020600020905b8154815290600101906020018083116200713e57829003601f168201915b50505050508152602001600282018054620071779062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620071a59062009cba565b8015620071f65780601f10620071ca57610100808354040283529160200191620071f6565b820191906000526020600020905b815481529060010190602001808311620071d857829003601f168201915b50505050508152602001600382018054620072119062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200723f9062009cba565b8015620072905780601f10620072645761010080835404028352916020019162007290565b820191906000526020600020905b8154815290600101906020018083116200727257829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200731c5750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200738357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620073b55760405163b1d02c3d60e01b815260040160405180910390fd5b33620073c3603f8262007d2a565b620073e15760405163056e881160e01b815260040160405180910390fd5b336000818152604160205260409020600c81015442906200740590603c9062009d53565b11156200742557604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620074369062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620074649062009cba565b8015620074b55780601f106200748957610100808354040283529160200191620074b5565b820191906000526020600020905b8154815290600101906020018083116200749757829003601f168201915b5050508287525085916005840191508190620074d290826200a47e565b5060208201516001820190620074e990826200a47e565b50604082015160028201906200750090826200a47e565b50606082015160038201906200751790826200a47e565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff16156200758557604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620075b75760405163b1d02c3d60e01b815260040160405180910390fd5b828114620075d8576040516341abc80160e01b815260040160405180910390fd5b60005b83811015620076495762007636858583818110620075fd57620075fd62009e3f565b9050602002016020810190620076149190620093cc565b84848481811062007629576200762962009e3f565b9050602002013562008d56565b620076418162009ea4565b9050620075db565b5050505050565b6001600160a01b0380821660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293849390916080840191620076bb9062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620076e99062009cba565b80156200773a5780601f106200770e576101008083540402835291602001916200773a565b820191906000526020600020905b8154815290600101906020018083116200771c57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620077659062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620077939062009cba565b8015620077e45780601f10620077b857610100808354040283529160200191620077e4565b820191906000526020600020905b815481529060010190602001808311620077c657829003601f168201915b50505050508152602001600182018054620077ff9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200782d9062009cba565b80156200787e5780601f1062007852576101008083540402835291602001916200787e565b820191906000526020600020905b8154815290600101906020018083116200786057829003601f168201915b50505050508152602001600282018054620078999062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620078c79062009cba565b8015620079185780601f10620078ec5761010080835404028352916020019162007918565b820191906000526020600020905b815481529060010190602001808311620078fa57829003601f168201915b50505050508152602001600382018054620079339062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620079619062009cba565b8015620079b25780601f106200798657610100808354040283529160200191620079b2565b820191906000526020600020905b8154815290600101906020018083116200799457829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162007a3e5750505091909252505050604001519392505050565b600062007a76603f8462007d2a565b62007a945760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd9060240162004ff1565b60005462010000900460ff161562007b0357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007b355760405163b1d02c3d60e01b815260040160405180910390fd5b3362007b43603f8262007d2a565b62007b615760405163056e881160e01b815260040160405180910390fd5b3362007b71818787878762008a75565b62007b8f57604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166045878760405162007bae92919062009d0a565b908152604051908190036020019020546001600160a01b031614158062007bf857506048868660405162007be492919062009d0a565b9081526040519081900360200190205460ff165b1562007c17576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c810154429062007c4490603c9062009d53565b111562007c6457604051631f92cdbd60e11b815260040160405180910390fd5b4260468260040160405162007c7a91906200a546565b908152604051908190036020019020556004810162007c9b87898362009f68565b5042600c820155604051829060459062007cb9908a908a9062009d0a565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062007d19908a908a906200a239565b60405180910390a250505050505050565b6001600160a01b0381166000908152600183016020526040812054151562005035565b6000806000848460405160200162007d679291906200a5c4565b60408051601f1981840301815291815281516020928301206000818152604c9093529120549091504281111562007da75760008093509350505062007dd0565b603e5462007db6904262009d53565b6000928352604c6020526040909220829055506001925090505b9250929050565b8154604051631507fdb760e11b81526001600160a01b03909116600482015261100090632a0ffb6e90602401600060405180830381600087803b15801562007e1e57600080fd5b505af115801562007e33573d6000803e3d6000fd5b505050506000600162007e47603f620088ba565b62007e53919062009e0f565b604954108015915062007f115760405163d31f968d60e01b81526110006004820152600860248201526120009063d31f968d90604401602060405180830381865afa15801562007ea7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007ecd919062009dc8565b62007f115760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b015482111562007f2657600b83018290555b600a83015460ff1662007f9957600a8301805460ff191660019081179091556049805460009062007f5990849062009d53565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b60408051608080820183526000808352602080840182905283850182905260608085018390528551938401865282845283820183905283860183905283018290528451808601865282815281018290528451808601909552855185528581019085015291928290620080109062008f30565b90506000805b620080218362008fa3565b15620080f457806000036200805657620080456200803f8462008fc9565b6200902d565b6001600160a01b03168452620080e1565b8060010362008082576200806e6200803f8462008fc9565b6001600160a01b03166020850152620080e1565b80600203620080ae576200809a6200803f8462008fc9565b6001600160a01b03166040850152620080e1565b80600303620080db57620080cc620080c68462008fc9565b62009045565b606085015260019150620080e1565b620080f4565b620080ec8162009ea4565b905062008016565b5091959194509092505050565b6000805462010000900460ff16156200812d57604051631785c68160e01b815260040160405180910390fd5b6020808301516001600160a01b031660009081526001909152604090205460ff168062008165575060208201516001600160a01b0316155b15620081845760405163b1d02c3d60e01b815260040160405180910390fd5b81516200819490603f9062007d2a565b620081a157506002919050565b81516001600160a01b039081166000908152604160209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929391926080840191906200820d9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200823b9062009cba565b80156200828c5780601f1062008260576101008083540402835291602001916200828c565b820191906000526020600020905b8154815290600101906020018083116200826e57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620082b79062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620082e59062009cba565b8015620083365780601f106200830a5761010080835404028352916020019162008336565b820191906000526020600020905b8154815290600101906020018083116200831857829003601f168201915b50505050508152602001600182018054620083519062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200837f9062009cba565b8015620083d05780601f10620083a457610100808354040283529160200191620083d0565b820191906000526020600020905b815481529060010190602001808311620083b257829003601f168201915b50505050508152602001600282018054620083eb9062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620084199062009cba565b80156200846a5780601f106200843e576101008083540402835291602001916200846a565b820191906000526020600020905b8154815290600101906020018083116200844c57829003601f168201915b50505050508152602001600382018054620084859062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620084b39062009cba565b8015620085045780601f10620084d85761010080835404028352916020019162008504565b820191906000526020600020905b815481529060010190602001808311620084e657829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620085905750505050508152505090508060e001518015620085db575082600001516001600160a01b031683602001516001600160a01b031614155b15620085ea5750600392915050565b6040808201516060850151602086015192516317066a5760e21b81526001600160a01b03938416600482015260009390921691635c19a95c919060240160206040518083038185885af115801562008646573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200866d919062009d69565b905083602001516001600160a01b031684600001516001600160a01b03166000805160206200b540833981519152838760600151604051620086b9929190918252602082015260400190565b60405180910390a383602001516001600160a01b031684600001516001600160a01b03167f607b17598da6bdca05650a2fc08bd2bc8e38c3236806a0fa8e0daabc1d6cb1d88387606001516040516200871c929190918252602082015260400190565b60405180910390a360408083015160208601519151633041949b60e01b815261200592633041949b92620087569290919060040162009cf0565b600060405180830381600087803b1580156200877157600080fd5b505af115801562008786573d6000803e3d6000fd5b506000979650505050505050565b6001600160a01b0381166000908152604160205260409020600a81015460ff1615620087be575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa1580156200880e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008834919062009d69565b101562005a1e576200885681603d544262008850919062009d53565b62007dd7565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b1580156200889d57600080fd5b505af1158015620088b2573d6000803e3d6000fd5b505050505050565b600062005038825490565b60006200503583836200911d565b600080829050600381511080620088eb575060098151115b15620088fa5750600092915050565b60418160008151811062008912576200891262009e3f565b016020015160f81c1080620089445750605a816000815181106200893a576200893a62009e3f565b016020015160f81c115b15620089535750600092915050565b60015b815181101562008a6b57603082828151811062008977576200897762009e3f565b016020015160f81c1080620089a8575060398282815181106200899e576200899e62009e3f565b016020015160f81c115b8015620089f857506041828281518110620089c757620089c762009e3f565b016020015160f81c1080620089f85750605a828281518110620089ee57620089ee62009e3f565b016020015160f81c115b801562008a485750606182828151811062008a175762008a1762009e3f565b016020015160f81c108062008a485750607a82828151811062008a3e5762008a3e62009e3f565b016020015160f81c115b1562008a58575060009392505050565b62008a638162009ea4565b905062008956565b5060019392505050565b600060308414158062008a89575060608214155b1562008a985750600062008b9c565b60008686864660405160200162008ab394939291906200a602565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a60405160200162008b0d9594939291906200a62f565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa62008b5757600080fd5b5060008160008151811062008b705762008b7062009e3f565b016020015160f81c90506001811462008b925760009550505050505062008b9c565b6001955050505050505b95945050505050565b60008061200361dead60405162008bbc90620093a8565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562008bff573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162008c339291906200a667565b6000604051808303818588803b15801562008c4d57600080fd5b505af115801562008c62573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b600062005035836001600160a01b0384166200914a565b600054610100900460ff1662008d2a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162001131565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b8162008d64603f8262007d2a565b62008d825760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562008de6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008e0c919062009d69565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838360405162008e5491815260200190565b60405180910390a350505050565b60008160405160200162008e7791906200a416565b604051602081830303815290604052805190602001208360405160200162008ea091906200a416565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b604080516080810182526000918101828152606082018390528152602081019190915262008f5e826200919c565b62008f6857600080fd5b600062008f798360200151620091cf565b836020015162008f8a919062009d53565b6040805180820190915293845260208401525090919050565b8051805160208201516000929162008fbb9162009d53565b836020015110915050919050565b604080518082019091526000808252602082015262008fe88262008fa3565b62008ff257600080fd5b6020820151600062009004826200925e565b905062009012818362009d53565b60209485015260408051808201909152908152928301525090565b80516000906015146200903f57600080fd5b62005038825b8051600090158015906200905b57508151602110155b6200906557600080fd5b6000620090768360200151620091cf565b90508083600001511015620090ce5760405162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015260640162001131565b8251600090620090e090839062009e0f565b9050600080838660200151620090f7919062009d53565b90508051915060208310156200911457826020036101000a820491505b50949350505050565b600082600001828154811062009137576200913762009e3f565b9060005260206000200154905092915050565b6000818152600183016020526040812054620091935750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562005038565b50600062005038565b80516000908103620091b057506000919050565b6020820151805160001a9060c082101562008a6b575060009392505050565b8051600090811a6080811015620091e95750600092915050565b60b881108062009206575060c0811080159062009206575060f881105b15620092155750600192915050565b60c081101562009250576200922d600160b86200a68d565b6200923c9060ff168262009e0f565b6200924990600162009d53565b9392505050565b6200922d600160f86200a68d565b80516000908190811a60808110156200927b5760019150620093a1565b60b8811015620092a7576200929260808262009e0f565b6200929f90600162009d53565b9150620093a1565b60c08110156200932057600060b78203600186019550806020036101000a865104915060018101820193505080831015620093195760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162001131565b50620093a1565b60f881101562009337576200929260c08262009e0f565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156200939f5760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162001131565b505b5092915050565b610e96806200a6aa83390190565b6001600160a01b03811681146200174957600080fd5b600060208284031215620093df57600080fd5b81356200924981620093b6565b60008083601f840112620093ff57600080fd5b5081356001600160401b038111156200941757600080fd5b60208301915083602082850101111562007dd057600080fd5b600080602083850312156200944457600080fd5b82356001600160401b038111156200945b57600080fd5b6200946985828601620093ec565b90969095509350505050565b6000806000604084860312156200948b57600080fd5b833560ff811681146200949d57600080fd5b925060208401356001600160401b03811115620094b957600080fd5b620094c786828701620093ec565b9497909650939450505050565b60005b83811015620094f1578181015183820152602001620094d7565b50506000910152565b6000815180845262009514816020860160208601620094d4565b601f01601f19169290920160200192915050565b602081526000620050356020830184620094fa565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156200957857620095786200953d565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620095a957620095a96200953d565b604052919050565b60006001600160401b03821115620095cd57620095cd6200953d565b50601f01601f191660200190565b6000620095f2620095ec84620095b1565b6200957e565b90508281528383830111156200960757600080fd5b828260208301376000602084830101529392505050565b6000602082840312156200963157600080fd5b81356001600160401b038111156200964857600080fd5b8201601f810184136200965a57600080fd5b6200966b84823560208401620095db565b949350505050565b600080604083850312156200968757600080fd5b82356200969481620093b6565b946020939093013593505050565b80151581146200174957600080fd5b60008060008060808587031215620096c857600080fd5b8435620096d581620093b6565b93506020850135620096e781620093b6565b92506040850135915060608501356200970081620096a2565b939692955090935050565b6001600160401b03811681146200174957600080fd5b6000602082840312156200973457600080fd5b813562009249816200970b565b600080604083850312156200975557600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b838110156200979f5781516001600160a01b03168752958201959082019060010162009778565b509495945050505050565b608081526000620097bf608083018762009764565b82810360208481019190915286518083528782019282019060005b81811015620097f857845183529383019391830191600101620097da565b5050848103604086015286518082528282019350600581901b8201830183890160005b838110156200984d57601f198584030187526200983a838351620094fa565b968601969250908501906001016200981b565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e08112156200988357600080fd5b88356200989081620093b6565b975060208901356001600160401b0380821115620098ad57600080fd5b620098bb8c838d01620093ec565b909950975060408b0135915080821115620098d557600080fd5b620098e38c838d01620093ec565b90975095508591506060605f1984011215620098fe57600080fd5b60608b01945060c08b01359250808311156200991957600080fd5b505088016080818b0312156200992e57600080fd5b8091505092959891949750929550565b600080604083850312156200995257600080fd5b82356200995f81620093b6565b915060208301356200997181620096a2565b809150509250929050565b6020815260008251608060208401526200999a60a0840182620094fa565b90506020840151601f1980858403016040860152620099ba8383620094fa565b92506040860151915080858403016060860152620099d98383620094fa565b925060608601519150808584030160808601525062008b9c8282620094fa565b6000806000806040858703121562009a1057600080fd5b84356001600160401b038082111562009a2857600080fd5b62009a3688838901620093ec565b9096509450602087013591508082111562009a5057600080fd5b5062009a5f87828801620093ec565b95989497509550505050565b60008083601f84011262009a7e57600080fd5b5081356001600160401b0381111562009a9657600080fd5b6020830191508360208260051b850101111562007dd057600080fd5b60008060006040848603121562009ac857600080fd5b83356001600160401b0381111562009adf57600080fd5b62009aed8682870162009a6b565b909450925050602084013562009b0381620093b6565b809150509250925092565b60608152600062009b23606083018662009764565b828103602084015262009b37818662009764565b915050826040830152949350505050565b600082601f83011262009b5a57600080fd5b6200503583833560208501620095db565b60006020828403121562009b7e57600080fd5b81356001600160401b038082111562009b9657600080fd5b908301906080828603121562009bab57600080fd5b62009bb562009553565b82358281111562009bc557600080fd5b62009bd38782860162009b48565b82525060208301358281111562009be957600080fd5b62009bf78782860162009b48565b60208301525060408301358281111562009c1057600080fd5b62009c1e8782860162009b48565b60408301525060608301358281111562009c3757600080fd5b62009c458782860162009b48565b60608301525095945050505050565b6000806000806040858703121562009c6b57600080fd5b84356001600160401b038082111562009c8357600080fd5b62009c918883890162009a6b565b9096509450602087013591508082111562009cab57600080fd5b5062009a5f8782880162009a6b565b600181811c9082168062009ccf57607f821691505b6020821081036200458057634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008262009d4e57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562005038576200503862009d1a565b60006020828403121562009d7c57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b83815260208101839052606081016003831062009dba5762009dba62009d83565b826040830152949350505050565b60006020828403121562009ddb57600080fd5b81516200924981620096a2565b828152604081016004831062009e025762009e0262009d83565b8260208301529392505050565b8181038181111562005038576200503862009d1a565b808202811582820484141762005038576200503862009d1a565b634e487b7160e01b600052603260045260246000fd5b60408152600062009e6a604083018562009764565b905060018060a01b03831660208301529392505050565b6001600160401b03828116828216039080821115620093a157620093a162009d1a565b60006001820162009eb95762009eb962009d1a565b5060010190565b6000808335601e1984360301811262009ed857600080fd5b8301803591506001600160401b0382111562009ef357600080fd5b60200191503681900382131562007dd057600080fd5b601f82111562007f9957600081815260208120601f850160051c8101602086101562009f325750805b601f850160051c820191505b81811015620088b25782815560010162009f3e565b600019600383901b1c191660019190911b1790565b6001600160401b0383111562009f825762009f826200953d565b62009f9a8362009f93835462009cba565b8362009f09565b6000601f84116001811462009fcd576000851562009fb85750838201355b62009fc4868262009f53565b84555062007649565b600083815260209020601f19861690835b828110156200a000578685013582556020948501946001909201910162009fde565b50868210156200a01e5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6200a03c828362009ec0565b6001600160401b038111156200a056576200a0566200953d565b6200a06e816200a067855462009cba565b8562009f09565b6000601f8211600181146200a0a157600083156200a08c5750838201355b6200a098848262009f53565b8655506200a0fe565b600085815260209020601f19841690835b828110156200a0d457868501358255602094850194600190920191016200a0b2565b50848210156200a0f25760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506200a111602083018362009ec0565b6200a12181836001860162009f68565b50506200a132604083018362009ec0565b6200a14281836002860162009f68565b50506200a153606083018362009ec0565b6200a16381836003860162009f68565b50505050565b81356200a176816200970b565b6001600160401b03811690508154816001600160401b0319821617835560208401356200a1a3816200970b565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff198316841781178555908501356200a1e3816200970b565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006200966b6020830184866200a210565b60006001600160401b038211156200a26b576200a26b6200953d565b5060051b60200190565b600060208083850312156200a28957600080fd5b82516001600160401b038111156200a2a057600080fd5b8301601f810185136200a2b257600080fd5b80516200a2c3620095ec826200a24f565b81815260059190911b820183019083810190878311156200a2e357600080fd5b928401925b828410156200a30e5783516200a2fe81620093b6565b825292840192908401906200a2e8565b979650505050505050565b600060208083850312156200a32d57600080fd5b82516001600160401b03808211156200a34557600080fd5b818501915085601f8301126200a35a57600080fd5b81516200a36b620095ec826200a24f565b81815260059190911b830184019084810190888311156200a38b57600080fd5b8585015b838110156200a409578051858111156200a3a95760008081fd5b8601603f81018b136200a3bc5760008081fd5b8781015160406200a3d1620095ec83620095b1565b8281528d828486010111156200a3e75760008081fd5b6200a3f8838c8301848701620094d4565b86525050509186019186016200a38f565b5098975050505050505050565b600082516200a42a818460208701620094d4565b9190910192915050565b60ff8416815260406020820152600062008b9c6040830184866200a210565b6040815260006200a4696040830186886200a210565b82810360208401526200a30e8185876200a210565b81516001600160401b038111156200a49a576200a49a6200953d565b6200a4b2816200a4ab845462009cba565b8462009f09565b602080601f8311600181146200a4e657600084156200a4d15750858301515b6200a4dd858262009f53565b865550620088b2565b600085815260208120601f198616915b828110156200a517578886015182559484019460019091019084016200a4f6565b50858210156200a5365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200a5568162009cba565b600182811680156200a57157600181146200a587576200a5b8565b60ff19841687528215158302870194506200a5b8565b8760005260208060002060005b858110156200a5af5781548a8201529084019082016200a594565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b1681526000600383106200a5ee576200a5ee62009d83565b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b600086516200a643818460208b01620094d4565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b03831681526040602082018190526000906200966b90830184620094fa565b60ff828116828216039081111562005038576200503862009d1a56fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656424d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000030b86b3146bdd2200b1dbdb1cea5e40d3451c028cbb4fb03b1826f7f2d82bee76bbd5cd68a74a16a7eceea093fd5826b9200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003087ce273bb9b51fd69e50de7a8d9a99cfb3b1a5c6a7b85f6673d137a5a2ce7df3d6ee4e6d579a142d58b0606c4a7a1c27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a33ac14980d85c0d154c5909ebf7a11d455f54beb4d5d0dc1d8b3670b9c4a6b6c450ee3d623ecc48026f09ed1f0b5c1200000000000000000000000000000000a164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/a803125f635f315e332fd5164e91a3df1d48559c", + Code: "608060405260043610620003db5760003560e01c806386d545061162000203578063d115a2061162000117578063e992aaf511620000ad578063f80a34021162000078578063f80a34021462000bed578063fb50b31f1462000c12578063fc0c5ff11462000c37578063ff69ab611462000c4f57600080fd5b8063e992aaf51462000b6a578063efdbf0e11462000b82578063f1f74d841462000bbe578063f1fad1041462000bd657600080fd5b8063d8ca511f11620000ee578063d8ca511f1462000afd578063daacdb661462000b15578063dbda7fb31462000b2d578063e8f67c3b1462000b5257600080fd5b8063d115a2061462000a9b578063d6ca429d1462000ab3578063d7c2dfc81462000ad857600080fd5b8063b187bd261162000199578063c38fbec81162000164578063c38fbec81462000a1d578063c473318f1462000a42578063c8509d81146200083b578063cbb04d9d1462000a5a57600080fd5b8063b187bd26146200098a578063baa7199e14620009aa578063bdceadf314620009cf578063bff02e2014620009e757600080fd5b8063982ef0a711620001da578063982ef0a714620008f5578063a43569b3146200090c578063aad3ec961462000940578063ac431751146200096557600080fd5b806386d5450614620008785780638a4d3fa814620008b25780638cd22b2214620008d057600080fd5b80634bf6c88211620002fb578063663706d3116200029157806376e7d6d6116200025c57806376e7d6d6146200080b5780638129fc1c1462000823578063831d65d1146200083b5780638456cb59146200086057600080fd5b8063663706d314620007385780636ec01b2714620007695780636f8e2fa414620007c157806375cc7d8914620007e657600080fd5b80635949187111620002d25780635949187114620006a05780635e7cc1c914620006c557806363a036b514620006ea57806364028fbd146200072157600080fd5b80634bf6c88214620006395780634d99dd1614620006635780634e6fd6c4146200068857600080fd5b80631fa8882b1162000371578063449ecfe61162000348578063449ecfe6146200058557806345211bfd14620005aa5780634838d16514620005cf5780634a49ac4c146200061457600080fd5b80631fa8882b1462000531578063384099881462000548578063417c73a7146200056057600080fd5b8063092193ab11620003b2578063092193ab146200047c5780630e9fbf5114620004935780631182b87514620004b857806317b4f35314620004ec57600080fd5b8063046f7da214620003fb578063059ddd2214620004135780630661806e146200045557600080fd5b36620003f65760345460ff16600114620003f457600080fd5b005b600080fd5b3480156200040857600080fd5b50620003f462000c67565b3480156200042057600080fd5b50620004386200043236600462009429565b62000cf9565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200046257600080fd5b506200046d60365481565b6040519081526020016200044c565b620003f46200048d36600462009429565b6200110e565b348015620004a057600080fd5b50620003f4620004b23660046200948d565b6200174c565b348015620004c557600080fd5b50620004dd620004d7366004620094d2565b62001a74565b6040516200044c919062009585565b348015620004f957600080fd5b50620004386200050b3660046200967b565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200053e57600080fd5b506200046d603c81565b3480156200055557600080fd5b506200046d60375481565b3480156200056d57600080fd5b50620003f46200057f36600462009429565b62001de7565b3480156200059257600080fd5b50620003f4620005a436600462009429565b62001e69565b348015620005b757600080fd5b50620003f4620005c936600462009429565b6200204e565b348015620005dc57600080fd5b5062000603620005ee36600462009429565b60016020526000908152604090205460ff1681565b60405190151581526020016200044c565b3480156200062157600080fd5b50620003f46200063336600462009429565b62002229565b3480156200064657600080fd5b5062000650600881565b60405160ff90911681526020016200044c565b3480156200067057600080fd5b50620003f462000682366004620096d0565b620022a5565b3480156200069557600080fd5b506200043861dead81565b348015620006ad57600080fd5b50620003f4620006bf3660046200970e565b620028c2565b348015620006d257600080fd5b50620003f4620006e43660046200977e565b62003694565b348015620006f757600080fd5b506200070f620007093660046200979e565b6200389a565b6040516200044c949392919062009807565b620003f462000732366004620098c3565b62003f2c565b3480156200074557600080fd5b506200046d6200075736600462009429565b60446020526000908152604090205481565b3480156200077657600080fd5b506200078e6200078836600462009429565b62004576565b6040805182516001600160401b03908116825260208085015182169083015292820151909216908201526060016200044c565b348015620007ce57600080fd5b50620004dd620007e036600462009429565b62004620565b348015620007f357600080fd5b50620003f46200080536600462009429565b62004a39565b3480156200081857600080fd5b506200046d603d5481565b3480156200083057600080fd5b50620003f462004c0b565b3480156200084857600080fd5b50620003f46200085a366004620094d2565b62004f1d565b3480156200086d57600080fd5b50620003f462004f87565b3480156200088557600080fd5b50620004386200089736600462009429565b6043602052600090815260409020546001600160a01b031681565b348015620008bf57600080fd5b506200046d670de0b6b3a764000081565b348015620008dd57600080fd5b506200046d620008ef366004620096d0565b6200501f565b620003f4620009063660046200999b565b620050d8565b3480156200091957600080fd5b50620009316200092b36600462009429565b62005762565b6040516200044c9190620099d9565b3480156200094d57600080fd5b50620003f46200095f366004620096d0565b62005a4f565b3480156200097257600080fd5b50620003f46200098436600462009a56565b62005abc565b3480156200099757600080fd5b5060005462010000900460ff1662000603565b348015620009b757600080fd5b50620003f4620009c936600462009b0f565b6200695b565b348015620009dc57600080fd5b506200046d603c5481565b348015620009f457600080fd5b5062000a0c62000a063660046200979e565b62006b28565b6040516200044c9392919062009b6b565b34801562000a2a57600080fd5b50620003f462000a3c36600462009429565b62006d04565b34801562000a4f57600080fd5b506200046d60385481565b34801562000a6757600080fd5b5062000a7f62000a7936600462009429565b62006fc2565b604080519384529115156020840152908201526060016200044c565b34801562000aa857600080fd5b506200046d61271081565b34801562000ac057600080fd5b50620003f462000ad236600462009bc8565b620073f2565b34801562000ae557600080fd5b50620003f462000af736600462009cb1565b620075f4565b34801562000b0a57600080fd5b506200046d603b5481565b34801562000b2257600080fd5b506200046d60495481565b34801562000b3a57600080fd5b506200043862000b4c36600462009429565b620076ea565b34801562000b5f57600080fd5b506200046d60355481565b34801562000b7757600080fd5b506200046d603a5481565b34801562000b8f57600080fd5b506200046d62000ba13660046200967b565b805160208183018101805160468252928201919093012091525481565b34801562000bcb57600080fd5b506200046d603e5481565b34801562000be357600080fd5b5062000650601181565b34801562000bfa57600080fd5b506200046d62000c0c366004620096d0565b62007b01565b34801562000c1f57600080fd5b50620003f462000c3136600462009a56565b62007b72565b34801562000c4457600080fd5b506200046d60395481565b34801562000c5c57600080fd5b506200046d604a5481565b600054630100000090046001600160a01b0316331462000c9a576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000cc457604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000d649062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462000d929062009d17565b801562000de35780601f1062000db75761010080835404028352916020019162000de3565b820191906000526020600020905b81548152906001019060200180831162000dc557829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000e0e9062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462000e3c9062009d17565b801562000e8d5780601f1062000e615761010080835404028352916020019162000e8d565b820191906000526020600020905b81548152906001019060200180831162000e6f57829003601f168201915b5050505050815260200160018201805462000ea89062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462000ed69062009d17565b801562000f275780601f1062000efb5761010080835404028352916020019162000f27565b820191906000526020600020905b81548152906001019060200180831162000f0957829003601f168201915b5050505050815260200160028201805462000f429062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462000f709062009d17565b801562000fc15780601f1062000f955761010080835404028352916020019162000fc1565b820191906000526020600020905b81548152906001019060200180831162000fa357829003601f168201915b5050505050815260200160038201805462000fdc9062009d17565b80601f01602080910402602001604051908101604052809291908181526020018280546200100a9062009d17565b80156200105b5780601f106200102f576101008083540402835291602001916200105b565b820191906000526020600020905b8154815290600101906020018083116200103d57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620010e7575050509190925250509051949350505050565b33611000146200113a57604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b03808216600090815260436020908152604080832054841680845260418352818420825161016081018452815487168152600182015487169481019490945260028101549095169183019190915260038401546060830152600484018054919491608084019190620011b39062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620011e19062009d17565b8015620012325780601f10620012065761010080835404028352916020019162001232565b820191906000526020600020905b8154815290600101906020018083116200121457829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200125d9062009d17565b80601f01602080910402602001604051908101604052809291908181526020018280546200128b9062009d17565b8015620012dc5780601f10620012b057610100808354040283529160200191620012dc565b820191906000526020600020905b815481529060010190602001808311620012be57829003601f168201915b50505050508152602001600182018054620012f79062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620013259062009d17565b8015620013765780601f106200134a5761010080835404028352916020019162001376565b820191906000526020600020905b8154815290600101906020018083116200135857829003601f168201915b50505050508152602001600282018054620013919062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620013bf9062009d17565b8015620014105780601f10620013e45761010080835404028352916020019162001410565b820191906000526020600020905b815481529060010190602001808311620013f257829003601f168201915b505050505081526020016003820180546200142b9062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620014599062009d17565b8015620014aa5780601f106200147e57610100808354040283529160200191620014aa565b820191906000526020600020905b8154815290600101906020018083116200148c57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162001536575050509190925250505060408101519091506001600160a01b031615806200157357508060e001515b156200163057604051611002903490600081818185875af1925050503d8060008114620015bd576040519150601f19603f3d011682016040523d82523d6000602084013e620015c2565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d604051620016239060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200168757600080fd5b505af11580156200169c573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea634604051620016dd91815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b91620017129190869060040162009d4d565b600060405180830381600087803b1580156200172d57600080fd5b505af115801562001742573d6000803e3d6000fd5b5050505050505b50565b33611001146200177457604051630f22c43960e41b8152611001600482015260240162001131565b60005462010000900460ff16156200179f57604051631785c68160e01b815260040160405180910390fd5b600060458383604051620017b592919062009d67565b908152604051908190036020019020546001600160a01b03169050620017dd603f8262007dc4565b620017fb5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062001821603c4262009d8d565b604a546000828152604b602052604090205491925011620018555760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b602052604081208054600192906200187690849062009db0565b909155505060405160469062001890908790879062009d67565b908152602001604051809103902054600014158015620018df575042603c60468787604051620018c292919062009d67565b908152602001604051809103902054620018dd919062009db0565b105b15620018fe57604051631898eb6b60e01b815260040160405180910390fd5b6000806200190e85600262007de7565b91509150816200193157604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562001984573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019aa919062009dc6565b9050620019b8858362007e71565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620019f89392919062009df6565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001a36916001600160a01b0316908a9060040162009d4d565b600060405180830381600087803b15801562001a5157600080fd5b505af115801562001a66573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001a9e57604051630f22c43960e41b8152612000600482015260240162001131565b60005462010000900460ff161562001ac957604051631785c68160e01b815260040160405180910390fd5b6034805460ff19166001179055604080516020601f8501819004810282018101909252838152600091829162001b1a9187908790819084018382808284376000920191909152506200803892505050565b915091508062001b3d5760405163035ede3560e21b815260040160405180910390fd5b816060015160000362001b63575050604080516000815260208101909152905062001dd6565b606082015160405163e04c83a760e01b81526000916110049163e04c83a79162001b939160040190815260200190565b6020604051808303816000875af115801562001bb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bd9919062009e25565b90508062001c805782602001516001600160a01b031683600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a8560600151600160405162001c3592919062009e45565b60405180910390a385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092965062001dd695505050505050565b600062001c8d846200819b565b9050600081600481111562001ca65762001ca662009de0565b0362001cc8575050604080516000815260208101909152925062001dd6915050565b6040516000906110049047908381818185875af1925050503d806000811462001d0e576040519150601f19603f3d011682016040523d82523d6000602084013e62001d13565b606091505b505090508062001d36576040516312171d8360e31b815260040160405180910390fd5b84602001516001600160a01b031685600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a87606001518560405162001d8992919062009e45565b60405180910390a387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092985062001dd6975050505050505050565b6034805460ff191690559392505050565b600054630100000090046001600160a01b0316331462001e1a576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001e9457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001ec65760405163b1d02c3d60e01b815260040160405180910390fd5b8062001ed4603f8262007dc4565b62001ef25760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff1662001f3057604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001f80573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fa6919062009dc6565b101562001fc6576040516317b204bf60e11b815260040160405180910390fd5b4281600b0154111562001fec5760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff1916905560498054600191906000906200201090849062009e6c565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff16156200207957604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620020ab5760405163b1d02c3d60e01b815260040160405180910390fd5b33620020b9603f8262007dc4565b620020d75760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038216620020ff57604051636520611b60e11b815260040160405180910390fd5b6001600160a01b03828116600090815260436020526040902054161515806200214057506001600160a01b03821660009081526047602052604090205460ff165b156200215f57604051631e6f587560e11b815260040160405180910390fd5b336000818152604160205260409020600c81015442906200218390603c9062009db0565b1115620021a357604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b600054630100000090046001600160a01b031633146200225c576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff1615620022d057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620023025760405163b1d02c3d60e01b815260040160405180910390fd5b8162002310603f8262007dc4565b6200232e5760405163056e881160e01b815260040160405180910390fd5b816000036200235057604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b0380841660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620023b89062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620023e69062009d17565b8015620024375780601f106200240b5761010080835404028352916020019162002437565b820191906000526020600020905b8154815290600101906020018083116200241957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620024629062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620024909062009d17565b8015620024e15780601f10620024b557610100808354040283529160200191620024e1565b820191906000526020600020905b815481529060010190602001808311620024c357829003601f168201915b50505050508152602001600182018054620024fc9062009d17565b80601f01602080910402602001604051908101604052809291908181526020018280546200252a9062009d17565b80156200257b5780601f106200254f576101008083540402835291602001916200257b565b820191906000526020600020905b8154815290600101906020018083116200255d57829003601f168201915b50505050508152602001600282018054620025969062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620025c49062009d17565b8015620026155780601f10620025e95761010080835404028352916020019162002615565b820191906000526020600020905b815481529060010190602001808311620025f757829003601f168201915b50505050508152602001600382018054620026309062009d17565b80601f01602080910402602001604051908101604052809291908181526020018280546200265e9062009d17565b8015620026af5780601f106200268357610100808354040283529160200191620026af565b820191906000526020600020905b8154815290600101906020018083116200269157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200273b575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af1158015620027b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027db919062009dc6565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b4082980287846040516200282c929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b03160362002859576200285986620087f1565b6040808301519051633041949b60e01b815261200591633041949b91620028869190879060040162009d4d565b600060405180830381600087803b158015620028a157600080fd5b505af1158015620028b6573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff1615620028ed57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200291f5760405163b1d02c3d60e01b815260040160405180910390fd5b836200292d603f8262007dc4565b6200294b5760405163056e881160e01b815260040160405180910390fd5b8362002959603f8262007dc4565b620029775760405163056e881160e01b815260040160405180910390fd5b6034805460ff191660011790556000849003620029a757604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b031603620029da5760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152604160209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162002a429062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462002a709062009d17565b801562002ac15780601f1062002a955761010080835404028352916020019162002ac1565b820191906000526020600020905b81548152906001019060200180831162002aa357829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002aec9062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462002b1a9062009d17565b801562002b6b5780601f1062002b3f5761010080835404028352916020019162002b6b565b820191906000526020600020905b81548152906001019060200180831162002b4d57829003601f168201915b5050505050815260200160018201805462002b869062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462002bb49062009d17565b801562002c055780601f1062002bd95761010080835404028352916020019162002c05565b820191906000526020600020905b81548152906001019060200180831162002be757829003601f168201915b5050505050815260200160028201805462002c209062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462002c4e9062009d17565b801562002c9f5780601f1062002c735761010080835404028352916020019162002c9f565b820191906000526020600020905b81548152906001019060200180831162002c8157829003601f168201915b5050505050815260200160038201805462002cba9062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462002ce89062009d17565b801562002d395780601f1062002d0d5761010080835404028352916020019162002d39565b820191906000526020600020905b81548152906001019060200180831162002d1b57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162002dc557505050919092525050506001600160a01b0380891660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002e509062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462002e7e9062009d17565b801562002ecf5780601f1062002ea35761010080835404028352916020019162002ecf565b820191906000526020600020905b81548152906001019060200180831162002eb157829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002efa9062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462002f289062009d17565b801562002f795780601f1062002f4d5761010080835404028352916020019162002f79565b820191906000526020600020905b81548152906001019060200180831162002f5b57829003601f168201915b5050505050815260200160018201805462002f949062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462002fc29062009d17565b8015620030135780601f1062002fe75761010080835404028352916020019162003013565b820191906000526020600020905b81548152906001019060200180831162002ff557829003601f168201915b505050505081526020016002820180546200302e9062009d17565b80601f01602080910402602001604051908101604052809291908181526020018280546200305c9062009d17565b8015620030ad5780601f106200308157610100808354040283529160200191620030ad565b820191906000526020600020905b8154815290600101906020018083116200308f57829003601f168201915b50505050508152602001600382018054620030c89062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620030f69062009d17565b8015620031475780601f106200311b5761010080835404028352916020019162003147565b820191906000526020600020905b8154815290600101906020018083116200312957829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620031d35750505050508152505090508060e001518015620032165750876001600160a01b0316836001600160a01b031614155b156200323557604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af11580156200328c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032b2919062009dc6565b9050603754811015620032d85760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b03161480156200336d57506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa15801562003345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200336b919062009dc6565b105b156200338c576040516317b204bf60e11b815260040160405180910390fd5b6000612710603a5483620033a1919062009e82565b620033ad919062009d8d565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d806000811462003402576040519150601f19603f3d011682016040523d82523d6000602084013e62003407565b606091505b50509050806200342a576040516312171d8360e31b815260040160405180910390fd5b62003436828462009e6c565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af11580156200348c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620034b3919062009dc6565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e858960405162003518939291909283526020830191909152604082015260600190565b60405180910390a46040805160028082526060820183526000926020830190803683370190505090508660400151816000815181106200355c576200355c62009e9c565b60200260200101906001600160a01b031690816001600160a01b03168152505085604001518160018151811062003597576200359762009e9c565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620035d89084908c9060040162009eb2565b600060405180830381600087803b158015620035f357600080fd5b505af115801562003608573d6000803e3d6000fd5b505050508a156200367a576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b81526004016200364592919062009d4d565b600060405180830381600087803b1580156200366057600080fd5b505af115801562003675573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff1615620036bf57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620036f15760405163b1d02c3d60e01b815260040160405180910390fd5b33620036ff603f8262007dc4565b6200371d5760405163056e881160e01b815260040160405180910390fd5b336000818152604160205260409020600c81015442906200374190603c9062009db0565b11156200376157604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b909104811690851611156200379b5760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b039081169086161015620037d9576009820154620037d39086906001600160401b031662009ede565b620037f3565b6009820154620037f3906001600160401b03168662009ede565b60098301546001600160401b039182169250600160801b9004168111156200382e5760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b60608060606000620038ad603f62008917565b90508086101562003f23578415620038c65784620038c8565b805b9450600085620038d9888462009e6c565b11620038f157620038eb878362009e6c565b620038f3565b855b9050806001600160401b038111156200391057620039106200959a565b6040519080825280602002602001820160405280156200393a578160200160208202803683370190505b509450806001600160401b038111156200395857620039586200959a565b60405190808252806020026020018201604052801562003982578160200160208202803683370190505b509350806001600160401b03811115620039a057620039a06200959a565b604051908082528060200260200182016040528015620039d557816020015b6060815260200190600190039081620039bf5790505b50925060005b8181101562003f20576000620039ff620039f6838b62009db0565b603f9062008922565b6001600160a01b0380821660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162003a6c9062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462003a9a9062009d17565b801562003aeb5780601f1062003abf5761010080835404028352916020019162003aeb565b820191906000526020600020905b81548152906001019060200180831162003acd57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003b169062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462003b449062009d17565b801562003b955780601f1062003b695761010080835404028352916020019162003b95565b820191906000526020600020905b81548152906001019060200180831162003b7757829003601f168201915b5050505050815260200160018201805462003bb09062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462003bde9062009d17565b801562003c2f5780601f1062003c035761010080835404028352916020019162003c2f565b820191906000526020600020905b81548152906001019060200180831162003c1157829003601f168201915b5050505050815260200160028201805462003c4a9062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462003c789062009d17565b801562003cc95780601f1062003c9d5761010080835404028352916020019162003cc9565b820191906000526020600020905b81548152906001019060200180831162003cab57829003601f168201915b5050505050815260200160038201805462003ce49062009d17565b80601f016020809104026020016040519081016040528092919081815260200182805462003d129062009d17565b801562003d635780601f1062003d375761010080835404028352916020019162003d63565b820191906000526020600020905b81548152906001019060200180831162003d4557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162003def575050505050815250509050806000015188848151811062003e285762003e2862009e9c565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e0015162003ec15780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003e95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ebb919062009dc6565b62003ec4565b60005b87848151811062003ed95762003ed962009e9c565b602002602001018181525050806080015186848151811062003eff5762003eff62009e9c565b602002602001018190525050508062003f189062009f01565b9050620039db565b50505b92959194509250565b60005462010000900460ff161562003f5757604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562003f895760405163b1d02c3d60e01b815260040160405180910390fd5b3362003f97603f8262007dc4565b1562003fb657604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152604360205260409020541615158062003ff757506001600160a01b03881660009081526047602052604090205460ff165b156200401657604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b0316604588886040516200403592919062009d67565b908152604051908190036020019020546001600160a01b03161415806200407f5750604887876040516200406b92919062009d67565b9081526040519081900360200190205460ff165b156200409e576040516311fdb94760e01b815260040160405180910390fd5b6000620040ac838062009f1d565b604051602001620040bf92919062009d67565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff1615620041095760405163c0bf414360e01b815260040160405180910390fd5b60006200411f670de0b6b3a76400003462009e6c565b905060365481101562004145576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a166200416d57604051636520611b60e11b815260040160405180910390fd5b6113886200418260408701602088016200977e565b6001600160401b03161180620041c85750620041a560408601602087016200977e565b6001600160401b0316620041bd60208701876200977e565b6001600160401b0316115b80620042075750620041e160408601602087016200977e565b6001600160401b0316620041fc60608701604088016200977e565b6001600160401b0316115b15620042265760405163dc81db8560e01b815260040160405180910390fd5b6200427162004236858062009f1d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200893092505050565b6200428f57604051635dba5ad760e01b815260040160405180910390fd5b6200429e838a8a8a8a62008ad2565b620042bc57604051631647e3cb60e11b815260040160405180910390fd5b60006200430a84620042cf878062009f1d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062008c0292505050565b905062004319603f8562008d03565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620043998b8d8362009fc5565b508560058201620043ab82826200a08d565b5087905060098201620043bf82826200a1c6565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b031916928816929092179091555185906045906200440d908e908e9062009d67565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620044909291906200a296565b60405180910390a460408051848152602081018590526001600160a01b0387169182916000805160206200b59d833981519152910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816916000805160206200b59d833981519152910160405180910390a3604051633041949b60e01b815261200590633041949b9062004534908590899060040162009d4d565b600060405180830381600087803b1580156200454f57600080fd5b505af115801562004564573d6000803e3d6000fd5b50505050505050505050505050505050565b604080516060810182526000808252602082018190529181019190915281620045a1603f8262007dc4565b620045bf5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b6001600160a01b038082166000908152604160209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060828101919091526004840180549194916080840191906200468d9062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620046bb9062009d17565b80156200470c5780601f10620046e0576101008083540402835291602001916200470c565b820191906000526020600020905b815481529060010190602001808311620046ee57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620047379062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620047659062009d17565b8015620047b65780601f106200478a57610100808354040283529160200191620047b6565b820191906000526020600020905b8154815290600101906020018083116200479857829003601f168201915b50505050508152602001600182018054620047d19062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620047ff9062009d17565b8015620048505780601f10620048245761010080835404028352916020019162004850565b820191906000526020600020905b8154815290600101906020018083116200483257829003601f168201915b505050505081526020016002820180546200486b9062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620048999062009d17565b8015620048ea5780601f10620048be57610100808354040283529160200191620048ea565b820191906000526020600020905b815481529060010190602001808311620048cc57829003601f168201915b50505050508152602001600382018054620049059062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620049339062009d17565b8015620049845780601f10620049585761010080835404028352916020019162004984565b820191906000526020600020905b8154815290600101906020018083116200496657829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162004a105750505091909252505050608001519392505050565b336110011462004a6157604051630f22c43960e41b8152611001600482015260240162001131565b6001600160a01b038082166000908152604360205260409020541662004a89603f8262007dc4565b62004aa75760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004b0a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b30919062009dc6565b90506000603d544262004b44919062009db0565b905062004b52838262007e71565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004b929392919062009df6565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004bd0916001600160a01b031690889060040162009d4d565b600060405180830381600087803b15801562004beb57600080fd5b505af115801562004c00573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562004c2c5750600054600160ff909116105b8062004c485750303b15801562004c48575060005460ff166001145b62004cad5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162001131565b6000805460ff19166001179055801562004cd1576000805461ff0019166101001790555b33411462004cf25760405163022d8c9560e31b815260040160405180910390fd5b3a1562004d12576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755602d603855607860398190556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c55603d9190915560b4603e55604a556040805160c0810190915260a080825260609182916200b5bd602083013980602001905181019062004d9e91906200a2d2565b9150604051806101e001604052806101c081526020016200b65d6101c0913980602001905181019062004dd291906200a376565b905060005b825181101562004e415760016047600085848151811062004dfc5762004dfc62009e9c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562004e398162009f01565b905062004dd7565b5060005b815181101562004eb2576001604883838151811062004e685762004e6862009e9c565b602002602001015160405162004e7f91906200a473565b908152604051908190036020019020805491151560ff1990921691909117905562004eaa8162009f01565b905062004e45565b5062004ed273df87f0e2b8519ea2dd4abd8b639cdd628497ed2562008d1a565b5050801562001749576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b336120001462004f4557604051630f22c43960e41b8152612000600482015260240162001131565b7faa5ba621c8b3d7d05bb9e51a7506108251d4d5dbe542ca66fc7bb52aacb02b6583838360405162004f7a939291906200a491565b60405180910390a1505050565b600054630100000090046001600160a01b0316331462004fba576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff161562004fe557604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60006200502e603f8462007dc4565b6200504c5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa158015620050a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050cf919062009dc6565b90505b92915050565b60005462010000900460ff16156200510357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620051355760405163b1d02c3d60e01b815260040160405180910390fd5b8162005143603f8262007dc4565b620051615760405163056e881160e01b815260040160405180910390fd5b6037543490811015620051875760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b0380851660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620051ef9062009d17565b80601f01602080910402602001604051908101604052809291908181526020018280546200521d9062009d17565b80156200526e5780601f1062005242576101008083540402835291602001916200526e565b820191906000526020600020905b8154815290600101906020018083116200525057829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620052999062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620052c79062009d17565b8015620053185780601f10620052ec5761010080835404028352916020019162005318565b820191906000526020600020905b815481529060010190602001808311620052fa57829003601f168201915b50505050508152602001600182018054620053339062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620053619062009d17565b8015620053b25780601f106200538657610100808354040283529160200191620053b2565b820191906000526020600020905b8154815290600101906020018083116200539457829003601f168201915b50505050508152602001600282018054620053cd9062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620053fb9062009d17565b80156200544c5780601f1062005420576101008083540402835291602001916200544c565b820191906000526020600020905b8154815290600101906020018083116200542e57829003601f168201915b50505050508152602001600382018054620054679062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620054959062009d17565b8015620054e65780601f10620054ba57610100808354040283529160200191620054e6565b820191906000526020600020905b815481529060010190602001808311620054c857829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620055725750505050508152505090508060e001518015620055b55750856001600160a01b0316826001600160a01b031614155b15620055d457604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562005625573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200564c919062009dc6565b9050826001600160a01b0316876001600160a01b03166000805160206200b59d83398151915283876040516200568c929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b91620056c19190879060040162009d4d565b600060405180830381600087803b158015620056dc57600080fd5b505af1158015620056f1573d6000803e3d6000fd5b50505050851562001742576040516372f6ad8f60e11b81526120059063e5ed5b1e90620057259086908b9060040162009d4d565b600060405180830381600087803b1580156200574057600080fd5b505af115801562005755573d6000803e3d6000fd5b5050505050505050505050565b6200578e6040518060800160405280606081526020016060815260200160608152602001606081525090565b816200579c603f8262007dc4565b620057ba5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602052604090819020815160808101909252600501805482908290620057f19062009d17565b80601f01602080910402602001604051908101604052809291908181526020018280546200581f9062009d17565b8015620058705780601f10620058445761010080835404028352916020019162005870565b820191906000526020600020905b8154815290600101906020018083116200585257829003601f168201915b505050505081526020016001820180546200588b9062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620058b99062009d17565b80156200590a5780601f10620058de576101008083540402835291602001916200590a565b820191906000526020600020905b815481529060010190602001808311620058ec57829003601f168201915b50505050508152602001600282018054620059259062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620059539062009d17565b8015620059a45780601f106200597857610100808354040283529160200191620059a4565b820191906000526020600020905b8154815290600101906020018083116200598657829003601f168201915b50505050508152602001600382018054620059bf9062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620059ed9062009d17565b801562005a3e5780601f1062005a125761010080835404028352916020019162005a3e565b820191906000526020600020905b81548152906001019060200180831162005a2057829003601f168201915b505050505081525050915050919050565b60005462010000900460ff161562005a7a57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005aac5760405163b1d02c3d60e01b815260040160405180910390fd5b62005ab8828262008db3565b5050565b336110071462005ae457604051630f22c43960e41b8152611007600482015260240162001131565b62005b516040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ebf9050565b1562005c0c576020811462005b835783838383604051630a5a604160e01b81526004016200113194939291906200a4b0565b604080516020601f840181900481028201810190925282815260009162005bc691858580838501838280828437600092019190915250929392505062008f1c9050565b90506108fc81108062005bda575061271081115b1562005c035784848484604051630a5a604160e01b81526004016200113194939291906200a4b0565b60355562006916565b62005c7d6040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ebf9050565b1562005d47576020811462005caf5783838383604051630a5a604160e01b81526004016200113194939291906200a4b0565b604080516020601f840181900481028201810190925282815260009162005cf291858580838501838280828437600092019190915250929392505062008f1c9050565b9050683635c9adc5dea0000081108062005d15575069152d02c7e14af680000081115b1562005d3e5784848484604051630a5a604160e01b81526004016200113194939291906200a4b0565b60365562006916565b62005dba604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ebf9050565b1562005e81576020811462005dec5783838383604051630a5a604160e01b81526004016200113194939291906200a4b0565b604080516020601f840181900481028201810190925282815260009162005e2f91858580838501838280828437600092019190915250929392505062008f1c9050565b905067016345785d8a000081108062005e4f5750678ac7230489e8000081115b1562005e785784848484604051630a5a604160e01b81526004016200113194939291906200a4b0565b60375562006916565b62005ef2604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ebf9050565b1562005faa576020811462005f245783838383604051630a5a604160e01b81526004016200113194939291906200a4b0565b604080516020601f840181900481028201810190925282815260009162005f6791858580838501838280828437600092019190915250929392505062008f1c9050565b905080158062005f7857506101f481115b1562005fa15784848484604051630a5a604160e01b81526004016200113194939291906200a4b0565b60385562006916565b620060136040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ebf9050565b15620060d05760208114620060455783838383604051630a5a604160e01b81526004016200113194939291906200a4b0565b604080516020601f84018190048102820181019092528281526000916200608891858580838501838280828437600092019190915250929392505062008f1c9050565b90506203f4808110806200609e575062278d0081115b15620060c75784848484604051630a5a604160e01b81526004016200113194939291906200a4b0565b60395562006916565b6200613e60405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ebf9050565b15620061eb5760208114620061705783838383604051630a5a604160e01b81526004016200113194939291906200a4b0565b604080516020601f8401819004810282018101909252828152600091620061b391858580838501838280828437600092019190915250929392505062008f1c9050565b90506064811115620061e25784848484604051630a5a604160e01b81526004016200113194939291906200a4b0565b603a5562006916565b6200625b60405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ebf9050565b156200631c57602081146200628d5783838383604051630a5a604160e01b81526004016200113194939291906200a4b0565b604080516020601f8401819004810282018101909252828152600091620062d091858580838501838280828437600092019190915250929392505062008f1c9050565b9050674563918244f40000811080620062ea5750603c5481115b15620063135784848484604051630a5a604160e01b81526004016200113194939291906200a4b0565b603b5562006916565b6200638a6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ebf9050565b156200644d5760208114620063bc5783838383604051630a5a604160e01b81526004016200113194939291906200a4b0565b604080516020601f8401819004810282018101909252828152600091620063ff91858580838501838280828437600092019190915250929392505062008f1c9050565b905068056bc75e2d631000008110806200641b5750603b548111155b15620064445784848484604051630a5a604160e01b81526004016200113194939291906200a4b0565b603c5562006916565b620064ba6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ebf9050565b15620065775760208114620064ec5783838383604051630a5a604160e01b81526004016200113194939291906200a4b0565b604080516020601f84018190048102820181019092528281526000916200652f91858580838501838280828437600092019190915250929392505062008f1c9050565b90506202a300811080620065455750603e548110155b156200656e5784848484604051630a5a604160e01b81526004016200113194939291906200a4b0565b603d5562006916565b620065e26040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ebf9050565b156200669f5760208114620066145783838383604051630a5a604160e01b81526004016200113194939291906200a4b0565b604080516020601f84018190048102820181019092528281526000916200665791858580838501838280828437600092019190915250929392505062008f1c9050565b9050620d2f008110806200666d5750603d548111155b15620066965784848484604051630a5a604160e01b81526004016200113194939291906200a4b0565b603e5562006916565b620067196040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ebf9050565b15620067c557602081146200674b5783838383604051630a5a604160e01b81526004016200113194939291906200a4b0565b604080516020601f84018190048102820181019092528281526000916200678e91858580838501838280828437600092019190915250929392505062008f1c9050565b905080600003620067bc5784848484604051630a5a604160e01b81526004016200113194939291906200a4b0565b604a5562006916565b620068336040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ebf9050565b15620068f35760148114620068655783838383604051630a5a604160e01b81526004016200113194939291906200a4b0565b6000620068ad601484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008f1c9050565b90506001600160a01b038116620068e15784848484604051630a5a604160e01b81526004016200113194939291906200a4b0565b620068ec8162008f21565b5062006916565b838383836040516325ee20d560e21b81526004016200113194939291906200a4b0565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516200694d94939291906200a4b0565b60405180910390a150505050565b60005462010000900460ff16156200698657604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620069b85760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b03811115620069d657620069d66200959a565b60405190808252806020026020018201604052801562006a00578160200160208202803683370190505b5090506000805b8381101562006afe5762006a4987878381811062006a295762006a2962009e9c565b905060200201602081019062006a40919062009429565b603f9062007dc4565b62006a675760405163056e881160e01b815260040160405180910390fd5b6041600088888481811062006a805762006a8062009e9c565b905060200201602081019062006a97919062009429565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006ad35762006ad362009e9c565b6001600160a01b039092166020928302919091019091015262006af68162009f01565b905062006a07565b50604051634484077560e01b81526120059063448407759062002886908590889060040162009eb2565b606080600062006b39603f62008917565b90508085101562006cfd57831562006b52578362006b54565b805b935060008462006b65878462009e6c565b1162006b7d5762006b77868362009e6c565b62006b7f565b845b9050806001600160401b0381111562006b9c5762006b9c6200959a565b60405190808252806020026020018201604052801562006bc6578160200160208202803683370190505b509350806001600160401b0381111562006be45762006be46200959a565b60405190808252806020026020018201604052801562006c0e578160200160208202803683370190505b50925060005b8181101562006cfa5762006c2d620039f6828962009db0565b85828151811062006c425762006c4262009e9c565b60200260200101906001600160a01b031690816001600160a01b0316815250506041600086838151811062006c7b5762006c7b62009e9c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b031684828151811062006ccf5762006ccf62009e9c565b6001600160a01b039092166020928302919091019091015262006cf28162009f01565b905062006c14565b50505b9250925092565b336110011462006d2c57604051630f22c43960e41b8152611001600482015260240162001131565b60005462010000900460ff161562006d5757604051631785c68160e01b815260040160405180910390fd5b6001600160a01b038082166000908152604360205260409020541662006d7f603f8262007dc4565b62006d9d5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062006dc3603c4262009d8d565b604a546000828152604b60205260409020549192501162006df75760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b6020526040812080546001929062006e1890849062009db0565b90915550506001600160a01b0384166000908152604460205260409020541580159062006e6b57506001600160a01b038416600090815260446020526040902054429062006e6990603c9062009db0565b105b1562006e8a576040516330abb81d60e21b815260040160405180910390fd5b60008062006e9a85600062007de7565b915091508162006ebd57604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562006f10573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006f36919062009dc6565b905062006f44858362007e71565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162006f849392919062009df6565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162005725916001600160a01b0316908a9060040162009d4d565b6001600160a01b0380821660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293849384938493909291608084019190620070339062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620070619062009d17565b8015620070b25780601f106200708657610100808354040283529160200191620070b2565b820191906000526020600020905b8154815290600101906020018083116200709457829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620070dd9062009d17565b80601f01602080910402602001604051908101604052809291908181526020018280546200710b9062009d17565b80156200715c5780601f1062007130576101008083540402835291602001916200715c565b820191906000526020600020905b8154815290600101906020018083116200713e57829003601f168201915b50505050508152602001600182018054620071779062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620071a59062009d17565b8015620071f65780601f10620071ca57610100808354040283529160200191620071f6565b820191906000526020600020905b815481529060010190602001808311620071d857829003601f168201915b50505050508152602001600282018054620072119062009d17565b80601f01602080910402602001604051908101604052809291908181526020018280546200723f9062009d17565b8015620072905780601f10620072645761010080835404028352916020019162007290565b820191906000526020600020905b8154815290600101906020018083116200727257829003601f168201915b50505050508152602001600382018054620072ab9062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620072d99062009d17565b80156200732a5780601f10620072fe576101008083540402835291602001916200732a565b820191906000526020600020905b8154815290600101906020018083116200730c57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620073b65750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200741d57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200744f5760405163b1d02c3d60e01b815260040160405180910390fd5b336200745d603f8262007dc4565b6200747b5760405163056e881160e01b815260040160405180910390fd5b336000818152604160205260409020600c81015442906200749f90603c9062009db0565b1115620074bf57604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620074d09062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620074fe9062009d17565b80156200754f5780601f1062007523576101008083540402835291602001916200754f565b820191906000526020600020905b8154815290600101906020018083116200753157829003601f168201915b50505082875250859160058401915081906200756c90826200a4db565b50602082015160018201906200758390826200a4db565b50604082015160028201906200759a90826200a4db565b5060608201516003820190620075b190826200a4db565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff16156200761f57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620076515760405163b1d02c3d60e01b815260040160405180910390fd5b82811462007672576040516341abc80160e01b815260040160405180910390fd5b60005b83811015620076e357620076d085858381811062007697576200769762009e9c565b9050602002016020810190620076ae919062009429565b848484818110620076c357620076c362009e9c565b9050602002013562008db3565b620076db8162009f01565b905062007675565b5050505050565b6001600160a01b0380821660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293849390916080840191620077559062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620077839062009d17565b8015620077d45780601f10620077a857610100808354040283529160200191620077d4565b820191906000526020600020905b815481529060010190602001808311620077b657829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620077ff9062009d17565b80601f01602080910402602001604051908101604052809291908181526020018280546200782d9062009d17565b80156200787e5780601f1062007852576101008083540402835291602001916200787e565b820191906000526020600020905b8154815290600101906020018083116200786057829003601f168201915b50505050508152602001600182018054620078999062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620078c79062009d17565b8015620079185780601f10620078ec5761010080835404028352916020019162007918565b820191906000526020600020905b815481529060010190602001808311620078fa57829003601f168201915b50505050508152602001600282018054620079339062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620079619062009d17565b8015620079b25780601f106200798657610100808354040283529160200191620079b2565b820191906000526020600020905b8154815290600101906020018083116200799457829003601f168201915b50505050508152602001600382018054620079cd9062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620079fb9062009d17565b801562007a4c5780601f1062007a205761010080835404028352916020019162007a4c565b820191906000526020600020905b81548152906001019060200180831162007a2e57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162007ad85750505091909252505050604001519392505050565b600062007b10603f8462007dc4565b62007b2e5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd906024016200508b565b60005462010000900460ff161562007b9d57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007bcf5760405163b1d02c3d60e01b815260040160405180910390fd5b3362007bdd603f8262007dc4565b62007bfb5760405163056e881160e01b815260040160405180910390fd5b3362007c0b818787878762008ad2565b62007c2957604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166045878760405162007c4892919062009d67565b908152604051908190036020019020546001600160a01b031614158062007c9257506048868660405162007c7e92919062009d67565b9081526040519081900360200190205460ff165b1562007cb1576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c810154429062007cde90603c9062009db0565b111562007cfe57604051631f92cdbd60e11b815260040160405180910390fd5b4260468260040160405162007d1491906200a5a3565b908152604051908190036020019020556004810162007d3587898362009fc5565b5042600c820155604051829060459062007d53908a908a9062009d67565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062007db3908a908a906200a296565b60405180910390a250505050505050565b6001600160a01b03811660009081526001830160205260408120541515620050cf565b6000806000848460405160200162007e019291906200a621565b60408051601f1981840301815291815281516020928301206000818152604c9093529120549091504281111562007e415760008093509350505062007e6a565b603e5462007e50904262009db0565b6000928352604c6020526040909220829055506001925090505b9250929050565b8154604051631507fdb760e11b81526001600160a01b03909116600482015261100090632a0ffb6e90602401600060405180830381600087803b15801562007eb857600080fd5b505af115801562007ecd573d6000803e3d6000fd5b505050506000600162007ee1603f62008917565b62007eed919062009e6c565b604954108015915062007fab5760405163d31f968d60e01b81526110006004820152600860248201526120009063d31f968d90604401602060405180830381865afa15801562007f41573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007f67919062009e25565b62007fab5760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b015482111562007fc057600b83018290555b600a83015460ff166200803357600a8301805460ff191660019081179091556049805460009062007ff390849062009db0565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b60408051608080820183526000808352602080840182905283850182905260608085018390528551938401865282845283820183905283860183905283018290528451808601865282815281018290528451808601909552855185528581019085015291928290620080aa9062008f8d565b90506000805b620080bb8362009000565b156200818e5780600003620080f057620080df620080d98462009026565b6200908a565b6001600160a01b031684526200817b565b806001036200811c5762008108620080d98462009026565b6001600160a01b031660208501526200817b565b80600203620081485762008134620080d98462009026565b6001600160a01b031660408501526200817b565b80600303620081755762008166620081608462009026565b620090a2565b6060850152600191506200817b565b6200818e565b620081868162009f01565b9050620080b0565b5091959194509092505050565b6020808201516001600160a01b031660009081526001909152604081205460ff1680620081d3575060208201516001600160a01b0316155b15620081e157506004919050565b8151620081f190603f9062007dc4565b620081fe57506002919050565b81516001600160a01b039081166000908152604160209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929391926080840191906200826a9062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620082989062009d17565b8015620082e95780601f10620082bd57610100808354040283529160200191620082e9565b820191906000526020600020905b815481529060010190602001808311620082cb57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620083149062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620083429062009d17565b8015620083935780601f10620083675761010080835404028352916020019162008393565b820191906000526020600020905b8154815290600101906020018083116200837557829003601f168201915b50505050508152602001600182018054620083ae9062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620083dc9062009d17565b80156200842d5780601f1062008401576101008083540402835291602001916200842d565b820191906000526020600020905b8154815290600101906020018083116200840f57829003601f168201915b50505050508152602001600282018054620084489062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620084769062009d17565b8015620084c75780601f106200849b57610100808354040283529160200191620084c7565b820191906000526020600020905b815481529060010190602001808311620084a957829003601f168201915b50505050508152602001600382018054620084e29062009d17565b80601f0160208091040260200160405190810160405280929190818152602001828054620085109062009d17565b8015620085615780601f10620085355761010080835404028352916020019162008561565b820191906000526020600020905b8154815290600101906020018083116200854357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620085ed5750505050508152505090508060e00151801562008638575082600001516001600160a01b031683602001516001600160a01b031614155b15620086475750600392915050565b6040808201516060850151602086015192516317066a5760e21b81526001600160a01b03938416600482015260009390921691635c19a95c919060240160206040518083038185885af1158015620086a3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620086ca919062009dc6565b905083602001516001600160a01b031684600001516001600160a01b03166000805160206200b59d83398151915283876060015160405162008716929190918252602082015260400190565b60405180910390a383602001516001600160a01b031684600001516001600160a01b03167f607b17598da6bdca05650a2fc08bd2bc8e38c3236806a0fa8e0daabc1d6cb1d883876060015160405162008779929190918252602082015260400190565b60405180910390a360408083015160208601519151633041949b60e01b815261200592633041949b92620087b39290919060040162009d4d565b600060405180830381600087803b158015620087ce57600080fd5b505af1158015620087e3573d6000803e3d6000fd5b506000979650505050505050565b6001600160a01b0381166000908152604160205260409020600a81015460ff16156200881b575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa1580156200886b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008891919062009dc6565b101562005ab857620088b381603d5442620088ad919062009db0565b62007e71565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b158015620088fa57600080fd5b505af11580156200890f573d6000803e3d6000fd5b505050505050565b6000620050d2825490565b6000620050cf83836200917a565b60008082905060038151108062008948575060098151115b15620089575750600092915050565b6041816000815181106200896f576200896f62009e9c565b016020015160f81c1080620089a15750605a8160008151811062008997576200899762009e9c565b016020015160f81c115b15620089b05750600092915050565b60015b815181101562008ac8576030828281518110620089d457620089d462009e9c565b016020015160f81c108062008a0557506039828281518110620089fb57620089fb62009e9c565b016020015160f81c115b801562008a555750604182828151811062008a245762008a2462009e9c565b016020015160f81c108062008a555750605a82828151811062008a4b5762008a4b62009e9c565b016020015160f81c115b801562008aa55750606182828151811062008a745762008a7462009e9c565b016020015160f81c108062008aa55750607a82828151811062008a9b5762008a9b62009e9c565b016020015160f81c115b1562008ab5575060009392505050565b62008ac08162009f01565b9050620089b3565b5060019392505050565b600060308414158062008ae6575060608214155b1562008af55750600062008bf9565b60008686864660405160200162008b1094939291906200a65f565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a60405160200162008b6a9594939291906200a68c565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa62008bb457600080fd5b5060008160008151811062008bcd5762008bcd62009e9c565b016020015160f81c90506001811462008bef5760009550505050505062008bf9565b6001955050505050505b95945050505050565b60008061200361dead60405162008c199062009405565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562008c5c573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162008c909291906200a6c4565b6000604051808303818588803b15801562008caa57600080fd5b505af115801562008cbf573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b6000620050cf836001600160a01b038416620091a7565b600054610100900460ff1662008d875760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162001131565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b8162008dc1603f8262007dc4565b62008ddf5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562008e43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008e69919062009dc6565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838360405162008eb191815260200190565b60405180910390a350505050565b60008160405160200162008ed491906200a473565b604051602081830303815290604052805190602001208360405160200162008efd91906200a473565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b604080516080810182526000918101828152606082018390528152602081019190915262008fbb82620091f9565b62008fc557600080fd5b600062008fd683602001516200922c565b836020015162008fe7919062009db0565b6040805180820190915293845260208401525090919050565b80518051602082015160009291620090189162009db0565b836020015110915050919050565b6040805180820190915260008082526020820152620090458262009000565b6200904f57600080fd5b602082015160006200906182620092bb565b90506200906f818362009db0565b60209485015260408051808201909152908152928301525090565b80516000906015146200909c57600080fd5b620050d2825b805160009015801590620090b857508151602110155b620090c257600080fd5b6000620090d383602001516200922c565b905080836000015110156200912b5760405162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015260640162001131565b82516000906200913d90839062009e6c565b905060008083866020015162009154919062009db0565b90508051915060208310156200917157826020036101000a820491505b50949350505050565b600082600001828154811062009194576200919462009e9c565b9060005260206000200154905092915050565b6000818152600183016020526040812054620091f057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620050d2565b506000620050d2565b805160009081036200920d57506000919050565b6020820151805160001a9060c082101562008ac8575060009392505050565b8051600090811a6080811015620092465750600092915050565b60b881108062009263575060c0811080159062009263575060f881105b15620092725750600192915050565b60c0811015620092ad576200928a600160b86200a6ea565b620092999060ff168262009e6c565b620092a690600162009db0565b9392505050565b6200928a600160f86200a6ea565b80516000908190811a6080811015620092d85760019150620093fe565b60b88110156200930457620092ef60808262009e6c565b620092fc90600162009db0565b9150620093fe565b60c08110156200937d57600060b78203600186019550806020036101000a865104915060018101820193505080831015620093765760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162001131565b50620093fe565b60f88110156200939457620092ef60c08262009e6c565b600060f78203600186019550806020036101000a865104915060018101820193505080831015620093fc5760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162001131565b505b5092915050565b610e96806200a70783390190565b6001600160a01b03811681146200174957600080fd5b6000602082840312156200943c57600080fd5b8135620092a68162009413565b60008083601f8401126200945c57600080fd5b5081356001600160401b038111156200947457600080fd5b60208301915083602082850101111562007e6a57600080fd5b60008060208385031215620094a157600080fd5b82356001600160401b03811115620094b857600080fd5b620094c68582860162009449565b90969095509350505050565b600080600060408486031215620094e857600080fd5b833560ff81168114620094fa57600080fd5b925060208401356001600160401b038111156200951657600080fd5b620095248682870162009449565b9497909650939450505050565b60005b838110156200954e57818101518382015260200162009534565b50506000910152565b600081518084526200957181602086016020860162009531565b601f01601f19169290920160200192915050565b602081526000620050cf602083018462009557565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620095d557620095d56200959a565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200960657620096066200959a565b604052919050565b60006001600160401b038211156200962a576200962a6200959a565b50601f01601f191660200190565b60006200964f62009649846200960e565b620095db565b90508281528383830111156200966457600080fd5b828260208301376000602084830101529392505050565b6000602082840312156200968e57600080fd5b81356001600160401b03811115620096a557600080fd5b8201601f81018413620096b757600080fd5b620096c88482356020840162009638565b949350505050565b60008060408385031215620096e457600080fd5b8235620096f18162009413565b946020939093013593505050565b80151581146200174957600080fd5b600080600080608085870312156200972557600080fd5b8435620097328162009413565b93506020850135620097448162009413565b92506040850135915060608501356200975d81620096ff565b939692955090935050565b6001600160401b03811681146200174957600080fd5b6000602082840312156200979157600080fd5b8135620092a68162009768565b60008060408385031215620097b257600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b83811015620097fc5781516001600160a01b031687529582019590820190600101620097d5565b509495945050505050565b6080815260006200981c6080830187620097c1565b82810360208481019190915286518083528782019282019060005b81811015620098555784518352938301939183019160010162009837565b5050848103604086015286518082528282019350600581901b8201830183890160005b83811015620098aa57601f198584030187526200989783835162009557565b9686019692509085019060010162009878565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e0811215620098e057600080fd5b8835620098ed8162009413565b975060208901356001600160401b03808211156200990a57600080fd5b620099188c838d0162009449565b909950975060408b01359150808211156200993257600080fd5b620099408c838d0162009449565b90975095508591506060605f19840112156200995b57600080fd5b60608b01945060c08b01359250808311156200997657600080fd5b505088016080818b0312156200998b57600080fd5b8091505092959891949750929550565b60008060408385031215620099af57600080fd5b8235620099bc8162009413565b91506020830135620099ce81620096ff565b809150509250929050565b602081526000825160806020840152620099f760a084018262009557565b90506020840151601f198085840301604086015262009a17838362009557565b9250604086015191508085840301606086015262009a36838362009557565b925060608601519150808584030160808601525062008bf9828262009557565b6000806000806040858703121562009a6d57600080fd5b84356001600160401b038082111562009a8557600080fd5b62009a938883890162009449565b9096509450602087013591508082111562009aad57600080fd5b5062009abc8782880162009449565b95989497509550505050565b60008083601f84011262009adb57600080fd5b5081356001600160401b0381111562009af357600080fd5b6020830191508360208260051b850101111562007e6a57600080fd5b60008060006040848603121562009b2557600080fd5b83356001600160401b0381111562009b3c57600080fd5b62009b4a8682870162009ac8565b909450925050602084013562009b608162009413565b809150509250925092565b60608152600062009b806060830186620097c1565b828103602084015262009b948186620097c1565b915050826040830152949350505050565b600082601f83011262009bb757600080fd5b620050cf8383356020850162009638565b60006020828403121562009bdb57600080fd5b81356001600160401b038082111562009bf357600080fd5b908301906080828603121562009c0857600080fd5b62009c12620095b0565b82358281111562009c2257600080fd5b62009c308782860162009ba5565b82525060208301358281111562009c4657600080fd5b62009c548782860162009ba5565b60208301525060408301358281111562009c6d57600080fd5b62009c7b8782860162009ba5565b60408301525060608301358281111562009c9457600080fd5b62009ca28782860162009ba5565b60608301525095945050505050565b6000806000806040858703121562009cc857600080fd5b84356001600160401b038082111562009ce057600080fd5b62009cee8883890162009ac8565b9096509450602087013591508082111562009d0857600080fd5b5062009abc8782880162009ac8565b600181811c9082168062009d2c57607f821691505b6020821081036200461a57634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008262009dab57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620050d257620050d262009d77565b60006020828403121562009dd957600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b83815260208101839052606081016003831062009e175762009e1762009de0565b826040830152949350505050565b60006020828403121562009e3857600080fd5b8151620092a681620096ff565b828152604081016005831062009e5f5762009e5f62009de0565b8260208301529392505050565b81810381811115620050d257620050d262009d77565b8082028115828204841417620050d257620050d262009d77565b634e487b7160e01b600052603260045260246000fd5b60408152600062009ec76040830185620097c1565b905060018060a01b03831660208301529392505050565b6001600160401b03828116828216039080821115620093fe57620093fe62009d77565b60006001820162009f165762009f1662009d77565b5060010190565b6000808335601e1984360301811262009f3557600080fd5b8301803591506001600160401b0382111562009f5057600080fd5b60200191503681900382131562007e6a57600080fd5b601f8211156200803357600081815260208120601f850160051c8101602086101562009f8f5750805b601f850160051c820191505b818110156200890f5782815560010162009f9b565b600019600383901b1c191660019190911b1790565b6001600160401b0383111562009fdf5762009fdf6200959a565b62009ff78362009ff0835462009d17565b8362009f66565b6000601f8411600181146200a02a57600085156200a0155750838201355b6200a021868262009fb0565b845550620076e3565b600083815260209020601f19861690835b828110156200a05d57868501358255602094850194600190920191016200a03b565b50868210156200a07b5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6200a099828362009f1d565b6001600160401b038111156200a0b3576200a0b36200959a565b6200a0cb816200a0c4855462009d17565b8562009f66565b6000601f8211600181146200a0fe57600083156200a0e95750838201355b6200a0f5848262009fb0565b8655506200a15b565b600085815260209020601f19841690835b828110156200a13157868501358255602094850194600190920191016200a10f565b50848210156200a14f5760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506200a16e602083018362009f1d565b6200a17e81836001860162009fc5565b50506200a18f604083018362009f1d565b6200a19f81836002860162009fc5565b50506200a1b0606083018362009f1d565b6200a1c081836003860162009fc5565b50505050565b81356200a1d38162009768565b6001600160401b03811690508154816001600160401b0319821617835560208401356200a2008162009768565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff198316841781178555908501356200a2408162009768565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000620096c86020830184866200a26d565b60006001600160401b038211156200a2c8576200a2c86200959a565b5060051b60200190565b600060208083850312156200a2e657600080fd5b82516001600160401b038111156200a2fd57600080fd5b8301601f810185136200a30f57600080fd5b80516200a32062009649826200a2ac565b81815260059190911b820183019083810190878311156200a34057600080fd5b928401925b828410156200a36b5783516200a35b8162009413565b825292840192908401906200a345565b979650505050505050565b600060208083850312156200a38a57600080fd5b82516001600160401b03808211156200a3a257600080fd5b818501915085601f8301126200a3b757600080fd5b81516200a3c862009649826200a2ac565b81815260059190911b830184019084810190888311156200a3e857600080fd5b8585015b838110156200a466578051858111156200a4065760008081fd5b8601603f81018b136200a4195760008081fd5b8781015160406200a42e62009649836200960e565b8281528d828486010111156200a4445760008081fd5b6200a455838c830184870162009531565b86525050509186019186016200a3ec565b5098975050505050505050565b600082516200a48781846020870162009531565b9190910192915050565b60ff8416815260406020820152600062008bf96040830184866200a26d565b6040815260006200a4c66040830186886200a26d565b82810360208401526200a36b8185876200a26d565b81516001600160401b038111156200a4f7576200a4f76200959a565b6200a50f816200a508845462009d17565b8462009f66565b602080601f8311600181146200a54357600084156200a52e5750858301515b6200a53a858262009fb0565b8655506200890f565b600085815260208120601f198616915b828110156200a574578886015182559484019460019091019084016200a553565b50858210156200a5935787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200a5b38162009d17565b600182811680156200a5ce57600181146200a5e4576200a615565b60ff19841687528215158302870194506200a615565b8760005260208060002060005b858110156200a60c5781548a8201529084019082016200a5f1565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b1681526000600383106200a64b576200a64b62009de0565b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b600086516200a6a0818460208b0162009531565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b0383168152604060208201819052600090620096c89083018462009557565b60ff8281168282160390811115620050d257620050d262009d7756fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656424d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000030b86b3146bdd2200b1dbdb1cea5e40d3451c028cbb4fb03b1826f7f2d82bee76bbd5cd68a74a16a7eceea093fd5826b9200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003087ce273bb9b51fd69e50de7a8d9a99cfb3b1a5c6a7b85f6673d137a5a2ce7df3d6ee4e6d579a142d58b0606c4a7a1c27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a33ac14980d85c0d154c5909ebf7a11d455f54beb4d5d0dc1d8b3670b9c4a6b6c450ee3d623ecc48026f09ed1f0b5c1200000000000000000000000000000000a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(StakeCreditContract), @@ -664,6 +666,23 @@ func init() { }, }, } + + // This upgrade is to fix an error in testnet only. So the upgrade config of mainnet is empty. + feynmanFixUpgrade[chapelNet] = &Upgrade{ + UpgradeName: "feynman", + Configs: []*UpgradeConfig{ + { + ContractAddr: common.HexToAddress(StakeHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/a803125f635f315e332fd5164e91a3df1d48559c", + Code: "608060405260043610620003db5760003560e01c806386d545061162000203578063d115a2061162000117578063e992aaf511620000ad578063f80a34021162000078578063f80a34021462000bef578063fb50b31f1462000c14578063fc0c5ff11462000c39578063ff69ab611462000c5157600080fd5b8063e992aaf51462000b6c578063efdbf0e11462000b84578063f1f74d841462000bc0578063f1fad1041462000bd857600080fd5b8063d8ca511f11620000ee578063d8ca511f1462000aff578063daacdb661462000b17578063dbda7fb31462000b2f578063e8f67c3b1462000b5457600080fd5b8063d115a2061462000a9d578063d6ca429d1462000ab5578063d7c2dfc81462000ada57600080fd5b8063b187bd261162000199578063c38fbec81162000164578063c38fbec81462000a1f578063c473318f1462000a44578063c8509d81146200083d578063cbb04d9d1462000a5c57600080fd5b8063b187bd26146200098c578063baa7199e14620009ac578063bdceadf314620009d1578063bff02e2014620009e957600080fd5b8063982ef0a711620001da578063982ef0a714620008f7578063a43569b3146200090e578063aad3ec961462000942578063ac431751146200096757600080fd5b806386d54506146200087a5780638a4d3fa814620008b45780638cd22b2214620008d257600080fd5b80634bf6c88211620002fb578063663706d3116200029157806376e7d6d6116200025c57806376e7d6d6146200080d5780638129fc1c1462000825578063831d65d1146200083d5780638456cb59146200086257600080fd5b8063663706d3146200073a5780636ec01b27146200076b5780636f8e2fa414620007c357806375cc7d8914620007e857600080fd5b80635949187111620002d25780635949187114620006a25780635e7cc1c914620006c757806363a036b514620006ec57806364028fbd146200072357600080fd5b80634bf6c882146200063b5780634d99dd1614620006655780634e6fd6c4146200068a57600080fd5b80631fa8882b1162000371578063449ecfe61162000348578063449ecfe6146200058757806345211bfd14620005ac5780634838d16514620005d15780634a49ac4c146200061657600080fd5b80631fa8882b146200053157806338409988146200054a578063417c73a7146200056257600080fd5b8063092193ab11620003b2578063092193ab146200047c5780630e9fbf5114620004935780631182b87514620004b857806317b4f35314620004ec57600080fd5b8063046f7da214620003fb578063059ddd2214620004135780630661806e146200045557600080fd5b36620003f65760345460ff16600114620003f457600080fd5b005b600080fd5b3480156200040857600080fd5b50620003f462000c69565b3480156200042057600080fd5b50620004386200043236600462009440565b62000cfb565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200046257600080fd5b506200046d60365481565b6040519081526020016200044c565b620003f46200048d36600462009440565b62001110565b348015620004a057600080fd5b50620003f4620004b2366004620094a4565b6200174e565b348015620004c557600080fd5b50620004dd620004d7366004620094e9565b62001a7a565b6040516200044c91906200959c565b348015620004f957600080fd5b50620004386200050b36600462009692565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200053e57600080fd5b506200046d6201518081565b3480156200055757600080fd5b506200046d60375481565b3480156200056f57600080fd5b50620003f46200058136600462009440565b62001ded565b3480156200059457600080fd5b50620003f4620005a636600462009440565b62001e6f565b348015620005b957600080fd5b50620003f4620005cb36600462009440565b62002054565b348015620005de57600080fd5b5062000605620005f036600462009440565b60016020526000908152604090205460ff1681565b60405190151581526020016200044c565b3480156200062357600080fd5b50620003f46200063536600462009440565b62002231565b3480156200064857600080fd5b5062000652600881565b60405160ff90911681526020016200044c565b3480156200067257600080fd5b50620003f462000684366004620096e7565b620022ad565b3480156200069757600080fd5b506200043861dead81565b348015620006af57600080fd5b50620003f4620006c136600462009725565b620028ca565b348015620006d457600080fd5b50620003f4620006e636600462009795565b6200369c565b348015620006f957600080fd5b50620007116200070b366004620097b5565b620038a4565b6040516200044c94939291906200981e565b620003f462000734366004620098da565b62003f36565b3480156200074757600080fd5b506200046d6200075936600462009440565b60446020526000908152604090205481565b3480156200077857600080fd5b50620007906200078a36600462009440565b62004580565b6040805182516001600160401b03908116825260208085015182169083015292820151909216908201526060016200044c565b348015620007d057600080fd5b50620004dd620007e236600462009440565b6200462a565b348015620007f557600080fd5b50620003f46200080736600462009440565b62004a43565b3480156200081a57600080fd5b506200046d603d5481565b3480156200083257600080fd5b50620003f462004c15565b3480156200084a57600080fd5b50620003f46200085c366004620094e9565b62004f2c565b3480156200086f57600080fd5b50620003f462004f96565b3480156200088757600080fd5b50620004386200089936600462009440565b6043602052600090815260409020546001600160a01b031681565b348015620008c157600080fd5b506200046d670de0b6b3a764000081565b348015620008df57600080fd5b506200046d620008f1366004620096e7565b6200502e565b620003f462000908366004620099b2565b620050e7565b3480156200091b57600080fd5b50620009336200092d36600462009440565b62005771565b6040516200044c9190620099f0565b3480156200094f57600080fd5b50620003f462000961366004620096e7565b62005a5e565b3480156200097457600080fd5b50620003f46200098636600462009a6d565b62005acb565b3480156200099957600080fd5b5060005462010000900460ff1662000605565b348015620009b957600080fd5b50620003f4620009cb36600462009b26565b6200696a565b348015620009de57600080fd5b506200046d603c5481565b348015620009f657600080fd5b5062000a0e62000a08366004620097b5565b62006b37565b6040516200044c9392919062009b82565b34801562000a2c57600080fd5b50620003f462000a3e36600462009440565b62006d13565b34801562000a5157600080fd5b506200046d60385481565b34801562000a6957600080fd5b5062000a8162000a7b36600462009440565b62006fd5565b604080519384529115156020840152908201526060016200044c565b34801562000aaa57600080fd5b506200046d61271081565b34801562000ac257600080fd5b50620003f462000ad436600462009bdf565b62007405565b34801562000ae757600080fd5b50620003f462000af936600462009cc8565b62007609565b34801562000b0c57600080fd5b506200046d603b5481565b34801562000b2457600080fd5b506200046d60495481565b34801562000b3c57600080fd5b506200043862000b4e36600462009440565b620076ff565b34801562000b6157600080fd5b506200046d60355481565b34801562000b7957600080fd5b506200046d603a5481565b34801562000b9157600080fd5b506200046d62000ba336600462009692565b805160208183018101805160468252928201919093012091525481565b34801562000bcd57600080fd5b506200046d603e5481565b34801562000be557600080fd5b5062000652601181565b34801562000bfc57600080fd5b506200046d62000c0e366004620096e7565b62007b16565b34801562000c2157600080fd5b50620003f462000c3336600462009a6d565b62007b87565b34801562000c4657600080fd5b506200046d60395481565b34801562000c5e57600080fd5b506200046d604a5481565b600054630100000090046001600160a01b0316331462000c9c576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000cc657604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000d669062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462000d949062009d2e565b801562000de55780601f1062000db95761010080835404028352916020019162000de5565b820191906000526020600020905b81548152906001019060200180831162000dc757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000e109062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462000e3e9062009d2e565b801562000e8f5780601f1062000e635761010080835404028352916020019162000e8f565b820191906000526020600020905b81548152906001019060200180831162000e7157829003601f168201915b5050505050815260200160018201805462000eaa9062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462000ed89062009d2e565b801562000f295780601f1062000efd5761010080835404028352916020019162000f29565b820191906000526020600020905b81548152906001019060200180831162000f0b57829003601f168201915b5050505050815260200160028201805462000f449062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462000f729062009d2e565b801562000fc35780601f1062000f975761010080835404028352916020019162000fc3565b820191906000526020600020905b81548152906001019060200180831162000fa557829003601f168201915b5050505050815260200160038201805462000fde9062009d2e565b80601f01602080910402602001604051908101604052809291908181526020018280546200100c9062009d2e565b80156200105d5780601f1062001031576101008083540402835291602001916200105d565b820191906000526020600020905b8154815290600101906020018083116200103f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620010e9575050509190925250509051949350505050565b33611000146200113c57604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b03808216600090815260436020908152604080832054841680845260418352818420825161016081018452815487168152600182015487169481019490945260028101549095169183019190915260038401546060830152600484018054919491608084019190620011b59062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620011e39062009d2e565b8015620012345780601f10620012085761010080835404028352916020019162001234565b820191906000526020600020905b8154815290600101906020018083116200121657829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200125f9062009d2e565b80601f01602080910402602001604051908101604052809291908181526020018280546200128d9062009d2e565b8015620012de5780601f10620012b257610100808354040283529160200191620012de565b820191906000526020600020905b815481529060010190602001808311620012c057829003601f168201915b50505050508152602001600182018054620012f99062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620013279062009d2e565b8015620013785780601f106200134c5761010080835404028352916020019162001378565b820191906000526020600020905b8154815290600101906020018083116200135a57829003601f168201915b50505050508152602001600282018054620013939062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620013c19062009d2e565b8015620014125780601f10620013e65761010080835404028352916020019162001412565b820191906000526020600020905b815481529060010190602001808311620013f457829003601f168201915b505050505081526020016003820180546200142d9062009d2e565b80601f01602080910402602001604051908101604052809291908181526020018280546200145b9062009d2e565b8015620014ac5780601f106200148057610100808354040283529160200191620014ac565b820191906000526020600020905b8154815290600101906020018083116200148e57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162001538575050509190925250505060408101519091506001600160a01b031615806200157557508060e001515b156200163257604051611002903490600081818185875af1925050503d8060008114620015bf576040519150601f19603f3d011682016040523d82523d6000602084013e620015c4565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d604051620016259060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200168957600080fd5b505af11580156200169e573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea634604051620016df91815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b91620017149190869060040162009d64565b600060405180830381600087803b1580156200172f57600080fd5b505af115801562001744573d6000803e3d6000fd5b5050505050505b50565b33611001146200177657604051630f22c43960e41b8152611001600482015260240162001133565b60005462010000900460ff1615620017a157604051631785c68160e01b815260040160405180910390fd5b600060458383604051620017b792919062009d7e565b908152604051908190036020019020546001600160a01b03169050620017df603f8262007ddb565b620017fd5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062001825620151804262009da4565b604a546000828152604b602052604090205491925011620018595760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b602052604081208054600192906200187a90849062009dc7565b909155505060405160469062001894908790879062009d7e565b908152602001604051809103902054600014158015620018e55750426201518060468787604051620018c892919062009d7e565b908152602001604051809103902054620018e3919062009dc7565b105b156200190457604051631898eb6b60e01b815260040160405180910390fd5b6000806200191485600262007dfe565b91509150816200193757604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af11580156200198a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019b0919062009ddd565b9050620019be858362007e88565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620019fe9392919062009e0d565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001a3c916001600160a01b0316908a9060040162009d64565b600060405180830381600087803b15801562001a5757600080fd5b505af115801562001a6c573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001aa457604051630f22c43960e41b8152612000600482015260240162001133565b60005462010000900460ff161562001acf57604051631785c68160e01b815260040160405180910390fd5b6034805460ff19166001179055604080516020601f8501819004810282018101909252838152600091829162001b209187908790819084018382808284376000920191909152506200804f92505050565b915091508062001b435760405163035ede3560e21b815260040160405180910390fd5b816060015160000362001b69575050604080516000815260208101909152905062001ddc565b606082015160405163e04c83a760e01b81526000916110049163e04c83a79162001b999160040190815260200190565b6020604051808303816000875af115801562001bb9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bdf919062009e3c565b90508062001c865782602001516001600160a01b031683600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a8560600151600160405162001c3b92919062009e5c565b60405180910390a385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092965062001ddc95505050505050565b600062001c9384620081b2565b9050600081600481111562001cac5762001cac62009df7565b0362001cce575050604080516000815260208101909152925062001ddc915050565b6040516000906110049047908381818185875af1925050503d806000811462001d14576040519150601f19603f3d011682016040523d82523d6000602084013e62001d19565b606091505b505090508062001d3c576040516312171d8360e31b815260040160405180910390fd5b84602001516001600160a01b031685600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a87606001518560405162001d8f92919062009e5c565b60405180910390a387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092985062001ddc975050505050505050565b6034805460ff191690559392505050565b600054630100000090046001600160a01b0316331462001e20576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001e9a57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001ecc5760405163b1d02c3d60e01b815260040160405180910390fd5b8062001eda603f8262007ddb565b62001ef85760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff1662001f3657604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001f86573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fac919062009ddd565b101562001fcc576040516317b204bf60e11b815260040160405180910390fd5b4281600b0154111562001ff25760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff1916905560498054600191906000906200201690849062009e83565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff16156200207f57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620020b15760405163b1d02c3d60e01b815260040160405180910390fd5b33620020bf603f8262007ddb565b620020dd5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166200210557604051636520611b60e11b815260040160405180910390fd5b6001600160a01b03828116600090815260436020526040902054161515806200214657506001600160a01b03821660009081526047602052604090205460ff165b156200216557604051631e6f587560e11b815260040160405180910390fd5b336000818152604160205260409020600c81015442906200218b90620151809062009dc7565b1115620021ab57604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b600054630100000090046001600160a01b0316331462002264576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff1615620022d857604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200230a5760405163b1d02c3d60e01b815260040160405180910390fd5b8162002318603f8262007ddb565b620023365760405163056e881160e01b815260040160405180910390fd5b816000036200235857604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b0380841660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620023c09062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620023ee9062009d2e565b80156200243f5780601f1062002413576101008083540402835291602001916200243f565b820191906000526020600020905b8154815290600101906020018083116200242157829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200246a9062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620024989062009d2e565b8015620024e95780601f10620024bd57610100808354040283529160200191620024e9565b820191906000526020600020905b815481529060010190602001808311620024cb57829003601f168201915b50505050508152602001600182018054620025049062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620025329062009d2e565b8015620025835780601f10620025575761010080835404028352916020019162002583565b820191906000526020600020905b8154815290600101906020018083116200256557829003601f168201915b505050505081526020016002820180546200259e9062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620025cc9062009d2e565b80156200261d5780601f10620025f1576101008083540402835291602001916200261d565b820191906000526020600020905b815481529060010190602001808311620025ff57829003601f168201915b50505050508152602001600382018054620026389062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620026669062009d2e565b8015620026b75780601f106200268b57610100808354040283529160200191620026b7565b820191906000526020600020905b8154815290600101906020018083116200269957829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162002743575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af1158015620027bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027e3919062009ddd565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b40829802878460405162002834929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b0316036200286157620028618662008808565b6040808301519051633041949b60e01b815261200591633041949b916200288e9190879060040162009d64565b600060405180830381600087803b158015620028a957600080fd5b505af1158015620028be573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff1615620028f557604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620029275760405163b1d02c3d60e01b815260040160405180910390fd5b8362002935603f8262007ddb565b620029535760405163056e881160e01b815260040160405180910390fd5b8362002961603f8262007ddb565b6200297f5760405163056e881160e01b815260040160405180910390fd5b6034805460ff191660011790556000849003620029af57604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b031603620029e25760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152604160209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162002a4a9062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462002a789062009d2e565b801562002ac95780601f1062002a9d5761010080835404028352916020019162002ac9565b820191906000526020600020905b81548152906001019060200180831162002aab57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002af49062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462002b229062009d2e565b801562002b735780601f1062002b475761010080835404028352916020019162002b73565b820191906000526020600020905b81548152906001019060200180831162002b5557829003601f168201915b5050505050815260200160018201805462002b8e9062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462002bbc9062009d2e565b801562002c0d5780601f1062002be15761010080835404028352916020019162002c0d565b820191906000526020600020905b81548152906001019060200180831162002bef57829003601f168201915b5050505050815260200160028201805462002c289062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462002c569062009d2e565b801562002ca75780601f1062002c7b5761010080835404028352916020019162002ca7565b820191906000526020600020905b81548152906001019060200180831162002c8957829003601f168201915b5050505050815260200160038201805462002cc29062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462002cf09062009d2e565b801562002d415780601f1062002d155761010080835404028352916020019162002d41565b820191906000526020600020905b81548152906001019060200180831162002d2357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162002dcd57505050919092525050506001600160a01b0380891660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002e589062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462002e869062009d2e565b801562002ed75780601f1062002eab5761010080835404028352916020019162002ed7565b820191906000526020600020905b81548152906001019060200180831162002eb957829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002f029062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462002f309062009d2e565b801562002f815780601f1062002f555761010080835404028352916020019162002f81565b820191906000526020600020905b81548152906001019060200180831162002f6357829003601f168201915b5050505050815260200160018201805462002f9c9062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462002fca9062009d2e565b80156200301b5780601f1062002fef576101008083540402835291602001916200301b565b820191906000526020600020905b81548152906001019060200180831162002ffd57829003601f168201915b50505050508152602001600282018054620030369062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620030649062009d2e565b8015620030b55780601f106200308957610100808354040283529160200191620030b5565b820191906000526020600020905b8154815290600101906020018083116200309757829003601f168201915b50505050508152602001600382018054620030d09062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620030fe9062009d2e565b80156200314f5780601f1062003123576101008083540402835291602001916200314f565b820191906000526020600020905b8154815290600101906020018083116200313157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620031db5750505050508152505090508060e0015180156200321e5750876001600160a01b0316836001600160a01b031614155b156200323d57604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af115801562003294573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032ba919062009ddd565b9050603754811015620032e05760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b03161480156200337557506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa1580156200334d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003373919062009ddd565b105b1562003394576040516317b204bf60e11b815260040160405180910390fd5b6000612710603a5483620033a9919062009e99565b620033b5919062009da4565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d80600081146200340a576040519150601f19603f3d011682016040523d82523d6000602084013e6200340f565b606091505b505090508062003432576040516312171d8360e31b815260040160405180910390fd5b6200343e828462009e83565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af115801562003494573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620034bb919062009ddd565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e858960405162003520939291909283526020830191909152604082015260600190565b60405180910390a460408051600280825260608201835260009260208301908036833701905050905086604001518160008151811062003564576200356462009eb3565b60200260200101906001600160a01b031690816001600160a01b0316815250508560400151816001815181106200359f576200359f62009eb3565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620035e09084908c9060040162009ec9565b600060405180830381600087803b158015620035fb57600080fd5b505af115801562003610573d6000803e3d6000fd5b505050508a1562003682576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b81526004016200364d92919062009d64565b600060405180830381600087803b1580156200366857600080fd5b505af11580156200367d573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff1615620036c757604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620036f95760405163b1d02c3d60e01b815260040160405180910390fd5b3362003707603f8262007ddb565b620037255760405163056e881160e01b815260040160405180910390fd5b336000818152604160205260409020600c81015442906200374b90620151809062009dc7565b11156200376b57604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b90910481169085161115620037a55760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b039081169086161015620037e3576009820154620037dd9086906001600160401b031662009ef5565b620037fd565b6009820154620037fd906001600160401b03168662009ef5565b60098301546001600160401b039182169250600160801b900416811115620038385760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b60608060606000620038b7603f6200892e565b90508086101562003f2d578415620038d05784620038d2565b805b9450600085620038e3888462009e83565b11620038fb57620038f5878362009e83565b620038fd565b855b9050806001600160401b038111156200391a576200391a620095b1565b60405190808252806020026020018201604052801562003944578160200160208202803683370190505b509450806001600160401b03811115620039625762003962620095b1565b6040519080825280602002602001820160405280156200398c578160200160208202803683370190505b509350806001600160401b03811115620039aa57620039aa620095b1565b604051908082528060200260200182016040528015620039df57816020015b6060815260200190600190039081620039c95790505b50925060005b8181101562003f2a57600062003a0962003a00838b62009dc7565b603f9062008939565b6001600160a01b0380821660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162003a769062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462003aa49062009d2e565b801562003af55780601f1062003ac95761010080835404028352916020019162003af5565b820191906000526020600020905b81548152906001019060200180831162003ad757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003b209062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462003b4e9062009d2e565b801562003b9f5780601f1062003b735761010080835404028352916020019162003b9f565b820191906000526020600020905b81548152906001019060200180831162003b8157829003601f168201915b5050505050815260200160018201805462003bba9062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462003be89062009d2e565b801562003c395780601f1062003c0d5761010080835404028352916020019162003c39565b820191906000526020600020905b81548152906001019060200180831162003c1b57829003601f168201915b5050505050815260200160028201805462003c549062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462003c829062009d2e565b801562003cd35780601f1062003ca75761010080835404028352916020019162003cd3565b820191906000526020600020905b81548152906001019060200180831162003cb557829003601f168201915b5050505050815260200160038201805462003cee9062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462003d1c9062009d2e565b801562003d6d5780601f1062003d415761010080835404028352916020019162003d6d565b820191906000526020600020905b81548152906001019060200180831162003d4f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162003df9575050505050815250509050806000015188848151811062003e325762003e3262009eb3565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e0015162003ecb5780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003e9f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003ec5919062009ddd565b62003ece565b60005b87848151811062003ee35762003ee362009eb3565b602002602001018181525050806080015186848151811062003f095762003f0962009eb3565b602002602001018190525050508062003f229062009f18565b9050620039e5565b50505b92959194509250565b60005462010000900460ff161562003f6157604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562003f935760405163b1d02c3d60e01b815260040160405180910390fd5b3362003fa1603f8262007ddb565b1562003fc057604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b03888116600090815260436020526040902054161515806200400157506001600160a01b03881660009081526047602052604090205460ff165b156200402057604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b0316604588886040516200403f92919062009d7e565b908152604051908190036020019020546001600160a01b0316141580620040895750604887876040516200407592919062009d7e565b9081526040519081900360200190205460ff165b15620040a8576040516311fdb94760e01b815260040160405180910390fd5b6000620040b6838062009f34565b604051602001620040c992919062009d7e565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff1615620041135760405163c0bf414360e01b815260040160405180910390fd5b600062004129670de0b6b3a76400003462009e83565b90506036548110156200414f576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a166200417757604051636520611b60e11b815260040160405180910390fd5b6113886200418c604087016020880162009795565b6001600160401b03161180620041d25750620041af604086016020870162009795565b6001600160401b0316620041c7602087018762009795565b6001600160401b0316115b80620042115750620041eb604086016020870162009795565b6001600160401b031662004206606087016040880162009795565b6001600160401b0316115b15620042305760405163dc81db8560e01b815260040160405180910390fd5b6200427b62004240858062009f34565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200894792505050565b6200429957604051635dba5ad760e01b815260040160405180910390fd5b620042a8838a8a8a8a62008ae9565b620042c657604051631647e3cb60e11b815260040160405180910390fd5b60006200431484620042d9878062009f34565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062008c1992505050565b905062004323603f8562008d1a565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620043a38b8d8362009fdc565b508560058201620043b582826200a0a4565b5087905060098201620043c982826200a1dd565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b0319169288169290921790915551859060459062004417908e908e9062009d7e565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e6040516200449a9291906200a2ad565b60405180910390a460408051848152602081018590526001600160a01b0387169182916000805160206200b7b4833981519152910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816916000805160206200b7b4833981519152910160405180910390a3604051633041949b60e01b815261200590633041949b906200453e908590899060040162009d64565b600060405180830381600087803b1580156200455957600080fd5b505af11580156200456e573d6000803e3d6000fd5b50505050505050505050505050505050565b604080516060810182526000808252602082018190529181019190915281620045ab603f8262007ddb565b620045c95760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b6001600160a01b03808216600090815260416020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082810191909152600484018054919491608084019190620046979062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620046c59062009d2e565b8015620047165780601f10620046ea5761010080835404028352916020019162004716565b820191906000526020600020905b815481529060010190602001808311620046f857829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620047419062009d2e565b80601f01602080910402602001604051908101604052809291908181526020018280546200476f9062009d2e565b8015620047c05780601f106200479457610100808354040283529160200191620047c0565b820191906000526020600020905b815481529060010190602001808311620047a257829003601f168201915b50505050508152602001600182018054620047db9062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620048099062009d2e565b80156200485a5780601f106200482e576101008083540402835291602001916200485a565b820191906000526020600020905b8154815290600101906020018083116200483c57829003601f168201915b50505050508152602001600282018054620048759062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620048a39062009d2e565b8015620048f45780601f10620048c857610100808354040283529160200191620048f4565b820191906000526020600020905b815481529060010190602001808311620048d657829003601f168201915b505050505081526020016003820180546200490f9062009d2e565b80601f01602080910402602001604051908101604052809291908181526020018280546200493d9062009d2e565b80156200498e5780601f1062004962576101008083540402835291602001916200498e565b820191906000526020600020905b8154815290600101906020018083116200497057829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162004a1a5750505091909252505050608001519392505050565b336110011462004a6b57604051630f22c43960e41b8152611001600482015260240162001133565b6001600160a01b038082166000908152604360205260409020541662004a93603f8262007ddb565b62004ab15760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004b14573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004b3a919062009ddd565b90506000603d544262004b4e919062009dc7565b905062004b5c838262007e88565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004b9c9392919062009e0d565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004bda916001600160a01b031690889060040162009d64565b600060405180830381600087803b15801562004bf557600080fd5b505af115801562004c0a573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562004c365750600054600160ff909116105b8062004c525750303b15801562004c52575060005460ff166001145b62004cb75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162001133565b6000805460ff19166001179055801562004cdb576000805461ff0019166101001790555b33411462004cfc5760405163022d8c9560e31b815260040160405180910390fd5b3a1562004d1c576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755600960385562093a806039556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c556202a300603d5562069780603e55604a5560408051610220810190915261020080825260609182916200b5b4602083013980602001905181019062004dad91906200a2e9565b915060405180610360016040528061034081526020016200b7d4610340913980602001905181019062004de191906200a38d565b905060005b825181101562004e505760016047600085848151811062004e0b5762004e0b62009eb3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562004e488162009f18565b905062004de6565b5060005b815181101562004ec1576001604883838151811062004e775762004e7762009eb3565b602002602001015160405162004e8e91906200a48a565b908152604051908190036020019020805491151560ff1990921691909117905562004eb98162009f18565b905062004e54565b5062004ee17330151da466ec8ab345bef3d6983023e050fb067362008d31565b505080156200174b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b336120001462004f5457604051630f22c43960e41b8152612000600482015260240162001133565b7faa5ba621c8b3d7d05bb9e51a7506108251d4d5dbe542ca66fc7bb52aacb02b6583838360405162004f89939291906200a4a8565b60405180910390a1505050565b600054630100000090046001600160a01b0316331462004fc9576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff161562004ff457604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60006200503d603f8462007ddb565b6200505b5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa158015620050b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050de919062009ddd565b90505b92915050565b60005462010000900460ff16156200511257604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620051445760405163b1d02c3d60e01b815260040160405180910390fd5b8162005152603f8262007ddb565b620051705760405163056e881160e01b815260040160405180910390fd5b6037543490811015620051965760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b0380851660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620051fe9062009d2e565b80601f01602080910402602001604051908101604052809291908181526020018280546200522c9062009d2e565b80156200527d5780601f1062005251576101008083540402835291602001916200527d565b820191906000526020600020905b8154815290600101906020018083116200525f57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620052a89062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620052d69062009d2e565b8015620053275780601f10620052fb5761010080835404028352916020019162005327565b820191906000526020600020905b8154815290600101906020018083116200530957829003601f168201915b50505050508152602001600182018054620053429062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620053709062009d2e565b8015620053c15780601f106200539557610100808354040283529160200191620053c1565b820191906000526020600020905b815481529060010190602001808311620053a357829003601f168201915b50505050508152602001600282018054620053dc9062009d2e565b80601f01602080910402602001604051908101604052809291908181526020018280546200540a9062009d2e565b80156200545b5780601f106200542f576101008083540402835291602001916200545b565b820191906000526020600020905b8154815290600101906020018083116200543d57829003601f168201915b50505050508152602001600382018054620054769062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620054a49062009d2e565b8015620054f55780601f10620054c957610100808354040283529160200191620054f5565b820191906000526020600020905b815481529060010190602001808311620054d757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620055815750505050508152505090508060e001518015620055c45750856001600160a01b0316826001600160a01b031614155b15620055e357604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562005634573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200565b919062009ddd565b9050826001600160a01b0316876001600160a01b03166000805160206200b7b483398151915283876040516200569b929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b91620056d09190879060040162009d64565b600060405180830381600087803b158015620056eb57600080fd5b505af115801562005700573d6000803e3d6000fd5b50505050851562001744576040516372f6ad8f60e11b81526120059063e5ed5b1e90620057349086908b9060040162009d64565b600060405180830381600087803b1580156200574f57600080fd5b505af115801562005764573d6000803e3d6000fd5b5050505050505050505050565b6200579d6040518060800160405280606081526020016060815260200160608152602001606081525090565b81620057ab603f8262007ddb565b620057c95760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602052604090819020815160808101909252600501805482908290620058009062009d2e565b80601f01602080910402602001604051908101604052809291908181526020018280546200582e9062009d2e565b80156200587f5780601f1062005853576101008083540402835291602001916200587f565b820191906000526020600020905b8154815290600101906020018083116200586157829003601f168201915b505050505081526020016001820180546200589a9062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620058c89062009d2e565b8015620059195780601f10620058ed5761010080835404028352916020019162005919565b820191906000526020600020905b815481529060010190602001808311620058fb57829003601f168201915b50505050508152602001600282018054620059349062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620059629062009d2e565b8015620059b35780601f106200598757610100808354040283529160200191620059b3565b820191906000526020600020905b8154815290600101906020018083116200599557829003601f168201915b50505050508152602001600382018054620059ce9062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620059fc9062009d2e565b801562005a4d5780601f1062005a215761010080835404028352916020019162005a4d565b820191906000526020600020905b81548152906001019060200180831162005a2f57829003601f168201915b505050505081525050915050919050565b60005462010000900460ff161562005a8957604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005abb5760405163b1d02c3d60e01b815260040160405180910390fd5b62005ac7828262008dca565b5050565b336110071462005af357604051630f22c43960e41b8152611007600482015260240162001133565b62005b606040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ed69050565b1562005c1b576020811462005b925783838383604051630a5a604160e01b81526004016200113394939291906200a4c7565b604080516020601f840181900481028201810190925282815260009162005bd591858580838501838280828437600092019190915250929392505062008f339050565b90506108fc81108062005be9575061271081115b1562005c125784848484604051630a5a604160e01b81526004016200113394939291906200a4c7565b60355562006925565b62005c8c6040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ed69050565b1562005d56576020811462005cbe5783838383604051630a5a604160e01b81526004016200113394939291906200a4c7565b604080516020601f840181900481028201810190925282815260009162005d0191858580838501838280828437600092019190915250929392505062008f339050565b9050683635c9adc5dea0000081108062005d24575069152d02c7e14af680000081115b1562005d4d5784848484604051630a5a604160e01b81526004016200113394939291906200a4c7565b60365562006925565b62005dc9604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ed69050565b1562005e90576020811462005dfb5783838383604051630a5a604160e01b81526004016200113394939291906200a4c7565b604080516020601f840181900481028201810190925282815260009162005e3e91858580838501838280828437600092019190915250929392505062008f339050565b905067016345785d8a000081108062005e5e5750678ac7230489e8000081115b1562005e875784848484604051630a5a604160e01b81526004016200113394939291906200a4c7565b60375562006925565b62005f01604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ed69050565b1562005fb9576020811462005f335783838383604051630a5a604160e01b81526004016200113394939291906200a4c7565b604080516020601f840181900481028201810190925282815260009162005f7691858580838501838280828437600092019190915250929392505062008f339050565b905080158062005f8757506101f481115b1562005fb05784848484604051630a5a604160e01b81526004016200113394939291906200a4c7565b60385562006925565b620060226040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ed69050565b15620060df5760208114620060545783838383604051630a5a604160e01b81526004016200113394939291906200a4c7565b604080516020601f84018190048102820181019092528281526000916200609791858580838501838280828437600092019190915250929392505062008f339050565b90506203f480811080620060ad575062278d0081115b15620060d65784848484604051630a5a604160e01b81526004016200113394939291906200a4c7565b60395562006925565b6200614d60405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ed69050565b15620061fa57602081146200617f5783838383604051630a5a604160e01b81526004016200113394939291906200a4c7565b604080516020601f8401819004810282018101909252828152600091620061c291858580838501838280828437600092019190915250929392505062008f339050565b90506064811115620061f15784848484604051630a5a604160e01b81526004016200113394939291906200a4c7565b603a5562006925565b6200626a60405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ed69050565b156200632b57602081146200629c5783838383604051630a5a604160e01b81526004016200113394939291906200a4c7565b604080516020601f8401819004810282018101909252828152600091620062df91858580838501838280828437600092019190915250929392505062008f339050565b9050674563918244f40000811080620062f95750603c5481115b15620063225784848484604051630a5a604160e01b81526004016200113394939291906200a4c7565b603b5562006925565b620063996040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ed69050565b156200645c5760208114620063cb5783838383604051630a5a604160e01b81526004016200113394939291906200a4c7565b604080516020601f84018190048102820181019092528281526000916200640e91858580838501838280828437600092019190915250929392505062008f339050565b905068056bc75e2d631000008110806200642a5750603b548111155b15620064535784848484604051630a5a604160e01b81526004016200113394939291906200a4c7565b603c5562006925565b620064c96040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ed69050565b15620065865760208114620064fb5783838383604051630a5a604160e01b81526004016200113394939291906200a4c7565b604080516020601f84018190048102820181019092528281526000916200653e91858580838501838280828437600092019190915250929392505062008f339050565b90506202a300811080620065545750603e548110155b156200657d5784848484604051630a5a604160e01b81526004016200113394939291906200a4c7565b603d5562006925565b620065f16040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ed69050565b15620066ae5760208114620066235783838383604051630a5a604160e01b81526004016200113394939291906200a4c7565b604080516020601f84018190048102820181019092528281526000916200666691858580838501838280828437600092019190915250929392505062008f339050565b9050620d2f008110806200667c5750603d548111155b15620066a55784848484604051630a5a604160e01b81526004016200113394939291906200a4c7565b603e5562006925565b620067286040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ed69050565b15620067d457602081146200675a5783838383604051630a5a604160e01b81526004016200113394939291906200a4c7565b604080516020601f84018190048102820181019092528281526000916200679d91858580838501838280828437600092019190915250929392505062008f339050565b905080600003620067cb5784848484604051630a5a604160e01b81526004016200113394939291906200a4c7565b604a5562006925565b620068426040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ed69050565b15620069025760148114620068745783838383604051630a5a604160e01b81526004016200113394939291906200a4c7565b6000620068bc601484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008f339050565b90506001600160a01b038116620068f05784848484604051630a5a604160e01b81526004016200113394939291906200a4c7565b620068fb8162008f38565b5062006925565b838383836040516325ee20d560e21b81526004016200113394939291906200a4c7565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516200695c94939291906200a4c7565b60405180910390a150505050565b60005462010000900460ff16156200699557604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620069c75760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b03811115620069e557620069e5620095b1565b60405190808252806020026020018201604052801562006a0f578160200160208202803683370190505b5090506000805b8381101562006b0d5762006a5887878381811062006a385762006a3862009eb3565b905060200201602081019062006a4f919062009440565b603f9062007ddb565b62006a765760405163056e881160e01b815260040160405180910390fd5b6041600088888481811062006a8f5762006a8f62009eb3565b905060200201602081019062006aa6919062009440565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006ae25762006ae262009eb3565b6001600160a01b039092166020928302919091019091015262006b058162009f18565b905062006a16565b50604051634484077560e01b8152612005906344840775906200288e908590889060040162009ec9565b606080600062006b48603f6200892e565b90508085101562006d0c57831562006b61578362006b63565b805b935060008462006b74878462009e83565b1162006b8c5762006b86868362009e83565b62006b8e565b845b9050806001600160401b0381111562006bab5762006bab620095b1565b60405190808252806020026020018201604052801562006bd5578160200160208202803683370190505b509350806001600160401b0381111562006bf35762006bf3620095b1565b60405190808252806020026020018201604052801562006c1d578160200160208202803683370190505b50925060005b8181101562006d095762006c3c62003a00828962009dc7565b85828151811062006c515762006c5162009eb3565b60200260200101906001600160a01b031690816001600160a01b0316815250506041600086838151811062006c8a5762006c8a62009eb3565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b031684828151811062006cde5762006cde62009eb3565b6001600160a01b039092166020928302919091019091015262006d018162009f18565b905062006c23565b50505b9250925092565b336110011462006d3b57604051630f22c43960e41b8152611001600482015260240162001133565b60005462010000900460ff161562006d6657604051631785c68160e01b815260040160405180910390fd5b6001600160a01b038082166000908152604360205260409020541662006d8e603f8262007ddb565b62006dac5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062006dd4620151804262009da4565b604a546000828152604b60205260409020549192501162006e085760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b6020526040812080546001929062006e2990849062009dc7565b90915550506001600160a01b0384166000908152604460205260409020541580159062006e7e57506001600160a01b038416600090815260446020526040902054429062006e7c90620151809062009dc7565b105b1562006e9d576040516330abb81d60e21b815260040160405180910390fd5b60008062006ead85600062007dfe565b915091508162006ed057604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562006f23573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006f49919062009ddd565b905062006f57858362007e88565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162006f979392919062009e0d565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162005734916001600160a01b0316908a9060040162009d64565b6001600160a01b0380821660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293849384938493909291608084019190620070469062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620070749062009d2e565b8015620070c55780601f106200709957610100808354040283529160200191620070c5565b820191906000526020600020905b815481529060010190602001808311620070a757829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620070f09062009d2e565b80601f01602080910402602001604051908101604052809291908181526020018280546200711e9062009d2e565b80156200716f5780601f1062007143576101008083540402835291602001916200716f565b820191906000526020600020905b8154815290600101906020018083116200715157829003601f168201915b505050505081526020016001820180546200718a9062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620071b89062009d2e565b8015620072095780601f10620071dd5761010080835404028352916020019162007209565b820191906000526020600020905b815481529060010190602001808311620071eb57829003601f168201915b50505050508152602001600282018054620072249062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620072529062009d2e565b8015620072a35780601f106200727757610100808354040283529160200191620072a3565b820191906000526020600020905b8154815290600101906020018083116200728557829003601f168201915b50505050508152602001600382018054620072be9062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620072ec9062009d2e565b80156200733d5780601f1062007311576101008083540402835291602001916200733d565b820191906000526020600020905b8154815290600101906020018083116200731f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620073c95750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200743057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620074625760405163b1d02c3d60e01b815260040160405180910390fd5b3362007470603f8262007ddb565b6200748e5760405163056e881160e01b815260040160405180910390fd5b336000818152604160205260409020600c8101544290620074b490620151809062009dc7565b1115620074d457604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620074e59062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620075139062009d2e565b8015620075645780601f10620075385761010080835404028352916020019162007564565b820191906000526020600020905b8154815290600101906020018083116200754657829003601f168201915b50505082875250859160058401915081906200758190826200a4f2565b50602082015160018201906200759890826200a4f2565b5060408201516002820190620075af90826200a4f2565b5060608201516003820190620075c690826200a4f2565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff16156200763457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620076665760405163b1d02c3d60e01b815260040160405180910390fd5b82811462007687576040516341abc80160e01b815260040160405180910390fd5b60005b83811015620076f857620076e5858583818110620076ac57620076ac62009eb3565b9050602002016020810190620076c3919062009440565b848484818110620076d857620076d862009eb3565b9050602002013562008dca565b620076f08162009f18565b90506200768a565b5050505050565b6001600160a01b03808216600090815260416020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805492938493909160808401916200776a9062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620077989062009d2e565b8015620077e95780601f10620077bd57610100808354040283529160200191620077e9565b820191906000526020600020905b815481529060010190602001808311620077cb57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620078149062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620078429062009d2e565b8015620078935780601f10620078675761010080835404028352916020019162007893565b820191906000526020600020905b8154815290600101906020018083116200787557829003601f168201915b50505050508152602001600182018054620078ae9062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620078dc9062009d2e565b80156200792d5780601f1062007901576101008083540402835291602001916200792d565b820191906000526020600020905b8154815290600101906020018083116200790f57829003601f168201915b50505050508152602001600282018054620079489062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620079769062009d2e565b8015620079c75780601f106200799b57610100808354040283529160200191620079c7565b820191906000526020600020905b815481529060010190602001808311620079a957829003601f168201915b50505050508152602001600382018054620079e29062009d2e565b80601f016020809104026020016040519081016040528092919081815260200182805462007a109062009d2e565b801562007a615780601f1062007a355761010080835404028352916020019162007a61565b820191906000526020600020905b81548152906001019060200180831162007a4357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162007aed5750505091909252505050604001519392505050565b600062007b25603f8462007ddb565b62007b435760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd906024016200509a565b60005462010000900460ff161562007bb257604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007be45760405163b1d02c3d60e01b815260040160405180910390fd5b3362007bf2603f8262007ddb565b62007c105760405163056e881160e01b815260040160405180910390fd5b3362007c20818787878762008ae9565b62007c3e57604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166045878760405162007c5d92919062009d7e565b908152604051908190036020019020546001600160a01b031614158062007ca757506048868660405162007c9392919062009d7e565b9081526040519081900360200190205460ff165b1562007cc6576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c810154429062007cf590620151809062009dc7565b111562007d1557604051631f92cdbd60e11b815260040160405180910390fd5b4260468260040160405162007d2b91906200a5ba565b908152604051908190036020019020556004810162007d4c87898362009fdc565b5042600c820155604051829060459062007d6a908a908a9062009d7e565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062007dca908a908a906200a2ad565b60405180910390a250505050505050565b6001600160a01b03811660009081526001830160205260408120541515620050de565b6000806000848460405160200162007e189291906200a638565b60408051601f1981840301815291815281516020928301206000818152604c9093529120549091504281111562007e585760008093509350505062007e81565b603e5462007e67904262009dc7565b6000928352604c6020526040909220829055506001925090505b9250929050565b8154604051631507fdb760e11b81526001600160a01b03909116600482015261100090632a0ffb6e90602401600060405180830381600087803b15801562007ecf57600080fd5b505af115801562007ee4573d6000803e3d6000fd5b505050506000600162007ef8603f6200892e565b62007f04919062009e83565b604954108015915062007fc25760405163d31f968d60e01b81526110006004820152600860248201526120009063d31f968d90604401602060405180830381865afa15801562007f58573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007f7e919062009e3c565b62007fc25760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b015482111562007fd757600b83018290555b600a83015460ff166200804a57600a8301805460ff19166001908117909155604980546000906200800a90849062009dc7565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b60408051608080820183526000808352602080840182905283850182905260608085018390528551938401865282845283820183905283860183905283018290528451808601865282815281018290528451808601909552855185528581019085015291928290620080c19062008fa4565b90506000805b620080d28362009017565b15620081a557806000036200810757620080f6620080f0846200903d565b620090a1565b6001600160a01b0316845262008192565b8060010362008133576200811f620080f0846200903d565b6001600160a01b0316602085015262008192565b806002036200815f576200814b620080f0846200903d565b6001600160a01b0316604085015262008192565b806003036200818c576200817d62008177846200903d565b620090b9565b60608501526001915062008192565b620081a5565b6200819d8162009f18565b9050620080c7565b5091959194509092505050565b6020808201516001600160a01b031660009081526001909152604081205460ff1680620081ea575060208201516001600160a01b0316155b15620081f857506004919050565b81516200820890603f9062007ddb565b6200821557506002919050565b81516001600160a01b03908116600090815260416020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805492939192608084019190620082819062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620082af9062009d2e565b8015620083005780601f10620082d45761010080835404028352916020019162008300565b820191906000526020600020905b815481529060010190602001808311620082e257829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200832b9062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620083599062009d2e565b8015620083aa5780601f106200837e57610100808354040283529160200191620083aa565b820191906000526020600020905b8154815290600101906020018083116200838c57829003601f168201915b50505050508152602001600182018054620083c59062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620083f39062009d2e565b8015620084445780601f10620084185761010080835404028352916020019162008444565b820191906000526020600020905b8154815290600101906020018083116200842657829003601f168201915b505050505081526020016002820180546200845f9062009d2e565b80601f01602080910402602001604051908101604052809291908181526020018280546200848d9062009d2e565b8015620084de5780601f10620084b257610100808354040283529160200191620084de565b820191906000526020600020905b815481529060010190602001808311620084c057829003601f168201915b50505050508152602001600382018054620084f99062009d2e565b80601f0160208091040260200160405190810160405280929190818152602001828054620085279062009d2e565b8015620085785780601f106200854c5761010080835404028352916020019162008578565b820191906000526020600020905b8154815290600101906020018083116200855a57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620086045750505050508152505090508060e0015180156200864f575082600001516001600160a01b031683602001516001600160a01b031614155b156200865e5750600392915050565b6040808201516060850151602086015192516317066a5760e21b81526001600160a01b03938416600482015260009390921691635c19a95c919060240160206040518083038185885af1158015620086ba573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620086e1919062009ddd565b905083602001516001600160a01b031684600001516001600160a01b03166000805160206200b7b48339815191528387606001516040516200872d929190918252602082015260400190565b60405180910390a383602001516001600160a01b031684600001516001600160a01b03167f607b17598da6bdca05650a2fc08bd2bc8e38c3236806a0fa8e0daabc1d6cb1d883876060015160405162008790929190918252602082015260400190565b60405180910390a360408083015160208601519151633041949b60e01b815261200592633041949b92620087ca9290919060040162009d64565b600060405180830381600087803b158015620087e557600080fd5b505af1158015620087fa573d6000803e3d6000fd5b506000979650505050505050565b6001600160a01b0381166000908152604160205260409020600a81015460ff161562008832575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562008882573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620088a8919062009ddd565b101562005ac757620088ca81603d5442620088c4919062009dc7565b62007e88565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b1580156200891157600080fd5b505af115801562008926573d6000803e3d6000fd5b505050505050565b6000620050e1825490565b6000620050de838362009191565b6000808290506003815110806200895f575060098151115b156200896e5750600092915050565b60418160008151811062008986576200898662009eb3565b016020015160f81c1080620089b85750605a81600081518110620089ae57620089ae62009eb3565b016020015160f81c115b15620089c75750600092915050565b60015b815181101562008adf576030828281518110620089eb57620089eb62009eb3565b016020015160f81c108062008a1c5750603982828151811062008a125762008a1262009eb3565b016020015160f81c115b801562008a6c5750604182828151811062008a3b5762008a3b62009eb3565b016020015160f81c108062008a6c5750605a82828151811062008a625762008a6262009eb3565b016020015160f81c115b801562008abc5750606182828151811062008a8b5762008a8b62009eb3565b016020015160f81c108062008abc5750607a82828151811062008ab25762008ab262009eb3565b016020015160f81c115b1562008acc575060009392505050565b62008ad78162009f18565b9050620089ca565b5060019392505050565b600060308414158062008afd575060608214155b1562008b0c5750600062008c10565b60008686864660405160200162008b2794939291906200a676565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a60405160200162008b819594939291906200a6a3565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa62008bcb57600080fd5b5060008160008151811062008be45762008be462009eb3565b016020015160f81c90506001811462008c065760009550505050505062008c10565b6001955050505050505b95945050505050565b60008061200361dead60405162008c30906200941c565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562008c73573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162008ca79291906200a6db565b6000604051808303818588803b15801562008cc157600080fd5b505af115801562008cd6573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b6000620050de836001600160a01b038416620091be565b600054610100900460ff1662008d9e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162001133565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b8162008dd8603f8262007ddb565b62008df65760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562008e5a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008e80919062009ddd565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838360405162008ec891815260200190565b60405180910390a350505050565b60008160405160200162008eeb91906200a48a565b604051602081830303815290604052805190602001208360405160200162008f1491906200a48a565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b604080516080810182526000918101828152606082018390528152602081019190915262008fd28262009210565b62008fdc57600080fd5b600062008fed836020015162009243565b836020015162008ffe919062009dc7565b6040805180820190915293845260208401525090919050565b805180516020820151600092916200902f9162009dc7565b836020015110915050919050565b60408051808201909152600080825260208201526200905c8262009017565b6200906657600080fd5b602082015160006200907882620092d2565b905062009086818362009dc7565b60209485015260408051808201909152908152928301525090565b8051600090601514620090b357600080fd5b620050e1825b805160009015801590620090cf57508151602110155b620090d957600080fd5b6000620090ea836020015162009243565b90508083600001511015620091425760405162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015260640162001133565b82516000906200915490839062009e83565b90506000808386602001516200916b919062009dc7565b90508051915060208310156200918857826020036101000a820491505b50949350505050565b6000826000018281548110620091ab57620091ab62009eb3565b9060005260206000200154905092915050565b60008181526001830160205260408120546200920757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620050e1565b506000620050e1565b805160009081036200922457506000919050565b6020820151805160001a9060c082101562008adf575060009392505050565b8051600090811a60808110156200925d5750600092915050565b60b88110806200927a575060c081108015906200927a575060f881105b15620092895750600192915050565b60c0811015620092c457620092a1600160b86200a701565b620092b09060ff168262009e83565b620092bd90600162009dc7565b9392505050565b620092a1600160f86200a701565b80516000908190811a6080811015620092ef576001915062009415565b60b88110156200931b576200930660808262009e83565b6200931390600162009dc7565b915062009415565b60c08110156200939457600060b78203600186019550806020036101000a8651049150600181018201935050808310156200938d5760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162001133565b5062009415565b60f8811015620093ab576200930660c08262009e83565b600060f78203600186019550806020036101000a865104915060018101820193505080831015620094135760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162001133565b505b5092915050565b610e96806200a71e83390190565b6001600160a01b03811681146200174b57600080fd5b6000602082840312156200945357600080fd5b8135620092bd816200942a565b60008083601f8401126200947357600080fd5b5081356001600160401b038111156200948b57600080fd5b60208301915083602082850101111562007e8157600080fd5b60008060208385031215620094b857600080fd5b82356001600160401b03811115620094cf57600080fd5b620094dd8582860162009460565b90969095509350505050565b600080600060408486031215620094ff57600080fd5b833560ff811681146200951157600080fd5b925060208401356001600160401b038111156200952d57600080fd5b6200953b8682870162009460565b9497909650939450505050565b60005b83811015620095655781810151838201526020016200954b565b50506000910152565b600081518084526200958881602086016020860162009548565b601f01601f19169290920160200192915050565b602081526000620050de60208301846200956e565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620095ec57620095ec620095b1565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200961d576200961d620095b1565b604052919050565b60006001600160401b03821115620096415762009641620095b1565b50601f01601f191660200190565b600062009666620096608462009625565b620095f2565b90508281528383830111156200967b57600080fd5b828260208301376000602084830101529392505050565b600060208284031215620096a557600080fd5b81356001600160401b03811115620096bc57600080fd5b8201601f81018413620096ce57600080fd5b620096df848235602084016200964f565b949350505050565b60008060408385031215620096fb57600080fd5b823562009708816200942a565b946020939093013593505050565b80151581146200174b57600080fd5b600080600080608085870312156200973c57600080fd5b843562009749816200942a565b935060208501356200975b816200942a565b9250604085013591506060850135620097748162009716565b939692955090935050565b6001600160401b03811681146200174b57600080fd5b600060208284031215620097a857600080fd5b8135620092bd816200977f565b60008060408385031215620097c957600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b83811015620098135781516001600160a01b031687529582019590820190600101620097ec565b509495945050505050565b608081526000620098336080830187620097d8565b82810360208481019190915286518083528782019282019060005b818110156200986c578451835293830193918301916001016200984e565b5050848103604086015286518082528282019350600581901b8201830183890160005b83811015620098c157601f19858403018752620098ae8383516200956e565b968601969250908501906001016200988f565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e0811215620098f757600080fd5b883562009904816200942a565b975060208901356001600160401b03808211156200992157600080fd5b6200992f8c838d0162009460565b909950975060408b01359150808211156200994957600080fd5b620099578c838d0162009460565b90975095508591506060605f19840112156200997257600080fd5b60608b01945060c08b01359250808311156200998d57600080fd5b505088016080818b031215620099a257600080fd5b8091505092959891949750929550565b60008060408385031215620099c657600080fd5b8235620099d3816200942a565b91506020830135620099e58162009716565b809150509250929050565b60208152600082516080602084015262009a0e60a08401826200956e565b90506020840151601f198085840301604086015262009a2e83836200956e565b9250604086015191508085840301606086015262009a4d83836200956e565b925060608601519150808584030160808601525062008c1082826200956e565b6000806000806040858703121562009a8457600080fd5b84356001600160401b038082111562009a9c57600080fd5b62009aaa8883890162009460565b9096509450602087013591508082111562009ac457600080fd5b5062009ad38782880162009460565b95989497509550505050565b60008083601f84011262009af257600080fd5b5081356001600160401b0381111562009b0a57600080fd5b6020830191508360208260051b850101111562007e8157600080fd5b60008060006040848603121562009b3c57600080fd5b83356001600160401b0381111562009b5357600080fd5b62009b618682870162009adf565b909450925050602084013562009b77816200942a565b809150509250925092565b60608152600062009b976060830186620097d8565b828103602084015262009bab8186620097d8565b915050826040830152949350505050565b600082601f83011262009bce57600080fd5b620050de838335602085016200964f565b60006020828403121562009bf257600080fd5b81356001600160401b038082111562009c0a57600080fd5b908301906080828603121562009c1f57600080fd5b62009c29620095c7565b82358281111562009c3957600080fd5b62009c478782860162009bbc565b82525060208301358281111562009c5d57600080fd5b62009c6b8782860162009bbc565b60208301525060408301358281111562009c8457600080fd5b62009c928782860162009bbc565b60408301525060608301358281111562009cab57600080fd5b62009cb98782860162009bbc565b60608301525095945050505050565b6000806000806040858703121562009cdf57600080fd5b84356001600160401b038082111562009cf757600080fd5b62009d058883890162009adf565b9096509450602087013591508082111562009d1f57600080fd5b5062009ad38782880162009adf565b600181811c9082168062009d4357607f821691505b6020821081036200462457634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008262009dc257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620050e157620050e162009d8e565b60006020828403121562009df057600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b83815260208101839052606081016003831062009e2e5762009e2e62009df7565b826040830152949350505050565b60006020828403121562009e4f57600080fd5b8151620092bd8162009716565b828152604081016005831062009e765762009e7662009df7565b8260208301529392505050565b81810381811115620050e157620050e162009d8e565b8082028115828204841417620050e157620050e162009d8e565b634e487b7160e01b600052603260045260246000fd5b60408152600062009ede6040830185620097d8565b905060018060a01b03831660208301529392505050565b6001600160401b0382811682821603908082111562009415576200941562009d8e565b60006001820162009f2d5762009f2d62009d8e565b5060010190565b6000808335601e1984360301811262009f4c57600080fd5b8301803591506001600160401b0382111562009f6757600080fd5b60200191503681900382131562007e8157600080fd5b601f8211156200804a57600081815260208120601f850160051c8101602086101562009fa65750805b601f850160051c820191505b81811015620089265782815560010162009fb2565b600019600383901b1c191660019190911b1790565b6001600160401b0383111562009ff65762009ff6620095b1565b6200a00e836200a007835462009d2e565b8362009f7d565b6000601f8411600181146200a04157600085156200a02c5750838201355b6200a038868262009fc7565b845550620076f8565b600083815260209020601f19861690835b828110156200a07457868501358255602094850194600190920191016200a052565b50868210156200a0925760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6200a0b0828362009f34565b6001600160401b038111156200a0ca576200a0ca620095b1565b6200a0e2816200a0db855462009d2e565b8562009f7d565b6000601f8211600181146200a11557600083156200a1005750838201355b6200a10c848262009fc7565b8655506200a172565b600085815260209020601f19841690835b828110156200a14857868501358255602094850194600190920191016200a126565b50848210156200a1665760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506200a185602083018362009f34565b6200a19581836001860162009fdc565b50506200a1a6604083018362009f34565b6200a1b681836002860162009fdc565b50506200a1c7606083018362009f34565b6200a1d781836003860162009fdc565b50505050565b81356200a1ea816200977f565b6001600160401b03811690508154816001600160401b0319821617835560208401356200a217816200977f565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff198316841781178555908501356200a257816200977f565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000620096df6020830184866200a284565b60006001600160401b038211156200a2df576200a2df620095b1565b5060051b60200190565b600060208083850312156200a2fd57600080fd5b82516001600160401b038111156200a31457600080fd5b8301601f810185136200a32657600080fd5b80516200a33762009660826200a2c3565b81815260059190911b820183019083810190878311156200a35757600080fd5b928401925b828410156200a3825783516200a372816200942a565b825292840192908401906200a35c565b979650505050505050565b600060208083850312156200a3a157600080fd5b82516001600160401b03808211156200a3b957600080fd5b818501915085601f8301126200a3ce57600080fd5b81516200a3df62009660826200a2c3565b81815260059190911b830184019084810190888311156200a3ff57600080fd5b8585015b838110156200a47d578051858111156200a41d5760008081fd5b8601603f81018b136200a4305760008081fd5b8781015160406200a445620096608362009625565b8281528d828486010111156200a45b5760008081fd5b6200a46c838c830184870162009548565b86525050509186019186016200a403565b5098975050505050505050565b600082516200a49e81846020870162009548565b9190910192915050565b60ff8416815260406020820152600062008c106040830184866200a284565b6040815260006200a4dd6040830186886200a284565b82810360208401526200a3828185876200a284565b81516001600160401b038111156200a50e576200a50e620095b1565b6200a526816200a51f845462009d2e565b8462009f7d565b602080601f8311600181146200a55a57600084156200a5455750858301515b6200a551858262009fc7565b86555062008926565b600085815260208120601f198616915b828110156200a58b578886015182559484019460019091019084016200a56a565b50858210156200a5aa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200a5ca8162009d2e565b600182811680156200a5e557600181146200a5fb576200a62c565b60ff19841687528215158302870194506200a62c565b8760005260208060002060005b858110156200a6235781548a8201529084019082016200a608565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b1681526000600383106200a662576200a66262009df7565b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b600086516200a6b7818460208b0162009548565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b0383168152604060208201819052600090620096df908301846200956e565b60ff8281168282160390811115620050e157620050e162009d8e56fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000001284214b9b9c85549ab3d2b972df0deef66ac2c9000000000000000000000000a2959d3f95eae5dc7d70144ce1b73b403b7eb6e0000000000000000000000000980a75ecd1309ea12fa2ed87a8744fbfc9b863d5000000000000000000000000b71b214cb885500844365e95cd9942c7276e7fd800000000000000000000000035552c16704d214347f29fa77f77da6d75d7c752000000000000000000000000f474cf03cceff28abc65c9cbae594f725c80e12d00000000000000000000000096c5d20b2a975c050e4220be276ace4892f4b41a00000000000000000000000047788386d0ed6c748e03a53160b4b30ed3748cc5000000000000000000000000bdfbc016c1bd481f5d8ca6f754f4b200a7ed66ce000000000000000000000000372e4887005ec21a5aff9ff62eda9e7713e3643700000000000000000000000055c968cf3430f3ba0534ef49ff4b3fbc9086c7ce000000000000000000000000136bd6343049c9690569db79dcd9208a57d342ad000000000000000000000000977ecef7de795cd248d77fd0d080ce3a35dec013000000000000000000000000b334ced91dff560bc9b5b3c30ae613bf335f181324d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e040000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000308e82934ca974fdcd97f3309de967d3c9c43fa711a8d673af5d75465844bf8969c8d1948d903748ac7b8b1720fa64e50c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b973c2d38487e58fd6e145491b110080fb14ac915a0411fc78f19e09a399ddee0d20c63a75d8f930f1694544ad2dc01b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003089037a9ace3b590165ea1c0c5ac72bf600b7c88c1e435f41932c1132aae1bfa0bb68e46b96ccb12c3415e4d82af717d8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a2750ec6dded3dcdc2f351782310b0eadc077db59abca0f0cd26776e2e7acb9f3bce40b1fa5221fd1561226c6263cc5f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b742ad4855bae330426b823e742da31f816cc83bc16d69a9134be0cfb4a1d17ec34f1b5b32d5c20440b8536b1e88f0f200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003096c9b86c3400e529bfe184056e257c07940bb664636f689e8d2027c834681f8f878b73445261034e946bb2d901b4b87800000000000000000000000000000000a164736f6c6343000811000a", + }, + }, + } + + feynmanFixUpgrade[rialtoNet] = &Upgrade{ + UpgradeName: "feynman", + Configs: []*UpgradeConfig{}, + } } func UpgradeBuildInSystemContract(config *params.ChainConfig, blockNumber *big.Int, lastBlockTime uint64, blockTime uint64, statedb *state.StateDB) { @@ -736,6 +755,10 @@ func UpgradeBuildInSystemContract(config *params.ChainConfig, blockNumber *big.I applySystemContractUpgrade(feynmanUpgrade[network], blockNumber, statedb, logger) } + if config.IsOnFeynmanFix(blockNumber, lastBlockTime, blockTime) { + applySystemContractUpgrade(feynmanFixUpgrade[network], blockNumber, statedb, logger) + } + /* apply other upgrades */ diff --git a/eth/backend.go b/eth/backend.go index 64e5c8878..634e864d3 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -193,6 +193,10 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { chainConfig.FeynmanTime = config.OverrideFeynman overrides.OverrideFeynman = config.OverrideFeynman } + if config.OverrideFeynmanFix != nil { + chainConfig.FeynmanFixTime = config.OverrideFeynmanFix + overrides.OverrideFeynmanFix = config.OverrideFeynmanFix + } eth := &Ethereum{ config: config, diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index 142d99aa3..457801b13 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -200,6 +200,9 @@ type Config struct { // OverrideFeynman (TODO: remove after the fork) OverrideFeynman *uint64 `toml:",omitempty"` + + // OverrideFeynmanFix (TODO: remove after the fork) + OverrideFeynmanFix *uint64 `toml:",omitempty"` } // CreateConsensusEngine creates a consensus engine for the given chain config. diff --git a/params/config.go b/params/config.go index d7ae17986..8bb23464e 100644 --- a/params/config.go +++ b/params/config.go @@ -188,6 +188,9 @@ var ( KeplerTime: newUint64(1702972800), FeynmanTime: newUint64(1710136800), + // TODO + FeynmanFixTime: nil, + Parlia: &ParliaConfig{ Period: 3, Epoch: 200, @@ -224,6 +227,7 @@ var ( ShanghaiTime: newUint64(0), KeplerTime: newUint64(0), FeynmanTime: newUint64(0), + FeynmanFixTime: newUint64(0), Parlia: &ParliaConfig{ Period: 3, @@ -459,12 +463,13 @@ type ChainConfig struct { // Fork scheduling was switched from blocks to timestamps here - ShanghaiTime *uint64 `json:"shanghaiTime,omitempty"` // Shanghai switch time (nil = no fork, 0 = already on shanghai) - KeplerTime *uint64 `json:"keplerTime,omitempty"` // Kepler switch time (nil = no fork, 0 = already activated) - FeynmanTime *uint64 `json:"feynmanTime,omitempty"` // Feynman switch time (nil = no fork, 0 = already activated) - CancunTime *uint64 `json:"cancunTime,omitempty"` // Cancun switch time (nil = no fork, 0 = already on cancun) - PragueTime *uint64 `json:"pragueTime,omitempty"` // Prague switch time (nil = no fork, 0 = already on prague) - VerkleTime *uint64 `json:"verkleTime,omitempty"` // Verkle switch time (nil = no fork, 0 = already on verkle) + ShanghaiTime *uint64 `json:"shanghaiTime,omitempty"` // Shanghai switch time (nil = no fork, 0 = already on shanghai) + KeplerTime *uint64 `json:"keplerTime,omitempty"` // Kepler switch time (nil = no fork, 0 = already activated) + FeynmanTime *uint64 `json:"feynmanTime,omitempty"` // Feynman switch time (nil = no fork, 0 = already activated) + FeynmanFixTime *uint64 `json:"feynmanFixTime,omitempty"` // Feynman switch time (nil = no fork, 0 = already activated) + CancunTime *uint64 `json:"cancunTime,omitempty"` // Cancun switch time (nil = no fork, 0 = already on cancun) + PragueTime *uint64 `json:"pragueTime,omitempty"` // Prague switch time (nil = no fork, 0 = already on prague) + VerkleTime *uint64 `json:"verkleTime,omitempty"` // Verkle switch time (nil = no fork, 0 = already on verkle) // TerminalTotalDifficulty is the amount of total difficulty reached by // the network that triggers the consensus upgrade. @@ -559,7 +564,12 @@ func (c *ChainConfig) String() string { FeynmanTime = big.NewInt(0).SetUint64(*c.FeynmanTime) } - return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Ramanujan: %v, Niels: %v, MirrorSync: %v, Bruno: %v, Berlin: %v, YOLO v3: %v, CatalystBlock: %v, London: %v, ArrowGlacier: %v, MergeFork:%v, Euler: %v, Gibbs: %v, Nano: %v, Moran: %v, Planck: %v,Luban: %v, Plato: %v, Hertz: %v, Hertzfix: %v, ShanghaiTime: %v, KeplerTime: %v, FeynmanTime: %v, Engine: %v}", + var FeynmanFixTime *big.Int + if c.FeynmanFixTime != nil { + FeynmanFixTime = big.NewInt(0).SetUint64(*c.FeynmanFixTime) + } + + return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Ramanujan: %v, Niels: %v, MirrorSync: %v, Bruno: %v, Berlin: %v, YOLO v3: %v, CatalystBlock: %v, London: %v, ArrowGlacier: %v, MergeFork:%v, Euler: %v, Gibbs: %v, Nano: %v, Moran: %v, Planck: %v,Luban: %v, Plato: %v, Hertz: %v, Hertzfix: %v, ShanghaiTime: %v, KeplerTime: %v, FeynmanTime: %v, FeynmanFixTime: %v, Engine: %v}", c.ChainID, c.HomesteadBlock, c.DAOForkBlock, @@ -594,6 +604,7 @@ func (c *ChainConfig) String() string { ShanghaiTime, KeplerTime, FeynmanTime, + FeynmanFixTime, engine, ) } @@ -842,6 +853,20 @@ func (c *ChainConfig) IsOnFeynman(currentBlockNumber *big.Int, lastBlockTime uin return !c.IsFeynman(lastBlockNumber, lastBlockTime) && c.IsFeynman(currentBlockNumber, currentBlockTime) } +// IsFeynmanFix returns whether time is either equal to the FeynmanFix fork time or greater. +func (c *ChainConfig) IsFeynmanFix(num *big.Int, time uint64) bool { + return c.IsLondon(num) && isTimestampForked(c.FeynmanFixTime, time) +} + +// IsOnFeynmanFix returns whether currentBlockTime is either equal to the FeynmanFix fork time or greater firstly. +func (c *ChainConfig) IsOnFeynmanFix(currentBlockNumber *big.Int, lastBlockTime uint64, currentBlockTime uint64) bool { + lastBlockNumber := new(big.Int) + if currentBlockNumber.Cmp(big.NewInt(1)) >= 0 { + lastBlockNumber.Sub(currentBlockNumber, big.NewInt(1)) + } + return !c.IsFeynman(lastBlockNumber, lastBlockTime) && c.IsFeynman(currentBlockNumber, currentBlockTime) +} + // IsCancun returns whether num is either equal to the Cancun fork time or greater. func (c *ChainConfig) IsCancun(num *big.Int, time uint64) bool { return c.IsLondon(num) && isTimestampForked(c.CancunTime, time) @@ -908,6 +933,7 @@ func (c *ChainConfig) CheckConfigForkOrder() error { {name: "hertzfixBlock", block: c.HertzfixBlock}, {name: "keplerTime", timestamp: c.KeplerTime}, {name: "feynmanTime", timestamp: c.FeynmanTime}, + {name: "feynmanFixTime", timestamp: c.FeynmanFixTime}, {name: "cancunTime", timestamp: c.CancunTime, optional: true}, {name: "pragueTime", timestamp: c.PragueTime, optional: true}, {name: "verkleTime", timestamp: c.VerkleTime, optional: true}, @@ -1050,6 +1076,9 @@ func (c *ChainConfig) checkCompatible(newcfg *ChainConfig, headNumber *big.Int, if isForkTimestampIncompatible(c.FeynmanTime, newcfg.FeynmanTime, headTimestamp) { return newTimestampCompatError("Feynman fork timestamp", c.FeynmanTime, newcfg.FeynmanTime) } + if isForkTimestampIncompatible(c.FeynmanFixTime, newcfg.FeynmanFixTime, headTimestamp) { + return newTimestampCompatError("FeynmanFix fork timestamp", c.FeynmanFixTime, newcfg.FeynmanFixTime) + } if isForkTimestampIncompatible(c.CancunTime, newcfg.CancunTime, headTimestamp) { return newTimestampCompatError("Cancun fork timestamp", c.CancunTime, newcfg.CancunTime) }