32 txs
3.4k calls
constructor
constructor(string _name, string _symbol, address _vault)
functions
accruedRewards
viewfunction accruedRewards(address) 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)
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)
erc4626
viewfunction erc4626() view returns (address)
erc4626Asset
viewfunction erc4626Asset() view returns (address)
exchangeRate
viewfunction exchangeRate() view returns (uint256)
getAbsoluteSupplyCap
viewfunction getAbsoluteSupplyCap() view returns (uint256)
getAbsoluteTotalSupply
viewfunction getAbsoluteTotalSupply() 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)
vault
viewfunction vault() view returns (address)
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)
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)
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)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
errors
InvalidShortString
error InvalidShortString()
StringTooLong
error StringTooLong(string str)
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
0x6102208060405234620005035762004b74803803809162000021828562000929565b8339810190606081830312620005035780516001600160401b039290838111620005035781620000539184016200098c565b906020830151908482116200050357620000766040916200007e9386016200098c565b9301620009d9565b60405163313ce56760e01b8152909290916020836004816001600160a01b0388165afa92831562000510575f93620008c8575b50604051926040840184811087821117620006e057604052600184526020840192603160f81b8452825190878211620006e0576003805492600184811c94168015620008bd575b6020851014620007e557601f9384811162000876575b5080602085821160011462000810575f9162000804575b508160011b915f1990841b1c19161781555b815192898411620006e05760045492600184811c94168015620007f9575b6020851014620007e55783828695116200078c575b50602091841160011462000700575f93620006f4575b50508260011b925f19911b1c1916176004555b608052600280546001600160f81b0316600160f81b179055620001b68162000c64565b61014052620001c58362000dff565b61016052602081519101209182610100525190209283610120524660c0526040519360208501927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604086015260608501524660808501523060a085015260a084528360c08101109060c085011117620006e05760c083016040528251902060a0523060e05260ff19603a5416603a5560095460ff8160a81c161592838094620006cf575b8015620006b3575b1562000653575060ff60a01b198116600160a01b17600955826200063a575b50610180918183526009549060ff8260a81c1615620005e157600880546001600160a01b03191633179055620005a3575b506040516338d52e0f60e01b8082526020826004816001600160a01b0387165afa91821562000510575f926200055f575b506101a082815292600492620003169082906001600160a01b0316620009ee565b6101c0818152604051838152939091602091859182906001600160a01b03165afa92831562000510575f936200051b575b5060206101e092848452600460405180968193825260018060a01b03165afa92831562000510575f93620004c8575b506102008381528251909362000399916001600160a01b039081169116620009ee565b60405193613c26958662000f4e8739608051866117f2015260a05186612dcf015260c05186612e9b015260e05186612da001526101005186612e1e01526101205186612e4401526101405186610d3601526101605186610d630152518581816105f001528181610f1d015281816110410152818161229d015281816130e60152818161351801526136190152518461175d0152518381816102460152818161065c0152818161161d015281816125220152818161294401526132180152518281816106d4015281816108c80152818161166501528181611cf301528181611f4c015281816124ed0152818161296c015261328a0152518181816106920152818161088101528181610ac70152818161131901528181611acd015281816124be0152818161290d01526130be0152f35b9092506020813d60201162000507575b81620004e76020938362000929565b810103126200050357620004fb90620009d9565b915f62000376565b5f80fd5b3d9150620004d8565b6040513d5f823e3d90fd5b9092506020813d60201162000556575b816200053a6020938362000929565b8101031262000503576200054e90620009d9565b915f62000347565b3d91506200052b565b91506020823d6020116200059a575b816200057d6020938362000929565b81010312620005035762000593600492620009d9565b91620002f5565b3d91506200056e565b60ff60a81b1916600955604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a15f620002c4565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b61ffff60a01b191661010160a01b176009555f62000293565b60c060849162461bcd60e51b82820152602060c4820152602e60e48201527f496e697469616c697a61626c653a20636f6e747261637420697320616c7265616101048201526d191e481a5b9a5d1a585b1a5e995960921b61012482015201fd5b50303b158015620002745750600160ff8360a01c161462000274565b50600160ff8360a01c16106200026c565b634e487b7160e01b5f52604160045260245ffd5b015191505f8062000180565b60045f9081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9450601f198616905b8181106200077357509085600196959493921062000759575b50505050811b0160045562000193565b01519060f8845f19921b161c191690555f80808062000749565b9294602060018192888601518155019601930162000730565b909192935060045f5260205f208380870160051c82019260208810620007db575b9487969594939291940160051c01905b818110620007cc57506200016a565b5f8155869550600101620007bd565b92508192620007ad565b634e487b7160e01b5f52602260045260245ffd5b93607f169362000155565b90508601515f62000125565b5f848152602081209250601f198416905b8181106200085d5750908360019493921062000845575b5050811b01815562000137565b8801515f1983861b60f8161c191690555f8062000838565b9192602060018192868d01518155019401920162000821565b825f5260205f208580840160051c82019260208510620008b3575b0160051c01905b818110620008a757506200010e565b5f815560010162000898565b9250819262000891565b93607f1693620000f8565b9092506020813d60201162000904575b81620008e76020938362000929565b8101031262000503575160ff811681036200050357915f620000b1565b3d9150620008d8565b608081019081106001600160401b03821117620006e057604052565b601f909101601f19168101906001600160401b03821190821017620006e057604052565b6001600160401b038111620006e057601f01601f191660200190565b5f5b8381106200097b5750505f910152565b81810151838201526020016200096b565b81601f8201121562000503578051620009a5816200094d565b92620009b5604051948562000929565b818452602082840101116200050357620009d6916020808501910162000969565b90565b51906001600160a01b03821682036200050357565b6001600160a01b03919082811690811562000c5e57604091825180958195636eb1769f60e11b83523060048401521691826024830152602096879160449788915afa90811562000c54575f9162000c21575b5060016001605f1b031162000a57575b5050505050565b8251905f8087840163095ea7b360e01b94858252846024820152828982015288815262000a84816200090d565b519082875af13d1562000c19573d62000a9d816200094d565b9062000aac8751928362000929565b81523d5f8983013e5b8162000bdb575b501562000ba957915f9291838093865190898201938452602482015281198882015287815262000aec816200090d565b51925af13d1562000ba1573d62000b03816200094d565b9062000b128451928362000929565b81523d5f8683013e5b8162000b63575b501562000b3157808062000a50565b5162461bcd60e51b81526004810192909252600c60248301526b5361666520417070726f766560a01b90820152606490fd5b8091505184811591821562000b7e575b505090505f62000b22565b838092935001031262000503578301518015158103620005035780845f62000b73565b606062000b1b565b835162461bcd60e51b815260048101879052600c60248201526b5361666520417070726f766560a01b81870152606490fd5b8091505187811591821562000bf6575b505090505f62000abc565b838092935001031262000503578601518015158103620005035780875f62000beb565b606062000ab5565b90508581813d831162000c4c575b62000c3b818362000929565b810103126200050357515f62000a40565b503d62000c2f565b84513d5f823e3d90fd5b50505050565b8051602091908281101562000ce3575090601f82511162000ca1578082519201519080831062000c9357501790565b825f19910360031b1b161790565b60449062000cd59260405193849263305a27a960e01b84528060048501528251928391826024870152868601910162000969565b601f01601f19168101030190fd5b6001600160401b038111620006e0576005928354926001938481811c9116801562000df4575b83821014620007e557601f811162000dc0575b5081601f841160011462000d5a57509282939183925f9462000d4e575b50501b915f199060031b1c191617905560ff90565b015192505f8062000d39565b919083601f198116875f52845f20945f905b8883831062000da5575050501062000d8c575b505050811b01905560ff90565b01515f1960f88460031b161c191690555f808062000d7f565b85870151885590960195948501948793509081019062000d6c565b855f5284601f845f209201871c820191601f8601881c015b82811062000de857505062000d1c565b5f815501859062000dd8565b90607f169062000d09565b80516020908181101562000e2c5750601f82511162000ca1578082519201519080831062000c9357501790565b906001600160401b038211620006e057600654926001938481811c9116801562000f42575b83821014620007e557601f811162000f0b575b5081601f841160011462000ea357509282939183925f9462000e97575b50501b915f199060031b1c19161760065560ff90565b015192505f8062000e81565b919083601f19811660065f52845f20945f905b8883831062000ef0575050501062000ed7575b505050811b0160065560ff90565b01515f1960f88460031b161c191690555f808062000ec9565b85870151885590960195948501948793509081019062000eb6565b60065f5284601f845f20920160051c820191601f860160051c015b82811062000f3657505062000e64565b5f815501859062000f26565b90607f169062000e5156fe6080604090808252600480361015610021575b505050361561001f575f80fd5b005b5f3560e01c9182630186533d146122565750816306fdde0314612148578163071bc3c9146119e5578163078dfbe714611fbe578163095ea7b314611f70578163128fced11461027857816313511b5c14611f0257816318160ddd14611ea557816320e8c565146119ea578163213cae63146119e557816323b872dd14611816578163313ce567146117bb5781633644e5151461178157816338d52e0f146117135781633ba0b9a9146115985781633f4ba83a1461148a5781634e71e0c81461137e5781635c975abb1461133d5781635d94ced4146112cf57816370a082311461126e578163769f8e5d1461106557816376d5de8514610ff7578163784367d61461026e5781637ecebe0014610f9557816380975cc414610ead5781638456cb5914610dfd57816384b0196e14610cfb5781638da5cb5b14610ca957816395d89b4114610b85578163a40bee5014610a80578163a9059cbb146109ad578163b8f82b2614610819578163c4f59f9b146107ca578163cbe52ae314610588578163d505accf1461034457508063da88ecb414610273578063dd62ed3e146102cf578063e30c39781461027d578063ef5cfb8c14610278578063f8b2f99114610273578063fa5a4f061461026e5763fbfa77cf146101fd578080610012565b3461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5f80fd5b612657565b6126a2565b6125f9565b503461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a5760209073ffffffffffffffffffffffffffffffffffffffff600954169051908152f35b503461026a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a57602090610309612580565b6103116125a3565b9073ffffffffffffffffffffffffffffffffffffffff8091165f5260018452825f2091165f528252805f20549051908152f35b90503461026a5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a5761037d612580565b6103856125a3565b906044359260643560843560ff8116810361026a5781421161052b5773ffffffffffffffffffffffffffffffffffffffff9081851692835f526007602052885f209081549160018301905589519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98452868c840152858a1660608401528a608084015260a083015260c082015260c0815260e0810181811067ffffffffffffffff8211176104ff578a525190206104919161048991610448612d89565b908b51917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a435922061368e565b919091613716565b16036104a2575061001f9350612996565b60649060208651917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b6041877f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b60648360208951917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152fd5b823461026a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a576105bf612580565b90602435926105cd836128f2565b1561078557839273ffffffffffffffffffffffffffffffffffffffff80911691817f0000000000000000000000000000000000000000000000000000000000000000168303610621575b6020858551908152f35b909193508251947f4cdad5060000000000000000000000000000000000000000000000000000000090818752828701526020928387602481847f0000000000000000000000000000000000000000000000000000000000000000165afa96871561077b575f9761074c575b508695817f000000000000000000000000000000000000000000000000000000000000000016146106be575b50610617565b84955090602491849551978894859384528301527f0000000000000000000000000000000000000000000000000000000000000000165afa908115610742575f91610713575b506020925090838080806106b8565b905082813d831161073b575b610729818361275c565b8101031261026a576020915183610704565b503d61071f565b82513d5f823e3d90fd5b9096508381813d8311610774575b610764818361275c565b8101031261026a5751958761068c565b503d61075a565b85513d5f823e3d90fd5b73ffffffffffffffffffffffffffffffffffffffff6024939251927f88a505610000000000000000000000000000000000000000000000000000000084521690820152fd5b823461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a57805161081591610808826126db565b5f82525191829182612405565b0390f35b823461026a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a57610850612580565b916024359061085e846128f2565b156109675790929073ffffffffffffffffffffffffffffffffffffffff848184167f00000000000000000000000000000000000000000000000000000000000000008316146108bc575b6020856108b58887613602565b9051908152f35b909250602091945060247f000000000000000000000000000000000000000000000000000000000000000095855194859384927fef8b30f700000000000000000000000000000000000000000000000000000000845283015287165afa908115610742575f91610934575b5091826108b560206108a8565b90506020813d60201161095f575b8161094f6020938361275c565b8101031261026a57516020610927565b3d9150610942565b8360249173ffffffffffffffffffffffffffffffffffffffff8551927faeabe7180000000000000000000000000000000000000000000000000000000084521690820152fd5b823461026a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a576020907f0100000000000000000000000000000000000000000000000000000000000000610a08612580565b610a7160025491610a1f60028460f81c141561288d565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809416176002556024359033612b07565b60025416176002555160018152f35b90503461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906020835180927f313ce56700000000000000000000000000000000000000000000000000000000825281855afa908115610b7b575f91610b3c575b509160ff6060938251935f855260208501521690820152f35b90506020813d602011610b73575b81610b576020938361275c565b8101031261026a57519160ff8316830361026a579160ff610b23565b3d9150610b4a565b83513d5f823e3d90fd5b90503461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a57815191825f8354610bc5816127d7565b90818452602095600191876001821691825f14610c64575050600114610c08575b5050506108159291610bf991038561275c565b519282849384528301906123a9565b5f90815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610c4c5750505082010181610bf9610815610be6565b8054848a018601528895508794909301928101610c33565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b86019093019350849250610bf991506108159050610be6565b823461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a5760209073ffffffffffffffffffffffffffffffffffffffff600854169051908152f35b823461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a57610dd090610815610d5a7f000000000000000000000000000000000000000000000000000000000000000061330f565b91610ddd610d877f0000000000000000000000000000000000000000000000000000000000000000613444565b91805192610d94846126db565b5f845281519687967f0f00000000000000000000000000000000000000000000000000000000000000885260e0602089015260e08801906123a9565b91868303908701526123a9565b904660608501523060808501525f60a085015283820360c08501526125c6565b823461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a5760207f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25891610e7373ffffffffffffffffffffffffffffffffffffffff600854163314612828565b610e7b613598565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00603a541617603a5551338152a1005b823461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a576020815180937f18160ddd0000000000000000000000000000000000000000000000000000000082528173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610f8c575f91610f57575b6020925051908152f35b90506020823d602011610f84575b81610f726020938361275c565b8101031261026a576020915190610f4d565b3d9150610f65565b513d5f823e3d90fd5b823461026a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a5760209073ffffffffffffffffffffffffffffffffffffffff610fe5612580565b165f5260078252805f20549051908152f35b823461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b90503461026a5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a5761109e612580565b602435906044359173ffffffffffffffffffffffffffffffffffffffff8084169283850361026a576064359560843595861515870361026a57600254966110eb60028960f81c141561288d565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8099161760025561113c826128f2565b1561123f57851561121757611162918691156112085761115c8230612ec1565b846130a2565b968088106111d3576020888a7f01000000000000000000000000000000000000000000000000000000000000008a8a8a8a8a8651928352878984015216907faee47cdf925cf525fdae94f9777ee5a06cac37e1c41220d0a8a89ed154f62d1c863392a4600254161760025551908152f35b60449250878951927fbfee4ca00000000000000000000000000000000000000000000000000000000084528301526024820152fd5b6112128233612ec1565b61115c565b828a517fc3d83b07000000000000000000000000000000000000000000000000000000008152fd5b602483888c51917f88a50561000000000000000000000000000000000000000000000000000000008352820152fd5b823461026a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a5760209073ffffffffffffffffffffffffffffffffffffffff6112be612580565b165f525f8252805f20549051908152f35b823461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b823461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a5760209060ff603a541690519015158152f35b823461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a576009549073ffffffffffffffffffffffffffffffffffffffff928383169182330361142d575050806008549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff00000000000000000000000000000000000000009283161760085516600955005b90602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b90503461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a576114dd73ffffffffffffffffffffffffffffffffffffffff600854163314612828565b603a549060ff82161561153b577f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516603a5551338152a1005b60649060208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152fd5b90503461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a5773ffffffffffffffffffffffffffffffffffffffff918051917f07a2d13a00000000000000000000000000000000000000000000000000000000808452670de0b6b3a7640000828501526020948585602481847f0000000000000000000000000000000000000000000000000000000000000000165afa9485156117095790869392915f966116d5575b50906024918551968794859384528301527f0000000000000000000000000000000000000000000000000000000000000000165afa9182156116cb575f9261169c575b5051908152f35b9091508281813d83116116c4575b6116b4818361275c565b8101031261026a5751905f611695565b503d6116aa565b50513d5f823e3d90fd5b848193959297503d8311611702575b6116ee818361275c565b8101031261026a5751938592906024611652565b503d6116e4565b84513d5f823e3d90fd5b823461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b823461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a576020906108b5612d89565b823461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b90503461026a5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a5761184f612580565b6118576125a3565b604435916002549361186f60028660f81c141561288d565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8096161760025573ffffffffffffffffffffffffffffffffffffffff82165f526001602052855f20335f52602052855f2054907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361193b575b6020877f010000000000000000000000000000000000000000000000000000000000000088610a71898989612b07565b8482106119885750926020959492610a719261197b837f010000000000000000000000000000000000000000000000000000000000000097033383612996565b925092949581945061190b565b60649060208851917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b612456565b905060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a57611a1e612580565b91611a276125a3565b6044359060643593600292835496611a44858960f81c141561288d565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809916178555611a94846128f2565b15611e60578115611e385773ffffffffffffffffffffffffffffffffffffffff908185169485155f14611dd257833403611d75575b83837f0000000000000000000000000000000000000000000000000000000000000000168714611cba575b611afd91613501565b97808910611c85575016918215611c2857611b16613598565b87871161026a578454908888168983160190898211611bfc5750918893917fff0000000000000000000000000000000000000000000000000000000000000060209a7f01000000000000000000000000000000000000000000000000000000000000009795169116178655815f525f8952865f20611b9589825461279d565b9055815f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8b8a518c8152a3865190815287898201527f5fe47ed6d4225326d3303476197d782ded5a4e9c14f479dc9ec4992af4e85d59873392a482541617905551908152f35b6011907f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b60649060208751917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b846044918a8a51927fbc71f2ba0000000000000000000000000000000000000000000000000000000084528301526024820152fd5b505086517f6e553f65000000000000000000000000000000000000000000000000000000008152848101848152306020828101919091527f0000000000000000000000000000000000000000000000000000000000000000918390819060400103815f8886165af18015611d6b575f90611d37575b909150611af4565b506020823d602011611d63575b81611d516020938361275c565b8101031261026a57611afd9151611d2f565b3d9150611d44565b89513d5f823e3d90fd5b60648560208a51917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600c60248201527f657468206d69736d6174636800000000000000000000000000000000000000006044820152fd5b87517f23b872dd0000000000000000000000000000000000000000000000000000000060208201523360248201523060448201528460648201526064815260a0810181811067ffffffffffffffff8211176104ff578952611e3390876138ad565b611ac9565b8286517fa907f2f0000000000000000000000000000000000000000000000000000000008152fd5b85517faeabe71800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851681850152602490fd5b823461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a576020907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600254169051908152f35b823461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b823461026a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a57602090611fb7611fad612580565b6024359033612996565b5160018152f35b823461026a5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a57611ff6612580565b9160243591821515830361026a5760443592831515840361026a5773ffffffffffffffffffffffffffffffffffffffff94859161203883600854163314612828565b1561211557169283159081159161210d575b50156120b0575050806008549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff000000000000000000000000000000000000000080921617600855600954166009555f80f35b90602060649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b90508561204a565b9350505050167fffffffffffffffffffffffff000000000000000000000000000000000000000060095416176009555f80f35b823461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a5780516003549091825f612189846127d7565b808352602094600190866001821691825f146122165750506001146121bb575b50506108159291610bf991038561275c565b9085925060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f925b8284106121fe5750505082010181610bf96121a9565b8054848a0186015288955087949093019281016121e8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168682015292151560051b85019092019250839150610bf990506121a9565b83903461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016907f18160ddd00000000000000000000000000000000000000000000000000000000815260209384828281865afa918215611709579085915f93612378575b5060248551809581937fc63d75b600000000000000000000000000000000000000000000000000000000835230908301525afa908115610b7b575f91612347575b6108b5925061279d565b90508382813d8311612371575b61235e818361275c565b8101031261026a576108b591519061233d565b503d612354565b8281939294503d83116123a2575b612390818361275c565b8101031261026a5784905191866122fc565b503d612386565b91908251928382525f5b8481106123f15750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f845f6020809697860101520116010190565b6020818301810151848301820152016123b3565b60209060206040818301928281528551809452019301915f5b82811061242c575050505090565b835173ffffffffffffffffffffffffffffffffffffffff168552938101939281019260010161241e565b3461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a5760405161249081612724565b60038152602081019060603683378051156125535773ffffffffffffffffffffffffffffffffffffffff91827f000000000000000000000000000000000000000000000000000000000000000016905280516001101561255357817f000000000000000000000000000000000000000000000000000000000000000016604082015280516002101561255357610815917f000000000000000000000000000000000000000000000000000000000000000016606082015260405191829182612405565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361026a57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361026a57565b9081518082526020808093019301915f5b8281106125e5575050505090565b8351855293810193928101926001016125d7565b3461026a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a57612630612580565b50610815604051612640816126db565b5f81526040519182916020835260208301906125c6565b3461026a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a576020612698612693612580565b6128f2565b6040519015158152f35b3461026a575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026a57610815604051612640815b6020810190811067ffffffffffffffff8211176126f757604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6080810190811067ffffffffffffffff8211176126f757604052565b6040810190811067ffffffffffffffff8211176126f757604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176126f757604052565b919082018092116127aa57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b90600182811c9216801561281e575b60208310146127f157565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916127e6565b1561282f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561289457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff809116817f000000000000000000000000000000000000000000000000000000000000000016811491821561296a575b821561294257505090565b7f00000000000000000000000000000000000000000000000000000000000000001614919050565b7f0000000000000000000000000000000000000000000000000000000000000000811682149250612937565b73ffffffffffffffffffffffffffffffffffffffff809116918215612a845716918215612a005760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff809116918215612d055716918215612c8157828214612c2357612b3d613598565b815f525f60205260405f2054818110612b9f57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f5260405f20612b9482825461279d565b9055604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a207472616e7366657220746f2073656c660000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016301480612e98575b15612df1577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff8211176126f75760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612dc8565b73ffffffffffffffffffffffffffffffffffffffff16801561301e57612ee5613598565b805f525f60205260405f2054828110612f9a578290825f525f6020520360405f20557effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9182811161026a576002549280821681851603918183116127aa575f947fff000000000000000000000000000000000000000000000000000000000000006020937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9516911617600255604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b9173ffffffffffffffffffffffffffffffffffffffff809216827f00000000000000000000000000000000000000000000000000000000000000001681146131cc577f000000000000000000000000000000000000000000000000000000000000000092831690810361311f575061311c91928193613a31565b90565b6040517fba087652000000000000000000000000000000000000000000000000000000008152600481019290925273ffffffffffffffffffffffffffffffffffffffff9390931660248201523060448201529160209150829060649082905f905af19081156131c1575f91613192575090565b90506020813d6020116131b9575b816131ad6020938361275c565b8101031261026a575190565b3d91506131a0565b6040513d5f823e3d90fd5b506040517fba087652000000000000000000000000000000000000000000000000000000008082526004820192909252306024820181905260448201526020939290919084836064815f7f000000000000000000000000000000000000000000000000000000000000000086165af19182156131c15785935f936132dc575b50604051908152600481019290925273ffffffffffffffffffffffffffffffffffffffff93909316602482015230604482015291829060649082905f907f0000000000000000000000000000000000000000000000000000000000000000165af19182156131c1575f926132be57505090565b90809250813d83116132d5575b6131ad818361275c565b503d6132cb565b8481959294503d8311613308575b6132f4818361275c565b8101031261026a579151849290915f61324b565b503d6132ea565b60ff81146133655760ff811690601f821161333b576040519161333183612740565b8252602082015290565b60046040517fb3512b0c000000000000000000000000000000000000000000000000000000008152fd5b50604051600554815f613377836127d7565b8083529260209060019081811690811561340157506001146133a2575b505061311c9250038261275c565b91509260055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0935f925b8284106133e9575061311c9450505081016020015f80613394565b855487850183015294850194869450928101926133ce565b90506020935061311c9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f80613394565b60ff81146134665760ff811690601f821161333b576040519161333183612740565b50604051600654815f613478836127d7565b8083529260209060019081811690811561340157506001146134a257505061311c9250038261275c565b91509260065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f935f925b8284106134e9575061311c9450505081016020015f80613394565b855487850183015294850194869450928101926134ce565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811691168103613545575090565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081526004810192909252306024830152602090829060449082905f905af19081156131c1575f91613192575090565b60ff603a54166135a457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811691168103613646575090565b906020906024604051809481937fef8b30f700000000000000000000000000000000000000000000000000000000835260048301525afa9081156131c1575f91613192575090565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161370b576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa156131c1575f5173ffffffffffffffffffffffffffffffffffffffff81161561370357905f90565b505f90600190565b505050505f90600390565b600581101561388057806137275750565b6001810361378d5760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036137f35760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b6003146137fc57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6040516139179173ffffffffffffffffffffffffffffffffffffffff166138d382612740565b5f806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16139116139d4565b91613b20565b80518281159182156139b4575b50509050156139305750565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b838092935001031261026a57810151801515810361026a5780825f613924565b3d15613a2c573d9067ffffffffffffffff82116126f75760405191613a2160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461275c565b82523d5f602084013e565b606090565b8215613b1b5773ffffffffffffffffffffffffffffffffffffffff9081169081613acd5750505f80809381935af1613a676139d4565b5015613a6f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b92613b1993604051937fa9059cbb000000000000000000000000000000000000000000000000000000006020860152166024840152604483015260448252613b1482612724565b6138ad565b565b505050565b91929015613b9b5750815115613b34575090565b3b15613b3d5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015613bae5750805190602001fd5b613bec906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906123a9565b0390fdfea2646970667358221220ff6cccd017be72d9ec5dc705872346f45b80c18412d10e642ac542eb2c8e501464736f6c63430008180033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000beefc011e94f43b8b7b455ebab290c7ab4e216f10000000000000000000000000000000000000000000000000000000000000011535920436f696e7368696674205553444c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000953592d63735553444c0000000000000000000000000000000000000000000000