0 txs
665 calls
constructor
constructor()
functions
accruedRestakerInterest
viewfunction accruedRestakerInterest(address _agent, address _asset) view returns (uint256 accruedInterest)
agent
viewfunction agent(address _agent) view returns (uint256 totalDelegation, uint256 totalSlashableCollateral, uint256 totalDebt, uint256 ltv, uint256 liquidationThreshold, uint256 health)
bonus
viewfunction bonus(address _agent) view returns (uint256 maxBonus)
bonusCap
viewfunction bonusCap() view returns (uint256 cap)
debt
viewfunction debt(address _agent, address _asset) view returns (uint256 totalDebt)
emergencyLiquidationThreshold
viewfunction emergencyLiquidationThreshold() view returns (uint256 threshold)
expiry
viewfunction expiry() view returns (uint256 expiryPeriod)
grace
viewfunction grace() view returns (uint256 gracePeriod)
liquidationStart
viewfunction liquidationStart(address _agent) view returns (uint256 startTime)
maxBorrowable
viewfunction maxBorrowable(address _agent, address _asset) view returns (uint256 maxBorrowableAmount)
maxLiquidatable
viewfunction maxLiquidatable(address _agent, address _asset) view returns (uint256 maxLiquidatableAmount)
maxRealization
viewfunction maxRealization(address _asset) view returns (uint256 _maxRealization)
maxRestakerRealization
viewfunction maxRestakerRealization(address _agent, address _asset) view returns (uint256 newRealizedInterest, uint256 newUnrealizedInterest)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
reservesCount
viewfunction reservesCount() view returns (uint256 count)
reservesData
viewfunction reservesData(address _asset) view returns (uint256 id, address vault, address debtToken, address interestReceiver, uint8 decimals, bool paused, uint256 minBorrow)
targetHealth
viewfunction targetHealth() view returns (uint256 target)
unrealizedInterest
viewfunction unrealizedInterest(address _agent, address _asset) view returns (uint256 _unrealizedInterest)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
addAsset
nonpayablefunction addAsset(tuple _params)
borrow
nonpayablefunction borrow(address _asset, uint256 _amount, address _receiver) returns (uint256 borrowed)
closeLiquidation
nonpayablefunction closeLiquidation(address _agent)
initialize
nonpayablefunction initialize(address _accessControl, address _delegation, address _oracle, uint256 _targetHealth, uint256 _grace, uint256 _expiry, uint256 _bonusCap, uint256 _emergencyLiquidationThreshold)
liquidate
nonpayablefunction liquidate(address _agent, address _asset, uint256 _amount, uint256 _minLiquidatedValue) returns (uint256 liquidatedValue)
openLiquidation
nonpayablefunction openLiquidation(address _agent)
pauseAsset
nonpayablefunction pauseAsset(address _asset, bool _pause)
realizeInterest
nonpayablefunction realizeInterest(address _asset) returns (uint256 actualRealized)
realizeRestakerInterest
nonpayablefunction realizeRestakerInterest(address _agent, address _asset) returns (uint256 actualRealized)
removeAsset
nonpayablefunction removeAsset(address _asset)
repay
nonpayablefunction repay(address _asset, uint256 _amount, address _agent) returns (uint256 repaid)
setBonusCap
nonpayablefunction setBonusCap(uint256 _bonusCap)
setExpiry
nonpayablefunction setExpiry(uint256 _expiry)
setGrace
nonpayablefunction setGrace(uint256 _grace)
setInterestReceiver
nonpayablefunction setInterestReceiver(address _asset, address _interestReceiver)
setMinBorrow
nonpayablefunction setMinBorrow(address _asset, uint256 _minBorrow)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Initialized
event Initialized(uint64 version)
Upgraded
event Upgraded(address indexed implementation)
errors
AccessDenied
error AccessDenied()
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpiryLessThanGrace
error ExpiryLessThanGrace()
FailedCall
error FailedCall()
GraceGreaterThanExpiry
error GraceGreaterThanExpiry()
InvalidBonusCap
error InvalidBonusCap()
InvalidInitialization
error InvalidInitialization()
InvalidReserveIndex
error InvalidReserveIndex()
InvalidTargetHealth
error InvalidTargetHealth()
NotInitializing
error NotInitializing()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
ZeroAddressNotValid
error ZeroAddressNotValid()
creation bytecode
0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612c226100f95f395f81816116d70152818161170001526118480152612c225ff3fe608060405260043610610207575f3560e01c806387e3d33911610113578063d449300d1161009d578063df8fa4301161006d578063df8fa43014610645578063e184c9be14610664578063e325fb4b14610678578063e66e33aa1461068c578063f0a05395146106ab575f5ffd5b8063d449300d146105c9578063d8cb4aa3146105e8578063d9f97d0014610607578063df6e7cc814610626575f5ffd5b8063a555d689116100e3578063a555d68914610506578063ad3cb1cc1461051a578063afabb4e014610557578063b095cd1e14610576578063c1342574146105aa575f5ffd5b806387e3d3391461045d578063904377ec1461047c57806392e423b51461049b578063968faa95146104e7575f5ffd5b8063440364df1161019457806354b768bb1161016457806354b768bb146103cd57806359c97273146103e15780635ceae9c4146104005780636511a0681461041f5780636c665a551461043e575f5ffd5b8063440364df146103735780634a5e42b1146103875780634f1ef286146103a657806352d1902d146103b9575f5ffd5b80630a8d01da116101da5780630a8d01da146102d5578063102512d5146103025780631ee3b4c8146103215780631eefddb1146103405780633a00bc4414610354575f5ffd5b806301cceb381461020b578063050d6c641461022c578063061efb4f1461024b57806308cf6fec1461026a575b5f5ffd5b348015610216575f5ffd5b5061022a610225366004612558565b6106ca565b005b348015610237575f5ffd5b5061022a61024636600461256f565b610716565b348015610256575f5ffd5b5061022a610265366004612558565b6107e4565b348015610275575f5ffd5b506102896102843660046125a3565b610831565b604080519788526001600160a01b0396871660208901529486169487019490945293909116606085015260ff16608084015290151560a083015260c082015260e0015b60405180910390f35b3480156102e0575f5ffd5b506102f46102ef3660046125bc565b6108a3565b6040519081526020016102cc565b34801561030d575f5ffd5b5061022a61031c3660046125ed565b610942565b34801561032c575f5ffd5b506102f461033b3660046125bc565b610a03565b34801561034b575f5ffd5b506102f4610a42565b34801561035f575f5ffd5b5061022a61036e366004612622565b610a54565b34801561037e575f5ffd5b506102f4610ae9565b348015610392575f5ffd5b5061022a6103a13660046125a3565b610afb565b61022a6103b436600461266b565b610bb3565b3480156103c4575f5ffd5b506102f4610bd2565b3480156103d8575f5ffd5b506102f4610bed565b3480156103ec575f5ffd5b506102f46103fb3660046125a3565b610c03565b34801561040b575f5ffd5b506102f461041a36600461272f565b610c1b565b34801561042a575f5ffd5b506102f46104393660046125a3565b610d0b565b348015610449575f5ffd5b506102f461045836600461272f565b610d35565b348015610468575f5ffd5b5061022a610477366004612558565b610ddd565b348015610487575f5ffd5b5061022a6104963660046125bc565b610e2a565b3480156104a6575f5ffd5b506104ba6104b53660046125a3565b610ed3565b604080519687526020870195909552938501929092526060840152608083015260a082015260c0016102cc565b3480156104f2575f5ffd5b506102f46105013660046125bc565b610f7c565b348015610511575f5ffd5b506102f4610fda565b348015610525575f5ffd5b5061054a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102cc9190612768565b348015610562575f5ffd5b5061022a6105713660046125a3565b610fec565b348015610581575f5ffd5b506105956105903660046125bc565b61106b565b604080519283526020830191909152016102cc565b3480156105b5575f5ffd5b506102f46105c436600461279d565b61108a565b3480156105d4575f5ffd5b506102f46105e33660046125bc565b61117d565b3480156105f3575f5ffd5b506102f46106023660046125a3565b6111db565b348015610612575f5ffd5b506102f46106213660046125bc565b611214565b348015610631575f5ffd5b506102f46106403660046125a3565b611272565b348015610650575f5ffd5b5061022a61065f3660046127dc565b611302565b34801561066f575f5ffd5b506102f4611544565b348015610683575f5ffd5b506102f4611556565b348015610697575f5ffd5b5061022a6106a63660046125a3565b611568565b3480156106b6575f5ffd5b506102f46106c53660046125bc565b61158a565b62399d6760e31b6106da816115e8565b6106e26116a8565b6008015482116107055760405163fb25f5d760e01b815260040160405180910390fd5b8161070e6116a8565b600901555050565b6301435b1960e21b610727816115e8565b5f6107306116a8565b60405163be85f10960e01b815290915073e12b1d45763165832778db6fa51337ddbd8342819063be85f1099061076c9084908790600401612848565b602060405180830381865af4158015610787573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ab91906128d0565b6107df576004810180545f906107c49061ffff166128ff565b91906101000a81548161ffff021916908361ffff1602179055505b505050565b63061efb4f60e01b6107f5816115e8565b676765c793fa10079d601b1b8211156108205760405162985b3f60e21b815260040160405180910390fd5b816108296116a8565b600a01555050565b5f5f5f5f5f5f5f5f6108416116a8565b6001600160a01b03998a165f90815260029182016020526040902080546001820154928201546003830154600890930154919d938d169c9081169b508216995060ff600160a01b830481169950600160a81b9092049091169650945092505050565b5f73abe54f5fa6d318bd6113d22548bc7d1cf6632755636d4323a86108c66116a8565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b03808716602483015285166044820152606401602060405180830381865af4158015610917573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093b919061291f565b9392505050565b63102512d560e01b610953816115e8565b6001600160a01b03831661097a57604051633bf95ba760e01b815260040160405180910390fd5b73e12b1d45763165832778db6fa51337ddbd83428163e9dd3d1961099c6116a8565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b0386166024820152604481018590526064015b5f6040518083038186803b1580156109e8575f5ffd5b505af41580156109fa573d5f5f3e3d5ffd5b50505050505050565b5f5f610a0d6116a8565b6001600160a01b039384165f908152600291909101602090815260408083209690951682526006909501909452505090205490565b5f610a4b6116a8565b60080154905090565b630e802f1160e21b610a65816115e8565b6001600160a01b038316610a8c57604051633bf95ba760e01b815260040160405180910390fd5b73e12b1d45763165832778db6fa51337ddbd834281635a9ae0b8610aae6116a8565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b038616602482015284151560448201526064016109d2565b5f610af26116a8565b60070154905090565b634a5e42b160e01b610b0c816115e8565b6001600160a01b038216610b3357604051633bf95ba760e01b815260040160405180910390fd5b73e12b1d45763165832778db6fa51337ddbd834281636dc28711610b556116a8565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b03851660248201526044015f6040518083038186803b158015610b99575f5ffd5b505af4158015610bab573d5f5f3e3d5ffd5b505050505050565b610bbb6116cc565b610bc482611772565b610bce828261177c565b5050565b5f610bdb61183d565b505f516020612bcd5f395f51905f5290565b5f610bf66116a8565b6004015461ffff16919050565b5f610c15610c0f6116a8565b83611886565b92915050565b5f6001600160a01b0382161580610c3957506001600160a01b038416155b15610c5757604051633bf95ba760e01b815260040160405180910390fd5b73abe54f5fa6d318bd6113d22548bc7d1cf663275563e1481c1d610c796116a8565b604080516080810182526001600160a01b0380881682528916602082015280820188905233606082015290516001600160e01b031960e085901b168152610cc4929190600401612936565b602060405180830381865af4158015610cdf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d03919061291f565b949350505050565b5f610d146116a8565b6001600160a01b039092165f90815260069290920160205250604090205490565b5f73abe54f5fa6d318bd6113d22548bc7d1cf663275563c8293757610d586116a8565b6040805160a0810182523381526001600160a01b03898116602083019081528284018a8152898316606085019081525f198c1460808601908152955160e089901b6001600160e01b03191681526004810197909752935183166024870152905182166044860152516064850152905116608483015251151560a482015260c401610cc4565b6387e3d33960e01b610dee816115e8565b610df66116a8565b600901548210610e19576040516309cdb20560e01b815260040160405180910390fd5b81610e226116a8565b600801555050565b632410ddfb60e21b610e3b816115e8565b6001600160a01b0383161580610e5857506001600160a01b038216155b15610e7657604051633bf95ba760e01b815260040160405180910390fd5b73e12b1d45763165832778db6fa51337ddbd8342816374a1df5e610e986116a8565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b038087166024830152851660448201526064016109d2565b5f5f5f5f5f5f733b07ee5baa3fa4444c5885df44a2ae0337fe062f632a43ad13610efb6116a8565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b038a16602482015260440160c060405180830381865af4158015610f44573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f689190612976565b949c939b5091995097509550909350915050565b5f6001600160a01b0383161580610f9a57506001600160a01b038216155b15610fb857604051633bf95ba760e01b815260040160405180910390fd5b733b07ee5baa3fa4444c5885df44a2ae0337fe062f635afe08236108c66116a8565b5f610fe36116a8565b600b0154905090565b738885bba655a2dde0c617d3e7f86913b34642691363976aa09061100e6116a8565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b03841660248201526044015f6040518083038186803b158015611052575f5ffd5b505af4158015611064573d5f5f3e3d5ffd5b5050505050565b5f5f61107f6110786116a8565b85856119e2565b909590945092505050565b5f6001600160a01b03851615806110a857506001600160a01b038416155b156110c657604051633bf95ba760e01b815260040160405180910390fd5b738885bba655a2dde0c617d3e7f86913b3464269136308fb9f9d6110e86116a8565b604080516080810182526001600160a01b03808b1682528916602082015280820188905233606082015290516001600160e01b031960e085901b16815261113592919087906004016129bc565b602060405180830381865af4158015611150573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611174919061291f565b95945050505050565b5f6001600160a01b038316158061119b57506001600160a01b038216155b156111b957604051633bf95ba760e01b815260040160405180910390fd5b733b07ee5baa3fa4444c5885df44a2ae0337fe062f6341104a5e6108c66116a8565b5f6001600160a01b03821661120357604051633bf95ba760e01b815260040160405180910390fd5b610c1561120e6116a8565b83611b3f565b5f6001600160a01b038316158061123257506001600160a01b038216155b1561125057604051633bf95ba760e01b815260040160405180910390fd5b733b07ee5baa3fa4444c5885df44a2ae0337fe062f637eb5c5bc6108c66116a8565b5f73abe54f5fa6d318bd6113d22548bc7d1cf663275563f0cc455b6112956116a8565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b0385166024820152604401602060405180830381865af41580156112de573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c15919061291f565b5f61130b611c81565b805490915060ff600160401b820416159067ffffffffffffffff165f811580156113325750825b90505f8267ffffffffffffffff16600114801561134e5750303b155b90508115801561135c575080155b1561137a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156113a457845460ff60401b1916600160401b1785555b6113ad8d611ca9565b6113b5611cbd565b6001600160a01b038c1615806113d257506001600160a01b038b16155b156113f057604051633bf95ba760e01b815260040160405180910390fd5b676765c793fa10079d601b1b8a101561141c57604051639ca1aa9560e01b815260040160405180910390fd5b87891061143c576040516309cdb20560e01b815260040160405180910390fd5b676765c793fa10079d601b1b8711156114675760405162985b3f60e21b815260040160405180910390fd5b5f6114706116a8565b90508c815f015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508b816001015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508a81600701819055508981600801819055508881600901819055508781600a01819055508681600b018190555050831561153557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b5f61154d6116a8565b60090154905090565b5f61155f6116a8565b600a0154905090565b738885bba655a2dde0c617d3e7f86913b34642691363736c147e61100e6116a8565b5f6001600160a01b03831615806115a857506001600160a01b038216155b156115c657604051633bf95ba760e01b815260040160405180910390fd5b733b07ee5baa3fa4444c5885df44a2ae0337fe062f6359f432fe6108c66116a8565b5f7fb413d65cb88f23816c329284a0d3eb15a99df7963ab7402ade4c5da22bff6b0054604051633657648360e21b81526001600160e01b0319841660048201523060248201523360448201526001600160a01b039091169063d95d920c90606401602060405180830381865afa158015611664573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168891906128d0565b905080610bce57604051634ca8886760e01b815260040160405180910390fd5b7fd6af1ec8a1789f5ada2b972bd1569f7c83af2e268be17cd65efe8474ebf0880090565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061175257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117465f516020612bcd5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156117705760405163703e46dd60e11b815260040160405180910390fd5b565b5f610bce816115e8565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117d6575060408051601f3d908101601f191682019092526117d39181019061291f565b60015b61180357604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f516020612bcd5f395f51905f52811461183357604051632a87526960e21b8152600481018290526024016117fa565b6107df8383611cc5565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117705760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b038082165f9081526002808501602090815260408084209283015481516318160ddd60e01b8152915194959394869491909116926318160ddd92600480820193918290030181865afa1580156118e5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611909919061291f565b600183015460405163a0821be360e01b81526001600160a01b0387811660048301529293505f929091169063a0821be390602401602060405180830381865afa158015611958573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197c919061291f565b60048401546005850154919250906119948183612a0a565b8411156119b357806119a68386612a1d565b6119b09190612a1d565b95505b858310156119bf578295505b6003850154600160a81b900460ff16156119d7575f95505b505050505092915050565b6001600160a01b038181165f8181526002860160205260408082209051635afe082360e01b81526004810188905293861660248501526044840192909252918291908290733b07ee5baa3fa4444c5885df44a2ae0337fe062f90635afe082390606401602060405180830381865af4158015611a60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a84919061291f565b600183015460405163a0821be360e01b81526001600160a01b0388811660048301529293505f929091169063a0821be390602401602060405180830381865afa158015611ad3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611af7919061291f565b90508194508260030160159054906101000a900460ff1615611b1c575f949350611b34565b80851115611b3457611b2e8186612a1d565b93508094505b505050935093915050565b5f5f5f611b4c8585611d1a565b505050925050915080821115611c7957676765c793fa10079d601b1b8186600b015484611b799190612a30565b611b839190612a5b565b1015611b955784600a01549250611c3e565b60088501546001600160a01b0385165f908152600687016020526040902054611bbe9190612a0a565b421115611c3e5760088501546001600160a01b0385165f9081526006870160205260408120549091611bef91612a0a565b611bf99042612a1d565b90505f86600801548760090154611c109190612a1d565b905080821115611c1e578091505b808288600a0154611c2f9190612a30565b611c399190612a5b565b945050505b5f81611c4a8185612a1d565b611c5f90676765c793fa10079d601b1b612a30565b611c699190612a5b565b905080841115611c77578093505b505b505092915050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610c15565b611cb1611ed7565b611cba81611efc565b50565b611770611ed7565b611cce82611f48565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611d12576107df8282611f91565b610bce611ffa565b8154604051630330244360e41b81526001600160a01b0383811660048301525f928392839283928392839290911690633302443090602401602060405180830381865afa158015611d6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d91919061291f565b885460405163f01391e360e01b81526001600160a01b038a8116600483015292985091169063f01391e390602401602060405180830381865afa158015611dda573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dfe919061291f565b885460405163b1732b2560e01b81526001600160a01b038a8116600483015292975091169063b1732b2590602401602060405180830381865afa158015611e47573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e6b919061291f565b9150611e778888612019565b93508515611ea45785611e9585676765c793fa10079d601b1b612a30565b611e9f9190612a5b565b611ea6565b5f5b92508315611ec85783611eb98388612a30565b611ec39190612a5b565b611ecb565b5f195b90509295509295509295565b611edf6121dc565b61177057604051631afcd79f60e31b815260040160405180910390fd5b611f04611ed7565b807fb413d65cb88f23816c329284a0d3eb15a99df7963ab7402ade4c5da22bff6b005b80546001600160a01b0319166001600160a01b039290921691909117905550565b806001600160a01b03163b5f03611f7d57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016117fa565b805f516020612bcd5f395f51905f52611f27565b60605f5f846001600160a01b031684604051611fad9190612a6e565b5f60405180830381855af49150503d805f8114611fe5576040519150601f19603f3d011682016040523d82523d5f602084013e611fea565b606091505b50915091506111748583836121f5565b34156117705760405163b398979f60e01b815260040160405180910390fd5b5f5f5b600484015461ffff168110156121d5576001600160a01b0383165f90815260058501602090815260409182902082519182019092529054815261205f908261224a565b156121cd575f81815260038501602052604080822054600187015491516341976e0960e01b81526001600160a01b0391821660048201819052939291909116906341976e09906024016040805180830381865afa1580156120c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e69190612a84565b509050805f036120f75750506121cd565b6001600160a01b0382165f908152600287016020526040902060038101546121bd90839061213090600160a01b900460ff16600a612b89565b600161213d8b8b8961227c565b60028601546040516370a0823160e01b81526001600160a01b038d81166004830152909116906370a0823190602401602060405180830381865afa158015612187573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ab919061291f565b6121b59190612a0a565b9291906123e4565b6121c79086612a0a565b94505050505b60010161201c565b5092915050565b5f6121e5611c81565b54600160401b900460ff16919050565b60608261220a5761220582612426565b61093b565b815115801561222157506001600160a01b0384163b155b156121d557604051639996b31560e01b81526001600160a01b03851660048201526024016117fa565b5f610100821061226d576040516385e98beb60e01b815260040160405180910390fd5b509051600191821b1c16151590565b6001600160a01b038181165f908152600285810160205260408083209182015490516370a0823160e01b8152868516600482015292939192849291909116906370a0823190602401602060405180830381865afa1580156122df573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612303919061291f565b600187015460405163131b636160e31b81526001600160a01b0388811660048301529293505f92909116906398db1b0890602401602060405180830381865afa158015612352573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612376919061291f565b6001600160a01b0387165f9081526007850160205260408120549192509061239e9042612a1d565b90506123b96301e13380676765c793fa10079d601b1b612a30565b816123c48486612a30565b6123ce9190612a30565b6123d89190612a5b565b98975050505050505050565b5f6124116123f18361244f565b801561240c57505f848061240757612407612a47565b868809115b151590565b61241c86868661247b565b6111749190612a0a565b8051156124365780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f600282600381111561246457612464612b97565b61246e9190612bab565b60ff166001149050919050565b5f5f5f612488868661252b565b91509150815f036124ac578381816124a2576124a2612a47565b049250505061093b565b8184116124c3576124c36003851502601118612547565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f60208284031215612568575f5ffd5b5035919050565b5f60c0828403128015612580575f5ffd5b509092915050565b80356001600160a01b038116811461259e575f5ffd5b919050565b5f602082840312156125b3575f5ffd5b61093b82612588565b5f5f604083850312156125cd575f5ffd5b6125d683612588565b91506125e460208401612588565b90509250929050565b5f5f604083850312156125fe575f5ffd5b61260783612588565b946020939093013593505050565b8015158114611cba575f5ffd5b5f5f60408385031215612633575f5ffd5b61263c83612588565b9150602083013561264c81612615565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561267c575f5ffd5b61268583612588565b9150602083013567ffffffffffffffff8111156126a0575f5ffd5b8301601f810185136126b0575f5ffd5b803567ffffffffffffffff8111156126ca576126ca612657565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156126f9576126f9612657565b604052818152828201602001871015612710575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215612741575f5ffd5b61274a84612588565b92506020840135915061275f60408501612588565b90509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f5f608085870312156127b0575f5ffd5b6127b985612588565b93506127c760208601612588565b93969395505050506040820135916060013590565b5f5f5f5f5f5f5f5f610100898b0312156127f4575f5ffd5b6127fd89612588565b975061280b60208a01612588565b965061281960408a01612588565b979a96995096976060810135975060808101359660a0820135965060c0820135955060e0909101359350915050565b82815260e081016001600160a01b0361286084612588565b16602083015260018060a01b0361287960208501612588565b16604083015260018060a01b0361289260408501612588565b16606083015260018060a01b036128ab60608501612588565b1660808381019190915283013560a0808401919091529092013560c090910152919050565b5f602082840312156128e0575f5ffd5b815161093b81612615565b634e487b7160e01b5f52601160045260245ffd5b5f61ffff821661ffff8103612916576129166128eb565b60010192915050565b5f6020828403121561292f575f5ffd5b5051919050565b82815260a0810161093b602083018480516001600160a01b0390811683526020808301518216908401526040808301519084015260609182015116910152565b5f5f5f5f5f5f60c0878903121561298b575f5ffd5b50508451602086015160408701516060880151608089015160a090990151939a929950909790965094509092509050565b83815260c081016129fc602083018580516001600160a01b0390811683526020808301518216908401526040808301519084015260609182015116910152565b8260a0830152949350505050565b80820180821115610c1557610c156128eb565b81810381811115610c1557610c156128eb565b8082028115828204841417610c1557610c156128eb565b634e487b7160e01b5f52601260045260245ffd5b5f82612a6957612a69612a47565b500490565b5f82518060208501845e5f920191825250919050565b5f5f60408385031215612a95575f5ffd5b505080516020909101519092909150565b6001815b6001841115612ae157808504811115612ac557612ac56128eb565b6001841615612ad357908102905b60019390931c928002612aaa565b935093915050565b5f82612af757506001610c15565b81612b0357505f610c15565b8160018114612b195760028114612b2357612b3f565b6001915050610c15565b60ff841115612b3457612b346128eb565b50506001821b610c15565b5060208310610133831016604e8410600b8410161715612b62575081810a610c15565b612b6e5f198484612aa6565b805f1904821115612b8157612b816128eb565b029392505050565b5f61093b60ff841683612ae9565b634e487b7160e01b5f52602160045260245ffd5b5f60ff831680612bbd57612bbd612a47565b8060ff8416069150509291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c316a14185419539db00b88f9505515fa8a31c11547673fa3b2e1ab94ca0ec4c64736f6c634300081c0033