0 txs
270 calls
constructor
constructor()
functions
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
cancelledDeposits
viewfunction cancelledDeposits() view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
depositsEnabled
viewfunction depositsEnabled() view returns (bool)
depositTokenRegistry
viewfunction depositTokenRegistry() view returns (address)
EMERGENCY_ROLE
viewfunction EMERGENCY_ROLE() view returns (bytes32)
getMessageHash
purefunction getMessageHash(address _address, uint256 _timestamp, uint256 _totalDeposits) pure returns (bytes32)
getPendingDepositsCount
viewfunction getPendingDepositsCount() view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getUserPendingDeposits
viewfunction getUserPendingDeposits(address user) view returns (tuple[])
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
insuranceCapitalLayer
viewfunction insuranceCapitalLayer() view returns (address)
MAX_DEPOSITS_PER_USER
viewfunction MAX_DEPOSITS_PER_USER() view returns (uint256)
MAX_SIGNATURE_EXPIRATION
viewfunction MAX_SIGNATURE_EXPIRATION() view returns (uint256)
MIN_SIGNATURE_EXPIRATION
viewfunction MIN_SIGNATURE_EXPIRATION() view returns (uint256)
OPERATOR_ROLE
viewfunction OPERATOR_ROLE() view returns (bytes32)
paused
viewfunction paused() view returns (bool)
PAUSER_ROLE
viewfunction PAUSER_ROLE() view returns (bytes32)
processedDeposits
viewfunction processedDeposits() view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
recoveryWallet
viewfunction recoveryWallet() view returns (address)
signatureExpiration
viewfunction signatureExpiration() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalDeposits
viewfunction totalDeposits() view returns (uint256)
totalUserDeposits
viewfunction totalUserDeposits(address) view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
UPGRADER_ROLE
viewfunction UPGRADER_ROLE() view returns (bytes32)
userDeposits
viewfunction userDeposits(address, uint256) view returns (address token, uint256 amount, uint256 timestamp, uint256 minShares, bool processed, bool cancelled)
verifier
viewfunction verifier() view returns (address)
cancelDeposit
nonpayablefunction cancelDeposit(address user, uint256 index)
disableDeposits
nonpayablefunction disableDeposits()
emergencyWithdraw
nonpayablefunction emergencyWithdraw(address token)
enableDeposits
nonpayablefunction enableDeposits()
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _initialAdmin, address _depositTokenRegistry, address _insuranceCapitalLayer, address _verifier, address _recoveryWallet, address _emergencyAdmin)
pause
nonpayablefunction pause()
processDeposits
nonpayablefunction processDeposits(address user)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
requestDeposit
nonpayablefunction requestDeposit(address token, uint256 amount, uint256 minShares, uint256 timestamp, bytes signature)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setDepositTokenRegistry
nonpayablefunction setDepositTokenRegistry(address _newRegistry)
setSignatureExpiration
nonpayablefunction setSignatureExpiration(uint256 _newExpiration)
setVerifier
nonpayablefunction setVerifier(address _newVerifier)
unpause
nonpayablefunction unpause()
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
DepositCancelled
event DepositCancelled(address indexed user, address indexed token, uint256 amount, uint256 index)
DepositProcessed
event DepositProcessed(address indexed user, address indexed token, uint256 amount, uint256 index)
DepositReceived
event DepositReceived(address indexed user, address indexed token, uint256 amount, uint256 index)
DepositsProcessed
event DepositsProcessed(address indexed user, uint256 count)
DepositTokenRegistryUpdated
event DepositTokenRegistryUpdated(address indexed newRegistry)
EmergencyWithdrawal
event EmergencyWithdrawal(address indexed token, uint256 amount)
Initialized
event Initialized(uint64 version)
Paused
event Paused(address account)
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)
SignatureExpirationUpdated
event SignatureExpirationUpdated(uint256 newExpiration)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
VerifierUpdated
event VerifierUpdated(address indexed newVerifier)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
CallerNotAuthorized
error CallerNotAuthorized()
CancellationPeriodExpired
error CancellationPeriodExpired()
DepositAlreadyCancelled
error DepositAlreadyCancelled()
DepositAlreadyProcessed
error DepositAlreadyProcessed()
DepositAmountMustBeGreaterThanZero
error DepositAmountMustBeGreaterThanZero()
DepositsDisabled
error DepositsDisabled()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
InvalidAdminAddress
error InvalidAdminAddress()
InvalidDepositIndex
error InvalidDepositIndex()
InvalidDepositTokenRegistryAddress
error InvalidDepositTokenRegistryAddress()
InvalidEmergencyAdminAddress
error InvalidEmergencyAdminAddress()
InvalidInitialization
error InvalidInitialization()
InvalidInsuranceCapitalLayerAddress
error InvalidInsuranceCapitalLayerAddress()
InvalidRecoveryWalletAddress
error InvalidRecoveryWalletAddress()
InvalidSignature
error InvalidSignature()
InvalidVerifier
error InvalidVerifier(address signer)
InvalidVerifierAddress
error InvalidVerifierAddress()
MaximumDepositsPerUserReached
error MaximumDepositsPerUserReached()
NotInitializing
error NotInitializing()
NoTokenBalanceToWithdraw
error NoTokenBalanceToWithdraw()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SignatureAlreadyUsed
error SignatureAlreadyUsed()
SignatureExpirationTooLong
error SignatureExpirationTooLong()
SignatureExpirationTooShort
error SignatureExpirationTooShort()
SignatureExpired
error SignatureExpired()
TokenNotAcceptedForDeposit
error TokenNotAcceptedForDeposit()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a080604052346100cc57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166100bd57506001600160401b036002600160401b031982821601610078575b6040516127fb90816100d2823960805181818161142901526114bb0152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610059565b63f92ee8a960e01b8152600490fd5b600080fdfe608060409080825260048036101561001657600080fd5b600091823560e01c90816301ffc9a714611c365750806308f4333314611ba35780630cd57f40146119305780630f7446151461190757806320df4359146118de578063247c69f0146118bf578063248a9ca314611886578063274262bd146118675780632b7ac3f31461183e5780632e08ebcd146117c45780632f2ff15d1461179b57806336568abe146117555780633ec954ed1461172c5780633f4ba83a146116c75780634f1ef2861461147b57806352d1902d146114135780635392fd1c146113ef5780635437988d146113735780635c975abb146113425780635e4c57a4146113195780636ff1c9bc146111c357806375b238fc1461119a5780637d8820971461117b5780638456cb59146111135780638b66329c14610fb457806391d1485414610f5f5780639dc1fb2714610f43578063a217fddf14610f28578063a981c7b414610f00578063ac67e1af14610eda578063ad3cb1cc14610e3e578063b51abde014610dbf578063b940b4f314610a32578063cada242b146109fa578063cc100fa7146109dc578063cc2a9a5b14610728578063ce85629314610709578063d2b0737b146106db578063d52a636c146106be578063d547741f1461066e578063e63ab1e914610645578063f5b541a61461061c578063f72c0d8b146105f3578063fa9c5f4d146105b85763fe5efc691461021357600080fd5b346105b45760a03660031901126105b45761022c611c8a565b906024938435916064356084356001600160401b03908181116105b0576102569036908501611d75565b9161025f6123ab565b6102676123d6565b60ff60085416156105a05760018060a01b03928391828a54169887519586916313a9822560e31b835216998a88830152818d60209889935afa908115610596578b91610569575b501561055957871561054957338a5260028552600a878b2054101561053957600754810180821161052757421161051757610334916102fc61032b92338d5260098852898d205490336125bf565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008c52601c52603c8b20612478565b9092919261253a565b81806006541691169081036105025750338852600983528488206103588154612379565b9055338852600283528488208886519261037184611ced565b8984528584018981528885019042825260608601926044358452608087019685885260a0810196868852805490600160401b8210156104ee57906103ba91600182018155611cbb565b9690966104d95750908a9594939291511660018060a01b031985541617845551600184015551600283015551600382015501915115159060ff61ff0084549251151560081b1692169061ffff191617179055610417600354612379565b60035583516323b872dd60e01b838201523389820152306044820152606480820187905281529060a08201908111828210176104c75784526104599086612406565b33865260028152828620546000198101929083116104b55750825193845283015233917fcf1f679e6fab15306c35a02f98bb653ccbe4b8863acf1d569d0e2232a6da5be89190a360016000805160206127868339815191525580f35b634e487b7160e01b8752601190528686fd5b634e487b7160e01b8852604184528888fd5b9150508e9150808a634e487b7160e01b825252fd5b5050634e487b7160e01b865260418b528f86fd5b848a9187519163226328af60e11b8352820152fd5b8651630819bdcd60e01b81528690fd5b634e487b7160e01b8b52601187528b8bfd5b8651633210d9db60e11b81528690fd5b86516332bba7b160e11b81528690fd5b865163e0ded41960e01b81528690fd5b6105899150863d881161058f575b6105818183611d39565b810190612361565b386102ae565b503d610577565b88513d8d823e3d90fd5b8451630e2f42c960e31b81528490fd5b8780fd5b5080fd5b509190346105f057806003193601126105f057506105e96105e060209360035490549061239e565b6005549061239e565b9051908152f35b80fd5b8284346105b457816003193601126105b457602090516000805160206126c68339815191528152f35b8284346105b457816003193601126105b457602090516000805160206127068339815191528152f35b8284346105b457816003193601126105b457602090516000805160206127268339815191528152f35b5082346106ba57806003193601126106ba576106b691356106b16001610692611ca5565b9383875260008051602061274683398151915260205286200154611e6e565b61220a565b5080f35b8280fd5b8284346105b457816003193601126105b45760209051610e108152f35b8284346105b45760603660031901126105b4576020906105e96106fc611c8a565b60443590602435906125bf565b508290346106ba57826003193601126106ba5760209250549051908152f35b508290346106ba5760c03660031901126106ba57610744611c8a565b61074c611ca5565b6001600160a01b0391604435838116908190036109d857606435918483168093036105b057608435928584168094036109d45760a43592868416938481036109d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009889549860ff8a8d1c1615986001600160401b038b169a8b15806109c9575b6001809d1490816109bf575b1590816109b6575b506109a65767ffffffffffffffff1981168c178d558a610987575b5081871615610977571695861561096857831561095957841561094a57871561093b571561092d57506108b090610832612320565b61083a612320565b610842612320565b6108aa60ff1995600080516020612766833981519152878154169055610866612320565b61086e612320565b610876612320565b8a6000805160206127868339815191525561089081611ea1565b5061089a81611f2f565b506108a481611fcd565b50612065565b506120fd565b5060018060a01b031993848b5416178a558387541617865582600654161760065562093a8060075560085416600855600a541617600a556108ef578380f35b815460ff60401b191690915590519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a18180808380f35b8a516305069be760e01b8152fd5b508a5163015899ed60e21b8152fd5b508a5163043103a360e21b8152fd5b508a51633f4c76c560e21b8152fd5b508a51633d3622af60e01b8152fd5b8c5163016ed19f60e21b81528390fd5b68ffffffffffffffffff191668010000000000000001178c558e6107fd565b8d5163f92ee8a960e01b81528490fd5b905015386107e2565b303b1591506107da565b508a6107ce565b8a80fd5b8880fd5b8680fd5b8284346105b457816003193601126105b4576020905162278d008152f35b8284346105b45760203660031901126105b45760209181906001600160a01b03610a22611c8a565b1681526009845220549051908152f35b5090346105f0576020806003193601126105b457610a4e611c8a565b93610a576123ab565b610a5f6123d6565b6001600160a01b03948516913383141580610d87575b610d775782845260028152818420938096815b8654811015610d265787610a9c8289611cbb565b50015460ff908116159081610d0b575b50610ac0575b610abb90612379565b610a88565b9787610acc8a89611cbb565b50016001908160ff19825416179055610ae58954612379565b89558783610af38c83611cbb565b5054168b83610b06878254169285611cbb565b5001549189519089820192898063095ea7b360e01b95868152610b5586610b4760249a878c840160209093929193604081019460018060a01b031681520152565b03601f198101885287611d39565b85519082865af1610b6461228d565b81610cdb575b5080610cd1575b15610c98575b505050508b858454166003610ba888610b908588611cbb565b5054169387610b9f8289611cbb565b50015496611cbb565b500154813b156109d4578d898094938e6084948f51998a978896632218f97160e21b885287015289860152604485015260648401525af18015610c8e578a938a938a938f93610c54575b50508492827f781d39e8507017fef6cbedd3e4ceb26e620688d8c807910f604fcbb7d2abbfed92610c39828b610c30610abb9c9a98610c4c9c611cbb565b50541697611cbb565b5001549082519182528b820152a3612379565b989050610ab2565b935093509350506001600160401b038211610c7d575086528790879087908c9082610abb610bf2565b634e487b7160e01b865260418b5285fd5b88513d88823e3d90fd5b610cc893610cc3918d51918d8301528682015260448b818301528152610cbd81611d1e565b82612406565b612406565b38808080610b77565b50813b1515610b71565b8051801592508d908315610cf3575b50505038610b6a565b610d039350820181019101612361565b388c81610cea565b905088610d18838a611cbb565b50015460081c161538610aac565b505093508580610d47575b8460016000805160206127868339815191525580f35b7ffb6c065aedb9f80db2a7c600754a071d9b16cdee761f37b7ecf1f3e68578b3229251908152a281808080610d31565b815163c183bcef60e01b81528590fd5b5060008051602061270683398151915284526000805160206127468339815191528152818420338552815260ff828520541615610a75565b5082346106ba5760203660031901126106ba57813591610ddd611dbc565b610e108310610e305762278d008311610e225750816020917f05a39c416bfb2bcceb8f33d6feba6089299c239a5300e70f492b017274170d4b9360075551908152a180f35b905163cd91296b60e01b8152fd5b9051637a823c7360e11b8152fd5b508290346106ba57826003193601126106ba57815190828201908282106001600160401b03831117610ec75750825260058152602090640352e302e360dc1b8282015282519382859384528251928382860152825b848110610eb157505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610e93565b634e487b7160e01b855260419052602484fd5b82346105f057806003193601126105f057610ef3611dbc565b60ff196008541660085580f35b8284346105b457816003193601126105b457905490516001600160a01b039091168152602090f35b8284346105b457816003193601126105b45751908152602090f35b8284346105b457816003193601126105b45760209051600a8152f35b508290346106ba57816003193601126106ba578160209360ff92610f81611ca5565b9035825260008051602061274683398151915286528282206001600160a01b039091168252855220549151911615158152f35b5091346105b457806003193601126105b457610fce611c8a565b9060243590610fdb6123ab565b6001600160a01b03838116929033841415806110d9575b6110c9578386526002602052828620548210156110b957838652600260205261101d82848820611cbb565b5087810180549860ff8a166110ab5760ff8a60081c1661109d57506101007f627946b6a26beee83b76408c8e5af8b2ebb67bc0b7566767d80153797b98fd799697989961ff001916179055611073600554612379565b60055561108a8282541660018301988954916125f0565b541694549082519182526020820152a380f35b855163718bf32b60e01b8152fd5b8551631beb710560e11b8152fd5b82516336cbe6ed60e11b81528790fd5b825163c183bcef60e01b81528790fd5b50600080516020612706833981519152865260008051602061274683398151915260205282862033875260205260ff838720541615610ff2565b8284346105b457816003193601126105b45760207f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25891611151611e24565b6111596123ab565b600080516020612766833981519152805460ff1916600117905551338152a180f35b8284346105b457816003193601126105b4576020906003549051908152f35b8284346105b457816003193601126105b457602090516000805160206127a68339815191528152f35b5091346105b4576020806003193601126106ba576111df611c8a565b936000805160206126a68339815191528085526000805160206127468339815191528352838520338652835260ff8486205416156112fc5750611220612659565b6112286123d6565b82516370a0823160e01b815230828201526001600160a01b039586169390918383602481885afa9283156112f25786936112bf575b5082156112b15750611297827f23d6711a1d031134a36921253c75aa59e967d38e369ac625992824315e204f20959697600a5416876125f0565b51908152a260016000805160206127868339815191525580f35b9051632e51568160e01b8152fd5b9092508381813d83116112eb575b6112d78183611d39565b810103126112e75751913861125d565b8580fd5b503d6112cd565b82513d88823e3d90fd5b6044925083519163e2517d3f60e01b835233908301526024820152fd5b82346105f057806003193601126105f057611332611dbc565b600160ff19600854161760085580f35b8284346105b457816003193601126105b45760209060ff600080516020612766833981519152541690519015158152f35b508290346106ba5760203660031901126106ba5761138f611c8a565b611397611dbc565b6001600160a01b03169182156113e2575050600680546001600160a01b031916821790557fd24015cc99cc1700cafca3042840a1d8ac1e3964fd2e0e37ea29c654056ee3278280a280f35b5163043103a360e21b8152fd5b8284346105b457816003193601126105b45760209060ff6008541690519015158152f35b509190346105f057806003193601126105f057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361146e57602090516000805160206126e68339815191528152f35b5163703e46dd60e11b8152fd5b5082806003193601126106ba57611490611c8a565b906024356001600160401b038111611672576114af9036908501611d75565b6001600160a01b0394907f000000000000000000000000000000000000000000000000000000000000000086163081149081156116ab575b5061169b576000805160206126c6833981519152958683526020966000805160206127468339815191528852848420338552885260ff85852054161561167d57508416938351966352d1902d60e01b885280888881895afa8098859961164a575b50611564578451634c9c8ce360e01b8152808801879052602490fd5b8686866000805160206126e68339815191528b7fc9f76b5ec45e5cdef99837d7b6d2467235c1df8933c8ca56df5c35afa2c7d44481016116345750853b1561161e5780546001600160a01b0319168317905551869392917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8580a285511561160257505083516106b694839201845af46115fc61228d565b916122bd565b9350935050503461161257505080f35b63b398979f60e01b8152fd5b5051634c9c8ce360e01b81529182015260249150fd5b84602491845191632a87526960e21b8352820152fd5b9098508181813d8311611676575b6116628183611d39565b8101031261167257519789611548565b8480fd5b503d611658565b845163e2517d3f60e01b815233818901526024810191909152604490fd5b825163703e46dd60e11b81528590fd5b9050866000805160206126e683398151915254161415876114e7565b8284346105b457816003193601126105b45760207f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa91611705611e24565b61170d612659565b600080516020612766833981519152805460ff1916905551338152a180f35b8284346105b457816003193601126105b457600a5490516001600160a01b039091168152602090f35b5091346105b457806003193601126105b45761176f611ca5565b90336001600160a01b0383160361178c57506106b691923561220a565b5163334bd91960e11b81528390fd5b5082346106ba57806003193601126106ba576106b691356117bf6001610692611ca5565b612195565b508290346106ba5760203660031901126106ba576117e0611c8a565b6117e8611dbc565b6001600160a01b031691821561183157505081546001600160a01b031916811782557f59cfa3404429fc77a03870a4198af332d0217bd27c5c4a2f79ab0774b11d77ac8280a280f35b51633d3622af60e01b8152fd5b8284346105b457816003193601126105b45760065490516001600160a01b039091168152602090f35b8284346105b457816003193601126105b4576020906005549051908152f35b508290346106ba5760203660031901126106ba578160209360019235815260008051602061274683398151915285522001549051908152f35b8284346105b457816003193601126105b4576020906007549051908152f35b8284346105b457816003193601126105b457602090516000805160206126a68339815191528152f35b8284346105b457816003193601126105b45760015490516001600160a01b039091168152602090f35b50346105b4576020806003193601126106ba57916001600160a01b0380611955611c8a565b168252600280855285832090839484928054935b848110611b3c575061197a8761262e565b966119878a519889611d39565b808852611996601f199161262e565b01865b818110611afd5750508591865b858110611a275750505050505084519380850191818652845180935281878701950193905b8382106119d85786860387f35b8451805182168752808401518785015288810151898801526060808201519088015260808082015115159088015260a09081015115159087015260c090950194938201936001909101906119cb565b86828c611a3884879e9b9c9e611cbb565b5060ff9283910154161580611ae3575b611a62575b505050611a5990612379565b989695986119a6565b9183969185611ad894611a78611a59978a611cbb565b5090805194611a8686611ced565b825416855260018201548e8601528b820154908501526003810154606085015201548181161515608084015260081c16151560a0820152611ac7828d612645565b52611ad2818c612645565b50612379565b93905087388c611a4d565b508185611af08689611cbb565b50015460081c1615611a48565b98809697998b51611b0d81611ced565b8b81528b838201528b8d8201528b60608201528b60808201528b60a082015282828c0101520198969598611999565b82611b4b82849b98999b611cbb565b50015460ff908116159081611b88575b50611b73575b611b6a90612379565b97959497611969565b96611b80611b6a91612379565b979050611b61565b905083611b958385611cbb565b50015460081c161538611b5b565b5090346105f057826003193601126105f057611bbd611c8a565b6001600160a01b039081168252600260205283822080549192602435928310156105f0575091611bf260c0959260ff94611cbb565b5090815416936001820154926002830154916003840154930154938151968752602087015285015260608401528181161515608084015260081c16151560a0820152f35b919050346106ba5760203660031901126106ba573563ffffffff60e01b81168091036106ba5760209250637965db0b60e01b8114908115611c79575b5015158152f35b6301ffc9a760e01b14905083611c72565b600435906001600160a01b0382168203611ca057565b600080fd5b602435906001600160a01b0382168203611ca057565b8054821015611cd7576000526005602060002091020190600090565b634e487b7160e01b600052603260045260246000fd5b60c081019081106001600160401b03821117611d0857604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b03821117611d0857604052565b90601f801991011681019081106001600160401b03821117611d0857604052565b6001600160401b038111611d0857601f01601f191660200190565b81601f82011215611ca057803590611d8c82611d5a565b92611d9a6040519485611d39565b82845260208383010111611ca057816000926020809301838601378301015290565b3360009081527fb16e88c42fd4e48df2dd6a2eabd6bc9aec654ec170056b470819f8892cc6431c60205260409020546000805160206127a68339815191529060ff1615611e065750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3360009081527f75442b0a96088b5456bc4ed01394c96a4feec0f883c9494257d76b96ab1c9b6b60205260409020546000805160206127268339815191529060ff1615611e065750565b8060005260008051602061274683398151915260205260406000203360005260205260ff6040600020541615611e065750565b6001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120549091906000805160206127468339815191529060ff16611f2a578280526020526040822081835260205260408220600160ff1982541617905533916000805160206126868339815191528180a4600190565b505090565b6001600160a01b031660008181527fb16e88c42fd4e48df2dd6a2eabd6bc9aec654ec170056b470819f8892cc6431c60205260408120549091906000805160206127a6833981519152906000805160206127468339815191529060ff16611fc7578184526020526040832082845260205260408320600160ff19825416179055600080516020612686833981519152339380a4600190565b50505090565b6001600160a01b031660008181527fab71e3f32666744d246edff3f96e4bdafee2e9867098cdd118a979a7464786a860205260408120549091906000805160206126c6833981519152906000805160206127468339815191529060ff16611fc7578184526020526040832082845260205260408320600160ff19825416179055600080516020612686833981519152339380a4600190565b6001600160a01b031660008181527f75442b0a96088b5456bc4ed01394c96a4feec0f883c9494257d76b96ab1c9b6b6020526040812054909190600080516020612726833981519152906000805160206127468339815191529060ff16611fc7578184526020526040832082845260205260408320600160ff19825416179055600080516020612686833981519152339380a4600190565b6001600160a01b031660008181527f762c7c328dd70a077c65c77b60e4c38eed3d2f6aa056d4d0fa114aeff8234b5660205260408120549091906000805160206126a6833981519152906000805160206127468339815191529060ff16611fc7578184526020526040832082845260205260408320600160ff19825416179055600080516020612686833981519152339380a4600190565b9060009180835260008051602061274683398151915280602052604084209260018060a01b03169283855260205260ff60408520541615600014611fc7578184526020526040832082845260205260408320600160ff19825416179055600080516020612686833981519152339380a4600190565b9060009180835260008051602061274683398151915280602052604084209260018060a01b03169283855260205260ff604085205416600014611fc757818452602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b3d156122b8573d9061229e82611d5a565b916122ac6040519384611d39565b82523d6000602084013e565b606090565b906122e457508051156122d257805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580612317575b6122f5575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156122ed565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561234f57565b604051631afcd79f60e31b8152600490fd5b90816020910312611ca057518015158103611ca05790565b60001981146123885760010190565b634e487b7160e01b600052601160045260246000fd5b9190820391821161238857565b60ff60008051602061276683398151915254166123c457565b60405163d93c066560e01b8152600490fd5b60008051602061278683398151915260028154146123f45760029055565b604051633ee5aeb560e01b8152600490fd5b60008061242f9260018060a01b03169360208151910182865af161242861228d565b90836122bd565b805190811515918261245d575b50506124455750565b60249060405190635274afe760e01b82526004820152fd5b6124709250602080918301019101612361565b15388061243c565b81519190604183036124a9576124a292506020820151906060604084015193015160001a906124b4565b9192909190565b505060009160029190565b91906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03841161252e57926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa156125225780516001600160a01b0381161561251957918190565b50809160019190565b604051903d90823e3d90fd5b50505060009160039190565b60048110156125a9578061254c575050565b600181036125665760405163f645eedf60e01b8152600490fd5b600281036125875760405163fce698f760e01b815260048101839052602490fd5b6003146125915750565b602490604051906335e2f38360e21b82526004820152fd5b634e487b7160e01b600052602160045260246000fd5b9160405191602083019360018060a01b0316845260408301526060820152606081526125ea81611d1e565b51902090565b60405163a9059cbb60e01b60208201526001600160a01b0392909216602483015260448083019390935291815261262c91610cc3606483611d39565b565b6001600160401b038111611d085760051b60200190565b8051821015611cd75760209160051b010190565b60ff60008051602061276683398151915254161561267357565b604051638dfc202b60e01b8152600490fdfe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0dbf233dd2aafeb4d50879c4aa5c81e96d92f6e6945c906a58f9f2d1c1631b4b26189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92965d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a2646970667358221220da9d9f41d0c5bb7f65ac1e3673eda01140f1da62326b6d295bc04aba9a8264de64736f6c63430008140033