0 txs
10 calls
constructor
constructor(address vault)
functions
getAdapterId
viewfunction getAdapterId() view returns (bytes4)
getDebtAssets
viewfunction getDebtAssets() view returns (address[] assets, uint256[] amounts)
getManagedAssets
viewfunction getManagedAssets() view returns (address[] assets, uint256[] amounts)
getPoolPosition
viewfunction getPoolPosition(address pool) view returns (uint256)
getPools
viewfunction getPools() view returns (address[] pools)
getVault
viewfunction getVault() view returns (address)
supportsInterface
purefunction supportsInterface(bytes4 interfaceId) pure returns (bool)
closePosition
nonpayablefunction closePosition(address pool, uint256 limitPriceX96, uint256 swapCallData)
deposit
nonpayablefunction deposit(address asset, uint256 amount, int256 positionAmount, address pool, uint256 limitPriceX96, uint256 swapCallData)
depositAllExcept
nonpayablefunction depositAllExcept(address asset, uint256 except, int256 positionAmount, address pool, uint256 limitPriceX96, uint256 swapCallData)
emergencyWithdraw
nonpayablefunction emergencyWithdraw(address pool)
long
nonpayablefunction long(uint256 amount, address pool, uint256 limitPriceX96, uint256 swapCallData)
short
nonpayablefunction short(uint256 amount, address pool, uint256 limitPriceX96, uint256 swapCallData)
withdraw
nonpayablefunction withdraw(address asset, uint256 amount, address pool) returns (uint256 amountOut)
events
PoolAdded
event PoolAdded(address indexed pool)
PoolRemoved
event PoolRemoved(address indexed pool)
errors
LevvaPoolAdapter__NoPool
error LevvaPoolAdapter__NoPool()
LevvaPoolAdapter__NotAuthorized
error LevvaPoolAdapter__NotAuthorized()
LevvaPoolAdapter__NotSupported
error LevvaPoolAdapter__NotSupported()
LevvaPoolAdapter__OracleNotExists
error LevvaPoolAdapter__OracleNotExists(address base, address quote)
LevvaPoolAdapter__WrongLevvaPoolMode
error LevvaPoolAdapter__WrongLevvaPoolMode()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
WrongValue
error WrongValue()
ZeroAddress
error ZeroAddress()
creation bytecode
0x60a034608157601f6136f738819003918201601f19168301916001600160401b03831184841017608557808492602094604052833981010312608157516001600160a01b0381168082036081571560725760805260405161365d908161009a823960805181818161062e01526118d20152f35b63d92e233d60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a714610ff95750806325c6b8f714610f3d5780634fa9c4db14610e59578063673a2a1f14610d9e57806369328dec14610acc5780636ff1c9bc14610a84578063707992cb14610a2b57806380daddb81461078b57806381f85cae146106525780638d928af8146105e35780639199cba514610580578063aed0ce1a1461055a578063ba816146146103905763ecd658b4146100b8575f80fd5b3461038d57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261038d578054906100f282611815565b906100fc83611815565b92815b81811061011c57505050610118604051928392836111d0565b0390f35b73ffffffffffffffffffffffffffffffffffffffff61013a82611864565b90549060031b1c16604051907f55f57510000000000000000000000000000000000000000000000000000000008252306004830152608082602481845afa918215610382578592610352575b508151600481101561032557600303610263576040517f217a4b70000000000000000000000000000000000000000000000000000000008152602081600481855afa9081156102585761020e6102189360019695936060938a9161022a575b5073ffffffffffffffffffffffffffffffffffffffff610205888d6118a7565b91169052612ab1565b91015190516130c5565b61022282886118a7565b525b016100ff565b61024b915060203d8111610251575b61024381836112c0565b810190611348565b5f6101e5565b503d610239565b6040513d88823e3d90fd5b8151600481101561032557600214610280575b5050600190610224565b6040517fc55dae63000000000000000000000000000000000000000000000000000000008152602081600481855afa9081156102585761020e6102f59360019695936040938a91610307575b5073ffffffffffffffffffffffffffffffffffffffff6102ec888d6118a7565b911690526128b2565b6102ff82886118a7565b52905f610276565b61031f915060203d81116102515761024381836112c0565b5f6102cc565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b61037491925060803d811161037b575b61036c81836112c0565b810190611374565b905f610186565b503d610362565b6040513d87823e3d90fd5b80fd5b503461038d5773ffffffffffffffffffffffffffffffffffffffff6103b43661121e565b9390916103bf6118bb565b1692833b15610556576040517f40e27c9000000000000000000000000000000000000000000000000000000000815291859360056004850152602484015283604484015260648301528260848301528260a483015260c4820152818160e48183875af1801561050557610510575b50506020600491604051928380927f217a4b700000000000000000000000000000000000000000000000000000000082525afa9081156105055782916104e6575b50604051907f38d52e0f000000000000000000000000000000000000000000000000000000008252602082600481335afa9081156104db576104b79284926104ba575b506127b1565b80f35b6104d491925060203d6020116102515761024381836112c0565b905f6104b1565b6040513d85823e3d90fd5b6104ff915060203d6020116102515761024381836112c0565b5f61046e565b6040513d84823e3d90fd5b8161051a916112c0565b61052557815f61042d565b5080fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8480fd5b503461038d576104b761056c36611109565b9461057b9491949392936118bb565b611922565b503461038d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261038d57604060209173ffffffffffffffffffffffffffffffffffffffff6105d26110e6565b168152600183522054604051908152f35b503461038d57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261038d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461038d5773ffffffffffffffffffffffffffffffffffffffff6106763661121e565b9390916106816118bb565b1692833b15610556576040517f40e27c90000000000000000000000000000000000000000000000000000000008152918593600480850152602484015283604484015260648301528260848301528260a483015260c4820152818160e48183875af1801561050557610776575b50506020600491604051928380927fc55dae630000000000000000000000000000000000000000000000000000000082525afa9081156105055782916104e65750604051907f38d52e0f000000000000000000000000000000000000000000000000000000008252602082600481335afa9081156104db576104b79284926104ba57506127b1565b81610780916112c0565b61052557815f6106ee565b503461038d57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261038d578054906107c682611815565b906107d083611815565b92815b8181106107ec57505050610118604051928392836111d0565b73ffffffffffffffffffffffffffffffffffffffff61080a82611864565b90549060031b1c16604051907f55f57510000000000000000000000000000000000000000000000000000000008252306004830152608082602481845afa918215610382578592610a0b575b50815160048110156103255760021480156109ff575b15610939576040517f217a4b70000000000000000000000000000000000000000000000000000000008152602081600481855afa90811561025857869161091b575b5073ffffffffffffffffffffffffffffffffffffffff6108ce85896118a7565b9116905281516004811015610325579161090091600260019594145f146109125760606040830151925b015190612473565b61090a82886118a7565b525b016107d3565b606087926108f8565b610933915060203d81116102515761024381836112c0565b5f6108ae565b6040517fc55dae63000000000000000000000000000000000000000000000000000000008152602081600481855afa9081156102585786916109e1575b5073ffffffffffffffffffffffffffffffffffffffff61099685896118a7565b911690528151600481101561032557916109c891600360019594145f146109d85760406060830151925b015190612067565b6109d282886118a7565b5261090c565b604087926109c0565b6109f9915060203d81116102515761024381836112c0565b5f610976565b5060408201511561086c565b610a2491925060803d811161037b5761036c81836112c0565b905f610856565b503461038d57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261038d5760206040517f1543aa70000000000000000000000000000000000000000000000000000000008152f35b503461038d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261038d576104b7610abf6110e6565b610ac76118bb565b6113d9565b503461038d5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261038d57610b046110e6565b60443573ffffffffffffffffffffffffffffffffffffffff8116808203610d6f57610b2d6118bb565b604051927f217a4b70000000000000000000000000000000000000000000000000000000008452602084600481855afa9081156103825773ffffffffffffffffffffffffffffffffffffffff948692610d7b575b50841693168303610d73578360035b823b1561052557610bcb604051917f40e27c90000000000000000000000000000000000000000000000000000000008352600483019061133b565b60243560248201528160448201528160648201528160848201528160a48201528160c4820152818160e48183875af1801561050557610d5a575b5050604051927f70a08231000000000000000000000000000000000000000000000000000000008452306004850152602084602481845afa938415610382578594610d21575b50602491610c5d856080933390611e0a565b604051928380927f55f575100000000000000000000000000000000000000000000000000000000082523060048301525afa908115610d16578491610cf7575b50516004811015610cca576020935015610cbb575b50604051908152f35b610cc490611e6c565b5f610cb2565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b610d10915060803d60801161037b5761036c81836112c0565b5f610c9d565b6040513d86823e3d90fd5b9093506020813d602011610d52575b81610d3d602093836112c0565b81010312610d4e5751926024610c4b565b5f80fd5b3d9150610d30565b81610d64916112c0565b610d6f57835f610c05565b8380fd5b836002610b90565b85919250610d979060203d6020116102515761024381836112c0565b9190610b81565b503461038d57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261038d576040518091602081549283815201918180527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563915b818110610e2d5761011885610e19818703826112c0565b604051918291602083526020830190611187565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610e02565b5034610d4e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610d4e5773ffffffffffffffffffffffffffffffffffffffff610ea66110e6565b610eae6118bb565b16803b15610d4e575f809160e4604051809481937f40e27c900000000000000000000000000000000000000000000000000000000083526006600484015281602484015281604484015260243560648401528160848401528160a484015260443560c48401525af18015610f3257610f24575080f35b610f3091505f906112c0565b005b6040513d5f823e3d90fd5b34610d4e57610f4b36611109565b9394610f589391936118bb565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa908115610f32575f91610fc5575b50610f3096610fbf91611301565b90611922565b90506020813d602011610ff1575b81610fe0602093836112c0565b81010312610d4e5751610f30610fb1565b3d9150610fd3565b34610d4e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610d4e57600435907fffffffff000000000000000000000000000000000000000000000000000000008216809203610d4e57817f707992cb00000000000000000000000000000000000000000000000000000000602093149081156110bc575b8115611092575b5015158152f35b7f6c0c850c000000000000000000000000000000000000000000000000000000009150148361108b565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081149150611084565b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610d4e57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60c0910112610d4e5760043573ffffffffffffffffffffffffffffffffffffffff81168103610d4e5790602435906044359060643573ffffffffffffffffffffffffffffffffffffffff81168103610d4e57906084359060a43590565b90602080835192838152019201905f5b8181106111a45750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611197565b906111e390604083526040830190611187565b906020818303910152602080835192838152019201905f5b8181106112085750505090565b82518452602093840193909201916001016111fb565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6080910112610d4e576004359060243573ffffffffffffffffffffffffffffffffffffffff81168103610d4e57906044359060643590565b6020810190811067ffffffffffffffff82111761129357604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761129357604052565b9190820391821161130e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b90600a8210156105295752565b90816020910312610d4e575173ffffffffffffffffffffffffffffffffffffffff81168103610d4e5790565b90816080910312610d4e57604051906080820182811067ffffffffffffffff8211176112935760405280516004811015610d4e57825260208101519063ffffffff82168203610d4e576060916020840152604081015160408401520151606082015290565b73ffffffffffffffffffffffffffffffffffffffff8116604051907f55f575100000000000000000000000000000000000000000000000000000000082525f91306004820152608081602481855afa908115610f32575f916117de575b506040517f295a5212000000000000000000000000000000000000000000000000000000008152602081600481865afa908115610f32575f916117a3575b50600381101561052957600181036116ea5750516004811015610529576002146116df576040517fc55dae63000000000000000000000000000000000000000000000000000000008152602081600481855afa8015610f325773ffffffffffffffffffffffffffffffffffffffff915f916116c0575b5016905b803b15610d4e576040517f40e27c90000000000000000000000000000000000000000000000000000000008152600960048201525f60248201525f60448201525f60648201525f60848201525f60a48201525f60c48201525f8160e48183865af18015610f32576116ab575b50604051917f70a0823100000000000000000000000000000000000000000000000000000000835230600484015260208360248173ffffffffffffffffffffffffffffffffffffffff85165afa928315610d16578493611673575b50906115c76024936080933390611e0a565b604051928380927f55f575100000000000000000000000000000000000000000000000000000000082523060048301525afa908115610505578291611654575b505190600482101561162757501561161c5750565b61162590611e6c565b565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526021600452fd5b61166d915060803d60801161037b5761036c81836112c0565b5f611607565b9250906020833d6020116116a3575b8161168f602093836112c0565b81010312610d4e57915191906115c76115b5565b3d9150611682565b6116b89193505f906112c0565b5f915f61155a565b6116d9915060203d6020116102515761024381836112c0565b5f6114ea565b505061162590611e6c565b60020361177b57516004811015610529576003146116df576040517f217a4b70000000000000000000000000000000000000000000000000000000008152602081600481855afa8015610f325773ffffffffffffffffffffffffffffffffffffffff915f9161175c575b5016906114ee565b611775915060203d6020116102515761024381836112c0565b5f611754565b7fdcac4da8000000000000000000000000000000000000000000000000000000005f5260045ffd5b90506020813d6020116117d6575b816117be602093836112c0565b81010312610d4e57516003811015610d4e575f611474565b3d91506117b1565b6117f7915060803d60801161037b5761036c81836112c0565b5f611436565b67ffffffffffffffff81116112935760051b60200190565b9061181f826117fd565b61182c60405191826112c0565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061185a82946117fd565b0190602036910137565b5f5481101561187a575f805260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805182101561187a5760209160051b010190565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036118fa57565b7f71e29260000000000000000000000000000000000000000000000000000000005f5260045ffd5b919390929473ffffffffffffffffffffffffffffffffffffffff861691604051957f217a4b70000000000000000000000000000000000000000000000000000000008752602087600481875afa948515610f32575f975f96611dd3575b5073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff861681145f14611dcc576001955b6040517f55f575100000000000000000000000000000000000000000000000000000000081523060048201526080816024818a5afa908115610f32575f91611dad575b508051600481101561052957600114611d2e575b50600a871015610529576001871480611d25575b15611c6557604051907f38d52e0f000000000000000000000000000000000000000000000000000000008252602082600481335afa908115610f3257611a70925f926104ba57506127b1565b333b15610d4e576040517f19eacfeb0000000000000000000000000000000000000000000000000000000081523060048201528160248201528760448201525f8160648183335af18015610f3257611c50575b506040517f095ea7b300000000000000000000000000000000000000000000000000000000602080830191825273ffffffffffffffffffffffffffffffffffffffff8c16602484015260448084018b90528352908a90611b246064856112c0565b83519082865af189513d82611c34575b505015611bd7575b5050833b15611bd357611b869360e4938896938793604051998a9889977f40e27c90000000000000000000000000000000000000000000000000000000008952600489019061133b565b6024870152604486015260648501528260848501528260a485015260c48401525af1801561050557611bbe575b505061162590612bed565b611bc98280926112c0565b61038d5780611bb3565b8680fd5b611c2d91611c286040517f095ea7b30000000000000000000000000000000000000000000000000000000060208201528860248201528b604482015260448152611c226064826112c0565b82612c75565b612c75565b5f80611b3c565b909150611c485750813b15155b5f80611b34565b600114611c41565b611c5d9198505f906112c0565b5f965f611ac3565b50851580611d1c575b15611a70576040517fc55dae63000000000000000000000000000000000000000000000000000000008152602081600481895afa908115610f32575f91611cfd575b50604051907f38d52e0f000000000000000000000000000000000000000000000000000000008252602082600481335afa908115610f3257611cf8925f926104ba57506127b1565b611a70565b611d16915060203d6020116102515761024381836112c0565b5f611cb0565b505f8212611c6e565b505f8312611a24565b6040015115611d7757600a8710156105295760018714611d4f575b5f611a10565b7fb3529f40000000000000000000000000000000000000000000000000000000005f5260045ffd5b600a8710156105295786611d49577fb3529f40000000000000000000000000000000000000000000000000000000005f5260045ffd5b611dc6915060803d60801161037b5761036c81836112c0565b5f6119fc565b5f956119b9565b73ffffffffffffffffffffffffffffffffffffffff919650611e039060203d6020116102515761024381836112c0565b959061197f565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff92909216602483015260448083019390935291815261162591611c286064836112c0565b73ffffffffffffffffffffffffffffffffffffffff16805f52600160205260405f20548015612021577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811161130e575f547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811161130e57808203611fac575b5050505f548015611f7f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01611f2981611864565b73ffffffffffffffffffffffffffffffffffffffff82549160031b1b191690555f55805f5260016020525f60408120557f4106dfdaa577573db51c0ca93f766dbedfa0758faa2e7f5bcdb7c142be803c3f5f80a2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b611fe19173ffffffffffffffffffffffffffffffffffffffff611fd161200d93611864565b90549060031b1c16928391611864565b90919073ffffffffffffffffffffffffffffffffffffffff8084549260031b9316831b921b1916179055565b5f52600160205260405f20555f8080611ef3565b7f8017c2d0000000000000000000000000000000000000000000000000000000005f5260045ffd5b90816020910312610d4e576040519061206182611277565b51815290565b9073ffffffffffffffffffffffffffffffffffffffff8216926040517fd7f5cadf000000000000000000000000000000000000000000000000000000008152602081600481885afa8015610f32575f9061243f575b6120c7915042611301565b604051917f5b87ac0c000000000000000000000000000000000000000000000000000000008352602083600481895afa928315610f32575f9361241e575b50604051937f3d9c02ed0000000000000000000000000000000000000000000000000000000085526020856004818a5afa948515610f32575f956123ef575b509061215f6121576121659386516130c5565b9186516130c5565b90611301565b9381156123e65761219b9161217991612d62565b6040519061218682611277565b6c010000000000000000000000008252612e21565b604051907faf734b39000000000000000000000000000000000000000000000000000000008252602082600481895afa918215610f32575f926123b5575b506040517fafcbea840000000000000000000000000000000000000000000000000000000081526020816004818a5afa908115610f32575f91612381575b506122269061222d93516130c5565b90516130c5565b91604051917fc336714d000000000000000000000000000000000000000000000000000000008352602083600481895afa928315610f32575f9361234b575b5061227c600493602092516130c5565b95604051938480927f1cb5d3400000000000000000000000000000000000000000000000000000000082525afa918215610f32575f92612313575b506123109461215f61230a94936122ce93516130c5565b612303604051916122de83611277565b6c010000000000000000000000008352604051936122fb85611277565b5f8552613155565b8252612e4a565b516130c5565b90565b9291506020833d602011612343575b8161232f602093836112c0565b81010312610d4e57915190916123106122b7565b3d9150612322565b92506020833d602011612379575b81612366602093836112c0565b81010312610d4e5791519161227c61226c565b3d9150612359565b90506020813d6020116123ad575b8161239c602093836112c0565b81010312610d4e575161222d612217565b3d915061238f565b6123d891925060203d6020116123df575b6123d081836112c0565b810190612049565b905f6121d9565b503d6123c6565b50505050905090565b6121659291955061215761241461215f9260203d6020116123df576123d081836112c0565b9692935050612144565b61243891935060203d6020116123df576123d081836112c0565b915f612105565b506020813d60201161246b575b81612459602093836112c0565b81010312610d4e576120c790516120bc565b3d915061244c565b9073ffffffffffffffffffffffffffffffffffffffff8216926040517fd7f5cadf000000000000000000000000000000000000000000000000000000008152602081600481885afa8015610f32575f9061277d575b6124d3915042611301565b604051917f94ad0c48000000000000000000000000000000000000000000000000000000008352602083600481895afa928315610f32575f9361275c575b50604051937f411641240000000000000000000000000000000000000000000000000000000085526020856004818a5afa948515610f32575f9561272d575b509061215f6121576125639386516130c5565b9381156123e6576125779161217991612e73565b604051907f07cc1935000000000000000000000000000000000000000000000000000000008252602082600481895afa918215610f32575f9261270c575b506040517f1cb5d3400000000000000000000000000000000000000000000000000000000081526020816004818a5afa908115610f32575f916126d8575b506122269061260293516130c5565b91604051917f0f9c3816000000000000000000000000000000000000000000000000000000008352602083600481895afa928315610f32575f936126a2575b50612651600493602092516130c5565b95604051938480927fafcbea840000000000000000000000000000000000000000000000000000000082525afa918215610f32575f9261231357506123109461215f61230a94936122ce93516130c5565b92506020833d6020116126d0575b816126bd602093836112c0565b81010312610d4e57915191612651612641565b3d91506126b0565b90506020813d602011612704575b816126f3602093836112c0565b81010312610d4e57516126026125f3565b3d91506126e6565b61272691925060203d6020116123df576123d081836112c0565b905f6125b5565b6125639291955061215761275261215f9260203d6020116123df576123d081836112c0565b9692935050612550565b61277691935060203d6020116123df576123d081836112c0565b915f612511565b506020813d6020116127a9575b81612797602093836112c0565b81010312610d4e576124d390516124c8565b3d915061278a565b6040517f7dc0d1d0000000000000000000000000000000000000000000000000000000008152602081600481335afa8015610f325773ffffffffffffffffffffffffffffffffffffffff915f91612893575b5016818361281b818361281581612f2b565b86612fcc565b159283612876575b50505061282e575050565b9073ffffffffffffffffffffffffffffffffffffffff80927f5cc0649f000000000000000000000000000000000000000000000000000000005f52166004521660245260445ffd5b61288a935061288482612f2b565b90612fcc565b1581835f612823565b6128ac915060203d6020116102515761024381836112c0565b5f612803565b905f916040516128c181611277565b5f81525073ffffffffffffffffffffffffffffffffffffffff81166040517fd7f5cadf000000000000000000000000000000000000000000000000000000008152602081600481855afa8015610f32575f90612a7d575b612923915042611301565b908115612a1c5784156129a857906020600492604051938480927f07cc19350000000000000000000000000000000000000000000000000000000082525afa91821561038257612310949592612985575b5061297f9192612e73565b9061306a565b61297f92506129a29060203d6020116123df576123d081836112c0565b91612974565b6004939450602090604051948580927faf734b390000000000000000000000000000000000000000000000000000000082525afa908115610f3257612310935f926129f9575b5061297f9192612d62565b61297f9250612a169060203d6020116123df576123d081836112c0565b916129ee565b9050600492935060209150604051928380927faf734b390000000000000000000000000000000000000000000000000000000082525afa908115610f32575f91612a64575090565b612310915060203d6020116123df576123d081836112c0565b506020813d602011612aa9575b81612a97602093836112c0565b81010312610d4e576129239051612918565b3d9150612a8a565b604051612abd81611277565b5f90526040517fd7f5cadf0000000000000000000000000000000000000000000000000000000081529073ffffffffffffffffffffffffffffffffffffffff8116602083600481845afa928315610f32575f93612bb7575b50612b2260049342611301565b908115612b7457602090604051948580927f07cc19350000000000000000000000000000000000000000000000000000000082525afa908115610f3257612310935f92612985575061297f9192612e73565b905060209150604051928380927f07cc19350000000000000000000000000000000000000000000000000000000082525afa908115610f32575f91612a64575090565b92506020833d602011612be5575b81612bd2602093836112c0565b81010312610d4e57915191612b22612b15565b3d9150612bc5565b73ffffffffffffffffffffffffffffffffffffffff811690815f52600160205260405f2054612c71575f54906801000000000000000082101561129357611fe1826001612c3c94015f55611864565b5f54815f52600160205260405f20557f73cca62ab1b520c9715bf4e6c71e3e518c754e7148f65102f43289a7df0efea65f80a2565b5050565b905f602091828151910182855af115610f32575f513d612cf3575073ffffffffffffffffffffffffffffffffffffffff81163b155b612cb15750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b60011415612caa565b51906fffffffffffffffffffffffffffffffff82168203610d4e57565b90816040910312610d4e57604051906040820182811067ffffffffffffffff82111761129357612d5a91602091604052612d5281612cfc565b845201612cfc565b602082015290565b5f604051612d6f81611277565b52604051917f5cfbe12100000000000000000000000000000000000000000000000000000000835260408360048173ffffffffffffffffffffffffffffffffffffffff86165afa928315610f3257612310936fffffffffffffffffffffffffffffffff915f91612df2575b5051169160405192612deb84611277565b835261330f565b612e14915060403d604011612e1a575b612e0c81836112c0565b810190612d19565b5f612dda565b503d612e02565b9190604051612e2f81611277565b5f8152612e40819451925183611301565b918211610d4e5752565b9190604051612e5881611277565b5f8152809351915182019182811161130e578210610d4e5752565b5f604051612e8081611277565b52604051917f5cfbe12100000000000000000000000000000000000000000000000000000000835260408360048173ffffffffffffffffffffffffffffffffffffffff86165afa8015610f325760206fffffffffffffffffffffffffffffffff91612310955f91612efe575b500151169160405192612deb84611277565b612f17915060403d604011612e1a57612e0c81836112c0565b5f612eec565b519060ff82168203610d4e57565b602073ffffffffffffffffffffffffffffffffffffffff916004604051809481937f313ce567000000000000000000000000000000000000000000000000000000008352165afa8015610f32575f90612f92575b60ff915016604d811161130e57600a0a90565b506020813d602011612fc4575b81612fac602093836112c0565b81010312610d4e57612fbf60ff91612f1d565b612f7f565b3d9150612f9f565b6020929173ffffffffffffffffffffffffffffffffffffffff60649281809760405198899788967fae68676c0000000000000000000000000000000000000000000000000000000088526004880152166024860152166044840152165afa908115610f32575f9161303b575090565b90506020813d602011613062575b81613056602093836112c0565b81010312610d4e575190565b3d9150613049565b919061308a6040519161307c83611277565b5f83528294519051906130c5565b9052565b8115613098570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818309918181029384808510940393808503941461314b57836c0100000000000000000000000011156131395750906c01000000000000000000000000910990828211900360a01b910360601c1790565b634e487b71905260116020526024601cfd5b5050505060601c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff816c0100000000000000000000000009918160601b9182808510940393808503941461321e57838211156132065781906c0100000000000000000000000009815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b50634e487b715f52156003026011186020526024601cfd5b5090612310925061308e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000008209918160601b9182808510940393808503941461321e5783821115613206576c01000000000000000000000000829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b519062ffffff82168203610d4e57565b519076ffffffffffffffffffffffffffffffffffffffffffffff82168203610d4e57565b9060e073ffffffffffffffffffffffffffffffffffffffff925f60405161333581611277565b526004604051809581937fcff0ab96000000000000000000000000000000000000000000000000000000008352165afa918215610f32575f92613436575b5080613405613429602062ffffff604061340a61297f976134056133e48b6133df6123109e8888519a8b946133a786611277565b6f01e187e000000000000000000000000086520151166133d8620f42408a51926133d084611277565b5f8452613155565b815261306a565b613523565b8451906133f082611277565b6c010000000000000000000000008252612e4a565b613543565b97015116613422620f4240604051926133d084611277565b8152613523565b604051906133f082611277565b90915060e0813d60e01161351b575b8161345260e093836112c0565b81010312610d4e576040519160e0830183811067ffffffffffffffff82111761129357613429602062ffffff604061340a866134056133e46123109c6133df9c61350360c061297f9e6134059d8a526134aa81612f1d565b84526134b78c82016132db565b8c8501526134c68a82016132db565b8a8501526134d6606082016132db565b60608501526134e7608082016132db565b60808501526134f860a082016132eb565b60a0850152016132eb565b60c08201529c509c5050509750505050505050613373565b3d9150613445565b919061308a6040519161353583611277565b5f835282945190519061322a565b5f60405161355081611277565b52517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000810190811161130e576c010000000000000000000000008110156135ff576c0100000000000000000000000091829060038110156135f6578091925b5f935b8385036135d0575050505050604051906135cb82611277565b815290565b6001906135e6828798969701848987030261308e565b0260601c809401950193926135b2565b600391926135af565b7f98d4901c000000000000000000000000000000000000000000000000000000005f5260045ffdfea264697066735822122041542de736ea99f1a4293557364178e6e8ecd609438cb70353ddacd5a1dc5e0564736f6c634300081c0033000000000000000000000000d78740986c91bb12959859288899b1704bb615b2