0 txs
0 calls
constructor
No constructor.
functions
bridgeContracts
viewfunction bridgeContracts(uint16 chainId_) view returns (bytes32)
chainId
viewfunction chainId() view returns (uint16)
encodeAssetMeta
purefunction encodeAssetMeta(tuple meta) pure returns (bytes encoded)
encodeTransfer
purefunction encodeTransfer(tuple transfer) pure returns (bytes encoded)
governanceActionIsConsumed
viewfunction governanceActionIsConsumed(bytes32 hash) view returns (bool)
governanceChainId
viewfunction governanceChainId() view returns (uint16)
governanceContract
viewfunction governanceContract() view returns (bytes32)
implementation
viewfunction implementation() view returns (address)
isInitialized
viewfunction isInitialized(address impl) view returns (bool)
isTransferCompleted
viewfunction isTransferCompleted(bytes32 hash) view returns (bool)
isWrappedAsset
viewfunction isWrappedAsset(address token) view returns (bool)
outstandingBridged
viewfunction outstandingBridged(address token) view returns (uint256)
parseAssetMeta
purefunction parseAssetMeta(bytes encoded) pure returns (tuple meta)
parseRegisterChain
purefunction parseRegisterChain(bytes encoded) pure returns (tuple chain)
parseTransfer
purefunction parseTransfer(bytes encoded) pure returns (tuple transfer)
parseUpgrade
purefunction parseUpgrade(bytes encoded) pure returns (tuple chain)
tokenImplementation
viewfunction tokenImplementation() view returns (address)
WETH
viewfunction WETH() view returns (address)
wormhole
viewfunction wormhole() view returns (address)
wrappedAsset
viewfunction wrappedAsset(uint16 tokenChainId, bytes32 tokenAddress) view returns (address)
attestToken
payablefunction attestToken(address tokenAddress, uint32 nonce) payable returns (uint64 sequence)
completeTransfer
nonpayablefunction completeTransfer(bytes encodedVm)
completeTransferAndUnwrapETH
nonpayablefunction completeTransferAndUnwrapETH(bytes encodedVm)
createWrapped
nonpayablefunction createWrapped(bytes encodedVm) returns (address token)
registerChain
nonpayablefunction registerChain(bytes encodedVM)
transferTokens
payablefunction transferTokens(address token, uint256 amount, uint16 recipientChain, bytes32 recipient, uint256 arbiterFee, uint32 nonce) payable returns (uint64 sequence)
updateWrapped
nonpayablefunction updateWrapped(bytes encodedVm) returns (address token)
upgrade
nonpayablefunction upgrade(bytes encodedVM)
wrapAndTransferETH
payablefunction wrapAndTransferETH(uint16 recipientChain, bytes32 recipient, uint256 arbiterFee, uint32 nonce) payable returns (uint64 sequence)
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
ContractUpgraded
event ContractUpgraded(address indexed oldContract, address indexed newContract)
Upgraded
event Upgraded(address indexed implementation)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50614f26806100206000396000f3fe608060405260043610620001eb5760003560e01c8063a5799f93116200010b578063c48fa11511620000a1578063f768441f116200006c578063f768441f1462000731578063fbe3c2cd1462000756578063fbeeacd91462000777578063ff200cde14620007d757600080fd5b8063c48fa1151462000693578063c687851914620006aa578063d60b347f14620006cf578063e8059810146200070c57600080fd5b8063ad66a5f111620000e2578063ad66a5f114620005d9578063b046223b146200061d578063b172b2221462000642578063b96c7e4d146200065957600080fd5b8063a5799f931462000560578063aa4efa5b1462000585578063ad5c464814620005b957600080fd5b80632c3c02a411620001815780635f85426611620001585780635f85426614620004cb57806384acd1bb14620004ff5780639981509f146200051f5780639a8a0592146200053657600080fd5b80632c3c02a4146200045f5780632f3a3d5d14620004935780635c60da1b14620004b357600080fd5b80631a2be4da11620001c25780631a2be4da14620003235780631ff1e28614620003715780632539464514620003af5780632b51137514620003d657600080fd5b806301f5325514620001f857806307dfd8fb14620002765780630f5287b014620002f257600080fd5b36620001f357005b600080fd5b3480156200020557600080fd5b506200021d6200021736600462003ba1565b620007fc565b6040516200026d9190600060a0820190508251825260ff6020840151166020830152604083015161ffff808216604085015280606086015116606085015250506080830151608083015292915050565b60405180910390f35b3480156200028357600080fd5b506200029b6200029536600462003ba1565b62000a54565b6040516200026d9190600060c08201905060ff83511682526020830151602083015261ffff604084015116604083015260ff60608401511660608301526080830151608083015260a083015160a083015292915050565b620003096200030336600462003aac565b62000bfb565b60405167ffffffffffffffff90911681526020016200026d565b3480156200033057600080fd5b50620003606200034236600462003a8f565b6001600160a01b031660009081526009602052604090205460ff1690565b60405190151581526020016200026d565b3480156200037e57600080fd5b50620003966200039036600462003f42565b62000f0d565b6040516001600160a01b0390911681526020016200026d565b348015620003bc57600080fd5b50620003d4620003ce36600462003ba1565b62000f3c565b005b348015620003e357600080fd5b50620003fb620003f536600462003ba1565b6200102f565b6040516200026d9190600060e08201905060ff83511682526020830151602083015260408301516040830152606083015161ffff8082166060850152608085015160808501528060a08601511660a0850152505060c083015160c083015292915050565b3480156200046c57600080fd5b50620003606200047e36600462003b6f565b60009081526005602052604090205460ff1690565b348015620004a057600080fd5b506001546001600160a01b031662000396565b348015620004c057600080fd5b5062000396620011fe565b348015620004d857600080fd5b50620004f0620004ea36600462003cee565b62001218565b6040516200026d91906200409d565b3480156200050c57600080fd5b506000546001600160a01b031662000396565b620003096200053036600462003f70565b620012dd565b3480156200054357600080fd5b5060025461ffff165b60405161ffff90911681526020016200026d565b3480156200056d57600080fd5b50620003d46200057f36600462003ba1565b620015a3565b3480156200059257600080fd5b5062000360620005a436600462003b6f565b60009081526006602052604090205460ff1690565b348015620005c657600080fd5b506004546001600160a01b031662000396565b348015620005e657600080fd5b506200060e620005f836600462003f04565b61ffff166000908152600b602052604090205490565b6040519081526020016200026d565b3480156200062a57600080fd5b50620004f06200063c36600462003c53565b6200171d565b3480156200064f57600080fd5b506003546200060e565b3480156200066657600080fd5b506200060e6200067836600462003a8f565b6001600160a01b03166000908152600a602052604090205490565b62000309620006a436600462003b17565b620017c6565b348015620006b757600080fd5b50620003d4620006c936600462003ba1565b62001af8565b348015620006dc57600080fd5b5062000360620006ee36600462003a8f565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156200071957600080fd5b50620003966200072b36600462003ba1565b62001b08565b3480156200073e57600080fd5b50620003966200075036600462003ba1565b62001c48565b3480156200076357600080fd5b5060025462010000900461ffff166200054c565b3480156200078457600080fd5b506200079c6200079636600462003ba1565b62001d7e565b6040516200026d91908151815260208083015160ff169082015260408083015161ffff16908201526060918201519181019190915260800190565b348015620007e457600080fd5b50620003d4620007f636600462003ba1565b62001fa1565b6040805160a08101825260008082526020820181905291810182905260608101829052608081018290529062000833838262001fae565b8252620008426020826200424a565b82519091506a546f6b656e42726964676514620008cc5760405162461bcd60e51b815260206004820152602360248201527f696e76616c6964205265676973746572436861696e3a2077726f6e67206d6f6460448201527f756c65000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b620008d8838262002018565b60ff166020830152620008ed6001826200424a565b9050816020015160ff166001146200096e5760405162461bcd60e51b815260206004820152602360248201527f696e76616c6964205265676973746572436861696e3a2077726f6e672061637460448201527f696f6e00000000000000000000000000000000000000000000000000000000006064820152608401620008c3565b6200097a838262002082565b61ffff166040830152620009906002826200424a565b90506200099e838262002082565b61ffff166060830152620009b46002826200424a565b9050620009c2838262001fae565b6080830152620009d46020826200424a565b90508083511462000a4e5760405162461bcd60e51b815260206004820152602360248201527f696e76616c6964205265676973746572436861696e3a2077726f6e67206c656e60448201527f67746800000000000000000000000000000000000000000000000000000000006064820152608401620008c3565b50919050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529062000a92838262002018565b60ff16825262000aa46001826200424a565b9050816000015160ff1660021462000aff5760405162461bcd60e51b815260206004820152601160248201527f696e76616c69642041737365744d6574610000000000000000000000000000006044820152606401620008c3565b62000b0b838262001fae565b60208084019190915262000b2090826200424a565b905062000b2e838262002082565b61ffff16604083015262000b446002826200424a565b905062000b52838262002018565b60ff16606083015262000b676001826200424a565b905062000b75838262001fae565b608083015262000b876020826200424a565b905062000b95838262001fae565b60a083015262000ba76020826200424a565b90508083511462000a4e5760405162461bcd60e51b815260206004820152601160248201527f696e76616c69642041737365744d6574610000000000000000000000000000006044820152606401620008c3565b600080600062000c23896001600160a01b031660009081526009602052604090205460ff1690565b1562000d1d57886001600160a01b0316639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b15801562000c6357600080fd5b505afa15801562000c78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c9e919062003f23565b9150886001600160a01b0316633d6c043b6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000cda57600080fd5b505afa15801562000cef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d15919062003b88565b905062000d31565b505060025461ffff166001600160a01b0388165b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000916001600160a01b038c169162000d75919062004028565b600060405180830381855afa9150503d806000811462000db2576040519150601f19603f3d011682016040523d82523d6000602084013e62000db7565b606091505b5091505060008180602001905181019062000dd3919062003fdb565b90508987600860ff8416111562000e2e57600062000df3600885620043ca565b62000e0090600a620042cf565b905062000e0e818462004265565b925062000e1c818362004265565b915062000e2a81846200438e565b9c50505b60025461ffff8781169116141562000e605762000e4e8d33308f620020ec565b62000e5a8d8362002190565b62000eea565b62000e6e8d33308f620020ec565b6040517f9dc29fac000000000000000000000000000000000000000000000000000000008152306004820152602481018d90526001600160a01b038e1690639dc29fac90604401600060405180830381600087803b15801562000ed057600080fd5b505af115801562000ee5573d6000803e3d6000fd5b505050505b62000efc8686848e8e86348f62002266565b9d9c50505050505050505050505050565b61ffff821660009081526008602090815260408083208484529091529020546001600160a01b03165b92915050565b600080600062000f4c84620023af565b92509250925081819062000f755760405162461bcd60e51b8152600401620008c391906200409d565b5062000f9b8361014001516000908152600560205260409020805460ff19166001179055565b600062000fac8460e0015162001d7e565b905062000fbc60025461ffff1690565b61ffff16816040015161ffff1614620010185760405162461bcd60e51b815260206004820152600e60248201527f77726f6e6720636861696e2069640000000000000000000000000000000000006044820152606401620008c3565b60608101516200102890620025e5565b5050505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290529062001074838262002018565b60ff168252620010866001826200424a565b9050816000015160ff16600114620010e15760405162461bcd60e51b815260206004820152601060248201527f696e76616c6964205472616e73666572000000000000000000000000000000006044820152606401620008c3565b620010ed838262002735565b6020808401919091526200110290826200424a565b905062001110838262001fae565b6040830152620011226020826200424a565b905062001130838262002082565b61ffff166060830152620011466002826200424a565b905062001154838262001fae565b6080830152620011666020826200424a565b905062001174838262002082565b61ffff1660a08301526200118a6002826200424a565b905062001198838262002735565b60c0830152620011aa6020826200424a565b90508083511462000a4e5760405162461bcd60e51b815260206004820152601060248201527f696e76616c6964205472616e73666572000000000000000000000000000000006044820152606401620008c3565b6000620012136001546001600160a01b031690565b905090565b8051602080830151604080850151606080870151608088015160a089015160c08a0151955160f89990991b7fff0000000000000000000000000000000000000000000000000000000000000016978901979097526021880195909552604187019290925260f091821b7fffff0000000000000000000000000000000000000000000000000000000000009081166061880152606387019490945293901b909116608384015260858301529060a5015b6040516020818303038152906040529050919050565b600080620012f36000546001600160a01b031690565b6001600160a01b0316631a90a2196040518163ffffffff1660e01b815260040160206040518083038186803b1580156200132c57600080fd5b505afa15801562001341573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001367919062003b88565b9050348110620013e05760405162461bcd60e51b815260206004820152602260248201527f76616c756520697320736d616c6c6572207468616e20776f726d686f6c65206660448201527f65650000000000000000000000000000000000000000000000000000000000006064820152608401620008c3565b6000620013ee8234620043b0565b905080851115620014685760405162461bcd60e51b815260206004820152602c60248201527f66656520697320626967676572207468616e20616d6f756e74206d696e75732060448201527f776f726d686f6c652066656500000000000000000000000000000000000000006064820152608401620008c3565b60006200147b6402540be4008362004265565b90506000620014906402540be4008862004265565b90506000620014a5836402540be4006200438e565b620014b19085620043b0565b90508015620014ea57604051339082156108fc029083906000818181858888f19350505050158015620014e8573d6000803e3d6000fd5b505b6004546001600160a01b031663d0e30db0620015078387620043b0565b6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156200153357600080fd5b505af115801562001548573d6000803e3d6000fd5b50505050506200156b620015646004546001600160a01b031690565b8462002190565b620015956200157d60025461ffff1690565b6004546001600160a01b0316858d8d878b8e62002266565b9a9950505050505050505050565b6000806000620015b384620023af565b925092509250818190620015dc5760405162461bcd60e51b8152600401620008c391906200409d565b50620016028361014001516000908152600560205260409020805460ff19166001179055565b6000620016138460e00151620007fc565b90506200162360025461ffff1690565b61ffff16816040015161ffff161480620016435750604081015161ffff16155b620016915760405162461bcd60e51b815260206004820152601060248201527f696e76616c696420636861696e206964000000000000000000000000000000006044820152606401620008c3565b606081015161ffff166000908152600b602052604081205414620016f85760405162461bcd60e51b815260206004820152601860248201527f636861696e20616c7265616479207265676973746572656400000000000000006044820152606401620008c3565b620010288160600151826080015161ffff9091166000908152600b6020526040902055565b8051602080830151604080850151606080870151608088015160a0890151945160f898891b7fff0000000000000000000000000000000000000000000000000000000000000090811698820198909852602181019690965260f09390931b7fffff00000000000000000000000000000000000000000000000000000000000016604186015290951b909316604383015260448201929092526064810191909152608401620012c7565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b179052905160009182916001600160a01b038616916200180b9162004028565b600060405180830381855afa9150503d806000811462001848576040519150601f19603f3d011682016040523d82523d6000602084013e6200184d565b606091505b5060408051600481526024810182526020810180516001600160e01b03167f95d89b41000000000000000000000000000000000000000000000000000000001790529051919350600092506001600160a01b03871691620018af919062004028565b600060405180830381855afa9150503d8060008114620018ec576040519150601f19603f3d011682016040523d82523d6000602084013e620018f1565b606091505b5060408051600481526024810182526020810180516001600160e01b03167f06fdde03000000000000000000000000000000000000000000000000000000001790529051919350600092506001600160a01b0388169162001953919062004028565b600060405180830381855afa9150503d806000811462001990576040519150601f19603f3d011682016040523d82523d6000602084013e62001995565b606091505b50915050600083806020019051810190620019b1919062003fdb565b9050600083806020019051810190620019cb919062003c1c565b9050600083806020019051810190620019e5919062003c1c565b9050600080602084015191506020830151905060006040518060c00160405280600260ff1681526020018d6001600160a01b031660001b815260200162001a2f60025461ffff1690565b61ffff1681526020018760ff168152602001848152602001838152509050600062001a5a826200171d565b905062001a6f6000546001600160a01b031690565b6001600160a01b031663b19a437e348e84600f6040518563ffffffff1660e01b815260040162001aa29392919062004164565b6020604051808303818588803b15801562001abc57600080fd5b505af115801562001ad1573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062000efc919062003fbe565b62001b0581600062002796565b50565b60008060008062001b216000546001600160a01b031690565b6001600160a01b031663c0fd8bde866040518263ffffffff1660e01b815260040162001b4e91906200409d565b60006040518083038186803b15801562001b6757600080fd5b505afa15801562001b7c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ba6919081019062003d94565b92509250925081819062001bcf5760405162461bcd60e51b8152600401620008c391906200409d565b5062001bdb8362002f15565b62001c1b5760405162461bcd60e51b815260206004820152600f60248201526e34b73b30b634b21032b6b4ba3a32b960891b6044820152606401620008c3565b600062001c2c8460e0015162000a54565b905062001c3e818560a0015162002f52565b9695505050505050565b60008060008062001c616000546001600160a01b031690565b6001600160a01b031663c0fd8bde866040518263ffffffff1660e01b815260040162001c8e91906200409d565b60006040518083038186803b15801562001ca757600080fd5b505afa15801562001cbc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ce6919081019062003d94565b92509250925081819062001d0f5760405162461bcd60e51b8152600401620008c391906200409d565b5062001d1b8362002f15565b62001d5b5760405162461bcd60e51b815260206004820152600f60248201526e34b73b30b634b21032b6b4ba3a32b960891b6044820152606401620008c3565b600062001d6c8460e0015162000a54565b905062001c3e818560a0015162003255565b60408051608081018252600080825260208201819052918101829052606081018290529062001dae838262001fae565b825262001dbd6020826200424a565b82519091506a546f6b656e4272696467651462001e435760405162461bcd60e51b815260206004820152602560248201527f696e76616c69642055706772616465436f6e74726163743a2077726f6e67206d60448201527f6f64756c650000000000000000000000000000000000000000000000000000006064820152608401620008c3565b62001e4f838262002018565b60ff16602083015262001e646001826200424a565b9050816020015160ff1660021462001ee55760405162461bcd60e51b815260206004820152602560248201527f696e76616c69642055706772616465436f6e74726163743a2077726f6e67206160448201527f6374696f6e0000000000000000000000000000000000000000000000000000006064820152608401620008c3565b62001ef1838262002082565b61ffff16604083015262001f076002826200424a565b905062001f15838262001fae565b606083015262001f276020826200424a565b90508083511462000a4e5760405162461bcd60e51b815260206004820152602560248201527f696e76616c69642055706772616465436f6e74726163743a2077726f6e67206c60448201527f656e6774680000000000000000000000000000000000000000000000000000006064820152608401620008c3565b62001b0581600162002796565b600062001fbd8260206200424a565b835110156200200f5760405162461bcd60e51b815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e647300000000000000000000006044820152606401620008c3565b50016020015190565b6000620020278260016200424a565b83511015620020795760405162461bcd60e51b815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401620008c3565b50016001015190565b6000620020918260026200424a565b83511015620020e35760405162461bcd60e51b815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401620008c3565b50016002015190565b6040516001600160a01b03808516602483015283166044820152606481018290526200218a9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180516001600160e01b03167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262003350565b50505050565b6001600160a01b0382166000908152600a602052604090205467ffffffffffffffff620021be83836200424a565b1115620022345760405162461bcd60e51b815260206004820152603560248201527f7472616e736665722065786365656473206d6178206f75747374616e64696e6760448201527f206272696467656420746f6b656e20616d6f756e7400000000000000000000006064820152608401620008c3565b62002261836200224584846200424a565b6001600160a01b039091166000908152600a6020526040902055565b505050565b600086841115620022ba5760405162461bcd60e51b815260206004820152601260248201527f666565206578636565647320616d6f756e7400000000000000000000000000006044820152606401620008c3565b6040805160e081018252600181526020810189905290810189905261ffff808b16606083015260808201879052871660a082015260c081018590526000620023028262001218565b9050620023176000546001600160a01b031690565b6001600160a01b031663b19a437e868684600f6040518563ffffffff1660e01b81526004016200234a9392919062004164565b6020604051808303818588803b1580156200236457600080fd5b505af115801562002379573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620023a0919062003fbe565b9b9a5050505050505050505050565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082018190526101008201839052610120820152610140810191909152600060606000806000620024236000546001600160a01b031690565b6001600160a01b031663c0fd8bde886040518263ffffffff1660e01b81526004016200245091906200409d565b60006040518083038186803b1580156200246957600080fd5b505afa1580156200247e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620024a8919081019062003d94565b92509250925081620024c15791945092509050620025de565b60025462010000900461ffff1661ffff16836060015161ffff16146200252657505060408051808201909152601681527f77726f6e6720676f7665726e616e636520636861696e000000000000000000006020820152909350600092509050620025de565b6003548360800151146200257957505060408051808201909152601981527f77726f6e6720676f7665726e616e636520636f6e7472616374000000000000006020820152909350600092509050620025de565b61014083015160009081526005602052604090205460ff1615620025c35782600060405180606001604052806022815260200162004ecf60229139955095509550505050620025de565b50506040805160208101909152600081529093506001925090505b9193909250565b6000620026197f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905062002626826200343c565b60408051600481526024810182526020810180516001600160e01b03167f8129fc1c00000000000000000000000000000000000000000000000000000000179052905160009182916001600160a01b03861691620026849162004028565b600060405180830381855af49150503d8060008114620026c1576040519150601f19603f3d011682016040523d82523d6000602084013e620026c6565b606091505b5091509150818190620026ee5760405162461bcd60e51b8152600401620008c391906200409d565b50836001600160a01b0316836001600160a01b03167f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a4960405160405180910390a350505050565b6000620027448260206200424a565b835110156200200f5760405162461bcd60e51b815260206004820152601560248201527f746f55696e743235365f6f75744f66426f756e647300000000000000000000006044820152606401620008c3565b6000806000620027ae6000546001600160a01b031690565b6001600160a01b031663c0fd8bde866040518263ffffffff1660e01b8152600401620027db91906200409d565b60006040518083038186803b158015620027f457600080fd5b505afa15801562002809573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002833919081019062003d94565b9250925092508181906200285c5760405162461bcd60e51b8152600401620008c391906200409d565b50620028688362002f15565b620028a85760405162461bcd60e51b815260206004820152600f60248201526e34b73b30b634b21032b6b4ba3a32b960891b6044820152606401620008c3565b6000620028b98460e001516200102f565b9050620028da84610140015160009081526006602052604090205460ff1690565b15620029295760405162461bcd60e51b815260206004820152601a60248201527f7472616e7366657220616c726561647920636f6d706c657465640000000000006044820152606401620008c3565b6200294e8461014001516000908152600660205260409020805460ff19166001179055565b60025461ffff1661ffff168160a0015161ffff1614620029b15760405162461bcd60e51b815260206004820152601460248201527f696e76616c69642074617267657420636861696e0000000000000000000000006044820152606401620008c3565b6000620029c160025461ffff1690565b61ffff16826060015161ffff161415620029f3575060408101516020820151620029ed9082906200347e565b62002a8c565b600062002a098360600151846040015162000f0d565b90506001600160a01b03811662002a895760405162461bcd60e51b815260206004820152602560248201527f6e6f207772617070657220666f72207468697320746f6b656e2063726561746560448201527f64207965740000000000000000000000000000000000000000000000000000006064820152608401620008c3565b90505b85158062002aa757506004546001600160a01b038281169116145b62002b1b5760405162461bcd60e51b815260206004820152602360248201527f696e76616c696420746f6b656e2c2063616e206f6e6c7920756e77726170205760448201527f45544800000000000000000000000000000000000000000000000000000000006064820152608401620008c3565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000916001600160a01b0384169162002b5f919062004028565b600060405180830381855afa9150503d806000811462002b9c576040519150601f19603f3d011682016040523d82523d6000602084013e62002ba1565b606091505b5091505060008180602001905181019062002bbd919062003fdb565b602085015160c086015191925090600860ff8416111562002c1457600062002be7600885620043ca565b62002bf490600a620042cf565b905062002c0281846200438e565b925062002c1081836200438e565b9150505b801562002dbc578181111562002c935760405162461bcd60e51b815260206004820152602260248201527f66656520686967686572207468616e207472616e7366657272656420616d6f7560448201527f6e740000000000000000000000000000000000000000000000000000000000006064820152608401620008c3565b891562002d2d5760048054604051632e1a7d4d60e01b81529182018390526001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801562002cdf57600080fd5b505af115801562002cf4573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f1935050505015801562002d26573d6000803e3d6000fd5b5062002dbc565b60025461ffff1661ffff16866060015161ffff161462002daf576040516340c10f1960e01b8152336004820152602481018290526001600160a01b038616906340c10f1990604401600060405180830381600087803b15801562002d9057600080fd5b505af115801562002da5573d6000803e3d6000fd5b5050505062002dbc565b62002dbc853383620034b4565b600062002dca8284620043b0565b60808801519091508b1562002e755760048054604051632e1a7d4d60e01b81529182018490526001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801562002e1e57600080fd5b505af115801562002e33573d6000803e3d6000fd5b50506040516001600160a01b038416925084156108fc02915084906000818181858888f1935050505015801562002e6e573d6000803e3d6000fd5b5062002f06565b60025461ffff1661ffff16886060015161ffff161462002ef9576040516340c10f1960e01b81526001600160a01b038281166004830152602482018490528816906340c10f1990604401600060405180830381600087803b15801562002eda57600080fd5b505af115801562002eef573d6000803e3d6000fd5b5050505062002f06565b62002f06878284620034b4565b50505050505050505050505050565b6000816080015162002f3b836060015161ffff166000908152600b602052604090205490565b141562002f4a57506001919050565b506000919050565b600062002f6260025461ffff1690565b61ffff16836040015161ffff16141562002fe55760405162461bcd60e51b815260206004820152602860248201527f63616e206f6e6c79207772617020746f6b656e732066726f6d20666f7265696760448201527f6e20636861696e730000000000000000000000000000000000000000000000006064820152608401620008c3565b60006001600160a01b0316620030048460400151856020015162000f0d565b6001600160a01b0316146200305c5760405162461bcd60e51b815260206004820152601c60248201527f7772617070656420617373657420616c726561647920657869737473000000006044820152606401620008c3565b600063c71f461560e01b620030758560a00151620034ff565b620030848660800151620034ff565b8660600151863089604001518a60200151604051602401620030ad9796959493929190620040f6565b60408051601f19818403018152918152602080830180516001600160e01b03167fffffffff0000000000000000000000000000000000000000000000000000000090951694909417909352519092506000916200310f91309185910162004079565b60405160208183030381529060405290506000604051806020016200313490620038d1565b601f1982820381018352601f9091011660408190526200315a9190849060200162004046565b6040516020818303038152906040529050600086604001518760200151604051602001620031b992919060f09290921b7fffff000000000000000000000000000000000000000000000000000000000000168252600282015260220190565b604051602081830303815290604052805190602001209050808251602084016000f59450843b620031e957600080fd5b6040808801516020808a015161ffff909216600090815260088252838120928152918152828220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038a1690811790915582526009905220805460ff191660011790555050505092915050565b6000806200326c8460400151856020015162000f0d565b90506001600160a01b038116620032c65760405162461bcd60e51b815260206004820152601d60248201527f7772617070656420617373657420646f6573206e6f74206578697374730000006044820152606401620008c3565b806001600160a01b031663a18cd7c6620032e48660a00151620034ff565b620032f38760800151620034ff565b866040518463ffffffff1660e01b81526004016200331493929190620040b2565b600060405180830381600087803b1580156200332f57600080fd5b505af115801562003344573d6000803e3d6000fd5b50929695505050505050565b6000620033a7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166200366b9092919063ffffffff16565b805190915015620022615780806020019051810190620033c8919062003b52565b620022615760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620008c3565b620034478162003686565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b620034b08282620034a4856001600160a01b03166000908152600a602052604090205490565b620022459190620043b0565b5050565b6040516001600160a01b038316602482015260448101829052620022619084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016200213a565b606060005b6020811080156200355a57508281602081106200353157634e487b7160e01b600052603260045260246000fd5b1a60f81b7fff000000000000000000000000000000000000000000000000000000000000001615155b156200357557806200356c816200441f565b91505062003504565b60008167ffffffffffffffff8111156200359f57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015620035ca576020820181803683370190505b50905060005b828110156200366357848160208110620035fa57634e487b7160e01b600052603260045260246000fd5b1a60f81b8282815181106200361f57634e487b7160e01b600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806200365a816200441f565b915050620035d0565b509392505050565b60606200367c84846000856200374a565b90505b9392505050565b803b620036fc5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401620008c3565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b606082471015620037c45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401620008c3565b843b620038145760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620008c3565b600080866001600160a01b0316858760405162003832919062004028565b60006040518083038185875af1925050503d806000811462003871576040519150601f19603f3d011682016040523d82523d6000602084013e62003876565b606091505b50915091506200388882828662003893565b979650505050505050565b60608315620038a45750816200367f565b825115620038b55782518084602001fd5b8160405162461bcd60e51b8152600401620008c391906200409d565b610a31806200449e83390190565b80356001600160a01b0381168114620038f757600080fd5b919050565b600082601f8301126200390d578081fd5b8151602067ffffffffffffffff8211156200392c576200392c62004453565b6200393c818360051b01620041eb565b80838252828201915082860187848660071b89010111156200395c578586fd5b855b85811015620039cc57608080838b03121562003978578788fd5b6200398262004198565b8351815286840151878201526040808501516200399f816200448d565b90820152606084810151620039b4816200448d565b9082015285529385019391909101906001016200395e565b5090979650505050505050565b80518015158114620038f757600080fd5b600082601f830112620039fb578081fd5b815162003a1262003a0c826200421f565b620041eb565b81815284602083860101111562003a27578283fd5b62003a3a826020830160208701620043f0565b949350505050565b8035620038f78162004469565b8051620038f78162004469565b8051620038f7816200447a565b805167ffffffffffffffff81168114620038f757600080fd5b8051620038f7816200448d565b60006020828403121562003aa1578081fd5b6200367f82620038df565b60008060008060008060c0878903121562003ac5578182fd5b62003ad087620038df565b955060208701359450604087013562003ae98162004469565b9350606087013592506080870135915060a087013562003b09816200447a565b809150509295509295509295565b6000806040838503121562003b2a578182fd5b62003b3583620038df565b9150602083013562003b47816200447a565b809150509250929050565b60006020828403121562003b64578081fd5b6200367f82620039d9565b60006020828403121562003b81578081fd5b5035919050565b60006020828403121562003b9a578081fd5b5051919050565b60006020828403121562003bb3578081fd5b813567ffffffffffffffff81111562003bca578182fd5b8201601f8101841362003bdb578182fd5b803562003bec62003a0c826200421f565b81815285602083850101111562003c01578384fd5b81602084016020830137908101602001929092525092915050565b60006020828403121562003c2e578081fd5b815167ffffffffffffffff81111562003c45578182fd5b62003a3a84828501620039ea565b600060c0828403121562003c65578081fd5b60405160c0810181811067ffffffffffffffff8211171562003c8b5762003c8b62004453565b604052823562003c9b816200448d565b815260208381013590820152604083013562003cb78162004469565b6040820152606083013562003ccc816200448d565b60608201526080838101359082015260a0928301359281019290925250919050565b600060e0828403121562003d00578081fd5b60405160e0810181811067ffffffffffffffff8211171562003d265762003d2662004453565b604052823562003d36816200448d565b808252506020830135602082015260408301356040820152606083013562003d5e8162004469565b60608201526080838101359082015262003d7b60a0840162003a42565b60a082015260c083013560c08201528091505092915050565b60008060006060848603121562003da9578081fd5b835167ffffffffffffffff8082111562003dc1578283fd5b90850190610160828803121562003dd6578283fd5b62003de0620041c4565b62003deb8362003a82565b815262003dfb6020840162003a5c565b602082015262003e0e6040840162003a5c565b604082015262003e216060840162003a4f565b60608201526080830151608082015262003e3e60a0840162003a69565b60a082015262003e5160c0840162003a82565b60c082015260e08301518281111562003e68578485fd5b62003e7689828601620039ea565b60e08301525061010062003e8c81850162003a5c565b90820152610120838101518381111562003ea4578586fd5b62003eb28a828701620038fc565b91830191909152506101408381015190820152945062003ed560208701620039d9565b9350604086015191508082111562003eeb578283fd5b5062003efa86828701620039ea565b9150509250925092565b60006020828403121562003f16578081fd5b81356200367f8162004469565b60006020828403121562003f35578081fd5b81516200367f8162004469565b6000806040838503121562003f55578182fd5b823562003f628162004469565b946020939093013593505050565b6000806000806080858703121562003f86578182fd5b843562003f938162004469565b93506020850135925060408501359150606085013562003fb3816200447a565b939692955090935050565b60006020828403121562003fd0578081fd5b6200367f8262003a69565b60006020828403121562003fed578081fd5b81516200367f816200448d565b6000815180845262004014816020860160208601620043f0565b601f01601f19169290920160200192915050565b600082516200403c818460208701620043f0565b9190910192915050565b600083516200405a818460208801620043f0565b83519083019062004070818360208801620043f0565b01949350505050565b6001600160a01b03831681526040602082015260006200367c604083018462003ffa565b6020815260006200367f602083018462003ffa565b606081526000620040c7606083018662003ffa565b8281036020840152620040db818662003ffa565b91505067ffffffffffffffff83166040830152949350505050565b60e0815260006200410b60e083018a62003ffa565b82810360208401526200411f818a62003ffa565b60ff989098166040840152505067ffffffffffffffff9490941660608501526001600160a01b0392909216608084015261ffff1660a083015260c09091015292915050565b63ffffffff8416815260606020820152600062004185606083018562003ffa565b905060ff83166040830152949350505050565b6040516080810167ffffffffffffffff81118282101715620041be57620041be62004453565b60405290565b604051610160810167ffffffffffffffff81118282101715620041be57620041be62004453565b604051601f8201601f1916810167ffffffffffffffff8111828210171562004217576200421762004453565b604052919050565b600067ffffffffffffffff8211156200423c576200423c62004453565b50601f01601f191660200190565b600082198211156200426057620042606200443d565b500190565b6000826200428157634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115620042c7578160001904821115620042ab57620042ab6200443d565b80851615620042b957918102915b93841c93908002906200428b565b509250929050565b60006200367f60ff841683600082620042eb5750600162000f36565b81620042fa5750600062000f36565b81600181146200431357600281146200431e576200433e565b600191505062000f36565b60ff8411156200433257620043326200443d565b50506001821b62000f36565b5060208310610133831016604e8410600b841016171562004363575081810a62000f36565b6200436f838362004286565b80600019048211156200438657620043866200443d565b029392505050565b6000816000190483118215151615620043ab57620043ab6200443d565b500290565b600082821015620043c557620043c56200443d565b500390565b600060ff821660ff841680821015620043e757620043e76200443d565b90039392505050565b60005b838110156200440d578181015183820152602001620043f3565b838111156200218a5750506000910152565b60006000198214156200443657620044366200443d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61ffff8116811462001b0557600080fd5b63ffffffff8116811462001b0557600080fd5b60ff8116811462001b0557600080fdfe60806040523480156200001157600080fd5b5060405162000a3138038062000a318339810160408190526200003491620004ca565b81816200006360017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d51620005e7565b600080516020620009ea833981519152146200008f57634e487b7160e01b600052600160045260246000fd5b6200009d82826000620000a7565b5050505062000650565b620000b2836200018c565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a2600082511180620000f45750805b15620001875762000185836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200013857600080fd5b505afa1580156200014d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001739190620004ad565b836200033d60201b620000291760201c565b505b505050565b620001a2816200036c60201b620000551760201c565b620002025760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6200028c816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024057600080fd5b505afa15801562000255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027b9190620004ad565b6200036c60201b620000551760201c565b620002f35760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401620001f9565b806200031c600080516020620009ea83398151915260001b6200037260201b6200005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606062000365838360405180606001604052806027815260200162000a0a6027913962000375565b9392505050565b3b151590565b90565b6060833b620003d65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f9565b600080856001600160a01b031685604051620003f3919062000594565b600060405180830381855af49150503d806000811462000430576040519150601f19603f3d011682016040523d82523d6000602084013e62000435565b606091505b5090925090506200044882828662000452565b9695505050505050565b606083156200046357508162000365565b825115620004745782518084602001fd5b8160405162461bcd60e51b8152600401620001f99190620005b2565b80516001600160a01b0381168114620004a857600080fd5b919050565b600060208284031215620004bf578081fd5b620003658262000490565b60008060408385031215620004dd578081fd5b620004e88362000490565b60208401519092506001600160401b038082111562000505578283fd5b818501915085601f83011262000519578283fd5b8151818111156200052e576200052e6200063a565b604051601f8201601f19908116603f011681019083821181831017156200055957620005596200063a565b8160405282815288602084870101111562000572578586fd5b620005858360208301602088016200060b565b80955050505050509250929050565b60008251620005a88184602087016200060b565b9190910192915050565b6020815260008251806020840152620005d38160408501602087016200060b565b601f01601f19169190910160400192915050565b6000828210156200060657634e487b7160e01b81526011600452602481fd5b500390565b60005b83811015620006285781810151838201526020016200060e565b83811115620001855750506000910152565b634e487b7160e01b600052604160045260246000fd5b61038a80620006606000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610120565b565b606061004e838360405180606001604052806027815260200161032e60279139610144565b9392505050565b3b151590565b90565b600061009e7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100e357600080fd5b505afa1580156100f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011b919061027a565b905090565b3660008037600080366000845af43d6000803e80801561013f573d6000f35b3d6000fd5b6060833b6101bf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516101e791906102ae565b600060405180830381855af49150503d8060008114610222576040519150601f19603f3d011682016040523d82523d6000602084013e610227565b606091505b5091509150610237828286610241565b9695505050505050565b6060831561025057508161004e565b8251156102605782518084602001fd5b8160405162461bcd60e51b81526004016101b691906102ca565b60006020828403121561028b578081fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461004e578182fd5b600082516102c08184602087016102fd565b9190910192915050565b60208152600082518060208401526102e98160408501602087016102fd565b601f01601f19169190910160400192915050565b60005b83811015610318578181015183820152602001610300565b83811115610327576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220023fb812aee356ef775e058780e58e0f0e320743ef57a43f3069e9559fd8a41f64736f6c63430008040033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564676f7665726e616e636520616374696f6e20616c726561647920636f6e73756d6564a264697066735822122074323910d87383f759fe2f31f26501b43c9a77010f7a917d6bea15803346946c64736f6c63430008040033