0 txs
5.1k calls
constructor
constructor()
functions
accruedRewards
viewfunction accruedRewards(address user) view returns (uint256[] rewardAmounts)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
assetInfo
viewfunction assetInfo() view returns (uint8 assetType, address assetAddress, uint8 assetDecimals)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
CONVERTER
viewfunction CONVERTER() view returns (address)
DAI
viewfunction DAI() view returns (address)
decimals
viewfunction decimals() view returns (uint8)
exchangeRate
viewfunction exchangeRate() view returns (uint256)
getRewardTokens
viewfunction getRewardTokens() view returns (address[] rewardTokens)
getTokensIn
viewfunction getTokensIn() view returns (address[])
getTokensOut
viewfunction getTokensOut() view returns (address[])
isValidTokenIn
viewfunction isValidTokenIn(address token) view returns (bool)
isValidTokenOut
viewfunction isValidTokenOut(address token) view returns (bool)
lastRewardBlock
viewfunction lastRewardBlock() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingOwner
viewfunction pendingOwner() view returns (address)
previewDeposit
viewfunction previewDeposit(address tokenIn, uint256 amountTokenToDeposit) view returns (uint256 amountSharesOut)
previewRedeem
viewfunction previewRedeem(address tokenOut, uint256 amountSharesToRedeem) view returns (uint256 amountTokenOut)
pricingInfo
viewfunction pricingInfo() view returns (address refToken, bool refStrictlyEqual)
rewardIndexesStored
viewfunction rewardIndexesStored() view returns (uint256[] indexes)
rewardState
viewfunction rewardState(address) view returns (uint128 index, uint128 lastBalance)
SPK
viewfunction SPK() view returns (address)
STAKING_CONTRACT
viewfunction STAKING_CONTRACT() view returns (address)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
USDS
viewfunction USDS() view returns (address)
userReward
viewfunction userReward(address, address) view returns (uint128 index, uint128 accrued)
yieldToken
viewfunction yieldToken() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
claimOwnership
nonpayablefunction claimOwnership()
claimRewards
nonpayablefunction claimRewards(address user) returns (uint256[] rewardAmounts)
deposit
payablefunction deposit(address receiver, address tokenIn, uint256 amountTokenToDeposit, uint256 minSharesOut) payable returns (uint256 amountSharesOut)
initialize
nonpayablefunction initialize(address _owner)
pause
nonpayablefunction pause()
redeem
nonpayablefunction redeem(address receiver, uint256 amountSharesToRedeem, address tokenOut, uint256 minTokenOut, bool burnFromInternalBalance) returns (uint256 amountTokenOut)
rewardIndexesCurrent
nonpayablefunction rewardIndexesCurrent() returns (uint256[] indexes)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner, bool direct, bool renounce)
unpause
nonpayablefunction unpause()
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
ClaimRewards
event ClaimRewards(address indexed user, address[] rewardTokens, uint256[] rewardAmounts)
Deposit
event Deposit(address indexed caller, address indexed receiver, address indexed tokenIn, uint256 amountDeposited, uint256 amountSyOut)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Redeem
event Redeem(address indexed caller, address indexed receiver, address indexed tokenOut, uint256 amountSyToRedeem, uint256 amountTokenOut)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
errors
SYInsufficientSharesOut
error SYInsufficientSharesOut(uint256 actualSharesOut, uint256 requiredSharesOut)
SYInsufficientTokenOut
error SYInsufficientTokenOut(uint256 actualTokenOut, uint256 requiredTokenOut)
SYInvalidTokenIn
error SYInvalidTokenIn(address token)
SYInvalidTokenOut
error SYInvalidTokenOut(address token)
SYZeroDeposit
error SYZeroDeposit()
SYZeroRedeem
error SYZeroRedeem()
creation bytecode
0x60e060409080825234620001bf5763313ce56760e01b815260209073dc035d45d973e3ec169d2276ddab16f1e407384f908281600481855afa908115620001df575f9162000174575b5060805260ff19609b5416609b5560a0526001549060ff8260a81c16620001215760ff808360a01c1603620000dd575b8273173e314c7635b45322cd8cb14f44b312e079f3af60c052516147759081620001ea8239608051816123d4015260a051818181611c710152612b9e015260c0518181816108f701528181610dbd01528181611d85015281816126c10152613bf70152f35b60ff60a01b1990911660ff60a01b17600155815160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989190a15f8062000078565b60849083519062461bcd60e51b82526004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152fd5b9050823d8411620001d7575b601f8101601f191682016001600160401b03811183821017620001c35784918391875281010312620001bf575160ff81168103620001bf575f62000048565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b503d62000180565b84513d5f823e3d90fdfe60806040818152600480361015610020575b505050361561001e575f80fd5b005b5f915f3560e01c93846306fdde0314612e5957508363071bc3c9146125c3578363078dfbe714612cd3578363095ea7b314612c86578363128fced114612bc957836314b3aa0f14612b5757836318160ddd14612afd57836320e8c565146125c8578363213cae63146125c357836323b872dd146123f8578363313ce5671461239c5783633ba0b9a91461235b5783633f4ba83a1461224d5783634e71e0c8146121435783635c975abb146121015783635cbadbe41461204a57836370a0823114611fdf578363769f8e5d14611c9557836376d5de8514611c26578363784367d6146102015783638456cb5914611b755783638da5cb5b14611b2457836395d89b4114611a09578363a40bee5014611928578363a9059cbb14611858578363a9f8d1811461181a578363b8f82b2614611784578363c4d66de814610a4d578363c4f59f9b146109fe578363c8ef95ae146109b1578363cbe52ae31461091b578363da19ddfb146108ac578363da88ecb4146107f3578363dd62ed3e1461077e578363e0bab4c414610731578363e30c3978146106de578363ea64a82014610651578363ef5cfb8c14610385578363f07da06b14610338578363f5678ad4146102e7578363f8b2f991146102065750505063fa5a4f0614610201575f8080610011565b613195565b346102e357827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e3576102df925081549161024c60028460f81c14156133ab565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80941617815561029b613b13565b7f01000000000000000000000000000000000000000000000000000000000000006102c4613b8c565b94905082541617905551918291602083526020830190613162565b0390f35b8280fd5b90503461033457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610334576020905173c20059e0317de91738d13af027dfc4a50781b0668152f35b5080fd5b90503461033457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103345760209051733225737a9bbb6473cb4a45b7244aca2befdb276a8152f35b829034610334576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e357916103c061311c565b908454936103d460028660f81c14156133ab565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809616178655610423613b13565b61042c83614317565b610434613fb6565b9061043f825161333b565b9473ffffffffffffffffffffffffffffffffffffffff93858516815b85518110156105c2578661046f8288613397565b51168352610100808652848420835f528652845f205490608091821c610495848d613397565b526104a0838c613397565b516104b0575b505060010161045b565b886104bb848a613397565b511685528652848420835f528652845f20906fffffffffffffffffffffffffffffffff918281541690556104ef838c613397565b51908282116105be5789610503858b613397565b511686526101028852828787209216908254901c03918211610592578a8a610584858c61057c828e61057760019b9a61058b9a906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b613397565b511693613397565b51916141fb565b908c6104a6565b60248560118f7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5f80fd5b88856102df868e7f01000000000000000000000000000000000000000000000000000000000000008f887f2193aa20a3717f5f4ac79482f4f553e5f0afe8f4e6ec3e3d1aa2e138adc4763f61062c610618613fb6565b61063988519283928a84528a840190612fc7565b8281038c8401528c613162565b0390a282541617905551928284938452830190613162565b9050346103345760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033457806102df9273ffffffffffffffffffffffffffffffffffffffff6106a461311c565b16815261010260209081529190205491516fffffffffffffffffffffffffffffffff8316815260809290921c908201529081906040820190565b90503461033457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103345760209073ffffffffffffffffffffffffffffffffffffffff600154169051908152f35b90503461033457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103345760209051736b175474e89094c44da98b954eedeac495271d0f8152f35b90503461033457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610334576020916107b961311c565b826107c261313f565b9273ffffffffffffffffffffffffffffffffffffffff8093168152600386522091165f528252805f20549051908152f35b82346108a957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108a95761082a613fb6565b90610835825161333b565b90805b8351811015610894578073ffffffffffffffffffffffffffffffffffffffff61086360019387613397565b511683526101026020526fffffffffffffffffffffffffffffffff868420541661088d8286613397565b5201610838565b8451602080825281906102df90820186613162565b80fd5b90503461033457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610334576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b91346108a957827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108a9575061095361311c565b9061095d82613410565b1561096d57602083516024358152f35b73ffffffffffffffffffffffffffffffffffffffff60249351927f88a505610000000000000000000000000000000000000000000000000000000084521690820152fd5b90503461033457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610334576020905173dc035d45d973e3ec169d2276ddab16f1e407384f8152f35b90503461033457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610334576102df90610a3a613fb6565b9051918291602083526020830190612fc7565b90346102e357602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261178057610a8761311c565b60019182549160ff8360a81c161592838094611771575b8015611758575b156116d65783740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8316178655611694575b508551610af881613245565b600f81527f5359205374616b696e6720555344530000000000000000000000000000000000868201528651610b2c81613245565b600f81527f53592d7374616b696e672d55534453000000000000000000000000000000000087820152610b6e60ff875460a81c16610b6981613a88565b613a88565b81519167ffffffffffffffff928381116116685780600592610b9084546131e0565b601f81116115f9575b508a908d601f84116001146115405792611535575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828a1b9260031b1c19161781555b815192831161150957908291610bf66006546131e0565b90601f821161149a575b50508790601f83116001146113e0578a926113d5575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82871b9260031b1c1916176006555b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff835416178255610c9f60ff855460a81c16613a88565b73ffffffffffffffffffffffffffffffffffffffff8091167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f5585517fdd62ed3e000000000000000000000000000000000000000000000000000000008082523084830152733225737a9bbb6473cb4a45b7244aca2befdb276a906024928284820152604494736b175474e89094c44da98b954eedeac495271d0f8a838881845afa9283156113cb575f9361139c575b506b7fffffffffffffffffffffff80931061127d575b508a51938385523088860152808686015273dc035d45d973e3ec169d2276ddab16f1e407384f948b818981895afa908115611273579084915f91611242575b501061106d575b508a5192835230878401527f00000000000000000000000000000000000000000000000000000000000000001691828582015289818781875afa908115611063575f91611036575b5010610e60575b5050505050610e0c578380f35b7f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498927fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff825416825551908152a18180808380f35b8851905f808a84017f095ea7b3000000000000000000000000000000000000000000000000000000009485825284888201528289820152888152610ea381613261565b519082875af1610eb1613fef565b81611006575b5015610fab57915f92918380938c51908c8201938452878201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88820152878152610f0281613261565b51925af1610f0e613fef565b81610f7b575b5015610f21578080610dff565b60649291600c7f5361666520417070726f7665000000000000000000000000000000000000000092888a51957f08c379a0000000000000000000000000000000000000000000000000000000008752860152840152820152fd5b80518015925088908315610f93575b50505089610f14565b610fa393508201810191016142ff565b898781610f8a565b506064857f5361666520417070726f7665000000000000000000000000000000000000000086600c878d8f51957f08c379a0000000000000000000000000000000000000000000000000000000008752860152840152820152fd5b8051801592508b90831561101e575b5050508c610eb7565b61102e93508201810191016142ff565b8c8a81611015565b90508981813d831161105c575b61104d818361327d565b810103126105be57518c610df8565b503d611043565b8b513d5f823e3d90fd5b8b51905f808d84017f095ea7b30000000000000000000000000000000000000000000000000000000094858252848b820152828c8201528b81526110b081613261565b5190828a5af16110be613fef565b81611212575b50156111b7575f918c83928f51918201928352898201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a82015289815261110c81613261565b519082885af161111a613fef565b81611187575b501561112c578c610db0565b6064877f5361666520417070726f7665000000000000000000000000000000000000000088600c8f8f8b9151957f08c379a0000000000000000000000000000000000000000000000000000000008752860152840152820152fd5b8051801592508c90831561119f575b5050508d611120565b6111af93508201810191016142ff565b8d8b81611196565b8c517f08c379a0000000000000000000000000000000000000000000000000000000008152808a018d9052600c818901527f5361666520417070726f76650000000000000000000000000000000000000000818a0152606490fd5b8051801592508e90831561122a575b5050508f6110c4565b61123a93508201810191016142ff565b8f8d81611221565b8092508d8092503d831161126c575b61125b818361327d565b810103126105be578390518f610da9565b503d611251565b8d513d5f823e3d90fd5b8b515f808d83017f095ea7b30000000000000000000000000000000000000000000000000000000093848252898b820152828c8201528b81526112bf81613261565b519082865af16112cd613fef565b8161136c575b50156111b7575f918291828f8f9051908101928352898b8201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c8201528b815261131e81613261565b51925af161132a613fef565b8161133c575b501561112c578c610d6a565b8051801592508c908315611354575b5050508d611330565b61136493508201810191016142ff565b8d8b8161134b565b8051801592508e908315611384575b5050508f6112d3565b61139493508201810191016142ff565b8f8d8161137b565b9092508a81813d83116113c4575b6113b4818361327d565b810103126105be5751918d610d54565b503d6113aa565b8c513d5f823e3d90fd5b015190508980610c16565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08894169160068c527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f928c5b8b828210611484575050841161144d575b505050811b01600655610c48565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c1916905589808061143f565b8385015186558b9790950194938401930161142e565b9091925060068b527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90601f8501811c8201928a86106114ff575b918991601f8796959401901c01915b8281106114f15750610c00565b8c81558594508991016114e4565b91925082916114d5565b60248a6041877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b015190508c80610bae565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c95168684528d7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db094905b8282106115e257505084116115ab575b505050811b018155610bdf565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690558c808061159e565b8385015186558e979095019493840193018e61158e565b909150838d527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0601f8401851c8101918c851061165e575b8e85949392601f8e9301881c0192905b83821061165057505050610b99565b81558594508c91018f611641565b9091508190611631565b60248b6041887f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff16750101000000000000000000000000000000000000000017845587610aec565b608483878951917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b50303b158015610aa557508460ff8260a01c1614610aa5565b508460ff8260a01c1610610a9e565b8380fd5b91346108a957827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108a957506117bc61311c565b906117c682613410565b156117d657602083516024358152f35b73ffffffffffffffffffffffffffffffffffffffff60249351927faeabe7180000000000000000000000000000000000000000000000000000000084521690820152fd5b90503461033457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033457602090610101549051908152f35b90346102e357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e357602092507f01000000000000000000000000000000000000000000000000000000000000006118b461311c565b61191b8354916118ca60028460f81c14156133ab565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809416178555602435903361360e565b8254161790555160018152f35b82903461033457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103345780517f313ce56700000000000000000000000000000000000000000000000000000000815260208173dc035d45d973e3ec169d2276ddab16f1e407384f9581875afa9081156119fd5783916119c0575b5060ff90606094835194855260208501521690820152f35b90506020813d6020116119f5575b816119db6020938361327d565b810103126102e3575160ff811681036102e35760606119a8565b3d91506119ce565b505051903d90823e3d90fd5b82346108a957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108a9578151908060065490611a49826131e0565b80855291602091600191828116908115611ad95750600114611a81575b6102df8688611a778289038361327d565b5191829182612f63565b9350600684527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b838510611ac657505050508101602001611a77826102df86611a66565b8054868601840152938201938101611aa9565b6102df98965087945060209350611a779592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b820101929486611a66565b90503461033457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103345773ffffffffffffffffffffffffffffffffffffffff60209254169051908152f35b90503461033457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103345760207f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25891611beb73ffffffffffffffffffffffffffffffffffffffff85541633146132be565b611bf3613b13565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00609b541617609b5551338152a180f35b90503461033457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610334576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102e35760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e357611ccc61311c565b91602435926044359073ffffffffffffffffffffffffffffffffffffffff90818316918284036105be576064359760843580151581036105be57611d68875496611d1c60028960f81c14156133ab565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809916178955613410565b15611fb0578815611f885715611f7957611d82883061389f565b817f000000000000000000000000000000000000000000000000000000000000000016803b156103345781809160248b8b5194859384927f2e1a7d4d0000000000000000000000000000000000000000000000000000000084528d8401525af18015611f4b57908291611f65575b5050736b175474e89094c44da98b954eedeac495271d0f8403611f5557733225737a9bbb6473cb4a45b7244aca2befdb276a803b156103345787517f68f3015000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516818901908152602081018b90529091839183919082908490829060400103925af18015611f4b57611f37575b50505b878710611f025760209750907f0100000000000000000000000000000000000000000000000000000000000000939291865191888352888a84015216907faee47cdf925cf525fdae94f9777ee5a06cac37e1c41220d0a8a89ed154f62d1c873392a482541617905551908152f35b60448589898951927fbfee4ca00000000000000000000000000000000000000000000000000000000084528301526024820152fd5b611f418291613231565b6108a95780611e91565b88513d84823e3d90fd5b50611f60878361404c565b611e94565b611f6e90613231565b6108a957808a611df0565b611f83883361389f565b611d82565b8688517fc3d83b07000000000000000000000000000000000000000000000000000000008152fd5b602487868a51917f88a50561000000000000000000000000000000000000000000000000000000008352820152fd5b9050346103345760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103345760209061204361201e61311c565b73ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f205490565b9051908152f35b90503461033457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610334576102df9161208661311c565b8261208f61313f565b9273ffffffffffffffffffffffffffffffffffffffff80931681526101006020522091165f52602052805f2054905191816fffffffffffffffffffffffffffffffff849360801c9116839060209093929360408301946fffffffffffffffffffffffffffffffff809216845216910152565b90503461033457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103345760209060ff609b541690519015158152f35b346102e357827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e3576001549073ffffffffffffffffffffffffffffffffffffffff92838316918233036121f05750508084549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a37fffffffffffffffffffffffff00000000000000000000000000000000000000008093161783551660015580f35b90602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b90346102e357827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e35761229e73ffffffffffffffffffffffffffffffffffffffff84541633146132be565b609b549060ff8216156122fe57507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060209216609b5551338152a180f35b60649060208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152fd5b90503461033457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103345760209051670de0b6b3a76400008152f35b90503461033457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610334576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b91346108a95760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126108a95761243061311c565b61243861313f565b604435918585549461245060028760f81c14156133ab565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80971617875573ffffffffffffffffffffffffffffffffffffffff83168152600360205220335f52602052855f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8103612519575b602087877f01000000000000000000000000000000000000000000000000000000000000008861191b89898961360e565b838110612566579260209695949261191b92612559837f010000000000000000000000000000000000000000000000000000000000000097033383613463565b92509294959650926124e8565b60648660208951917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b613010565b829060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105be576125fc61311c565b9161260561313f565b90604435936064359186549361262160028660f81c14156133ab565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80961617885561267181613410565b15612ab7578615612a8f5773ffffffffffffffffffffffffffffffffffffffff90811693846129fd578734036129a0575b736b175474e89094c44da98b954eedeac495271d0f851461290f575b817f000000000000000000000000000000000000000000000000000000000000000016803b1561178057838960248c838c5195869485937fa694fc3a0000000000000000000000000000000000000000000000000000000085528401525af18015612905579084916128f1575b50508088106128bc5750821691821561285f5761274f9061274a613b13565b614317565b8386116105be5786548487168582160185811161283357927f0100000000000000000000000000000000000000000000000000000000000000949281927fff000000000000000000000000000000000000000000000000000000000000008860209c999716911617875581815260028a528781206127ce8a82546135d4565b90557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a89518b8152a3855187815287898201527f5fe47ed6d4225326d3303476197d782ded5a4e9c14f479dc9ec4992af4e85d59873392a482541617905551908152f35b60248360118b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60648860208851917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b88604491898951927fbc71f2ba0000000000000000000000000000000000000000000000000000000084528301526024820152fd5b6128fa90613231565b6102e357828a61272b565b88513d86823e3d90fd5b733225737a9bbb6473cb4a45b7244aca2befdb276a803b156105be5787517ff2c07aae00000000000000000000000000000000000000000000000000000000815230818c01908152602081018b905290915f9183919082908490829060400103925af1801561299657612983575b506126be565b61298e919350613231565b5f918961297d565b88513d5f823e3d90fd5b60648960208951917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600c60248201527f657468206d69736d6174636800000000000000000000000000000000000000006044820152fd5b86517f23b872dd0000000000000000000000000000000000000000000000000000000060208201523360248201523060448201528860648201526064815260a0810181811067ffffffffffffffff821117612a63578852612a5e90866143db565b6126a2565b60418b7f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b8786517fa907f2f0000000000000000000000000000000000000000000000000000000008152fd5b6024908873ffffffffffffffffffffffffffffffffffffffff8851927faeabe7180000000000000000000000000000000000000000000000000000000084521690820152fd5b346105be575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105be577effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209254169051908152f35b346105be575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105be57805173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260016020820152f35b346105be576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105be57612c0161311c565b90612c0a613fb6565b91612c15835161333b565b9173ffffffffffffffffffffffffffffffffffffffff918216915f5b8551811015612c71578082612c4860019389613397565b51165f526101008452875f20855f528452875f205460801c612c6a8288613397565b5201612c31565b8651602080825281906102df90820188613162565b346105be57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105be57602090612ccc612cc261311c565b6024359033613463565b5160018152f35b346105be5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105be57612d0a61311c565b916024359182151583036105be576044359283151584036105be5773ffffffffffffffffffffffffffffffffffffffff948591612d4b835f541633146132be565b15612e26571692831590811591612e1e575b5015612dc1575050805f549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff0000000000000000000000000000000000000000809216175f55600154166001555f80f35b90602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b905085612d5d565b9350505050167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b346105be575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105be575f600554612e94816131e0565b80845290602090600190818116908115612f1b5750600114612ec2575b6102df8587611a778288038361327d565b60055f90815293507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b838510612f0857505050508101602001611a77826102df612eb1565b8054868601840152938201938101612eec565b6102df97955086935060209250611a779491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b8201019294612eb1565b6020808252825181830181905293925f5b858110612fb3575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f845f6040809697860101520116010190565b818101830151848201604001528201612f74565b9081518082526020808093019301915f5b828110612fe6575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101612fd8565b346105be575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105be576040516060810181811067ffffffffffffffff8211176130ef57604052600281526040366020830137736b175474e89094c44da98b954eedeac495271d0f6130858261338a565b528051600110156130c2578073dc035d45d973e3ec169d2276ddab16f1e407384f60406102df930152604051918291602083526020830190612fc7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6004359073ffffffffffffffffffffffffffffffffffffffff821682036105be57565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036105be57565b9081518082526020808093019301915f5b828110613181575050505090565b835185529381019392810192600101613173565b346105be5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105be5760206131d66131d161311c565b613410565b6040519015158152f35b90600182811c92168015613227575b60208310146131fa57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916131ef565b67ffffffffffffffff81116130ef57604052565b6040810190811067ffffffffffffffff8211176130ef57604052565b6080810190811067ffffffffffffffff8211176130ef57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176130ef57604052565b156132c557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff81116130ef5760051b60200190565b9061334582613323565b613352604051918261327d565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06133808294613323565b0190602036910137565b8051156130c25760200190565b80518210156130c25760209160051b010190565b156133b257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff16736b175474e89094c44da98b954eedeac495271d0f8114908115613448575090565b73dc035d45d973e3ec169d2276ddab16f1e407384f91501490565b73ffffffffffffffffffffffffffffffffffffffff80911691821561355157169182156134cd5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526003825260405f20855f5282528060405f2055604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b919082018092116135e157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b909173ffffffffffffffffffffffffffffffffffffffff9182811692831561381b57841693841561379757848414613739576136519161364c613b13565b614366565b815f52600260205260405f20548181106136b557817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600284520360405f2055845f5260405f206136aa8282546135d4565b9055604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a207472616e7366657220746f2073656c660000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff8116908115613a04576138c99061274a613b13565b805f52600260205260405f2054828110613980578290825f5260026020520360405f20557effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff918281116105be576004549280821681851603918183116135e1575f947fff000000000000000000000000000000000000000000000000000000000000006020937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9516911617600455604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b15613a8f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b60ff609b5416613b1f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152fd5b919082039182116135e157565b565b613b94613fb6565b90613b9f825161333b565b918051925f9315613fb05761010180544314613f49574390556004927effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600454169073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156105be575f80916004604051809481937f3d18b9120000000000000000000000000000000000000000000000000000000083525af18015613f3e57613f2b575b5093811590865b8551811015613f215773ffffffffffffffffffffffffffffffffffffffff613c898288613397565b5116908189526101026020526040892060405190613ca682613245565b54906fffffffffffffffffffffffffffffffff8216815260208260801c9101526fffffffffffffffffffffffffffffffff81169073ffffffffffffffffffffffffffffffffffffffff613cf9848b613397565b511680613e955750613d10475b8260801c90613b7d565b6fffffffffffffffffffffffffffffffff821615613e8c575b8615613e02575b6fffffffffffffffffffffffffffffffff83116105be57613d539160801c6135d4565b926fffffffffffffffffffffffffffffffff84116105be57600193613df1916fffffffffffffffffffffffffffffffff60405192613d9084613245565b81861684521660208301528c5261010260205260408c20815160209092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b613dfb8288613397565b5201613c61565b91670de0b6b3a7640000808402908482041484151715613e605787613e34579088613e2e9204906135d4565b91613d30565b6012877f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b6011877f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b60019250613d29565b6020602491604051928380927f70a08231000000000000000000000000000000000000000000000000000000008252308b8301525afa8015613f16578c90613ee2575b613d109150613d06565b506020813d602011613f0e575b81613efc6020938361327d565b810103126105be57613d109051613ed8565b3d9150613eef565b6040513d8e823e3d90fd5b5050505091909250565b613f36919650613231565b5f945f613c5a565b6040513d5f823e3d90fd5b509092505f5b8351811015613fac578073ffffffffffffffffffffffffffffffffffffffff613f7a60019387613397565b51165f526101026020526fffffffffffffffffffffffffffffffff60405f205416613fa58285613397565b5201613f4f565b5090565b92509190565b60405190613fc382613245565b600182526020368184013773c20059e0317de91738d13af027dfc4a50781b066613fec8361338a565b52565b3d15614047573d9067ffffffffffffffff82116130ef576040519161403c60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461327d565b82523d5f602084013e565b606090565b81156141f757614142905f80604051926140e5846140b9602098898301947fa9059cbb000000000000000000000000000000000000000000000000000000008652602484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810186528561327d565b604051936140f285613245565b8685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648786015251908273dc035d45d973e3ec169d2276ddab16f1e407384f5af161413c613fef565b90614636565b8051908282159283156141df575b5050501561415b5750565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6141ef93508201810191016142ff565b5f8281614150565b5050565b82156142fa5773ffffffffffffffffffffffffffffffffffffffff168061429357505f80809381935af161422d613fef565b501561423557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff929092166024830152604480830193909352918152613b8a916142f560648361327d565b6143db565b505050565b908160209103126105be575180151581036105be5790565b61431f613b8c565b908051156142fa5773ffffffffffffffffffffffffffffffffffffffff8316801515908161435b575b5061435257505050565b613b8a92614445565b90503014155f614348565b61436e613b8c565b918151156143d55773ffffffffffffffffffffffffffffffffffffffff90838383831680151590816143ca575b506143b9575b5050508316801515908161435b575061435257505050565b6143c292614445565b5f83836143a1565b90503014155f61439b565b50505050565b6040516141429173ffffffffffffffffffffffffffffffffffffffff1661440182613245565b5f806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af161443f613fef565b9161470f565b91909173ffffffffffffffffffffffffffffffffffffffff808216918215158061462c575b156145ff5761449b9095949573ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f205490565b905f958215965b81518110156145f557826144b68284613397565b5116906144c38188613397565b5191805f52610100926020848152604090815f208a5f5281526fffffffffffffffffffffffffffffffff958d87845f20541680156145ed575b85811480156145e5575b6145d5576145149086613b7d565b90818c02918c83041417156135e157670de0b6b3a764000061454c91875f528385528d865f20905f52855204845f205460801c6135d4565b948785116105be578786116105be57876145cf9660019986519761456f89613245565b16875216838601525f528152815f20908a5f52525f20815160209092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b016144a2565b50505050505050600191506145cf565b508515614506565b5060016144fc565b5050505050509050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b503083141561446a565b909190156146c557508051156146495790565b73dc035d45d973e3ec169d2276ddab16f1e407384f3b156146675790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8151156146d55750805190602001fd5b61470b906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260048301612f63565b0390fd5b9192901561472c5750815115614723575090565b3b156146675790565b8251909150156146d55750805190602001fdfea2646970667358221220570103593522215d664efb829ea25ba8e5604be42c5c9fb4b13aba693403e52664736f6c63430008180033