0 txs
0 calls
constructor
constructor(address _erc4626)
functions
accruedRewards
viewfunction accruedRewards(address) view returns (uint256[] rewardAmounts)
adapter
viewfunction adapter() view returns (address)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
asset
viewfunction asset() view returns (address)
assetInfo
viewfunction assetInfo() view returns (uint8 assetType, address assetAddress, uint8 assetDecimals)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
exchangeRate
viewfunction exchangeRate() view returns (uint256)
getRewardTokens
viewfunction getRewardTokens() view returns (address[] rewardTokens)
getTokensIn
viewfunction getTokensIn() view returns (address[] res)
getTokensOut
viewfunction getTokensOut() view returns (address[] res)
isValidTokenIn
viewfunction isValidTokenIn(address token) view returns (bool)
isValidTokenOut
viewfunction isValidTokenOut(address token) view returns (bool)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256)
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)
rewardIndexesStored
viewfunction rewardIndexesStored() view returns (uint256[] indexes)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
yieldToken
viewfunction yieldToken() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
claimOwnership
nonpayablefunction claimOwnership()
claimRewards
nonpayablefunction claimRewards(address) returns (uint256[] rewardAmounts)
deposit
payablefunction deposit(address receiver, address tokenIn, uint256 amountTokenToDeposit, uint256 minSharesOut) payable returns (uint256 amountSharesOut)
initialize
nonpayablefunction initialize(string _name, string _symbol, address _adapter)
pause
nonpayablefunction pause()
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
redeem
nonpayablefunction redeem(address receiver, uint256 amountSharesToRedeem, address tokenOut, uint256 minTokenOut, bool burnFromInternalBalance) returns (uint256 amountTokenOut)
rewardIndexesCurrent
nonpayablefunction rewardIndexesCurrent() returns (uint256[] indexes)
setAdapter
nonpayablefunction setAdapter(address _adapter)
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)
EIP712DomainChanged
event EIP712DomainChanged()
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)
SetAdapter
event SetAdapter(address indexed adapter)
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
0x60e060409080825234620002b257620000329062004df88038038091620000278285620002c8565b833981019062000300565b815163313ce56760e01b81526020916001600160a01b038116918381600481865afa908115620002be575f916200027c575b5060805261013460ff19815416905560a05260015460ff8160a81c1662000228576004918160ff80869460a01c1603620001e6575b5084516338d52e0f60e01b815292839182905afa918215620001dc575f92620001a8575b505060c05251614ad690816200032282396080518161146e015260a05181818161059d01528181610d3701528181610da801528181610e960152818161132401528181611785015281816117e10152818161180e01528181611af901528181611bb20152818161243e01528181612c08015281816134a401528181613573015281816135f0015281816136c001526141f3015260c05181818161086d015281816113db01528181611cbc01528181611d2a0152818161245f0152818161346a015281816135450152818161368f015281816136f001528181613b910152818161431f015261437d0152f35b620001cc9250803d10620001d4575b620001c38183620002c8565b81019062000300565b5f80620000bd565b503d620001b7565b83513d5f823e3d90fd5b60ff60a01b191660ff60a01b17600155845160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498908390a15f62000099565b835162461bcd60e51b815260048101849052602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b90508381813d8311620002b6575b620002968183620002c8565b81010312620002b2575160ff81168103620002b2575f62000064565b5f80fd5b503d6200028a565b85513d5f823e3d90fd5b601f909101601f19168101906001600160401b03821190821017620002ec57604052565b634e487b7160e01b5f52604160045260245ffd5b90816020910312620002b257516001600160a01b0381168103620002b2579056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c90816303eadcfc14612cfd5750806306fdde0314612c36578063071bc3c914612ba0578063077f224a1461209d578063078dfbe714611f1c578063095ea7b314611ecd578063128fced11461023457806318160ddd14611e7157806320e8c56514611699578063213cae631461165457806323b872dd14611492578063313ce567146114375780633644e515146113ff57806338d52e0f146113915780633ba0b9a9146112a55780633f4ba83a146111995780634e71e0c8146110935780635c975abb1461105257806370a0823114610fef578063769f8e5d14610dcc57806376d5de8514610d5e578063784367d614610ce15780637ecebe0014610c7e5780638456cb5914610bce57806384b0196e14610a985780638da5cb5b14610a4857806395d89b411461092e578063a40bee5014610828578063a9059cbb14610754578063ab1da79c146106f3578063b8f82b2614610650578063c4f59f9b14610600578063cbe52ae31461054b578063d505accf14610303578063da88ecb41461022f578063dd62ed3e1461028a578063e30c397814610239578063ef5cfb8c14610234578063f8b2f9911461022f5763fa5a4f06146101e0575f61000f565b3461022b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57602061022161021c612f31565b6135c8565b6040519015158152f35b5f80fd5b613008565b612faa565b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461022b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b576102c1612f31565b6102c9612f54565b9073ffffffffffffffffffffffffffffffffffffffff8091165f52600360205260405f2091165f52602052602060405f2054604051908152f35b3461022b5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5761033a612f31565b610342612f54565b6044359060843560643560ff8216820361022b578042116104ed5773ffffffffffffffffffffffffffffffffffffffff9081861692835f52609f60205260405f20908154916001830190556040519260208401927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98452866040860152858816606086015288608086015260a085015260c084015260c0835260e083019183831067ffffffffffffffff8411176104c0576104539361044b93604052519020610409614540565b90604051917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220614621565b9190916146a9565b16036104625761001a92613bf6565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152fd5b3461022b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57610582612f31565b73ffffffffffffffffffffffffffffffffffffffff809116907f00000000000000000000000000000000000000000000000000000000000000001681036105cf5760206040516024358152f35b602490604051907f88a505610000000000000000000000000000000000000000000000000000000082526004820152fd5b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5761064c60405161063d81612e15565b5f815260405191829182612da8565b0390f35b3461022b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57610687612f31565b610690816135c8565b156106ac576106a4602091602435906141db565b604051908152f35b60249073ffffffffffffffffffffffffffffffffffffffff604051917faeabe718000000000000000000000000000000000000000000000000000000008352166004820152fd5b3461022b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5761001a61072d612f31565b61074f73ffffffffffffffffffffffffffffffffffffffff5f54163314613214565b613a76565b3461022b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b577f01000000000000000000000000000000000000000000000000000000000000006107ac612f31565b610815600454916107c360028460f81c1415613291565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809416176004556024359033613d74565b6004541617600455602060405160018152f35b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166040517f313ce567000000000000000000000000000000000000000000000000000000008152602081600481855afa908115610923575f916108e4575b60608360ff84604051925f84526020840152166040820152f35b90506020813d60201161091b575b816108ff60209383612e4d565b8101031261022b57519060ff8216820361022b579060ff6108ca565b3d91506108f2565b6040513d5f823e3d90fd5b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b576040516006545f8261096d83613045565b91828252602093600190856001821691825f14610a0a5750506001146109af575b5061099b92500383612e4d565b61064c604051928284938452830190612d4c565b84915060065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f905f915b8583106109f257505061099b93508201018561098e565b805483890185015287945086939092019181016109db565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168582015261099b95151560051b850101925087915061098e9050565b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57606b541580610bc4575b15610b6657610b38610ae0613096565b61064c610aeb613178565b610b4660405191610afb83612e15565b5f83526040519586957f0f00000000000000000000000000000000000000000000000000000000000000875260e0602088015260e0870190612d4c565b908582036040870152612d4c565b904660608501523060808501525f60a085015283820360c0850152612f77565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b50606c5415610ad0565b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57610c1e73ffffffffffffffffffffffffffffffffffffffff5f54163314613214565b610c266145b6565b61013460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b3461022b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5773ffffffffffffffffffffffffffffffffffffffff610cca612f31565b165f52609f602052602060405f2054604051908152f35b3461022b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b576020610d1a612f31565b73ffffffffffffffffffffffffffffffffffffffff9060405191807f0000000000000000000000000000000000000000000000000000000000000000169116148152f35b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461022b5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57610e03612f31565b602435610e0e612f0e565b6064359260843591821515830361022b5760045494610e3360028760f81c1415613291565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9586167f02000000000000000000000000000000000000000000000000000000000000001760045573ffffffffffffffffffffffffffffffffffffffff918216937f00000000000000000000000000000000000000000000000000000000000000008381168603610fbe578615610f9457848791610ee0935f14610f8a57610edb8330613ff8565b61443c565b808510610f53575091602094917f01000000000000000000000000000000000000000000000000000000000000009360405191868352868884015216907faee47cdf925cf525fdae94f9777ee5a06cac37e1c41220d0a8a89ed154f62d1c60403392a46004541617600455604051908152f35b84604491604051917fbfee4ca000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b610edb8333613ff8565b60046040517fc3d83b07000000000000000000000000000000000000000000000000000000008152fd5b602486604051907f88a505610000000000000000000000000000000000000000000000000000000082526004820152fd5b3461022b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5773ffffffffffffffffffffffffffffffffffffffff61103b612f31565b165f526002602052602060405f2054604051908152f35b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57602060ff61013454166040519015158152f35b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5760015473ffffffffffffffffffffffffffffffffffffffff9081811680330361113b57805f549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff0000000000000000000000000000000000000000928316175f5516600155005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b576111e973ffffffffffffffffffffffffffffffffffffffff5f54163314613214565b610134805460ff811615611247577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152fd5b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b576040517f07a2d13a000000000000000000000000000000000000000000000000000000008152670de0b6b3a7640000600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015610923575f9061135e575b602090604051908152f35b506020813d602011611389575b8161137860209383612e4d565b8101031261022b5760209051611353565b3d915061136b565b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5760206106a4614540565b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461022b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b576114c9612f31565b6114d1612f54565b604435600454916114e860028460f81c1415613291565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094161760045573ffffffffffffffffffffffffffffffffffffffff84165f52600360205260405f20335f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81036115b2575b5090610815917f010000000000000000000000000000000000000000000000000000000000000094613d74565b91908183106115f6577f0100000000000000000000000000000000000000000000000000000000000000946115ed8361081595033383613bf6565b94509091611585565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5761064c61168d613399565b60405191829182612da8565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b576116cb612f31565b6116d3612f54565b600454906116e760028360f81c1415613291565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80931617600455611738816135c8565b156106ac5760443515611e475773ffffffffffffffffffffffffffffffffffffffff8116611dc6576044353403611d68575b6044358173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416141580611d12575b611c1b575b73ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000169116145f14611b6257915b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611ab05747915b600454948286169361185c8686613d67565b11611a52576064358510611a195773ffffffffffffffffffffffffffffffffffffffff169283156119bb5761188f6145b6565b82851161022b57828516019282841161198e576020957fff00000000000000000000000000000000000000000000000000000000000000847f01000000000000000000000000000000000000000000000000000000000000009616911617600455805f526002865260405f20611906868254613d67565b9055805f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef88604051898152a373ffffffffffffffffffffffffffffffffffffffff604051926044358452868885015216917f5fe47ed6d4225326d3303476197d782ded5a4e9c14f479dc9ec4992af4e85d5960403392a46004541617600455604051908152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b604485604051907fbc71f2ba00000000000000000000000000000000000000000000000000000000825260048201526064356024820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f53593a20696e73756666696369656e74207368617265730000000000000000006044820152fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610923575f91611b30575b509161184a565b90506020813d602011611b5a575b81611b4b60209383612e4d565b8101031261022b575185611b29565b3d9150611b3e565b604051907f6e553f6500000000000000000000000000000000000000000000000000000000825260048201523060248201526020816044815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610923575f91611be9575b509161180c565b90506020813d602011611c13575b81611c0460209383612e4d565b8101031261022b575184611be2565b3d9150611bf7565b505073ffffffffffffffffffffffffffffffffffffffff610199611c45604435838354168561443c565b5416602060405180927fb8f86171000000000000000000000000000000000000000000000000000000008252815f81611ca760443589600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03925af1908115610923575f91611ce0575b507f00000000000000000000000000000000000000000000000000000000000000006117c9565b90506020813d602011611d0a575b81611cfb60209383612e4d565b8101031261022b575184611cb9565b3d9150611cee565b5073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841614156117c4565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f657468206d69736d6174636800000000000000000000000000000000000000006044820152fd5b6040517f23b872dd00000000000000000000000000000000000000000000000000000000602082015233602482015230604482015260443560648201526064815260a081019080821067ffffffffffffffff8311176104c057611e429160405273ffffffffffffffffffffffffffffffffffffffff8316614840565b61176a565b60046040517fa907f2f0000000000000000000000000000000000000000000000000000000008152fd5b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5760207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60045416604051908152f35b3461022b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57611f11611f07612f31565b6024359033613bf6565b602060405160018152f35b3461022b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57611f53612f31565b602435801515810361022b5760443590811515820361022b5773ffffffffffffffffffffffffffffffffffffffff928391611f92835f54163314613214565b1561206c571690811590811591612064575b501561200657805f549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff0000000000000000000000000000000000000000809216175f55600154166001555f80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b905083611fa4565b915050167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b3461022b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5760043567ffffffffffffffff811161022b576120ec903690600401612ec8565b60243567ffffffffffffffff811161022b5761210c903690600401612ec8565b90612115612f0e565b6001549060ff8260a81c161591828093612b90575b8015612b76575b15612af25782740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff831617600155612aaf575b5061219d60ff60015460a81c1661218f81613737565b61219881613737565b613737565b825167ffffffffffffffff81116104c0576121b9600554613045565b601f8111612a0e575b50806020601f8211600114612931575f91612926575b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176005555b835167ffffffffffffffff81116104c057612226600654613045565b601f8111612885575b506020601f82116001146127a65781929394955f9261279b575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176006555b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60045416176004556040516122d181612df9565b600181527f3100000000000000000000000000000000000000000000000000000000000000602082015261231060ff60015460a81c1661219881613737565b835167ffffffffffffffff81116104c05761232c606d54613045565b601f81116126fa575b506020601f821160011461261b5781929394955f92612610575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617606d555b80519067ffffffffffffffff82116104c05761239f606e54613045565b601f81116125ad575b50602090601f83116001146124e9576124839392915f91836124de575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617606e555b5f606b555f606c5561241160ff60015460a81c16613737565b337fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f5561074f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006137c2565b61248957005b7fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff600154166001557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b0151905085806123c5565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831691606e5f527f9930d9ff0dee0ef5ca2f7710ea66b8f84dd0f5f5351ecffe72b952cd9db7142a925f5b81811061259557509160019391856124839796941061255e575b505050811b01606e556123f8565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055858080612550565b92936020600181928786015181550195019301612536565b606e5f527f9930d9ff0dee0ef5ca2f7710ea66b8f84dd0f5f5351ecffe72b952cd9db7142a601f840160051c81019160208510612606575b601f0160051c01905b8181106125fb57506123a8565b5f81556001016125ee565b90915081906125e5565b01519050858061234f565b606d5f527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d8905f5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0841681106126e25750600193949596837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08116106126ab575b505050811b01606d55612382565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c1916905585808061269d565b9091602060018192858b015181550193019101612643565b606d5f52601f820160051c7f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d8019060208310612773575b601f0160051c7f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d801905b8181106127685750612335565b5f815560010161275b565b7f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d89150612731565b015190508580612249565b60065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f905f5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08416811061286d5750600193949596837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0811610612836575b505050811b0160065561227c565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055858080612828565b9091602060018192858b0151815501930191016127ce565b60065f52601f820160051c7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0190602083106128fe575b601f0160051c7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01905b8181106128f3575061222f565b5f81556001016128e6565b7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f91506128bc565b9050840151866121d8565b915060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05f925b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831684106129f65760019350827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08116106129bf575b5050811b0160055561220a565b8601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c1916905586806129b2565b8681015182556020938401936001909201910161295b565b60055f52601f820160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0019060208310612a87575b601f0160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001905b818110612a7c57506121c2565b5f8155600101612a6f565b7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09150612a45565b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001760015584612179565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b50303b1580156121315750600160ff8260a01c1614612131565b50600160ff8260a01c161061212a565b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5761064c604051612bdd81612df9565b6001815260203681830137612bf181613716565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016905260405191829182612da8565b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b576040516005545f82612c7583613045565b91828252602093600190856001821691825f14610a0a575050600114612ca2575061099b92500383612e4d565b84915060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0905f915b858310612ce557505061099b93508201018561098e565b80548389018501528794508693909201918101612cce565b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5760209073ffffffffffffffffffffffffffffffffffffffff61019954168152f35b91908251928382525f5b848110612d945750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f845f6020809697860101520116010190565b602081830181015184830182015201612d56565b60209060206040818301928281528551809452019301915f5b828110612dcf575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101612dc1565b6040810190811067ffffffffffffffff8211176104c057604052565b6020810190811067ffffffffffffffff8211176104c057604052565b6080810190811067ffffffffffffffff8211176104c057604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176104c057604052565b67ffffffffffffffff81116104c057601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561022b57803590612edf82612e8e565b92612eed6040519485612e4d565b8284526020838301011161022b57815f926020809301838601378301015290565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361022b57565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361022b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361022b57565b9081518082526020808093019301915f5b828110612f96575050505090565b835185529381019392810192600101612f88565b3461022b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b57612fe1612f31565b5061064c604051612ff181612e15565b5f8152604051918291602083526020830190612f77565b3461022b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022b5761064c604051612ff181612e15565b90600182811c9216801561308c575b602083101461305f57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691613054565b604051905f82606d54916130a983613045565b8083529260209060019081811690811561313557506001146130d6575b50506130d492500383612e4d565b565b915092606d5f527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d8935f925b82841061311d57506130d49450505081016020015f806130c6565b85548885018301529485019487945092810192613102565b9050602093506130d49592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f806130c6565b604051905f82606e549161318b83613045565b8083529260209060019081811690811561313557506001146131b55750506130d492500383612e4d565b915092606e5f527f9930d9ff0dee0ef5ca2f7710ea66b8f84dd0f5f5351ecffe72b952cd9db7142a935f925b8284106131fc57506130d49450505081016020015f806130c6565b855488850183015294850194879450928101926131e1565b1561321b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff81116104c05760051b60200190565b1561329857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b519073ffffffffffffffffffffffffffffffffffffffff8216820361022b57565b602090818184031261022b5780519067ffffffffffffffff821161022b57019180601f8401121561022b57825161334d81613279565b9361335b6040519586612e4d565b818552838086019260051b82010192831161022b578301905b828210613382575050505090565b83809161338e846132f6565b815201910190613374565b73ffffffffffffffffffffffffffffffffffffffff806101995416801561350e57905f600492604051938480927f56e2816e0000000000000000000000000000000000000000000000000000000082525afa918215610923575f926134ea575b508151600281019283821161198e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061344b61343586613279565b956134436040519788612e4d565b808752613279565b013660208601375f5b8281106134c95750506134678184613723565b827f00000000000000000000000000000000000000000000000000000000000000001690526001810180911161198e576134a19083613723565b907f000000000000000000000000000000000000000000000000000000000000000016905290565b80846134d760019385613723565b51166134e38288613723565b5201613454565b6135079192503d805f833e6134ff8183612e4d565b810190613317565b905f6133f9565b50604051906060820182811067ffffffffffffffff8211176104c05760405260028252604036602084013761354282613716565b817f000000000000000000000000000000000000000000000000000000000000000016905281516001101561359b577f000000000000000000000000000000000000000000000000000000000000000016604082015290565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff908161019954168281156136b9578216837f000000000000000000000000000000000000000000000000000000000000000016811493841561368d575b5050821561362757505090565b600492505f90604051938480927f56e2816e0000000000000000000000000000000000000000000000000000000082525afa801561092357613670925f91613673575b506143a5565b90565b61368791503d805f833e6134ff8183612e4d565b5f61366a565b7f0000000000000000000000000000000000000000000000000000000000000000161492505f8061361a565b91905016817f00000000000000000000000000000000000000000000000000000000000000001681149182156136ee57505090565b7f00000000000000000000000000000000000000000000000000000000000000001614919050565b80511561359b5760200190565b805182101561359b5760209160051b010190565b1561373e57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b9073ffffffffffffffffffffffffffffffffffffffff91828116908115613a70576040918251809581957fdd62ed3e0000000000000000000000000000000000000000000000000000000083523060048401521691826024830152602096879160449788915afa8015613a66575f90613a2d575b6b7fffffffffffffffffffffff915010613852575b5050505050565b8251905f808784017f095ea7b30000000000000000000000000000000000000000000000000000000094858252846024820152828982015288815261389681612e31565b519082875af16138a46143f5565b816139fd575b50156139a157915f929183809386519089820193845260248201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff888201528781526138f681612e31565b51925af16139026143f5565b81613971575b501561391557808061384b565b606492917f5361666520417070726f766500000000000000000000000000000000000000009151927f08c379a00000000000000000000000000000000000000000000000000000000084526004840152600c6024840152820152fd5b80518015925085908315613989575b5050505f613908565b6139999350820181019101614424565b5f8481613980565b6064867f5361666520417070726f76650000000000000000000000000000000000000000878751927f08c379a00000000000000000000000000000000000000000000000000000000084526004840152600c6024840152820152fd5b80518015925088908315613a15575b5050505f6138aa565b613a259350820181019101614424565b5f8781613a0c565b508581813d8311613a5f575b613a438183612e4d565b8101031261022b576b7fffffffffffffffffffffff9051613836565b503d613a39565b84513d5f823e3d90fd5b50505050565b73ffffffffffffffffffffffffffffffffffffffff809116908115908115613b4e575b5015613af057610199817fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f491784ddb6af903db22df115fa8320b4b0b4fdca5e088f87ef5c178a31283e715f80a2565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f5f736574416461707465723a20696e76616c69642061646170746572000000006044820152fd5b6040517fdfbe7c820000000000000000000000000000000000000000000000000000000081529150602082600481865afa918215610923575f92613bba575b50807f0000000000000000000000000000000000000000000000000000000000000000169116145f613a99565b9091506020813d602011613bee575b81613bd660209383612e4d565b8101031261022b57613be7906132f6565b905f613b8d565b3d9150613bc9565b73ffffffffffffffffffffffffffffffffffffffff809116918215613ce45716918215613c605760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526003825260405f20855f5282528060405f2055604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b9190820180921161198e57565b73ffffffffffffffffffffffffffffffffffffffff809116918215613f745716918215613ef057828214613e9257613daa6145b6565b815f52600260205260405f2054818110613e0e57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600284520360405f2055845f5260405f20613e03828254613d67565b9055604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a207472616e7366657220746f2073656c660000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff1680156141575761401c6145b6565b805f52600260205260405f20548281106140d3578290825f5260026020520360405f20557effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9182811161022b5760045492808216818516039181831161198e575f947fff000000000000000000000000000000000000000000000000000000000000006020937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9516911617600455604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000000000000000000000000000000000000000000001691818116838114159081614378575b506142aa575b168103614233575090565b906020906024604051809481937fef8b30f700000000000000000000000000000000000000000000000000000000835260048301525afa908115610923575f9161427b575090565b90506020813d6020116142a2575b8161429660209383612e4d565b8101031261022b575190565b3d9150614289565b610199546040517f5c727c7d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092166004830152602482019490945290926020908290604490829087165afa80156109235782915f91614343575b509290507f0000000000000000000000000000000000000000000000000000000000000000614228565b9150506020813d602011614370575b8161435f60209383612e4d565b8101031261022b578190515f614319565b3d9150614352565b9050827f00000000000000000000000000000000000000000000000000000000000000001614155f614222565b908151915f5b8381106143ba57505050505f90565b73ffffffffffffffffffffffffffffffffffffffff806143da8385613723565b5116908416146143ec576001016143ab565b50505050600190565b3d1561441f573d9061440682612e8e565b916144146040519384612e4d565b82523d5f602084013e565b606090565b9081602091031261022b5751801515810361022b5790565b821561453b5773ffffffffffffffffffffffffffffffffffffffff16806144d457505f80809381935af161446e6143f5565b501561447657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9290921660248301526044808301939093529181526130d491614536606483612e4d565b614840565b505050565b61454861495f565b6145506149aa565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff8211176104c05760405251902090565b60ff61013454166145c357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152fd5b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161469e576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa15610923575f5173ffffffffffffffffffffffffffffffffffffffff81161561469657905f90565b505f90600190565b505050505f90600390565b600581101561481357806146ba5750565b600181036147205760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036147865760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60031461478f57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6040516148aa9173ffffffffffffffffffffffffffffffffffffffff1661486682612df9565b5f806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16148a46143f5565b916149d0565b805190828215928315614947575b505050156148c35750565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6149579350820181019101614424565b5f82816148b8565b614967613096565b8051908115614977576020012090565b5050606b5480156149855790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b6149b2613178565b80519081156149c2576020012090565b5050606c5480156149855790565b91929015614a4b57508151156149e4575090565b3b156149ed5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015614a5e5750805190602001fd5b614a9c906040519182917f08c379a0000000000000000000000000000000000000000000000000000000008352602060048401526024830190612d4c565b0390fdfea2646970667358221220f7ff6c794e596559be1145d622d09715e0c92a6b9617b46a4b6c93d268757c8f64736f6c63430008180033000000000000000000000000bfb53910c935e837c74e6c4ef584557352d20fde