6 txs
5.4k calls
constructor
constructor(address _evaultFactory, address _earnFactory, address _addyRegistry)
functions
ADDY_REGISTRY
viewfunction ADDY_REGISTRY() view returns (address)
assetOpportunities
viewfunction assetOpportunities(address arg0, uint256 arg1) view returns (address)
assets
viewfunction assets(uint256 arg0) view returns (address)
canGovern
viewfunction canGovern(address _address) view returns (bool)
EULER_EARN_FACTORY
viewfunction EULER_EARN_FACTORY() view returns (address)
EULER_EVAULT_FACTORY
viewfunction EULER_EVAULT_FACTORY() view returns (address)
eulerRewards
viewfunction eulerRewards() view returns (address)
getAccessForLego
viewfunction getAccessForLego(address _user) view returns (address, string, uint256)
getAssetOpportunities
viewfunction getAssetOpportunities(address _asset) view returns (address[])
getAssets
viewfunction getAssets() view returns (address[])
getRegistries
viewfunction getRegistries() view returns (address[])
getUnderlyingAmount
viewfunction getUnderlyingAmount(address _vaultToken, uint256 _vaultTokenAmount) view returns (uint256)
getUnderlyingAsset
viewfunction getUnderlyingAsset(address _vaultToken) view returns (address)
getUnderlyingData
viewfunction getUnderlyingData(address _vaultToken, uint256 _vaultTokenAmount, address _oracleRegistry) view returns (address, uint256, uint256)
getUnderlyingData
viewfunction getUnderlyingData(address _vaultToken, uint256 _vaultTokenAmount) view returns (address, uint256, uint256)
getUsdValueOfVaultToken
viewfunction getUsdValueOfVaultToken(address _vaultToken, uint256 _vaultTokenAmount, address _oracleRegistry) view returns (uint256)
getUsdValueOfVaultToken
viewfunction getUsdValueOfVaultToken(address _vaultToken, uint256 _vaultTokenAmount) view returns (uint256)
getVaultTokenAmount
viewfunction getVaultTokenAmount(address _asset, uint256 _assetAmount, address _vaultToken) view returns (uint256)
govChangeDelay
viewfunction govChangeDelay() view returns (uint256)
governance
viewfunction governance() view returns (address)
hasClaimableRewards
viewfunction hasClaimableRewards(address _user) view returns (bool)
hasPendingGovChange
viewfunction hasPendingGovChange() view returns (bool)
indexOfAsset
viewfunction indexOfAsset(address arg0) view returns (uint256)
indexOfAssetOpportunity
viewfunction indexOfAssetOpportunity(address arg0, address arg1) view returns (uint256)
isActivated
viewfunction isActivated() view returns (bool)
isVaultToken
viewfunction isVaultToken(address _vaultToken) view returns (bool)
legoId
viewfunction legoId() view returns (uint256)
MAX_GOV_CHANGE_DELAY
viewfunction MAX_GOV_CHANGE_DELAY() view returns (uint256)
MIN_GOV_CHANGE_DELAY
viewfunction MIN_GOV_CHANGE_DELAY() view returns (uint256)
numAssetOpportunities
viewfunction numAssetOpportunities(address arg0) view returns (uint256)
numAssets
viewfunction numAssets() view returns (uint256)
pendingGov
viewfunction pendingGov() view returns (tuple)
totalAssets
viewfunction totalAssets(address _vaultToken) view returns (uint256)
totalBorrows
viewfunction totalBorrows(address _vaultToken) view returns (uint256)
vaultToAsset
viewfunction vaultToAsset(address arg0) view returns (address)
activate
nonpayablefunction activate(bool _shouldActivate)
addAssetOpportunity
nonpayablefunction addAssetOpportunity(address _asset, address _vault) returns (bool)
cancelGovernanceChange
nonpayablefunction cancelGovernanceChange()
changeGovernance
nonpayablefunction changeGovernance(address _newGov)
claimRewards
nonpayablefunction claimRewards(address _user, address _market, address _rewardToken, uint256 _rewardAmount, bytes32 _proof)
confirmGovernanceChange
nonpayablefunction confirmGovernanceChange()
depositTokens
nonpayablefunction depositTokens(address _asset, uint256 _amount, address _vault, address _recipient, address _oracleRegistry) returns (uint256, address, uint256, uint256, uint256)
depositTokens
nonpayablefunction depositTokens(address _asset, uint256 _amount, address _vault, address _recipient) returns (uint256, address, uint256, uint256, uint256)
recoverFunds
nonpayablefunction recoverFunds(address _asset, address _recipient) returns (bool)
removeAssetOpportunity
nonpayablefunction removeAssetOpportunity(address _asset, address _vault) returns (bool)
setEulerRewardsAddr
nonpayablefunction setEulerRewardsAddr(address _addr) returns (bool)
setGovernanceChangeDelay
nonpayablefunction setGovernanceChangeDelay(uint256 _numBlocks)
setLegoId
nonpayablefunction setLegoId(uint256 _legoId) returns (bool)
withdrawTokens
nonpayablefunction withdrawTokens(address _asset, uint256 _amount, address _vaultToken, address _recipient, address _oracleRegistry) returns (uint256, uint256, uint256, uint256)
withdrawTokens
nonpayablefunction withdrawTokens(address _asset, uint256 _amount, address _vaultToken, address _recipient) returns (uint256, uint256, uint256, uint256)
events
AssetOpportunityAdded
event AssetOpportunityAdded(address indexed asset, address indexed vaultToken)
AssetOpportunityRemoved
event AssetOpportunityRemoved(address indexed asset, address indexed vaultToken)
EulerActivated
event EulerActivated(bool isActivated)
EulerDeposit
event EulerDeposit(address indexed sender, address indexed asset, address indexed vaultToken, uint256 assetAmountDeposited, uint256 usdValue, uint256 vaultTokenAmountReceived, address recipient)
EulerFundsRecovered
event EulerFundsRecovered(address indexed asset, address indexed recipient, uint256 amount)
EulerLegoIdSet
event EulerLegoIdSet(uint256 legoId)
EulerRewardsAddrSet
event EulerRewardsAddrSet(address addr)
EulerWithdrawal
event EulerWithdrawal(address indexed sender, address indexed asset, address indexed vaultToken, uint256 assetAmountReceived, uint256 usdValue, uint256 vaultTokenAmountBurned, address recipient)
GovChangeCancelled
event GovChangeCancelled(address indexed cancelledGov, uint256 initiatedBlock, uint256 confirmBlock)
GovChangeConfirmed
event GovChangeConfirmed(address indexed prevGov, address indexed newGov, uint256 initiatedBlock, uint256 confirmBlock)
GovChangeDelaySet
event GovChangeDelaySet(uint256 delayBlocks)
GovChangeInitiated
event GovChangeInitiated(address indexed prevGov, address indexed newGov, uint256 confirmBlock)
errors
No errors.
creation bytecode
0x6126d75150346101bb57602061284e5f395f518060a01c6101bb5761014052602061286e5f395f518060a01c6101bb5761016052602061288e5f395f518060a01c6101bb5761018052610140511561006b5761016051156100655761018051151561006d565b5f61006d565b5f5b156101bb576101405161269752610160516126b752610180516126d7526001600f555f604052610180516060526040366080376100a86100c2565b6100b06101b9565b6126576101bf610000396126f7610000f35b604051156100d15760016100d7565b60605115155b156101bb57604051156100eb576040516007555b606051156100fa57606051600c555b6040608060c05e60c05161010f576001610114565b60e051155b1561018e57606051156101bb5760605163ed860576610100526020610100600461011c845afa610146573d5f5f3e3d5ffd5b60203d106101bb5761010090505160c05260605163c55728b0610100526020610100600461011c845afa61017c573d5f5f3e3d5ffd5b60203d106101bb5761010090505160e0525b60e05160c05110156101bb5760c0516126575260e05161267752606051156101b75760c051600b555b565b565b5f80fd5f3560e01c6002602a820660011b61260301601e395f51565b636aa06de08118611ded576024361034176125ff576004358060a01c6125ff5760405260026040516020525f5260405f20546060526060516100a157602080608052806080015f5f82525f5f5f600f81116125ff57801561008b57905b5f8160051b602087010152600101818118610075575b505081016020019050905081019050608061016f565b5f6080526001606051806001116125ff57600181039050600f81116125ff578015610113578101905b8061028052608051600e81116125ff575f6040516020525f5260405f2080610280516020525f5260405f209050548160051b60a0015260018101608052506001018181186100ca575b50506020806102805280610280015f6080518083528060051b5f82600f81116125ff57801561015b57905b8060051b60a001518160051b60208801015260010181811861013e575b505082016020019150509050810190506102805bf35b6367e4ac2c811861029d57346125ff576006546040526040516101db57602080606052806060015f5f82525f5f5f601981116125ff5780156101c557905b5f8160051b6020870101526001018181186101af575b505081016020019050905081019050606061029b565b5f6060526001604051806001116125ff57600181039050601981116125ff57801561023f578101905b806103a052606051601881116125ff5760046103a0516020525f5260405f20548160051b608001526001810160605250600101818118610204575b50506020806103a052806103a0015f6060518083528060051b5f82601981116125ff57801561028757905b8060051b608001518160051b60208801015260010181811861026a575b505082016020019150509050810190506103a05bf35b632524081081186102c557346125ff57600854604052600954606052600a5460805260606040f35b6314f5c51c8118611ded576084361034176125ff575f61018052610c09565b63e8d314e78118611ded576044361034176125ff576004358060a01c6125ff576040525f6040516020525f5260405f20806024356020525f5260405f2090505460605260206060f35b636e2882968118611ded576044361034176125ff576004358060a01c6125ff576040526024358060a01c6125ff5760605260016040516020525f5260405f20806060516020525f5260405f2090505460805260206080f35b63b2fba7938118611ded576024361034176125ff576004358060a01c6125ff5760405260026040516020525f5260405f205460605260206060f35b63cac7a0258118611ded576024361034176125ff576004358060a01c6125ff5760405260036040516020525f5260405f205460605260206060f35b63cf35bdd08118610428576024361034176125ff5760046004356020525f5260405f205460405260206040f35b63a908dc8081186104bf576024361034176125ff57600a546125ff573361016052610454610260611ec2565b61026051156125ff5760206126575f395f516004351015610475575f610484565b60206126775f395f5160043511155b156125ff57600435600b557fb8d7f2c6802e04bfd3abb436c2b7b52bd4b37872b53bd1150146816d66ac7de2600435610260526020610260a1005b6359c521208118611ded576064361034176125ff576044358060a01c6125ff576102e0525b6004358060a01c6125ff576102c05260606102c0516101e052602435610200526102e051610220526105176103006121a8565b610300f35b636a1e31bc8118611ded576024361034176125ff576004358060a01c6125ff5760405260056040516020525f5260405f205460605260206060f35b63a46fe83b811861057357346125ff5760065460405260206040f35b633f561eff811861059157346125ff57600a54151560405260206040f35b63f40b16978118611ded57346125ff57600b5460405260206040f35b6353aa43078118611ded576024361034176125ff576004358060a01c6125ff5761026052602061026051610160526105e6610280611ec2565b610280f35b6399572d6f8118611ded576024361034176125ff576004358060a01c6125ff576101605261061a6101e0611df1565b6101e0805160208160051b0180836101805e505050335f6101e0525f61018051600281116125ff57801561066f57905b8060051b6101a0015183186106645760016101e05261066f565b60010181811861064a575b50506101e0519050156125ff576101605160016101e0525f61018051600281116125ff5780156106bf57905b8060051b6101a0015183186106b4575f6101e0526106bf565b60010181811861069b575b50506101e0519050156125ff57610160513b156125ff576106e16101e0611f21565b6101e051156106f45761016051156125ff575b43600b548082018281106125ff57905090506101e05261016051600855436009556101e051600a55610160516007547fa8e5a115434955f3c91f53089861da9b575399fbfbc1fc8b345ae6a18b0f193e6101e051610200526020610200a3005b636e4fd9c881186107ee57346125ff57600854604052600954606052600a54608052604051156125ff576080511561079157608051431015610793565b5f5b156125ff5760405133186125ff5760075460a0526040516007555f6008555f6009555f600a5560405160a0517fb5dfe18540f75a87f8c7963e7f4942e9392be572b787d486d7868ac53a5bdf5b6040606060c05e604060c0a3005b6335884e5a811861086a57346125ff57602080604052806040015f60406126976101e03960026101c0525f6101c0518084528060051b5f82600a81116125ff57801561085457905b8060051b6101e001518160051b602089010152600101818118610836575b5050820160200191505090509050810190506040f35b63e8689daa8118611ded576024361034176125ff576004358060a01c6125ff576101e05260206101e051610120526108a3610200612028565b610200f35b63366836cc8118611ded57346125ff5733610160526108c8610260611ec2565b61026051156125ff576008546102605260095461028052600a546102a0526102a051156125ff575f6008555f6009555f600a55610260517f4301277e72c59c5071608882749a82a210817721ba94066744cea89211d3838060406102806102c05e60406102c0a2005b635aa6e675811861094d57346125ff5760075460405260206040f35b63be40c0f781186109d6576024361034176125ff576004358060a01c6125ff57610260523361016052610981610280611ec2565b61028051156125ff5761026051156125ff5761026051600d557fb2311a5f10f67873531833efdd57bda4f9b441d7ea573f0b24f3690029d69d7561026051610280526020610280a16001610280526020610280f35b63374cae738118611ded57346125ff57600d5460405260206040f35b63ed8605768118611ded57346125ff57602061265760403960206040f35b63c55728b08118610a2e57346125ff57602061267760403960206040f35b6359b76fe48118610a4a57346125ff57600e5460405260206040f35b634a8c1fb48118611ded57346125ff57600f5460405260206040f35b632f7ab0da8118611ded576024361034176125ff576004358060a01c6125ff57604052600d54606052606051632637588e60805260405160a0523060c052602060806044609c845afa610abb573d5f5f3e3d5ffd5b3d602081183d60201002188060800160a0116125ff576080518060011c6125ff5760e0525060e0905051610b6257606060605160c0528060e052601f6080527f746f67676c654f70657261746f7228616464726573732c61646472657373290060a05260808160c00160208251018083835e508051806020830101601f825f03163682375050601f19601f82516020010116905090508101905060026101005260c0610ba4565b60605f61010052806101205280610100015f81528051806020830101601f825f03163682375050601f19601f825160200101169050810190505f610140526101005bf35b63338c4ccb8118610be4576024361034176125ff576004358060a01c6125ff576101605260206101605161012052610bdf610180611fed565b610180f35b631b7a69e78118611ded5760a4361034176125ff576084358060a01c6125ff57610180525b6004358060a01c6125ff57610120526044358060a01c6125ff57610140526064358060a01c6125ff5761016052600f54156125ff576001610120516020525f5260405f2080610140516020525f5260405f20905054156125ff57610120516370a082316101c052306101e05260206101c060246101dc845afa610c8e573d5f5f3e3d5ffd5b60203d106125ff576101c09050516101a052602435610120516370a082316101e052336102005260206101e060246101fc845afa610cce573d5f5f3e3d5ffd5b60203d106125ff576101e0905051808281188284100218905090506101c0526101c051156125ff57610120516323b872dd6101e052336102005230610220526101c0516102405260206101e060646101fc5f855af1610d2f573d5f5f3e3d5ffd5b3d610d4657803b156125ff57600161026052610d70565b3d602081183d6020100218806101e001610200116125ff576101e0518060011c6125ff5761026052505b610260905051156125ff576101c051610120516370a082316102005230610220526020610200602461021c845afa610daa573d5f5f3e3d5ffd5b60203d106125ff57610200905051808281188284100218905090506101e05261014051636e553f65610220526101e0516102405261016051610260526020610220604461023c5f855af1610e00573d5f5f3e3d5ffd5b60203d106125ff576102209050516102005261020051156125ff57610120516370a082316102405230610260526020610240602461025c845afa610e46573d5f5f3e3d5ffd5b60203d106125ff57610240905051610220525f610240526101a051610220511115610f2057610220516101a0518082038281116125ff5790509050610240526101205163a9059cbb610260523361028052610240516102a0526020610260604461027c5f855af1610eb9573d5f5f3e3d5ffd5b3d610ed057803b156125ff5760016102c052610efa565b3d602081183d60201002188061026001610280116125ff57610260518060011c6125ff576102c052505b6102c0905051156125ff576101e051610240518082038281116125ff57905090506101e0525b610120516040526101e05160605261018051608052610f40610280612103565b61028051610260526101405161012051337fadb7617ff0852167d8bd8401cfd26cae5be4d0b22aa1cf44c7383d81bb485ee36101e05161028052610260516102a052610200516102c052610160516102e0526080610280a46101e05161028052610140516102a052610200516102c052610240516102e052610260516103005260a0610280f35b636331f17f8118611046576044361034176125ff576004358060a01c6125ff57610160526101605161012052610ffe610180611fed565b6101805161100d576001611012565b602435155b15611026575f6101a05260206101a0611044565b6020610160516040526024356060526110406101806120c9565b6101805bf35b63954574838118611ded576044361034176125ff576004358060a01c6125ff57610260526024358060a01c6125ff576102805233610160526110896102a0611ec2565b6102a051156125ff57604061026060e05e6110a261249f565b6102605163095ea7b36102a052610280516102c0525f6102e05260206102a060446102bc5f855af16110d6573d5f5f3e3d5ffd5b3d6110ed57803b156125ff57600161030052611117565b3d602081183d6020100218806102a0016102c0116125ff576102a0518060011c6125ff5761030052505b610300905051156125ff5760016102a05260206102a0f35b63fbddde9c8118611ded576064361034176125ff576004358060a01c6125ff576040526044358060a01c6125ff5760605260405160036060516020525f5260405f205414611184575f608052602060806111bb565b602060605163c6e6f59260805260243560a052602060806024609c845afa6111ae573d5f5f3e3d5ffd5b60203d106125ff57608090505bf35b637906130381186111dc576044361034176125ff575f6104605261121f565b6394b51d378118611ded57346125ff5760206126d760403960206040f35b631a606eb38118611257576064361034176125ff576044358060a01c6125ff57610460525b6004358060a01c6125ff57610440526020610440516102c0526024356102e0526104605161030052611252610480612268565b610480f35b63ab96e0798118611ded576024361034176125ff5760206126d75f395f516347be091a6040526002606052602060406024605c845afa611299573d5f5f3e3d5ffd5b3d602081183d6020100218806040016060116125ff576040518060a01c6125ff5760805250608090505133186125ff57600e546040526040516112dd5760016112e6565b60043560405118155b156125ff57600435600e557f0dc1c690767454a42bbf1320bbcd5c3613ba2e4b7ec271c8e0d5fa1c23287a4460043560605260206060a1600160605260206060f35b63333f17518118611ded576044361034176125ff575f6102e0526104e4565b63f3e0ffbf81186113cd576024361034176125ff576004358060a01c6125ff5761016052610160516101205261137e610180611fed565b61018051611395575f6101a05260206101a06113cb565b6020610160516301e1d114610180526020610180600461019c845afa6113bd573d5f5f3e3d5ffd5b60203d106125ff5761018090505bf35b63c797bfe78118611ded576084361034176125ff575f61018052611497565b638d7301248118611ded576024361034176125ff576004358060a01c6125ff57610160526101605161012052611423610180611fed565b6101805161143a575f6101a05260206101a0611470565b6020610160516347bd3718610180526020610180600461019c845afa611462573d5f5f3e3d5ffd5b60203d106125ff5761018090505bf35b63e9bb12f08118611ded5760a4361034176125ff576084358060a01c6125ff57610180525b6004358060a01c6125ff57610120526044358060a01c6125ff57610140526064358060a01c6125ff5761016052600f54156125ff576001610120516020525f5260405f2080610140516020525f5260405f20905054156125ff57610140516370a082316101c052306101e05260206101c060246101dc845afa61151c573d5f5f3e3d5ffd5b60203d106125ff576101c09050516101a052602435610140516370a082316101e052336102005260206101e060246101fc845afa61155c573d5f5f3e3d5ffd5b60203d106125ff576101e0905051808281188284100218905090506101c0526101c051156125ff57610140516323b872dd6101e052336102005230610220526101c0516102405260206101e060646101fc5f855af16115bd573d5f5f3e3d5ffd5b3d6115d457803b156125ff576001610260526115fe565b3d602081183d6020100218806101e001610200116125ff576101e0518060011c6125ff5761026052505b610260905051156125ff576101c051610140516370a082316102005230610220526020610200602461021c845afa611638573d5f5f3e3d5ffd5b60203d106125ff57610200905051808281188284100218905090506101e0526101405163ba087652610220526101e05161024052610160516102605230610280526020610220606461023c5f855af1611693573d5f5f3e3d5ffd5b60203d106125ff576102209050516102005261020051156125ff57610140516370a082316102405230610260526020610240602461025c845afa6116d9573d5f5f3e3d5ffd5b60203d106125ff57610240905051610220525f610240526101a0516102205111156117b357610220516101a0518082038281116125ff5790509050610240526101405163a9059cbb610260523361028052610240516102a0526020610260604461027c5f855af161174c573d5f5f3e3d5ffd5b3d61176357803b156125ff5760016102c05261178d565b3d602081183d60201002188061026001610280116125ff57610260518060011c6125ff576102c052505b6102c0905051156125ff576101e051610240518082038281116125ff57905090506101e0525b6101205160405261020051606052610180516080526117d3610280612103565b61028051610260526101405161012051337ffc9711d3346fd0f3d107e3dd0beab70d681c08bbb03bb197713baee5249a13da6102005161028052610260516102a0526101e0516102c052610160516102e0526080610280a461020051610280526101e0516102a05260406102406102c05e6080610280f35b638aadf9ac8118611a635760a4361034176125ff576004358060a01c6125ff576040526024358060a01c6125ff576060526044358060a01c6125ff57608052600d5460a05260a051156125ff5760805115611a615760a051637a3ba19a60c05260808060e0528060e0015f6040516107005260016106e0525f6106e0518084528060051b5f82600a81116125ff5780156118ff57905b8060051b61070001518160051b6020890101526001018181186118e1575b50508201602001915050905090508101905080610100528060e0015f608051610860526001610840525f610840518084528060051b5f82600a81116125ff57801561196457905b8060051b61086001518160051b602089010152600101818118611946575b50508201602001915050905090508101905080610120528060e0015f6064356109c05260016109a0525f6109a0518084528060051b5f82600a81116125ff5780156119c957905b8060051b6109c001518160051b6020890101526001018181186119ab575b50508201602001915050905090508101905080610140528060e0015f608435610b20526001610b00525f610b00518084528060051b5f82600a81116125ff578015611a2e57905b8060051b610b2001518160051b602089010152600101818118611a10575b505082016020019150509050905081015050803b156125ff575f60c061060460dc5f855af1611a5f573d5f5f3e3d5ffd5b505b005b634bcae6248118611ded576044361034176125ff576004358060a01c6125ff57610260526024358060a01c6125ff57610280523361016052611aa66102a0611ec2565b6102a051156125ff57610260516102805161012052611ac66102a0612028565b6102a051186125ff576102605163095ea7b36102a052610280516102c0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102e05260206102a060446102bc5f855af1611b23573d5f5f3e3d5ffd5b3d611b3a57803b156125ff57600161030052611b64565b3d602081183d6020100218806102a0016102c0116125ff576102a0518060011c6125ff5761030052505b610300905051156125ff57604061026060805e611b7f612300565b60016102a05260206102a0f35b63b6ff49348118611ded576024361034176125ff576004358060a01c6125ff576040525f60605260206060f35b6324ae6a278118611d3c576044361034176125ff576004358060a01c6125ff57610260526024358060a01c6125ff57610280523361016052611bfc6102a0611ec2565b6102a051156125ff57610260516370a082316102c052306102e05260206102c060246102dc845afa611c30573d5f5f3e3d5ffd5b60203d106125ff576102c09050516102a05261028051611c51576001611c57565b61026051155b611c65576102a05115611c68565b60015b15611c7c575f6102e05260206102e0611d3a565b6102605163a9059cbb6102c05260406102806102e05e60206102c060446102dc5f855af1611cac573d5f5f3e3d5ffd5b3d611cc357803b156125ff57600161032052611ced565b3d602081183d6020100218806102c0016102e0116125ff576102c0518060011c6125ff5761032052505b610320905051156125ff5761028051610260517e9f91f93bd0b624fd96692a000847b976f573783e404cf9ced8ea846407319b6102a0516102c05260206102c0a360016102c05260206102c05bf35b63ce5e84a38118611ded576024361034176125ff576004358060011c6125ff57610260523361016052611d70610280611ec2565b61028051156125ff5761026051600f557f6d2420f65196095a78f113d76bf9b61e3767607c7f9b67f7f6e1b39184e3c96a61026051610280526020610280a1005b636841aea18118611ded57346125ff57602061269760403960206040f35b63d8df88a18118611ded57346125ff5760206126b760403960206040f35b5f5ffd5b5f60405260075460a05260a05115611e2257604051600181116125ff5760a0518160051b6060015260018101604052505b600c5460c05260c05115611eae5760c051635aa6e675610100526020610100600461011c845afa611e55573d5f5f3e3d5ffd5b3d602081183d60201002188061010001610120116125ff57610100518060a01c6125ff57610140525061014090505160e05260e05115611eae57604051600181116125ff5760e0518160051b6060015260018101604052505b60405160208160051b01806040845e505050565b61016051611ed16101e0611df1565b6101e05f610240525f8151600281116125ff578015611f1257905b8060051b6020840101518418611f0757600161024052611f12565b600101818118611eec575b50506102405190509050815250565b600c5415815250565b60206126975f395f516329710388606052604051608052602060606024607c845afa611f58573d5f5f3e3d5ffd5b3d602081183d6020100218806060016080116125ff576060518060011c6125ff5760a0525060a0905051611fe55760206126b75f395f51636ee0787a60c05260405160e052602060c0602460dc845afa611fb4573d5f5f3e3d5ffd5b3d602081183d60201002188060c00160e0116125ff5760c0518060011c6125ff576101005250610100905051611fe8565b60015b815250565b6003610120516020525f5260405f20541561200c576001815250612026565b6101205160405261201e610140611f2a565b610140518152505b565b6003610120516020525f5260405f2054610140526101405161205f5761012051604052612056610160611f2a565b61016051612061565b5f5b156120c057610120516338d52e0f610180526020610180600461019c845afa61208c573d5f5f3e3d5ffd5b3d602081183d602010021880610180016101a0116125ff57610180518060a01c6125ff576101c052506101c0905051610140525b61014051815250565b6040516307a2d13a60805260605160a052602060806024609c845afa6120f1573d5f5f3e3d5ffd5b60203d106125ff576080905051815250565b60805160a05260805161216d5760206126d75f395f516347be091a60c052600460e052602060c0602460dc845afa61213d573d5f5f3e3d5ffd5b3d602081183d60201002188060c00160e0116125ff5760c0518060a01c6125ff57610100525061010090505160a0525b60a05163c660d11260c0526040604060e05e602060c0604460dc845afa612196573d5f5f3e3d5ffd5b60203d106125ff5760c0905051815250565b610200516121b75760016121bd565b6101e051155b156121d7575f81525f60208201525f604082015250612266565b6101e051610120526121ea610260612028565b61026051610240526102405161220f575f81525f60208201525f604082015250612266565b60406101e060405e6122226102806120c9565b6102805161026052604061024060405e610220516080526122446102a0612103565b6102a05161028052610240518152610260516020820152610280516040820152505b565b6060366103203760606102c06101e05e6122836103806121a8565b6103806060816103e05e5060606103e06103205e61036051815250565b60056040516020525f5260405f20546122fe576006546060526060516122c65760016060525b60405160046060516020525f5260405f205560605160056040516020525f5260405f2055606051600181018181106125ff5790506006555b565b60016080516020525f5260405f208060a0516020525f5260405f209050546125ff57608051156123345760a0511515612336565b5f5b156125ff5760026080516020525f5260405f205460c05260c05161235a57600160c0525b60a0515f6080516020525f5260405f208060c0516020525f5260405f2090505560c05160016080516020525f5260405f208060a0516020525f5260405f2090505560c051600181018181106125ff57905060026080516020525f5260405f2055608051600360a0516020525f5260405f20556080516040526123da6122a0565b60a0516080517f3348d34d0e8a0dd27ac5dac3c961cb4454574797a11cf73e86d50b4b069c0edc5f60e0a3565b6006546060526001606051111561249d5760056040516020525f5260405f20546080526080511561249d57606051600181038181116125ff57905060a05260a0516006555f60056040516020525f5260405f205560a0516080511461249d57600460a0516020525f5260405f205460c05260c05160046080516020525f5260405f2055608051600560c0516020525f5260405f20555b565b600160e0516020525f5260405f2080610100516020525f5260405f209050546101205261012051156125ff57600260e0516020525f5260405f205461014052600261014051106125ff5761014051600181038181116125ff5790506101605261016051600260e0516020525f5260405f20555f600160e0516020525f5260405f2080610100516020525f5260405f209050555f6003610100516020525f5260405f20556101605161012051146125b7575f60e0516020525f5260405f2080610160516020525f5260405f2090505461018052610180515f60e0516020525f5260405f2080610120516020525f5260405f2090505561012051600160e0516020525f5260405f2080610180516020525f5260405f209050555b600161016051116125d05760e0516040526125d0612407565b6101005160e0517f806b555e5d3ce1eff082e5a7a21ef3550a2d56728951ae4e8a2a699509448be65f610180a3565b5f80fd184b1ded0a660931051c0ba607541bb9001805eb017103851ded02e40a101ded1ded1ded1ded134709f20fc7112f11bd03fb1ded13ec1db11b8c0557147203c01ded05ad032d13281ded1dcf08a811fa1ded1ded855820275d7d7d0033859de2db1e5b59cc527640e5278b73755f3d43fbaee6bac36d2419265781185418a0a16576797065728300040100380000000000000000000000007f321498a801a191a93c840750ed637149ddf8d000000000000000000000000072bbdb652f2aec9056115644efccdd1986f51f150000000000000000000000007bcd6d471d1a068012a79347c7a944d1df01a1ae