0 txs
23 calls
constructor
No constructor.
functions
_allowedToken
viewfunction _allowedToken(address) view returns (bool)
_withdraw
viewfunction _withdraw(bytes32) view returns (address token, address beneficiary, uint256 amount, uint256 block_time, uint256 postchain_height, uint8 status)
isBlockchainRidFinalized
viewfunction isBlockchainRidFinalized() view returns (bool)
isMassExit
viewfunction isMassExit() view returns (bool)
massExitBlock
viewfunction massExitBlock() view returns (uint256 height, bytes32 blockRid, bytes32 extraDataHashedLeaf)
networkId
viewfunction networkId() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingOwner
viewfunction pendingOwner() view returns (address)
renounceOwnership
viewfunction renounceOwnership() view
validator
viewfunction validator() view returns (address)
version
viewfunction version() view returns (uint8)
withdrawTimeOffset
viewfunction withdrawTimeOffset() view returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
allowToken
nonpayablefunction allowToken(address token)
deposit
nonpayablefunction deposit(address token, uint256 amount) returns (bool)
depositToAccountID
nonpayablefunction depositToAccountID(address token, uint256 amount, bytes32 accountID) returns (bool)
finalizeBlockchainRid
nonpayablefunction finalizeBlockchainRid()
fund
nonpayablefunction fund(address token, uint256 amount) returns (bool)
initialize
nonpayablefunction initialize(address _validator, uint256 _withdrawTimeOffset)
linkAccountID
nonpayablefunction linkAccountID(bytes32 accountID)
pause
nonpayablefunction pause()
pendingWithdraw
nonpayablefunction pendingWithdraw(bytes32 _hash)
setBlockchainRid
nonpayablefunction setBlockchainRid(bytes32 rid)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
unpendingWithdraw
nonpayablefunction unpendingWithdraw(bytes32 _hash)
withdraw
nonpayablefunction withdraw(bytes32 _hash, address beneficiary)
withdrawRequest
nonpayablefunction withdrawRequest(bytes _event, tuple eventProof, bytes blockHeader, bytes[] sigs, address[] signers, tuple extraProof)
withdrawToPostchain
nonpayablefunction withdrawToPostchain(bytes32 _hash)
events
AllowToken
event AllowToken(address indexed token)
BlockchainRidFinalized
event BlockchainRidFinalized(bytes32 rid)
DepositedERC20
event DepositedERC20(address indexed sender, address indexed token, uint256 amount, bytes32 accountID)
FundedERC20
event FundedERC20(address indexed sender, address indexed token, uint256 amount)
Initialize
event Initialize(address indexed _validator, uint256 _withdrawTimeOffset, uint8 version)
Initialized
event Initialized(uint64 version)
LinkAccountID
event LinkAccountID(address indexed sender, bytes32 accountID, bool isContract)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PendingWithdraw
event PendingWithdraw(bytes32 indexed hash)
SetBlockchainRid
event SetBlockchainRid(bytes32 rid)
TriggerMassExit
event TriggerMassExit(uint256 indexed height, bytes32 indexed blockRid)
Unpaused
event Unpaused(address account)
UnpendingWithdraw
event UnpendingWithdraw(bytes32 indexed hash)
Withdrawal
event Withdrawal(address indexed beneficiary, address indexed token, uint256 value)
WithdrawalHash
event WithdrawalHash(bytes32 indexed hash)
WithdrawalToPostchain
event WithdrawalToPostchain(bytes32 indexed hash)
WithdrawRequest
event WithdrawRequest(address indexed beneficiary, address indexed token, uint256 value, uint256 height, bytes32 blockRid)
WithdrawRequestHash
event WithdrawRequestHash(bytes32 indexed hash)
errors
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x608060405234801561001057600080fd5b506137ea806100206000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063715018a611610104578063b53472ef116100a2578063e30c397811610071578063e30c397814610441578063e7547ae214610449578063f2fde38b1461045c578063f3a551981461046f57600080fd5b8063b53472ef146103db578063cbda1234146103ee578063cd6dc68714610401578063ce64b5671461041457600080fd5b80638456cb59116100de5780638456cb5914610391578063860020c3146103995780638da5cb5b146103bc5780639025e64c146103c457600080fd5b8063715018a61461036e57806379ba5097146103765780637b1837de1461037e57600080fd5b806347e7ef241161017c5780635c975abb1161014b5780635c975abb146102c957806360657b21146102e1578063633e016014610348578063709d2d2b1461035b57600080fd5b806347e7ef241461027c57806354cfffa71461028f57806354fd4d50146102975780635ac451ad146102b657600080fd5b80633399bf43116101b85780633399bf431461021a5780633a5381b51461023c5780633eec8cac146102675780633f4ba83a1461027457600080fd5b80631b258d50146101df5780632e350fa2146101f4578063316a260e14610207575b600080fd5b6101f26101ed366004612bec565b610478565b005b6101f2610202366004612c1c565b61060b565b6101f2610215366004612c1c565b610702565b6004546102279060ff1681565b60405190151581526020015b60405180910390f35b60025461024f906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b600a546102279060ff1681565b6101f2610742565b61022761028a366004612c35565b610754565b6101f2610878565b600c546102a49060ff1681565b60405160ff9091168152602001610233565b6102276102c4366004612c61565b61095d565b6000805160206137758339815191525460ff16610227565b6103366102ef366004612c1c565b60016020819052600091825260409091208054918101546002820154600383015460048401546005909401546001600160a01b039586169590931693919290919060ff1686565b60405161023396959493929190612cac565b6101f2610356366004612c1c565b610aea565b6101f2610369366004612c1c565b610bf4565b6101f2610d4a565b6101f2610db1565b61022761038c366004612c35565b610df6565b6101f2610e8a565b6102276103a7366004612d08565b60006020819052908152604090205460ff1681565b61024f610f5a565b6103cd60035481565b604051908152602001610233565b6101f26103e9366004612d08565b610f8f565b6101f26103fc366004612c1c565b611047565b6101f261040f366004612c35565b611146565b60055460065460075461042692919083565b60408051938452602084019290925290820152606001610233565b61024f61134d565b6101f261045736600461308d565b611376565b6101f261046a366004612d08565b61140e565b6103cd60085481565b60045460ff16156104a45760405162461bcd60e51b815260040161049b90613182565b60405180910390fd5b6104ac611493565b6104b46114c4565b6000828152600160208190526040909120908101546001600160a01b038381169116146104f35760405162461bcd60e51b815260040161049b906131d5565b42816003015411156105175760405162461bcd60e51b815260040161049b9061321d565b6002600582015460ff16600481111561053257610532612c96565b1461054f5760405162461bcd60e51b815260040161049b90613270565b60058101805460ff191660031790556002810180546000909155815461057f906001600160a01b031684836114fc565b81546040518281526001600160a01b03918216918516907f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63989060200160405180910390a360405184907f38f76c86a704f7c0a875692bf96dbea94008143cce9d2cd7e03784351848d69890600090a25050610607600160008051602061379583398151915255565b5050565b610613611529565b806106305760405162461bcd60e51b815260040161049b906132c3565b600081815260016020819052604090912090600582015460ff16600481111561065b5761065b612c96565b146106c45760405162461bcd60e51b815260206004820152603360248201527f546f6b656e4272696467653a207769746864726177207265717565737420737460448201527261747573206973206e6f742070656e64696e6760681b606482015260840161049b565b60058101805460ff1916600217905560405182907f6ca1738604f788a8d98ee8e1ff159b3ed09bc6bfd738461a42adc29cba75d0d390600090a25050565b6040805182815233803b15156020830152825190927f106fd3887c16f41690c587ca2a7aada4f2ca4bed527dcff672ac2fe4cccdb225928290030190a250565b61074a611529565b61075261155b565b565b6001600160a01b038216600090815260208190526040812054839060ff1661078e5760405162461bcd60e51b815260040161049b90613305565b610796611493565b60045460ff16156107b95760405162461bcd60e51b815260040161049b90613182565b333b1561081d5760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e4272696467653a206f6e6c7920454f412063616e2063616c6c207460448201526b3434b990333ab731ba34b7b760a11b606482015260840161049b565b61082784846115b5565b60408051848152600060208201526001600160a01b0386169133917fe8a89c6eaacfabbb12d24600aee8b6a71f28a4ccdf9b470f25fe2e6ae40c9e6591015b60405180910390a35060019392505050565b610880611529565b600a5460ff16156108f25760405162461bcd60e51b815260206004820152603660248201527f546f6b656e4272696467653a20626c6f636b636861696e2072696420686173206044820152751899595b88185b1c9958591e48199a5b985b1a5e995960521b606482015260840161049b565b6009546109115760405162461bcd60e51b815260040161049b9061333c565b600a805460ff191660011790556009546040517ffbb4e61580690d9ceee63edf1966efdcc4f1c2134ee74c8d908af20cceec8dd8916109539190815260200190565b60405180910390a1565b6001600160a01b038316600090815260208190526040812054849060ff166109975760405162461bcd60e51b815260040161049b90613305565b61099f611493565b60045460ff16156109c25760405162461bcd60e51b815260040161049b90613182565b333b610a2a5760405162461bcd60e51b815260206004820152603160248201527f546f6b656e4272696467653a206f6e6c7920636f6e74726163742063616e206360448201527030b636103a3434b990333ab731ba34b7b760791b606482015260840161049b565b82610a8f5760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4272696467653a20696e76616c6964206163636f756e7449442c2060448201526e31b0b73737ba103132903d32b9379760891b606482015260840161049b565b610a9985856115b5565b60408051858152602081018590526001600160a01b0387169133917fe8a89c6eaacfabbb12d24600aee8b6a71f28a4ccdf9b470f25fe2e6ae40c9e65910160405180910390a3506001949350505050565b610af2611529565b600a5460ff1615610b5c5760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4272696467653a20626c6f636b636861696e20726964206861732060448201526d1899595b88199a5b985b1a5e995960921b606482015260840161049b565b80610bb85760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4272696467653a20626c6f636b636861696e2072696420697320696044820152651b9d985b1a5960d21b606482015260840161049b565b60098190556040518181527fc4597ce7b4ac4379ee010b7c4818ac208506ea6f6170d4ed5f6421246ca5ff80906020015b60405180910390a150565b610bfc611493565b610c046114c4565b6000818152600160208190526040909120908101546001600160a01b03163314610c405760405162461bcd60e51b815260040161049b906131d5565b4281600301541115610c645760405162461bcd60e51b815260040161049b9061321d565b6002600582015460ff166004811115610c7f57610c7f612c96565b14610c9c5760405162461bcd60e51b815260040161049b90613270565b60058101805460ff19166004179055600281018054600091829055825460408051838152602081019490945291926001600160a01b039091169133917fe8a89c6eaacfabbb12d24600aee8b6a71f28a4ccdf9b470f25fe2e6ae40c9e65910160405180910390a360405183907f70f4ca61be1f1dda54071a142b4a25776fbb89dcfd77222b877519ed19912c4390600090a25050610d47600160008051602061379583398151915255565b50565b610d52611529565b60405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4272696467653a2072656e6f756e6365206f776e6572736869702060448201526d1a5cc81b9bdd08185b1b1bddd95960921b606482015260840161049b565b3380610dbb61134d565b6001600160a01b031614610ded5760405163118cdaa760e01b81526001600160a01b038216600482015260240161049b565b610d47816115ca565b6001600160a01b038216600090815260208190526040812054839060ff16610e305760405162461bcd60e51b815260040161049b90613305565b610e38611529565b610e4d6001600160a01b038516333086611602565b6040518381526001600160a01b0385169033907fe06b5ce8ac66d75c92d1fd592fea09f2b48fe3bc831994b5e41601fb11edbfd590602001610866565b60025460405163facd743b60e01b81523360048201526001600160a01b039091169063facd743b90602401602060405180830381865afa158015610ed2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef69190613382565b610f525760405162461bcd60e51b815260206004820152602760248201527f546f6b656e4272696467653a2073656e646572206973206e6f7420612076616c60448201526634b230ba37b91760c91b606482015260840161049b565b61075261166f565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b610f97611529565b6001600160a01b038116610ffb5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e4272696467653a20746f6b656e206164647265737320697320696e6044820152641d985b1a5960da1b606482015260840161049b565b6001600160a01b038116600081815260208190526040808220805460ff19166001179055517f14009112f2dcb15cad32dab6bf972d6d85286e4ae1178f27323ffe25359459e69190a250565b61104f611529565b8061106c5760405162461bcd60e51b815260040161049b906132c3565b60008181526001602052604090206002600582015460ff16600481111561109557611095612c96565b146111085760405162461bcd60e51b815260206004820152603860248201527f546f6b656e4272696467653a207769746864726177207265717565737420737460448201527f61747573206973206e6f7420776974686472617761626c650000000000000000606482015260840161049b565b60058101805460ff1916600117905560405182907f3b613bb6dd346209a4b09e0aed281283ca3b1072f096f58b22227abad9b2b1cc90600090a25050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff1660008115801561118c5750825b905060008267ffffffffffffffff1660011480156111a95750303b155b9050811580156111b7575080155b156111d55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156111ff57845460ff60401b1916600160401b1785555b6001600160a01b0387166112675760405162461bcd60e51b815260206004820152602960248201527f546f6b656e4272696467653a2076616c696461746f72206164647265737320696044820152681cc81a5b9d985b1a5960ba1b606482015260840161049b565b611270336116b8565b6112786116c9565b6112806116d9565b466003818155600280546001600160a01b0319166001600160a01b038b169081179091556008899055600a805460ff19908116909155600c805490911683179055604080518a8152602081019390935290917feba794884df1d5b931f490d50b080cf05530c032595ab1f37bb75acf325583a6910160405180910390a250831561134457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00610f7f565b60045460ff16156113995760405162461bcd60e51b815260040161049b90613182565b6113a1611493565b6113a96114c4565b6000806113b987878787876116e9565b915091506113cd876000015189848461197e565b87516000908152600b60205260409020805460ff1916911515919091179055506114069050600160008051602061379583398151915255565b505050505050565b611416611529565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b038316908117825561145a610f5a565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b6000805160206137758339815191525460ff16156107525760405163d93c066560e01b815260040160405180910390fd5b6000805160206137958339815191528054600119016114f657604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6115106001600160a01b0384168383611bd6565b505050565b600160008051602061379583398151915255565b33611532610f5a565b6001600160a01b0316146107525760405163118cdaa760e01b815233600482015260240161049b565b611563611c07565b600080516020613775833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b039091168152602001610be9565b6106076001600160a01b038316333084611602565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b031916815561060782611c37565b6040516001600160a01b0384811660248301528381166044830152606482018390526116699186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611ca8565b50505050565b611677611493565b600080516020613775833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361159d565b6116c0611d19565b610d4781611d62565b6116d1611d19565b610752611d94565b6116e1611d19565b610752611db5565b600954600090819061170d5760405162461bcd60e51b815260040161049b9061333c565b86516000908152600b602052604090205460ff161561177f5760405162461bcd60e51b815260206004820152602860248201527f546f6b656e4272696467653a206576656e7420686173682077617320616c726560448201526718591e481d5cd95960c21b606482015260840161049b565b6020830151835161178f90611dbd565b146117e65760405162461bcd60e51b815260206004820152602160248201527f506f7374636861696e3a20696e76616c696420454946206578747261206461746044820152606160f81b606482015260840161049b565b60008061181a60095489877f1e816a557acb74aebecc8b0598b81dfcdbca912ca8ba030740f5beaef3ff079760001b611e9c565b91509150600061182f86600001516000612084565b6002546040516311c3b75760e31b81529192506001600160a01b031690638e1dbab8906118649085908c908c9060040161340d565b602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190613382565b6119015760405162461bcd60e51b815260206004820152602760248201527f546f6b656e4272696467653a20626c6f636b207369676e6174757265206973206044820152661a5b9d985b1a5960ca1b606482015260840161049b565b6119198a604001518b600001518c60200151846120df565b61196f5760405162461bcd60e51b815260206004820152602160248201527f546f6b656e4272696467653a20696e76616c6964206d65726b6c652070726f6f6044820152603360f91b606482015260840161049b565b50909890975095505050505050565b60008481526001602052604081208180808061199a8a8a612181565b93509350935093506119af600354308361221c565b6001600160a01b03841660009081526020819052604090205460ff166119e75760405162461bcd60e51b815260040161049b90613305565b60008211611a545760405162461bcd60e51b815260206004820152603460248201527f546f6b656e4272696467653a20696e76616c696420616d6f756e7420746f206d604482015273616b65207265717565737420776974686472617760601b606482015260840161049b565b84546001600160a01b038086166001600160a01b0319928316178755600187018054918616919092161790556002850182905560048501889055600854611a9b90426134b8565b60038601556005850180546002919060ff1916600183021790555060008a8152600160208190526040909120865481546001600160a01b039182166001600160a01b031991821617835588840154838501805491909316911617905560028088015490820155600380880154908201556004808801548183015560058089015490830180548a9560ff90931693919260ff19909116918490811115611b4257611b42612c96565b02179055505060408051848152602081018b90529081018990526001600160a01b0380871692508516907ff0bb02488f15c60e34f91e814fef3fd3f49f7630242b389d2a7192515fa8a8279060600160405180910390a36040518a907feb15650251de7eed15f2d7c599f4ecb1aee977945b7578bfbd817ce7c1c22f2990600090a25050505060019150505b949350505050565b6040516001600160a01b0383811660248301526044820183905261151091859182169063a9059cbb90606401611637565b6000805160206137758339815191525460ff1661075257604051638dfc202b60e01b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b600080602060008451602086016000885af180611ccb576040513d6000823e3d81fd5b50506000513d91508115611ce3578060011415611cf0565b6001600160a01b0384163b155b1561166957604051635274afe760e01b81526001600160a01b038516600482015260240161049b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661075257604051631afcd79f60e31b815260040160405180910390fd5b611d6a611d19565b6001600160a01b038116610ded57604051631e4fbdf760e01b81526000600482015260240161049b565b611d9c611d19565b600080516020613775833981519152805460ff19169055565b611515611d19565b60008151604014611e1a5760405162461bcd60e51b815260206004820152602160248201527f486173683a2076616c7565206d757374206265203634206279746573206c6f6e6044820152606760f81b606482015260840161049b565b6002600160a160426004604087604051602001611e3c969594939291906134cb565b60408051601f1981840301815290829052611e569161352c565b602060405180830381855afa158015611e73573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611e969190613548565b92915050565b6000806000611eaa866122d8565b80519091508714611f075760405162461bcd60e51b815260206004820152602160248201527f506f7374636861696e3a20696e76616c696420626c6f636b636861696e2072696044820152601960fa1b606482015260840161049b565b8060e00151856060015114611f695760405162461bcd60e51b815260206004820152602260248201527f506f7374636861696e3a20696e76616c6964206578747261206461746120726f6044820152611bdd60f21b606482015260840161049b565b611f908560200151866040015187606001518860800151612691909392919063ffffffff16565b611fea5760405162461bcd60e51b815260206004820152602560248201527f506f7374636861696e3a20696e76616c6964206578747261206d65726b6c6520604482015264383937b7b360d91b606482015260840161049b565b83856080015160008151811061200257612002613561565b60200260200101511461206c5760405162461bcd60e51b815260206004820152602c60248201527f506f7374636861696e3a2070726f6f6620646f6573206e6f74206f726967696e60448201526b30ba3290333937b69022a4a360a11b606482015260840161049b565b8060a001518160200151925092505094509492505050565b60008060005b60208110156120d75761209e816008613577565b856120a983876134b8565b815181106120b9576120b9613561565b01602001516001600160f81b031916901c919091179060010161208a565b509392505050565b60008315806120f3575084516001901b8310155b1561210057506000611bce565b8360005b8651811015612175576001811b851660008190036121465761213f8389848151811061213257612132613561565b602002602001015161293c565b925061216c565b61216988838151811061215b5761215b613561565b60200260200101518461293c565b92505b50600101612104565b50909114949350505050565b60008060008060008580602001905181019061219d919061358e565b865160208801209091508781146121f65760405162461bcd60e51b815260206004820152601860248201527f506f7374636861696e3a20696e76616c6964206576656e740000000000000000604482015260640161049b565b506040810151606082015160808301516020909301519199909850919650945092505050565b60a083901b60006122366001600160a01b038516836134b8565b905060008284148061224757508184145b9050806114065760405162461bcd60e51b815260206004820152605360248201527f506f7374636861696e3a20496e76616c6964206469736372696d696e61746f7260448201527f2e20506c656173652076657269667920746865206e6574776f726b2049442061606482015272373210313934b233b29031b7b73a3930b1ba1760691b608482015260a40161049b565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915260008280602001905181019061232f91906135ef565b905060006002600061234484600001516129bd565b61235185604001516129bd565b6040516020016123639392919061367f565b60408051601f198184030181529082905261237d9161352c565b602060405180830381855afa15801561239a573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906123bd9190613548565b905060006002600084606001516123d78660800151612a07565b6040516020016123e99392919061367f565b60408051601f19818403018152908290526124039161352c565b602060405180830381855afa158015612420573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906124439190613548565b90506000600260006124588660a00151612a07565b8660c0015160405160200161246f9392919061367f565b60408051601f19818403018152908290526124899161352c565b602060405180830381855afa1580156124a6573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906124c99190613548565b905060006002600085856040516020016124e59392919061367f565b60408051601f19818403018152908290526124ff9161352c565b602060405180830381855afa15801561251c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061253f9190613548565b9050600060026000848860e0015160405160200161255f9392919061367f565b60408051601f19818403018152908290526125799161352c565b602060405180830381855afa158015612596573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906125b99190613548565b905060006002600784846040516020016125d59392919061367f565b60408051601f19818403018152908290526125ef9161352c565b602060405180830381855afa15801561260c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061262f9190613548565b9050866020015181146126845760405162461bcd60e51b815260206004820152601f60248201527f506f7374636861696e3a20696e76616c696420626c6f636b2068656164657200604482015260640161049b565b5094979650505050505050565b600084516001901b83106126a757506000611bce565b845184906000906126ba906001906136a4565b905060005b818110156127ff576001811b861660008190036127685760026000858b85815181106126ed576126ed613561565b60200260200101516040516020016127079392919061367f565b60408051601f19818403018152908290526127219161352c565b602060405180830381855afa15801561273e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906127619190613548565b93506127f6565b600260008a848151811061277e5761277e613561565b6020026020010151866040516020016127999392919061367f565b60408051601f19818403018152908290526127b39161352c565b602060405180830381855afa1580156127d0573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906127f39190613548565b93505b506001016126bf565b506001811b851660008190036128a15760026008848a858151811061282657612826613561565b60200260200101516040516020016128409392919061367f565b60408051601f198184030181529082905261285a9161352c565b602060405180830381855afa158015612877573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061289a9190613548565b925061292f565b600260088984815181106128b7576128b7613561565b6020026020010151856040516020016128d29392919061367f565b60408051601f19818403018152908290526128ec9161352c565b602060405180830381855afa158015612909573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061292c9190613548565b92505b5050909114949350505050565b60008215801561294a575081155b1561295757506000611e96565b600083900361298a576040805160208101849052015b604051602081830303815290604052805190602001209050611e96565b60008290036129a45760408051602081018590520161296d565b604080516020810185905290810183905260600161296d565b604051600160f81b602082015260a160f81b6021820152601160f91b6022820152600160fa1b6023820152600160fd1b602482015260258101829052600090600290604501611e3c565b60006001600883901c5b8015612a2c57612a226001836136b7565b915060081c612a11565b60008260ff1667ffffffffffffffff811115612a4a57612a4a612d2c565b6040519080825280601f01601f191660200182016040528015612a74576020820181803683370190505b50859250905060015b8360ff168160ff1611612aec5760ff83166001600160f81b031960f885901b1683612aa884886136d0565b60ff1681518110612abb57612abb613561565b60200101906001600160f81b031916908160001a9053505060089290921c9180612ae4816136e9565b915050612a7d565b50600081600081518110612b0257612b02613561565b60209101015160f81c6080161115612bae576002600160a3612b258660036136b7565b6002612b328860016136b7565b600087604051602001612b4b9796959493929190613708565b60408051601f1981840301815290829052612b659161352c565b602060405180830381855afa158015612b82573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612ba59190613548565b95945050505050565b6002600160a3612bbe86846136b7565b60028786604051602001612b4b969594939291906134cb565b6001600160a01b0381168114610d4757600080fd5b60008060408385031215612bff57600080fd5b823591506020830135612c1181612bd7565b809150509250929050565b600060208284031215612c2e57600080fd5b5035919050565b60008060408385031215612c4857600080fd5b8235612c5381612bd7565b946020939093013593505050565b600080600060608486031215612c7657600080fd5b8335612c8181612bd7565b95602085013595506040909401359392505050565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0387811682528616602082015260408101859052606081018490526080810183905260c0810160058310612cf757634e487b7160e01b600052602160045260246000fd5b8260a0830152979650505050505050565b600060208284031215612d1a57600080fd5b8135612d2581612bd7565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715612d6557612d65612d2c565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612d9457612d94612d2c565b604052919050565b600082601f830112612dad57600080fd5b813567ffffffffffffffff811115612dc757612dc7612d2c565b612dda601f8201601f1916602001612d6b565b818152846020838601011115612def57600080fd5b816020850160208301376000918101602001919091529392505050565b600067ffffffffffffffff821115612e2657612e26612d2c565b5060051b60200190565b600082601f830112612e4157600080fd5b81356020612e56612e5183612e0c565b612d6b565b8083825260208201915060208460051b870101935086841115612e7857600080fd5b602086015b84811015612e945780358352918301918301612e7d565b509695505050505050565b600060608284031215612eb157600080fd5b6040516060810167ffffffffffffffff8282108183111715612ed557612ed5612d2c565b8160405282935084358352602085013560208401526040850135915080821115612efe57600080fd5b50612f0b85828601612e30565b6040830152505092915050565b600082601f830112612f2957600080fd5b81356020612f39612e5183612e0c565b82815260059290921b84018101918181019086841115612f5857600080fd5b8286015b84811015612e9457803567ffffffffffffffff811115612f7c5760008081fd5b612f8a8986838b0101612d9c565b845250918301918301612f5c565b600082601f830112612fa957600080fd5b81356020612fb9612e5183612e0c565b8083825260208201915060208460051b870101935086841115612fdb57600080fd5b602086015b84811015612e94578035612ff381612bd7565b8352918301918301612fe0565b600060a0828403121561301257600080fd5b61301a612d42565b9050813567ffffffffffffffff8082111561303457600080fd5b61304085838601612d9c565b8352602084013560208401526040840135604084015260608401356060840152608084013591508082111561307457600080fd5b5061308184828501612e30565b60808301525092915050565b60008060008060008060c087890312156130a657600080fd5b863567ffffffffffffffff808211156130be57600080fd5b6130ca8a838b01612d9c565b975060208901359150808211156130e057600080fd5b6130ec8a838b01612e9f565b9650604089013591508082111561310257600080fd5b61310e8a838b01612d9c565b9550606089013591508082111561312457600080fd5b6131308a838b01612f18565b9450608089013591508082111561314657600080fd5b6131528a838b01612f98565b935060a089013591508082111561316857600080fd5b5061317589828a01613000565b9150509295509295509295565b60208082526033908201527f546f6b656e4272696467653a20616374696f6e206973206e6f7420616c6c6f77604082015272195908191d5c9a5b99c81b585cdcc8195e1a5d606a1b606082015260800190565b60208082526028908201527f546f6b656e4272696467653a206e6f2066756e6420666f72207468652062656e604082015267656669636961727960c01b606082015260800190565b60208082526033908201527f546f6b656e4272696467653a206e6f74206d617475726520656e6f75676820746040820152721bc81dda5d1a191c985dc81d1a1948199d5b99606a1b606082015260800190565b60208082526033908201527f546f6b656e4272696467653a2066756e642069732070656e64696e67206f72206040820152721dd85cc8185b1c9958591e4818db185a5b5959606a1b606082015260800190565b60208082526022908201527f546f6b656e4272696467653a206576656e74206861736820697320696e76616c6040820152611a5960f21b606082015260800190565b6020808252601c908201527f546f6b656e4272696467653a206e6f7420616c6c6f7720746f6b656e00000000604082015260600190565b60208082526026908201527f546f6b656e4272696467653a20626c6f636b636861696e20726964206973206e6040820152651bdd081cd95d60d21b606082015260800190565b60006020828403121561339457600080fd5b81518015158114612d2557600080fd5b60005b838110156133bf5781810151838201526020016133a7565b50506000910152565b60008151808452602080850194506020840160005b838110156134025781516001600160a01b0316875295820195908201906001016133dd565b509495945050505050565b600060608201858352602060608185015281865180845260808601915060808160051b870101935082880160005b8281101561348157878603607f190184528151805180885261346281888a018985016133a4565b601f01601f19169690960185019550928401929084019060010161343b565b5050505050828103604084015261349881856133c8565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611e9657611e966134a2565b600060ff60f81b808960f81b168352808860f81b166001840152808760f81b166002840152808660f81b166003840152808560f81b16600484015250825161351a8160058501602087016133a4565b91909101600501979650505050505050565b6000825161353e8184602087016133a4565b9190910192915050565b60006020828403121561355a57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417611e9657611e966134a2565b600060a082840312156135a057600080fd5b6135a8612d42565b825181526020830151602082015260408301516135c481612bd7565b604082015260608301516135d781612bd7565b60608201526080928301519281019290925250919050565b600061010080838503121561360357600080fd5b6040519081019067ffffffffffffffff8211818310171561362657613626612d2c565b81604052835181526020840151602082015260408401516040820152606084015160608201526080840151608082015260a084015160a082015260c084015160c082015260e084015160e0820152809250505092915050565b60f89390931b6001600160f81b03191683526001830191909152602182015260410190565b81810381811115611e9657611e966134a2565b60ff8181168382160190811115611e9657611e966134a2565b60ff8281168282160390811115611e9657611e966134a2565b600060ff821660ff81036136ff576136ff6134a2565b60010192915050565b6001600160f81b031960f889811b8216835288811b8216600184015287811b8216600284015286811b8216600384015285811b8216600484015284901b16600582015281516000906137618160068501602087016133a4565b919091016006019897505050505050505056fecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a26469706673582212203fc9f37c4872a1246d9fbfdd05344b5783a77596c201eb1b8a1b3b2d374bb0ce64736f6c63430008180033