0 txs
1 call
constructor
constructor(address _gradientRegistry)
functions
getPairAddress
viewfunction getPairAddress(address token) view returns (address pairAddress)
getPoolInfo
viewfunction getPoolInfo(address token) view returns (tuple)
getReserves
viewfunction getReserves(address token) view returns (uint256 reserveETH, uint256 reserveToken)
getUserLPShares
viewfunction getUserLPShares(address token, address user) view returns (uint256 lpShares)
getUserSharePercentage
viewfunction getUserSharePercentage(address token, address user) view returns (uint256 sharePercentage)
gradientRegistry
viewfunction gradientRegistry() view returns (address)
marketMakers
viewfunction marketMakers(address, address) view returns (uint256 tokenAmount, uint256 ethAmount, uint256 lpShares, uint256 rewardDebt, uint256 pendingReward)
owner
viewfunction owner() view returns (address)
pools
viewfunction pools(address) view returns (uint256 totalEth, uint256 totalToken, uint256 totalLiquidity, uint256 totalLPShares, uint256 accRewardPerShare, uint256 rewardBalance, address uniswapPair)
SCALE
viewfunction SCALE() view returns (uint256)
claimReward
nonpayablefunction claimReward(address token)
emergencyWithdraw
nonpayablefunction emergencyWithdraw(address[] tokens)
emergencyWithdrawETH
nonpayablefunction emergencyWithdrawETH()
provideLiquidity
payablefunction provideLiquidity(address token, uint256 tokenAmount, uint256 minTokenAmount) payable
receiveETHFromOrderbook
payablefunction receiveETHFromOrderbook(address token, uint256 amount) payable
receiveFeeDistribution
payablefunction receiveFeeDistribution(address token) payable
receiveTokenFromOrderbook
nonpayablefunction receiveTokenFromOrderbook(address token, uint256 amount)
renounceOwnership
nonpayablefunction renounceOwnership()
setRegistry
nonpayablefunction setRegistry(address _gradientRegistry)
transferETHToOrderbook
nonpayablefunction transferETHToOrderbook(address token, uint256 amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
transferTokenToOrderbook
nonpayablefunction transferTokenToOrderbook(address token, uint256 amount)
withdrawLiquidity
nonpayablefunction withdrawLiquidity(address token, uint256 shares)
events
ETHReceivedFromOrderbook
event ETHReceivedFromOrderbook(address indexed orderbook, uint256 amount, address indexed token)
ETHTransferredToOrderbook
event ETHTransferredToOrderbook(address indexed orderbook, uint256 amount, address indexed token)
LiquidityDeposited
event LiquidityDeposited(address indexed user, address token, uint256 ethAmount, uint256 tokenAmount, uint256 lpSharesMinted)
LiquidityWithdrawn
event LiquidityWithdrawn(address indexed user, uint256 tokenAmount, uint256 ethAmount, uint256 lpSharesBurned)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PoolBalanceUpdated
event PoolBalanceUpdated(address indexed token, uint256 newTotalEth, uint256 newTotalToken, uint256 newTotalLiquidity, uint256 newTotalLPShares)
RewardClaimed
event RewardClaimed(address indexed user, uint256 amount)
RewardDeposited
event RewardDeposited(address indexed from, uint256 amount)
TokenReceivedFromOrderbook
event TokenReceivedFromOrderbook(address indexed orderbook, address indexed token, uint256 amount)
TokenTransferredToOrderbook
event TokenTransferredToOrderbook(address indexed orderbook, address indexed token, uint256 amount)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x608060405234801561001057600080fd5b50604051612ee8380380612ee883398101604081905261002f916100d8565b338061005557604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61005e81610088565b5060018055600280546001600160a01b0319166001600160a01b0392909216919091179055610108565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100ea57600080fd5b81516001600160a01b038116811461010157600080fd5b9392505050565b612dd1806101176000396000f3fe6080604052600436106101445760003560e01c806384536017116100b6578063adabfa051161006f578063adabfa05146104ac578063ae8b804d146104cc578063d279c191146104ec578063e706fad81461050c578063eced55261461052c578063f2fde38b1461054857600080fd5b8063845360171461038657806385e694b61461039b5780638a57fddd146103bb5780638da5cb5b146103ce578063a4063dbc146103ec578063a91ee0dc1461048c57600080fd5b806340a16e261161010857806340a16e261461025d578063576f4472146102d8578063715018a6146102eb5780637e49b933146103005780637e7c7a951461032e578063830562bc1461034e57600080fd5b806301c1dfba1461015057806306bfa9381461017257806306d47de9146101f55780632bb9c958146102155780633e99c1e41461022857600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b3660046129db565b610568565b005b34801561017e57600080fd5b5061019261018d366004612a67565b610708565b6040516101ec9190815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0918201516001600160a01b03169181019190915260e00190565b60405180910390f35b34801561020157600080fd5b50610170610210366004612a8b565b6107c1565b610170610223366004612ab7565b610d25565b34801561023457600080fd5b50610248610243366004612a67565b61115b565b604080519283526020830191909152016101ec565b34801561026957600080fd5b506102b0610278366004612aec565b600460208181526000938452604080852090915291835291208054600182015460028301546003840154939094015491939092909185565b604080519586526020860194909452928401919091526060830152608082015260a0016101ec565b6101706102e6366004612a67565b61129d565b3480156102f757600080fd5b506101706114a4565b34801561030c57600080fd5b5061032061031b366004612aec565b6114b8565b6040519081526020016101ec565b34801561033a57600080fd5b50610170610349366004612a8b565b6114e8565b34801561035a57600080fd5b5060025461036e906001600160a01b031681565b6040516001600160a01b0390911681526020016101ec565b34801561039257600080fd5b50610170611867565b3480156103a757600080fd5b5061036e6103b6366004612a67565b611914565b6101706103c9366004612a8b565b611b28565b3480156103da57600080fd5b506000546001600160a01b031661036e565b3480156103f857600080fd5b5061044e610407366004612a67565b60036020819052600091825260409091208054600182015460028301549383015460048401546005850154600690950154939592949293919290916001600160a01b031687565b604080519788526020880196909652948601939093526060850191909152608084015260a08301526001600160a01b031660c082015260e0016101ec565b34801561049857600080fd5b506101706104a7366004612a67565b611e45565b3480156104b857600080fd5b506101706104c7366004612a8b565b611f32565b3480156104d857600080fd5b506103206104e7366004612aec565b6121ff565b3480156104f857600080fd5b50610170610507366004612a67565b61226e565b34801561051857600080fd5b50610170610527366004612a8b565b61242b565b34801561053857600080fd5b50610320670de0b6b3a764000081565b34801561055457600080fd5b50610170610563366004612a67565b61276d565b6105706127a8565b47801561061957600080546040516001600160a01b039091169083908381818185875af1925050503d80600081146105c4576040519150601f19603f3d011682016040523d82523d6000602084013e6105c9565b606091505b50509050806106175760405162461bcd60e51b8152602060048201526015602482015274115512081dda5d1a191c985dd85b0819985a5b1959605a1b60448201526064015b60405180910390fd5b505b60005b8281101561070257600084848381811061063857610638612b25565b905060200201602081019061064d9190612a67565b90506001600160a01b038116156106f9576040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156106a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c99190612b3b565b905080156106f7576106f76106e66000546001600160a01b031690565b6001600160a01b03841690836127d5565b505b5060010161061c565b50505050565b6107516040518060e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b506001600160a01b03908116600090815260036020818152604092839020835160e0810185528154815260018201549281019290925260028101549382019390935290820154606082015260048201546080820152600582015460a082015260069091015490911660c082015290565b6107c9612834565b6001600160a01b038216600090815260036020908152604080832060048352818420338552909252909120821580159061080557506127108311155b6108515760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964207368617265732070657263656e7461676500000000000000604482015260640161060e565b600082600201541161089c5760405162461bcd60e51b8152602060048201526014602482015273139bc81b1a5c5d5a591a5d1e481a5b881c1bdbdb60621b604482015260640161060e565b600181015481546000916108af91612b6a565b9050600081116109015760405162461bcd60e51b815260206004820152601860248201527f4e6f206c697175696469747920746f2077697468647261770000000000000000604482015260640161060e565b60008260030154670de0b6b3a76400008560040154846109219190612b7d565b61092b9190612b94565b6109359190612bb6565b90508083600401600082825461094b9190612b6a565b9250508190555060006127108685600201546109679190612b7d565b6109719190612b94565b9050600081116109b75760405162461bcd60e51b815260206004820152601160248201527027379039b430b932b9903a3790313ab93760791b604482015260640161060e565b600085600301548287600101546109ce9190612b7d565b6109d89190612b94565b9050600086600301548388600001546109f19190612b7d565b6109fb9190612b94565b90506000612710898860000154610a129190612b7d565b610a1c9190612b94565b905060006127108a8960010154610a339190612b7d565b610a3d9190612b94565b905081886000016000828254610a539190612bb6565b9250508190555080886001016000828254610a6e9190612bb6565b9250508190555084886002016000828254610a899190612bb6565b90915550610a9990508385612b6a565b896002016000828254610aac9190612bb6565b9250508190555083896001016000828254610ac79190612bb6565b9091555050885483908a90600090610ae0908490612bb6565b9250508190555084896003016000828254610afb9190612bb6565b90915550506127108a148015610bee5760048901548015610be857600060048b0181905560038b01819055604051339083908381818185875af1925050503d8060008114610b65576040519150601f19603f3d011682016040523d82523d6000602084013e610b6a565b606091505b5050905080610bb15760405162461bcd60e51b8152602060048201526013602482015272119959481d1c985b9cd9995c8819985a5b1959606a1b604482015260640161060e565b60405182815233907f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72419060200160405180910390a2505b50610c28565b60048a015460018a01548a54670de0b6b3a76400009291610c0e91612b6a565b610c189190612b7d565b610c229190612b94565b60038a01555b610c3c6001600160a01b038d1633876127d5565b604051600090339086908381818185875af1925050503d8060008114610c7e576040519150601f19603f3d011682016040523d82523d6000602084013e610c83565b606091505b5050905080610cca5760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b604482015260640161060e565b604080518781526020810187905290810188905233907f9746cd459b192e14d25047ee6f0c763709fc38435eb4883830cf715de0a40ac09060600160405180910390a25050505050505050505050610d2160018055565b5050565b610d2d612834565b6001600160a01b0380841660009081526003602052604090206006810154909116610d7e57610d5b84611914565b6006820180546001600160a01b0319166001600160a01b03929092169190911790555b60068101546001600160a01b0316610da85760405162461bcd60e51b815260040161060e90612bc9565b600080610db48661115b565b91509150600082118015610dc85750600081115b610e235760405162461bcd60e51b815260206004820152602660248201527f496e73756666696369656e74206c697175696469747920696e20556e6973776160448201526538103830b4b960d11b606482015260840161060e565b600082610e308334612b7d565b610e3a9190612b94565b905084861015610e805760405162461bcd60e51b81526020600482015260116024820152700a6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b604482015260640161060e565b6064610e8d826063612b7d565b610e979190612b94565b8610158015610ebc57506064610eae826065612b7d565b610eb89190612b94565b8611155b610f085760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206c697175696469747920726174696f000000000000000000604482015260640161060e565b610f1d6001600160a01b03881633308961285e565b6001600160a01b0387166000908152600460209081526040808320338452909152812060018101548154919291610f549190612b6a565b90508015610fad5760008260030154670de0b6b3a7640000886004015484610f7c9190612b7d565b610f869190612b94565b610f909190612bb6565b905080836004016000828254610fa69190612b6a565b9091555050505b60008660030154600003610fcc57610fc5348a612b6a565b9050610ffd565b6000610fd8348b612b6a565b90508760020154886003015482610fef9190612b7d565b610ff99190612b94565b9150505b348360010160008282546110119190612b6a565b909155505082548990849060009061102a908490612b6a565b92505081905550808360020160008282546110459190612b6a565b9091555050600487015460018401548454670de0b6b3a7640000929161106a91612b6a565b6110749190612b7d565b61107e9190612b94565b600384015561108d348a612b6a565b8760020160008282546110a09190612b6a565b90915550508654349088906000906110b9908490612b6a565b92505081905550888760010160008282546110d49190612b6a565b92505081905550808760030160008282546110ef9190612b6a565b9091555050604080516001600160a01b038c1681523460208201529081018a90526060810182905233907f76eb95a037bfb0d0de0d9534dc6b6c0be4c3c7b9f6e31fd4d34d2339de6dbcd89060800160405180910390a25050505050505061115660018055565b505050565b600080600061116984611914565b90506001600160a01b0381166111915760405162461bcd60e51b815260040161060e90612bc9565b600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f69190612c12565b50915091506000836001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561123b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125f9190612c62565b9050866001600160a01b0316816001600160a01b031614611281578282611284565b81835b6001600160701b03918216999116975095505050505050565b8060006112a982611914565b90506001600160a01b0381166112d15760405162461bcd60e51b815260040161060e90612bc9565b6001600160a01b038281166000908152600360205260409020600601541661130b5760405162461bcd60e51b815260040161060e90612c7f565b6002546040516316ed852560e01b81523360048201526001600160a01b03909116906316ed852590602401602060405180830381865afa158015611353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113779190612cad565b6113da5760405162461bcd60e51b815260206004820152602e60248201527f4f6e6c7920726577617264206469737472696275746f722063616e2063616c6c60448201526d103a3434b990333ab731ba34b7b760911b606482015260840161060e565b6001600160a01b038316600090815260036020526040902060028101546114135760405162461bcd60e51b815260040161060e90612ccf565b600034116114515760405162461bcd60e51b815260206004820152600b60248201526a139bc8115512081cd95b9d60aa1b604482015260640161060e565b61145b8434612897565b836001600160a01b03167f7dbc080e4530c8bcf265eb5c9a35ae096ca1eb607b7e802b96581ef4c5e1a7033460405161149691815260200190565b60405180910390a250505050565b6114ac6127a8565b6114b6600061291a565b565b6001600160a01b038083166000908152600460209081526040808320938516835292905220600201545b92915050565b600254604051630736b32b60e31b81526001600160a01b038085166004830152849216906339b5995890602401602060405180830381865afa158015611532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115569190612cad565b156115735760405162461bcd60e51b815260040161060e90612cf5565b82600061157f82611914565b90506001600160a01b0381166115a75760405162461bcd60e51b815260040161060e90612bc9565b6001600160a01b03828116600090815260036020526040902060060154166115e15760405162461bcd60e51b815260040161060e90612c7f565b600260009054906101000a90046001600160a01b03166001600160a01b031663c18b1d5e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116589190612c62565b6001600160a01b0316336001600160a01b0316146116885760405162461bcd60e51b815260040161060e90612d1f565b600084116116a85760405162461bcd60e51b815260040161060e90612d64565b478411156116f85760405162461bcd60e51b815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e63650000000000000000604482015260640161060e565b6001600160a01b038516600090815260036020526040902060028101546117315760405162461bcd60e51b815260040161060e90612ccf565b848160000160008282546117459190612bb6565b92505081905550848160020160008282546117609190612bb6565b9091555050604051600090339087908381818185875af1925050503d80600081146117a7576040519150601f19603f3d011682016040523d82523d6000602084013e6117ac565b606091505b50509050806117fd5760405162461bcd60e51b815260206004820181905260248201527f455448207472616e7366657220746f206f72646572626f6f6b206661696c6564604482015260640161060e565b81546001830154600284015460038501546040805194855260208501939093529183015260608201526001600160a01b038816907fe7a1849d3d3b81e99267b68a3889d2f466ac59697fa69ed9f94d306737f6ecd89060800160405180910390a250505050505050565b61186f6127a8565b47801561191157600080546040516001600160a01b039091169083908381818185875af1925050503d80600081146118c3576040519150601f19603f3d011682016040523d82523d6000602084013e6118c8565b606091505b5050905080610d215760405162461bcd60e51b8152602060048201526015602482015274115512081dda5d1a191c985dd85b0819985a5b1959605a1b604482015260640161060e565b50565b600080600260009054906101000a90046001600160a01b03166001600160a01b031663f887ea406040518163ffffffff1660e01b8152600401602060405180830381865afa15801561196a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198e9190612c62565b90506001600160a01b0381166119d75760405162461bcd60e51b815260206004820152600e60248201526d149bdd5d195c881b9bdd081cd95d60921b604482015260640161060e565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a409190612c62565b90506000826001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa69190612c62565b60405163e6a4390560e01b81526001600160a01b0388811660048301528083166024830152919250839182169063e6a4390590604401602060405180830381865afa158015611af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1d9190612c62565b979650505050505050565b600254604051630736b32b60e31b81526001600160a01b038085166004830152849216906339b5995890602401602060405180830381865afa158015611b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b969190612cad565b15611bb35760405162461bcd60e51b815260040161060e90612cf5565b826000611bbf82611914565b90506001600160a01b038116611be75760405162461bcd60e51b815260040161060e90612bc9565b6001600160a01b0382811660009081526003602052604090206006015416611c215760405162461bcd60e51b815260040161060e90612c7f565b600260009054906101000a90046001600160a01b03166001600160a01b031663c18b1d5e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c989190612c62565b6001600160a01b0316336001600160a01b031614611cc85760405162461bcd60e51b815260040161060e90612d1f565b60008411611ce85760405162461bcd60e51b815260040161060e90612d64565b833414611d2d5760405162461bcd60e51b815260206004820152601360248201527208aa89040c2dadeeadce840dad2e6dac2e8c6d606b1b604482015260640161060e565b6001600160a01b03851660009081526003602052604090206002810154611d665760405162461bcd60e51b815260040161060e90612ccf565b84816000016000828254611d7a9190612b6a565b9250508190555084816002016000828254611d959190612b6a565b90915550506040518581526001600160a01b0387169033907fa83dbe67a8301965c2dd933c3feb89cae1783e4a8825466fd979d121f3f7ef69906020015b60405180910390a380546001820154600283015460038401546040805194855260208501939093529183015260608201526001600160a01b038716907fe7a1849d3d3b81e99267b68a3889d2f466ac59697fa69ed9f94d306737f6ecd8906080015b60405180910390a2505050505050565b611e4d6127a8565b60006001600160a01b0316816001600160a01b0316634513443a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eba9190612c62565b6001600160a01b031603611f105760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206772616469656e7420726567697374727900000000000000604482015260640161060e565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600254604051630736b32b60e31b81526001600160a01b038085166004830152849216906339b5995890602401602060405180830381865afa158015611f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa09190612cad565b15611fbd5760405162461bcd60e51b815260040161060e90612cf5565b826000611fc982611914565b90506001600160a01b038116611ff15760405162461bcd60e51b815260040161060e90612bc9565b6001600160a01b038281166000908152600360205260409020600601541661202b5760405162461bcd60e51b815260040161060e90612c7f565b600260009054906101000a90046001600160a01b03166001600160a01b031663c18b1d5e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a29190612c62565b6001600160a01b0316336001600160a01b0316146120d25760405162461bcd60e51b815260040161060e90612d1f565b600084116120f25760405162461bcd60e51b815260040161060e90612d64565b6001600160a01b0385166121405760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b604482015260640161060e565b6001600160a01b038516600090815260036020526040902060028101546121795760405162461bcd60e51b815260040161060e90612ccf565b61218e6001600160a01b03871633308861285e565b848160010160008282546121a29190612b6a565b92505081905550848160020160008282546121bd9190612b6a565b90915550506040518581526001600160a01b0387169033907fb61579a10a10e72eda8e63b6e1224e007f5c4108c1378c9a831a11363a74b75a90602001611dd3565b6001600160a01b038083166000908152600360208181526040808420600483528185209587168552949091528220908301549192918303612245576000925050506114e2565b6003820154600282015461225b90612710612b7d565b6122659190612b94565b95945050505050565b612276612834565b6001600160a01b03811660009081526003602090815260408083206004835281842033855290925290912060028101546122c25760405162461bcd60e51b815260040161060e90612ccf565b6000670de0b6b3a7640000836004015483600201546122e19190612b7d565b6122eb9190612b94565b9050600082600401548360030154836123049190612bb6565b61230e9190612b6a565b90506000811161234d5760405162461bcd60e51b815260206004820152600a6024820152694e6f207265776172647360b01b604482015260640161060e565b60038301829055600060048401819055604051339083908381818185875af1925050503d806000811461239c576040519150601f19603f3d011682016040523d82523d6000602084013e6123a1565b606091505b50509050806123e85760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b604482015260640161060e565b60405182815233907f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72419060200160405180910390a2505050505061191160018055565b600254604051630736b32b60e31b81526001600160a01b038085166004830152849216906339b5995890602401602060405180830381865afa158015612475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124999190612cad565b156124b65760405162461bcd60e51b815260040161060e90612cf5565b8260006124c282611914565b90506001600160a01b0381166124ea5760405162461bcd60e51b815260040161060e90612bc9565b6001600160a01b03828116600090815260036020526040902060060154166125245760405162461bcd60e51b815260040161060e90612c7f565b600260009054906101000a90046001600160a01b03166001600160a01b031663c18b1d5e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259b9190612c62565b6001600160a01b0316336001600160a01b0316146125cb5760405162461bcd60e51b815260040161060e90612d1f565b600084116125eb5760405162461bcd60e51b815260040161060e90612d64565b6001600160a01b0385166126395760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b604482015260640161060e565b6001600160a01b038516600090815260036020526040902060028101546126725760405162461bcd60e51b815260040161060e90612ccf565b84816001015410156126c65760405162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e7420706f6f6c20746f6b656e2062616c616e636500604482015260640161060e565b848160010160008282546126da9190612bb6565b92505081905550848160020160008282546126f59190612bb6565b9091555061270f90506001600160a01b03871633876127d5565b80546001820154600283015460038401546040805194855260208501939093529183015260608201526001600160a01b038716907fe7a1849d3d3b81e99267b68a3889d2f466ac59697fa69ed9f94d306737f6ecd890608001611e35565b6127756127a8565b6001600160a01b03811661279f57604051631e4fbdf760e01b81526000600482015260240161060e565b6119118161291a565b6000546001600160a01b031633146114b65760405163118cdaa760e01b815233600482015260240161060e565b6040516001600160a01b0383811660248301526044820183905261115691859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061296a565b60026001540361285757604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b6040516001600160a01b0384811660248301528381166044830152606482018390526107029186918216906323b872dd90608401612802565b6001600160a01b03821660009081526003602081905260408220908101549091036128c157505050565b60038101546128d8670de0b6b3a764000084612b7d565b6128e29190612b94565b8160040160008282546128f59190612b6a565b92505081905550818160050160008282546129109190612b6a565b9091555050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080602060008451602086016000885af18061298d576040513d6000823e3d81fd5b50506000513d915081156129a55780600114156129b2565b6001600160a01b0384163b155b1561070257604051635274afe760e01b81526001600160a01b038516600482015260240161060e565b600080602083850312156129ee57600080fd5b823567ffffffffffffffff811115612a0557600080fd5b8301601f81018513612a1657600080fd5b803567ffffffffffffffff811115612a2d57600080fd5b8560208260051b8401011115612a4257600080fd5b6020919091019590945092505050565b6001600160a01b038116811461191157600080fd5b600060208284031215612a7957600080fd5b8135612a8481612a52565b9392505050565b60008060408385031215612a9e57600080fd5b8235612aa981612a52565b946020939093013593505050565b600080600060608486031215612acc57600080fd5b8335612ad781612a52565b95602085013595506040909401359392505050565b60008060408385031215612aff57600080fd5b8235612b0a81612a52565b91506020830135612b1a81612a52565b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612b4d57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156114e2576114e2612b54565b80820281158282048414176114e2576114e2612b54565b600082612bb157634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156114e2576114e2612b54565b60208082526013908201527214185a5c88191bd95cc81b9bdd08195e1a5cdd606a1b604082015260600190565b80516001600160701b0381168114612c0d57600080fd5b919050565b600080600060608486031215612c2757600080fd5b612c3084612bf6565b9250612c3e60208501612bf6565b9150604084015163ffffffff81168114612c5757600080fd5b809150509250925092565b600060208284031215612c7457600080fd5b8151612a8481612a52565b602080825260149082015273141bdbdb081b9bdd081a5b9a5d1a585b1a5e995960621b604082015260600190565b600060208284031215612cbf57600080fd5b81518015158114612a8457600080fd5b6020808252600c908201526b4e6f206c697175696469747960a01b604082015260600190565b60208082526010908201526f151bdad95b881a5cc8189b1bd8dad95960821b604082015260600190565b60208082526025908201527f4f6e6c79206f72646572626f6f6b2063616e2063616c6c20746869732066756e60408201526431ba34b7b760d91b606082015260800190565b6020808252601d908201527f416d6f756e74206d7573742062652067726561746572207468616e203000000060408201526060019056fea264697066735822122051db2e934b07583b34cdb850020f9601382c1f3caa39681c5384901d0219e05464736f6c634300081a0033000000000000000000000000893d41635725d8ea6f528d3f3f3df3e9e8076934