0 txs
1 call
constructor
constructor() payable
functions
buildBestSwap
viewfunction buildBestSwap(address to, bool exactOut, address tokenIn, address tokenOut, uint256 swapAmount, uint256 slippageBps, uint256 deadline) view returns (tuple best, bytes callData, uint256 amountLimit, uint256 msgValue)
buildBestSwapCompressed
viewfunction buildBestSwapCompressed(address to, bool exactOut, address tokenIn, address tokenOut, uint256 swapAmount, uint256 slippageBps, uint256 deadline) view returns (tuple best, bytes callData, bytes callDataCompressed, uint256 amountLimit, uint256 msgValue)
buildBestSwapViaETHMulticall
viewfunction buildBestSwapViaETHMulticall(address to, address refundTo, bool exactOut, address tokenIn, address tokenOut, uint256 swapAmount, uint256 slippageBps, uint256 deadline) view returns (tuple a, tuple b, bytes[] calls, bytes multicall, uint256 msgValue)
buildBestSwapViaETHMulticallCompressed
viewfunction buildBestSwapViaETHMulticallCompressed(address to, address refundTo, bool exactOut, address tokenIn, address tokenOut, uint256 swapAmount, uint256 slippageBps, uint256 deadline) view returns (tuple a, tuple b, bytes[] calls, bytes multicall, bytes multicallCompressed, uint256 msgValue)
cdCompress
purefunction cdCompress(bytes data) pure returns (bytes result)
getQuotes
viewfunction getQuotes(bool exactOut, address tokenIn, address tokenOut, uint256 swapAmount) view returns (tuple best, tuple[] quotes)
limit
viewfunction limit(bool exactOut, uint256 quoted, uint256 bps) view returns (uint256)
quoteAero
viewfunction quoteAero(bool exactOut, address tokenIn, address tokenOut, uint256 swapAmount) view returns (uint256 amountIn, uint256 amountOut, uint256 feeBpsUsed)
quoteAeroCL
viewfunction quoteAeroCL(bool exactOut, address tokenIn, address tokenOut, int24 spacing, uint256 swapAmount) view returns (uint256 amountIn, uint256 amountOut)
quoteV2
viewfunction quoteV2(bool exactOut, address tokenIn, address tokenOut, uint256 swapAmount) view returns (uint256 amountIn, uint256 amountOut)
quoteV3
viewfunction quoteV3(bool exactOut, address tokenIn, address tokenOut, uint24 fee, uint256 swapAmount) view returns (uint256 amountIn, uint256 amountOut)
quoteV4
viewfunction quoteV4(bool exactOut, address tokenIn, address tokenOut, uint24 fee, int24 tickSpacing, address hooks, uint256 swapAmount) view returns (uint256 amountIn, uint256 amountOut)
quoteZAMM
viewfunction quoteZAMM(bool exactOut, uint256 feeOrHook, address tokenIn, address tokenOut, uint256 idIn, uint256 idOut, uint256 swapAmount) view returns (uint256 amountIn, uint256 amountOut)
ZQUOTER_BASE
viewfunction ZQUOTER_BASE() view returns (address)
events
No events.
errors
NoRoute
error NoRoute()
UnsupportedAMM
error UnsupportedAMM()
ZeroAmount
error ZeroAmount()
creation bytecode
0x6080806040526130fc90816100128239f3fe610180806040526004361015610013575f80fd5b5f3560e01c9081631106888314610c0d575080632063daeb14610bc157806345bc5b9d14610a775780634e69e1181461098657806361d65dee1461085b578063732ef91a146107ae57806383a0950514610703578063ac67a76e14610615578063b8e2512214610538578063c0bb84b3146103fc578063d2f0267b14610351578063e1fd10bc1461018c578063e453166e1461010f5763e7798987146100b7575f80fd5b3461010b576100eb6100fc6100da6100ce36610dd0565b95949094939193612fb7565b916040949193945195868096610e78565b60e0608086015260e0850190610ed2565b9160a084015260c08301520390f35b5f80fd5b3461010b5761015461018161013561012636610feb565b969590959491949392936115aa565b92909192916101726080519461015e60a0519660405198898099610e78565b6080880190610e78565b6101606101008701526101608601906110b5565b90848203610120860152610ed2565b906101408301520390f35b3461010b576102135f61019e36610d51565b9094919291906101ac61112b565b5060405195869485947fe1fd10bc000000000000000000000000000000000000000000000000000000008652600486019094939273ffffffffffffffffffffffffffffffffffffffff90816060946080850198151585521660208401521660408201520152565b038173a8cc0177598531ec7d223e9689fdd50e120b946c5afa8015610346575f915f9161029a575b50906040519182916102518360a0810192610e78565b60a060808401528151809152602060c084019201905f5b818110610276575050500390f35b91935091602060808261028c6001948851610e78565b019401910191849392610268565b9150503d805f833e6102ac8183610f70565b81019060a08183031261010b576102c3828261114f565b9060808101519067ffffffffffffffff821161010b570182601f8201121561010b5780516102f0816114ae565b936102fe6040519586610f70565b81855260208086019260071b8401019281841161010b57602001915b83831061032c5750505050908261023b565b602060809161033b848661114f565b81520192019161031a565b6040513d5f823e3d90fd5b3461010b576103b56103f161038961036836610feb565b9661037a96919695929594939461112b565b5061038361112b565b506115aa565b92909192916103e2608051916103d360a051966103bf6103a88461122b565b956040519a8b809b610e78565b60808a0190610e78565b6101806101008901526101808801906110b5565b90868203610120880152610ed2565b90848203610140860152610ed2565b906101608301520390f35b3461010b5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b57610433610cfc565b61043b610d2e565b6064359073ffffffffffffffffffffffffffffffffffffffff821680920361010b5773ffffffffffffffffffffffffffffffffffffffff90604051937fc0bb84b30000000000000000000000000000000000000000000000000000000085521515600485015260243560248501521660448301526064820152608435608482015260a43560a482015260c43560c482015260408160e48173a8cc0177598531ec7d223e9689fdd50e120b946c5afa908115610346576040915f915f91610509575b5082519182526020820152f35b905061052b9150823d8411610531575b6105238183610f70565b810190611215565b836104fc565b503d610519565b3461010b5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b5761056f610cfc565b604051907fb8e25122000000000000000000000000000000000000000000000000000000008252151560048201526024356024820152604435604482015260208160648173a8cc0177598531ec7d223e9689fdd50e120b946c5afa8015610346575f906105e2575b602090604051908152f35b506020813d60201161060d575b816105fc60209383610f70565b8101031261010b57602090516105d7565b3d91506105ef565b3461010b5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b5761064c610cfc565b62ffffff610658610d0b565b73ffffffffffffffffffffffffffffffffffffffff610675610d2e565b8161067e610f15565b93604051967fac67a76e00000000000000000000000000000000000000000000000000000000885215156004880152166024860152166044840152166064820152608435608482015260408160a48173a8cc0177598531ec7d223e9689fdd50e120b946c5afa908115610346576040915f915f91610509575082519182526020820152f35b3461010b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b5760043567ffffffffffffffff811161010b573660238201121561010b5780600401359061075e82610fb1565b61076b6040519182610f70565b828152366024848401011161010b575f6020846107aa9560246107969601838601378301015261122b565b604051918291602083526020830190610ed2565b0390f35b3461010b5761082360406107c136610d51565b84517f732ef91a000000000000000000000000000000000000000000000000000000008152931515600485015273ffffffffffffffffffffffffffffffffffffffff928316602485015291166044830152606482015291829081906084820190565b038173a8cc0177598531ec7d223e9689fdd50e120b946c5afa908115610346576040915f915f91610509575082519182526020820152f35b3461010b5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b57610892610cfc565b61089a610d0b565b6108a2610d2e565b6108aa610f15565b90608435918260020b80930361010b5760a4359373ffffffffffffffffffffffffffffffffffffffff851680950361010b5762ffffff9273ffffffffffffffffffffffffffffffffffffffff8092604051987f61d65dee000000000000000000000000000000000000000000000000000000008a52151560048a0152166024880152166044860152166064840152608483015260a482015260c43560c482015260408160e48173a8cc0177598531ec7d223e9689fdd50e120b946c5afa908115610346576040915f915f91610509575082519182526020820152f35b3461010b5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b576109bd610cfc565b6109c5610d0b565b6109cd610d2e565b90606435918260020b80930361010b5773ffffffffffffffffffffffffffffffffffffffff8092604051957f4e69e118000000000000000000000000000000000000000000000000000000008752151560048701521660248501521660448301526064820152608435608482015260408160a48173a8cc0177598531ec7d223e9689fdd50e120b946c5afa908115610346576040915f915f91610509575082519182526020820152f35b3461010b57610b155f610a8936610dd0565b92610a9b98949896959692919261112b565b5060405198899788977fe7798987000000000000000000000000000000000000000000000000000000008952600489019373ffffffffffffffffffffffffffffffffffffffff80929998979460c097948260e089019c16885215156020880152166040860152166060840152608083015260a08201520152565b038173a8cc0177598531ec7d223e9689fdd50e120b946c5afa801561034657610b62915f915f5f925f92610b92575b5080610b75610b55610b839361122b565b9160405197888098610e78565b6101006080880152610100870190610ed2565b9085820360a0870152610ed2565b9160c084015260e08301520390f35b915050610b839250610bb691503d805f833e610bae8183610f70565b810190611196565b929390929190610b44565b3461010b575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010b57602060405173a8cc0177598531ec7d223e9689fdd50e120b946c8152f35b3461010b5760608180610c7c610c2236610d51565b7f11068883000000000000000000000000000000000000000000000000000000008652921515600486015273ffffffffffffffffffffffffffffffffffffffff918216602486015216604484015260648301526084820190565b038173a8cc0177598531ec7d223e9689fdd50e120b946c5afa8015610346575f905f5f91610cbb575b6060935060405192835260208301526040820152f35b5050506060813d606011610cf4575b81610cd760609383610f70565b8101031261010b5780516020820151604090920151606092610ca5565b3d9150610cca565b60043590811515820361010b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361010b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361010b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc608091011261010b57600435801515810361010b579060243573ffffffffffffffffffffffffffffffffffffffff8116810361010b579060443573ffffffffffffffffffffffffffffffffffffffff8116810361010b579060643590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60e091011261010b5760043573ffffffffffffffffffffffffffffffffffffffff8116810361010b5790602435801515810361010b579060443573ffffffffffffffffffffffffffffffffffffffff8116810361010b579060643573ffffffffffffffffffffffffffffffffffffffff8116810361010b57906084359060a4359060c43590565b80516006811015610ea5576060918291845260208101516020850152604081015160408501520151910152565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6064359062ffffff8216820361010b57565b6080810190811067ffffffffffffffff821117610f4357604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610f4357604052565b67ffffffffffffffff8111610f4357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc61010091011261010b5760043573ffffffffffffffffffffffffffffffffffffffff8116810361010b579060243573ffffffffffffffffffffffffffffffffffffffff8116810361010b5790604435801515810361010b579060643573ffffffffffffffffffffffffffffffffffffffff8116810361010b579060843573ffffffffffffffffffffffffffffffffffffffff8116810361010b579060a4359060c4359060e43590565b9080602083519182815201916020808360051b8301019401925f915b8383106110e057505050505090565b909192939460208061111c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528951610ed2565b970193019301919392906110d1565b6040519061113882610f27565b5f6060838281528260208201528260408201520152565b919082608091031261010b5760405161116781610f27565b80928051600681101561010b576060918291845260208101516020850152604081015160408501520151910152565b91909160e08184031261010b576111ad838261114f565b92608082015167ffffffffffffffff811161010b57820181601f8201121561010b578051906111db82610fb1565b926111e96040519485610f70565b8284526020838301011161010b57815f9260208093018386015e830101529160c060a083015192015190565b919082604091031261010b576020825192015190565b90604051918051810160208401915b81810361127e5750506004830180511990528281037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00183525f8152602001604052565b6001019160ff83511680156113f75760ff811461136157815360017f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f60208501518083850152801982808216011790828082160117161719806f8421084210842108cc6318c6db6d54be1060071b81811c67ffffffffffffffff1060061b177fc0c8c8d0c8e8d0d8c8e8e0e8d0d8e0f0c8d0e8d0e0e0d8f0d0d0e0d8f8f8f8f86f8421084210842108cc6318c6db6d54be83831c66020408102040810260181a1c601f161a1860031c90150184840390818110908218021880920101920161123a565b506002906080602080860151198061139c575b5085850390818110908218021880601f10601f82180218809501941760f01b8152019161123a565b6113f19150806fffffffffffffffffffffffffffffffff1060071b81811c67ffffffffffffffff1060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1790811c60ff109060031c17601f1890565b5f611374565b925b6020810151801561147a579061145c60029392806fffffffffffffffffffffffffffffffff1060071b81811c67ffffffffffffffff1060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1790811c60ff109060031c17601f1890565b81850390818110908218021880910194015b60f01b8152019161123a565b5092601f8484038060201060208218021882607f0390818110908218021880809601920194116113f957929060029161146e565b67ffffffffffffffff8111610f435760051b60200190565b906114d0826114ae565b6114dd6040519182610f70565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061150b82946114ae565b01905f5b82811061151b57505050565b80606060208093850101520161150f565b8051156115395760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051600110156115395760400190565b8051600210156115395760600190565b8051600310156115395760800190565b80518210156115395760209160051b010190565b6101005260c0949094525f60a081905260805294959394906115ca61112b565b60a0526115d561112b565b60805260c05115612f8f5773ffffffffffffffffffffffffffffffffffffffff8116159283158481612f71575b8015612f3e575b8015612f0b575b612b745750826128475761162261112b565b506040517fe1fd10bc00000000000000000000000000000000000000000000000000000000815260c0515f6004830181905273ffffffffffffffffffffffffffffffffffffffff85166024840152734200000000000000000000000000000000000006604484015260648301919091528160848173a8cc0177598531ec7d223e9689fdd50e120b946c5afa8015610346575f905f90612777575b60609250508060a0520180511561265557612710905188820302049485975f876116e461112b565b506040516101408181527fe1fd10bc0000000000000000000000000000000000000000000000000000000090915280518315156004820152734200000000000000000000000000000000000006602482015273ffffffffffffffffffffffffffffffffffffffff8716604482015260648101929092525160849073a8cc0177598531ec7d223e9689fdd50e120b946c5afa908115610346575f915f9061267d575b508160805260608201511561265557606061271092015190820302045b6e404fecaf36e6184245475ee125483592858061262b575b61242b575b851561242357895b60a051516006811015610ea557878d8b8993155f14611ff9576040517f6e0a4f9800000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8a811660248301529315156044820152939092166064840152734200000000000000000000000000000000000006608484015260a483019390935260c482015260e481019190915261189c8161010481015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610f70565b9a5b8615611ff25760c051925b608051516006811015610ea557611bfb576040517f6e0a4f980000000000000000000000000000000000000000000000000000000060208201526101005173ffffffffffffffffffffffffffffffffffffffff908116602483015289151560448301527342000000000000000000000000000000000000066064830152909316608484015260a483019390935260c482019290925260e4810191909152611954816101048101611870565b915b8480611be5575b1580611bb7575b60a051516006811015610ea5576002149182611baf575b82611b80575b508015611b75576119a660ff60015b8415611b6d57816001915b6002011601166114c6565b9a6119b08c61152c565b526119ba8b61152c565b506002936119c78c611566565b526119d18b611566565b50611ad2575b611a4d575b5050506040517fac9650d800000000000000000000000000000000000000000000000000000000602082015260206024820152611a2081611870604482018a6110b5565b948115611a4357915b15611a3c5715611a37575090565b905090565b5050505f90565b5060c05191611a29565b6040517fcb019b8400000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff93841660248201525f60448201819052606482015292166084830152611ac991611ab88160a48101611870565b611ac2828a611596565b5287611596565b505f80806119dc565b6040517fcb019b8400000000000000000000000000000000000000000000000000000000602082015273420000000000000000000000000000000000000660248201525f60448201819052606482015273ffffffffffffffffffffffffffffffffffffffff831660848083019190915281529250611b5160a484610f70565b600392611b5d8b611576565b52611b678a611576565b506119d7565b815f9161199b565b6119a660ff5f611990565b73ffffffffffffffffffffffffffffffffffffffff166e404fecaf36e6184245475ee12548351491505f611981565b86925061197b565b506e404fecaf36e6184245475ee125483573ffffffffffffffffffffffffffffffffffffffff821614611964565b50608051516006811015610ea55760021461195d565b909192608051516006811015610ea557600103611cb7576080516020908101516040517f8b64ad5500000000000000000000000000000000000000000000000000000000928101929092526101005173ffffffffffffffffffffffffffffffffffffffff908116602484015260029091111560448301527342000000000000000000000000000000000000066064830152909416608485015260a484015260c483015260e4820152611cb1816101048101611870565b91611956565b608051516006811015610ea557600203611d795773ffffffffffffffffffffffffffffffffffffffff6020608051015194604051957f9d5b5af800000000000000000000000000000000000000000000000000000000602088015282610100511660248801528a15156044880152606487015273420000000000000000000000000000000000000660848701521660a48501525f60c48501525f60e48501526101048401526101248301526101448201526101448152611cb161016482610f70565b608051516006811015610ea557600303611e355773ffffffffffffffffffffffffffffffffffffffff62ffffff606460206080510151021694604051957fafeae12b00000000000000000000000000000000000000000000000000000000602088015282610100511660248801528a15156044880152606487015273420000000000000000000000000000000000000660848701521660a485015260c484015260e48301526101048201526101048152611cb161012482610f70565b608051516006811015610ea557600403611f075773ffffffffffffffffffffffffffffffffffffffff6020608051015194611e7361ffff8716613084565b62ffffff6064604051987f21c0dad20000000000000000000000000000000000000000000000000000000060208b015285610100511660248b01528d151560448b01520216606488015260020b608487015273420000000000000000000000000000000000000660a48701521660c485015260e48401526101048301526101248201526101248152611cb161014482610f70565b608051516006811015610ea557600503611fca5773ffffffffffffffffffffffffffffffffffffffff611f4361ffff6020608051015116613084565b94604051957fcb924a0900000000000000000000000000000000000000000000000000000000602088015282610100511660248801528a1515604488015260020b606487015273420000000000000000000000000000000000000660848701521660a485015260c484015260e48301526101048201526101048152611cb161012482610f70565b7fe54fb174000000000000000000000000000000000000000000000000000000005f5260045ffd5b8a926118a9565b5050505060a05151906006821015610ea5578c60018893145f146120bd5760a0516020908101516040517f8b64ad55000000000000000000000000000000000000000000000000000000009281019290925273ffffffffffffffffffffffffffffffffffffffff808a16602484015260029091111560448301529093166064840152734200000000000000000000000000000000000006608484015260a483019190915260c482018a905260e48201526120b7816101048101611870565b9a61189e565b50905060a051516006811015610ea55760020361219657602060a051015190604051917f9d5b5af800000000000000000000000000000000000000000000000000000000602084015273ffffffffffffffffffffffffffffffffffffffff871660248401528815156044840152606483015273ffffffffffffffffffffffffffffffffffffffff8716608483015273420000000000000000000000000000000000000660a48301525f60c48301525f60e4830152610104820152886101248201528b61014482015261014481526120b761016482610f70565b60a051516006811015610ea5576003036122665762ffffff6064602060a0510151021690604051917fafeae12b00000000000000000000000000000000000000000000000000000000602084015273ffffffffffffffffffffffffffffffffffffffff871660248401528815156044840152606483015273ffffffffffffffffffffffffffffffffffffffff8716608483015273420000000000000000000000000000000000000660a483015260c48201528860e48201528b61010482015261010481526120b761012482610f70565b60a051516006811015610ea55760040361234c57602060a05101519061228f61ffff8316613084565b62ffffff6064604051947f21c0dad200000000000000000000000000000000000000000000000000000000602087015273ffffffffffffffffffffffffffffffffffffffff8a1660248701528b151560448701520216606484015260020b608483015273ffffffffffffffffffffffffffffffffffffffff871660a483015273420000000000000000000000000000000000000660c483015260e4820152886101048201528b61012482015261012481526120b761014482610f70565b60a051516006811015610ea557600503611fca5761237361ffff602060a051015116613084565b90604051917fcb924a0900000000000000000000000000000000000000000000000000000000602084015273ffffffffffffffffffffffffffffffffffffffff87166024840152881515604484015260020b606483015273ffffffffffffffffffffffffffffffffffffffff8716608483015273420000000000000000000000000000000000000660a483015260c48201528860e48201528b61010482015261010481526120b761012482610f70565b60c0516117c7565b9250608051516006811015610ea55761253f5773ffffffffffffffffffffffffffffffffffffffff61245c84613020565b507fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006040519181602084019460601b16845260601b166034820152602881526124a6604882610f70565b51902060405160208101917fff0000000000000000000000000000000000000000000000000000000000000083527f8909dc15e40173ff4699343b6eb8132c65e18ec6000000000000000000000000602183015260358201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f605582015260558152612534607582610f70565b519020165b926117bf565b60556043600260206080510151111561255786613020565b5090917fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006040519281602085019560601b16855260601b16603483015260f81b6048820152602981526125ab604982610f70565b5190206040519073420dd381b31aef6683db6b902084cb0ffece40da60388301526f5af43d82803e903d91602b57fd5bf3ff602483015273a4e46b4f701c62e14df11b48dce76a7d793cd6d76014830152733d602d80600a3d3981f3363d3d373d3d3d363d73825260588201526037600c82012060788201520120612539565b50608051516006811015610ea55715806117ba5750608051516006811015610ea5576001146117ba565b7f6586e129000000000000000000000000000000000000000000000000000000005f5260045ffd5b5090503d805f610140513e6126958161014051610f70565b60a061014051826101405101031261010b576126b98161014051016101405161114f565b9060806101405101519067ffffffffffffffff821161010b57806101405101601f83610140510101121561010b5781610140510151906126f8826114ae565b6101205260405160e0526127116101205160e051610f70565b60e051508160e0515260208060e051019260071b846101405101010192816101405101841161010b576101405101602001915b83831061275857505050509060e051611785565b602060809161276c8461014051018661114f565b815201920191612744565b50503d805f833e6127888183610f70565b60a082828101031261010b576127a08183018361114f565b9160808101519167ffffffffffffffff831161010b57808201601f84840101121561010b5782820151916127e66127d6846114ae565b6040516101605261016051610f70565b610160515082610160515260208061016051019360071b858301010193828201851161010b578101602001925b84841061282b575050505050606090610160516116bc565b602060809161283c8585018761114f565b815201930192612813565b93959361285261112b565b506040517fe1fd10bc00000000000000000000000000000000000000000000000000000000815260c05160016004830152734200000000000000000000000000000000000006602483015273ffffffffffffffffffffffffffffffffffffffff831660448301526064820152965f8860848173a8cc0177598531ec7d223e9689fdd50e120b946c5afa8015610346575f985f91612ac8575b50508760805260408801805115612655575161271061270f88820183020104809980516006811015610ea55715908115612ab3575b5015612aab5750955b61293061112b565b506040517fe1fd10bc0000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff851660248201527342000000000000000000000000000000000000066044820152606481018890525f8160848173a8cc0177598531ec7d223e9689fdd50e120b946c5afa8015610346575f915f916129ef575b50508060a0526040810151156126555761271091604061270f92015190830102010495976117a2565b9150503d805f833e612a018183610f70565b60a082828101031261010b57612a198183018361114f565b9060808301519067ffffffffffffffff821161010b57808401601f83860101121561010b578184015190612a4c826114ae565b94612a5a6040519687610f70565b82865260208087019360071b858301010193828201851161010b578101602001925b848410612a8f575050505050905f6129c6565b6020608091612aa08585018761114f565b815201930192612a7c565b905095612928565b9050516006811015610ea5576001145f61291f565b9850503d805f8a3e612ada818a610f70565b88019760a0818a031261010b57612af1898261114f565b9060808101519067ffffffffffffffff821161010b570189601f8201121561010b578051612b1e816114ae565b9a612b2c6040519c8d610f70565b818c526020808d019260071b8401019281841161010b57602001915b838310612b5a5750505050975f6128ea565b6020608091612b69848661114f565b815201920191612b48565b949691979290612b8d94508860c0519261010051612fb7565b959296919390506e404fecaf36e6184245475ee125483573ffffffffffffffffffffffffffffffffffffffff610100511614155f14612ccb575050506040805190612bd88183610f70565b600182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015f5b818110612cba57505080612c1e9192612c188261152c565b5261152c565b505b604051612c2c81610f27565b5f81525f60208201525f60408201525f6060820152604051947fac9650d800000000000000000000000000000000000000000000000000000000602087015260206024870152612caf86612c8360448201866110b5565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101885287610f70565b60a052608052929190565b806060602080938601015201612c00565b8080612ed7575b15612ecc57612ce860ff60015b600301166114c6565b93612cf28561152c565b52612cfc8461152c565b506040517fcb019b8400000000000000000000000000000000000000000000000000000000602082015273420000000000000000000000000000000000000660248201525f60448201819052606482015273ffffffffffffffffffffffffffffffffffffffff84166084820152612d768160a48101611870565b612d7f85611566565b52612d8984611566565b506040517fcb019b840000000000000000000000000000000000000000000000000000000060208201525f60248201525f60448201525f606482015273ffffffffffffffffffffffffffffffffffffffff8416608482015260848152612df060a482610f70565b612df985611576565b52612e0384611576565b5080612e98575b612e16575b5050612c20565b6040517fcb019b8400000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff91821660248201525f60448201819052606482015291166084820152612e7d8160a48101611870565b612e8682611586565b52612e9081611586565b505f80612e0f565b5073420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff82161415612e0a565b612ce860ff5f612cdf565b5073420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff83161415612cd2565b5073420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff831614611610565b5073420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff841614611609565b5073ffffffffffffffffffffffffffffffffffffffff821615611602565b7f1f2a2005000000000000000000000000000000000000000000000000000000005f5260045ffd5b9294612fca929691945f96610a9b61112b565b038173a8cc0177598531ec7d223e9689fdd50e120b946c5afa8015610346575f925f935f935f93612ffd575b5093929190565b925050925061301691503d805f833e610bae8183610f70565b919390925f612ff6565b73ffffffffffffffffffffffffffffffffffffffff811673420000000000000000000000000000000000000610801561306b5773420000000000000000000000000000000000000692565b7342000000000000000000000000000000000000069192565b61ffff16600181146130c057600581146130ba57601e81146130b457606481146130ae5760020b90565b5060c890565b50603c90565b50600a90565b5060019056fea26469706673582212200a351c307c87047da1bbd0a9d3c8f03bae6e8d26e4dfb138ba7f05bd44d6d1c164736f6c634300081e0033