0 txs
0 calls
constructor
constructor(address _factory, address _WETH)
functions
factory
viewfunction factory() view returns (address)
getAmountIn
purefunction getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns (uint256 amountIn)
getAmountOut
purefunction getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns (uint256 amountOut)
getAmountsIn
viewfunction getAmountsIn(uint256 amountOut, address[] path) view returns (uint256[] amounts)
getAmountsOut
viewfunction getAmountsOut(uint256 amountIn, address[] path) view returns (uint256[] amounts)
quote
purefunction quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns (uint256 amountB)
WETH
viewfunction WETH() view returns (address)
addLiquidity
nonpayablefunction addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns (uint256 amountA, uint256 amountB, uint256 liquidity)
addLiquidityETH
payablefunction addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity)
removeLiquidity
nonpayablefunction removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns (uint256 amountA, uint256 amountB)
removeLiquidityETH
nonpayablefunction removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns (uint256 amountToken, uint256 amountETH)
removeLiquidityETHSupportingFeeOnTransferTokens
nonpayablefunction removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns (uint256 amountETH)
removeLiquidityETHWithPermit
nonpayablefunction removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns (uint256 amountToken, uint256 amountETH)
removeLiquidityETHWithPermitSupportingFeeOnTransferTokens
nonpayablefunction removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns (uint256 amountETH)
removeLiquidityWithPermit
nonpayablefunction removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns (uint256 amountA, uint256 amountB)
swapETHForExactTokens
payablefunction swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns (uint256[] amounts)
swapExactETHForTokens
payablefunction swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns (uint256[] amounts)
swapExactETHForTokensSupportingFeeOnTransferTokens
payablefunction swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable
swapExactTokensForETH
nonpayablefunction swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns (uint256[] amounts)
swapExactTokensForETHSupportingFeeOnTransferTokens
nonpayablefunction swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline)
swapExactTokensForTokens
nonpayablefunction swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns (uint256[] amounts)
swapExactTokensForTokensSupportingFeeOnTransferTokens
nonpayablefunction swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline)
swapTokensForExactETH
nonpayablefunction swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns (uint256[] amounts)
swapTokensForExactTokens
nonpayablefunction swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns (uint256[] amounts)
events
No events.
errors
No errors.
creation bytecode
0x60c0346200017e57601f6200307c38819003918201601f19168301916001600160401b03831184841017620001835780849260409485528339810103126200017e576200005a6020620000528362000199565b920162000199565b9060805260a052604051612ecd9081620001af82396080518181816101c10152818161037c015281816105490152818161063d0152818161071701528181610973015281816109b701528181610a1801528181610c1a01528181610e5e01528181610f810152818161130001528181611447015281816115da01528181611696015281816117c901528181611861015281816119d10152818161204a015281816122aa01528181612583015261274e015260a051818181602801528181610193015281816103490152818161061b015281816106f5015281816107ca0152818161081e01528181610b9801528181610e1801528181610f56015281816110be015281816112de0152818161141601528181611830015281816119aa01526122840152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200017e5756fe6080604052600480361015610051575b50361561001b57600080fd5b61004f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314611e74565b005b6000803560e01c806302751cec1461198d578063054d50d41461197357806318cbafe5146117ed5780631f00ca74146117b15780632195995c1461164257806338ed1739146115b85780634a25d94a146113d35780635b0d5984146112bb5780635c11d79514611234578063791ac9471461107c5780637ff36ab514610f2657806385f8c25914610f0c5780638803dbee14610e3c578063ad5c464814610df8578063ad615dec14610dde578063af2979eb14610db6578063b6f9de9514610b67578063baa2abde146109db578063c45a015514610997578063d06ca61f1461095b578063ded9382a146105fd578063e8e33700146104cf578063f305d7191461032a5763fb3bdb4114610165575061000f565b61016e36611e28565b939093421161032657811561031357610186836124f8565b906001600160a01b0391827f000000000000000000000000000000000000000000000000000000000000000016928391160361030f576101f37f0000000000000000000000000000000000000000000000000000000000000000916101ec368688611d20565b9083612dd4565b956101fd876124b1565b5134106102fd5761020d876124b1565b51833b1561030b5781899160405192838092630d0e30db60e41b8252885af18015610300579082916102e9575b5050610245856124f8565b9084600110156102d6576102b1886102948961028e8a8a6102878b6102778c8c610271602088016124f8565b91612a03565b610280896124b1565b51916121e3565b3691611d20565b83612581565b61029d816124b1565b5134116102b5575b60405191829182611c81565b0390f35b6102d16102cb6102c4836124b1565b51346121c0565b33612249565b6102a5565b8060328a634e487b7160e01b6024945252fd5b6102f290611cbc565b6102fd57803861023a565b80fd5b6040513d84823e3d90fd5b5080fd5b8580fd5b602485603288634e487b7160e01b835252fd5b8480fd5b5061033436611ba7565b969492909695939542116104cb5790610372917f00000000000000000000000000000000000000000000000000000000000000009634908886612004565b9590946103a081847f0000000000000000000000000000000000000000000000000000000000000000612a03565b9283916103bb886001600160a01b0396879485339116611e91565b16803b1561032657604051630d0e30db60e41b8152858188818c865af180156104c0579189918794936104a5575b5094826103fe602495938397956020996121e3565b60405198899687956335313c2160e11b87521690850152165af19081156104995790610461575b6102b1915083341161044f575b604051938493846040919493926060820195825260208201520152565b61045c6102cb85346121c0565b610432565b506020813d8211610491575b8161047a60209383611ce6565b8101031261048c576102b19051610425565b600080fd5b3d915061046d565b604051903d90823e3d90fd5b6104b29193949250611cbc565b6103265790878592386103e9565b6040513d88823e3d90fd5b8380fd5b50903461030b5761010036600319011261030b576104eb611b65565b906104f4611b7b565b9060c435906001600160a01b0380831680930361048c574260e4351061030f579160246020928761058397989561053860a4356084356064358d8c60443591612004565b8b8a61057a61056d849f9d869f969e7f0000000000000000000000000000000000000000000000000000000000000000612a03565b9c8d809488339116611e91565b84339116611e91565b60405197889586946335313c2160e11b8652850152165af190811561049957906105ca575b6102b19150604051938493846040919493926060820195825260208201520152565b506020813d82116105f5575b816105e360209383611ce6565b8101031261048c576102b190516105a8565b3d91506105d6565b50346102fd5761060c36611dc2565b6106619b98959b9997999392937f0000000000000000000000000000000000000000000000000000000000000000897f0000000000000000000000000000000000000000000000000000000000000000612a03565b921561095457600019915b6001600160a01b0384163b15610950576040805163d505accf60e01b815233818d01908152306020820152918201949094526060810187905260ff909516608086015260a085015260c08401529189918391829084906001600160a01b0390839060e0010393165af180156109455790889161092d575b5050421161030f57610777602061073b7f0000000000000000000000000000000000000000000000000000000000000000867f0000000000000000000000000000000000000000000000000000000000000000612a03565b604080516323b872dd60e01b8152338982019081526001600160a01b039093166020840181905291830195909552939283918291606090910190565b03818a865af18015610922579160409188969594936108f4575b50602482518099819363226bf2d160e21b835230898401525af19586156108e957849085976108af575b506001600160a01b03806107ef7f0000000000000000000000000000000000000000000000000000000000000000866129d4565b509416931683036108a95795945b86106104cb5784106108a5578486610814926121e3565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690813b156108a5578360248492836040519586948593632e1a7d4d60e01b85528401525af1801561030057610891575b5050610885816001600160a01b0360409516612249565b82519182526020820152f35b61089b8291611cbc565b6102fd578061086e565b8280fd5b946107fd565b9650506040863d6040116108e1575b816108cb60409383611ce6565b810103126104cb576020865196015195386107bb565b3d91506108be565b6040513d86823e3d90fd5b6109149060203d811161091b575b61090c8183611ce6565b810190611edc565b5038610791565b503d610902565b6040513d89823e3d90fd5b61093690611cbc565b6109415786386106e3565b8680fd5b6040513d8a823e3d90fd5b8b80fd5b859161066c565b50346102fd576102b16102a561097036611d7e565b907f0000000000000000000000000000000000000000000000000000000000000000612d2d565b50346102fd57806003193601126102fd5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b50903461030b5760e036600319011261030b576109f6611b65565b906109ff611b7b565b91610a08611b91565b4260c4351061032657610a3c84837f0000000000000000000000000000000000000000000000000000000000000000612a03565b604080516323b872dd60e01b8152338682019081526001600160a01b039384166020828101829052604435948301949094529394919290839081906060015b03818b875af190888215610499576040948694602494610b49575b508551988995869463226bf2d160e21b865216908401525af1938415610b3e5785938695610b00575b50610acb8291846129d4565b5016911614600014610afb57905b60643582106108a55760843581106108a5576040809350519182526020820152f35b610ad9565b935093506040833d604011610b36575b81610b1d60409383611ce6565b8101031261032657825160209093015193610acb610abf565b3d9150610b10565b6040513d87823e3d90fd5b610b609060203d811161091b5761090c8183611ce6565b5038610a96565b5090610b7236611e28565b949092919394421161030f578315610da357610b8d826124f8565b6001600160a01b03937f0000000000000000000000000000000000000000000000000000000000000000851692918516839003610d9f57823b15610d9f5787604051630d0e30db60e41b81528181858134895af1801561030057610d8b575b5050610bf7846124f8565b8660011015610d7857610c4490602094610c3e3492610c17888a016124f8565b907f0000000000000000000000000000000000000000000000000000000000000000612a03565b906121e3565b6000198601868111610d655785610c64610c5f838a896124e8565b6124f8565b1696604051956370a0823160e01b9384885286886024818c85169d8e8b8301525afa978815610d5a578c98610d1e575b506024949387989993610cbd93610cb8610c5f94610cb3368585611d20565b612749565b6124e8565b16604051978894859384528301525afa908115610b3e578591610cee575b50610ce692506121c0565b106102fd5780f35b905082813d8311610d17575b610d048183611ce6565b8101031261048c57610ce6915138610cdb565b503d610cfa565b90989294939680985081813d8311610d53575b610d3b8183611ce6565b8101031261048c575191979196959293916024610c94565b503d610d31565b6040513d8e823e3d90fd5b602489601185634e487b7160e01b835252fd5b602489603285634e487b7160e01b835252fd5b610d9490611cbc565b610d9f578738610bec565b8780fd5b856032602492634e487b7160e01b835252fd5b50346102fd576020610dd6610dca36611ba7565b94939093929192612276565b604051908152f35b50346102fd576020610dd6610df236611be7565b91612c00565b50346102fd57806003193601126102fd5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102fd57610e4b36611c32565b9591929395949094421161030b57610e897f0000000000000000000000000000000000000000000000000000000000000000916101ec368688611d20565b95610e93876124b1565b511161030b578215610ef9576001600160a01b03610eb0856124f8565b1691610ebb856124f8565b9084600110156102d6576102b1886102a58961028e8a8a6102878b610ee78c8c610271602088016124f8565b610ef0896124b1565b51913390611e91565b602482603289634e487b7160e01b835252fd5b50346102fd576020610dd6610f2036611be7565b91612c89565b50610f3036611e28565b9490939442116102fd57811561106957610f49836124f8565b906001600160a01b0391827f00000000000000000000000000000000000000000000000000000000000000001692839116036102fd577f000000000000000000000000000000000000000000000000000000000000000090610fb6610faf368688611d20565b3484612d2d565b968751600019810190811161105657610fcf90896124d4565b51106102fd57610fde876124b1565b51833b1561030b5781899160405192838092630d0e30db60e41b8252885af1801561030057908291611042575b5050611016856124f8565b9084600110156102d6576102b1886102a58961028e8a8a6102878b6102778c8c610271602088016124f8565b61104b90611cbc565b6102fd57803861100b565b60248360118c634e487b7160e01b835252fd5b80603287634e487b7160e01b6024945252fd5b50903461030b5761108c36611c32565b95919095949394421161094157600019810181811161122157610c5f6110b39183866124e8565b6001600160a01b03947f000000000000000000000000000000000000000000000000000000000000000086169491861685900361121d57821561120a57856110fa836124f8565b16611104836124f8565b84600110156111f757926111358b97969593610cb39361112d61113e97610c17602087016124f8565b903390611e91565b30923691611d20565b604051946370a0823160e01b86523082870152602086602481865afa9586156108e95784966111c1575b5085106108a557813b156108a5578460248492836040519586948593632e1a7d4d60e01b85528401525af18015610300576111ad575b50506111aa9216612249565b80f35b6111b690611cbc565b6104cb57833861119e565b935094506020833d82116111ef575b816111dd60209383611ce6565b8101031261048c578692519438611168565b3d91506111d0565b60248b603288634e487b7160e01b835252fd5b602489603286634e487b7160e01b835252fd5b8880fd5b602488601185634e487b7160e01b835252fd5b50903461030b5761124436611c32565b9590939594919442116109415784156112a8576001600160a01b03938461126a856124f8565b1692611275856124f8565b9387600110156112955790610c449161112d602096610c17888a016124f8565b60248a603286634e487b7160e01b835252fd5b866032602492634e487b7160e01b835252fd5b50903461030b576112cb36611dc2565b6113249b959a919392949b9996999897987f0000000000000000000000000000000000000000000000000000000000000000887f0000000000000000000000000000000000000000000000000000000000000000612a03565b92156113c4576001600160a01b03600019935b1693843b15610941576040805163d505accf60e01b81523394810194855230602086015290840194909452606083018d905260ff909516608083015260a082019490945260c0810193909352918391839182908490829060e00103925af18015610300576113b0575b6020610dd6898989898989612276565b6113ba8291611cbc565b6102fd57806113a0565b6001600160a01b038893611337565b50346102fd576113e236611c32565b95919290949395421161030b57600019928084018181116115a557610c5f61140b9183856124e8565b6001600160a01b03957f0000000000000000000000000000000000000000000000000000000000000000871693918716849003610326576114727f0000000000000000000000000000000000000000000000000000000000000000916101ec368686611d20565b9861147c8a6124b1565b51116103265782156115925786611492836124f8565b169061149d836124f8565b846001101561157f576114cc926114c385936111359361027160206114d29a99016124f8565b610ef08d6124b1565b88612581565b855183810190811161156c576114e890876124d4565b51813b156108a5578291602483926040519485938492632e1a7d4d60e01b84528d8401525af1801561030057908291611558575b50508451918201918211611545576102b1856102a5868661153d87856124d4565b519116612249565b80601187634e487b7160e01b6024945252fd5b61156190611cbc565b6102fd57803861151c565b60248360118a634e487b7160e01b835252fd5b60248760328e634e487b7160e01b835252fd5b60248560328c634e487b7160e01b835252fd5b60248460118b634e487b7160e01b835252fd5b50346102fd576115c736611c32565b9591929395949094421161030b5761160c7f000000000000000000000000000000000000000000000000000000000000000091611605368688611d20565b9083612d2d565b95865160001981019081116115a55761162590886124d4565b511061030b578215610ef9576001600160a01b03610eb0856124f8565b50903461030b5761016036600319011261030b5761165e611b65565b90611667611b7b565b91604435611673611b91565b9060c43560e43592831515840361048c57610104359160ff8316830361048c57887f0000000000000000000000000000000000000000000000000000000000000000936116c18a8987612a03565b96156117aa57600019905b6001600160a01b0380981691823b156104cb576040805163d505accf60e01b815233818e01908152306020820152918201929092526060810186905260ff90921660808301526101243560a08301526101443560c083015291839183919082908490829060e00103925af1801561030057611796575b50504211610d9f57602061175a8887610a7b95612a03565b604080516323b872dd60e01b8152338a82019081526001600160a01b038416602082015291820196909652908616949384918291606090910190565b61179f90611cbc565b61121d578838611742565b85906116cc565b50346102fd576102b16102a56117c636611d7e565b907f0000000000000000000000000000000000000000000000000000000000000000612dd4565b50346102fd576117fc36611c32565b95919290949395421161030b57600019928084018181116115a557610c5f6118259183856124e8565b6001600160a01b03957f00000000000000000000000000000000000000000000000000000000000000008716939187168490036103265761188c7f000000000000000000000000000000000000000000000000000000000000000091611605368686611d20565b988951878101908111611960576118a3908b6124d4565b511061032657821561159257866118b9836124f8565b16906118c4836124f8565b846001101561157f576114cc926114c385936111359361027160206118ea9a99016124f8565b855183810190811161156c5761190090876124d4565b51813b156108a5578291602483926040519485938492632e1a7d4d60e01b84528d8401525af1801561030057611951575b508451918201918211611545576102b1856102a5868661153d87856124d4565b61195a90611cbc565b38611931565b60248760118e634e487b7160e01b835252fd5b50346102fd576020610dd661198736611be7565b91612c2f565b50346102fd5761199c36611ba7565b969294909396421161030f577f0000000000000000000000000000000000000000000000000000000000000000916119f583837f0000000000000000000000000000000000000000000000000000000000000000612a03565b604080516323b872dd60e01b8152338782019081526001600160a01b0393841660208281018290529382019c909c52929a929091908290819060600103818c865af18015611b5a57916040918a96959493611b3c575b5060248251809b819363226bf2d160e21b8352308b8401525af19788156108e95784908599611b02575b508980611a8286866129d4565b50941693168303611afc5797965b88106104cb5786106108a55790611aa987868a946121e3565b1691823b1561030b578460248392836040519687948593632e1a7d4d60e01b85528401525af1908115610499575094610885928492604097611aed575b5016612249565b611af690611cbc565b38611ae6565b96611a90565b9850506040883d604011611b34575b81611b1e60409383611ce6565b810103126104cb57602088519801519738611a75565b3d9150611b11565b611b539060203d811161091b5761090c8183611ce6565b5038611a4b565b6040513d8b823e3d90fd5b600435906001600160a01b038216820361048c57565b602435906001600160a01b038216820361048c57565b60a435906001600160a01b038216820361048c57565b60c090600319011261048c576001600160a01b03600435818116810361048c5791602435916044359160643591608435908116810361048c579060a43590565b606090600319011261048c57600435906024359060443590565b9181601f8401121561048c5782359167ffffffffffffffff831161048c576020808501948460051b01011161048c57565b60a060031982011261048c5760043591602435916044359067ffffffffffffffff821161048c57611c6591600401611c01565b90916064356001600160a01b038116810361048c579060843590565b6020908160408183019282815285518094520193019160005b828110611ca8575050505090565b835185529381019392810192600101611c9a565b67ffffffffffffffff8111611cd057604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117611cd057604052565b67ffffffffffffffff8111611cd05760051b60200190565b9291611d2b82611d08565b91611d396040519384611ce6565b829481845260208094019160051b810192831161048c57905b828210611d5f5750505050565b81356001600160a01b038116810361048c578152908301908301611d52565b90604060031983011261048c57600435916024359067ffffffffffffffff821161048c578060238301121561048c57816024611dbf93600401359101611d20565b90565b61014090600319011261048c576001600160a01b03600435818116810361048c5791602435916044359160643591608435908116810361048c579060a4359060c435801515810361048c579060e43560ff8116810361048c579061010435906101243590565b90608060031983011261048c57600435916024359067ffffffffffffffff821161048c57611e5891600401611c01565b90916044356001600160a01b038116810361048c579060643590565b15611e7b57565b634e487b7160e01b600052600160045260246000fd5b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152611eda91611ed5608483611ce6565b611ef4565b565b9081602091031261048c5751801515810361048c5790565b6001600160a01b0316906040516040810181811067ffffffffffffffff821117611cd05760405260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564910152813b1561048c57600081611f6b938260208195519301915af1611f65611f8f565b90611fcf565b80519081611f77575050565b602080611f88938301019101611edc565b1561048c57565b3d15611fca573d9067ffffffffffffffff8211611cd05760405191611fbe601f8201601f191660200184611ce6565b82523d6000602084013e565b606090565b15611fd75790565b805190811561048c57602001fd5b9081602091031261048c57516001600160a01b038116810361048c5790565b6040517fe6a439050000000000000000000000000000000000000000000000000000000081526001600160a01b03828116600483015283811660248301529396949594937f0000000000000000000000000000000000000000000000000000000000000000808216949392909160209182816044818a5afa908115612197576000916121a3575b501615612107575b5061209e9350612b36565b92908015806120ff575b156120b557505050509091565b6120c484828897959697612c00565b948386116120da5750505050811061048c579091565b836120f59496506120ec939550612c00565b93841115611e74565b821061048c579091565b5083156120a8565b6040517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015285166024820152948190869060449082906000905af19485156121975761209e95612169575b50612093565b8161218892903d10612190575b6121808183611ce6565b810190611fe5565b503880612163565b503d612176565b6040513d6000823e3d90fd5b6121ba9150833d8511612190576121808183611ce6565b3861208b565b919082039182116121cd57565b634e487b7160e01b600052601160045260246000fd5b916001600160a01b03604051927fa9059cbb000000000000000000000000000000000000000000000000000000006020850152166024830152604482015260448152608081019181831067ffffffffffffffff841117611cd057611eda92604052611ef4565b81471061048c576001600160a01b0390600080809481948294165af161226d611f8f565b50156102fd5750565b929594939193421161048c577f00000000000000000000000000000000000000000000000000000000000000006122ce81857f0000000000000000000000000000000000000000000000000000000000000000612a03565b604080516323b872dd60e01b81523360048201526001600160a01b039283166024820181905260448201959095529398899792969194602093908481806064810103816000809e5af180156124a7579b87918b9c9d9b999a9b61248a575b5060248251809d819363226bf2d160e21b83523060048401525af1998a15612480578790889b61244b575b50898061236488876129d4565b50951694168403612445575b1061030f5788106103265783516370a0823160e01b81523060048201528281602481855afa92831561243b57918791899594938894612402575b5050906123b792916121e3565b16803b156108a5578280916024845180968193632e1a7d4d60e01b83528b60048401525af19182156123f857505091611dbf93918593611aed575016612249565b51903d90823e3d90fd5b9250925092935081813d8311612434575b61241d8183611ce6565b81010312610326575186929186906123b7386123aa565b503d612413565b85513d88823e3d90fd5b99612370565b809b50878092503d8311612479575b6124648183611ce6565b8101031261094157838a519a01519938612357565b503d61245a565b86513d89823e3d90fd5b6124a090873d891161091b5761090c8183611ce6565b503861232c565b87513d8c823e3d90fd5b8051156124be5760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156124be5760209160051b010190565b91908110156124be5760051b0190565b356001600160a01b038116810361048c5790565b60001981146121cd5760010190565b926001600160a01b0391959492958452602095868501521660408301526080606083015280519081608084015260005b82811061256d57505060a09293506000838284010152601f8019910116010190565b81810186015184820160a00152850161254b565b7f000000000000000000000000000000000000000000000000000000000000000093929160005b815160001981019081116121cd578110156126f0576001600160a01b03806125d083856124d4565b5116600183018084116121cd57826125e882876124d4565b511692806126016125f986866129d4565b5093896124d4565b51921683036126e857600091935b865160011981019081116121cd578610156126dd5760028601908187116121cd5761264b8c8285612643612653968d6124d4565b511691612a03565b945b8c612a03565b16916040928351946020860186811067ffffffffffffffff821117611cd057855260008652813b1561048c57600080946126a287519889968795869463022c0d9f60e01b86526004860161251b565b03925af19081156126d35750906126bf92916126c4575b5061250c565b6125a8565b6126cd90611cbc565b386126b9565b513d6000823e3d90fd5b61265390899461264d565b60009361260f565b505050509050565b51906dffffffffffffffffffffffffffff8216820361048c57565b9081606091031261048c57612727816126f8565b916040612736602084016126f8565b92015163ffffffff8116810361048c5790565b9091907f00000000000000000000000000000000000000000000000000000000000000009060005b815160001981019081116121cd578110156129cd576001600160a01b038061279983856124d4565b5116600183018084116121cd576127b18391866124d4565b51166127bd81836129d4565b5092806127cb83858a612a03565b16604093845190630240bc6b60e21b825260609460049580848881885afa9384156129c257908691600091829661298d575b50506dffffffffffffffffffffffffffff809116941698168214928360001461298857975b8751988980946370a0823160e01b8252878a830152602095869160249d8e915afa90811561297d5760009161294e575b50906128628161286794936121c0565b612c2f565b921561294657600092945b8a516001198101908111612929578a101561293d5760028a01808b1161292957906128a16128aa93928d6124d4565b5116908c612a03565b965b86519182019082821067ffffffffffffffff8311176129165750865260008152823b1561048c576000946128f586928851998a978896879563022c0d9f60e01b8752860161251b565b03925af19081156126d357509061291192916126c4575061250c565b612771565b604187634e487b7160e01b600052526000fd5b89601189634e487b7160e01b600052526000fd5b50508b966128ac565b600094612872565b908582813d8311612976575b6129648183611ce6565b810103126102fd575051612862612852565b503d61295a565b8a513d6000823e3d90fd5b612822565b6129b193965080919250903d106129bb575b6129a98183611ce6565b810190612713565b50939038806127fd565b503d61299f565b88513d6000823e3d90fd5b5050509050565b90916001600160a01b039182841683821681811461048c5710156129fe57925b9183161561048c57565b6129f4565b91612a0d916129d4565b9190604051927f6f2ddd930000000000000000000000000000000000000000000000000000000084526020846004816001600160a01b0387165afa93841561219757600094612b16575b506040519160208301916bffffffffffffffffffffffff19809260601b16835260601b166034830152602882526060820182811067ffffffffffffffff821117611cd0576055946097946037938360405285519020917f3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000845260601b60748601527f5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000608886015260601b609885015260ac8401522060cc820152012090565b612b2f91945060203d8111612190576121808183611ce6565b9238612a57565b90806060600493612b5c612b4a87856129d4565b50966001600160a01b03948593612a03565b1660405194858092630240bc6b60e21b82525afa928315612197576000908194612bab575b5081906dffffffffffffffffffffffffffff80911694169416911614600014612ba75791565b9091565b829450612bc6915060603d81116129bb576129a98183611ce6565b5093612b81565b818102929181159184041417156121cd57565b8115612bea570490565b634e487b7160e01b600052601260045260246000fd5b801561048c5781151580612c26575b1561048c57611dbf92612c2191612bcd565b612be0565b50821515612c0f565b801561048c57811592831580612c80575b1561048c576103e3808302928304036121cd57612c5d9082612bcd565b926103e88084029384041417156121cd5781018091116121cd57611dbf91612be0565b50801515612c40565b9190821561048c5780151580612cf2575b1561048c5782612ca991612bcd565b916103e8928381029381850414901517156121cd57612cc7916121c0565b6103e3908181029181830414901517156121cd57612ce491612be0565b600181018091116121cd5790565b50811515612c9a565b90612d0582611d08565b612d126040519182611ce6565b8281528092612d23601f1991611d08565b0190602036910137565b929180516002811061048c57612d4290612cfb565b918251156124be57602083015260005b815160001981019081116121cd57811015612dce576001600160a01b039081612d7b82856124d4565b51169160018201908183116121cd57612dbc612dab612dc995612dc393612da2868a6124d4565b5116908b612b36565b90612db6868a6124d4565b51612c2f565b91866124d4565b5261250c565b612d52565b50509150565b92919283516002811061048c57612dea90612cfb565b93845192600019938481019081116121cd57612e0690876124d4565b5280518381019081116121cd57805b612e1f5750505050565b838101818111612e8257612e73612e6c612e5b6001600160a01b0380612e4586896124d4565b511690612e5287896124d4565b51169088612b36565b90612e66868c6124d4565b51612c89565b91886124d4565b528015612e8257830180612e15565b60246000634e487b7160e01b81526011600452fdfea2646970667358221220677d35228e5ba0aeea862faeacb9d61fa248871f27be27fff3bd3370acdbba8564736f6c6343000811003300000000000000000000000093f9a2765245fbef39bc1ae79acbe0222b524080000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2