0 txs
2 calls
constructor
constructor()
functions
depositBalance
viewfunction depositBalance(address) view returns (uint256)
depositCap
viewfunction depositCap() view returns (uint256)
depositXBalance
viewfunction depositXBalance(address) view returns (uint256)
gateway
viewfunction gateway() view returns (address)
getClaimableAmount
viewfunction getClaimableAmount(address user) view returns (uint256[] requestIds, uint256 principal, uint256 interest)
getCurrentReleaseTime
viewfunction getCurrentReleaseTime() view returns (uint256)
getCurrentTargetUndelegateTimestamp
viewfunction getCurrentTargetUndelegateTimestamp() view returns (uint256)
getCurrentTimeUnitStart
viewfunction getCurrentTimeUnitStart() view returns (uint256)
getExchangeRate
viewfunction getExchangeRate() view returns (uint256)
getMaxYieldAmount
viewfunction getMaxYieldAmount() view returns (uint256)
getPendingWithdrawalsForDay
viewfunction getPendingWithdrawalsForDay(uint256 timestamp) view returns (uint256 totalAmount)
getProtocolState
viewfunction getProtocolState() view returns (uint256 _totalSupply, uint256 _totalInterest, uint256 _totalXSupply, uint256 _exchangeRate)
getTargetUndelegateTimestamp
viewfunction getTargetUndelegateTimestamp(uint256 timestamp) view returns (uint256)
getTimeUnitStart
purefunction getTimeUnitStart(uint256 timestamp) pure returns (uint256)
getUserInfo
viewfunction getUserInfo(address user) view returns (uint256 principal, uint256 totalBalance, uint256 yieldAmount, uint256 xBalance)
getUserPrincipal
viewfunction getUserPrincipal(address user) view returns (uint256)
getUsersInfo
viewfunction getUsersInfo(address[] users) view returns (uint256[] principals, uint256[] totalBalances, uint256[] yieldAmounts, uint256[] xBalances)
getUsersYield
viewfunction getUsersYield(address[] users) view returns (uint256[] yieldAmounts)
getUserTotalBalance
viewfunction getUserTotalBalance(address user) view returns (uint256)
getUserWithdrawRequests
viewfunction getUserWithdrawRequests(address user) view returns (tuple[])
getUserXBalance
viewfunction getUserXBalance(address user) view returns (uint256)
getUserYield
viewfunction getUserYield(address user) view returns (uint256)
getYieldHistory
viewfunction getYieldHistory() view returns (tuple[])
getYieldHistoryAt
viewfunction getYieldHistoryAt(uint256 index) view returns (tuple)
getYieldHistoryByIndexRange
viewfunction getYieldHistoryByIndexRange(uint256 fromIndex, uint256 toIndex) view returns (tuple[])
getYieldHistoryLength
viewfunction getYieldHistoryLength() view returns (uint256)
operator
viewfunction operator() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
releaseTime
viewfunction releaseTime(uint256 timestamp) view returns (uint256)
TIME_UNIT
viewfunction TIME_UNIT() view returns (uint256)
token
viewfunction token() view returns (address)
tokenDecimals
viewfunction tokenDecimals() view returns (uint8)
totalDelegatedBalance
viewfunction totalDelegatedBalance() view returns (uint256)
totalInterest
viewfunction totalInterest() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
totalUndelegatedBalance
viewfunction totalUndelegatedBalance() view returns (uint256)
totalXSupply
viewfunction totalXSupply() view returns (uint256)
treasury
viewfunction treasury() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
withdrawalDelay
viewfunction withdrawalDelay() view returns (uint256)
withdrawInterestPerDay
viewfunction withdrawInterestPerDay(uint256) view returns (uint256)
withdrawPerDay
viewfunction withdrawPerDay(uint256) view returns (uint256)
withdrawReleased
viewfunction withdrawReleased(uint256) view returns (bool)
withdrawRequests
viewfunction withdrawRequests(uint256) view returns (uint256 id, address user, uint256 timestamp, uint256 unitTime, uint256 releaseTime, uint256 principalAmount, uint256 interestAmount, bool released)
yieldHistory
viewfunction yieldHistory(uint256) view returns (uint256 timestamp, uint256 amount, uint256 totalInterest)
yieldMaxRate
viewfunction yieldMaxRate() view returns (uint256)
yieldUpdatedForDay
viewfunction yieldUpdatedForDay(uint256) view returns (bool)
claim
nonpayablefunction claim()
claim
nonpayablefunction claim(uint256[] requestIds)
claimBehalf
nonpayablefunction claimBehalf(address user)
deposit
nonpayablefunction deposit(uint256 amount)
initialize
nonpayablefunction initialize(address _token, address _treasury, address _operator, address _owner, address _gateway)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
setDepositCap
nonpayablefunction setDepositCap(uint256 cap)
setGateway
nonpayablefunction setGateway(address _gateway)
setOperator
nonpayablefunction setOperator(address _operator)
setTreasury
nonpayablefunction setTreasury(address _treasury)
setYieldMaxRate
nonpayablefunction setYieldMaxRate(uint256 _rate)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
undelegate
nonpayablefunction undelegate()
undelegate
nonpayablefunction undelegate(uint256 timestamp)
unpause
nonpayablefunction unpause()
updateYield
nonpayablefunction updateYield(uint256 amount)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw(uint256 amount)
events
Claimed
event Claimed(address indexed user, uint256[] requestIds, uint256 principalAmount, uint256 interestAmount)
DepositCapUpdated
event DepositCapUpdated(uint256 newCap)
Deposited
event Deposited(address indexed user, uint256 amount, uint256 xAmount)
GatewayUpdated
event GatewayUpdated(address indexed previousGateway, address indexed newGateway)
Initialized
event Initialized(uint64 version)
OperatorUpdated
event OperatorUpdated(address indexed previousOperator, address indexed newOperator)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
TreasuryUpdated
event TreasuryUpdated(address newTreasury)
Undelegated
event Undelegated(uint256 amount, uint256 principalAmount, uint256 interestAmount, uint256 targetTimestamp)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
WithdrawRequested
event WithdrawRequested(address indexed user, uint256 id, uint256 amount, uint256 principalAmount, uint256 interestAmount, uint256 timestamp, uint256 unitTime, uint256 releaseTime)
YieldMaxRateUpdated
event YieldMaxRateUpdated(uint256 newRate)
YieldUpdated
event YieldUpdated(uint256 amount, uint256 totalInterest)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516146c06100fd600039600081816131e801528181613211015261335701526146c06000f3fe6080604052600436106103ee5760003560e01c8063781364bd11610208578063b3ab15fb11610118578063d770adc7116100ab578063e7f481ae1161007a578063e7f481ae14610cca578063ec026ef414610ce1578063f0f4426014610cf6578063f2fde38b14610d16578063fc0c546a14610d3657600080fd5b8063d770adc714610c5b578063dbd5edc714610c70578063e12f3a6114610c86578063e6aa216c14610cb557600080fd5b8063b969dc2a116100e7578063b969dc2a14610bde578063bc7a36d614610bf4578063bd575ab414610c0a578063cda6fd9214610c4557600080fd5b8063b3ab15fb14610b68578063b6431d3814610b88578063b6b55f2514610ba8578063b8cde03414610bc857600080fd5b80638e4707301161019b578063956501bb1161016a578063956501bb14610a62578063992a7dfb14610a8f578063a4b5ba2f14610af4578063a7ab696114610b14578063ad3cb1cc14610b2a57600080fd5b80638e470730146109e257806390646b4a14610a1857806392ab89bb14610a385780639325173014610a4d57600080fd5b80638636794a116101d75780638636794a14610938578063866512031461096557806388901496146109855780638da5cb5b146109a557600080fd5b8063781364bd146108a95780637923076c146108d6578063806e6a04146108f65780638456cb591461092357600080fd5b8063485c0860116103035780635c975abb1161029657806365b587261161026557806365b587261461080f5780636ba4c138146108245780636c68c0e1146108445780636e2b952814610864578063715018a61461089457600080fd5b80635c975abb146107755780635ea09a931461079a57806361d027b3146107af5780636386c1c7146107cf57600080fd5b80634f1ef286116102d25780634f1ef2861461071857806352d1902d1461072b578063570ca735146107405780635a0b37911461076057600080fd5b8063485c0860146106a0578063495613c4146106c05780634ab1ad5a146106d65780634e71d92d1461070357600080fd5b806315167f11116103865780632e9a1de1116103555780632e9a1de1146105eb5780633b97e8561461060b5780633f4ba83a1461063e5780634229abdd146106535780634684ac0e1461067357600080fd5b806315167f111461056a57806318160ddd146105a05780631ba3ee02146105b65780632e1a7d4d146105cb57600080fd5b806309c4bb2b116103c257806309c4bb2b146104c05780630e17f292146104e0578063116191b6146105105780631459457a1461054857600080fd5b80620b5892146103f357806301368c981461043357806302233ec4146104605780630552aa2f14610480575b600080fd5b3480156103ff57600080fd5b5061042061040e366004613ebf565b600d6020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561043f57600080fd5b5061045361044e366004613ed8565b610d56565b60405161042a9190613efa565b34801561046c57600080fd5b5061042061047b366004613ebf565b610f03565b34801561048c57600080fd5b506104b061049b366004613ebf565b600e6020526000908152604090205460ff1681565b604051901515815260200161042a565b3480156104cc57600080fd5b506104206104db366004613ebf565b610f1d565b3480156104ec57600080fd5b506105006104fb366004613fe1565b610f6a565b60405161042a94939291906140be565b34801561051c57600080fd5b50600154610530906001600160a01b031681565b6040516001600160a01b03909116815260200161042a565b34801561055457600080fd5b50610568610563366004614116565b6112a8565b005b34801561057657600080fd5b5061042061058536600461417b565b6001600160a01b03166000908152600b602052604090205490565b3480156105ac57600080fd5b5061042060025481565b3480156105c257600080fd5b50610453611625565b3480156105d757600080fd5b506105686105e6366004613ebf565b6116a2565b3480156105f757600080fd5b50610568610606366004613ebf565b611b26565b34801561061757600080fd5b5060145461062c90600160a01b900460ff1681565b60405160ff909116815260200161042a565b34801561064a57600080fd5b50610568611d83565b34801561065f57600080fd5b5061042061066e36600461417b565b611d95565b34801561067f57600080fd5b5061042061068e36600461417b565b600b6020526000908152604090205481565b3480156106ac57600080fd5b506105686106bb366004613ebf565b611e3e565b3480156106cc57600080fd5b5061042060045481565b3480156106e257600080fd5b506106f66106f1366004613ebf565b611ecf565b60405161042a9190614196565b34801561070f57600080fd5b50610568611f8b565b6105686107263660046141b7565b611f9c565b34801561073757600080fd5b50610420611fbb565b34801561074c57600080fd5b50600054610530906001600160a01b031681565b34801561076c57600080fd5b50600f54610420565b34801561078157600080fd5b5060008051602061466b8339815191525460ff166104b0565b3480156107a657600080fd5b50610420611fd8565b3480156107bb57600080fd5b50601354610530906001600160a01b031681565b3480156107db57600080fd5b506107ef6107ea36600461417b565b611ffc565b60408051948552602085019390935291830152606082015260800161042a565b34801561081b57600080fd5b506104206120ba565b34801561083057600080fd5b5061056861083f366004614260565b6120c5565b34801561085057600080fd5b5061056861085f366004613ebf565b61212b565b34801561087057600080fd5b506104b061087f366004613ebf565b60106020526000908152604090205460ff1681565b3480156108a057600080fd5b50610568612195565b3480156108b557600080fd5b506108c96108c436600461417b565b6121a7565b60405161042a91906142eb565b3480156108e257600080fd5b506104206108f136600461417b565b61233d565b34801561090257600080fd5b50610420610911366004613ebf565b600c6020526000908152604090205481565b34801561092f57600080fd5b50610568612391565b34801561094457600080fd5b50610958610953366004613fe1565b6123a1565b60405161042a919061437c565b34801561097157600080fd5b50610568610980366004613ebf565b6124b4565b34801561099157600080fd5b506105686109a036600461417b565b6124f1565b3480156109b157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610530565b3480156109ee57600080fd5b506104206109fd36600461417b565b6001600160a01b03166000908152600a602052604090205490565b348015610a2457600080fd5b50610568610a3336600461417b565b61255c565b348015610a4457600080fd5b50610568612610565b348015610a5957600080fd5b50610420612688565b348015610a6e57600080fd5b50610420610a7d36600461417b565b600a6020526000908152604090205481565b348015610a9b57600080fd5b50610aaf610aaa366004613ebf565b612693565b604080519889526001600160a01b039097166020890152958701949094526060860192909252608085015260a084015260c0830152151560e08201526101000161042a565b348015610b0057600080fd5b50610420610b0f366004613ebf565b6126f6565b348015610b2057600080fd5b5061042060075481565b348015610b3657600080fd5b50610b5b604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161042a91906143b3565b348015610b7457600080fd5b50610568610b8336600461417b565b612773565b348015610b9457600080fd5b50610420610ba3366004613ebf565b612827565b348015610bb457600080fd5b50610568610bc3366004613ebf565b612861565b348015610bd457600080fd5b5061042060085481565b348015610bea57600080fd5b5061042060055481565b348015610c0057600080fd5b5061042060035481565b348015610c1657600080fd5b50610c2a610c25366004613ebf565b612a0d565b6040805193845260208401929092529082015260600161042a565b348015610c5157600080fd5b5061042060065481565b348015610c6757600080fd5b506107ef612a40565b348015610c7c57600080fd5b5061042060095481565b348015610c9257600080fd5b50610ca6610ca136600461417b565b612ab5565b60405161042a939291906143e6565b348015610cc157600080fd5b50610420612c98565b348015610cd657600080fd5b506104206201518081565b348015610ced57600080fd5b50610420612cf4565b348015610d0257600080fd5b50610568610d1136600461417b565b612cff565b348015610d2257600080fd5b50610568610d3136600461417b565b612e69565b348015610d4257600080fd5b50601454610530906001600160a01b031681565b606081831115610da35760405162461bcd60e51b8152602060048201526013602482015272496e76616c696420696e6465782072616e676560681b60448201526064015b60405180910390fd5b600f548210610dea5760405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b6044820152606401610d9a565b6000610df68484614421565b610e01906001614434565b90506000816001600160401b03811115610e1d57610e1d613f5c565b604051908082528060200260200182016040528015610e7257816020015b610e5f60405180606001604052806000815260200160008152602001600081525090565b815260200190600190039081610e3b5790505b50905060005b82811015610ef857600f610e8c8288614434565b81548110610e9c57610e9c614447565b90600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050828281518110610ee557610ee5614447565b6020908102919091010152600101610e78565b509150505b92915050565b600062015180610f13818461445d565b610efd919061447f565b600080610f2d620151808461445d565b905062015180600754610f40919061447f565b62015180610f4f836001614434565b610f59919061447f565b610f639190614434565b9392505050565b60608060608084516001600160401b03811115610f8957610f89613f5c565b604051908082528060200260200182016040528015610fb2578160200160208202803683370190505b50935084516001600160401b03811115610fce57610fce613f5c565b604051908082528060200260200182016040528015610ff7578160200160208202803683370190505b50925084516001600160401b0381111561101357611013613f5c565b60405190808252806020026020018201604052801561103c578160200160208202803683370190505b50915084516001600160401b0381111561105857611058613f5c565b604051908082528060200260200182016040528015611081578160200160208202803683370190505b50905060005b85518110156112a057600a60008783815181106110a6576110a6614447565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020548582815181106110e1576110e1614447565b602002602001018181525050306001600160a01b0316637923076c87838151811061110e5761110e614447565b60200260200101516040518263ffffffff1660e01b815260040161114191906001600160a01b0391909116815260200190565b602060405180830381865afa15801561115e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111829190614496565b84828151811061119457611194614447565b6020026020010181815250508481815181106111b2576111b2614447565b60200260200101518482815181106111cc576111cc614447565b6020026020010151116111e057600061121e565b8481815181106111f2576111f2614447565b602002602001015184828151811061120c5761120c614447565b602002602001015161121e9190614421565b83828151811061123057611230614447565b602002602001018181525050600b600087838151811061125257611252614447565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061128d5761128d614447565b6020908102919091010152600101611087565b509193509193565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156112ed5750825b90506000826001600160401b031660011480156113095750303b155b905081158015611317575080155b156113355760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561135f57845460ff60401b1916600160401b1785555b6001600160a01b038a166113ad5760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610d9a565b6001600160a01b0389166114035760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964207472656173757279206164647265737300000000000000006044820152606401610d9a565b6001600160a01b0388166114545760405162461bcd60e51b8152602060048201526018602482015277496e76616c6964206f70657261746f72206164647265737360401b6044820152606401610d9a565b6001600160a01b0387166114a25760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964206f776e6572206164647265737360581b6044820152606401610d9a565b6001600160a01b0386166114f25760405162461bcd60e51b8152602060048201526017602482015276496e76616c69642067617465776179206164647265737360481b6044820152606401610d9a565b6114fa612ea4565b61150387612eb4565b601480546001600160a01b03808d166001600160a01b03199283168117909355601380548d8316908416179055600080548c831690841617905560018054918a16919092161790556007805561012c6008556000196009556040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa158015611596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ba91906144af565b6014806101000a81548160ff021916908360ff160217905550831561161957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6060600f805480602002602001604051908101604052809291908181526020016000905b828210156116995783829060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020019060010190611649565b50505050905090565b6116aa612ec5565b600081116116ca5760405162461bcd60e51b8152600401610d9a906144d2565b336000908152600b6020908152604080832054600a909252822054600654600354600254939492936116fc9190614434565b611706908561447f565b611710919061445d565b9050808411156117595760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610d9a565b600060035460025461176b9190614434565b600160035460025460065489611781919061447f565b61178b9190614434565b6117959190614434565b61179f9190614421565b6117a9919061445d565b90506000846003546002546117be9190614434565b6117c8919061447f565b846006546117d6919061447f565b6117e0908861447f565b6117ea919061445d565b905060006117f88288614421565b336000908152600b602052604081208054929350859290919061181c908490614421565b9091555050336000908152600a602052604081208054849290611840908490614421565b9250508190555082600660008282546118599190614421565b9250508190555081600260008282546118729190614421565b92505081905550806003600082825461188b9190614421565b909155506000905061189c42610f03565b905060006118a942610f1d565b905083600c600084815260200190815260200160002060008282546118ce9190614434565b90915550506000828152600d6020526040812080548592906118f1908490614434565b909155505060118054604080516101008101825282815233602080830182815242848601908152606085018a8152608086018a815260a087018e815260c088018e8152600060e08a0181815260018d018e559c815298517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6860088d029081019190915595517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c69870180546001600160a01b0319166001600160a01b0390921691909117905593517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6a86015591517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6b850155517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6c840155517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6d830155517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6e82015595517f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6f909601805460ff19169615159690961790955581526012909352909120611abb9082612ef6565b5060408051828152602081018c90529081018690526060810185905242608082015260a0810184905260c0810183905233907f6d26e440e26a8f1ed28e68f9538448ca302eba5dbb3433bd1cca7a4961746ea09060e00160405180910390a250505050505050505050565b6000546001600160a01b03163314611b805760405162461bcd60e51b815260206004820152601a60248201527f43616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610d9a565b611b88612ec5565b60008111611ba85760405162461bcd60e51b8152600401610d9a906144d2565b6000611bb342610f03565b60008181526010602052604090205490915060ff1615611c155760405162461bcd60e51b815260206004820152601f60248201527f5969656c6420616c7265616479207570646174656420666f7220746f646179006044820152606401610d9a565b6000611c1f611fd8565b905080831115611c715760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e742065786365656473206d6178207969656c6420726174650000006044820152606401610d9a565b8260036000828254611c839190614434565b909155505060408051606081018252428152602080820186815260038054848601908152600f805460018082018355600092835296517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8029185029182015593517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80385015590517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac804909301929092558682526010835290849020805460ff191690931790925590548251868152918201527fb5caada44c21534f899b80931d6822af878c135819ecf2b62cfb2b81d7f299d4910160405180910390a1505050565b611d8b612f02565b611d93612f5d565b565b604051631e48c1db60e21b81526001600160a01b038216600482015260009081903090637923076c90602401602060405180830381865afa158015611dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e029190614496565b6001600160a01b0384166000908152600a6020526040902054909150808211611e2c576000611e36565b611e368183614421565b949350505050565b611e46612f02565b600081118015611e5857506127108111155b611e935760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964207261746560a01b6044820152606401610d9a565b60088190556040518181527ffcdfa0c3ba8f75263ea088da40baee72f397a45cda62c68a780407d7a9cb084a906020015b60405180910390a150565b611ef360405180606001604052806000815260200160008152602001600081525090565b600f548210611f3a5760405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b6044820152606401610d9a565b600f8281548110611f4d57611f4d614447565b906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820154815250509050919050565b611f93612ec5565b611d9333612fb7565b611fa46131dd565b611fad82613282565b611fb7828261328a565b5050565b6000611fc561334c565b5060008051602061464b83398151915290565b6000612710600854600254611fed919061447f565b611ff7919061445d565b905090565b6001600160a01b0381166000818152600a6020526040808220549051631e48c1db60e21b8152600481019390935291819081903090637923076c90602401602060405180830381865afa158015612057573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207b9190614496565b925083831161208b576000612095565b6120958484614421565b6001600160a01b039095166000908152600b6020526040902054939592949392915050565b6000611ff742612827565b6120cd612ec5565b600081511161211e5760405162461bcd60e51b815260206004820152601760248201527f4e6f2072657175657374204944732070726f76696465640000000000000000006044820152606401610d9a565b6121283382613395565b50565b612133612f02565b61213b612ec5565b4281111561217f5760405162461bcd60e51b81526020600482015260116024820152700496e76616c69642074696d657374616d7607c1b6044820152606401610d9a565b600061218a82612827565b9050611fb781613738565b61219d612f02565b611d9360006138f1565b6001600160a01b03811660009081526012602052604081206060916121cb82613962565b90506000816001600160401b038111156121e7576121e7613f5c565b60405190808252806020026020018201604052801561226b57816020015b6122586040518061010001604052806000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b8152602001906001900390816122055790505b50905060005b82811015612334576011612285858361396c565b8154811061229557612295614447565b6000918252602091829020604080516101008101825260089093029091018054835260018101546001600160a01b0316938301939093526002830154908201526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260079091015460ff16151560e0820152825183908390811061232157612321614447565b6020908102919091010152600101612271565b50949350505050565b600060065460000361235157506000919050565b6006546003546002546123649190614434565b6001600160a01b0384166000908152600b6020526040902054612387919061447f565b610efd919061445d565b612399612f02565b611d93613978565b606081516001600160401b038111156123bc576123bc613f5c565b6040519080825280602002602001820160405280156123e5578160200160208202803683370190505b50905060005b82518110156124ae57306001600160a01b0316634229abdd84838151811061241557612415614447565b60200260200101516040518263ffffffff1660e01b815260040161244891906001600160a01b0391909116815260200190565b602060405180830381865afa158015612465573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124899190614496565b82828151811061249b5761249b614447565b60209081029190910101526001016123eb565b50919050565b6124bc612f02565b60098190556040518181527f333b26cca69716ad4680ddb07663f5bfb4f06045671f336af9a83690a3ae00f990602001611ec4565b6124f9612ec5565b6001546001600160a01b031633146125535760405162461bcd60e51b815260206004820152601960248201527f43616c6c6572206973206e6f74207468652067617465776179000000000000006044820152606401610d9a565b61212881612fb7565b612564612f02565b6001600160a01b0381166125b45760405162461bcd60e51b8152602060048201526017602482015276496e76616c69642067617465776179206164647265737360481b6044820152606401610d9a565b6001546040516001600160a01b038084169216907f68e84423772dadc3e4047f8b5bd221ddb02dc67796e7852533fd976947d86c5190600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461266a5760405162461bcd60e51b815260206004820152601a60248201527f43616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610d9a565b612672612ec5565b600061267d42612827565b905061212881613738565b6000611ff742610f1d565b601181815481106126a357600080fd5b6000918252602090912060089091020180546001820154600283015460038401546004850154600586015460068701546007909701549597506001600160a01b0390941695929491939092909160ff1688565b6000805b6011548110156124ae5760006011828154811061271957612719614447565b60009182526020909120600890910201600781015490915060ff161580156127445750838160040154145b1561276a578060060154816005015461275d9190614434565b6127679084614434565b92505b506001016126fa565b61277b612f02565b6001600160a01b0381166127cc5760405162461bcd60e51b8152602060048201526018602482015277496e76616c6964206f70657261746f72206164647265737360401b6044820152606401610d9a565b600080546040516001600160a01b03808516939216917ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad0391a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080612837620151808461445d565b90506201518060075461284a919061447f565b612857620151808361447f565b610f639190614421565b612869612ec5565b600081116128895760405162461bcd60e51b8152600401610d9a906144d2565b6009548160025461289a9190614434565b11156128df5760405162461bcd60e51b815260206004820152601460248201527311195c1bdcda5d0818d85c08195e18d95959195960621b6044820152606401610d9a565b6000600654600014612917576003546002546128fb9190614434565b600654612908908461447f565b612912919061445d565b612919565b815b336000908152600a602052604081208054929350849290919061293d908490614434565b9091555050336000908152600b602052604081208054839290612961908490614434565b92505081905550816002600082825461297a9190614434565b9250508190555080600660008282546129939190614434565b90915550506013546014546129b7916001600160a01b0391821691339116856139c1565b81600460008282546129c99190614434565b9091555050604080518381526020810183905233917f73a19dd210f1a7f902193214c0ee91dd35ee5b4d920cba8d519eca65a7b488ca910160405180910390a25050565b600f8181548110612a1d57600080fd5b600091825260209091206003909102018054600182015460029092015490925083565b600254600354600654604080516339aa885b60e21b81529051600091309163e6aa216c916004808201926020929091908290030181865afa158015612a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aad9190614496565b905090919293565b6001600160a01b038116600090815260126020526040812060609190819081612add82613962565b6001600160401b03811115612af457612af4613f5c565b604051908082528060200260200182016040528015612b1d578160200160208202803683370190505b5090506000805b612b2d84613962565b811015612bfe5760006011612b42868461396c565b81548110612b5257612b52614447565b60009182526020909120600890910201600781015490915060ff16158015612b7e575042816004015411155b8015612b9d575060038101546000908152600e602052604090205460ff165b15612bf5578060000154848481518110612bb957612bb9614447565b60209081029190910101526005810154612bd39088614434565b9650806006015486612be59190614434565b955082612bf181614509565b9350505b50600101612b24565b50806001600160401b03811115612c1757612c17613f5c565b604051908082528060200260200182016040528015612c40578160200160208202803683370190505b50955060005b81811015612c8d57828181518110612c6057612c60614447565b6020026020010151878281518110612c7a57612c7a614447565b6020908102919091010152600101612c46565b505050509193909250565b6014546000908190612cb590600160a01b900460ff16600a614609565b9050600654600003612cc657919050565b60065481600354600254612cda9190614434565b612ce4919061447f565b612cee919061445d565b91505090565b6000611ff742610f03565b612d07612f02565b6001600160a01b038116612d4f5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610d9a565b600354600254612d5f9190614434565b6014546040516370a0823160e01b81526001600160a01b038481166004830152909116906370a0823190602401602060405180830381865afa158015612da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dcd9190614496565b1015612e1b5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742074726561737572792062616c616e63650000006044820152606401610d9a565b601380546001600160a01b0319166001600160a01b0383169081179091556040519081527f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d190602001611ec4565b612e71612f02565b6001600160a01b038116612e9b57604051631e4fbdf760e01b815260006004820152602401610d9a565b612128816138f1565b612eac613a2e565b611d93613a77565b612ebc613a2e565b61212881613a98565b60008051602061466b8339815191525460ff1615611d935760405163d93c066560e01b815260040160405180910390fd5b6000610f638383613aa0565b33612f347f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611d935760405163118cdaa760e01b8152336004820152602401610d9a565b612f65613aef565b60008051602061466b833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b039091168152602001611ec4565b6000806000612fc584612ab5565b9250925092506000821180612fda5750600081115b6130205760405162461bcd60e51b81526020600482015260176024820152764e6f207769746864726177616c7320746f20636c61696d60481b6044820152606401610d9a565b6001600160a01b0384166000908152601260205260408120905b84518110156130ad57600085828151811061305757613057614447565b6020026020010151905060006011828154811061307657613076614447565b600091825260209091206007600890920201908101805460ff1916600117905590506130a28483613b1f565b50505060010161303a565b5060006130ba8385614434565b6014546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015613107573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312b9190614496565b10156131795760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e63650000006044820152606401610d9a565b601454613190906001600160a01b03168783613b2b565b856001600160a01b03167f54aaca2bf3d1b51daace401e1c6d1fb7b508a9582894622af2c5f780faaadddf8686866040516131cd939291906143e6565b60405180910390a2505050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061326457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661325860008051602061464b833981519152546001600160a01b031690565b6001600160a01b031614155b15611d935760405163703e46dd60e11b815260040160405180910390fd5b612128612f02565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156132e4575060408051601f3d908101601f191682019092526132e191810190614496565b60015b61330c57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d9a565b60008051602061464b833981519152811461333d57604051632a87526960e21b815260048101829052602401610d9a565b6133478383613b5c565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d935760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b03821660009081526012602052604081209080805b84518110156135c35760008582815181106133ce576133ce614447565b6020026020010151905060118054905081106134215760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081c995c5d595cdd08125160721b6044820152606401610d9a565b60006011828154811061343657613436614447565b6000918252602090912060089091020160018101549091506001600160a01b038981169116146134a85760405162461bcd60e51b815260206004820152601f60248201527f5265717565737420646f6573206e6f742062656c6f6e6720746f2075736572006044820152606401610d9a565b600781015460ff16156134fd5760405162461bcd60e51b815260206004820152601860248201527f5265717565737420616c72656164792072656c656173656400000000000000006044820152606401610d9a565b42816004015411158015613524575060038101546000908152600e602052604090205460ff165b61357c5760405162461bcd60e51b815260206004820152602360248201527f52657175657374206e6f742079657420617661696c61626c6520666f7220636c60448201526261696d60e81b6064820152608401610d9a565b60078101805460ff19166001179055600581015461359a9086614434565b94508060060154846135ac9190614434565b93506135b88683613b1f565b5050506001016133b1565b5060008211806135d35750600081115b6136195760405162461bcd60e51b81526020600482015260176024820152764e6f207769746864726177616c7320746f20636c61696d60481b6044820152606401610d9a565b60006136258284614434565b6014546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015613672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136969190614496565b10156136e45760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e63650000006044820152606401610d9a565b6014546136fb906001600160a01b03168783613b2b565b856001600160a01b03167f54aaca2bf3d1b51daace401e1c6d1fb7b508a9582894622af2c5f780faaadddf8685856040516131cd939291906143e6565b6000818152600e602052604090205460ff16156137aa5760405162461bcd60e51b815260206004820152602a60248201527f5769746864726177616c7320616c72656164792072656c656173656420666f72604482015269081d1a1a5cc81d5b9a5d60b21b6064820152608401610d9a565b6000818152600d6020908152604080832054600c9092528220546137ce9190614434565b1161382b5760405162461bcd60e51b815260206004820152602760248201527f4e6f207769746864726177616c7320746f2072656c6561736520666f722074686044820152661a5cc81d5b9a5d60ca1b6064820152608401610d9a565b6000818152600c6020908152604080832054600d90925282205490916138518284614434565b601354601454919250613872916001600160a01b03908116911630846139c1565b80600560008282546138849190614434565b90915550506000848152600e6020908152604091829020805460ff191660011790558151838152908101859052908101839052606081018590527f94acfea29d77ff593c40af0c30c46433568c0c47cf1a57130f8d098fe90e5b529060800160405180910390a150505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000610efd825490565b6000610f638383613bb2565b613980612ec5565b60008051602061466b833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612f9f565b6040516001600160a01b038481166024830152838116604483015260648201839052613a289186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613bdc565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611d9357604051631afcd79f60e31b815260040160405180910390fd5b613a7f613a2e565b60008051602061466b833981519152805460ff19169055565b612e71613a2e565b6000818152600183016020526040812054613ae757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610efd565b506000610efd565b60008051602061466b8339815191525460ff16611d9357604051638dfc202b60e01b815260040160405180910390fd5b6000610f638383613c4d565b6040516001600160a01b0383811660248301526044820183905261334791859182169063a9059cbb906064016139f6565b613b6582613d40565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115613baa576133478282613da5565b611fb7613e1b565b6000826000018281548110613bc957613bc9614447565b9060005260206000200154905092915050565b600080602060008451602086016000885af180613bff576040513d6000823e3d81fd5b50506000513d91508115613c17578060011415613c24565b6001600160a01b0384163b155b15613a2857604051635274afe760e01b81526001600160a01b0385166004820152602401610d9a565b60008181526001830160205260408120548015613d36576000613c71600183614421565b8554909150600090613c8590600190614421565b9050808214613cea576000866000018281548110613ca557613ca5614447565b9060005260206000200154905080876000018481548110613cc857613cc8614447565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613cfb57613cfb614618565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610efd565b6000915050610efd565b806001600160a01b03163b600003613d7657604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d9a565b60008051602061464b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613dc2919061462e565b600060405180830381855af49150503d8060008114613dfd576040519150601f19603f3d011682016040523d82523d6000602084013e613e02565b606091505b5091509150613e12858383613e3a565b95945050505050565b3415611d935760405163b398979f60e01b815260040160405180910390fd5b606082613e4f57613e4a82613e96565b610f63565b8151158015613e6657506001600160a01b0384163b155b15613e8f57604051639996b31560e01b81526001600160a01b0385166004820152602401610d9a565b5092915050565b805115613ea65780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b600060208284031215613ed157600080fd5b5035919050565b60008060408385031215613eeb57600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b81811015613f5157613f3b8385518051825260208082015190830152604090810151910152565b6020939093019260609290920191600101613f14565b509095945050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f9a57613f9a613f5c565b604052919050565b60006001600160401b03821115613fbb57613fbb613f5c565b5060051b60200190565b80356001600160a01b0381168114613fdc57600080fd5b919050565b600060208284031215613ff357600080fd5b81356001600160401b0381111561400957600080fd5b8201601f8101841361401a57600080fd5b803561402d61402882613fa2565b613f72565b8082825260208201915060208360051b85010192508683111561404f57600080fd5b6020840193505b828410156140785761406784613fc5565b825260209384019390910190614056565b9695505050505050565b600081518084526020840193506020830160005b828110156140b4578151865260209586019590910190600101614096565b5093949350505050565b6080815260006140d16080830187614082565b82810360208401526140e38187614082565b905082810360408401526140f78186614082565b9050828103606084015261410b8185614082565b979650505050505050565b600080600080600060a0868803121561412e57600080fd5b61413786613fc5565b945061414560208701613fc5565b935061415360408701613fc5565b925061416160608701613fc5565b915061416f60808701613fc5565b90509295509295909350565b60006020828403121561418d57600080fd5b610f6382613fc5565b81518152602080830151908201526040808301519082015260608101610efd565b600080604083850312156141ca57600080fd5b6141d383613fc5565b915060208301356001600160401b038111156141ee57600080fd5b8301601f810185136141ff57600080fd5b80356001600160401b0381111561421857614218613f5c565b61422b601f8201601f1916602001613f72565b81815286602083850101111561424057600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561427257600080fd5b81356001600160401b0381111561428857600080fd5b8201601f8101841361429957600080fd5b80356142a761402882613fa2565b8082825260208201915060208360051b8501019250868311156142c957600080fd5b6020840193505b828410156140785783358252602093840193909101906142d0565b602080825282518282018190526000918401906040840190835b81811015613f515783518051845260018060a01b03602082015116602085015260408101516040850152606081015160608501526080810151608085015260a081015160a085015260c081015160c085015260e0810151151560e08501525061010083019250602084019350600181019050614305565b602081526000610f636020830184614082565b60005b838110156143aa578181015183820152602001614392565b50506000910152565b60208152600082518060208401526143d281604085016020870161438f565b601f01601f19169190910160400192915050565b6060815260006143f96060830186614082565b60208301949094525060400152919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610efd57610efd61440b565b80820180821115610efd57610efd61440b565b634e487b7160e01b600052603260045260246000fd5b60008261447a57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610efd57610efd61440b565b6000602082840312156144a857600080fd5b5051919050565b6000602082840312156144c157600080fd5b815160ff81168114610f6357600080fd5b6020808252601d908201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604082015260600190565b60006001820161451b5761451b61440b565b5060010190565b6001815b600184111561455d578085048111156145415761454161440b565b600184161561454f57908102905b60019390931c928002614526565b935093915050565b60008261457457506001610efd565b8161458157506000610efd565b816001811461459757600281146145a1576145bd565b6001915050610efd565b60ff8411156145b2576145b261440b565b50506001821b610efd565b5060208310610133831016604e8410600b84101617156145e0575081810a610efd565b6145ed6000198484614522565b80600019048211156146015761460161440b565b029392505050565b6000610f6360ff841683614565565b634e487b7160e01b600052603160045260246000fd5b6000825161464081846020870161438f565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a2646970667358221220d3d551ce7c884c7bc7d979273d36bdf80f3d775de6e0e55863a8606ee2d49bd964736f6c634300081c0033