0 txs
3.3k calls
constructor
No constructor.
functions
calculateCurrentWithdrawFee
viewfunction calculateCurrentWithdrawFee(address user) view returns (uint256)
calculateRemoveLiquidity
viewfunction calculateRemoveLiquidity(address account, uint256 amount) view returns (uint256[])
calculateRemoveLiquidityOneToken
viewfunction calculateRemoveLiquidityOneToken(address account, uint256 tokenAmount, uint8 tokenIndex) view returns (uint256 availableTokenAmount)
calculateSwap
viewfunction calculateSwap(uint8 tokenIndexFrom, uint8 tokenIndexTo, uint256 dx) view returns (uint256)
calculateTokenAmount
viewfunction calculateTokenAmount(address account, uint256[] amounts, bool deposit) view returns (uint256)
getA
viewfunction getA() view returns (uint256)
getAdminBalance
viewfunction getAdminBalance(uint256 index) view returns (uint256)
getAPrecise
viewfunction getAPrecise() view returns (uint256)
getDepositTimestamp
viewfunction getDepositTimestamp(address user) view returns (uint256)
getToken
viewfunction getToken(uint8 index) view returns (address)
getTokenBalance
viewfunction getTokenBalance(uint8 index) view returns (uint256)
getTokenIndex
viewfunction getTokenIndex(address tokenAddress) view returns (uint8)
getVirtualPrice
viewfunction getVirtualPrice() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
swapStorage
viewfunction swapStorage() view returns (uint256 initialA, uint256 futureA, uint256 initialATime, uint256 futureATime, uint256 swapFee, uint256 adminFee, address reserver, uint256 mintFee, uint256 burnFee, uint256 defaultWithdrawFee, address dopple, address lpToken)
addLiquidity
nonpayablefunction addLiquidity(uint256[] amounts, uint256 minToMint, uint256 deadline) returns (uint256)
initialize
nonpayablefunction initialize(address _dopple, address[] _pooledTokens, uint8[] decimals, string lpTokenName, string lpTokenSymbol, address _reserver, uint256 _a, uint256 _mintFee, uint256 _burnFee)
pause
nonpayablefunction pause()
rampA
nonpayablefunction rampA(uint256 futureA, uint256 futureTime)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 amount, uint256[] minAmounts, uint256 deadline) returns (uint256[])
removeLiquidityImbalance
nonpayablefunction removeLiquidityImbalance(uint256[] amounts, uint256 maxBurnAmount, uint256 deadline) returns (uint256)
removeLiquidityOneToken
nonpayablefunction removeLiquidityOneToken(uint256 tokenAmount, uint8 tokenIndex, uint256 minAmount, uint256 deadline) returns (uint256)
renounceOwnership
nonpayablefunction renounceOwnership()
setAdminFee
nonpayablefunction setAdminFee(uint256 newAdminFee)
setBurnFee
nonpayablefunction setBurnFee(uint256 newBurnFee)
setDefaultWithdrawFee
nonpayablefunction setDefaultWithdrawFee(uint256 newWithdrawFee)
setMintFee
nonpayablefunction setMintFee(uint256 newMintFee)
setReserver
nonpayablefunction setReserver(address newReserver)
setSwapFee
nonpayablefunction setSwapFee(uint256 newSwapFee)
stopRampA
nonpayablefunction stopRampA()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateUserWithdrawFee
nonpayablefunction updateUserWithdrawFee(address recipient, uint256 transferAmount)
withdrawAdminFees
nonpayablefunction withdrawAdminFees()
events
AddLiquidity
event AddLiquidity(address indexed provider, uint256[] tokenAmounts, uint256[] fees, uint256 invariant, uint256 lpTokenSupply)
NewAdminFee
event NewAdminFee(uint256 newAdminFee)
NewBurnFee
event NewBurnFee(uint256 newBurnFee)
NewMintFee
event NewMintFee(uint256 newMintFee)
newReserver
event newReserver(address newReserver)
NewSwapFee
event NewSwapFee(uint256 newSwapFee)
NewWithdrawFee
event NewWithdrawFee(uint256 newWithdrawFee)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RampA
event RampA(uint256 oldA, uint256 newA, uint256 initialTime, uint256 futureTime)
RemoveLiquidity
event RemoveLiquidity(address indexed provider, uint256[] tokenAmounts, uint256 lpTokenSupply)
RemoveLiquidityImbalance
event RemoveLiquidityImbalance(address indexed provider, uint256[] tokenAmounts, uint256[] fees, uint256 invariant, uint256 lpTokenSupply)
RemoveLiquidityOne
event RemoveLiquidityOne(address indexed provider, uint256 lpTokenAmount, uint256 lpTokenSupply, uint256 boughtId, uint256 tokensBought)
StopRampA
event StopRampA(uint256 currentA, uint256 time)
TokenSwap
event TokenSwap(address indexed buyer, uint256 tokensSold, uint256 tokensBought, uint128 soldId, uint128 boughtId)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x608060405260da805460ff1916905534801561001a57600080fd5b50614fec8061002a6000396000f3fe60806040523480156200001157600080fd5b50600436106200027a5760003560e01c80638456cb591162000165578063c00c125c11620000cf578063e25aa5fa1162000099578063ef0a712f116200007b578063ef0a712f1462000a9c578063f2fde38b1462000abc578063f9273ffb1462000ae5576200027a565b8063e25aa5fa1462000a72578063eddd0d9c1462000a7c576200027a565b8063c00c125c1462000a06578063c4db7fa01462000a35578063d46300fd1462000a3f578063da7a77be1462000a49576200027a565b806391ceb3eb116200012f578063a0a124dd1162000111578063a0a124dd146200098a578063a95b089f14620009b3578063ac5bf26314620009e6576200027a565b806391ceb3eb146200092f57806398899f401462000952576200027a565b80638456cb59146200087f57806384cdd9bc14620008895780638beb60b614620009055780638da5cb5b1462000925576200027a565b80634bf2c7c911620002075780635fd65f0f11620001d1578063715018a611620001b3578063715018a614620008075780637c61e561146200081157806382b866001462000840576200027a565b80635fd65f0f146200074d57806366c0bd2414620007c8576200027a565b80634bf2c7c9146200066d5780634d49e87d146200068d578063593d132c14620007095780635c975abb146200072f576200027a565b806334e19907116200024957806334e1990714620005e55780633e3a156014620006055780633f4ba83a146200063a5780634a1b0d571462000644576200027a565b80630419b45a146200027f5780630ba81959146200028b5780631b3f94fb14620002a757806331cd52b01462000516575b600080fd5b6200028962000b6d565b005b6200029562000c6c565b60408051918252519081900360200190f35b620002896004803603610120811015620002c057600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115620002ec57600080fd5b820183602082011115620002ff57600080fd5b803590602001918460208302840111640100000000831117156200032257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156200037357600080fd5b8201836020820111156200038657600080fd5b80359060200191846020830284011164010000000083111715620003a957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050640100000000811115620003fa57600080fd5b8201836020820111156200040d57600080fd5b803590602001918460018302840111640100000000831117156200043057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156200048457600080fd5b8201836020820111156200049757600080fd5b80359060200191846001830284011164010000000083111715620004ba57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550506001600160a01b03833516935050506020810135906040810135906060013562000cf4565b62000593600480360360608110156200052e57600080fd5b813591908101906040810160208201356401000000008111156200055157600080fd5b8201836020820111156200056457600080fd5b803590602001918460208302840111640100000000831117156200058757600080fd5b9193509150356200144a565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015620005d1578181015183820152602001620005b7565b505050509050019250505060405180910390f35b6200028960048036036020811015620005fd57600080fd5b503562001691565b62000295600480360360808110156200061d57600080fd5b5080359060ff602082013516906040810135906060013562001799565b620002896200196d565b62000295600480360360208110156200065c57600080fd5b50356001600160a01b0316620019f2565b62000289600480360360208110156200068557600080fd5b503562001aa5565b6200029560048036036060811015620006a557600080fd5b810190602081018135640100000000811115620006c157600080fd5b820183602082011115620006d457600080fd5b80359060200191846020830284011164010000000083111715620006f757600080fd5b91935091508035906020013562001b91565b62000289600480360360408110156200072157600080fd5b508035906020013562001d37565b6200073962001e47565b604080519115158252519081900360200190f35b6200075762001e50565b604080519c8d5260208d019b909b528b8b019990995260608b019790975260808a019590955260a08901939093526001600160a01b0391821660c089015260e08801526101008701919091526101208601919091529081166101408501521661016083015251908190036101800190f35b620007f160048036036020811015620007e057600080fd5b50356001600160a01b031662001e88565b6040805160ff9092168252519081900360200190f35b6200028962001f16565b62000593600480360360408110156200082957600080fd5b506001600160a01b03813516906020013562001ff1565b62000863600480360360208110156200085857600080fd5b503560ff166200216d565b604080516001600160a01b039092168252519081900360200190f35b62000289620021f7565b6200029560048036036060811015620008a157600080fd5b810190602081018135640100000000811115620008bd57600080fd5b820183602082011115620008d057600080fd5b80359060200191846020830284011164010000000083111715620008f357600080fd5b9193509150803590602001356200227a565b62000289600480360360208110156200091d57600080fd5b503562002420565b620008636200250c565b62000295600480360360208110156200094757600080fd5b503560ff166200251b565b62000295600480360360608110156200096a57600080fd5b5080356001600160a01b0316906020810135906040013560ff166200259c565b6200028960048036036020811015620009a257600080fd5b50356001600160a01b03166200265c565b6200029560048036036060811015620009cb57600080fd5b5060ff81358116916020810135909116906040013562002750565b6200028960048036036020811015620009fe57600080fd5b503562002804565b620002896004803603604081101562000a1e57600080fd5b506001600160a01b038135169060200135620028f0565b62000289620029d2565b6200029562002ab7565b620002956004803603602081101562000a6157600080fd5b50356001600160a01b031662002b0c565b6200029562002b8b565b620002896004803603602081101562000a9457600080fd5b503562002be0565b620002956004803603602081101562000ab457600080fd5b503562002ccc565b620002896004803603602081101562000ad457600080fd5b50356001600160a01b031662002d29565b620002956004803603606081101562000afd57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111562000b2957600080fd5b82018360208201111562000b3c57600080fd5b8035906020019184602083028401116401000000008311171562000b5f57600080fd5b919350915035151562002e5d565b62000b7762002f3b565b6001600160a01b031662000b8a6200250c565b6001600160a01b03161462000be6576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e6324c5c75160c962000c0c6200250c565b6040518363ffffffff1660e01b815260040180838152602001826001600160a01b031681526020019250505060006040518083038186803b15801562000c5157600080fd5b505af415801562000c66573d6000803e3d6000fd5b50505050565b600060c9739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e63c9b64dcb90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801562000cc157600080fd5b505af415801562000cd6573d6000803e3d6000fd5b505050506040513d602081101562000ced57600080fd5b5051905090565b600054610100900460ff168062000d10575062000d1062002f3f565b8062000d1f575060005460ff16155b62000d5c5760405162461bcd60e51b815260040180806020018281038252602e81526020018062004f68602e913960400191505060405180910390fd5b600054610100900460ff1615801562000d88576000805460ff1961ff0019909116610100171660011790555b62000d9262002f52565b62000d9c6200301a565b600189511162000df3576040805162461bcd60e51b815260206004820152601960248201527f5f706f6f6c6564546f6b656e732e6c656e677468203c3d203100000000000000604482015290519081900360640190fd5b60208951111562000e4b576040805162461bcd60e51b815260206004820152601960248201527f5f706f6f6c6564546f6b656e732e6c656e677468203e20333200000000000000604482015290519081900360640190fd5b875189511462000ea2576040805162461bcd60e51b815260206004820152601f60248201527f5f706f6f6c6564546f6b656e7320646563696d616c73206d69736d6174636800604482015290519081900360640190fd5b6060885167ffffffffffffffff8111801562000ebd57600080fd5b5060405190808252806020026020018201604052801562000ee8578160200160208202803683370190505b50905060005b8a518160ff161015620011775760ff81161562000fde5760db60008c8360ff168151811062000f1957fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615801562000f8c57508a8160ff168151811062000f5957fe5b60200260200101516001600160a01b03168b60008151811062000f7857fe5b60200260200101516001600160a01b031614155b62000fde576040805162461bcd60e51b815260206004820152601060248201527f4475706c696361746520746f6b656e7300000000000000000000000000000000604482015290519081900360640190fd5b60006001600160a01b03168b8260ff168151811062000ff957fe5b60200260200101516001600160a01b031614156200105e576040805162461bcd60e51b815260206004820152601d60248201527f546865203020616464726573732069736e277420616e204552432d3230000000604482015290519081900360640190fd5b601260ff168a8260ff16815181106200107357fe5b602002602001015160ff161115620010d2576040805162461bcd60e51b815260206004820152601a60248201527f546f6b656e20646563696d616c732065786365656473206d6178000000000000604482015290519081900360640190fd5b620011058a8260ff1681518110620010e657fe5b602002602001015160ff16601260ff16620030b890919063ffffffff16565b600a0a828260ff16815181106200111857fe5b6020026020010181815250508060db60008d8460ff16815181106200113957fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191660ff9290921691909117905560010162000eee565b50620f42408510620011d0576040805162461bcd60e51b815260206004820152601260248201527f5f612065786365656473206d6178696d756d0000000000000000000000000000604482015290519081900360640190fd5b87876012604051620011e29062003669565b60ff82166040820152606080825284519082015283518190602080830191608084019188019080838360005b83811015620012285781810151838201526020016200120e565b50505050905090810190601f168015620012565780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156200128b57818101518382015260200162001271565b50505050905090810190601f168015620012b95780820380516001836020036101000a031916815260200191505b5095505050505050604051809103906000f080158015620012de573d6000803e3d6000fd5b5060d480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905589516200132c9060d59060208d019062003677565b508051620013429060d6906020840190620036f9565b50895167ffffffffffffffff811180156200135c57600080fd5b5060405190808252806020026020018201604052801562001387578160200160208202803683370190505b5080516200139e9160d791602090910190620036f9565b50620013ac85606462003103565b60c955620013bc85606462003103565b60ca5550600060cb81905560d380546001600160a01b03808e167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560cf80549289169290911691909117905560cc81905560d084905560d183905560cd81905560ce81905560d25580156200143e576000805461ff00191690555b50505050505050505050565b606060026097541415620014a5576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002609755814281101562001501576040805162461bcd60e51b815260206004820152601060248201527f446561646c696e65206e6f74206d657400000000000000000000000000000000604482015290519081900360640190fd5b60c9739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e6373fd6b3e90918888886040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509550505050505060006040518083038186803b1580156200159357600080fd5b505af4158015620015a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526020811015620015f057600080fd5b81019080805160405193929190846401000000008211156200161157600080fd5b9083019060208201858111156200162757600080fd5b82518660208202830111640100000000821117156200164557600080fd5b82525081516020918201928201910280838360005b83811015620016745781810151838201526020016200165a565b505050509050016040525050509150506001609755949350505050565b6200169b62002f3b565b6001600160a01b0316620016ae6200250c565b6001600160a01b0316146200170a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b604080517f467e186c00000000000000000000000000000000000000000000000000000000815260c96004820152602481018390529051739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e9163467e186c916044808301926000929190829003018186803b1580156200177d57600080fd5b505af415801562001792573d6000803e3d6000fd5b5050505050565b600060026097541415620017f4576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026097556200180362001e47565b1562001856576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b8180421115620018ad576040805162461bcd60e51b815260206004820152601060248201527f446561646c696e65206e6f74206d657400000000000000000000000000000000604482015290519081900360640190fd5b604080517fe7a4db8100000000000000000000000000000000000000000000000000000000815260c960048201526024810188905260ff87166044820152606481018690529051739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e9163e7a4db81916084808301926020929190829003018186803b1580156200193057600080fd5b505af415801562001945573d6000803e3d6000fd5b505050506040513d60208110156200195c57600080fd5b505160016097559695505050505050565b6200197762002f3b565b6001600160a01b03166200198a6200250c565b6001600160a01b031614620019e6576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b620019f062003161565b565b604080517f968e559400000000000000000000000000000000000000000000000000000000815260c960048201526001600160a01b03831660248201529051600091739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e9163968e559491604480820192602092909190829003018186803b15801562001a7157600080fd5b505af415801562001a86573d6000803e3d6000fd5b505050506040513d602081101562001a9d57600080fd5b505192915050565b62001aaf62002f3b565b6001600160a01b031662001ac26200250c565b6001600160a01b03161462001b1e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b604080517f300fcb2200000000000000000000000000000000000000000000000000000000815260c96004820152602481018390529051739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e9163300fcb22916044808301926000929190829003018186803b1580156200177d57600080fd5b60006002609754141562001bec576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260975562001bfb62001e47565b1562001c4e576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b818042111562001ca5576040805162461bcd60e51b815260206004820152601060248201527f446561646c696e65206e6f74206d657400000000000000000000000000000000604482015290519081900360640190fd5b60c9739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e6340370edf90918888886040518563ffffffff1660e01b815260040180858152602001806020018381526020018281038252858582818152602001925060200280828437600081840152601f19601f8201169050808301925050509550505050505060206040518083038186803b1580156200193057600080fd5b62001d4162002f3b565b6001600160a01b031662001d546200250c565b6001600160a01b03161462001db0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b604080517f58fdd79b00000000000000000000000000000000000000000000000000000000815260c9600482015260248101849052604481018390529051739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e916358fdd79b916064808301926000929190829003018186803b15801562001e2a57600080fd5b505af415801562001e3f573d6000803e3d6000fd5b505050505050565b60655460ff1690565b60c95460ca5460cb5460cc5460cd5460ce5460cf5460d05460d15460d25460d35460d4546001600160a01b039586169591821691168c565b6001600160a01b038116600081815260db6020526040812054909160ff9091169062001eb4826200216d565b6001600160a01b03161462001f10576040805162461bcd60e51b815260206004820152601460248201527f546f6b656e20646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b92915050565b62001f2062002f3b565b6001600160a01b031662001f336200250c565b6001600160a01b03161462001f8f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b604080517ff967a81f00000000000000000000000000000000000000000000000000000000815260c960048201526001600160a01b0384166024820152604481018390529051606091739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e9163f967a81f91606480820192600092909190829003018186803b1580156200207757600080fd5b505af41580156200208c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526020811015620020d457600080fd5b8101908080516040519392919084640100000000821115620020f557600080fd5b9083019060208201858111156200210b57600080fd5b82518660208202830111640100000000821117156200212957600080fd5b82525081516020918201928201910280838360005b83811015620021585781810151838201526020016200213e565b50505050905001604052505050905092915050565b60d55460009060ff831610620021ca576040805162461bcd60e51b815260206004820152600c60248201527f4f7574206f662072616e67650000000000000000000000000000000000000000604482015290519081900360640190fd5b60d5805460ff8416908110620021dc57fe5b6000918252602090912001546001600160a01b031692915050565b6200220162002f3b565b6001600160a01b0316620022146200250c565b6001600160a01b03161462002270576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b620019f06200320f565b600060026097541415620022d5576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002609755620022e462001e47565b1562002337576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b81804211156200238e576040805162461bcd60e51b815260206004820152601060248201527f446561646c696e65206e6f74206d657400000000000000000000000000000000604482015290519081900360640190fd5b60c9739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e6341b91c2690918888886040518563ffffffff1660e01b815260040180858152602001806020018381526020018281038252858582818152602001925060200280828437600081840152601f19601f8201169050808301925050509550505050505060206040518083038186803b1580156200193057600080fd5b6200242a62002f3b565b6001600160a01b03166200243d6200250c565b6001600160a01b03161462002499576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b604080517f7046727600000000000000000000000000000000000000000000000000000000815260c96004820152602481018390529051739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e916370467276916044808301926000929190829003018186803b1580156200177d57600080fd5b6033546001600160a01b031690565b60d55460009060ff83161062002578576040805162461bcd60e51b815260206004820152601260248201527f496e646578206f7574206f662072616e67650000000000000000000000000000604482015290519081900360640190fd5b60d7805460ff84169081106200258a57fe5b90600052602060002001549050919050565b604080517fe4a9a0da00000000000000000000000000000000000000000000000000000000815260c960048201526001600160a01b03851660248201526044810184905260ff831660648201528151600092739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e9263e4a9a0da9260848083019392829003018186803b1580156200262657600080fd5b505af41580156200263b573d6000803e3d6000fd5b505050506040513d60408110156200265257600080fd5b5051949350505050565b6200266662002f3b565b6001600160a01b0316620026796200250c565b6001600160a01b031614620026d5576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b604080517fe4fef2ae00000000000000000000000000000000000000000000000000000000815260c960048201526001600160a01b03831660248201529051739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e9163e4fef2ae916044808301926000929190829003018186803b1580156200177d57600080fd5b604080517f4b23603c00000000000000000000000000000000000000000000000000000000815260c9600482015260ff808616602483015284166044820152606481018390529051600091739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e91634b23603c91608480820192602092909190829003018186803b158015620027d857600080fd5b505af4158015620027ed573d6000803e3d6000fd5b505050506040513d60208110156200265257600080fd5b6200280e62002f3b565b6001600160a01b0316620028216200250c565b6001600160a01b0316146200287d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b604080517f8ab7697e00000000000000000000000000000000000000000000000000000000815260c96004820152602481018390529051739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e91638ab7697e916044808301926000929190829003018186803b1580156200177d57600080fd5b60d4546001600160a01b0316331462002950576040805162461bcd60e51b815260206004820152601b60248201527f4f6e6c792063616c6c61626c6520627920706f6f6c20746f6b656e0000000000604482015290519081900360640190fd5b604080517fe9252d4600000000000000000000000000000000000000000000000000000000815260c960048201526001600160a01b0384166024820152604481018390529051739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e9163e9252d46916064808301926000929190829003018186803b15801562001e2a57600080fd5b620029dc62002f3b565b6001600160a01b0316620029ef6200250c565b6001600160a01b03161462002a4b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b604080517ff14e211e00000000000000000000000000000000000000000000000000000000815260c960048201529051739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e9163f14e211e916024808301926000929190829003018186803b15801562000c5157600080fd5b600060c9739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e63b0a14cfc90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801562000cc157600080fd5b604080517fe8c47a5400000000000000000000000000000000000000000000000000000000815260c960048201526001600160a01b03831660248201529051600091739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e9163e8c47a5491604480820192602092909190829003018186803b15801562001a7157600080fd5b600060c9739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e6371906c2c90916040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801562000cc157600080fd5b62002bea62002f3b565b6001600160a01b031662002bfd6200250c565b6001600160a01b03161462002c59576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b604080517ffd5e76ca00000000000000000000000000000000000000000000000000000000815260c96004820152602481018390529051739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e9163fd5e76ca916044808301926000929190829003018186803b1580156200177d57600080fd5b600060c9739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e637d0481609091846040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801562001a7157600080fd5b62002d3362002f3b565b6001600160a01b031662002d466200250c565b6001600160a01b03161462002da2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811662002de95760405162461bcd60e51b815260040180806020018281038252602681526020018062004f426026913960400191505060405180910390fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600060c9739aa48b6e2a063d5f4ab1c7c9dfaae1bb2212176e635e58579c9091878787876040518663ffffffff1660e01b815260040180868152602001856001600160a01b031681526020018060200183151581526020018281038252858582818152602001925060200280828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b15801562002f0457600080fd5b505af415801562002f19573d6000803e3d6000fd5b505050506040513d602081101562002f3057600080fd5b505195945050505050565b3390565b600062002f4c30620032a4565b15905090565b600054610100900460ff168062002f6e575062002f6e62002f3f565b8062002f7d575060005460ff16155b62002fba5760405162461bcd60e51b815260040180806020018281038252602e81526020018062004f68602e913960400191505060405180910390fd5b600054610100900460ff1615801562002fe6576000805460ff1961ff0019909116610100171660011790555b62002ff0620032aa565b62002ffa62003352565b620030046200346d565b801562003017576000805461ff00191690555b50565b600054610100900460ff16806200303657506200303662002f3f565b8062003045575060005460ff16155b620030825760405162461bcd60e51b815260040180806020018281038252602e81526020018062004f68602e913960400191505060405180910390fd5b600054610100900460ff16158015620030ae576000805460ff1961ff0019909116610100171660011790555b6200300462003520565b6000620030fc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250620035ce565b9392505050565b600082620031145750600062001f10565b828202828482816200312257fe5b0414620030fc5760405162461bcd60e51b815260040180806020018281038252602181526020018062004f966021913960400191505060405180910390fd5b6200316b62001e47565b620031bd576040805162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa620031f262002f3b565b604080516001600160a01b039092168252519081900360200190a1565b6200321962001e47565b156200326c576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620031f262002f3b565b3b151590565b600054610100900460ff1680620032c65750620032c662002f3f565b80620032d5575060005460ff16155b620033125760405162461bcd60e51b815260040180806020018281038252602e81526020018062004f68602e913960400191505060405180910390fd5b600054610100900460ff1615801562003004576000805460ff1961ff001990911661010017166001179055801562003017576000805461ff001916905550565b600054610100900460ff16806200336e57506200336e62002f3f565b806200337d575060005460ff16155b620033ba5760405162461bcd60e51b815260040180806020018281038252602e81526020018062004f68602e913960400191505060405180910390fd5b600054610100900460ff16158015620033e6576000805460ff1961ff0019909116610100171660011790555b6000620033f262002f3b565b603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801562003017576000805461ff001916905550565b600054610100900460ff16806200348957506200348962002f3f565b8062003498575060005460ff16155b620034d55760405162461bcd60e51b815260040180806020018281038252602e81526020018062004f68602e913960400191505060405180910390fd5b600054610100900460ff1615801562003501576000805460ff1961ff0019909116610100171660011790555b6065805460ff19169055801562003017576000805461ff001916905550565b600054610100900460ff16806200353c57506200353c62002f3f565b806200354b575060005460ff16155b620035885760405162461bcd60e51b815260040180806020018281038252602e81526020018062004f68602e913960400191505060405180910390fd5b600054610100900460ff16158015620035b4576000805460ff1961ff0019909116610100171660011790555b6001609755801562003017576000805461ff001916905550565b60008184841115620036615760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620036255781810151838201526020016200360b565b50505050905090810190601f168015620036535780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6117ac806200379683390190565b828054828255906000526020600020908101928215620036e7579160200282015b82811115620036e757825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390911617825560209092019160019091019062003698565b50620036f592915062003745565b5090565b82805482825590600052602060002090810192821562003737579160200282015b82811115620037375782518255916020019190600101906200371a565b50620036f59291506200377e565b5b80821115620036f55780547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560010162003746565b5b80821115620036f557600081556001016200377f56fe60806040523480156200001157600080fd5b50604051620017ac380380620017ac833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260209081015185519093508592508491620001bd916003918501906200029e565b508051620001d39060049060208401906200029e565b50506005805460ff19166012179055506000620001ef62000284565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620002508162000288565b6200025a62000284565b600680546001600160a01b0319166001600160a01b0392909216919091179055506200033a915050565b3390565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002e157805160ff191683800117855562000311565b8280016001018555821562000311579182015b8281111562000311578251825591602001919060010190620002f4565b506200031f92915062000323565b5090565b5b808211156200031f576000815560010162000324565b611462806200034a6000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c8063715018a6116100b257806395d89b4111610081578063a9059cbb11610066578063a9059cbb146103ff578063dd62ed3e14610438578063f2fde38b1461047357610136565b806395d89b41146103be578063a457c2d7146103c657610136565b8063715018a61461034457806379cc67901461034c5780638119c065146103855780638da5cb5b146103b657610136565b8063313ce5671161010957806340c10f19116100ee57806340c10f19146102b957806342966c68146102f457806370a082311461031157610136565b8063313ce56714610262578063395093511461028057610136565b806306fdde031461013b578063095ea7b3146101b857806318160ddd1461020557806323b872dd1461021f575b600080fd5b6101436104a6565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017d578181015183820152602001610165565b50505050905090810190601f1680156101aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f1600480360360408110156101ce57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561055a565b604080519115158252519081900360200190f35b61020d610577565b60408051918252519081900360200190f35b6101f16004803603606081101561023557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561057d565b61026a61061e565b6040805160ff9092168252519081900360200190f35b6101f16004803603604081101561029657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610627565b6102f2600480360360408110156102cf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610682565b005b6102f26004803603602081101561030a57600080fd5b503561075e565b61020d6004803603602081101561032757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610772565b6102f261079a565b6102f26004803603604081101561036257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561088a565b61038d6108e4565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61038d610900565b610143610921565b6101f1600480360360408110156103dc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109a0565b6101f16004803603604081101561041557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a15565b61020d6004803603604081101561044e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610a29565b6102f26004803603602081101561048957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a61565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105505780601f1061052557610100808354040283529160200191610550565b820191906000526020600020905b81548152906001019060200180831161053357829003601f168201915b5050505050905090565b600061056e610567610bc7565b8484610bcb565b50600192915050565b60025490565b600061058a848484610cde565b61061484610596610bc7565b61060f856040518060600160405280602881526020016113526028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600160205260408120906105e1610bc7565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190610e7a565b610bcb565b5060019392505050565b60055460ff1690565b600061056e610634610bc7565b8461060f8560016000610645610bc7565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610f11565b61068a610bc7565b600554610100900473ffffffffffffffffffffffffffffffffffffffff9081169116146106fe576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b80610750576040805162461bcd60e51b815260206004820152600b60248201527f616d6f756e74203d3d2030000000000000000000000000000000000000000000604482015290519081900360640190fd5b61075a8282610f72565b5050565b61076f610769610bc7565b82611089565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6107a2610bc7565b600554610100900473ffffffffffffffffffffffffffffffffffffffff908116911614610816576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600554604051600091610100900473ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b60006108c18260405180606001604052806024815260200161137a602491396108ba866108b5610bc7565b610a29565b9190610e7a565b90506108d5836108cf610bc7565b83610bcb565b6108df8383611089565b505050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1690565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105505780601f1061052557610100808354040283529160200191610550565b600061056e6109ad610bc7565b8461060f8560405180606001604052806025815260200161140860259139600160006109d7610bc7565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190610e7a565b600061056e610a22610bc7565b8484610cde565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b610a69610bc7565b600554610100900473ffffffffffffffffffffffffffffffffffffffff908116911614610add576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b2f5760405162461bcd60e51b81526004018080602001828103825260268152602001806112e46026913960400191505060405180910390fd5b60055460405173ffffffffffffffffffffffffffffffffffffffff80841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610c1d5760405162461bcd60e51b81526004018080602001828103825260248152602001806113e46024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610c6f5760405162461bcd60e51b815260040180806020018281038252602281526020018061130a6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d305760405162461bcd60e51b81526004018080602001828103825260258152602001806113bf6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610d825760405162461bcd60e51b815260040180806020018281038252602381526020018061129f6023913960400191505060405180910390fd5b610d8d8383836111b9565b610dd78160405180606001604052806026815260200161132c6026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190610e7a565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610e139082610f11565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610f095760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ece578181015183820152602001610eb6565b50505050905090810190601f168015610efb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610f6b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216610fda576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610fe6600083836111b9565b600254610ff39082610f11565b60025573ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546110269082610f11565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff82166110db5760405162461bcd60e51b815260040180806020018281038252602181526020018061139e6021913960400191505060405180910390fd5b6110e7826000836111b9565b611131816040518060600160405280602281526020016112c26022913973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020549190610e7a565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055600254611164908261125c565b60025560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6111c48383836108df565b600654604080517fc00c125c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529151919092169163c00c125c91604480830192600092919082900301818387803b15801561123f57600080fd5b505af1158015611253573d6000803e3d6000fd5b50505050505050565b6000610f6b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e7a56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220216ec5e2dd5606d9c18ff925b68c4a97e65b0bbdf84826b14891c16e6a9ee1e464736f6c634300060c00334f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212200e487f42db37388808d5cb5ed801fcfec2180cd2a28e8c7f404fd6467a4e050864736f6c634300060c0033