0 txs
0 calls
constructor
No constructor.
functions
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (uint256)
asset
viewfunction asset() view returns (address)
hasAllRoles
viewfunction hasAllRoles(address user, uint256 roles) view returns (bool)
hasAnyRole
viewfunction hasAnyRole(address user, uint256 roles) view returns (bool)
owner
viewfunction owner() view returns (address result)
ownershipHandoverExpiresAt
viewfunction ownershipHandoverExpiresAt(address pendingOwner) view returns (uint256 result)
pendingXChainInvests
viewfunction pendingXChainInvests(uint256) view returns (uint256)
previewIdDivestMultiXChainMultiVault
viewfunction previewIdDivestMultiXChainMultiVault(tuple req) view returns (bytes32[] requestIds)
previewIdDivestMultiXChainSingleVault
viewfunction previewIdDivestMultiXChainSingleVault(tuple req) view returns (bytes32[] requestIds)
previewIdDivestSingleXChainMultiVault
viewfunction previewIdDivestSingleXChainMultiVault(tuple req) view returns (bytes32[] requestIds)
previewIdDivestSingleXChainSingleVault
viewfunction previewIdDivestSingleXChainSingleVault(tuple req) view returns (bytes32[] requestIds)
receiverImplementation
viewfunction receiverImplementation() view returns (address)
receivers
viewfunction receivers(bytes32) view returns (address)
recoveryAddress
viewfunction recoveryAddress() view returns (address)
RELAYER_ROLE
viewfunction RELAYER_ROLE() view returns (uint256)
requests
viewfunction requests(bytes32) view returns (address controller, uint256 requestedAssets, address receiverAddress, bool hasReceiver)
rolesOf
viewfunction rolesOf(address user) view returns (uint256 roles)
selectors
purefunction selectors() pure returns (bytes4[])
superformRouter
viewfunction superformRouter() view returns (address)
superPositions
viewfunction superPositions() view returns (address)
superRegistry
viewfunction superRegistry() view returns (address)
totalPendingXChainDivests
viewfunction totalPendingXChainDivests() view returns (uint256)
totalpendingXChainInvests
viewfunction totalpendingXChainInvests() view returns (uint256)
vault
viewfunction vault() view returns (address)
cancelOwnershipHandover
payablefunction cancelOwnershipHandover() payable
completeOwnershipHandover
payablefunction completeOwnershipHandover(address pendingOwner) payable
divestMultiXChainMultiVault
payablefunction divestMultiXChainMultiVault(tuple req, bool useReceivers) payable returns (uint256 totalAmount)
divestMultiXChainSingleVault
payablefunction divestMultiXChainSingleVault(tuple req, bool useReceivers) payable returns (uint256 totalAmount)
divestSingleXChainMultiVault
payablefunction divestSingleXChainMultiVault(tuple req, bool useReceivers) payable returns (uint256 totalAmount)
divestSingleXChainSingleVault
payablefunction divestSingleXChainSingleVault(tuple req, bool useReceivers) payable returns (uint256 sharesValue)
getReceiver
nonpayablefunction getReceiver(bytes32 key) returns (address receiverAddress)
grantRoles
payablefunction grantRoles(address user, uint256 roles) payable
notifyBatchRefund
nonpayablefunction notifyBatchRefund(uint256[] superformIds, uint256[] values)
notifyRefund
nonpayablefunction notifyRefund(uint256 superformId, uint256 value)
renounceOwnership
payablefunction renounceOwnership() payable
renounceRoles
payablefunction renounceRoles(uint256 roles) payable
requestOwnershipHandover
payablefunction requestOwnershipHandover() payable
revokeRoles
payablefunction revokeRoles(address user, uint256 roles) payable
settleDivest
nonpayablefunction settleDivest(bytes32 key, uint256 assets, bool force)
transferOwnership
payablefunction transferOwnership(address newOwner) payable
events
DivestRefunded
event DivestRefunded(uint256 indexed superformId, uint256 indexed value, bytes32 indexed key)
DivestXChain
event DivestXChain(uint256[] indexed superformIds, uint256 indexed requestedAssets, bytes32 key)
OwnershipHandoverCanceled
event OwnershipHandoverCanceled(address indexed pendingOwner)
OwnershipHandoverRequested
event OwnershipHandoverRequested(address indexed pendingOwner)
OwnershipTransferred
event OwnershipTransferred(address indexed oldOwner, address indexed newOwner)
PendingDivestUpdated
event PendingDivestUpdated(uint256 oldAmount, uint256 newAmount)
ReceiverDeployed
event ReceiverDeployed(bytes32 indexed key, address indexed receiver)
RequestCreated
event RequestCreated(bytes32 indexed key, address indexed controller, uint256[] superformIds)
RolesUpdated
event RolesUpdated(address indexed user, uint256 indexed roles)
errors
AlreadyInitialized
error AlreadyInitialized()
InvalidAmount
error InvalidAmount()
InvalidKey
error InvalidKey()
InvalidReceiver
error InvalidReceiver()
InvalidSuperformId
error InvalidSuperformId()
NewOwnerIsZeroAddress
error NewOwnerIsZeroAddress()
NoHandoverRequest
error NoHandoverRequest()
NotVault
error NotVault()
StaleSharePrice
error StaleSharePrice()
TotalAmountMismatch
error TotalAmountMismatch()
Unauthorized
error Unauthorized()
VaultNotListed
error VaultNotListed()
creation bytecode
0x608080604052346015576143e4908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063051f8272146102945780630a5b150d1461028f578063112e335c1461028a57806315916ed814610285578063183a4f6e146102805780631c10893f1461027b5780631cd64df41461027657806324c73dda14610271578063256929621461026c5780632de94807146102675780632f3a74081461026257806330c8472f1461025d57806338d52e0f146102585780633939f782146102535780633e9029e21461024e578063416b8bf0146102495780634a4ee7b114610244578063514e62fc1461023f57806354d1f13d1461023a57806358fe43621461023557806365617637146102305780636e25b9781461022b578063710eb26c14610226578063715018a61461022157806375b238fc1461021c5780638da5cb5b146102175780638f2c536014610212578063926d7d7f1461020d578063997873d5146102085780639d86698514610203578063b7075c70146101fe578063c904f7c1146101f9578063d4a5f011146101f4578063e3e351e3146101ef578063ed61a911146101ea578063f04e283e146101e5578063f08c58a3146101e0578063f2fde38b146101db578063fbfa77cf146101d65763fee81cf4146101d1575f80fd5b613084565b61305c565b61301d565b613000565b612faf565b612f7f565b612cb5565b612be8565b612bb6565b6127d2565b612681565b612509565b6124ee565b612288565b61222c565b612211565b6121c8565b6121a0565b612062565b611b8d565b611b65565b611b21565b611add565b611ab1565b611a2d565b611905565b61187a565b611852565b61182a565b611332565b611283565b61123a565b611212565b6111cd565b611167565b61114d565b611123565b6110fc565b611020565b610977565b634e487b7160e01b5f52604160045260245ffd5b60c081019081106001600160401b038211176102c857604052565b610299565b606081019081106001600160401b038211176102c857604052565b90601f801991011681019081106001600160401b038211176102c857604052565b60405190610319610160836102e8565b565b6001600160401b0381116102c85760051b60200190565b60ff81160361033d57565b5f80fd5b359061031982610332565b9080601f8301121561033d5781356103638161031b565b9261037160405194856102e8565b81845260208085019260051b82010192831161033d57602001905b8282106103995750505090565b6020809183356103a881610332565b81520191019061038c565b9080601f8301121561033d5781356103ca8161031b565b926103d860405194856102e8565b81845260208085019260051b8201019183831161033d5760208201905b83821061040457505050505090565b81356001600160401b03811161033d576020916104268784809488010161034c565b8152019101906103f5565b6001600160401b0381160361033d57565b359061031982610431565b9080601f8301121561033d5781356104648161031b565b9261047260405194856102e8565b81845260208085019260051b82010192831161033d57602001905b82821061049a5750505090565b6020809183356104a981610431565b81520191019061048d565b9080601f8301121561033d5781356104cb8161031b565b926104d960405194856102e8565b81845260208085019260051b82010192831161033d57602001905b8282106105015750505090565b81358152602091820191016104f4565b81601f8201121561033d578035906001600160401b0382116102c85760405192610545601f8401601f1916602001856102e8565b8284526020838301011161033d57815f926020809301838601378301015290565b6001600160a01b0381160361033d57565b359061031982610566565b91909160c08184031261033d576040519061059c826102ad565b81938135916001600160401b03831161033d576105bf60a0939284938301610511565b845260208101356105cf81610566565b60208501526105e060408201610577565b60408501526105f160608201610341565b606085015261060260808201610442565b60808501520135910152565b9080601f8301121561033d5781356106258161031b565b9261063360405194856102e8565b81845260208085019260051b8201019183831161033d5760208201905b83821061065f57505050505090565b81356001600160401b03811161033d5760209161068187848094880101610582565b815201910190610650565b8015150361033d57565b35906103198261068c565b9080601f8301121561033d5781356106b88161031b565b926106c660405194856102e8565b81845260208085019260051b82010192831161033d57602001905b8282106106ee5750505090565b6020809183356106fd8161068c565b8152019101906106e1565b9190916101608184031261033d5761071e610309565b9281356001600160401b03811161033d578161073b9184016104b4565b845260208201356001600160401b03811161033d578161075c9184016104b4565b602085015260408201356001600160401b03811161033d57816107809184016104b4565b604085015260608201356001600160401b03811161033d57816107a49184016104b4565b606085015260808201356001600160401b03811161033d57816107c891840161060e565b608085015260a08201356001600160401b03811161033d57816107ec918401610511565b60a085015260c08201356001600160401b03811161033d57816108109184016106a1565b60c085015260e08201356001600160401b03811161033d57816108349184016106a1565b60e08501526108466101008301610577565b6101008501526108596101208301610577565b6101208501526101408201356001600160401b03811161033d5761087d9201610511565b610140830152565b919060608382031261033d5760405161089d816102cd565b809380356001600160401b03811161033d57836108bb9183016103b3565b825260208101356001600160401b03811161033d57836108dc91830161044d565b60208301526040810135906001600160401b03821161033d57019180601f8401121561033d57823561090d8161031b565b9361091b60405195866102e8565b81855260208086019260051b8201019183831161033d5760208201905b83821061094a57505050505060400152565b81356001600160401b03811161033d5760209161096c87848094880101610708565b815201910190610938565b604036600319011261033d576004356001600160401b03811161033d576109a2903690600401610885565b6024356109ae8161068c565b6004546001600160a01b03163303610fd8573447035f925f9160408201915b82518051851015610ed657846109e591939293613173565b51519560206109f5868651613173565b510151915f975f92610a1d610a1160045460018060a01b031690565b6001600160a01b031690565b6001600160a01b0381165f908152600c602052604090208390610a6a90805490610a468261319b565b9055610a5c6040519384926020840196876131e1565b03601f1981018352826102e8565b51902090610a80825f52600d60205260405f2090565b905f9460028301965b8551871015610c3457610ad8610a9f8888613173565b5160045460c090610ab8906001600160a01b0316610a11565b9160405180948192632500ed8d60e21b8352600483019190602083019252565b0381845afa918215610bf8575f92610bfd575b5060a0820151610b2e916020916001600160a01b03165b604051634f2a078560e01b81526001600160a01b03909116600482015292839190829081906024820190565b03915afa908115610bf8575f91610bca575b5015610bbb57610b90610bab8a8f8f95610b9e8f60408f91610ba59560019b610b87610bb19c610b7387610b9696613173565b516005546001600160a01b03165b91613c1f565b9a8b809a6132d8565b51613173565b510151613173565b519061330f565b9661330f565b9f61330f565b9601959c91610a89565b63f6ad13d560e01b5f5260045ffd5b610beb915060203d8111610bf1575b610be381836102e8565b8101906132c3565b5f610b40565b503d610bd9565b6132b8565b610b2e919250610c2560209160c03d8111610c2d575b610c1d81836102e8565b81019061323b565b929150610aeb565b503d610c13565b92919c9550999550929192610c4884613d2d565b508a868a8215610ea857505050610c5e84613ac6565b916001600160a01b0383168015610e9957803b1561033d57604051638ab48d2560e01b815260048101929092525f908290602490829084905af18015610bf8578c92610d31928492610e85575b505b600454610ce290610cc6906001600160a01b0316610a11565b82546001600160a01b0319166001600160a01b03909116178255565b6004810180546001600160a01b0319166001600160a01b038716178155908890600390610d12896001830161332f565b0155805460ff60a01b191691151560a01b60ff60a01b16919091179055565b610e4a575b50600154610d4c906001600160a01b0316610a11565b600454909590610d64906001600160a01b0316610a11565b90863b1561033d57610d9396835f80946040519a8b9586948593631759616b60e11b85523090600486016133b3565b03925af1948515610bf857610e145f8051602061438f83398151915292610e2592600198610e30575b5060045460a089901b89900390610ddb906001600160a01b0316610a11565b16857fedd56bf0b0fff6b846b87cad8d34516c3546a12c1449c0f769947f4fe96653d460405180610e0c8682613405565b0390a3613416565b604051938452929081906020820190565b0390a30192906109cd565b80610e3e5f610e44936102e8565b806110f2565b5f610dbc565b80610e71610e7f92610100610e60898d51613173565b516001600160a01b03909216910152565b610120610e60878b51613173565b5f610d36565b80610e3e5f610e93936102e8565b5f610cab565b631e4ec46b60e01b5f5260045ffd5b82939450610100610ec1610d319493610ed09351613173565b5101516001600160a01b031690565b93610cad565b600254879084908490610ef1906001600160a01b0316610a11565b803b1561033d57610f19915f91604051808095819463165b7a3b60e01b835260048301613732565b039134905af18015610bf857610fc4575b507f455bd8711c92aa242053fdab345da538dbbde364164477e4efbf2c0a86ce01c1600a54610f61610f5c858361330f565b600a55565b600a5460408051928352602083019190915290a14790811080600114610fb75715610f96575b604051828152602090f35b0390f35b5f9081803892325af115610faa5781610f87565b63b12d13eb5f526004601cfd5b631c26714c5f526004601cfd5b80610e3e5f610fd2936102e8565b82610f2a565b6362df054560e01b5f5260045ffd5b60206040818301928281528451809452019201905f5b81811061100a5750505090565b8251845260209384019390920191600101610ffd565b3461033d57602036600319011261033d576004356001600160401b03811161033d576110526040913690600401610885565b0161105e8151516137ef565b6004549091906001600160a01b03165f61107782610a11565b905b835180518210156110e4579061109181600193613173565b5151610a5c6110d06110bd846110b78860018060a01b03165f52600c60205260405f2090565b5461330f565b9260405192839160208301958a876131e1565b5190206110dd8288613173565b5201611079565b60405180610f928882610fe7565b5f91031261033d57565b3461033d575f36600319011261033d575f546040516001600160a01b039091168152602090f35b3461033d57602036600319011261033d576004355f526009602052602060405f2054604051908152f35b602036600319011261033d57611165600435336142fe565b005b604036600319011261033d5760043561117f81610566565b6024359061118b613e5d565b638b78c6d8600c525f526020600c2090815417809155600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3005b3461033d57604036600319011261033d5760206112086004356111ef81610566565b602435918291638b78c6d8600c525f526020600c205490565b1614604051908152f35b3461033d575f36600319011261033d576003546040516001600160a01b039091168152602090f35b5f36600319011261033d5763389a75e1600c52335f526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a2005b3461033d57602036600319011261033d5760206112b86004356112a581610566565b638b78c6d8600c525f526020600c205490565b604051908152f35b919060608382031261033d57604051906112d9826102cd565b819380356001600160401b03811161033d57826112f791830161034c565b8352602081013561130781610431565b60208401526040810135916001600160401b03831161033d5760409261132d9201610708565b910152565b604036600319011261033d576004356001600160401b03811161033d5761135d9036906004016112c0565b6024356113698161068c565b6004546001600160a01b0381163303610fd857344703905f604085019182515151156114e25782516020815151910151510361181b5790938592916113b6906001600160a01b0316610a11565b6001600160a01b0381165f908152600c602052604090208054906113d98261319b565b90556113f684515191610a5c6040519384926020840196876131e1565b5190209061140c825f52600d60205260405f2090565b9460028601945f93845b8651518051871015611545578661142c91613173565b51801561153657600454611450919060c090610ab8906001600160a01b0316610a11565b0381845afa918215610bf8575f9261150f575b5060a082015161147e916020916001600160a01b0316610b02565b03915afa908115610bf8575f916114f1575b5015610bbb576114a990610b738860208b510151613173565b9081156114e2576001916114c96114d992610b9e8a60408d510151613173565b9b6114d4828c6132d8565b61330f565b95019498611416565b63162908e360e11b5f5260045ffd5b611509915060203d8111610bf157610be381836102e8565b8c611490565b61147e91925061152e60209160c03d8111610c2d57610c1d81836102e8565b929150611463565b634620307560e11b5f5260045ffd5b50888a95889261155485613d2d565b5081156117fe5761156485613ac6565b926001600160a01b0384168015610e9957803b1561033d57604051638ab48d2560e01b815260048101939093525f908390602490829084905af1908115610bf8576115fd9284926117ea575b505b6004546115cb90610cc6906001600160a01b0316610a11565b6004810180546001600160a01b0319166001600160a01b038716178155908a90600390610d128951516001830161332f565b6117c6575b50600154611618906001600160a01b0316610a11565b60045461162d906001600160a01b0316610a11565b8251916020835193015190803b1561033d57611665935f809460405196879586948593631759616b60e11b85523090600486016133b3565b03925af18015610bf8576117b2575b5060025461168a906001600160a01b0316610a11565b803b1561033d576116b2935f9160405180809781946387493e2160e01b835260048301613821565b039134905af1928315610bf857610e145f8051602061438f8339815191529261177f92889661179e575b507f455bd8711c92aa242053fdab345da538dbbde364164477e4efbf2c0a86ce01c1600a5461170e610f5c898361330f565b600a5460408051928352602083019190915290a1600454611737906001600160a01b0316610a11565b857fedd56bf0b0fff6b846b87cad8d34516c3546a12c1449c0f769947f4fe96653d46117758451519360405191829160018060a01b03169582613405565b0390a35151613416565b0390a34790811080600114610fb75715610f9657604051828152602090f35b80610e3e5f6117ac936102e8565b886116dc565b80610e3e5f6117c0936102e8565b85611674565b81516001600160a01b03919091166101009091018190528151610120015285611602565b80610e3e5f6117f8936102e8565b8a6115b0565b50825161010001516115fd9082906001600160a01b0316936115b2565b631ae3648760e01b5f5260045ffd5b3461033d575f36600319011261033d576001546040516001600160a01b039091168152602090f35b3461033d575f36600319011261033d576005546040516001600160a01b039091168152602090f35b3461033d57602036600319011261033d576004356001600160401b03811161033d576118ad610f929136906004016112c0565b6118b56137cd565b9060018060a01b036004541690815f52600c6020526118ec6040805f20549201515191610a5c6040519384926020840196876131e1565b5190206118f8826130ce565b5260405191829182610fe7565b3461033d575f36600319011261033d576020600a54604051908152f35b9190916101608184031261033d57611938610309565b928135845260208201356020850152604082013560408501526060820135606085015260808201356001600160401b03811161033d578161197a918401610582565b608085015260a08201356001600160401b03811161033d578161199e918401610511565b60a08501526119af60c08301610696565b60c085015261083460e08301610696565b919060608382031261033d57604051906119d9826102cd565b819380356001600160401b03811161033d57826119f791830161034c565b83526020810135611a0781610431565b60208401526040810135916001600160401b03831161033d5760409261132d9201611922565b3461033d57602036600319011261033d576004356001600160401b03811161033d57611a60610f929136906004016119c0565b6040611a6a6137cd565b910151516004546001600160a01b03165f818152600c6020908152604091829020548251918201938452918101919091526060810192909252906118ec8160808101610a5c565b604036600319011261033d57611165600435611acc81610566565b60243590611ad8613e5d565b6142fe565b3461033d57604036600319011261033d576020600435611afc81610566565b611b1660243591638b78c6d8600c525f526020600c205490565b161515604051908152f35b5f36600319011261033d5763389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2005b3461033d575f36600319011261033d576002546040516001600160a01b039091168152602090f35b604036600319011261033d576004356001600160401b03811161033d57611bb89036906004016119c0565b60243590611bc58261068c565b6004546001600160a01b0381163303610fd85734470391604081019384515192831561153657611bfd906001600160a01b0316610a11565b6001600160a01b0381165f908152600c602052604090208490611c56905b805490611c278261319b565b9055610a5c604051938492602084019687604091949392606082019560018060a01b0316825260208201520152565b51902091611c6383613d2d565b50811561200957611c7383613ac6565b906001600160a01b0382168015610e995760408851015190803b1561033d57604051638ab48d2560e01b815260048101929092525f908290602490829084905af18015610bf857611ff5575b505b600454611cd6906001600160a01b0316610a11565b604051632500ed8d60e21b8152600481018790529060c082602481845afa918215610bf8575f92611fcd575b5060a0820151611d1d916020916001600160a01b0316610b02565b03915afa908115610bf8575f91611fae575b5015610bbb57611d569084611f8d575b8851602001516005546001600160a01b0316610b81565b9687156114e2577f455bd8711c92aa242053fdab345da538dbbde364164477e4efbf2c0a86ce01c1600a54611d8e610f5c8b8361330f565b600a5460408051928352602083019190915290a1600154611db7906001600160a01b0316610a11565b600454909190602090611dd2906001600160a01b0316610a11565b91510151823b1561033d57611e0492885f809460405196879586948593637921219560e11b8552309060048601613869565b03925af18015610bf857611f79575b50600254611e29906001600160a01b0316610a11565b803b1561033d57611e51915f9160405180809581946367d70a2960e01b83526004830161392c565b039134905af1948515610bf857611f1b5f8051602061438f83398151915294611f3294610e14948b99611f65575b50611e886137cd565b93611e92856130ce565b52611efe896002611eab8b5f52600d60205260405f2090565b600454611ec490610cc6906001600160a01b0316610a11565b6004810180546001600160a01b0319166001600160a01b03909616959095178555611ef2886001830161332f565b826003820155016132d8565b805460ff60a01b191691151560a01b60ff60a01b16919091179055565b6004546001600160a01b0390610ddb908216610a11565b0390a34790811080600114610fb75715611f5157604051828152602090f35b5f9081803892325af115610faa575f610f87565b80610e3e5f611f73936102e8565b5f611e7f565b80610e3e5f611f87936102e8565b5f611e13565b88516001600160a01b03851661010090910181905289516101200152611d3f565b611fc7915060203d602011610bf157610be381836102e8565b5f611d2f565b611d1d919250611fed60209160c03d60c011610c2d57610c1d81836102e8565b929150611d02565b80610e3e5f612003936102e8565b5f611cbf565b855161010001516001600160a01b031690611cc1565b60206040818301928281528451809452019201905f5b8181106120425750505090565b82516001600160e01b031916845260209384019390920191600101612035565b3461033d575f36600319011261033d57610f9261207f600a61031b565b61208c60405191826102e8565b600a8152601f1961209d600a61031b565b013660208301376120bc6120b0826130ce565b636561763760e01b9052565b6120d46120c8826130e0565b6305e74e8160e31b9052565b6120ec6120e0826130f0565b630b7075c760e41b9052565b6121046120f882613100565b63028fc13960e11b9052565b61211c61211082613110565b63997873d560e01b9052565b61213461212882613120565b63e3e351e360e01b9052565b61214c61214082613130565b630416b8bf60e41b9052565b61216461215882613140565b63d4a5f01160e01b9052565b61217c61217082613151565b631c9cfbc160e11b9052565b61219461218882613162565b630a5b150d60e01b9052565b6040519182918261201f565b3461033d575f36600319011261033d576006546040516001600160a01b039091168152602090f35b5f36600319011261033d576121db613e5d565b5f638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35f638b78c6d81955005b3461033d575f36600319011261033d57602060405160018152f35b3461033d575f36600319011261033d57638b78c6d819546040516001600160a01b039091168152602090f35b9181601f8401121561033d578235916001600160401b03831161033d576020808501948460051b01011161033d57565b3461033d57604036600319011261033d576004356001600160401b03811161033d576122b8903690600401612258565b6024356001600160401b03811161033d576122d7903690600401612258565b604051630e50ce0360e21b81529091602082600481335afa918215610bf8575f926124cd575b503360018060a01b0361232b600461231d865f52600d60205260405f2090565b01546001600160a01b031690565b160361033d5761234b612346835f52600d60205260405f2090565b6139cb565b9060405193636883ac4d60e11b8552602085600481335afa948515610bf8575f9561249c575b505f955f9760406020860195015b828a106123fd576123ae89898960036123a0825f52600d60205260405f2090565b0154156123ed575b506141e6565b333b1561033d57604051638ab48d2560e01b815260048101919091525f8160248183335af18015610bf8576123df57005b80610e3e5f611165936102e8565b6123f6906140d8565b50836123a8565b5f999896959799505f805b89518051821015612482578161241d91613173565b516124298c8787613a30565b351461243757600101612408565b829b9997989a915061245b61245360019461247b939051613173565b51809c61330f565b9a612467838787613a30565b3561247384898b613a30565b35908b613eef565b019861237f565b50509861247b61245b612453849d9b999a9c600195610b90565b6124bf91955060203d6020116124c6575b6124b781836102e8565b810190613974565b935f612371565b503d6124ad565b6124e791925060203d6020116124c6576124b781836102e8565b905f6122fd565b3461033d575f36600319011261033d57602060405160028152f35b3461033d57604036600319011261033d57600435602435604051630e50ce0360e21b815291602083600481335afa928315610bf8575f93612660575b503360018060a01b03612565600461231d875f52600d60205260405f2090565b160361033d57612580612346845f52600d60205260405f2090565b9260405191636883ac4d60e11b8352602083600481335afa928315610bf8575f9361263f575b5060208501945f805b87518051821015612628576125c5828692613173565b51146125d3576001016125af565b6123ae97506125f793926125ed92506040905b0151613173565b5194859184613eef565b600361260b825f52600d60205260405f2090565b01541561261857506141e6565b612621906140d8565b505f6123a8565b50506123ae96506125ed9060406125f794936125e6565b61265991935060203d6020116124c6576124b781836102e8565b915f6125a6565b61267a91935060203d6020116124c6576124b781836102e8565b915f612545565b3461033d57602036600319011261033d576004355f52600d602052608060405f2060ff60018060a01b03825416916004600382015491015490604051938452602084015260018060a01b038116604084015260a01c1615156060820152f35b919060608382031261033d576040516126f8816102cd565b809380356001600160401b03811161033d57836127169183016103b3565b825260208101356001600160401b03811161033d578361273791830161044d565b60208301526040810135906001600160401b03821161033d57019180601f8401121561033d5782356127688161031b565b9361277660405195866102e8565b81855260208086019260051b8201019183831161033d5760208201905b8382106127a557505050505060400152565b81356001600160401b03811161033d576020916127c787848094880101611922565b815201910190612793565b604036600319011261033d576004356001600160401b03811161033d576127fd9036906004016126e0565b6024359061280a8261068c565b6004546001600160a01b03163303610fd8576040810191344703915f9190825b85518051821015612b73578161283f91613173565b51519061284a6137cd565b9482612855876130ce565b5260045461286b906001600160a01b0316610a11565b6001600160a01b0381165f908152600c60205260409020849061288d90611c1b565b51902061289981613d2d565b508515612b5c576128a981613ac6565b966001600160a01b0388168015610e995760406128c7868d51613173565b51015190803b1561033d57604051638ab48d2560e01b815260048101929092525f908290602490829084905af18015610bf857612b48575b505b600454612916906001600160a01b0316610a11565b604051632500ed8d60e21b815260048101879052909860c0826024818d5afa918215610bf8575f92612b28575b5060a0820151604051634f2a078560e01b81526001600160a01b0390911660048201526020816024818e5afa908115610bf8575f91612b0a575b5015610bbb578589612a23818f956129b36129ba91602061299f888b51613173565b5101516005546001600160a01b0316610b81565b809a61330f565b9d6129ef6129d08a5f52600d60205260405f2090565b80546001600160a01b0319166001600160a01b03909316929092178255565b6004810180546001600160a01b0319166001600160a01b03881617815590611efe908b90600290611ef28c6001830161332f565b612ae5575b5050600154612a3f906001600160a01b0316610a11565b600454602090612a64908890612a5d906001600160a01b0316610a11565b9451613173565b51015190803b1561033d57612a95975f80946040519a8b9586948593637921219560e11b8552309060048601613869565b03925af1948515610bf857610e145f8051602061438f83398151915292612adc92600198610e30575060045460a089901b89900390610ddb906001600160a01b0316610a11565b0390a30161282a565b610e608184610b9085610100610e6061012097612b029a51613173565b895f85612a28565b612b22915060203d8111610bf157610be381836102e8565b5f61297d565b612b4191925060c03d8111610c2d57610c1d81836102e8565b905f612943565b80610e3e5f612b56936102e8565b5f6128ff565b612b6d610100610ec1858c51613173565b96612901565b600254859087908590612b8e906001600160a01b0316610a11565b803b1561033d57610f19915f9160405180809581946302f1e00760e31b835260048301613a40565b3461033d57602036600319011261033d576004355f526007602052602060018060a01b0360405f205416604051908152f35b3461033d57602036600319011261033d576004356001600160401b03811161033d57612c1a60409136906004016126e0565b01612c268151516137ef565b6004546001600160a01b0316612c3b81610a11565b925b8051805115612ca757612c4f906130ce565b51516001600160a01b038581165f908152600c6020908152604091829020548251938716918401918252918301919091526060820192909252612c958160808101610a5c565b519020612ca1846130ce565b52612c3d565b60405180610f928682610fe7565b3461033d57606036600319011261033d57602435604435600435612cd88261068c565b638b78c6d8600c52335f5260026020600c20541615612f7257612d01612cfd826141f6565b1590565b61033d57612d1a612346825f52600d60205260405f2090565b92612d24826140d8565b5083516001600160a01b0316600454612d4790610a11906001600160a01b031681565b6001600160a01b039091160361033d5760a084015115612f435750610a11612d6e91613ac6565b9015612e9f575b6040516316d3df1560e31b81526001600160a01b03919091169190602081600481865afa908115610bf8575f91612e80575b508092803b1561033d576040516309a0725560e31b815260048101929092525f908290602490829084905af18015610bf857612df592610f5c92606092612e6c575b505b0151600a546141e6565b600554612e229082906001600160a01b0316600454612e1c906001600160a01b0316610a11565b906142c0565b600454612e37906001600160a01b0316610a11565b803b1561033d576040516317dd6b7d60e01b815260048101839052905f908290602490829084905af18015610bf8576123df57005b80610e3e5f612e7a936102e8565b5f612de9565b612e99915060203d6020116124c6576124b781836102e8565b5f612da7565b6040516316d3df1560e31b81526001600160a01b038216602082600481845afa908115610bf8576004925f92612f21575b5060209060405193848092636883ac4d60e11b82525afa918215610bf8575f92612f00575b501015612d75575f80fd5b612f1a91925060203d6020116124c6576124b781836102e8565b905f612ef5565b6020919250612f3c90823d84116124c6576124b781836102e8565b9190612ed0565b6005549093612df59350610f5c9250606091612f6d9086906001600160a01b031630903390614274565b612deb565b6382b429005f526004601cfd5b3461033d57602036600319011261033d576020612f9d600435613ac6565b6040516001600160a01b039091168152f35b602036600319011261033d57600435612fc781610566565b612fcf613e5d565b63389a75e1600c52805f526020600c209081544211612ff3575f6111659255613e6c565b636f5e88185f526004601cfd5b3461033d575f36600319011261033d576020600854604051908152f35b602036600319011261033d5760043561303581610566565b61303d613e5d565b8060601b1561304f5761116590613e6c565b637448fbae5f526004601cfd5b3461033d575f36600319011261033d576004546040516001600160a01b039091168152602090f35b3461033d57602036600319011261033d576004356130a181610566565b63389a75e1600c525f52602080600c2054604051908152f35b634e487b7160e01b5f52603260045260245ffd5b8051156130db5760200190565b6130ba565b8051600110156130db5760400190565b8051600210156130db5760600190565b8051600310156130db5760800190565b8051600410156130db5760a00190565b8051600510156130db5760c00190565b8051600610156130db5760e00190565b8051600710156130db576101000190565b8051600810156130db576101200190565b8051600910156130db576101400190565b80518210156130db5760209160051b010190565b634e487b7160e01b5f52601160045260245ffd5b5f1981146131a95760010190565b613187565b90602080835192838152019201905f5b8181106131cb5750505090565b82518452602093840193909201916001016131be565b613205939260609260018060a01b03168252602082015281604082015201906131ae565b90565b519061031982610332565b51906fffffffffffffffffffffffffffffffff8216820361033d57565b519061031982610566565b908160c091031261033d5760405190613253826102ad565b805163ffffffff8116810361033d576132b09160a091845260208101516020850152604081015161328381610566565b604085015261329460608201613208565b60608501526132a560808201613213565b608085015201613230565b60a082015290565b6040513d5f823e3d90fd5b9081602091031261033d57516132058161068c565b805490600160401b8210156102c857600182018082558210156130db575f5260205f200155565b906201518082018092116131a957565b919082018092116131a957565b818102929181159184041417156131a957565b8151916001600160401b0383116102c857600160401b83116102c857815483835580841061338d575b50602061336a9101915f5260205f2090565b5f5b8381106133795750505050565b60019060208451940193818401550161336c565b825f528360205f2091820191015b8181106133a85750613358565b5f815560010161339b565b926133e7906133f5936020969360018060a01b0316865260018060a01b03168686015260a0604086015260a08501906131ae565b9083820360608501526131ae565b9060808183039101525f81520190565b9060206132059281815201906131ae565b6040518091829160208251919201905f5b8181106134375750505003902090565b8251845285945060209384019390920191600101613427565b90602080835192838152019201905f5b81811061346d5750505090565b825160ff16845260209384019390920191600101613460565b9080602083519182815201916020808360051b8301019401925f915b8383106134b157505050505090565b90919293946020806134cf600193601f198682030187528951613450565b970193019301919392906134a2565b90602080835192838152019201905f5b8181106134fb5750505090565b82516001600160401b03168452602093840193909201916001016134ee565b91908251928382525f5b848110613544575050825f602080949584010152601f8019910116010190565b80602080928401015182828601015201613524565b9060a080613570845160c0855260c085019061351a565b93600180831b036020820151166020850152600180831b03604082015116604085015260ff60608201511660608501526001600160401b036080820151166080850152015191015290565b9080602083519182815201916020808360051b8301019401925f915b8383106135e657505050505090565b9091929394602080613604600193601f198682030187528951613559565b970193019301919392906135d7565b90602080835192838152019201905f5b8181106136305750505090565b82511515845260209384019390920191600101613623565b613205916101406136f76136e56136d36136c16136af61369d61368b6136798a516101608b526101608b01906131ae565b60208b01518a820360208c01526131ae565b60408a015189820360408b01526131ae565b606089015188820360608a01526131ae565b608088015187820360808901526135bb565b60a087015186820360a088015261351a565b60c086015185820360c0870152613613565b60e085015184820360e0860152613613565b610100808501516001600160a01b031690840152925b610120818101516001600160a01b03169084015201519061014081840391015261351a565b906020825260406137676137528351606060208701526080860190613486565b6020840151858203601f1901848701526134de565b910151916060601f1982840301910152815180825260208201916020808360051b8301019401925f915b8383106137a057505050505090565b90919293946020806137be600193601f198682030187528951613648565b97019301930191939290613791565b604080519091906137de83826102e8565b6001815291601f1901366020840137565b906137f98261031b565b61380660405191826102e8565b8281528092613817601f199161031b565b0190602036910137565b90613205916020815260406138428351606060208501526080840190613450565b926001600160401b03602082015116828401520151906060601f1982850301910152613648565b6001600160a01b039182168152911660208201526040810191909152606081019190915260a0608082018190525f9082015260c00190565b61320591815181526020820151602082015260408201516040820152606082015160608201526101406138fa6138e860808501516101606080860152610160850190613559565b60a085015184820360a086015261351a565b60c0808501511515908401529260e081810151151590840152610100818101516001600160a01b03169084015261370d565b906132059160208152604061394d8351606060208501526080840190613450565b926001600160401b03602082015116828401520151906060601f19828503019101526138a1565b9081602091031261033d575190565b90604051918281549182825260208201905f5260205f20925f5b8181106139b2575050610319925003836102e8565b845483526001948501948794506020909301920161399d565b906040516139d8816102ad565b60a060ff60048395600180851b0381541685526139f760018201613983565b6020860152613a0860028201613983565b6040860152600381015460608601520154600180841b0381166080850152821c161515910152565b91908110156130db5760051b0190565b90602082526040613a606137528351606060208701526080860190613486565b910151916060601f1982840301910152815180825260208201916020808360051b8301019401925f915b838310613a9957505050505090565b9091929394602080613ab7600193601f1986820301875289516138a1565b97019301930191939290613a8a565b8015613bc557613aee613ae1825f52600760205260405f2090565b546001600160a01b031690565b906001600160a01b03821615613b02575090565b5f5490929150613b1a906001600160a01b0316614343565b916001600160a01b03831690813b1561033d57604051639498bd7160e01b8152600481018290525f8160248183875af18015610bf857613bb1575b50613b8b84613b6c835f52600760205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b7f5eb251e783ba28250e9da29022abe8b0418830c9874be62308f8cf79bcc1e6fe5f80a3565b80610e3e5f613bbf936102e8565b5f613b55565b630eda9c3d60e31b5f5260045ffd5b919082604091031261033d576020825192015161320581610431565b60ff16604d81116131a957600a0a90565b8115613c0b570490565b634e487b7160e01b5f52601260045260245ffd5b604080820151613c889492939290613c3f906001600160a01b0316610a11565b845160a0860151845163a6c0cacd60e01b815263ffffffff90921660048301526001600160a01b0390811660248301529290921660448301529094859190829081906064820190565b03915afa8015610bf8575f935f91613cec575b506001600160401b03613cae91166132ff565b4211613cdd57613cd26060613cc9613cd7936132059661331c565b93015160ff1690565b613bf0565b90613c01565b6367fbea6760e01b5f5260045ffd5b6001600160401b039450613cae9150613d1c9060403d604011613d26575b613d1481836102e8565b810190613bd4565b9490949150613c9b565b503d613d0a565b905f91613d46600b6318fb58646004525f5260245f2090565b9068fbb67fda52d4bfb8bf8114613e50578015613e40575b811991825491816020528215613da6575b805f5260405f2092835415613d85575050505050565b9091929394955060011c8092015560010180915560011b6001179055600190565b915080548015613e3757828114613e3157600182018054908115613e235750838114613e1c5760028301918254928315613e0d5750848314613e05575f52600160405f20555f52600260405f20555f52600360405f2055600791613d6f565b505050505050565b95505050505091925055600190565b5050505050565b945050505091925055600190565b50505050565b50555060019150565b5068fbb67fda52d4bfb8bf613d5e565b63f5a267f15f526004601cfd5b638b78c6d819543303612f7257565b60018060a01b031680638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3638b78c6d81955565b919082039182116131a957565b6001600160a01b039182168152911660208201526040810191909152606081019190915260a0608082018190526132059291019061351a565b92613f05613ae1855f52600d60205260405f2090565b600454613f1c90610a11906001600160a01b031681565b6001600160a01b03909116146140c4575b6003613f41855f52600d60205260405f2090565b01613f4d828254613ea9565b9055600154613f64906001600160a01b0316610a11565b803b1561033d575f6040518092637921219560e11b8252818381613f8e8a8a303360048601613869565b03925af18015610bf8576140b0575b50600154613fb3906001600160a01b0316610a11565b600454613fc8906001600160a01b0316610a11565b613fdd613ae1875f52600d60205260405f2090565b6001600160a01b038281169116036140935761401b5f5b604080516001600160a01b03929092166020830152818101959095529384526060846102e8565b813b1561033d575f918483879361404960405197889687958694637921219560e11b86523060048701613eb6565b03925af18015610bf85761407f575b507f9faf3d381f68805d8bb79d1fe96b702b418e591d2974269190bd02e23a181d7c5f80a4565b80610e3e5f61408d936102e8565b5f614058565b61401b6140ab613ae1885f52600d60205260405f2090565b613ff4565b80610e3e5f6140be936102e8565b5f613f9d565b6140d3610f5c82600a54613ea9565b613f2d565b905f916140f1600b6318fb58646004525f5260245f2090565b9068fbb67fda52d4bfb8bf8114613e505780156141d6575b811980549182159260011c935f19850191600183811b179461417d57816020525f5260405f20948554928315614174575f8098995019840103614151575b5050505555600190565b8690811990830101805480938584199101015555855260408520555f8080614147565b50505050505050565b94509550505050600192818154146141c057838101828154146141b15750600201908154146141ac57505f9150565b5f9055565b905f9250600201908154905555565b5f91506002848201918254815501908154905555565b5068fbb67fda52d4bfb8bf614109565b9081039081111561320557505f90565b61420c600b6318fb58646004525f5260245f2090565b68fbb67fda52d4bfb8bf8214613e50578115614263575b8019541561423a576020525f5260405f2054151590565b906001918181541461425e5781838201541461425e57600201541461320557505f90565b505090565b68fbb67fda52d4bfb8bf9150614223565b601c5f60649281946020966040519860605260405260601b602c526323b872dd60601b600c525af13d1560015f51141716156142b3575f606052604052565b637939f4245f526004601cfd5b60105f604492602095829560145260345263a9059cbb60601b82525af13d1560015f51141716156142f1575f603452565b6390b8ec185f526004601cfd5b638b78c6d8600c525f526020600c2090815490811618809155600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3565b6c5af43d3d93803e602a57fd5bf360215260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c5ff0908115614381575f602152565b63301164255f526004601cfdfe8198b20d1a82dde5042b7471d6d28b537cb785083e18c6839d8edfedb97f8311a26469706673582212200de9344e9d871206c59715069a01fc581eab778bc808c94ab89d3532c31d3b5964736f6c634300081a0033