0 txs
1 call
constructor
constructor(address _uniswapV2Factory, address _uniswapV2Router, address _addyRegistry, address _coreRouterPool)
functions
ADDY_REGISTRY
viewfunction ADDY_REGISTRY() view returns (address)
canGovern
viewfunction canGovern(address _address) view returns (bool)
coreRouterPool
viewfunction coreRouterPool() view returns (address)
getAccessForLego
viewfunction getAccessForLego(address _user) view returns (address, string, uint256)
getAddLiqAmountsIn
viewfunction getAddLiqAmountsIn(address _pool, address _tokenA, address _tokenB, uint256 _availAmountA, uint256 _availAmountB) view returns (uint256, uint256, uint256)
getBestSwapAmountIn
viewfunction getBestSwapAmountIn(address _tokenIn, address _tokenOut, uint256 _amountOut) view returns (address, uint256)
getBestSwapAmountOut
viewfunction getBestSwapAmountOut(address _tokenIn, address _tokenOut, uint256 _amountIn) view returns (address, uint256)
getCoreRouterPool
viewfunction getCoreRouterPool() view returns (address)
getDeepestLiqPool
viewfunction getDeepestLiqPool(address _tokenA, address _tokenB) view returns (tuple)
getLpToken
viewfunction getLpToken(address _pool) view returns (address)
getPoolForLpToken
viewfunction getPoolForLpToken(address _lpToken) view returns (address)
getPriceUnsafe
viewfunction getPriceUnsafe(address _pool, address _targetToken, address _oracleRegistry) view returns (uint256)
getPriceUnsafe
viewfunction getPriceUnsafe(address _pool, address _targetToken) view returns (uint256)
getRegistries
viewfunction getRegistries() view returns (address[])
getRemoveLiqAmountsOut
viewfunction getRemoveLiqAmountsOut(address _pool, address _tokenA, address _tokenB, uint256 _lpAmount) view returns (uint256, uint256)
getSwapAmountIn
viewfunction getSwapAmountIn(address _pool, address _tokenIn, address _tokenOut, uint256 _amountOut) view returns (uint256)
getSwapAmountOut
viewfunction getSwapAmountOut(address _pool, address _tokenIn, address _tokenOut, uint256 _amountIn) 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)
isActivated
viewfunction isActivated() 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)
pendingGov
viewfunction pendingGov() view returns (tuple)
UNISWAP_V2_FACTORY
viewfunction UNISWAP_V2_FACTORY() view returns (address)
UNISWAP_V2_ROUTER
viewfunction UNISWAP_V2_ROUTER() view returns (address)
activate
nonpayablefunction activate(bool _shouldActivate)
addLiquidity
nonpayablefunction addLiquidity(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, int24 _tickLower, int24 _tickUpper, uint256 _amountA, uint256 _amountB, uint256 _minAmountA, uint256 _minAmountB, uint256 _minLpAmount, address _recipient, address _oracleRegistry) returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256)
addLiquidity
nonpayablefunction addLiquidity(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, int24 _tickLower, int24 _tickUpper, uint256 _amountA, uint256 _amountB, uint256 _minAmountA, uint256 _minAmountB, uint256 _minLpAmount, address _recipient) returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256)
cancelGovernanceChange
nonpayablefunction cancelGovernanceChange()
changeGovernance
nonpayablefunction changeGovernance(address _newGov)
claimRewards
nonpayablefunction claimRewards(address _user, address _market, address _rewardToken, uint256 _rewardAmount, bytes32 _proof)
confirmGovernanceChange
nonpayablefunction confirmGovernanceChange()
recoverFunds
nonpayablefunction recoverFunds(address _asset, address _recipient) returns (bool)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, address _lpToken, uint256 _liqToRemove, uint256 _minAmountA, uint256 _minAmountB, address _recipient, address _oracleRegistry) returns (uint256, uint256, uint256, uint256, uint256, bool)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, address _lpToken, uint256 _liqToRemove, uint256 _minAmountA, uint256 _minAmountB, address _recipient) returns (uint256, uint256, uint256, uint256, uint256, bool)
setCoreRouterPool
nonpayablefunction setCoreRouterPool(address _addr) returns (bool)
setGovernanceChangeDelay
nonpayablefunction setGovernanceChangeDelay(uint256 _numBlocks)
setLegoId
nonpayablefunction setLegoId(uint256 _legoId) returns (bool)
swapTokens
nonpayablefunction swapTokens(uint256 _amountIn, uint256 _minAmountOut, address[] _tokenPath, address[] _poolPath, address _recipient, address _oracleRegistry) returns (uint256, uint256, uint256, uint256)
swapTokens
nonpayablefunction swapTokens(uint256 _amountIn, uint256 _minAmountOut, address[] _tokenPath, address[] _poolPath, address _recipient) returns (uint256, uint256, uint256, uint256)
events
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)
UniswapV2Activated
event UniswapV2Activated(bool isActivated)
UniswapV2LegoIdSet
event UniswapV2LegoIdSet(uint256 legoId)
UniswapV2LiquidityAdded
event UniswapV2LiquidityAdded(address indexed sender, address indexed tokenA, address indexed tokenB, uint256 amountA, uint256 amountB, uint256 lpAmountReceived, uint256 usdValue, address recipient)
UniswapV2LiquidityRemoved
event UniswapV2LiquidityRemoved(address sender, address indexed pool, address indexed tokenA, address indexed tokenB, uint256 amountA, uint256 amountB, address lpToken, uint256 lpAmountBurned, uint256 usdValue, address recipient)
UniswapV2Swap
event UniswapV2Swap(address indexed sender, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut, uint256 usdValue, uint256 numTokens, address recipient)
UniV2FundsRecovered
event UniV2FundsRecovered(address indexed asset, address indexed recipient, uint256 amount)
UniV2WethCoreRouterPoolSet
event UniV2WethCoreRouterPoolSet(address indexed pool)
errors
No errors.
creation bytecode
0x6137d95150346101db5760206139705f395f518060a01c6101db576101405260206139905f395f518060a01c6101db576101605260206139b05f395f518060a01c6101db576101805260206139d05f395f518060a01c6101db576101a052610140511561008f576101605115610089576101805115610083576101a0511515610091565b5f610091565b5f610091565b5f5b156101db576101405161379952610160516137b952610180516137d9526101a05160065560016008555f604052610180516060526040366080376100d36100e5565b6137596101df610000396137f9610000f35b604051156100f45760016100fa565b60605115155b156101db576040511561010d576040515f555b6060511561011c576060516005555b6040608060c05e60c051610131576001610136565b60e051155b156101b057606051156101db5760605163ed860576610100526020610100600461011c845afa610168573d5f5f3e3d5ffd5b60203d106101db5761010090505160c05260605163c55728b0610100526020610100600461011c845afa61019e573d5f5f3e3d5ffd5b60203d106101db5761010090505160e0525b60e05160c05110156101db5760c0516137595260e05161377952606051156101d95760c0516004555b565b5f80fd5f3560e01c60026030820660011b6136f901601e395f51565b6353aa43078118610056576024361034176136f5576004358060a01c6136f5576102605260206102605161016052610051610280612f94565b610280f35b63bec9a1278118612ec05760a4361034176136f5576004358060a01c6136f557610220526024358060a01c6136f557610240526044358060a01c6136f5576102605261022051630dfe16816102a05260206102a060046102bc845afa6100be573d5f5f3e3d5ffd5b3d602081183d6020100218806102a0016102c0116136f5576102a0518060a01c6136f5576102e052506102e0905051610280526040366102a037610220516040526102805161024051146060526101166102e0612ffc565b6102e06040816103205e5060406103206102a05e6102a05161013957600161013f565b6102c051155b15610155576060366102e03760606102e06101e1565b6064356102e05260643560405260406102a060605e6101756103206136c6565b61032051610300526084356103005111156101cd576084356040526102c0516060526102a0516080526101a96103406136c6565b610340516103205260643561032051116101cd57610320516102e052608435610300525b60406102e06103205e5f6103605260606103205bf35b633f561eff8118612ec057346136f557600354151560405260206040f35b6399572d6f8118612ec0576024361034176136f5576004358060a01c6136f557610160526102306101e0612ec4565b6101e0805160208160051b0180836101805e505050335f6101e0525f61018051600281116136f557801561028557905b8060051b6101a00151831861027a5760016101e052610285565b600101818118610260575b50506101e0519050156136f5576101605160016101e0525f61018051600281116136f55780156102d557905b8060051b6101a0015183186102ca575f6101e0526102d5565b6001018181186102b1575b50506101e0519050156136f557610160513b156136f5576102f76101e0612ff3565b6101e0511561030a5761016051156136f5575b436004548082018281106136f557905090506101e05261016051600155436002556101e051600355610160515f547fa8e5a115434955f3c91f53089861da9b575399fbfbc1fc8b345ae6a18b0f193e6101e051610200526020610200a3005b636e4fd9c88118612ec057346136f557600154604052600254606052600354608052604051156136f557608051156103a6576080514310156103a8565b5f5b156136f55760405133186136f5575f5460a0526040515f555f6001555f6002555f60035560405160a0517fb5dfe18540f75a87f8c7963e7f4942e9392be572b787d486d7868ac53a5bdf5b6040606060c05e604060c0a3005b63366836cc811861048a57346136f5573361016052610421610260612f94565b61026051156136f55760015461026052600254610280526003546102a0526102a051156136f5575f6001555f6002555f600355610260517f4301277e72c59c5071608882749a82a210817721ba94066744cea89211d3838060406102806102c05e60406102c0a2005b630f6da63c8118612ec0576024361034176136f5576004358060a01c6136f55760405260206040f35b63a908dc808118612ec0576024361034176136f5576003546136f55733610160526104df610260612f94565b61026051156136f55760206137595f395f516004351015610500575f61050f565b60206137795f395f5160043511155b156136f5576004356004557fb8d7f2c6802e04bfd3abb436c2b7b52bd4b37872b53bd1150146816d66ac7de2600435610260526020610260a1005b635aa6e6758118612ec057346136f5575f5460405260206040f35b63252408108118612ec057346136f55760015460405260025460605260035460805260606040f35b63f40b169781186105a957346136f55760045460405260206040f35b6394b51d378118612ec057346136f55760206137d960403960206040f35b63ed86057681186105e557346136f557602061375960403960206040f35b632abd8a268118612ec0576024361034176136f5576004358060a01c6136f55760405260206040f35b63c55728b08118612ec057346136f557602061377960403960206040f35b6335884e5a81186106a857346136f557602080604052806040015f60406137996101e03960026101c0525f6101c0518084528060051b5f82600a81116136f557801561069257905b8060051b6101e001518160051b602089010152600101818118610674575b5050820160200191505090509050810190506040f35b63e9c9c0ca8118612ec057610184361034176136f5575f61028052610fd4565b632f7ab0da8118610729576024361034176136f5576004358060a01c6136f55760405260605f60605280608052806060015f81528051806020830101601f825f03163682375050601f19601f825160200101169050810190505f60a0526060f35b63a2db886a8118612ec0576024361034176136f5576004358060a01c6136f55761026052336101605261075d610280612f94565b61028051156136f55761026051600655610260517fc544afbd17612cb8abfa5ee9cf080bb56c6188e69ca61075f48bcba96163f4e15f610280a26001610280526020610280f35b63dd4260a381186107c35760a4361034176136f5575f61072052610806565b6399d8fae38118612ec057346136f557602061379960403960206040f35b6332f4bdc78118610e295760c4361034176136f55760a4358060a01c6136f557610720525b60443560040160058135116136f55780355f81600581116136f557801561084f57905b8060051b6020850101358060a01c6136f5578160051b6105c00152600101818118610829575b5050806105a052505060643560040160048135116136f55780355f81600481116136f55780156108a157905b8060051b6020850101358060a01c6136f5578160051b610680015260010181811861087b575b5050806106605250506084358060a01c6136f55761070052600854156136f5576105a051610740526106605161076052600261074051106136f55761074051600181038181116136f557905061076051186136f5576105a051156136f5575f60051b6105c001516107805261074051600181038181116136f55790506105a0518110156136f55760051b6105c001516107a052610780516370a082316107e052306108005260206107e060246107fc845afa61095f573d5f5f3e3d5ffd5b60203d106136f5576107e09050516107c052600435610780516370a082316108005233610820526020610800602461081c845afa61099f573d5f5f3e3d5ffd5b60203d106136f557610800905051808281188284100218905090506107e0526107e051156136f557610780516323b872dd61080052336108205230610840526107e051610860526020610800606461081c5f855af1610a00573d5f5f3e3d5ffd5b3d610a1757803b156136f557600161088052610a41565b3d602081183d60201002188061080001610820116136f557610800518060011c6136f55761088052505b610880905051156136f5576107e051610780516370a082316108005230610820526020610800602461081c845afa610a7b573d5f5f3e3d5ffd5b60203d106136f557610800905051808281188284100218905090506107e0526107805163a9059cbb6108005261066051156136f5575f60051b6106800151610820526107e051610840526020610800604461081c5f855af1610adf573d5f5f3e3d5ffd5b3d610af657803b156136f557600161086052610b20565b3d602081183d60201002188061080001610820116136f557610800518060011c6136f55761086052505b610860905051156136f5576020613799610800396107e051610820525f61074051600181038181116136f5579050600581116136f5578015610c5b57905b8061084052610840516105a0518110156136f55760051b6105c001516108605261084051600181018181106136f55790506105a0518110156136f55760051b6105c001516108805261084051610660518110156136f55760051b61068001516108a052610700516108c05261074051600281038181116136f5579050610840511015610c0d5761084051600181018181106136f5579050610660518110156136f55760051b61068001516108c0525b6108a0516103405261086051610360526108805161038052610820516103a0526108c0516103c052610800516103e052610c486108e0613190565b6108e05161082052600101818118610b5e575b5050610820516108405260243561084051106136f557610780516370a0823161088052306108a0526020610880602461089c845afa610c9c573d5f5f3e3d5ffd5b60203d106136f557610880905051610860525f610880526107c051610860511115610d7657610860516107c0518082038281116136f55790509050610880526107805163a9059cbb6108a052336108c052610880516108e05260206108a060446108bc5f855af1610d0f573d5f5f3e3d5ffd5b3d610d2657803b156136f557600161090052610d50565b3d602081183d6020100218806108a0016108c0116136f5576108a0518060011c6136f55761090052505b610900905051156136f5576107e051610880518082038281116136f557905090506107e0525b610780516040526107e0516060526107a0516080526108405160a052600160c0526107205160e052610da96108c0613421565b6108c0516108a0526107a05161078051337f141d738995161bf998a55ab86c6b2e6b57582abb729b6a8e92ba17f6c6d87f116107e0516108c052610840516108e0526108a051610900526107405161092052610700516109405260a06108c0a46107e0516108c052610840516108e05260406108806109005e60806108c0f35b6324ae6a278118612ec0576044361034176136f5576004358060a01c6136f557610260526024358060a01c6136f557610280523361016052610e6c6102a0612f94565b6102a051156136f557610260516370a082316102c052306102e05260206102c060246102dc845afa610ea0573d5f5f3e3d5ffd5b60203d106136f5576102c09050516102a05261028051610ec1576001610ec7565b61026051155b610ed5576102a05115610ed8565b60015b15610eec575f6102e05260206102e0610fab565b6102605163a9059cbb6102c05260406102806102e05e60206102c060446102dc5f855af1610f1c573d5f5f3e3d5ffd5b3d610f3357803b156136f557600161032052610f5d565b3d602081183d6020100218806102c0016102e0116136f5576102c0518060011c6136f55761032052505b610320905051156136f55761028051610260517ff305716d2d18c96e7afd74e74016e4b6b13e57f4702744b88e9acf64fe2986fa6102a0516102c05260206102c0a360016102c05260206102c05bf35b63cd3758fc811861198b576101a4361034176136f557610184358060a01c6136f557610280525b6024358060a01c6136f5576101c0526044358060a01c6136f5576101e0526064358060a01c6136f557610200526084358060020b81186136f5576102205260a4358060020b81186136f55761024052610164358060a01c6136f55761026052600854156136f5576101c051630dfe16816102e05260206102e060046102fc845afa611061573d5f5f3e3d5ffd5b3d602081183d6020100218806102e001610300116136f5576102e0518060a01c6136f55761032052506103209050516102a0526101c05163d21220a7610340526020610340600461035c845afa6110ba573d5f5f3e3d5ffd5b3d602081183d60201002188061034001610360116136f557610340518060a01c6136f55761038052506103809050516102c0526101e0515f6102e0525f6002905b8060051b6102a0015183186111155760016102e052611120565b6001018181186110fb575b50506102e0519050156136f557610200515f6102e0525f6002905b8060051b6102a0015183186111555760016102e052611160565b60010181811861113b575b50506102e0519050156136f557610200516101e051146136f5576101e0516370a082316103005230610320526020610300602461031c845afa6111a5573d5f5f3e3d5ffd5b60203d106136f5576103009050516102e052610200516370a082316103205230610340526020610320602461033c845afa6111e2573d5f5f3e3d5ffd5b60203d106136f5576103209050516103005260c4356101e0516370a082316103405233610360526020610340602461035c845afa611222573d5f5f3e3d5ffd5b60203d106136f557610340905051808281188284100218905090506103205261032051156136f5576101e0516323b872dd6103405233610360523061038052610320516103a0526020610340606461035c5f855af1611283573d5f5f3e3d5ffd5b3d61129a57803b156136f55760016103c0526112c4565b3d602081183d60201002188061034001610360116136f557610340518060011c6136f5576103c052505b6103c0905051156136f557610320516101e0516370a082316103605230610380526020610360602461037c845afa6112fe573d5f5f3e3d5ffd5b60203d106136f557610360905051808281188284100218905090506103405260e435610200516370a0823161038052336103a0526020610380602461039c845afa61134b573d5f5f3e3d5ffd5b60203d106136f557610380905051808281188284100218905090506103605261036051156136f557610200516323b872dd61038052336103a052306103c052610360516103e0526020610380606461039c5f855af16113ac573d5f5f3e3d5ffd5b3d6113c357803b156136f5576001610400526113ed565b3d602081183d602010021880610380016103a0116136f557610380518060011c6136f55761040052505b610400905051156136f55761036051610200516370a082316103a052306103c05260206103a060246103bc845afa611427573d5f5f3e3d5ffd5b60203d106136f5576103a0905051808281188284100218905090506103805260206137b96103a0396101e05163095ea7b36103c0526103a0516103e052610340516104005260206103c060446103dc5f855af1611486573d5f5f3e3d5ffd5b3d61149d57803b156136f5576001610420526114c7565b3d602081183d6020100218806103c0016103e0116136f5576103c0518060011c6136f55761042052505b610420905051156136f5576102005163095ea7b36103c0526103a0516103e052610380516104005260206103c060446103dc5f855af1611509573d5f5f3e3d5ffd5b3d61152057803b156136f55760016104205261154a565b3d602081183d6020100218806103c0016103e0116136f5576103c0518060011c6136f55761042052505b610420905051156136f5575f6103c0526103a05163e8e337006103e05260406101e06104005e61034051610440526103805161046052604061010461048037610260516104c052426104e05260606103e06101046103fc5f855af16115b1573d5f5f3e3d5ffd5b60603d106136f5576103e090506060816105005e5061050051610340526105205161038052610540516103c0526103c051156136f5576101e05163095ea7b36103e0526103a051610400525f6104205260206103e060446103fc5f855af161161b573d5f5f3e3d5ffd5b3d61163257803b156136f55760016104405261165c565b3d602081183d6020100218806103e001610400116136f5576103e0518060011c6136f55761044052505b610440905051156136f5576102005163095ea7b36103e0526103a051610400525f6104205260206103e060446103fc5f855af161169b573d5f5f3e3d5ffd5b3d6116b257803b156136f5576001610440526116dc565b3d602081183d6020100218806103e001610400116136f5576103e0518060011c6136f55761044052505b610440905051156136f5576101e0516370a082316104005230610420526020610400602461041c845afa611712573d5f5f3e3d5ffd5b60203d106136f5576104009050516103e0525f610400526102e0516103e05111156117d2576103e0516102e0518082038281116136f55790509050610400526101e05163a9059cbb61042052336104405261040051610460526020610420604461043c5f855af1611785573d5f5f3e3d5ffd5b3d61179c57803b156136f5576001610480526117c6565b3d602081183d60201002188061042001610440116136f557610420518060011c6136f55761048052505b610480905051156136f5575b610200516370a082316104405230610460526020610440602461045c845afa6117fd573d5f5f3e3d5ffd5b60203d106136f557610440905051610420525f61044052610300516104205111156118bd5761042051610300518082038281116136f55790509050610440526102005163a9059cbb610460523361048052610440516104a0526020610460604461047c5f855af1611870573d5f5f3e3d5ffd5b3d61188757803b156136f55760016104c0526118b1565b3d602081183d60201002188061046001610480116136f557610460518060011c6136f5576104c052505b6104c0905051156136f5575b6101e05160405261034051606052610200516080526103805160a0525f60c0526102805160e0526118ef610480613421565b6104805161046052610200516101e051337f89310b9546249d6a727a9416efe73a839ea5fca0dd2f39b7dd5597f51dd8d57c6103405161048052610380516104a0526103c0516104c052610460516104e052610260516105005260a0610480a46103c05161048052610340516104a052610380516104c052610460516104e052610400516105005261044051610520525f6105405260e0610480f35b638aadf9ac8118612ec05760a4361034176136f5576004358060a01c6136f5576040526024358060a01c6136f5576060526044358060a01c6136f557608052005b63971f0c318118612ec057610124361034176136f5575f61026052611a13565b6304c388ae8118612ec057610144361034176136f557610124358060a01c6136f557610260525b6024358060a01c6136f5576101c0526044358060a01c6136f5576101e0526064358060a01c6136f557610200526084358060a01c6136f55761022052610104358060a01c6136f55761024052600854156136f5576101c051630dfe16816102c05260206102c060046102dc845afa611a8d573d5f5f3e3d5ffd5b3d602081183d6020100218806102c0016102e0116136f5576102c0518060a01c6136f5576103005250610300905051610280526101c05163d21220a7610320526020610320600461033c845afa611ae6573d5f5f3e3d5ffd5b3d602081183d60201002188061032001610340116136f557610320518060a01c6136f55761036052506103609050516102a0526101e0515f6102c0525f6002905b8060051b61028001518318611b415760016102c052611b4c565b600101818118611b27575b50506102c0519050156136f557610200515f6102c0525f6002905b8060051b61028001518318611b815760016102c052611b8c565b600101818118611b67575b50506102c0519050156136f557610200516101e051146136f557610220516370a082316102e052306103005260206102e060246102fc845afa611bd1573d5f5f3e3d5ffd5b60203d106136f5576102e09050516102c05260a435610220516370a082316103005233610320526020610300602461031c845afa611c11573d5f5f3e3d5ffd5b60203d106136f557610300905051808281188284100218905090506102e0526102e051156136f557610220516323b872dd61030052336103205230610340526102e051610360526020610300606461031c5f855af1611c72573d5f5f3e3d5ffd5b3d611c8957803b156136f557600161038052611cb3565b3d602081183d60201002188061030001610320116136f557610300518060011c6136f55761038052505b610380905051156136f5576102e051610220516370a082316103205230610340526020610320602461033c845afa611ced573d5f5f3e3d5ffd5b60203d106136f557610320905051808281188284100218905090506103005260206137b9610320396102205163095ea7b361034052610320516103605261030051610380526020610340604461035c5f855af1611d4c573d5f5f3e3d5ffd5b3d611d6357803b156136f55760016103a052611d8d565b3d602081183d60201002188061034001610360116136f557610340518060011c6136f5576103a052505b6103a0905051156136f557604036610340376103205163baa2abde6103805260406101e06103a05e610300516103e052604060c46104003761024051610440524261046052604061038060e461039c5f855af1611dec573d5f5f3e3d5ffd5b60403d106136f55761038090506040816104805e5060406104806103405e61034051156136f55761036051156136f5576102205163095ea7b361038052610320516103a0525f6103c0526020610380604461039c5f855af1611e50573d5f5f3e3d5ffd5b3d611e6757803b156136f55760016103e052611e91565b3d602081183d602010021880610380016103a0116136f557610380518060011c6136f5576103e052505b6103e0905051156136f557610220516370a082316103a052306103c05260206103a060246103bc845afa611ec7573d5f5f3e3d5ffd5b60203d106136f5576103a0905051610380525f6103a0526102c051610380511115611fa157610380516102c0518082038281116136f557905090506103a0526102205163a9059cbb6103c052336103e0526103a0516104005260206103c060446103dc5f855af1611f3a573d5f5f3e3d5ffd5b3d611f5157803b156136f557600161042052611f7b565b3d602081183d6020100218806103c0016103e0116136f5576103c0518060011c6136f55761042052505b610420905051156136f557610300516103a0518082038281116136f55790509050610300525b6101e05160405261034051606052610200516080526103605160a0525f60c0526102605160e052611fd36103e0613421565b6103e0516103c052610200516101e0516101c0517fa0308eb2e0c999720b61f80431609294c649e82c7e1aae19206307468afac668336103e05260406103406104005e610220516104405261030051610460526103c05161048052610240516104a05260e06103e0a460406103406103e05e6103c0516104205261030051610440526103a051610460526103a05115156104805260c06103e0f35b63b6ff49348118612ec0576024361034176136f5576004358060a01c6136f5576040525f60605260206060f35b63af90b6b38118612ec057346136f55760065460405260206040f35b6370b422bf8118612ec0576044361034176136f5576004358060a01c6136f5576040526024358060a01c6136f55760605260206137995f395f5163e6a4390560a0526040604060c05e602060a0604460bc845afa612117573d5f5f3e3d5ffd5b3d602081183d60201002188060a00160c0116136f55760a0518060a01c6136f557610100525061010090505160805260805161215c5760a03660a03760a060a061221e565b60603660a037608051630902f1ac610100526060610100600461011c845afa612187573d5f5f3e3d5ffd5b3d606081183d60601002188061010001610160116136f557610100518060701c6136f55761018052610120518060701c6136f5576101a052610140518060201c6136f5576101c0525061018090506060816101e05e5060606101e060a05e60805161010052601e6101205260a05160c0518082018060701c6136f55790509050610140526002610160526007546101805260a06101005bf35b63a9f701558118612ec0576064361034176136f5576004358060a01c6136f557610340526024358060a01c6136f5576103605260206137995f395f5163e6a439056103a05260406103406103c05e60206103a060446103bc845afa612287573d5f5f3e3d5ffd5b3d602081183d6020100218806103a0016103c0116136f5576103a0518060a01c6136f557610400525061040090505161038052610380516122d3576040366103a03760406103a0612369565b61038051630dfe16816103c05260206103c060046103dc845afa6122f9573d5f5f3e3d5ffd5b3d602081183d6020100218806103c0016103e0116136f5576103c0518060a01c6136f55761040052506104009050516103a052610380516103e05261038051610220526103a0516103405114610240526044356102605261235b6103c06130ad565b6103c0516104005260406103e05bf35b6302bc29fa8118612ec0576084361034176136f5576004358060a01c6136f557610340526024358060a01c6136f557610360526044358060a01c6136f5576103805261034051630dfe16816103c05260206103c060046103dc845afa6123d3573d5f5f3e3d5ffd5b3d602081183d6020100218806103c0016103e0116136f5576103c0518060a01c6136f55761040052506104009050516103a052602061034051610220526103a0516103605114610240526064356102605261242f6103c06130ad565b6103c0f35b636d15bcdd8118612ec0576064361034176136f5576004358060a01c6136f557610340526024358060a01c6136f5576103605260206137995f395f5163e6a439056103a05260406103406103c05e60206103a060446103bc845afa61249b573d5f5f3e3d5ffd5b3d602081183d6020100218806103a0016103c0116136f5576103a0518060a01c6136f557610400525061040090505161038052610380516124e7576040366103a03760406103a061257d565b61038051630dfe16816103c05260206103c060046103dc845afa61250d573d5f5f3e3d5ffd5b3d602081183d6020100218806103c0016103e0116136f5576103c0518060a01c6136f55761040052506104009050516103a052610380516103e05261038051610220526103a0516103405114610240526044356102605261256f6103c0613554565b6103c0516104005260406103e05bf35b633d17dd7b8118612ec0576084361034176136f5576004358060a01c6136f557610340526024358060a01c6136f557610360526044358060a01c6136f5576103805261034051630dfe16816103c05260206103c060046103dc845afa6125e7573d5f5f3e3d5ffd5b3d602081183d6020100218806103c0016103e0116136f5576103c0518060a01c6136f55761040052506104009050516103a052602061034051610220526103a051610360511461024052606435610260526126436103c0613554565b6103c0f35b63d56e9c3e8118612ec0576084361034176136f5576004358060a01c6136f557610220526024358060a01c6136f557610240526044358060a01c6136f5576102605261022051630dfe16816102a05260206102a060046102bc845afa6126b0573d5f5f3e3d5ffd5b3d602081183d6020100218806102a0016102c0116136f5576102a0518060a01c6136f5576102e052506102e0905051610280526040366102a037610220516040526102805161024051146060526127086102e0612ffc565b6102e06040816103205e5060406103206102a05e6102a05161272b576001612731565b6102c051155b1561278a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102e0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103005260406102e0612831565b610220516318160ddd610300526020610300600461031c845afa6127b0573d5f5f3e3d5ffd5b60203d106136f5576103009050516102e0526064356102a0518082028115838383041417156136f557905090506102e05180156136f55780820490509050610300526064356102c0518082028115838383041417156136f557905090506102e05180156136f557808204905090506103205260406103006103405e60406103405bf35b6359ad5d188118612ec0576044361034176136f5575f608052612875565b63605725918118612ec0576064361034176136f5576044358060a01c6136f5576080525b6004358060a01c6136f5576040526024358060a01c6136f557606052604051630dfe168160c052602060c0600460dc845afa6128b3573d5f5f3e3d5ffd5b3d602081183d60201002188060c00160e0116136f55760c0518060a01c6136f557610100525061010090505160a05260405163d21220a760e052602060e0600460fc845afa612904573d5f5f3e3d5ffd5b3d602081183d60201002188060e001610100116136f55760e0518060a01c6136f557610120525061012090505160c05260805160e0526080516129a55760206137d95f395f516347be091a610100526004610120526020610100602461011c845afa612972573d5f5f3e3d5ffd5b3d602081183d60201002188061010001610120116136f557610100518060a01c6136f557610140525061014090505160e0525b5f6101005260a051606051186129fd5760e0516376d697606101205260c051610140525f610160526020610120604461013c845afa6129e6573d5f5f3e3d5ffd5b60203d106136f55761012090505161010052612a41565b60e0516376d697606101205260a051610140525f610160526020610120604461013c845afa612a2e573d5f5f3e3d5ffd5b60203d106136f557610120905051610100525b61010051612a58575f610120526020610120612d06565b60603661012037604051630902f1ac610180526060610180600461019c845afa612a84573d5f5f3e3d5ffd5b3d606081183d606010021880610180016101e0116136f557610180518060701c6136f557610200526101a0518060701c6136f557610220526101c0518060201c6136f557610240525061020090506060816102605e5060606102606101205e61012051612af2576001612af8565b61014051155b15612b0c575f610180526020610180612d06565b61014051670de0b6b3a7640000810281670de0b6b3a76400008204186136f55790506101205180156136f557808204905090506101805260a05163313ce5676101c05260206101c060046101dc845afa612b68573d5f5f3e3d5ffd5b3d602081183d6020100218806101c0016101e0116136f5576101c0518060081c6136f55761020052506102009050516101a05260c05163313ce5676101e05260206101e060046101fc845afa612bc0573d5f5f3e3d5ffd5b3d602081183d6020100218806101e001610200116136f5576101e0518060081c6136f55761022052506102209050516101c0526101c0516101a05111612c54576101a0516101c0511115612c9d576101c0516101a0518082038281116136f55790509050604d81116136f55780600a0a90506101e052610180516101e05180156136f5578082049050905061018052612c9d565b6101a0516101c0518082038281116136f55790509050604d81116136f55780600a0a90506101e052610180516101e0518082028115838383041417156136f55790509050610180525b610180516101e05260c05160605118612cd3576101805180156136f557806ec097ce7bc90715b34b9f10000000000490506101e0525b610100516101e0518082028115838383041417156136f55790509050670de0b6b3a7640000810490506102005260206102005bf35b63ab96e0798118612ec0576024361034176136f55760206137d95f395f516347be091a6040526002606052602060406024605c845afa612d4a573d5f5f3e3d5ffd5b3d602081183d6020100218806040016060116136f5576040518060a01c6136f55760805250608090505133186136f557600754604052604051612d8e576001612d97565b60043560405118155b156136f5576004356007557f93b52349c4d31f07303dffb3b4523fab1a8877cda6fdd6575be8571408409da760043560605260206060a1600160605260206060f35b63ce5e84a38118612ec0576024361034176136f5576004358060011c6136f557610260523361016052612e0d610280612f94565b61028051156136f557610260516008557f27953659fcb1803736466ed86e25a6084336ece74b56f5bdae0a2d506c05d6f561026051610280526020610280a1005b6344d92a228118612ec057346136f55760065460405260206040f35b63a82ed9ec8118612ec057346136f55760206137b960403960206040f35b6359b76fe48118612ea457346136f55760075460405260206040f35b634a8c1fb48118612ec057346136f55760085460405260206040f35b5f5ffd5b5f6040525f5460a05260a05115612ef457604051600181116136f55760a0518160051b6060015260018101604052505b60055460c05260c05115612f805760c051635aa6e675610100526020610100600461011c845afa612f27573d5f5f3e3d5ffd5b3d602081183d60201002188061010001610120116136f557610100518060a01c6136f557610140525061014090505160e05260e05115612f8057604051600181116136f55760e0518160051b6060015260018101604052505b60405160208160051b01806040845e505050565b61016051612fa36101e0612ec4565b6101e05f610240525f8151600281116136f5578015612fe457905b8060051b6020840101518418612fd957600161024052612fe4565b600101818118612fbe575b50506102405190509050815250565b60055415815250565b606036608037604051630902f1ac60e052606060e0600460fc845afa613024573d5f5f3e3d5ffd5b3d606081183d60601002188060e001610140116136f55760e0518060701c6136f55761016052610100518060701c6136f55761018052610120518060201c6136f5576101a0525061016090506060816101c05e5060606101c060805e6040608060e05e60605161309c5760a05160e052608051610100525b60e051815261010051602082015250565b610260516130be575f81525061318e565b60403661028037604061022060405e6130d86102c0612ffc565b6102c06040816103005e5060406103006102805e610280516130fb576001613101565b6102a051155b1561310f575f81525061318e565b610260516103e58102816103e58204186136f55790506102c0526102c0516102a0518082028115838383041417156136f557905090506102e052610280516103e88102816103e88204186136f55790506102c0518082018281106136f55790509050610300526102e0516103005180156136f557808204905090508152505b565b61034051630dfe1681610440526020610440600461045c845afa6131b6573d5f5f3e3d5ffd5b3d602081183d60201002188061044001610460116136f557610440518060a01c6136f5576104805250610480905051610400526103405163d21220a76104a05260206104a060046104bc845afa61320f573d5f5f3e3d5ffd5b3d602081183d6020100218806104a0016104c0116136f5576104a0518060a01c6136f5576104e052506104e090505161042052610360515f610440525f6002905b8060051b6104000151831861326a57600161044052613275565b600101818118613250575b5050610440519050156136f557610380515f610440525f6002905b8060051b610400015183186132aa576001610440526132b5565b600101818118613290575b5050610440519050156136f5576103805161036051146136f557610340516103e05163e6a439056104405260406103606104605e6020610440604461045c845afa613302573d5f5f3e3d5ffd5b3d602081183d60201002188061044001610460116136f557610440518060a01c6136f5576104a052506104a0905051186136f55761040051610360511461044052610340516102205261044051610240526103a051610260526133666104806130ad565b610480516104605261046051156136f55761046051610480525f6104a052610440511561339b575f61048052610460516104a0525b6103405163022c0d9f6104e052608060406104806105005e6103c0516105405280610560525f6104c0526104c081610500015f81528051806020830101601f825f03163682375050601f19601f825160200101169050905081015050803b156136f5575f6104e060a46104fc5f855af1613417573d5f5f3e3d5ffd5b5061046051815250565b60e0516101005260e0516134945760206137d95f395f516347be091a610120526004610140526020610120602461013c845afa613460573d5f5f3e3d5ffd5b3d602081183d60201002188061012001610140116136f557610120518060a01c6136f5576101605250610160905051610100525b6101005163c660d11261014052604060406101605e6020610140604461015c845afa6134c2573d5f5f3e3d5ffd5b60203d106136f557610140905051610120526101005163c660d11261016052604060806101805e6020610160604461017c845afa613502573d5f5f3e3d5ffd5b60203d106136f5576101609050516101405260c0516135395761012051610140518082018281106136f55790509050815250613552565b6101205161014051808281188284110218905090508152505b565b6102605161356357600161356a565b6102605119155b15613598577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152506136c4565b60403661028037604061022060405e6135b26102c0612ffc565b6102c06040816103005e5060406103006102805e610280516135d55760016135db565b6102a051155b15613609577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152506136c4565b6102a051610260511115613640577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152506136c4565b61028051610260518082028115838383041417156136f557905090506103e88102816103e88204186136f55790506102c0526102a051610260518082038281116136f557905090506103e58102816103e58204186136f55790506102e0526102c0516102e05180156136f55780820490509050600181018181106136f55790508152505b565b6040516080518082028115838383041417156136f5579050905060605180156136f55780820490509050815250565b5f80fd04b32ec02ec007a4206e2ec02ec007e12ec02d08236b257f0fad2ec019ec0201056528512ec02dd92e88054a2ec0058d03692ec006c82ec02e6a24342ec020b7060e19cc2e4e209b2ec0222005c7001828332ec0062c2ec004012ec0264801e3855820873b38597f599ae022cfc8031b425c30bb8d6bd2953b07e43bfc961200f1af0d19375981186018a0a16576797065728300040100380000000000000000000000008909dc15e40173ff4699343b6eb8132c65e18ec60000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad240000000000000000000000007bcd6d471d1a068012a79347c7a944d1df01a1ae00000000000000000000000088a43bbdf9d098eec7bceda4e2494615dfd9bb9c