Files
tycho-protocol-sdk/evm/out/CurveAdapter.sol/CurveAdapter.json
2025-09-16 11:31:19 +02:00

1 line
79 KiB
JSON

{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"getCapabilities","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"capabilities","type":"uint8[]","internalType":"enum ISwapAdapterTypes.Capability[]"}],"stateMutability":"pure"},{"type":"function","name":"getLimits","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"}],"outputs":[{"name":"limits","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPoolIds","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"pure"},{"type":"function","name":"getTokens","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"price","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"specifiedAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"prices","type":"tuple[]","internalType":"struct ISwapAdapterTypes.Fraction[]","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"poolId","type":"bytes32","internalType":"bytes32"},{"name":"sellToken","type":"address","internalType":"address"},{"name":"buyToken","type":"address","internalType":"address"},{"name":"side","type":"uint8","internalType":"enum ISwapAdapterTypes.OrderSide"},{"name":"specifiedAmount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"trade","type":"tuple","internalType":"struct ISwapAdapterTypes.Trade","components":[{"name":"calculatedAmount","type":"uint256","internalType":"uint256"},{"name":"gasUsed","type":"uint256","internalType":"uint256"},{"name":"price","type":"tuple","internalType":"struct ISwapAdapterTypes.Fraction","components":[{"name":"numerator","type":"uint256","internalType":"uint256"},{"name":"denominator","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"nonpayable"},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LimitExceeded","inputs":[{"name":"limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotImplemented","inputs":[{"name":"reason","type":"string","internalType":"string"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Unavailable","inputs":[{"name":"reason","type":"string","internalType":"string"}]}],"bytecode":{"object":"0x60808060405234601557611d11908161001a8239f35b5f80fdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c90816323eeca01146107d05750806348bd7dfd1461073b5780638307c655146106d5578063a9270fbe146102c7578063aad6e488146101fd5763ecbbc0331461006a575f61000f565b346101f95760203660031901126101f95761008960043560601c610cfc565b602081016100978151610c9d565b5f925f5b835181101561012f5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036100cb838551610939565b511614610126575b6001905f516020611cbc5f395f51905f52828060a01b036100f5838651610939565b51161461012157818060a01b0361010d828551610939565b51166101198286610925565b525b0161009b565b61011b565b600194506100d3565b5050915f146101f3578051600181018091116101df5761014e90610c9d565b915f5b8251811015610182576001906001600160a01b0361016f8285610925565b511661017b8287610925565b5201610151565b50506101905f915183610925565b525b6040518091602082016020835281518091526020604084019201905f5b8181106101bd575050500390f35b82516001600160a01b03168452859450602093840193909201916001016101af565b634e487b7160e01b5f52601160045260245ffd5b50610192565b5f80fd5b346101f95760803660031901126101f957610216610824565b5061021f61083a565b5060643567ffffffffffffffff81116101f957366023820112156101f95780600401359060246020610250846108dc565b61025d60405191826108ba565b848152019260051b820101903682116101f957602401915b8183106102b757604051631d04569d60e21b81526020600482015260126024820152714375727665416461707465722e707269636560701b6044820152606490fd5b8235815260209283019201610275565b346101f9576102d536610850565b9160601c9181815f926102e786610cfc565b926001600160a01b03166105f1575060208201935f5b85518110156105e6575f516020611cbc5f395f51905f5260018060a01b03610326838751610939565b51161480156105b6575b61033c576001016102fd565b835161037496505f516020611cbc5f395f51905f52925082916001600160a01b03916103689190610939565b5116146105ad57610ffd565b9091604051926103856060856108ba565b6002845260208401926040368537604051634903b0d160e01b81526001600160801b0383166004820152602081602481875afa5f9181610579575b506104ee57506040519162cb501b60e31b8352600f0b6004830152602082602481865afa80156104b0575f906104bb575b6020925060011c610401866108f4565b5260246040518094819362cb501b60e31b8352600f0b60048301525afa9081156104b0575f9161047e575b5060011c61043983610915565b52905b604051918291602083019060208452518091526040830191905f5b818110610465575050500390f35b8251845285945060209384019390920191600101610457565b90506020813d6020116104a8575b81610499602093836108ba565b810103126101f957518361042c565b3d915061048c565b6040513d5f823e3d90fd5b506020823d6020116104e6575b816104d5602093836108ba565b810103126101f957602091516103f1565b3d91506104c8565b602092506001600160801b039160249160011c61050a886108f4565b526040519485938492634903b0d160e01b84521660048301525afa9081156104b0575f91610547575b5060011c61054083610915565b529061043c565b90506020813d602011610571575b81610562602093836108ba565b810103126101f9575183610533565b3d9150610555565b9091506020813d6020116105a5575b81610595602093836108ba565b810103126101f9575190876103c0565b3d9150610588565b60019350610ffd565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036105de838751610939565b511614610330565b506103749450610ffd565b9093906001600160a01b03161561060d575b9261037493610ffd565b60208201935f5b85518110156106c9575f516020611cbc5f395f51905f5260018060a01b0361063d838751610939565b5116148015610699575b61065357600101610614565b835161037496505f516020611cbc5f395f51905f5293925083916001600160a01b03916106809190610939565b511614610690575b909350610603565b60019350610688565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036106c1838751610939565b511614610647565b50906103749450610688565b346101f95760a03660031901126101f9576106ee610824565b6106f661083a565b6064359160028310156101f9576080926107169260843592600435610957565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101f95761074936610850565b50505060405161075a6060826108ba565b600281526020810160403682376001610772836108f4565b52604051906020820192602083525180935260408201905f935b8085106107995783830384f35b9091825190600a8210156107bc576020816001938293520193019401939061078c565b634e487b7160e01b5f52602160045260245ffd5b346101f95760403660031901126101f957631d04569d60e21b815260206004820152601760248201527f4375727665416461707465722e676574506f6f6c4964730000000000000000006044820152606490fd5b602435906001600160a01b03821682036101f957565b604435906001600160a01b03821682036101f957565b60609060031901126101f957600435906024356001600160a01b03811681036101f957906044356001600160a01b03811681036101f95790565b6040810190811067ffffffffffffffff8211176108a657604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176108a657604052565b67ffffffffffffffff81116108a65760051b60200190565b8051156109015760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156109015760400190565b80518210156109015760209160051b010190565b9060088110156109015760051b0190565b919082039182116101df57565b9394929194604051956060870187811067ffffffffffffffff8211176108a6576040525f87525f602088015260405161098f8161088a565b5f81525f60208201526040880152868215610c9257506040519260e0840184811067ffffffffffffffff8211176108a65760405260208401966040850160608601945f865260808701945f865260c08801935f855260601c9485895260018060a01b031690818c5260018060a01b03169182845260a0890152610a125f95610cfc565b93610a268560018060a01b038b5116610e7a565b15159052610bad575060208201985f5b8a51811015610b9d575f516020611cbc5f395f51905f5260018060a01b03610a5f838751610939565b5116148015610b6d575b610a7557600101610a36565b610ac095969798999a505f516020611cbc5f395f51905f5290818352610aa360018060a01b03918651610939565b511614610b64575b5190516001600160a01b039081169116610ffd565b600f9291920b9052600f0b90525a9160028110156107bc57610b0657610af5610aff92610aec836111b3565b86525a9061094a565b6020850152611721565b6040830152565b60405163643c60f360e01b815260206004820152602f60248201527f4f72646572536964652e427579206973206e6f7420617661696c61626c65206660448201526e37b9103a3434b99030b230b83a32b960891b6064820152608490fd5b60019350610aab565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b03610b95838751610939565b511614610a69565b50610ac094959697989950610aab565b15610bc1575b610ac0939495969798610aab565b60208201985f5b8a51811015610c82575f516020611cbc5f395f51905f5260018060a01b03610bf1838751610939565b5116148015610c52575b610c0757600101610bc8565b610ac095969798999a505f516020611cbc5f395f51905f5290818452610c3560018060a01b03918651610939565b511614610c49575b98979695949350610bb3565b60019350610c3d565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b03610c7a838751610939565b511614610bfb565b50610ac094959697989950610c3d565b955050505050915090565b90610ca7826108dc565b610cb460405191826108ba565b8281528092610cc5601f19916108dc565b0190602036910137565b908160209103126101f957516001600160a01b03811681036101f95790565b5f1981146101df5760010190565b90604051610d098161088a565b604051610100610d1981836108ba565b3682378152602081015f815281935f92610d32826119c0565b610ddb57925b60088110610d47575b50505050565b60405163c661065760e01b815260048101829052906020826024816001600160a01b0387165afa5f9281610dab575b50610d815750610d41565b600191610d8f828751610939565b90838060a01b03169052610da38451610cee565b845201610d38565b610dcd91935060203d8111610dd4575b610dc581836108ba565b810190610ccf565b915f610d76565b503d610dbb565b925b60088110610deb5750505050565b60405163046e8dd760e31b81526001600160801b038216600f0b6004820152906020826024816001600160a01b0387165afa5f9281610e5a575b50610e305750610d41565b600191610e3e828751610939565b90838060a01b03169052610e528451610cee565b845201610ddd565b610e7391935060203d8111610dd457610dc581836108ba565b915f610e25565b815151602491906001600160a01b03165f516020611cbc5f395f51905f52148015610fd5575b15610fcb57602060ff60015b1693610ec08560018060a01b039251610939565b516040516370a0823160e01b81526001600160a01b03909416600485018190529394859290918391165afa9182156104b0575f92610f96575b50606460ff91602093941590815f14610f8e575f915b15610f8557600a6001965b85604051988997889663556d6e9f60e01b88521660048701521660248501520460448301525afa9081610f56575b50610f5257600190565b5f90565b6020813d602011610f7d575b81610f6f602093836108ba565b810103126101f95751610f48565b3d9150610f62565b600a5f96610f1a565b600191610f0f565b91506020823d602011610fc3575b81610fb1602093836108ba565b810103126101f9579051906064610ef9565b3d9150610fa4565b602060ff5f610eac565b508251516001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214610ea0565b5f94939192918590846001600160a01b0384165f516020611cbc5f395f51905f52148061112a575b61110e575b6001600160a01b03165f516020611cbc5f395f51905f52149081611105575b506110e9575b5f955b60208401518710156110e05783516001600160a01b0390611074908990610939565b516001600160a01b03851691160361109f575060016001600160801b038716600f0b965b0195611052565b9560018060a01b036110b2828651610939565b51166001600160a01b038616146110cc575b600190611098565b6001600160801b038116600f0b91506110c4565b95509392505050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2935061104f565b9050155f611049565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2935061102a565b508115611025565b3d1561116c573d9067ffffffffffffffff82116108a65760405191611161601f8201601f1916602001846108ba565b82523d5f602084013e565b606090565b1561117857565b60405162461bcd60e51b8152602060048201526013602482015272115d1a081d1c985b9cd9995c8819985a5b1959606a1b6044820152606490fd5b6040810180516020830180515f959447946001600160a01b039485169490938893909116905f516020611cbc5f395f51905f5286036116b85747965b60c0840151156114305750516001600160a01b03165f516020611cbc5f395f51905f52036113735750805160a08201516060830151608090930151600f90810b93900b916001600160a01b0316803b1561136457604051630f7c084960e21b8152600f93840b60048201529390920b6024840152604483018190525f6064840152839183916084918391905af180156113685761134f575b50505f516020611cbc5f395f51905f52905b516001600160a01b0316036112ce57506112b66112cc914761094a565b9280808086335af16112c6611132565b50611171565b565b926040516370a0823160e01b8152306004820152602081602481885afa918215611343579161130f575b506112cc916113069161094a565b80933390611b9e565b90506020813d60201161133b575b8161132a602093836108ba565b810103126101f957516112cc6112f8565b3d915061131d565b604051903d90823e3d90fd5b81611359916108ba565b61136457845f611287565b8480fd5b6040513d84823e3d90fd5b9061139b60a082019261138984513033846119f9565b60018060a01b03835116845191611a42565b60018060a01b0381511660806060830151600f0b920151600f0b925190803b1561136457604051630f7c084960e21b8152600f93840b60048201529390920b602484015260448301525f606483015282908290818381608481015b03925af180156113685761141b575b50505f516020611cbc5f395f51905f5290611299565b81611425916108ba565b61136457845f611405565b90916001600160801b03606085015116915f516020611cbc5f395f51905f526001600160801b036080870151169460018060a01b03905116145f146114d2575050825160a090930151926001600160a01b0316803b156113645760405163ce7d650360e01b815260048101929092526024820192909252604481018390525f6064820152600160848201523060a4820152918391839182908160c481016113f6565b9094506114fe60a085939501956114ec87513033846119f9565b60018060a01b03845116875191611a42565b81518551906001600160a01b0316803b156101f95760405163ce7d650360e01b8152600481018790526024810186905260448101929092525f60648301819052600160848401523060a484015290829060c490829084905af19081611699575b50908a95949392916115cf575b50519251926001600160a01b0316803b15611364578492836084926040519687958694630b68372160e31b86526004860152602485015260448401528160648401525af180156113685761141b5750505f516020611cbc5f395f51905f5290611299565b6115de9192939495504761094a565b8015611612576115f78a80808085335af16112c6611132565b806116075790899493929161156b565b985050505050505050565b506040516370a0823160e01b81523060048201526020816024818a5afa801561168e5788908b90611658575b611648925061094a565b611653813389611b9e565b6115f7565b50506020813d602011611686575b81611673602093836108ba565b810103126101f95787611648915161163e565b3d9150611666565b6040513d8c823e3d90fd5b6116ab9196959493929b505f906108ba565b5f9990919293945f61155e565b6040516370a0823160e01b81523060048201529350602084602481895afa80156104b05789945f916116ec575b50966111ef565b9450506020843d602011611719575b81611708602093836108ba565b810103126101f9578893515f6116e5565b3d91506116fb565b60405161172d8161088a565b5f81525f60208201525060608101906001600160801b0382511660808201906001600160801b0382511660c084015115155f146118f557508251604051634903b0d160e01b81526004810192909252602090829060249082906001600160a01b03165afa5f91816118c1575b506118b0575060018060a01b038251169060208451600f0b60246040518095819362cb501b60e31b835260048301525afa9182156104b0575f9261187b575b506064620186a060209304935b5194519151604051635e0d443f60e01b8152600f93840b6004820152920b602483015260448201849052909384919082906001600160a01b03165afa9182156104b0575f92611847575b506040519161183d8361088a565b8252602082015290565b9091506020813d602011611873575b81611863602093836108ba565b810103126101f95751905f61182f565b3d9150611856565b91506020823d6020116118a8575b81611896602093836108ba565b810103126101f95790519060646117d8565b3d9150611889565b906064620186a060209304936117e5565b9091506020813d6020116118ed575b816118dd602093836108ba565b810103126101f95751905f611799565b3d91506118d0565b8351604051634903b0d160e01b81526004810184905292955091925090602090839060249082906001600160a01b03165afa9182156104b0575f9261198b575b506064620186a0602093049360018060a01b0390511694604051958693849263556d6e9f60e01b8452600484015260248301528560448301525afa9182156104b0575f9261184757506040519161183d8361088a565b91506020823d6020116119b8575b816119a6602093836108ba565b810103126101f9579051906064611935565b3d9150611999565b604051634903b0d160e01b81525f600482015290602090829060249082906001600160a01b03165afa9081610f565750610f5257600190565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526112cc91611a3d6084836108ba565b611bf2565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830181905294919390831691602085604481865afa9485156104b0575f95611b6a575b5084018094116101df5760405163095ea7b360e01b602082019081526001600160a01b039290921660248201526044808201959095529384525f908190611acd6064876108ba565b85519082855af190611add611132565b82611b38575b5081611b2d575b5015611af557505050565b611a3d6112cc936040519063095ea7b360e01b602083015260248201525f604482015260448152611b276064826108ba565b82611bf2565b90503b15155f611aea565b80519192508115918215611b50575b5050905f611ae3565b611b639250602080918301019101611bda565b5f80611b47565b9094506020813d602011611b96575b81611b86602093836108ba565b810103126101f95751935f611a85565b3d9150611b79565b60405163a9059cbb60e01b60208201526001600160a01b039290921660248301526044808301939093529181526112cc91611a3d6064836108ba565b908160209103126101f9575180151581036101f95790565b5f80611c1a9260018060a01b03169360208151910182865af1611c13611132565b9083611c5d565b8051908115159182611c42575b5050611c305750565b635274afe760e01b5f5260045260245ffd5b611c559250602080918301019101611bda565b155f80611c27565b90611c815750805115611c7257805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580611cb2575b611c92575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15611c8a56fe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea264697066735822122095b2866d1bfb6558995f95f5311386e755a500933ce3b93e801eddc460105df664736f6c634300081b0033","sourceMap":"630:19263:50:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f3560e01c90816323eeca01146107d05750806348bd7dfd1461073b5780638307c655146106d5578063a9270fbe146102c7578063aad6e488146101fd5763ecbbc0331461006a575f61000f565b346101f95760203660031901126101f95761008960043560601c610cfc565b602081016100978151610c9d565b5f925f5b835181101561012f5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036100cb838551610939565b511614610126575b6001905f516020611cbc5f395f51905f52828060a01b036100f5838651610939565b51161461012157818060a01b0361010d828551610939565b51166101198286610925565b525b0161009b565b61011b565b600194506100d3565b5050915f146101f3578051600181018091116101df5761014e90610c9d565b915f5b8251811015610182576001906001600160a01b0361016f8285610925565b511661017b8287610925565b5201610151565b50506101905f915183610925565b525b6040518091602082016020835281518091526020604084019201905f5b8181106101bd575050500390f35b82516001600160a01b03168452859450602093840193909201916001016101af565b634e487b7160e01b5f52601160045260245ffd5b50610192565b5f80fd5b346101f95760803660031901126101f957610216610824565b5061021f61083a565b5060643567ffffffffffffffff81116101f957366023820112156101f95780600401359060246020610250846108dc565b61025d60405191826108ba565b848152019260051b820101903682116101f957602401915b8183106102b757604051631d04569d60e21b81526020600482015260126024820152714375727665416461707465722e707269636560701b6044820152606490fd5b8235815260209283019201610275565b346101f9576102d536610850565b9160601c9181815f926102e786610cfc565b926001600160a01b03166105f1575060208201935f5b85518110156105e6575f516020611cbc5f395f51905f5260018060a01b03610326838751610939565b51161480156105b6575b61033c576001016102fd565b835161037496505f516020611cbc5f395f51905f52925082916001600160a01b03916103689190610939565b5116146105ad57610ffd565b9091604051926103856060856108ba565b6002845260208401926040368537604051634903b0d160e01b81526001600160801b0383166004820152602081602481875afa5f9181610579575b506104ee57506040519162cb501b60e31b8352600f0b6004830152602082602481865afa80156104b0575f906104bb575b6020925060011c610401866108f4565b5260246040518094819362cb501b60e31b8352600f0b60048301525afa9081156104b0575f9161047e575b5060011c61043983610915565b52905b604051918291602083019060208452518091526040830191905f5b818110610465575050500390f35b8251845285945060209384019390920191600101610457565b90506020813d6020116104a8575b81610499602093836108ba565b810103126101f957518361042c565b3d915061048c565b6040513d5f823e3d90fd5b506020823d6020116104e6575b816104d5602093836108ba565b810103126101f957602091516103f1565b3d91506104c8565b602092506001600160801b039160249160011c61050a886108f4565b526040519485938492634903b0d160e01b84521660048301525afa9081156104b0575f91610547575b5060011c61054083610915565b529061043c565b90506020813d602011610571575b81610562602093836108ba565b810103126101f9575183610533565b3d9150610555565b9091506020813d6020116105a5575b81610595602093836108ba565b810103126101f9575190876103c0565b3d9150610588565b60019350610ffd565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036105de838751610939565b511614610330565b506103749450610ffd565b9093906001600160a01b03161561060d575b9261037493610ffd565b60208201935f5b85518110156106c9575f516020611cbc5f395f51905f5260018060a01b0361063d838751610939565b5116148015610699575b61065357600101610614565b835161037496505f516020611cbc5f395f51905f5293925083916001600160a01b03916106809190610939565b511614610690575b909350610603565b60019350610688565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b036106c1838751610939565b511614610647565b50906103749450610688565b346101f95760a03660031901126101f9576106ee610824565b6106f661083a565b6064359160028310156101f9576080926107169260843592600435610957565b6020604080519280518452828101518385015201518051604084015201516060820152f35b346101f95761074936610850565b50505060405161075a6060826108ba565b600281526020810160403682376001610772836108f4565b52604051906020820192602083525180935260408201905f935b8085106107995783830384f35b9091825190600a8210156107bc576020816001938293520193019401939061078c565b634e487b7160e01b5f52602160045260245ffd5b346101f95760403660031901126101f957631d04569d60e21b815260206004820152601760248201527f4375727665416461707465722e676574506f6f6c4964730000000000000000006044820152606490fd5b602435906001600160a01b03821682036101f957565b604435906001600160a01b03821682036101f957565b60609060031901126101f957600435906024356001600160a01b03811681036101f957906044356001600160a01b03811681036101f95790565b6040810190811067ffffffffffffffff8211176108a657604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176108a657604052565b67ffffffffffffffff81116108a65760051b60200190565b8051156109015760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156109015760400190565b80518210156109015760209160051b010190565b9060088110156109015760051b0190565b919082039182116101df57565b9394929194604051956060870187811067ffffffffffffffff8211176108a6576040525f87525f602088015260405161098f8161088a565b5f81525f60208201526040880152868215610c9257506040519260e0840184811067ffffffffffffffff8211176108a65760405260208401966040850160608601945f865260808701945f865260c08801935f855260601c9485895260018060a01b031690818c5260018060a01b03169182845260a0890152610a125f95610cfc565b93610a268560018060a01b038b5116610e7a565b15159052610bad575060208201985f5b8a51811015610b9d575f516020611cbc5f395f51905f5260018060a01b03610a5f838751610939565b5116148015610b6d575b610a7557600101610a36565b610ac095969798999a505f516020611cbc5f395f51905f5290818352610aa360018060a01b03918651610939565b511614610b64575b5190516001600160a01b039081169116610ffd565b600f9291920b9052600f0b90525a9160028110156107bc57610b0657610af5610aff92610aec836111b3565b86525a9061094a565b6020850152611721565b6040830152565b60405163643c60f360e01b815260206004820152602f60248201527f4f72646572536964652e427579206973206e6f7420617661696c61626c65206660448201526e37b9103a3434b99030b230b83a32b960891b6064820152608490fd5b60019350610aab565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b03610b95838751610939565b511614610a69565b50610ac094959697989950610aab565b15610bc1575b610ac0939495969798610aab565b60208201985f5b8a51811015610c82575f516020611cbc5f395f51905f5260018060a01b03610bf1838751610939565b5116148015610c52575b610c0757600101610bc8565b610ac095969798999a505f516020611cbc5f395f51905f5290818452610c3560018060a01b03918651610939565b511614610c49575b98979695949350610bb3565b60019350610c3d565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260018060a01b03610c7a838751610939565b511614610bfb565b50610ac094959697989950610c3d565b955050505050915090565b90610ca7826108dc565b610cb460405191826108ba565b8281528092610cc5601f19916108dc565b0190602036910137565b908160209103126101f957516001600160a01b03811681036101f95790565b5f1981146101df5760010190565b90604051610d098161088a565b604051610100610d1981836108ba565b3682378152602081015f815281935f92610d32826119c0565b610ddb57925b60088110610d47575b50505050565b60405163c661065760e01b815260048101829052906020826024816001600160a01b0387165afa5f9281610dab575b50610d815750610d41565b600191610d8f828751610939565b90838060a01b03169052610da38451610cee565b845201610d38565b610dcd91935060203d8111610dd4575b610dc581836108ba565b810190610ccf565b915f610d76565b503d610dbb565b925b60088110610deb5750505050565b60405163046e8dd760e31b81526001600160801b038216600f0b6004820152906020826024816001600160a01b0387165afa5f9281610e5a575b50610e305750610d41565b600191610e3e828751610939565b90838060a01b03169052610e528451610cee565b845201610ddd565b610e7391935060203d8111610dd457610dc581836108ba565b915f610e25565b815151602491906001600160a01b03165f516020611cbc5f395f51905f52148015610fd5575b15610fcb57602060ff60015b1693610ec08560018060a01b039251610939565b516040516370a0823160e01b81526001600160a01b03909416600485018190529394859290918391165afa9182156104b0575f92610f96575b50606460ff91602093941590815f14610f8e575f915b15610f8557600a6001965b85604051988997889663556d6e9f60e01b88521660048701521660248501520460448301525afa9081610f56575b50610f5257600190565b5f90565b6020813d602011610f7d575b81610f6f602093836108ba565b810103126101f95751610f48565b3d9150610f62565b600a5f96610f1a565b600191610f0f565b91506020823d602011610fc3575b81610fb1602093836108ba565b810103126101f9579051906064610ef9565b3d9150610fa4565b602060ff5f610eac565b508251516001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214610ea0565b5f94939192918590846001600160a01b0384165f516020611cbc5f395f51905f52148061112a575b61110e575b6001600160a01b03165f516020611cbc5f395f51905f52149081611105575b506110e9575b5f955b60208401518710156110e05783516001600160a01b0390611074908990610939565b516001600160a01b03851691160361109f575060016001600160801b038716600f0b965b0195611052565b9560018060a01b036110b2828651610939565b51166001600160a01b038616146110cc575b600190611098565b6001600160801b038116600f0b91506110c4565b95509392505050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2935061104f565b9050155f611049565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2935061102a565b508115611025565b3d1561116c573d9067ffffffffffffffff82116108a65760405191611161601f8201601f1916602001846108ba565b82523d5f602084013e565b606090565b1561117857565b60405162461bcd60e51b8152602060048201526013602482015272115d1a081d1c985b9cd9995c8819985a5b1959606a1b6044820152606490fd5b6040810180516020830180515f959447946001600160a01b039485169490938893909116905f516020611cbc5f395f51905f5286036116b85747965b60c0840151156114305750516001600160a01b03165f516020611cbc5f395f51905f52036113735750805160a08201516060830151608090930151600f90810b93900b916001600160a01b0316803b1561136457604051630f7c084960e21b8152600f93840b60048201529390920b6024840152604483018190525f6064840152839183916084918391905af180156113685761134f575b50505f516020611cbc5f395f51905f52905b516001600160a01b0316036112ce57506112b66112cc914761094a565b9280808086335af16112c6611132565b50611171565b565b926040516370a0823160e01b8152306004820152602081602481885afa918215611343579161130f575b506112cc916113069161094a565b80933390611b9e565b90506020813d60201161133b575b8161132a602093836108ba565b810103126101f957516112cc6112f8565b3d915061131d565b604051903d90823e3d90fd5b81611359916108ba565b61136457845f611287565b8480fd5b6040513d84823e3d90fd5b9061139b60a082019261138984513033846119f9565b60018060a01b03835116845191611a42565b60018060a01b0381511660806060830151600f0b920151600f0b925190803b1561136457604051630f7c084960e21b8152600f93840b60048201529390920b602484015260448301525f606483015282908290818381608481015b03925af180156113685761141b575b50505f516020611cbc5f395f51905f5290611299565b81611425916108ba565b61136457845f611405565b90916001600160801b03606085015116915f516020611cbc5f395f51905f526001600160801b036080870151169460018060a01b03905116145f146114d2575050825160a090930151926001600160a01b0316803b156113645760405163ce7d650360e01b815260048101929092526024820192909252604481018390525f6064820152600160848201523060a4820152918391839182908160c481016113f6565b9094506114fe60a085939501956114ec87513033846119f9565b60018060a01b03845116875191611a42565b81518551906001600160a01b0316803b156101f95760405163ce7d650360e01b8152600481018790526024810186905260448101929092525f60648301819052600160848401523060a484015290829060c490829084905af19081611699575b50908a95949392916115cf575b50519251926001600160a01b0316803b15611364578492836084926040519687958694630b68372160e31b86526004860152602485015260448401528160648401525af180156113685761141b5750505f516020611cbc5f395f51905f5290611299565b6115de9192939495504761094a565b8015611612576115f78a80808085335af16112c6611132565b806116075790899493929161156b565b985050505050505050565b506040516370a0823160e01b81523060048201526020816024818a5afa801561168e5788908b90611658575b611648925061094a565b611653813389611b9e565b6115f7565b50506020813d602011611686575b81611673602093836108ba565b810103126101f95787611648915161163e565b3d9150611666565b6040513d8c823e3d90fd5b6116ab9196959493929b505f906108ba565b5f9990919293945f61155e565b6040516370a0823160e01b81523060048201529350602084602481895afa80156104b05789945f916116ec575b50966111ef565b9450506020843d602011611719575b81611708602093836108ba565b810103126101f9578893515f6116e5565b3d91506116fb565b60405161172d8161088a565b5f81525f60208201525060608101906001600160801b0382511660808201906001600160801b0382511660c084015115155f146118f557508251604051634903b0d160e01b81526004810192909252602090829060249082906001600160a01b03165afa5f91816118c1575b506118b0575060018060a01b038251169060208451600f0b60246040518095819362cb501b60e31b835260048301525afa9182156104b0575f9261187b575b506064620186a060209304935b5194519151604051635e0d443f60e01b8152600f93840b6004820152920b602483015260448201849052909384919082906001600160a01b03165afa9182156104b0575f92611847575b506040519161183d8361088a565b8252602082015290565b9091506020813d602011611873575b81611863602093836108ba565b810103126101f95751905f61182f565b3d9150611856565b91506020823d6020116118a8575b81611896602093836108ba565b810103126101f95790519060646117d8565b3d9150611889565b906064620186a060209304936117e5565b9091506020813d6020116118ed575b816118dd602093836108ba565b810103126101f95751905f611799565b3d91506118d0565b8351604051634903b0d160e01b81526004810184905292955091925090602090839060249082906001600160a01b03165afa9182156104b0575f9261198b575b506064620186a0602093049360018060a01b0390511694604051958693849263556d6e9f60e01b8452600484015260248301528560448301525afa9182156104b0575f9261184757506040519161183d8361088a565b91506020823d6020116119b8575b816119a6602093836108ba565b810103126101f9579051906064611935565b3d9150611999565b604051634903b0d160e01b81525f600482015290602090829060249082906001600160a01b03165afa9081610f565750610f5257600190565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526112cc91611a3d6084836108ba565b611bf2565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830181905294919390831691602085604481865afa9485156104b0575f95611b6a575b5084018094116101df5760405163095ea7b360e01b602082019081526001600160a01b039290921660248201526044808201959095529384525f908190611acd6064876108ba565b85519082855af190611add611132565b82611b38575b5081611b2d575b5015611af557505050565b611a3d6112cc936040519063095ea7b360e01b602083015260248201525f604482015260448152611b276064826108ba565b82611bf2565b90503b15155f611aea565b80519192508115918215611b50575b5050905f611ae3565b611b639250602080918301019101611bda565b5f80611b47565b9094506020813d602011611b96575b81611b86602093836108ba565b810103126101f95751935f611a85565b3d9150611b79565b60405163a9059cbb60e01b60208201526001600160a01b039290921660248301526044808301939093529181526112cc91611a3d6064836108ba565b908160209103126101f9575180151581036101f95790565b5f80611c1a9260018060a01b03169360208151910182865af1611c13611132565b9083611c5d565b8051908115159182611c42575b5050611c305750565b635274afe760e01b5f5260045260245ffd5b611c559250602080918301019101611bda565b155f80611c27565b90611c815750805115611c7257805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580611cb2575b611c92575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15611c8a56fe000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea264697066735822122095b2866d1bfb6558995f95f5311386e755a500933ce3b93e801eddc460105df664736f6c634300081b0033","sourceMap":"630:19263:50:-:0;;;;;;;;;;-1:-1:-1;630:19263:50;;;;;;;;;;;;;;;;;;;;;8392:41;;630:19263;8392:41;;;630:19263;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;630:19263:50;;;;7479:34;630:19263;;;;7479:34;:::i;:::-;630:19263;7566:17;;7552:32;630:19263;;7552:32;:::i;:::-;630:19263;7625:13;630:19263;7663:3;630:19263;;7640:21;;;;;1349:42;630:19263;;;;;7686:18;:15;;;:18;:::i;:::-;630:19263;;7686:34;7682:91;;7663:3;630:19263;;-1:-1:-1;;;;;;;;;;;630:19263:50;;;;;7790:18;:15;;;:18;:::i;:::-;630:19263;;7790:33;7786:80;;630:19263;;;;;7894:18;:15;;;:18;:::i;:::-;630:19263;;7879:33;;;;:::i;:::-;630:19263;7625:13;630:19263;7625:13;;7786:80;7843:8;;7682:91;630:19263;;-1:-1:-1;7682:91:50;;7640:21;;;;7933:306;;;;630:19263;;;;;;;;;;7973:36;;;:::i;:::-;8028:13;630:19263;8066:3;630:19263;;8043:21;;;;;630:19263;;-1:-1:-1;;;;;8101:12:50;630:19263;8101:12;;:::i;:::-;630:19263;;8089:24;;;;:::i;:::-;630:19263;;8028:13;;8043:21;;;8141:38;630:19263;8043:21;630:19263;8141:38;;:::i;:::-;630:19263;7933:306;630:19263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;630:19263:50;;;;;-1:-1:-1;630:19263:50;;;;;;;;;;;;;;;;;;1349:42;;630:19263;1349:42;;630:19263;1349:42;7933:306;8210:18;7933:306;;630:19263;;;;;;;;;;-1:-1:-1;;630:19263:50;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1836:36:50;;630:19263;;1836:36;;630:19263;;;;;;-1:-1:-1;;;630:19263:50;;;;;;1836:36;630:19263;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;4879:30;;4919:28;630:19263;5006:21;;;;:::i;:::-;630:19263;-1:-1:-1;;;;;630:19263:50;;;-1:-1:-1;5253:17:50;;;;630:19263;5272:3;630:19263;;5249:21;;;;;-1:-1:-1;;;;;;;;;;;630:19263:50;;;;;5320:18;:15;;;:18;:::i;:::-;630:19263;;5320:33;:95;;;;5272:3;5295:356;;630:19263;;5234:13;;5295:356;5506:15;;6238:56;;-1:-1:-1;;;;;;;;;;;;1428:42:50;-1:-1:-1;1428:42:50;;-1:-1:-1;;;;;630:19263:50;5506:18;;5456:24;5506:18;:::i;:::-;630:19263;;5506:33;5502:104;;6238:56;:::i;:::-;630:19263;;;;;;;;;:::i;:::-;6328:1;630:19263;;;;;;;;;;;;-1:-1:-1;;;6484:33:50;;-1:-1:-1;;;;;630:19263:50;;;6484:33;;630:19263;;;6484:33;630:19263;6484:33;;;630:19263;;6484:33;;;5186:982;-1:-1:-1;6480:499:50;;630:19263;;;;;;;6717:90;;1349:42;;630:19263;6717:90;;518:1;630:19263;6717:90;6484:33;6717:90;;;;;;;;630:19263;6717:90;;;6480:499;630:19263;518:1;;;;6705:125;;;:::i;:::-;630:19263;6484:33;630:19263;;;;;;;;;6856:89;;1349:42;;630:19263;6856:89;;518:1;6856:89;;;;;;;630:19263;6856:89;;;6480:499;518:1;;;6844:124;;;:::i;:::-;630:19263;6480:499;;630:19263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;630:19263:50;;;;;;;;;;;;;6856:89;;;630:19263;6856:89;;630:19263;6856:89;;;;;;630:19263;6856:89;;;:::i;:::-;;;630:19263;;;;;6856:89;;;;;;-1:-1:-1;6856:89:50;;;630:19263;;;;;;;;;6717:90;;630:19263;6717:90;;630:19263;6717:90;;;;;;630:19263;6717:90;;;:::i;:::-;;;630:19263;;;;;;;6717:90;;;;;-1:-1:-1;6717:90:50;;6480:499;630:19263;518:1;;-1:-1:-1;;;;;518:1:50;6484:33;518:1;;;6554:38;;;:::i;:::-;630:19263;;;;;;;;;;;6618:32;;630:19263;;6618:32;;630:19263;6618:32;;;;;;;630:19263;6618:32;;;6480:499;518:1;;;6606:67;;;:::i;:::-;630:19263;6480:499;;;6618:32;;;630:19263;6618:32;;630:19263;6618:32;;;;;;630:19263;6618:32;;;:::i;:::-;;;630:19263;;;;;6618:32;;;;;;-1:-1:-1;6618:32:50;;6484:33;;;;630:19263;6484:33;;630:19263;6484:33;;;;;;630:19263;6484:33;;;:::i;:::-;;;630:19263;;;;;6484:33;;;;;;;-1:-1:-1;6484:33:50;;5502:104;630:19263;;-1:-1:-1;6238:56:50;:::i;5320:95::-;630:19263;1349:42;630:19263;;;;;5381:18;:15;;;:18;:::i;:::-;630:19263;;5381:34;5320:95;;5249:21;;6238:56;5249:21;;6238:56;:::i;5186:982::-;630:19263;;;-1:-1:-1;;;;;630:19263:50;5685:22;5681:487;;5186:982;;6238:56;5186:982;6238:56;:::i;5681:487::-;5747:17;;;;630:19263;5766:3;630:19263;;5743:21;;;;;-1:-1:-1;;;;;;;;;;;630:19263:50;;;;;5814:18;:15;;;:18;:::i;:::-;630:19263;;5814:33;:95;;;;5766:3;5789:355;;630:19263;;5728:13;;5789:355;5999:15;;6238:56;;-1:-1:-1;;;;;;;;;;;;1428:42:50;5950:23;-1:-1:-1;1428:42:50;;-1:-1:-1;;;;;630:19263:50;5999:18;;5950:23;5999:18;:::i;:::-;630:19263;;5999:33;5995:104;;5789:355;5681:487;;;;;5995:104;630:19263;;-1:-1:-1;5995:104:50;;5814:95;630:19263;1349:42;630:19263;;;;;5875:18;:15;;;:18;:::i;:::-;630:19263;;5875:34;5814:95;;5743:21;;;6238:56;5743:21;;;;630:19263;;;;;;-1:-1:-1;;630:19263:50;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;7220:1;630:19263;;;;;;;;;7250:20;7232:38;;;:::i;:::-;630:19263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7250:20;630:19263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;630:19263:50;;;;-1:-1:-1;;;8392:41:50;;630:19263;;8392:41;;630:19263;;;;;;;;;;;8392:41;;;630:19263;;;;-1:-1:-1;;;;;630:19263:50;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;630:19263:50;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;630:19263:50;;;;;;;;;-1:-1:-1;;;;;630:19263:50;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;630:19263:50;;;;;-1:-1:-1;630:19263:50;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;6613:1;630:19263;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;1349:42::-;;;;;;;;;;:::o;1918:2620::-;;;;;;630:19263;;;;;;;;;;;;;;;;;-1:-1:-1;630:19263:50;;-1:-1:-1;630:19263:50;;;;;;;;;:::i;:::-;-1:-1:-1;630:19263:50;;-1:-1:-1;630:19263:50;;;;;;;;2099:18;2133:20;;2129:63;;630:19263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;630:19263:50;;;;;;-1:-1:-1;630:19263:50;;;;;;-1:-1:-1;630:19263:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2551:32;-1:-1:-1;2551:32:50;;:::i;:::-;630:19263;2639:43;630:19263;;;;;;;;;2639:43;:::i;:::-;630:19263;;;;;;-1:-1:-1;630:19263:50;2924:17;;;-1:-1:-1;2943:3:50;630:19263;;2920:21;;;;;-1:-1:-1;;;;;;;;;;;630:19263:50;;;;;2999:18;:15;;;:18;:::i;:::-;630:19263;;2999:33;:99;;;;2943:3;2970:402;;630:19263;;2905:13;;2970:402;4041:106;630:19263;;;;;;;-1:-1:-1;;;;;;;;;;;630:19263:50;;;;3211:18;630:19263;;;;;3211:15;;;:18;:::i;:::-;630:19263;;3211:33;3207:112;;2970:402;630:19263;;;-1:-1:-1;;;;;630:19263:50;;;;;4041:106;:::i;:::-;1349:42;;;;;;;;;;;4188:9;1349:42;;;;;;;4212:22;;4458:21;4503:28;4275:16;;;;:::i;:::-;630:19263;;4470:9;4458:21;;:::i;:::-;630:19263;4442:13;;630:19263;4503:28;:::i;:::-;630:19263;4489:11;;:42;1918:2620::o;4208:224::-;630:19263;;-1:-1:-1;;;4329:92:50;;630:19263;4329:92;;;1349:42;;;;;630:19263;1349:42;630:19263;;;1349:42;-1:-1:-1;;;1349:42:50;;;;4329:92;;;3207:112;630:19263;;-1:-1:-1;3207:112:50;;2999:99;630:19263;1349:42;630:19263;;;;;3064:18;:15;;;:18;:::i;:::-;630:19263;;3064:34;2999:99;;2920:21;;4041:106;2920:21;;;;;;;;;2853:1106;3414:22;3410:549;;2853:1106;4041:106;2853:1106;;;;;;;;3410:549;630:19263;3480:17;;;-1:-1:-1;3499:3:50;630:19263;;3476:21;;;;;-1:-1:-1;;;;;;;;;;;630:19263:50;;;;;3555:18;:15;;;:18;:::i;:::-;630:19263;;3555:33;:99;;;;3499:3;3526:401;;630:19263;;3461:13;;3526:401;4041:106;630:19263;;;;;;;-1:-1:-1;;;;;;;;;;;630:19263:50;;;;3766:18;630:19263;;;;;3766:15;;;:18;:::i;:::-;630:19263;;3766:33;3762:112;;3526:401;3410:549;;;;;;;;;3762:112;630:19263;;-1:-1:-1;3762:112:50;;3555:99;630:19263;1349:42;630:19263;;;;;3620:18;:15;;;:18;:::i;:::-;630:19263;;3620:34;3555:99;;3476:21;;4041:106;3476:21;;;;;;;;;2129:63;2169:12;;;;;;;;;:::o;630:19263::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;630:19263:50;;;;;;;:::o;:::-;-1:-1:-1;;630:19263:50;;;;;;;:::o;17395:1301::-;;630:19263;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;630:19263:50;;17481:23;17520:11;-1:-1:-1;17685:31:50;;;;:::i;:::-;;;17772:406;17782:7;630:19263;17782:7;;;;17772:406;17680:1010;;;;17395:1301::o;17791:5::-;630:19263;;-1:-1:-1;;;17820:44:50;;;;;630:19263;;;;;;17820:44;630:19263;-1:-1:-1;;;;;630:19263:50;;17820:44;;-1:-1:-1;;17820:44:50;;;17791:5;-1:-1:-1;17816:348:50;;18140:5;;;17816:348;630:19263;17948:16;:28;:16;;;:28;:::i;:::-;630:19263;;;;;;;;;17998:20;630:19263;;17998:20;:::i;:::-;630:19263;;;17777:3;;17820:44;;;;;630:19263;17820:44;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;17680:1010;18208:472;18218:7;630:19263;18218:7;;;;17680:1010;;;;17395:1301::o;18227:5::-;630:19263;;-1:-1:-1;;;18303:101:50;;-1:-1:-1;;;;;630:19263:50;;1349:42;;18303:101;;;518:1;630:19263;;;18303:101;630:19263;-1:-1:-1;;;;;630:19263:50;;18303:101;;-1:-1:-1;;18303:101:50;;;18227:5;-1:-1:-1;18299:367:50;;18642:5;;;18299:367;630:19263;18450:16;:28;:16;;;:28;:::i;:::-;630:19263;;;;;;;;;18500:20;630:19263;;18500:20;:::i;:::-;630:19263;;;18213:3;;18303:101;;;;;630:19263;18303:101;;;;;;;;;:::i;:::-;;;;;16047:817;16363:15;;630:19263;16513:64;;16047:817;-1:-1:-1;;;;;630:19263:50;-1:-1:-1;;;;;;;;;;;16363:33:50;:87;;;;16047:817;16349:119;;;630:19263;;;16349:119;630:19263;;16520:33;630:19263;;;;;;16520:15;;:33;:::i;:::-;630:19263;;;-1:-1:-1;;;16513:64:50;;-1:-1:-1;;;;;630:19263:50;;;16513:64;;;630:19263;;;;;;;;;;;;16513:64;;;;;;;630:19263;16513:64;;;16349:119;16646:21;16592:167;630:19263;16646:21;630:19263;16646:21;;;:29;;;;;;630:19263;16646:29;;16689;;;16747:2;630:19263;16689:29;;630:19263;;;;;;;;;;;16592:167;;630:19263;16513:64;16592:167;;630:19263;;16513:64;630:19263;;;518:1;630:19263;;;;16592:167;;;;;;16689:29;-1:-1:-1;16588:270:50;;630:19263;16836:11;:::o;16588:270::-;630:19263;16792:12;:::o;16592:167::-;630:19263;16592:167;;630:19263;16592:167;;;;;;630:19263;16592:167;;;:::i;:::-;;;630:19263;;;;;16592:167;;;;;-1:-1:-1;16592:167:50;;16689:29;16747:2;630:19263;16689:29;;;16646;630:19263;16646:29;;;16513:64;;;630:19263;16513:64;;630:19263;16513:64;;;;;;630:19263;16513:64;;;:::i;:::-;;;630:19263;;;;;;;16592:167;16513:64;;;;;-1:-1:-1;16513:64:50;;16349:119;630:19263;;;16349:119;;16363:87;-1:-1:-1;16416:15:50;;630:19263;-1:-1:-1;;;;;630:19263:50;1349:42;16416:34;16363:87;;19101:790;630:19263;;19101:790;;;;630:19263;;19101:790;-1:-1:-1;;;;;630:19263:50;;-1:-1:-1;;;;;;;;;;;19401:24:50;;:38;;19101:790;19397:94;;19101:790;-1:-1:-1;;;;;630:19263:50;-1:-1:-1;;;;;;;;;;;19504:23:50;;;:37;;19101:790;19500:92;;;19101:790;630:19263;19601:284;19640:3;19621:17;;;630:19263;19617:21;;;;;19663:15;;-1:-1:-1;;;;;630:19263:50;19663:18;;:15;;:18;:::i;:::-;630:19263;-1:-1:-1;;;;;630:19263:50;;;;19663:32;630:19263;;;;-1:-1:-1;;;;;630:19263:50;;1349:42;;19659:216;;630:19263;19606:9;;;19659:216;630:19263;;;;;;19775:18;:15;;;:18;:::i;:::-;630:19263;;-1:-1:-1;;;;;630:19263:50;;19775:31;19771:104;;19659:216;630:19263;19659:216;;;19771:104;-1:-1:-1;;;;;630:19263:50;;1349:42;;;-1:-1:-1;19771:104:50;;19617:21;;;;;;;;19101:790::o;19500:92::-;1349:42;;-1:-1:-1;19500:92:50;;19504:37;19531:10;;;19504:37;;;19397:94;1349:42;;-1:-1:-1;19397:94:50;;19401:38;19429:10;;;19401:38;;630:19263;;;;;;;;;;;;;;;;;;;-1:-1:-1;;630:19263:50;;;;;:::i;:::-;;;;-1:-1:-1;630:19263:50;;;;:::o;:::-;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;630:19263:50;;;;;;;;;;;;-1:-1:-1;;;630:19263:50;;;;;;;11136:4709;11284:19;;;630:19263;;11340:20;;;630:19263;;;;11136:4709;11402:21;;-1:-1:-1;;;;;630:19263:50;;;;11284:19;;630:19263;;;;;;-1:-1:-1;;;;;;;;;;;11462:34:50;;1428:42;;11512:21;11461:120;;11596:23;;;630:19263;;11596:23;;-1:-1:-1;630:19263:50;-1:-1:-1;;;;;630:19263:50;-1:-1:-1;;;;;;;;;;;11639:35:50;1428:42;;-1:-1:-1;630:19263:50;;;11807:26;;630:19263;11873:25;;;630:19263;11920:24;;;;630:19263;1349:42;;;;;;;;-1:-1:-1;;;;;630:19263:50;11722:311;;;;;11284:19;630:19263;-1:-1:-1;;;11722:311:50;;1349:42;;;;11722:311;;;518:1;1349:42;;;;630:19263;;;518:1;630:19263;;;;;;-1:-1:-1;630:19263:50;;;;;;;;;;;;;11722:311;;;;;;;;11635:963;;;-1:-1:-1;;;;;;;;;;;11635:963:50;;630:19263;-1:-1:-1;;;;;630:19263:50;15393:34;1428:42;;15462:21;:41;15599:36;15462:21;;:41;:::i;:::-;15540:10;;;;;;15532:53;;;;:::i;:::-;;15599:36;:::i;:::-;11136:4709::o;15389:450::-;630:19263;11284:19;630:19263;;;;15701:33;;11410:4;15701:33;;;630:19263;11340:20;15701:33;;;;;;;;;;;;;;15389:450;15701:53;15811:16;15701:53;;;;:::i;:::-;15798:10;;;15811:16;;:::i;15701:33::-;;;11340:20;15701:33;;11340:20;15701:33;;;;;;630:19263;15701:33;;;:::i;:::-;;;630:19263;;;;;15811:16;15701:33;;;;;-1:-1:-1;15701:33:50;;;11284:19;630:19263;;;;;;;;;11722:311;;;;;:::i;:::-;630:19263;;11722:311;;;;630:19263;;;;11722:311;11284:19;630:19263;;;;;;;;11635:963;12147:26;12286;12147;;;630:19263;12147:26;630:19263;;11410:4;12120:10;12147:26;;:::i;:::-;630:19263;;;;;;;;;;12286:26;;:::i;:::-;630:19263;;;;;;;;12470:24;12423:25;;;630:19263;1349:42;;12470:24;;630:19263;1349:42;;630:19263;;12348:235;;;;;;11284:19;630:19263;-1:-1:-1;;;12348:235:50;;1349:42;;;;12348:235;;;518:1;1349:42;;;;630:19263;;;518:1;630:19263;;;;;;;;;;;;;;;;;;;12348:235;;;;;;;;;;;11635:963;;;-1:-1:-1;;;;;;;;;;;11635:963:50;;;12348:235;;;;;:::i;:::-;630:19263;;12348:235;;;;11592:3787;12689:25;;-1:-1:-1;;;;;12689:25:50;;;630:19263;;12790:24;-1:-1:-1;;;;;;;;;;;;;;;;12790:24:50;;;630:19263;;;;;;;;;;;12834:35;12830:2539;1428:42;;;-1:-1:-1;;630:19263:50;;12974:26;;;;630:19263;;-1:-1:-1;;;;;630:19263:50;12889:358;;;;;11284:19;630:19263;-1:-1:-1;;;12889:358:50;;;;;630:19263;;;;;;;;;;;;;;;;;-1:-1:-1;630:19263:50;;;;13869:4;630:19263;;;;11410:4;630:19263;;;;;;;;;;;;;;;12889:358;630:19263;12830:2539;13361:26;;;13500;13361;;;;;630:19263;13361:26;630:19263;;11410:4;13334:10;13361:26;;:::i;:::-;630:19263;;;;;;;;;;13500:26;;:::i;:::-;630:19263;;;;;-1:-1:-1;;;;;630:19263:50;13641:285;;;;;11284:19;630:19263;-1:-1:-1;;;13641:285:50;;;;;630:19263;;;;;;;;;;;;;;;;-1:-1:-1;630:19263:50;;;;;;13869:4;630:19263;;;;11410:4;630:19263;;;;-1:-1:-1;630:19263:50;;;;;;-1:-1:-1;;13641:285:50;;;;;;12830:2539;13637:1423;;;;;;;;;;12830:2539;-1:-1:-1;630:19263:50;;;;-1:-1:-1;;;;;630:19263:50;15133:221;;;;;630:19263;;;15133:221;630:19263;11284:19;630:19263;;;;;;;;;15133:221;;13641:285;15133:221;;630:19263;;;;;;;;;;;;;;15133:221;;;;;;;;12830:2539;;-1:-1:-1;;;;;;;;;;;12830:2539:50;11592:3787;;13637:1423;14208:44;:21;;;;;;;:44;:::i;:::-;14278:23;;;;14560:36;14329:38;;;;;13334:10;14424:110;;;;:::i;14560:36::-;14939:20;14935:98;;13637:1423;;;;;;;;14935:98;14987:23;-1:-1:-1;;;;;;;;14987:23:50:o;14274:640::-;-1:-1:-1;11284:19:50;630:19263;-1:-1:-1;;;14670:33:50;;11410:4;13641:285;14670:33;;630:19263;11340:20;630:19263;14670:33;630:19263;14670:33;;;;;;;;;;;;;14274:640;14670:81;;;;:::i;:::-;14849:16;13334:10;;14849:16;;:::i;:::-;14274:640;;14670:33;;;11340:20;14670:33;;11340:20;14670:33;;;;;;630:19263;14670:33;;;:::i;:::-;;;630:19263;;;;;14670:81;630:19263;;14670:33;;;;;-1:-1:-1;14670:33:50;;;11284:19;630:19263;;;;;;;;13641:285;;;;;;;;;;630:19263;13641:285;;:::i;:::-;630:19263;13641:285;;;;;;;;;11461:120;11284:19;630:19263;-1:-1:-1;;;11548:33:50;;11410:4;11548:33;;;630:19263;;-1:-1:-1;11340:20:50;630:19263;11548:33;630:19263;11548:33;;;;;;;;;630:19263;11548:33;;;11461:120;;;;;11548:33;;;;11340:20;11548:33;;11340:20;11548:33;;;;;;630:19263;11548:33;;;:::i;:::-;;;630:19263;;;;;;;11548:33;;;;;;-1:-1:-1;11548:33:50;;8851:1810;630:19263;;;;;:::i;:::-;-1:-1:-1;630:19263:50;;-1:-1:-1;630:19263:50;;;;9001:16;9072:25;;;630:19263;-1:-1:-1;;;;;630:19263:50;;;9153:24;;;630:19263;-1:-1:-1;;;;;630:19263:50;;;9193:23;;;630:19263;;;9189:1466;9193:23;;;-1:-1:-1;630:19263:50;;;;-1:-1:-1;;;9236:103:50;;;;;630:19263;;;;;;;;9236:103;;630:19263;;-1:-1:-1;;;;;630:19263:50;9236:103;;-1:-1:-1;;9236:103:50;;;9189:1466;-1:-1:-1;9232:614:50;;9547:284;630:19263;;;;;;;;;;;;1349:42;;9236:103;630:19263;;;;;;;;;9612:136;;9236:103;9612:136;;518:1;9612:136;;;;;;;-1:-1:-1;9612:136:50;;;9232:614;518:1;9893:192;1303:7;630:19263;518:1;;9232:614;;630:19263;;;;;;;-1:-1:-1;;;9893:192:50;;1349:42;;;;9236:103;9893:192;;518:1;1349:42;;9236:103;1303:7;;518:1;1303:7;;;630:19263;;;;;;;-1:-1:-1;630:19263:50;;-1:-1:-1;;;;;630:19263:50;9893:192;;;;;;;-1:-1:-1;9893:192:50;;;9232:614;630:19263;;;;;;;:::i;:::-;;;;9867:258;;630:19263;9860:265;:::o;9893:192::-;;;;630:19263;9893:192;;630:19263;9893:192;;;;;;630:19263;9893:192;;;:::i;:::-;;;630:19263;;;;;9893:192;;;;;;;-1:-1:-1;9893:192:50;;9612:136;;;630:19263;9612:136;;630:19263;9612:136;;;;;;630:19263;9612:136;;;:::i;:::-;;;630:19263;;;;;;;9893:192;9612:136;;;;;-1:-1:-1;9612:136:50;;9232:614;9391:105;9893:192;1303:7;630:19263;9391:105;518:1;9232:614;;;9236:103;;;;630:19263;9236:103;;630:19263;9236:103;;;;;;630:19263;9236:103;;;:::i;:::-;;;630:19263;;;;;9236:103;;;;;;;-1:-1:-1;9236:103:50;;9189:1466;630:19263;;;;-1:-1:-1;;;10224:119:50;;;;;630:19263;;;10167:251;;-1:-1:-1;630:19263:50;;-1:-1:-1;10167:251:50;630:19263;;;;10224:119;;630:19263;;-1:-1:-1;;;;;630:19263:50;10224:119;;;;;;;-1:-1:-1;10224:119:50;;;9189:1466;518:1;10466:138;1303:7;630:19263;518:1;;630:19263;;;;;;;;;;;;;;;;;;;;10466:138;;10224:119;10466:138;;630:19263;10224:119;1303:7;;630:19263;1303:7;;;;630:19263;10466:138;;;;;;;-1:-1:-1;10466:138:50;;;630:19263;;;;;;;:::i;10224:119::-;;;630:19263;10224:119;;630:19263;10224:119;;;;;;630:19263;10224:119;;;:::i;:::-;;;630:19263;;;;;;;10466:138;10224:119;;;;;-1:-1:-1;10224:119:50;;17028:270;630:19263;;-1:-1:-1;;;17148:45:50;;630:19263;17148:45;;;630:19263;;;;;;17148:45;;630:19263;;-1:-1:-1;;;;;630:19263:50;17148:45;;;;;;-1:-1:-1;17144:148:50;;;17270:11;:::o;1702:188:32:-;630:19263:50;;-1:-1:-1;;;1829:53:32;;;;-1:-1:-1;;;;;630:19263:50;;;1829:53:32;;;630:19263:50;;;;;;;;;;;;;;;;;1829:53:32;;;;;;;630:19263:50;1829:53:32;:::i;:::-;;:::i;2081:225::-;630:19263:50;;-1:-1:-1;;;2200:39:32;;2224:4;2200:39;;;630:19263:50;-1:-1:-1;;;;;630:19263:50;;;;;;;;;;;;;;;;;;2200:39:32;630:19263:50;;2200:39:32;;;;;;;-1:-1:-1;2200:39:32;;;2081:225;2278:20;630:19263:50;;;;;;;;;-1:-1:-1;;;630:19263:50;3411:47:32;;;;;-1:-1:-1;;;;;630:19263:50;;;;;3411:47:32;;630:19263:50;;;;;;;;;3411:47:32;;;-1:-1:-1;;;;3411:47:32;630:19263:50;;3411:47:32;:::i;:::-;8024:25;;;;;;;;;;:::i;:::-;8066:69;;;2081:225;8066:103;;;;2081:225;3473:45;;3469:201;;2081:225;;;:::o;3469:201::-;3561:43;3646:12;630:19263:50;;;;;;;;3561:43:32;;;630:19263:50;3561:43:32;;630:19263:50;-1:-1:-1;2200:39:32;630:19263:50;;;2200:39:32;3561:43;;;;;;:::i;:::-;;;:::i;8066:103::-;8139:26;;;:30;;8066:103;;;:69;630:19263:50;;;;-1:-1:-1;8078:22:32;;;:56;;;;8066:69;;;;;;;8078:56;8104:30;;;630:19263:50;8104:30:32;;;;;;;;:::i;:::-;8078:56;;;;2200:39;;;;630:19263:50;2200:39:32;;630:19263:50;2200:39:32;;;;;;630:19263:50;2200:39:32;;;:::i;:::-;;;630:19263:50;;;;;2200:39:32;;;;;;;-1:-1:-1;2200:39:32;;1303:160;630:19263:50;;-1:-1:-1;;;1412:43:32;;;;-1:-1:-1;;;;;630:19263:50;;;;1412:43:32;;;630:19263:50;;;;;;;;;1412:43:32;;;;;;630:19263:50;;1412:43:32;:::i;630:19263:50:-;;;;;;;;;;;;;;;;;;:::o;6468:629:32:-;2626:1:33;6468:629:32;3304:55:33;6468:629:32;630:19263:50;;;;;;3256:31:33;;;;;;;;;;;;:::i;:::-;3304:55;;;:::i;:::-;630:19263:50;;6960:22:32;;;;:57;;;;6468:629;6956:135;;;;6468:629;:::o;6956:135::-;7040:40;;;2626:1:33;7040:40:32;;630:19263:50;;2626:1:33;7040:40:32;6960:57;6987:30;;;3256:31:33;6987:30:32;;;;;;;;:::i;:::-;6986:31;6960:57;;;;4421:582:33;;4593:8;;-1:-1:-1;630:19263:50;;5674:21:33;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;630:19263:50;;4841:22:33;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:33;4917:24;;;-1:-1:-1;;;;;630:19263:50;;;;4917:24:33;630:19263:50;;;4917:24:33;4841:49;4867:18;;;:23;4841:49;","linkReferences":{}},"methodIdentifiers":{"getCapabilities(bytes32,address,address)":"48bd7dfd","getLimits(bytes32,address,address)":"a9270fbe","getPoolIds(uint256,uint256)":"23eeca01","getTokens(bytes32)":"ecbbc033","price(bytes32,address,address,uint256[])":"aad6e488","swap(bytes32,address,address,uint8,uint256)":"8307c655"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"LimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"Unavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getCapabilities\",\"outputs\":[{\"internalType\":\"enum ISwapAdapterTypes.Capability[]\",\"name\":\"capabilities\",\"type\":\"uint8[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"}],\"name\":\"getLimits\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getPoolIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"specifiedAmounts\",\"type\":\"uint256[]\"}],\"name\":\"price\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction[]\",\"name\":\"prices\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sellToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyToken\",\"type\":\"address\"},{\"internalType\":\"enum ISwapAdapterTypes.OrderSide\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"specifiedAmount\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"calculatedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapAdapterTypes.Fraction\",\"name\":\"price\",\"type\":\"tuple\"}],\"internalType\":\"struct ISwapAdapterTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"This contract supports both CryptoSwap and StableSwap Curve pools\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"LimitExceeded(uint256)\":[{\"details\":\"The LimitExceeded error is thrown when a limit has been exceeded. E.g. the specified amount can't be traded safely.\"}],\"NotImplemented(string)\":[{\"details\":\"The NotImplemented error is thrown when a function is not implemented.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"Unavailable(string)\":[{\"details\":\"The Unavailable error is thrown when a pool or swap is not available for unexpected reason. E.g. it was paused due to a bug.\"}]},\"kind\":\"dev\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"capabilities\":\"An array of Capability.\"}},\"getLimits(bytes32,address,address)\":{\"details\":\"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\"},\"returns\":{\"limits\":\"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token).\"}},\"getTokens(bytes32)\":{\"details\":\"Mainly used for testing as this is redundant with the required substreams implementation.\",\"params\":{\"poolId\":\"The ID of the trading pool.\"},\"returns\":{\"tokens\":\"An array of address contracts.\"}},\"price(bytes32,address,address,uint256[])\":{\"details\":\"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"specifiedAmounts\":\"Amounts to calculate marginal prices at.\"},\"returns\":{\"prices\":\"array of prices as fractions corresponding to the provided amounts.\"}},\"swap(bytes32,address,address,uint8,uint256)\":{\"details\":\"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.\",\"params\":{\"buyToken\":\"The token being bought.\",\"poolId\":\"The ID of the trading pool.\",\"sellToken\":\"The token being sold.\",\"side\":\"The side of the trade (Sell or Buy).\",\"specifiedAmount\":\"The amount to be traded.\"},\"returns\":{\"trade\":\"Trade struct representing the executed trade.\"}}},\"title\":\"Curve Finance Adapter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCapabilities(bytes32,address,address)\":{\"notice\":\"Retrieves the capabilities of the selected pool.\"},\"getLimits(bytes32,address,address)\":{\"notice\":\"Retrieves the limits for each token.\"},\"getTokens(bytes32)\":{\"notice\":\"Retrieves the tokens in the selected pool.\"},\"price(bytes32,address,address,uint256[])\":{\"notice\":\"Calculates marginal prices for specified amounts (optional).\"},\"swap(bytes32,address,address,uint8,uint256)\":{\"notice\":\"Simulates swapping tokens on a given pool.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/curve/CurveAdapter.sol\":\"CurveAdapter\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/curve/CurveAdapter.sol\":{\"keccak256\":\"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913\",\"dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi\"]},\"src/interfaces/ISwapAdapter.sol\":{\"keccak256\":\"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87\",\"dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C\"]},\"src/interfaces/ISwapAdapterTypes.sol\":{\"keccak256\":\"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c\",\"dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h\"]},\"src/libraries/FractionMath.sol\":{\"keccak256\":\"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735\",\"license\":\"AGPL-3.0-or-later\",\"urls\":[\"bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c\",\"dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"type":"error","name":"LimitExceeded"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"NotImplemented"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"string","name":"reason","type":"string"}],"type":"error","name":"Unavailable"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"getCapabilities","outputs":[{"internalType":"enum ISwapAdapterTypes.Capability[]","name":"capabilities","type":"uint8[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"}],"stateMutability":"view","type":"function","name":"getLimits","outputs":[{"internalType":"uint256[]","name":"limits","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function","name":"getPoolIds","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getTokens","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"uint256[]","name":"specifiedAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"price","outputs":[{"internalType":"struct ISwapAdapterTypes.Fraction[]","name":"prices","type":"tuple[]","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sellToken","type":"address"},{"internalType":"address","name":"buyToken","type":"address"},{"internalType":"enum ISwapAdapterTypes.OrderSide","name":"side","type":"uint8"},{"internalType":"uint256","name":"specifiedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"struct ISwapAdapterTypes.Trade","name":"trade","type":"tuple","components":[{"internalType":"uint256","name":"calculatedAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"struct ISwapAdapterTypes.Fraction","name":"price","type":"tuple","components":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}]}]}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"getCapabilities(bytes32,address,address)":{"params":{"poolId":"The ID of the trading pool."},"returns":{"capabilities":"An array of Capability."}},"getLimits(bytes32,address,address)":{"details":"Retrieve the maximum limits of a token that can be traded. The limit is reached when the change in the received amounts is zero or close to zero or when the swap fails because of the pools restrictions. Overestimate if in doubt rather than underestimate. The swap function should not error with `LimitExceeded` if called with amounts below the limit.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold."},"returns":{"limits":"An array of size two indicating the limit amount for the sell token (maximum the pool is willing to buy in sell token) as well as the limit amount of the buy token (maximum the pool is willing to sell in buy token)."}},"getTokens(bytes32)":{"details":"Mainly used for testing as this is redundant with the required substreams implementation.","params":{"poolId":"The ID of the trading pool."},"returns":{"tokens":"An array of address contracts."}},"price(bytes32,address,address,uint256[])":{"details":"The returned prices should include all dex fees. In case the fee is dynamic on the amount traded, the returned price is expected to include the minimum fee. Note that the returned price should be the marginal price which is distinct from the executed price `swap(amount_in) / amount_in`! The marginal price is defined as the price to trade an arbitrarily small (almost zero) amount after the trade of (amount). E.g. the marginal price of a uniswap v2 pool at amount=0 is `reserve0/reserve1`. Ideally this method should be implemented, although it is optional as the price function can be numerically derived from the swap function. In case it is not available, it should be flagged via capabilities and calling it should revert using the `NotImplemented` error. The method needs to be implemented as view as this is usually more efficient and can be run in parallel.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","specifiedAmounts":"Amounts to calculate marginal prices at."},"returns":{"prices":"array of prices as fractions corresponding to the provided amounts."}},"swap(bytes32,address,address,uint8,uint256)":{"details":"This function should be state modifying, meaning it should actually execute the swap and change the state of the EVM accordingly. Please include a gas usage estimate for each amount. This can be achieved e.g. by using the `gasleft()` function. The return type `Trade` has an attribute called price which should contain the value of `price(specifiedAmount)`. As this is optional, defined via `Capability.PriceFunction`, it is valid to return a Fraction(0, 0) value for this price. In that case the price will be estimated numerically.","params":{"buyToken":"The token being bought.","poolId":"The ID of the trading pool.","sellToken":"The token being sold.","side":"The side of the trade (Sell or Buy).","specifiedAmount":"The amount to be traded."},"returns":{"trade":"Trade struct representing the executed trade."}}},"version":1},"userdoc":{"kind":"user","methods":{"getCapabilities(bytes32,address,address)":{"notice":"Retrieves the capabilities of the selected pool."},"getLimits(bytes32,address,address)":{"notice":"Retrieves the limits for each token."},"getTokens(bytes32)":{"notice":"Retrieves the tokens in the selected pool."},"price(bytes32,address,address,uint256[])":{"notice":"Calculates marginal prices for specified amounts (optional)."},"swap(bytes32,address,address,uint8,uint256)":{"notice":"Simulates swapping tokens on a given pool."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","balancer-v2/interfaces/=lib/balancer-v2-monorepo/pkg/interfaces/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/curve/CurveAdapter.sol":"CurveAdapter"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/curve/CurveAdapter.sol":{"keccak256":"0x7b4cb321e3b307b8a0b538c098b31f0db01145f10f70377f90180fe0d400262f","urls":["bzz-raw://925c32c4b0bd6620d2d9a0710c172a4a38a4a7862c8fc42c0676c0b999d4d913","dweb:/ipfs/QmU23Jr4iVTH4mECJYxLbL3zX484T7J4t4aMRFvtochBmi"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapter.sol":{"keccak256":"0xb7af70bac27e53573dfb145ec715203ca28ab8795f512b8ec84c33b5d812d702","urls":["bzz-raw://ad7d3672672ef08abd6c7c04d3426d6f0bed4ebb34c5e4d70926da145cdfbd87","dweb:/ipfs/QmS99C7MRYB9Lkph2f3XLJfjFmX4u2aC6Tm5n886pMSk1C"],"license":"AGPL-3.0-or-later"},"src/interfaces/ISwapAdapterTypes.sol":{"keccak256":"0xf5637c8fca78253bd88d94d8173d8de4487146f82e462df42f428142ee951778","urls":["bzz-raw://f2c3ab44f87f9c945f52052196537e057292e45d4011830c73a9495e60cdbf4c","dweb:/ipfs/QmePvUFDNHpH2b5Y4kRBXgSrA55RrZgjdUXwV5GLNX5o5h"],"license":"AGPL-3.0-or-later"},"src/libraries/FractionMath.sol":{"keccak256":"0x327fa2e6a30e5305decbc59db80a2300c9bb80856e8f890d8edda52986dab735","urls":["bzz-raw://3be12211b298c2090fc475c7acd07682b688a551395db988266dcbc6d28fc53c","dweb:/ipfs/QmTfnVAAj4aQWXaZAgRN8g8mjzHKyVqSJocEJFUGWbANWr"],"license":"AGPL-3.0-or-later"}},"version":1},"id":50}