0 txs
2.6k calls
constructor
constructor(address _erc4626, address _distributor)
functions
accruedRewards
viewfunction accruedRewards(address user) view returns (uint256[] rewardAmounts)
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)
aToken
viewfunction aToken() view returns (address)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
distributor
viewfunction distributor() view returns (address)
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)
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)
rewardIndexesStored
viewfunction rewardIndexesStored() view returns (uint256[] indexes)
rewardState
viewfunction rewardState(address) view returns (uint128 index, uint128 lastBalance)
rootAsset
viewfunction rootAsset() view returns (address)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
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(string _name, string _symbol, 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
0x610140604081815234620002a357808262004f3d803803809162000024828562000433565b833981010312620002a3576200003a826200046b565b906200004a60208094016200046b565b815163313ce56760e01b815290926001600160a01b039182821691908681600481865afa90811562000429575f91620003eb575b5060805260ff19609b5416609b5560a05260015460ff8160a81c16620003975760ff808260a01c160362000355575b5061012093845282519085826004816338d52e0f60e01b948582525afa9182156200034b5791869184935f9262000305575b506004908260e052865194859384928352165afa908115620002fb579085915f91620002b9575b5060c05260e0518351635060f8af60e11b81529283916004918391165afa938415620002af575f946200026b575b50506101009283525190614abc92836200048184396080518361195a015260a051838181610882015281816110b90152818161112a01528181611201015281816117bf01528181611c420152818161264f01528181612a8b0152818161306e015281816135be01528181613e2b01526144b1015260c051838181610b6301528181610d200152818161141c01528181611bb3015281816125ff015281816130080152614455015260e051838181611807015281816118ff01528181611be1015281816125da015281816130460152818161366701526144830152518281816103bc0152818161078e0152818161091801528181610a2201528181610e2801528181611c0f01528181612109015281816126290152818161309a015281816135f80152613d7b0152518181816109990152613efe0152f35b9080929450813d8311620002a7575b62000286818362000433565b81010312620002a3576200029a906200046b565b915f8062000134565b5f80fd5b503d6200027a565b82513d5f823e3d90fd5b82819392503d8311620002f3575b620002d3818362000433565b81010312620002a357600491620002eb86926200046b565b909262000106565b503d620002c7565b83513d5f823e3d90fd5b92839194508092503d831162000343575b62000322818362000433565b81010312620002a357829160046200033b88936200046b565b9190620000df565b503d62000316565b84513d5f823e3d90fd5b60ff60a01b191660ff60a01b17600155825160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498908690a15f620000ad565b835162461bcd60e51b815260048101879052602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b90508681813d831162000421575b62000405818362000433565b81010312620002a3575160ff81168103620002a3575f6200007e565b503d620003f9565b85513d5f823e3d90fd5b601f909101601f19168101906001600160401b038211908210176200045757604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b0382168203620002a35756fe6080604090808252600480361015610021575b505050361561001f575f80fd5b005b5f3560e01c91826306fdde0314612aaf57508163071bc3c914612a53578163077f224a1461237e578163078dfbe7146121f7578163095ea7b3146121a9578163128fced1146120ca57816318160ddd1461206f57816320e8c56514611ca5578163213cae6314611b4b57816323b872dd1461197e578163313ce5671461192357816338d52e0f146118b55781633ba0b9a91461173a5781633f4ba83a1461162d5781634e71e0c8146115235781635c975abb146114e25781635cbadbe4146114405781636953567d146113d257816370a0823114611368578163769f8e5d1461114e57816376d5de85146110e0578163784367d6146110635781638456cb5914610fb45781638da5cb5b14610f6357816395d89b4114610e4c578163a0c1f15e14610dde578163a40bee5014610cd9578163a9059cbb14610c0a578163a9f8d18114610bcd578163b8f82b26146109bd578163bfe109281461094f578163c4f59f9b146108e0578163cbe52ae31461082f578163da88ecb41461075a578163dd62ed3e146106e5578163e30c397814610693578163ea64a82014610605578163ef5cfb8c14610314578163f8b2f99114610236575063fa5a4f06146101e7578080610012565b346102325760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023257602090610229610224612d84565b612fed565b90519015158152f35b5f80fd5b905034610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576103109181549161027d60028460f81c1415612f88565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094161781556102cc613d00565b7f01000000000000000000000000000000000000000000000000000000000000006102f5613d79565b94905082541617905551918291602083526020830190612dca565b0390f35b823461023257602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102325761034e612d84565b9083549061036260028360f81c1415612f88565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8093161785556103b1613d00565b6103ba836145f0565b7f0000000000000000000000000000000000000000000000000000000000000000936103e5856130c4565b916103f08351612ecb565b965f73ffffffffffffffffffffffffffffffffffffffff95868816915b865181101561057457876104218289612f74565b51165f528a610100808852865f20855f528852865f205490608091821c6104488585612f74565b526104538484612f74565b51610464575b50505060010161040d565b8a61046f858c612f74565b51165f528852865f20855f5288526104a283885f20936fffffffffffffffffffffffffffffffff94858154169055612f74565b5190828211610232578a6104b6858c612f74565b51165f52610102895282885f209216908254901c03918211610548578c8b610537858d61052f828f61052a60019b9a61053e9a906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b612f74565b511693612f74565b5191614503565b90508a8c80610459565b6011867f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b50917f0100000000000000000000000000000000000000000000000000000000000000610310938b9695937f2193aa20a3717f5f4ac79482f4f553e5f0afe8f4e6ec3e3d1aa2e138adc4763f6105e06105cc8e6130c4565b6105ed88519283928a84528a840190612bd6565b8281038c8401528c612dca565b0390a282541617905551928284938452830190612dca565b82346102325760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576103109073ffffffffffffffffffffffffffffffffffffffff610656612d84565b165f9081526101026020908152908290205491516fffffffffffffffffffffffffffffffff8316815260809290921c908201529081906040820190565b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102325760209073ffffffffffffffffffffffffffffffffffffffff600154169051908152f35b823461023257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102325760209061071f612d84565b610727612da7565b9073ffffffffffffffffffffffffffffffffffffffff8091165f5260038452825f2091165f528252805f20549051908152f35b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576107b27f00000000000000000000000000000000000000000000000000000000000000006130c4565b6107bc8151612ecb565b5f5b825181101561081a578073ffffffffffffffffffffffffffffffffffffffff6107e960019386612f74565b51165f526101026020526fffffffffffffffffffffffffffffffff855f2054166108138285612f74565b52016107be565b83516020808252819061031090820185612dca565b90503461023257817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023257610867612d84565b73ffffffffffffffffffffffffffffffffffffffff809116907f00000000000000000000000000000000000000000000000000000000000000001681036108b357602083516024358152f35b60249251917f88a50561000000000000000000000000000000000000000000000000000000008352820152fd5b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576103109061093c7f00000000000000000000000000000000000000000000000000000000000000006130c4565b9051918291602083526020830190612bd6565b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b823461023257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576109f4612d84565b90602490610a0183612fed565b15610b8957829373ffffffffffffffffffffffffffffffffffffffff9384807f000000000000000000000000000000000000000000000000000000000000000016911614610b61575b610a5261440a565b93602435955f5b60018101808211610b36578751811015610b2c57839081610a7a848b612f74565b511682851614610a95575b5050610a90906144d6565b610a59565b610aa29192935088612f74565b5116968451907fef8b30f7000000000000000000000000000000000000000000000000000000008252848201526020808288818c5afa908115610b22575f91610af2575b50979190508289610a85565b905081813d8311610b1b575b610b088183612ca0565b8101031261023257610a90905189610ae6565b503d610afe565b86513d5f823e3d90fd5b6020898751908152f35b866011867f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b7f00000000000000000000000000000000000000000000000000000000000000009450610a4a565b517faeabe71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831681850152602490fd5b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023257602090610101549051908152f35b823461023257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576020917f0100000000000000000000000000000000000000000000000000000000000000610c65612d84565b610ccc835491610c7b60028460f81c1415612f88565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094161785556024359033613886565b8254161790555160018152f35b905034610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102325773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906020835180927f313ce56700000000000000000000000000000000000000000000000000000000825281855afa908115610dd4575f91610d95575b509160ff6060938251935f855260208501521690820152f35b90506020813d602011610dcc575b81610db060209383612ca0565b8101031261023257519160ff83168303610232579160ff610d7c565b3d9150610da3565b83513d5f823e3d90fd5b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102325780515f600654610e8a81612dfd565b80845290602090600190818116908115610f1b5750600114610ec2575b6103108587610eb882880383612ca0565b5191829182612b72565b60065f90815293507ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b838510610f0857505050508101602001610eb882610310610ea7565b8054868601840152938201938101610eec565b61031097955086935060209250610eb89491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b8201019294610ea7565b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102325760209073ffffffffffffffffffffffffffffffffffffffff5f54169051908152f35b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102325760207f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589161102973ffffffffffffffffffffffffffffffffffffffff5f54163314612e4e565b611031613d00565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00609b541617609b5551338152a1005b82346102325760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102325760209061109e612d84565b73ffffffffffffffffffffffffffffffffffffffff915191807f0000000000000000000000000000000000000000000000000000000000000000169116148152f35b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9050346102325760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023257611187612d84565b9160243591611194612d61565b60643594608435908115158203610232578354926111b860028560f81c1415612f88565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8095161785557f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8092169382821685036113395788156113115783611264928a925f146113075761125f8330613b17565b614503565b8787106112d25760209750907f0100000000000000000000000000000000000000000000000000000000000000939291865191888352888a84015216907faee47cdf925cf525fdae94f9777ee5a06cac37e1c41220d0a8a89ed154f62d1c873392a482541617905551908152f35b60448589898951927fbfee4ca00000000000000000000000000000000000000000000000000000000084528301526024820152fd5b61125f8333613b17565b8688517fc3d83b07000000000000000000000000000000000000000000000000000000008152fd5b602487868a51917f88a50561000000000000000000000000000000000000000000000000000000008352820152fd5b82346102325760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576020906113cb6113a6612d84565b73ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f205490565b9051908152f35b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b823461023257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576103109061147b612d84565b611483612da7565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815261010060209081528482209290931681529082528290205491516fffffffffffffffffffffffffffffffff8316815260809290921c908201529081906040820190565b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102325760209060ff609b541690519015158152f35b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576001549073ffffffffffffffffffffffffffffffffffffffff92838316918233036115d0575050805f549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff0000000000000000000000000000000000000000928316175f5516600155005b90602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b905034610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102325761167f73ffffffffffffffffffffffffffffffffffffffff5f54163314612e4e565b609b549060ff8216156116dd577f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516609b5551338152a1005b60649060208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152fd5b905034610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102325773ffffffffffffffffffffffffffffffffffffffff918051917f07a2d13a00000000000000000000000000000000000000000000000000000000808452670de0b6b3a7640000828501526020948585602481847f0000000000000000000000000000000000000000000000000000000000000000165afa9485156118ab5790869392915f96611877575b50906024918551968794859384528301527f0000000000000000000000000000000000000000000000000000000000000000165afa91821561186d575f9261183e575b5051908152f35b9091508281813d8311611866575b6118568183612ca0565b810103126102325751905f611837565b503d61184c565b50513d5f823e3d90fd5b848193959297503d83116118a4575b6118908183612ca0565b8101031261023257519385929060246117f4565b503d611886565b84513d5f823e3d90fd5b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9050346102325760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576119b7612d84565b6119bf612da7565b604435908354926119d660028560f81c1415612f88565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80951617855573ffffffffffffffffffffffffffffffffffffffff81165f526003602052855f20335f52602052855f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8103611aa1575b602087877f010000000000000000000000000000000000000000000000000000000000000088610ccc898989613886565b838110611aee5792602096959492610ccc92611ae1837f010000000000000000000000000000000000000000000000000000000000000097033383613436565b9250929495965092611a70565b60648660208951917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023257805190611b8682612c68565b8282526080366020840137611b9a82612f1a565b73ffffffffffffffffffffffffffffffffffffffff90817f0000000000000000000000000000000000000000000000000000000000000000169052611bde83612f54565b817f0000000000000000000000000000000000000000000000000000000000000000169052611c0c83612f64565b817f0000000000000000000000000000000000000000000000000000000000000000169052825160031015611c795761031093507f000000000000000000000000000000000000000000000000000000000000000016608083015251918291602083526020830190612bd6565b6032847f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b8260807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023257611cd8612d84565b90611ce1612da7565b6044359060643593855492611cfc60028560f81c1415612f88565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809516178755611d4c83612fed565b1561202a5780156120025773ffffffffffffffffffffffffffffffffffffffff838116938285611fa9573403611f4c5782611d86916135a7565b96808810611f1757508216918215611eba57611da990611da4613d00565b6145f0565b83861161023257865484871685821601858111611e8e57918593917fff0000000000000000000000000000000000000000000000000000000000000060209a977f01000000000000000000000000000000000000000000000000000000000000009795169116178655815f5260028952865f20611e27898254613879565b9055815f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8b8a518c8152a3865190815287898201527f5fe47ed6d4225326d3303476197d782ded5a4e9c14f479dc9ec4992af4e85d59873392a482541617905551908152f35b6011897f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b60648860208851917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b88604491898951927fbc71f2ba0000000000000000000000000000000000000000000000000000000084528301526024820152fd5b60648960208951917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600c60248201527f657468206d69736d6174636800000000000000000000000000000000000000006044820152fd5b611d8691611ffd89517f23b872dd00000000000000000000000000000000000000000000000000000000602082015233602482015230604482015283606482015260648152611ff781612c68565b886146ae565b6135a7565b8685517fa907f2f0000000000000000000000000000000000000000000000000000000008152fd5b84517faeabe71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841681890152602490fd5b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232577effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209254169051908152f35b8234610232576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023257612103612d84565b9061212d7f00000000000000000000000000000000000000000000000000000000000000006130c4565b916121388351612ecb565b9173ffffffffffffffffffffffffffffffffffffffff918216915f5b855181101561219457808261216b60019389612f74565b51165f526101008452875f20855f528452875f205460801c61218d8288612f74565b5201612154565b86516020808252819061031090820188612dca565b823461023257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576020906121f06121e6612d84565b6024359033613436565b5160018152f35b82346102325760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102325761222f612d84565b91602435918215158303610232576044359283151584036102325773ffffffffffffffffffffffffffffffffffffffff948591612270835f54163314612e4e565b1561234b571692831590811591612343575b50156122e6575050805f549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff0000000000000000000000000000000000000000809216175f55600154166001555f80f35b90602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b905085612282565b9350505050167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b82346102325760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102325767ffffffffffffffff918035838111610232576123ce9036908301612d1b565b92602435818111610232576123e69036908401612d1b565b916123ef612d61565b9160019586549460ff8660a81c161595868097612a44575b8015612a2b575b156129a85786740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8316178a55612966575b5061246f60ff895460a81c1661246a81613101565b613101565b815183811161280c57600590806124868354612dfd565b94601f958681116128fb575b50602090868311600114612843575f92612838575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828c1b9260031b1c19161781555b815193841161280c576124ec600654612dfd565b908382116127ab575b505060209183116001146126d75773ffffffffffffffffffffffffffffffffffffffff949392915f91836126cc575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82891b9260031b1c1916176006555b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8254161790556125ad60ff865460a81c16613101565b167fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f556126747f0000000000000000000000000000000000000000000000000000000000000000612623817f000000000000000000000000000000000000000000000000000000000000000061318c565b61264d817f000000000000000000000000000000000000000000000000000000000000000061318c565b7f00000000000000000000000000000000000000000000000000000000000000009061318c565b61267a57005b816020917fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff7f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498945416825551908152a1005b015190508880612524565b93929187917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082169060065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915f5b8181106127935750968373ffffffffffffffffffffffffffffffffffffffff981061275c575b505050811b01600655612556565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c1916905588808061274e565b8289015184558b959093019260209283019201612728565b60065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9084808701821c83019360208810612803575b01901c019089905b8281106127f857506124f5565b5f81550189906127eb565b935082936127e3565b6041857f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b015190508b806124a7565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08d941691855f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0925f5b8181106128e3575084116128ac575b505050811b0181556124d8565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690558b808061289f565b8284015185558f969094019360209384019301612890565b909150835f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db086808501861c8201926020861061295d575b918e918695949301871c01915b82811061294f575050612492565b5f81558594508e9101612941565b92508192612934565b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff16750101000000000000000000000000000000000000000017885588612455565b60848560208a51917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b50303b15801561240e57508860ff8260a01c161461240e565b508860ff8260a01c1610612407565b8234610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232576103109061093c7f00000000000000000000000000000000000000000000000000000000000000006130c4565b839034610232575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610232575f600554612aec81612dfd565b80845290602090600190818116908115610f1b5750600114612b19576103108587610eb882880383612ca0565b60055f90815293507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b838510612b5f57505050508101602001610eb882610310610ea7565b8054868601840152938201938101612b43565b6020808252825181830181905293925f5b858110612bc2575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f845f6040809697860101520116010190565b818101830151848201604001528201612b83565b9081518082526020808093019301915f5b828110612bf5575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101612be7565b6040810190811067ffffffffffffffff821117612c3b57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff821117612c3b57604052565b6080810190811067ffffffffffffffff821117612c3b57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612c3b57604052565b67ffffffffffffffff8111612c3b57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561023257803590612d3282612ce1565b92612d406040519485612ca0565b8284526020838301011161023257815f926020809301838601378301015290565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361023257565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361023257565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361023257565b9081518082526020808093019301915f5b828110612de9575050505090565b835185529381019392810192600101612ddb565b90600182811c92168015612e44575b6020831014612e1757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691612e0c565b15612e5557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff8111612c3b5760051b60200190565b90612ed582612eb3565b612ee26040519182612ca0565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612f108294612eb3565b0190602036910137565b805115612f275760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805160011015612f275760400190565b805160021015612f275760600190565b8051821015612f275760209160051b010190565b15612f8f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff809116817f0000000000000000000000000000000000000000000000000000000000000000168114918215613098575b821561306c575b821561304457505090565b7f00000000000000000000000000000000000000000000000000000000000000001614919050565b7f0000000000000000000000000000000000000000000000000000000000000000811682149250613039565b7f0000000000000000000000000000000000000000000000000000000000000000811682149250613032565b90604051916130d283612c1f565b600183526020368185013773ffffffffffffffffffffffffffffffffffffffff6130fb84612f1a565b91169052565b1561310857565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b9073ffffffffffffffffffffffffffffffffffffffff91828116908115613430576040918251809581957fdd62ed3e0000000000000000000000000000000000000000000000000000000083523060048401521691826024830152602096879160449788915afa80156118ab575f906133f7575b6b7fffffffffffffffffffffff91501061321c575b5050505050565b8251905f808784017f095ea7b30000000000000000000000000000000000000000000000000000000094858252846024820152828982015288815261326081612c84565b519082875af161326e6143c3565b816133c7575b501561336b57915f929183809386519089820193845260248201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff888201528781526132c081612c84565b51925af16132cc6143c3565b8161333b575b50156132df578080613215565b606492917f5361666520417070726f766500000000000000000000000000000000000000009151927f08c379a00000000000000000000000000000000000000000000000000000000084526004840152600c6024840152820152fd5b80518015925085908315613353575b5050505f6132d2565b61336393508201810191016143f2565b5f848161334a565b6064867f5361666520417070726f76650000000000000000000000000000000000000000878751927f08c379a00000000000000000000000000000000000000000000000000000000084526004840152600c6024840152820152fd5b805180159250889083156133df575b5050505f613274565b6133ef93508201810191016143f2565b5f87816133d6565b508581813d8311613429575b61340d8183612ca0565b81010312610232576b7fffffffffffffffffffffff9051613200565b503d613403565b50505050565b73ffffffffffffffffffffffffffffffffffffffff80911691821561352457169182156134a05760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526003825260405f20855f5282528060405f2055604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081168282168082036135f0575050505090565b8293959491927f000000000000000000000000000000000000000000000000000000000000000016145f14613752576040517fe25ec3490000000000000000000000000000000000000000000000000000000081526004810191909152306024820152929350602092918390839060449082905f907f0000000000000000000000000000000000000000000000000000000000000000165af180156137165783925f91613721575b506040517f6e553f6500000000000000000000000000000000000000000000000000000000815260048101919091523060248201529190829060449082905f905af1918215613716575f926136ec57505090565b90809250813d831161370f575b6137038183612ca0565b81010312610232575190565b503d6136f9565b6040513d5f823e3d90fd5b83819492503d831161374b575b6137388183612ca0565b810103126102325790518291905f613698565b503d61372e565b92905061375d61440a565b9293925f5b6001810180821161384c57825181101561384357846137818385612f74565b51168587161461379b575b50613796906144d6565b613762565b849195506137a99083612f74565b51604080517f6e553f65000000000000000000000000000000000000000000000000000000008152600481019890985230602489015291169590602080836044815f8c5af191821561383a57505f9161380a575b509594905061379661378c565b905081813d8311613833575b6138208183612ca0565b810103126102325761379690515f6137fd565b503d613816565b513d5f823e3d90fd5b50919350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9190820180921161384c57565b909173ffffffffffffffffffffffffffffffffffffffff91828116928315613a93578416938415613a0f578484146139b1576138c9916138c4613d00565b61463f565b815f52600260205260405f205481811061392d57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600284520360405f2055845f5260405f20613922828254613879565b9055604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a207472616e7366657220746f2073656c660000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff8116908115613c7c57613b4190611da4613d00565b805f52600260205260405f2054828110613bf8578290825f5260026020520360405f20557effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff918281116102325760045492808216818516039181831161384c575f947fff000000000000000000000000000000000000000000000000000000000000006020937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9516911617600455604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b60ff609b5416613d0c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152fd5b9190820391821161384c57565b565b7f000000000000000000000000000000000000000000000000000000000000000090613da4826130c4565b613dae8151612ecb565b928151156143be5761010180544314614358574390557effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600454169060405190613df682612c1f565b600182525f5b60208110614347575090613e12613e8a926130c4565b613e1b82612f1a565b52613e2581612f1a565b50613e4f7f00000000000000000000000000000000000000000000000000000000000000006130c4565b906040519283927f54375c45000000000000000000000000000000000000000000000000000000008452606060048501526064840190612bd6565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc838203016024840152815180825260208201916020808360051b8301019401925f915b8383106142b757505050505090805f9230604483015203818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015613716576141bf575b505f5b82518110156141b95773ffffffffffffffffffffffffffffffffffffffff613f568285612f74565b511690815f5261010260205260405f2060405190613f7382612c1f565b54906fffffffffffffffffffffffffffffffff8216815260208260801c9101526fffffffffffffffffffffffffffffffff81169073ffffffffffffffffffffffffffffffffffffffff613fc68488612f74565b5116806141375750613fdd475b8260801c90613d6a565b6fffffffffffffffffffffffffffffffff82161561412e575b856140ce575b6fffffffffffffffffffffffffffffffff83116102325761401f9160801c613879565b926fffffffffffffffffffffffffffffffff8411610232576001936140bd916fffffffffffffffffffffffffffffffff6040519261405c84612c1f565b81861684521660208301525f5261010260205260405f20815160209092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b6140c78288612f74565b5201613f2e565b91670de0b6b3a76400009081840291848304148415171561384c57861561410157866140fb920490613879565b91613ffc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b60019250613ff6565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa8015613716575f90614185575b613fdd9150613fd3565b506020813d6020116141b1575b8161419f60209383612ca0565b8101031261023257613fdd905161417b565b3d9150614192565b50509190565b3d805f833e6141ce8183612ca0565b810160208282031261023257815167ffffffffffffffff92838211610232570181601f820112156102325780519260208061420886612eb3565b6142156040519182612ca0565b868152019460051b830101918383116102325760208101945b83861061423f575050505050613f2b565b855183811161023257820185603f820112156102325760208101519061426482612eb3565b916142726040519384612ca0565b8083526040602084019160051b8301019188831161023257604001905b8282106142a75750505081526020958601950161422e565b815181526020918201910161428f565b9193955091937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828203018352855190602080835192838152019201905f905b8082106143195750505060208060019297019301930190928695949293613ece565b90919260208060019273ffffffffffffffffffffffffffffffffffffffff87511681520194019201906142f7565b806060602080938601015201613dfc565b5050915f5b83518110156143ba578073ffffffffffffffffffffffffffffffffffffffff61438860019387612f74565b51165f526101026020526fffffffffffffffffffffffffffffffff60405f2054166143b38285612f74565b520161435d565b5090565b509190565b3d156143ed573d906143d482612ce1565b916143e26040519384612ca0565b82523d5f602084013e565b606090565b90816020910312610232575180151581036102325790565b6040516080810181811067ffffffffffffffff821117612c3b5760405260038152606036602083013761443c81612f1a565b73ffffffffffffffffffffffffffffffffffffffff90817f000000000000000000000000000000000000000000000000000000000000000016905261448082612f54565b817f00000000000000000000000000000000000000000000000000000000000000001690526144ae82612f64565b907f000000000000000000000000000000000000000000000000000000000000000016905290565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461384c5760010190565b82156145eb5773ffffffffffffffffffffffffffffffffffffffff908116908161459f5750505f80809381935af16145396143c3565b501561454157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b92613d7793604051937fa9059cbb0000000000000000000000000000000000000000000000000000000060208601521660248401526044830152604482526145e682612c84565b6146ae565b505050565b6145f8613d79565b908051156145eb5773ffffffffffffffffffffffffffffffffffffffff83168015159081614634575b5061462b57505050565b613d77926147cd565b90503014155f614621565b614647613d79565b918151156134305773ffffffffffffffffffffffffffffffffffffffff90838383831680151590816146a3575b50614692575b50505083168015159081614634575061462b57505050565b61469b926147cd565b5f838361467a565b90503014155f614674565b6040516147189173ffffffffffffffffffffffffffffffffffffffff166146d482612c1f565b5f806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16147126143c3565b916149be565b8051908282159283156147b5575b505050156147315750565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6147c593508201810191016143f2565b5f8281614726565b91909173ffffffffffffffffffffffffffffffffffffffff80821691821515806149b4575b15614987576148239095949573ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f205490565b905f958215965b815181101561497d578261483e8284612f74565b51169061484b8188612f74565b5191805f52610100926020848152604090815f208a5f5281526fffffffffffffffffffffffffffffffff958d87845f2054168015614975575b858114801561496d575b61495d5761489c9086613d6a565b90818c02918c830414171561384c57670de0b6b3a76400006148d491875f528385528d865f20905f52855204845f205460801c613879565b94878511610232578786116102325787614957966001998651976148f789612c1f565b16875216838601525f528152815f20908a5f52525f20815160209092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b0161482a565b5050505050505060019150614957565b50851561488e565b506001614884565b5050505050509050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b50308314156147f2565b91929015614a3957508151156149d2575090565b3b156149db5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015614a4c5750805190602001fd5b614a82906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260048301612b72565b0390fdfea2646970667358221220678c46bcbeb814cd8ab1d319c9dbb3af87631096b76e5d4589311536421f975964736f6c63430008180033000000000000000000000000a484ab92fe32b143aee7019fc1502b1daa522d310000000000000000000000004655ce3d625a63d30ba704087e52b4c31e38188b