5 txs
6 calls
constructor
constructor(address _wormholeRelayerAddr, address[] _admins)
functions
allowlistSize
viewfunction allowlistSize() view returns (uint64)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
defaultMultiplierBps
viewfunction defaultMultiplierBps() view returns (uint16)
dstConfig
viewfunction dstConfig(uint32) view returns (uint16 wormholeChainId, address peer, uint256 gasLimit)
getFee
viewfunction getFee(uint32 _dstEid, uint64, address, bytes) view returns (uint256 totalFee)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getSupportedOptionTypes
viewfunction getSupportedOptionTypes(uint32 _eid) view returns (uint8[])
hasAcl
viewfunction hasAcl(address _sender) view returns (bool)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isVAAConsumed
viewfunction isVAAConsumed(bytes32 hash) view returns (bool)
paused
viewfunction paused() view returns (bool)
priceFeed
viewfunction priceFeed() view returns (address)
receiveLibs
viewfunction receiveLibs(address sendLib, uint32 dstEid) view returns (bytes32 receiveLib)
renounceRole
purefunction renounceRole(bytes32, address) pure
srcConfig
viewfunction srcConfig(uint16) view returns (uint32 eid, address peer)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
workerFeeLib
viewfunction workerFeeLib() view returns (address)
assignJob
payablefunction assignJob(tuple _param, bytes) payable returns (uint256 totalFee)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
receiveWormholeMessages
payablefunction receiveWormholeMessages(bytes payload, bytes[] additionalMessages, bytes32 sourceAddress, uint16 sourceChain, bytes32 deliveryHash) payable
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setDefaultMultiplierBps
nonpayablefunction setDefaultMultiplierBps(uint16 _multiplierBps)
setDstConfig
nonpayablefunction setDstConfig(tuple[] _params)
setPaused
nonpayablefunction setPaused(bool _paused)
setPriceFeed
nonpayablefunction setPriceFeed(address _priceFeed)
setReceiveLibs
nonpayablefunction setReceiveLibs(tuple[] _params)
setSupportedOptionTypes
nonpayablefunction setSupportedOptionTypes(uint32 _eid, uint8[] _optionTypes)
setWorkerFeeLib
nonpayablefunction setWorkerFeeLib(address _workerFeeLib)
withdrawFee
nonpayablefunction withdrawFee(address _lib, address _to, uint256 _amount)
withdrawToken
nonpayablefunction withdrawToken(address _token, address _to, uint256 _amount)
events
DstConfigSet
event DstConfigSet((uint32 eid, uint16 wormholeChainId, address peer, uint256 gasLimit)[] params)
Paused
event Paused(address account)
ReceiveLibsSet
event ReceiveLibsSet((address sendLib, uint32 dstEid, bytes32 receiveLib)[] params)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
SetDefaultMultiplierBps
event SetDefaultMultiplierBps(uint16 multiplierBps)
SetPriceFeed
event SetPriceFeed(address priceFeed)
SetSupportedOptionTypes
event SetSupportedOptionTypes(uint32 dstEid, uint8[] optionTypes)
SetWorkerLib
event SetWorkerLib(address workerLib)
Unpaused
event Unpaused(address account)
Withdraw
event Withdraw(address lib, address to, uint256 amount)
errors
DVNAdapter_InsufficientBalance
error DVNAdapter_InsufficientBalance(uint256 actual, uint256 requested)
DVNAdapter_InvalidMessageSize
error DVNAdapter_InvalidMessageSize()
DVNAdapter_MissingRecieveLib
error DVNAdapter_MissingRecieveLib(address sendLib, uint32 dstEid)
DVNAdapter_NotImplemented
error DVNAdapter_NotImplemented()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
Transfer_NativeFailed
error Transfer_NativeFailed(address _to, uint256 _value)
Transfer_ToAddressIsZero
error Transfer_ToAddressIsZero()
Worker_NotAllowed
error Worker_NotAllowed()
Worker_OnlyMessageLib
error Worker_OnlyMessageLib()
Worker_RoleRenouncingDisabled
error Worker_RoleRenouncingDisabled()
Wormhole_DstChain_Not_Supported
error Wormhole_DstChain_Not_Supported(uint32 eid)
Wormhole_OnlySelf
error Wormhole_OnlySelf()
Wormhole_OnlyWormholeRelayer
error Wormhole_OnlyWormholeRelayer()
Wormhole_PeerMismatch
error Wormhole_PeerMismatch(bytes32 sourceAddress, address peer)
Wormhole_TransferAlreadyCompleted
error Wormhole_TransferAlreadyCompleted(bytes32 deliveryHash)
Wormhole_UnexpectedAdditionalMessages
error Wormhole_UnexpectedAdditionalMessages()
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162002e1e38038062002e1e83398101604081905262000034916200030e565b81813381612710600060405190808252806020026020018201604052801562000067578160200160208202803683370190505b506001805460ff61ffff60e81b011916600160e81b61ffff851602179055600280546001600160a01b031916905560008285856001600160a01b03821615620000b757620000b76000836200018d565b60005b85518110156200011b57620001127f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de878381518110620000fe57620000fe620003f7565b60200260200101516200018d60201b60201c565b600101620000ba565b5060005b81518110156200016c57620001637fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775838381518110620000fe57620000fe620003f7565b6001016200011f565b5050506001600160a01b03909716608052506200044a975050505050505050565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca82148015620001de57506000828152602081815260408083206001600160a01b038516845290915290205460ff16155b156200022b57600180546015906200020690600160a81b90046001600160401b03166200040d565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b6200023782826200023b565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000237576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002973390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b80516001600160a01b0381168114620002f357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200032257600080fd5b6200032d83620002db565b602084810151919350906001600160401b03808211156200034d57600080fd5b818601915086601f8301126200036257600080fd5b815181811115620003775762000377620002f8565b8060051b604051601f19603f830116810181811085821117156200039f576200039f620002f8565b604052918252848201925083810185019189831115620003be57600080fd5b938501935b82851015620003e757620003d785620002db565b84529385019392850192620003c3565b8096505050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b038281166002600160401b031981016200044057634e487b7160e01b600052601160045260246000fd5b6001019392505050565b6080516129aa6200047460003960008181610b0a01528181610fe3015261134f01526129aa6000f3fe6080604052600436106101d05760003560e01c8063724e78da116100f7578063a217fddf11610095578063c7b2370b11610064578063c7b2370b14610617578063cd88b90314610637578063d2ae210414610657578063d547741f1461069657600080fd5b8063a217fddf14610553578063b5fce81214610568578063c358de0a146105d2578063c416aa51146105f257600080fd5b80638821c063116100d15780638821c0631461048e57806391d14854146104ae57806395d376d7146104ce5780639e944965146104e157600080fd5b8063724e78da14610416578063741bef1a1461043657806380eb32391461046e57600080fd5b80632de113761161016f5780634cfa6d2c1161013e5780634cfa6d2c1461039357806351b6a0fd146103cb578063529dca32146103eb5780635c975abb146103fe57600080fd5b80632de11376146103135780632f2ff15d1461033357806330bb3aac1461035357806336568abe1461037357600080fd5b80631095b6d7116101ab5780631095b6d71461026857806316c38b3c14610288578063248a9ca3146102a857806326e67a37146102e657600080fd5b8062bf2e80146101dc57806301e336671461021657806301ffc9a71461023857600080fd5b366101d757005b600080fd5b3480156101e857600080fd5b506001546101fe90600160e81b900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561022257600080fd5b50610236610231366004611ec3565b6106b6565b005b34801561024457600080fd5b50610258610253366004611eff565b6106df565b604051901515815260200161020d565b34801561027457600080fd5b50610236610283366004611ec3565b610716565b34801561029457600080fd5b506102366102a3366004611f29565b610829565b3480156102b457600080fd5b506102d86102c3366004611f4b565b60009081526020819052604090206001015490565b60405190815260200161020d565b3480156102f257600080fd5b50610306610301366004611f78565b61084e565b60405161020d9190611f93565b34801561031f57600080fd5b5061025861032e366004611fda565b6108d5565b34801561033f57600080fd5b5061023661034e366004611ff5565b61096c565b34801561035f57600080fd5b506102d861036e36600461207e565b610996565b34801561037f57600080fd5b5061023661038e366004611ff5565b610a09565b34801561039f57600080fd5b506102d86103ae3660046120f5565b600460209081526000928352604080842090915290825290205481565b3480156103d757600080fd5b506102366103e636600461211f565b610a22565b6102366103f93660046121eb565b610aff565b34801561040a57600080fd5b5060015460ff16610258565b34801561042257600080fd5b50610236610431366004611fda565b610c01565b34801561044257600080fd5b50600254610456906001600160a01b031681565b6040516001600160a01b03909116815260200161020d565b34801561047a57600080fd5b50610258610489366004611f4b565b610c6f565b34801561049a57600080fd5b506102366104a936600461235c565b610c8d565b3480156104ba57600080fd5b506102586104c9366004611ff5565b610e67565b6102d86104dc3660046123be565b610e90565b3480156104ed57600080fd5b5061052b6104fc366004611f78565b6006602052600090815260409020805460019091015461ffff8216916201000090046001600160a01b03169083565b6040805161ffff90941684526001600160a01b0390921660208401529082015260600161020d565b34801561055f57600080fd5b506102d8600081565b34801561057457600080fd5b506105ae61058336600461242e565b60056020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b0390911660208301520161020d565b3480156105de57600080fd5b506102366105ed36600461242e565b611072565b3480156105fe57600080fd5b506001546104569061010090046001600160a01b031681565b34801561062357600080fd5b50610236610632366004611fda565b6110da565b34801561064357600080fd5b50610236610652366004612449565b611148565b34801561066357600080fd5b5060015461067e90600160a81b90046001600160401b031681565b6040516001600160401b03909116815260200161020d565b3480156106a257600080fd5b506102366106b1366004611ff5565b611187565b6000805160206129558339815191526106ce816111ac565b6106d98484846111b9565b50505050565b60006001600160e01b03198216637965db0b60e01b148061071057506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008051602061295583398151915261072e816111ac565b6107587f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de85610e67565b61077557604051635ee08b9760e01b815260040160405180910390fd5b604051637ecdf29160e11b81526001600160a01b0384811660048301526024820184905285169063fd9be52290604401600060405180830381600087803b1580156107bf57600080fd5b505af11580156107d3573d6000803e3d6000fd5b5050604080516001600160a01b038089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9250606001905060405180910390a150505050565b6000610834816111ac565b8115610846576108426111dc565b5050565b610842611230565b63ffffffff81166000908152600360209081526040918290208054835181840281018401909452808452606093928301828280156108c957602002820191906000526020600020906000905b825461010083900a900460ff1681526020600192830181810494850194909303909202910180841161089a5790505b50505050509050919050565b60006109017f4270fae16c6d150d00e80b689daca99e8073b1838ff2b6063a37be9d851283e483610e67565b1561090e57506000919050565b600154600160a81b90046001600160401b0316158061095257506109527f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca83610e67565b1561095f57506001919050565b506000919050565b919050565b600082815260208190526040902060010154610987816111ac565b6109918383611269565b505050565b6000806109a5617530886124ce565b63ffffffff81166000908152600660209081526040918290208251606081018452815461ffff811682526201000090046001600160a01b03169281019290925260010154918101919091529091506109fd81896112f3565b98975050505050505050565b60405163dec9f03160e01b815260040160405180910390fd5b6000610a2d816111ac565b60005b82811015610ac05736848483818110610a4b57610a4b6124ff565b60600291909101915050604081013560046000610a6b6020850185611fda565b6001600160a01b03166001600160a01b031681526020019081526020016000206000836020016020810190610aa09190611f78565b63ffffffff16815260208101919091526040016000205550600101610a30565b507f360a0efdea8fcc9a11ee20a2099e314ddcf49a941d66790cd4e5adea30faa0748383604051610af2929190612515565b60405180910390a1505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b4857604051639027ddc960e01b815260040160405180910390fd5b61ffff821660009081526005602090815260409182902082518084019093525463ffffffff8116835264010000000090046001600160a01b0316908201819052610b939085906113c9565b610b9c82610c6f565b15610bc25760405163d672708560e01b8152600481018390526024015b60405180910390fd5b610bcb82611404565b845115610beb5760405163ef673a5b60e01b815260040160405180910390fd5b8051610bf890888861142c565b50505050505050565b600080516020612955833981519152610c19816111ac565b600280546001600160a01b0319166001600160a01b0384169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d906020015b60405180910390a15050565b6000610c79611523565b600092835260205250604090205460ff1690565b600080516020612955833981519152610ca5816111ac565b60005b82811015610e355736848483818110610cc357610cc36124ff565b60800291909101915060009050617530610ce06020840184611f78565b610cea91906124ce565b9050610cfc604083016020840161242e565b63ffffffff821660009081526006602052604090819020805461ffff191661ffff9390931692909217909155610d389060608401908401611fda565b63ffffffff8216600090815260066020908152604080832080546001600160a01b0395909516620100000262010000600160b01b03199095169490941784556060860135600190940193909355839260059291610d9991870190870161242e565b61ffff16815260208101919091526040908101600020805463ffffffff191663ffffffff9390931692909217909155610dd89060608401908401611fda565b60056000610dec604086016020870161242e565b61ffff168152602081019190915260400160002080546001600160a01b039290921664010000000002640100000000600160c01b03199092169190911790555050600101610ca8565b507f70273b3b5cc86ad539cbe2db9605169466048523e9918124bf9229292f1d23878383604051610af2929190612583565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610ea260a0850160808601611fda565b610eab816108d5565b610ec857604051634ab5ebcd60e01b815260040160405180910390fd5b6000610ee033610edb6020890189611f78565b611551565b90506000617530610ef46020890189611f78565b610efe91906124ce565b90506000610f5183610f1360208b018b6125f9565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408b01356115b0565b63ffffffff831660009081526006602090815260408083208151606081018352815461ffff811682526201000090046001600160a01b03168185015260019091015491810191909152929350610fb4908390610faf908d018d611f78565b6112f3565b9050610fc033826115c5565b8151602083015160408085015190516312d729bd60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693634b5ca6f4938693611021938a916000918590859060040161268f565b60206040518083038185885af115801561103f573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061106491906126e8565b509998505050505050505050565b60008051602061295583398151915261108a816111ac565b6001805461ffff60e81b1916600160e81b61ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d90602001610c63565b6000805160206129558339815191526110f2816111ac565b60018054610100600160a81b0319166101006001600160a01b038516908102919091179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e090602001610c63565b600080516020612955833981519152611160816111ac565b63ffffffff84166000908152600360205260409020611180908484611dee565b5050505050565b6000828152602081905260409020600101546111a2816111ac565b6109918383611605565b6111b6813361168d565b50565b6001600160a01b0383166111d15761099182826116e6565b610991838383611793565b6111e46117ce565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a1565b611238611816565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611213565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca8214801561129f575061129d8282610e67565b155b156112e957600180546015906112c490600160a81b90046001600160401b031661271b565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b610842828261185f565b600082604001516000036113225760405163fb3aae0b60e01b815263ffffffff83166004820152602401610bb9565b8251604080850151905163c23ee3c360e01b815261ffff90921660048301526000602483015260448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c23ee3c3906064016040805180830381865afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c19190612741565b509392505050565b6001600160a01b0381168214610842576040516303bd61b960e31b8152600481018390526001600160a01b0382166024820152604401610bb9565b600161140e611523565b60009283526020526040909120805460ff1916911515919091179055565b8263ffffffff1661753061144084846118e3565b61144a91906124ce565b63ffffffff161461149d5760405162461bcd60e51b815260206004820152601e60248201527f44564e41646170746572426173653a20696e76616c69642073726345696400006044820152606401610bb9565b60008060006114ac8585611914565b925092509250826001600160a01b0316630223536e83836001600160401b036040518463ffffffff1660e01b81526004016114e993929190612765565b600060405180830381600087803b15801561150357600080fd5b505af1158015611517573d6000803e3d6000fd5b50505050505050505050565b60008061071060017f5e6aacb3f16e5b01c8b072a0ab4c38e919266014a45db863ee64a4580fb3e7e3612797565b6001600160a01b038216600090815260046020908152604080832063ffffffff85168452909152902054806107105760405163792893f360e11b81526001600160a01b038416600482015263ffffffff83166024820152604401610bb9565b60606115bd8484846119ca565b949350505050565b4781811015610991576115d883306119f9565b50478181101561099157604051636079581f60e01b81526004810182905260248101839052604401610bb9565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca8214801561163957506116398282610e67565b15611683576001805460159061165e90600160a81b90046001600160401b03166127aa565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b6108428282611b17565b6116978282610e67565b610842576116a481611b7c565b6116af836020611b8e565b6040516020016116c09291906127cd565b60408051601f198184030181529082905262461bcd60e51b8252610bb991600401612842565b6001600160a01b03821661170d576040516306b7a93160e41b815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461175a576040519150601f19603f3d011682016040523d82523d6000602084013e61175f565b606091505b505090508061099157604051631196f20d60e21b81526001600160a01b038416600482015260248101839052604401610bb9565b6001600160a01b0382166117ba576040516306b7a93160e41b815260040160405180910390fd5b6109916001600160a01b0384168383611d30565b60015460ff16156118145760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610bb9565b565b60015460ff166118145760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610bb9565b6118698282610e67565b610842576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561189f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000826049836118f4826004612855565b9261190193929190612868565b61190a91612892565b60e01c9392505050565b600060608161192560516040612855565b84146119445760405163f1d10e0d60e01b815260040160405180910390fd5b611961611955602060008789612868565b61195e916128c2565b90565b9250611971604060208688612868565b61197a916128c2565b90506119898460408188612868565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509598929750929550909350505050565b60608382846040516020016119e1939291906128e0565b60405160208183030381529060405290509392505050565b60405163faaebd2160e01b81523060048201526000906001600160a01b0384169063faaebd2190602401602060405180830381865afa158015611a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a64919061290d565b9050801561099157604051637ecdf29160e11b81526001600160a01b0383811660048301526024820183905284169063fd9be52290604401600060405180830381600087803b158015611ab657600080fd5b505af1158015611aca573d6000803e3d6000fd5b5050604080516001600160a01b038088168252861660208201529081018490527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb92506060019050610af2565b611b218282610e67565b15610842576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606107106001600160a01b03831660145b60606000611b9d836002612926565b611ba8906002612855565b6001600160401b03811115611bbf57611bbf612193565b6040519080825280601f01601f191660200182016040528015611be9576020820181803683370190505b509050600360fc1b81600081518110611c0457611c046124ff565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611c3357611c336124ff565b60200101906001600160f81b031916908160001a9053506000611c57846002612926565b611c62906001612855565b90505b6001811115611cda576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611c9657611c966124ff565b1a60f81b828281518110611cac57611cac6124ff565b60200101906001600160f81b031916908160001a90535060049490941c93611cd38161293d565b9050611c65565b508315611d295760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610bb9565b9392505050565b604080516001600160a01b03841660248201526044808201849052825180830390910181526064909101909152602080820180516001600160e01b031663a9059cbb60e01b1781528251610991938793909260009283929183919082885af180611da0576040513d6000823e3d81fd5b50506000513d91508115611db8578060011415611dc5565b6001600160a01b0384163b155b156106d957604051635274afe760e01b81526001600160a01b0385166004820152602401610bb9565b82805482825590600052602060002090601f01602090048101928215611e875791602002820160005b83821115611e5857833560ff1683826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302611e17565b8015611e855782816101000a81549060ff0219169055600101602081600001049283019260010302611e58565b505b50611e93929150611e97565b5090565b5b80821115611e935760008155600101611e98565b80356001600160a01b038116811461096757600080fd5b600080600060608486031215611ed857600080fd5b611ee184611eac565b9250611eef60208501611eac565b9150604084013590509250925092565b600060208284031215611f1157600080fd5b81356001600160e01b031981168114611d2957600080fd5b600060208284031215611f3b57600080fd5b81358015158114611d2957600080fd5b600060208284031215611f5d57600080fd5b5035919050565b803563ffffffff8116811461096757600080fd5b600060208284031215611f8a57600080fd5b611d2982611f64565b6020808252825182820181905260009190848201906040850190845b81811015611fce57835160ff1683529284019291840191600101611faf565b50909695505050505050565b600060208284031215611fec57600080fd5b611d2982611eac565b6000806040838503121561200857600080fd5b8235915061201860208401611eac565b90509250929050565b6001600160401b03811681146111b657600080fd5b60008083601f84011261204857600080fd5b5081356001600160401b0381111561205f57600080fd5b60208301915083602082850101111561207757600080fd5b9250929050565b60008060008060006080868803121561209657600080fd5b61209f86611f64565b945060208601356120af81612021565b93506120bd60408701611eac565b925060608601356001600160401b038111156120d857600080fd5b6120e488828901612036565b969995985093965092949392505050565b6000806040838503121561210857600080fd5b61211183611eac565b915061201860208401611f64565b6000806020838503121561213257600080fd5b82356001600160401b038082111561214957600080fd5b818501915085601f83011261215d57600080fd5b81358181111561216c57600080fd5b86602060608302850101111561218157600080fd5b60209290920196919550909350505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156121d1576121d1612193565b604052919050565b803561ffff8116811461096757600080fd5b60008060008060008060a0878903121561220457600080fd5b6001600160401b03808835111561221a57600080fd5b6122278989358a01612036565b9097509550602088013581101561223d57600080fd5b6020880135880189601f82011261225357600080fd5b818135111561226457612264612193565b6122746020823560051b016121a9565b81358082526020808301929160051b8401018c101561229257600080fd5b602083015b6020843560051b8501018110156123305784813511156122b657600080fd5b803584018d603f8201126122c957600080fd5b6020810135868111156122de576122de612193565b6122f1601f8201601f19166020016121a9565b8181528f604083850101111561230657600080fd5b81604084016020830137600060208383010152808652505050602083019250602081019050612297565b50965050505060408701359250612349606088016121d9565b9150608087013590509295509295509295565b6000806020838503121561236f57600080fd5b82356001600160401b038082111561238657600080fd5b818501915085601f83011261239a57600080fd5b8135818111156123a957600080fd5b8660208260071b850101111561218157600080fd5b6000806000604084860312156123d357600080fd5b83356001600160401b03808211156123ea57600080fd5b9085019060a082880312156123fe57600080fd5b9093506020850135908082111561241457600080fd5b5061242186828701612036565b9497909650939450505050565b60006020828403121561244057600080fd5b611d29826121d9565b60008060006040848603121561245e57600080fd5b61246784611f64565b925060208401356001600160401b038082111561248357600080fd5b818601915086601f83011261249757600080fd5b8135818111156124a657600080fd5b8760208260051b85010111156124bb57600080fd5b6020830194508093505050509250925092565b600063ffffffff808416806124f357634e487b7160e01b600052601260045260246000fd5b92169190910692915050565b634e487b7160e01b600052603260045260246000fd5b6020808252818101839052600090604080840186845b87811015612576576001600160a01b0361254483611eac565b16835263ffffffff612557868401611f64565b168386015281840135848401526060928301929091019060010161252b565b5090979650505050505050565b6020808252818101839052600090604080840186845b878110156125765763ffffffff6125af83611f64565b16835261ffff6125c08684016121d9565b16838601526001600160a01b036125d8838601611eac565b16838501526060828101359084015260809283019290910190600101612599565b6000808335601e1984360301811261261057600080fd5b8301803591506001600160401b0382111561262a57600080fd5b60200191503681900382131561207757600080fd5b60005b8381101561265a578181015183820152602001612642565b50506000910152565b6000815180845261267b81602086016020860161263f565b601f01601f19169290920160200192915050565b600061ffff808a16835260018060a01b03808a16602085015260e060408501526126bc60e085018a612663565b925087606085015286608085015281861660a085015280851660c0850152505098975050505050505050565b6000602082840312156126fa57600080fd5b8151611d2981612021565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681810361273757612737612705565b6001019392505050565b6000806040838503121561275457600080fd5b505080516020909101519092909150565b6060815260006127786060830186612663565b90508360208301526001600160401b0383166040830152949350505050565b8181038181111561071057610710612705565b60006001600160401b038216806127c3576127c3612705565b6000190192915050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161280581601785016020880161263f565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161283681602884016020880161263f565b01602801949350505050565b602081526000611d296020830184612663565b8082018082111561071057610710612705565b6000808585111561287857600080fd5b8386111561288557600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156128ba5780818660040360031b1b83161692505b505092915050565b8035602083101561071057600019602084900360031b1b1692915050565b838152826020820152600082516128fe81604085016020870161263f565b91909101604001949350505050565b60006020828403121561291f57600080fd5b5051919050565b808202811582820484141761071057610710612705565b60008161294c5761294c612705565b50600019019056fea49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a2646970667358221220a42d2c5786f3ca50c43c6ae9f4c1bc65bf5d4958519bcf90bd811c1d8f35bf6064736f6c63430008160033000000000000000000000000ee91c335eab126df5fdb3797ea9d6ad93aec972200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a39a8694ea35efbbcfcb1bc4f8d909491217f1f7000000000000000000000000c224bf25dcc99236f00843c7d8c4194abe8aa94a