0 txs
0 calls
constructor
No constructor.
functions
arbitrage
viewfunction arbitrage() view returns (address)
bankx_address
viewfunction bankx_address() view returns (address)
bankx_breaker
viewfunction bankx_breaker() view returns (uint256 last_price)
BankXWETH_pool_address
viewfunction BankXWETH_pool_address() view returns (address)
block_delay
viewfunction block_delay() view returns (uint256)
collateral_pool_address
viewfunction collateral_pool_address() view returns (address)
getBankXPriceFromPool
viewfunction getBankXPriceFromPool() view returns (uint256)
getCurrentVolume
viewfunction getCurrentVolume() view returns (uint256)
getPriceThreshold
viewfunction getPriceThreshold(uint8 token_type) view returns (uint256)
getRemainingCapacity
viewfunction getRemainingCapacity() view returns (uint256)
getTimeUntilReset
viewfunction getTimeUntilReset() view returns (uint256)
getVolumeThreshold
viewfunction getVolumeThreshold(uint8 token_type) view returns (uint256)
getXSDPriceFromPool
viewfunction getXSDPriceFromPool() view returns (uint256)
liquidity_paused
viewfunction liquidity_paused() view returns (bool)
minSwapAmountUSD
viewfunction minSwapAmountUSD() view returns (uint256)
pool_precision
viewfunction pool_precision() view returns (uint256)
reward_manager_address
viewfunction reward_manager_address() view returns (address)
smartcontract_owner
viewfunction smartcontract_owner() view returns (address)
swap_paused
viewfunction swap_paused() view returns (bool)
treasury
viewfunction treasury() view returns (address)
WETH
viewfunction WETH() view returns (address)
xsd_address
viewfunction xsd_address() view returns (address)
xsd_breaker
viewfunction xsd_breaker() view returns (uint256 last_price)
XSDWETH_pool_address
viewfunction XSDWETH_pool_address() view returns (address)
creatorAddLiquidityETH
payablefunction creatorAddLiquidityETH(address pool, uint256 deadline) payable
creatorAddLiquidityTokens
nonpayablefunction creatorAddLiquidityTokens(address tokenB, uint256 amountB, uint256 deadline)
initialize
nonpayablefunction initialize(address _bankx_address, address _xsd_address, address _XSDWETH_pool, address _BankXWETH_pool, address _collateral_pool, address _reward_manager_address, address _pid_address, address _treasury, address _smartcontract_owner, address _WETH, uint256 _block_delay)
pauseLiquidity
nonpayablefunction pauseLiquidity()
pauseSwaps
nonpayablefunction pauseSwaps()
renounceOwnership
nonpayablefunction renounceOwnership()
resetGlobalVolume
nonpayablefunction resetGlobalVolume()
setArbitrageAddress
nonpayablefunction setArbitrageAddress(address _arbitrage)
setBankXAddress
nonpayablefunction setBankXAddress(address _bankx_address)
setBankXPoolAddress
nonpayablefunction setBankXPoolAddress(address _BankXWETH_pool)
setCollateralPool
nonpayablefunction setCollateralPool(address _collateral_pool)
setMinSwapAmountUSD
nonpayablefunction setMinSwapAmountUSD(uint256 _minUSD)
setPIDController
nonpayablefunction setPIDController(address _pid_address)
setRewardManager
nonpayablefunction setRewardManager(address _reward_manager_address)
setSafetyThresholds
nonpayablefunction setSafetyThresholds(uint8 token_type, uint256 _price_threshold, uint256 _volume_threshold)
setSmartContractOwner
nonpayablefunction setSmartContractOwner(address _smartcontract_owner)
setTimeInterval
nonpayablefunction setTimeInterval(uint256 _seconds)
setVolumeThreshold
nonpayablefunction setVolumeThreshold(uint256 _ethAmount)
setXSDAddress
nonpayablefunction setXSDAddress(address _xsd_address)
setXSDPoolAddress
nonpayablefunction setXSDPoolAddress(address _XSDWETH_pool)
swapBankXForETH
nonpayablefunction swapBankXForETH(uint256 amountOut, uint256 amountInMax, uint256 deadline)
swapETHForBankX
payablefunction swapETHForBankX(uint256 amountOut, uint256 deadline) payable
swapETHForXSD
payablefunction swapETHForXSD(uint256 amountOut, uint256 deadline) payable
swapXSDForETH
nonpayablefunction swapXSDForETH(uint256 amountOut, uint256 amountInMax, uint256 deadline)
userAddLiquidityETH
payablefunction userAddLiquidityETH(address pool, uint256 deadline) payable
userRedeemLiquidity
nonpayablefunction userRedeemLiquidity(address pool, uint256 deadline)
events
EmergencyOverrideActivated
event EmergencyOverrideActivated(address admin, string reason)
GlobalVolumeConfigChanged
event GlobalVolumeConfigChanged(string parameter, uint256 oldValue, uint256 newValue)
GlobalVolumeReset
event GlobalVolumeReset(uint256 timestamp, address admin)
GlobalVolumeThresholdExceeded
event GlobalVolumeThresholdExceeded(uint256 currentVolume, uint256 threshold, uint256 resumeTime)
MinSwapAmountUSDUpdated
event MinSwapAmountUSDUpdated(uint256 oldAmount, uint256 newAmount)
RouterInitialized
event RouterInitialized(address indexed bankx_address, address indexed xsd_address, address indexed XSDWETH_pool, address BankXWETH_pool, address collateral_pool, uint256 block_delay)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b506001603355614612806100256000396000f3fe6080604052600436106102cd5760003560e01c8063815c8c4811610175578063a8f6182e116100dc578063c4632ed011610095578063ea88dc421161006f578063ea88dc4214610827578063ec0702b614610847578063f2d580ff14610861578063f34793f51461088157600080fd5b8063c4632ed0146107dd578063d017834b146107f2578063dc0bd2371461080757600080fd5b8063a8f6182e14610731578063abf77c9014610760578063ad5c464814610775578063b15f62e714610795578063b3101626146107a8578063bf9e7a12146107bd57600080fd5b806398ee20ab1161012e57806398ee20ab1461067a578063990fbcc21461069a5780639c6b555d146106ba5780639d3688f8146106d1578063a3a1d7cb146106f1578063a4619c591461071157600080fd5b8063815c8c48146105d857806383b638ee146105ee578063846c177e1461060e57806387be0faf1461062e5780638b2941ca146106435780639110a2a71461066357600080fd5b806345cd873a1161023457806366751c82116101ed578063715018a6116101c7578063715018a61461057057806376abc473146105855780637dd640a0146105a557806380e44213146105b857600080fd5b806366751c821461051a57806369c8d338146105305780636b1fdf0d1461055057600080fd5b806345cd873a146104795780634e49836b1461049957806350d3cea7146104b9578063513a39b7146104d0578063558b7dd1146104e557806361d027b3146104fa57600080fd5b806328f797571161028657806328f79757146103b35780632bcab36c146103e657806330a866fc1461041e5780633b20d74e14610431578063414d3a58146104445780634404b5bd1461045957600080fd5b80630a738e1a146102f3578063153ee5541461031357806317ddc10a146103335780631971d386146103535780631ba288781461037357806325423a1b1461039357600080fd5b366102ee576034546001600160a01b031633146102ec576102ec61404b565b005b600080fd5b3480156102ff57600080fd5b506102ec61030e366004614078565b6108a1565b34801561031f57600080fd5b506102ec61032e366004614078565b61091e565b34801561033f57600080fd5b506102ec61034e366004614093565b61099c565b34801561035f57600080fd5b506102ec61036e3660046140ac565b610a0c565b34801561037f57600080fd5b506102ec61038e366004614078565b610c55565b34801561039f57600080fd5b506102ec6103ae366004614093565b610cc9565b3480156103bf57600080fd5b506103d36103ce3660046140f0565b610da6565b6040519081526020015b60405180910390f35b3480156103f257600080fd5b50603b54610406906001600160a01b031681565b6040516001600160a01b0390911681526020016103dd565b6102ec61042c36600461410b565b610e11565b6102ec61043f36600461412d565b61132d565b34801561045057600080fd5b506102ec61157d565b34801561046557600080fd5b506102ec61047436600461412d565b6115c4565b34801561048557600080fd5b506102ec610494366004614078565b6116ae565b3480156104a557600080fd5b506102ec6104b4366004614157565b611722565b3480156104c557600080fd5b506046546103d39081565b3480156104dc57600080fd5b506103d3611e64565b3480156104f157600080fd5b506102ec611eda565b34801561050657600080fd5b50603c54610406906001600160a01b031681565b34801561052657600080fd5b506103d3603e5481565b34801561053c57600080fd5b50603954610406906001600160a01b031681565b34801561055c57600080fd5b506102ec61056b366004614183565b611f18565b34801561057c57600080fd5b506102ec612362565b34801561059157600080fd5b506102ec6105a0366004614078565b61239e565b6102ec6105b336600461412d565b612412565b3480156105c457600080fd5b506102ec6105d3366004614078565b61262c565b3480156105e457600080fd5b506103d360425481565b3480156105fa57600080fd5b50603754610406906001600160a01b031681565b34801561061a57600080fd5b50603854610406906001600160a01b031681565b34801561063a57600080fd5b506103d36126a0565b34801561064f57600080fd5b506102ec61065e366004614157565b612711565b34801561066f57600080fd5b506103d3620f424081565b34801561068657600080fd5b506102ec610695366004614078565b612c85565b3480156106a657600080fd5b506102ec6106b5366004614093565b612cd1565b3480156106c657600080fd5b506045546103d39081565b3480156106dd57600080fd5b506102ec6106ec366004614078565b612db1565b3480156106fd57600080fd5b50603554610406906001600160a01b031681565b34801561071d57600080fd5b506102ec61072c366004614248565b612e25565b34801561073d57600080fd5b50603f5461075090610100900460ff1681565b60405190151581526020016103dd565b34801561076c57600080fd5b506102ec612f35565b34801561078157600080fd5b50603454610406906001600160a01b031681565b6102ec6107a336600461410b565b612fbc565b3480156107b457600080fd5b506103d3613470565b3480156107c957600080fd5b50603d54610406906001600160a01b031681565b3480156107e957600080fd5b506103d36135d9565b3480156107fe57600080fd5b506103d3613631565b34801561081357600080fd5b50603a54610406906001600160a01b031681565b34801561083357600080fd5b50603654610406906001600160a01b031681565b34801561085357600080fd5b50603f546107509060ff1681565b34801561086d57600080fd5b506102ec61087c366004614078565b61367e565b34801561088d57600080fd5b506103d361089c3660046140f0565b6136f2565b806001600160a01b0381166108d15760405162461bcd60e51b81526004016108c890614266565b60405180910390fd5b603d546001600160a01b031633146108fb5760405162461bcd60e51b81526004016108c890614290565b50603b80546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b0381166109455760405162461bcd60e51b81526004016108c890614266565b603d546001600160a01b0316331461096f5760405162461bcd60e51b81526004016108c890614290565b50603880546001600160a01b039092166001600160a01b0319928316811790915560408054909216179055565b603d546001600160a01b031633146109c65760405162461bcd60e51b81526004016108c890614290565b604280549082905560408051828152602081018490527f50f5841b513ecd2e44c05eb6fb70744f570bea62e4c0f24f16fd9d3e9719b4e491015b60405180910390a15050565b8042811015610a2d5760405162461bcd60e51b81526004016108c8906142ba565b603c546001600160a01b0316331480610a505750603d546001600160a01b031633145b610a6c5760405162461bcd60e51b81526004016108c890614290565b603b546001600160a01b0385811691161480610a955750603a546001600160a01b038581169116145b610ae15760405162461bcd60e51b815260206004820152601860248201527f746f6b656e206164647265737320697320696e76616c6964000000000000000060448201526064016108c8565b60008311610b315760405162461bcd60e51b815260206004820152601b60248201527f506c6561736520656e74657220612076616c696420616d6f756e74000000000060448201526064016108c8565b603b546001600160a01b0390811690851603610bc257603654610b6190859033906001600160a01b031686613759565b604080548151632db3f04960e11b815291516001600160a01b0390911691635b67e09291600480830192600092919082900301818387803b158015610ba557600080fd5b505af1158015610bb9573d6000803e3d6000fd5b50505050610c4f565b603a546001600160a01b0390811690851603610c4f57603754610bf290859033906001600160a01b031686613759565b60408054815163e09d3c3f60e01b815291516001600160a01b039091169163e09d3c3f91600480830192600092919082900301818387803b158015610c3657600080fd5b505af1158015610c4a573d6000803e3d6000fd5b505050505b50505050565b806001600160a01b038116610c7c5760405162461bcd60e51b81526004016108c890614266565b603d546001600160a01b03163314610ca65760405162461bcd60e51b81526004016108c890614290565b50603580546001600160a01b0319166001600160a01b0392909216919091179055565b603d546001600160a01b03163314610cf35760405162461bcd60e51b81526004016108c890614290565b60008111610d435760405162461bcd60e51b815260206004820152601960248201527f54696d6520696e74657276616c206d757374206265203e20300000000000000060448201526064016108c8565b6049805490829055604080516060808252600c908201526b1d1a5b59525b9d195c9d985b60a21b6080820152602081018390529081018390527f25f31f8b59740095dfbc8b8b0c872ae19303f0396f02cbb6d72976bc389c463c9060a001610a00565b603d546000906001600160a01b03163314610dd35760405162461bcd60e51b81526004016108c890614290565b60018260ff161115610df75760405162461bcd60e51b81526004016108c8906142e2565b5060ff81166000908152604460205260409020545b919050565b603f5460ff1615610e345760405162461bcd60e51b81526004016108c89061430e565b603e546041546040516305f12e7760e11b81523360048201524392916001600160a01b031690630be25cee906024016040805180830381865afa158015610e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea39190614345565b51610eae91906143bd565b11158015610f2757506041546040516305f12e7760e11b81523360048201526001600160a01b0390911690630be25cee906024016040805180830381865afa158015610efe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f229190614345565b602001515b610f435760405162461bcd60e51b81526004016108c8906143d0565b8042811015610f645760405162461bcd60e51b81526004016108c8906142ba565b610f6c61388f565b6000603f60029054906101000a90046001600160a01b03166001600160a01b031663345ba24b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe591906143fb565b604254909150620f4240610ff98334614414565b611003919061442b565b10156110215760405162461bcd60e51b81526004016108c89061444d565b600080603760009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b91906144a5565b506001600160701b031691506001600160701b0316915060006110bf3483856138e8565b9050868110156110e15760405162461bcd60e51b81526004016108c8906144f5565b6111636001604160009054906101000a90046001600160a01b03166001600160a01b031663f195a3ab6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d91906143fb565b346139c8565b603460009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b505060345460375460405163a9059cbb60e01b81526001600160a01b0391821660048201523460248201529116935063a9059cbb925060440190506020604051808303816000875af1158015611221573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611245919061453c565b6112515761125161404b565b6037546040516336cd320560e11b815260048101899052600060248201523360448201526001600160a01b0390911690636d9a640a90606401600060405180830381600087803b1580156112a457600080fd5b505af11580156112b8573d6000803e3d6000fd5b50505050505050506112ca6001603355565b5060415460405163bb82130b60e01b81523360048201526001600160a01b039091169063bb82130b906024015b600060405180830381600087803b15801561131157600080fd5b505af1158015611325573d6000803e3d6000fd5b505050505050565b804281101561134e5760405162461bcd60e51b81526004016108c8906142ba565b6036546001600160a01b038481169116148061137757506037546001600160a01b038481169116145b8061138f57506035546001600160a01b038481169116145b6113db5760405162461bcd60e51b815260206004820152601960248201527f506f6f6c2061646472657373206973206e6f742076616c69640000000000000060448201526064016108c8565b603f54610100900460ff16156114035760405162461bcd60e51b81526004016108c89061430e565b603460009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561145357600080fd5b505af1158015611467573d6000803e3d6000fd5b505060345460405163a9059cbb60e01b81526001600160a01b038881166004830152346024830152909116935063a9059cbb925060440190506020604051808303816000875af11580156114bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e3919061453c565b6114ef576114ef61404b565b6035546001600160a01b039081169084160361156e57604080549051630cf8438960e31b81523360048201523460248201526001600160a01b03909116906367c21c48906044015b600060405180830381600087803b15801561155157600080fd5b505af1158015611565573d6000803e3d6000fd5b50505050505050565b6115788333613cbe565b505050565b603d546001600160a01b031633146115a75760405162461bcd60e51b81526004016108c890614290565b603f805461ff001981166101009182900460ff1615909102179055565b80428110156115e55760405162461bcd60e51b81526004016108c8906142ba565b6036546001600160a01b038481169116148061160e57506037546001600160a01b038481169116145b8061162657506035546001600160a01b038481169116145b6116615760405162461bcd60e51b815260206004820152600c60248201526b125b9d985b1a59081c1bdbdb60a21b60448201526064016108c8565b604080549051631f96188760e01b81526001600160a01b03858116600483015233602483015290911690631f96188790604401600060405180830381600087803b15801561155157600080fd5b806001600160a01b0381166116d55760405162461bcd60e51b81526004016108c890614266565b603d546001600160a01b031633146116ff5760405162461bcd60e51b81526004016108c890614290565b50603680546001600160a01b0319166001600160a01b0392909216919091179055565b603f5460ff16156117455760405162461bcd60e51b81526004016108c89061430e565b603e546041546040516305f12e7760e11b81523360048201524392916001600160a01b031690630be25cee906024016040805180830381865afa158015611790573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b49190614345565b516117bf91906143bd565b1115801561183857506041546040516305f12e7760e11b81523360048201526001600160a01b0390911690630be25cee906024016040805180830381865afa15801561180f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118339190614345565b602001515b6118545760405162461bcd60e51b81526004016108c8906143d0565b80428110156118755760405162461bcd60e51b81526004016108c8906142ba565b61187d61388f565b60415460408051631819c17b60e11b815290516000926001600160a01b03169163303382f69160048083019260209291908290030181865afa1580156118c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118eb91906143fb565b90506000620f42406118fd8387614414565b611907919061442b565b90506042548110156119655760405162461bcd60e51b815260206004820152602160248201527f58534420696e7075742062656c6f77206d696e696d756d205553442076616c756044820152606560f81b60648201526084016108c8565b600080603660009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df91906144a5565b506001600160701b031691506001600160701b031691506000611a038983856138e8565b905087811115611a255760405162461bcd60e51b81526004016108c890614557565b611b346000604160009054906101000a90046001600160a01b03166001600160a01b031663303382f66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa191906143fb565b603f60029054906101000a90046001600160a01b03166001600160a01b031663345ba24b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1891906143fb565b611b2588620f4240614414565b611b2f919061442b565b6139c8565b603b54603654611b53916001600160a01b03908116913391168b613759565b6036546040516336cd320560e11b815260006004820152602481018b90523060448201526001600160a01b0390911690636d9a640a90606401600060405180830381600087803b158015611ba657600080fd5b505af1158015611bba573d6000803e3d6000fd5b5050603454604051632e1a7d4d60e01b8152600481018d90526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b158015611c0457600080fd5b505af1158015611c18573d6000803e3d6000fd5b50505050611c26338a613d67565b611c31600a8961442b565b603560009054906101000a90046001600160a01b03166001600160a01b0316632c09ffdc6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611caa91906143fb565b603f60029054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2191906143fb565b611d2b919061459a565b118015611dac5750604160009054906101000a90046001600160a01b03166001600160a01b031663ca2f9c486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611daa919061453c565b155b15611e2457603f546201000090046001600160a01b0316632703a311611dd3600a8b61442b565b6040518263ffffffff1660e01b8152600401611df191815260200190565b600060405180830381600087803b158015611e0b57600080fd5b505af1158015611e1f573d6000803e3d6000fd5b505050505b5050505050611e336001603355565b5060415460405163bb82130b60e01b81523360048201526001600160a01b039091169063bb82130b90602401611537565b603d546000906001600160a01b03163314611e915760405162461bcd60e51b81526004016108c890614290565b6000611e9b613e41565b90506000604954826001611eaf91906143bd565b611eb99190614414565b9050428111611ec9576000611ed3565b611ed3428261459a565b9250505090565b603d546001600160a01b03163314611f045760405162461bcd60e51b81526004016108c890614290565b603f805460ff19811660ff90911615179055565b600054610100900460ff1680611f2d5750303b155b80611f3b575060005460ff16155b611f9e5760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201526d195b881a5b9a5d1a585b1a5e995960921b60648201526084016108c8565b600054610100900460ff16158015611fc0576000805461ffff19166101011790555b6001600160a01b038c1615801590611fe057506001600160a01b038b1615155b8015611ff457506001600160a01b038a1615155b801561200857506001600160a01b03891615155b801561201c57506001600160a01b03881615155b801561203057506001600160a01b03851615155b801561204457506001600160a01b03861615155b801561205857506001600160a01b03841615155b801561206c57506001600160a01b03831615155b6120885760405162461bcd60e51b81526004016108c890614266565b603a80546001600160a01b03199081166001600160a01b038f811691909117909255603b805482168e84169081179091556036805483168e85161790556037805483168d85161790556035805483168c85161790556038805483168b851690811790915560408054841690911781556041805484168b8616908117909155603f805462010000600160b01b0319166201000090940293909317909255603c805484168a8616179055603480548416888616179055603d805490931693881693909317909155603e849055678ac7230489e800006042556103e87f8872e3e321618d759d961376a09ede5795255e81a37cc4a6812c4ae68bf2f7cd819055683635c9adc5dea000007fff2df0515866d0e5037a04274635c66d5b7f91cd9f7cebf4fde878af347aa26981905560016000527f7b18867ebd2b04dbe21f520089d61bc882c11b3f5cc506df65457bb01e79629791909155604460209081527fcdad79d33f4de49584ed9b39ca3d8a53cc10e49c033c5359244d3129cc2efd3d919091558251631819c17b60e11b81529251919263303382f692600482810193928290030181865afa15801561223f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226391906143fb565b6045556041546040805163f195a3ab60e01b815290516001600160a01b039092169163f195a3ab916004808201926020929091908290030181865afa1580156122b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d491906143fb565b60465561012c604955683635c9adc5dea00000604855604080516001600160a01b038b811682528a811660208301529181018490528b8216918d811691908f16907fe169423c07ce9b87a95dccb6d81a081d6723646bf70cce1afbb8ae66b5674f069060600160405180910390a48015612354576000805461ff00191690555b505050505050505050505050565b603d546001600160a01b0316331461238c5760405162461bcd60e51b81526004016108c890614290565b603d80546001600160a01b0319169055565b806001600160a01b0381166123c55760405162461bcd60e51b81526004016108c890614266565b603d546001600160a01b031633146123ef5760405162461bcd60e51b81526004016108c890614290565b50603980546001600160a01b0319166001600160a01b0392909216919091179055565b80428110156124335760405162461bcd60e51b81526004016108c8906142ba565b603c546001600160a01b03163314806124565750603d546001600160a01b031633145b6124725760405162461bcd60e51b81526004016108c890614290565b6036546001600160a01b038481169116148061249b57506037546001600160a01b038481169116145b6124e75760405162461bcd60e51b815260206004820152601760248201527f506f6f6c206164647265737320697320696e76616c696400000000000000000060448201526064016108c8565b600034116125375760405162461bcd60e51b815260206004820152601b60248201527f506c6561736520656e74657220612076616c696420616d6f756e74000000000060448201526064016108c8565b603460009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561258757600080fd5b505af115801561259b573d6000803e3d6000fd5b505060345460405163a9059cbb60e01b81526001600160a01b038881166004830152346024830152909116935063a9059cbb925060440190506020604051808303816000875af11580156125f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612617919061453c565b6126235761262361404b565b61157883613e56565b806001600160a01b0381166126535760405162461bcd60e51b81526004016108c890614266565b603d546001600160a01b0316331461267d5760405162461bcd60e51b81526004016108c890614290565b50603a80546001600160a01b0319166001600160a01b0392909216919091179055565b603d546000906001600160a01b031633146126cd5760405162461bcd60e51b81526004016108c890614290565b6000604760006126db613e41565b815260200190815260200160002054905060485481106126fd57600091505090565b8060485461270b919061459a565b91505090565b603f5460ff16156127345760405162461bcd60e51b81526004016108c89061430e565b603e546041546040516305f12e7760e11b81523360048201524392916001600160a01b031690630be25cee906024016040805180830381865afa15801561277f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a39190614345565b516127ae91906143bd565b1115801561282757506041546040516305f12e7760e11b81523360048201526001600160a01b0390911690630be25cee906024016040805180830381865afa1580156127fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128229190614345565b602001515b6128435760405162461bcd60e51b81526004016108c8906143d0565b80428110156128645760405162461bcd60e51b81526004016108c8906142ba565b61286c61388f565b6041546040805163f195a3ab60e01b815290516000926001600160a01b03169163f195a3ab9160048083019260209291908290030181865afa1580156128b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128da91906143fb565b90506000620f42406128ec8387614414565b6128f6919061442b565b90506042548110156129565760405162461bcd60e51b815260206004820152602360248201527f42616e6b5820696e7075742062656c6f77206d696e696d756d205553442076616044820152626c756560e81b60648201526084016108c8565b600080603760009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156129ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d091906144a5565b506001600160701b031691506001600160701b0316915060006129f48983856138e8565b905087811115612a165760405162461bcd60e51b81526004016108c890614557565b612a6e6001604160009054906101000a90046001600160a01b03166001600160a01b031663f195a3ab6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b603a54603754612a8d916001600160a01b03908116913391168b613759565b6037546040516336cd320560e11b815260006004820152602481018b90523060448201526001600160a01b0390911690636d9a640a90606401600060405180830381600087803b158015612ae057600080fd5b505af1158015612af4573d6000803e3d6000fd5b5050603454604051632e1a7d4d60e01b8152600481018d90526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b158015612b3e57600080fd5b505af1158015612b52573d6000803e3d6000fd5b50505050612b60338a613d67565b603a60009054906101000a90046001600160a01b03166001600160a01b03166351e238e36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd791906143fb565b612be2600a8a61442b565b603a60009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5991906143fb565b612c63919061459a565b1115611e2457603a546001600160a01b0316636e0bca30611dd3600a8b61442b565b603d546001600160a01b03163314612caf5760405162461bcd60e51b81526004016108c890614290565b603d80546001600160a01b0319166001600160a01b0392909216919091179055565b603d546001600160a01b03163314612cfb5760405162461bcd60e51b81526004016108c890614290565b60008111612d4b5760405162461bcd60e51b815260206004820152601c60248201527f566f6c756d65207468726573686f6c64206d757374206265203e20300000000060448201526064016108c8565b6048805490829055604080516060808252600f908201526e1d9bdb1d5b59551a1c995cda1bdb19608a1b6080820152602081018390529081018390527f25f31f8b59740095dfbc8b8b0c872ae19303f0396f02cbb6d72976bc389c463c9060a001610a00565b806001600160a01b038116612dd85760405162461bcd60e51b81526004016108c890614266565b603d546001600160a01b03163314612e025760405162461bcd60e51b81526004016108c890614290565b50604180546001600160a01b0319166001600160a01b0392909216919091179055565b603d546001600160a01b03163314612e4f5760405162461bcd60e51b81526004016108c890614290565b60018360ff161115612e735760405162461bcd60e51b81526004016108c8906142e2565b60008211612ec35760405162461bcd60e51b815260206004820152601b60248201527f5072696365207468726573686f6c64206d757374206265203e2030000000000060448201526064016108c8565b60008111612f135760405162461bcd60e51b815260206004820152601c60248201527f566f6c756d65207468726573686f6c64206d757374206265203e20300000000060448201526064016108c8565b60ff909216600090815260436020908152604080832093909355604490522055565b603d546001600160a01b03163314612f5f5760405162461bcd60e51b81526004016108c890614290565b6000612f69613e41565b600081815260476020908152604080832092909255815142815233918101919091529192507fe7e1ba8a99a635d64854b7268466a71f0ef0a411a1a3e4c27b93bdf82d179cf8910160405180910390a150565b603f5460ff1615612fdf5760405162461bcd60e51b81526004016108c89061430e565b603e546041546040516305f12e7760e11b81523360048201524392916001600160a01b031690630be25cee906024016040805180830381865afa15801561302a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304e9190614345565b5161305991906143bd565b111580156130d257506041546040516305f12e7760e11b81523360048201526001600160a01b0390911690630be25cee906024016040805180830381865afa1580156130a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cd9190614345565b602001515b6130ee5760405162461bcd60e51b81526004016108c8906143d0565b804281101561310f5760405162461bcd60e51b81526004016108c8906142ba565b61311761388f565b6000603f60029054906101000a90046001600160a01b03166001600160a01b031663345ba24b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561316c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061319091906143fb565b604254909150620f42406131a48334614414565b6131ae919061442b565b10156131cc5760405162461bcd60e51b81526004016108c89061444d565b60415460408051631819c17b60e11b815290516000926001600160a01b03169163303382f69160048083019260209291908290030181865afa158015613216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061323a91906143fb565b9050600080603660009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132b691906144a5565b506001600160701b031691506001600160701b0316915060006132da3483856138e8565b9050878110156132fc5760405162461bcd60e51b81526004016108c8906144f5565b613308600085346139c8565b603460009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561335857600080fd5b505af115801561336c573d6000803e3d6000fd5b505060345460365460405163a9059cbb60e01b81526001600160a01b0391821660048201523460248201529116935063a9059cbb925060440190506020604051808303816000875af11580156133c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ea919061453c565b6133f6576133f661404b565b6036546040516336cd320560e11b8152600481018a9052600060248201523360448201526001600160a01b0390911690636d9a640a90606401600060405180830381600087803b15801561344957600080fd5b505af115801561345d573d6000803e3d6000fd5b5050505050505050506112ca6001603355565b6000806000603660009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156134c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ec91906144a5565b506001600160701b031691506001600160701b031691508160001480613510575080155b1561351e5760019250505090565b6000603f60029054906101000a90046001600160a01b03166001600160a01b031663345ba24b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613573573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359791906143fb565b90506000826135a9620f424086614414565b6135b3919061442b565b90506000816135c5620f424085614414565b6135cf919061442b565b9695505050505050565b6000806000603760009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156134c8573d6000803e3d6000fd5b603d546000906001600160a01b0316331461365e5760405162461bcd60e51b81526004016108c890614290565b6047600061366a613e41565b815260200190815260200160002054905090565b806001600160a01b0381166136a55760405162461bcd60e51b81526004016108c890614266565b603d546001600160a01b031633146136cf5760405162461bcd60e51b81526004016108c890614290565b50603780546001600160a01b0319166001600160a01b0392909216919091179055565b603d546000906001600160a01b0316331461371f5760405162461bcd60e51b81526004016108c890614290565b60018260ff1611156137435760405162461bcd60e51b81526004016108c8906142e2565b5060ff1660009081526043602052604090205490565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916137bd91906145ad565b6000604051808303816000865af19150503d80600081146137fa576040519150601f19603f3d011682016040523d82523d6000602084013e6137ff565b606091505b5091509150818015613829575080511580613829575080806020019051810190613829919061453c565b6113255760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472604482015270185b9cd9995c919c9bdb4819985a5b1959607a1b60648201526084016108c8565b6002603354036138e15760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108c8565b6002603355565b60008084116139435760405162461bcd60e51b815260206004820152602160248201527f42616e6b584c6962726172793a20494e53554646494349454e545f414d4f554e6044820152601560fa1b60648201526084016108c8565b6000831180156139535750600082115b6139ab5760405162461bcd60e51b8152602060048201526024808201527f42616e6b584c6962726172793a20494e53554646494349454e545f4c495155496044820152634449545960e01b60648201526084016108c8565b826139b68386614414565b6139c0919061442b565b949350505050565b60018360ff1611156139ec5760405162461bcd60e51b81526004016108c8906142e2565b60006139f784613f28565b60ff8516600090815260446020526040902054909150821115613a5c5760405162461bcd60e51b815260206004820152601960248201527f566f6c756d65207468726573686f6c642065786365656465640000000000000060448201526064016108c8565b613a6582613f68565b6000808560ff16600003613afb57613a7b613470565b9050604160009054906101000a90046001600160a01b03166001600160a01b031663303382f66040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af491906143fb565b9150613b8a565b8560ff16600103613b8a57613b0e6135d9565b9050604160009054906101000a90046001600160a01b03166001600160a01b031663f195a3ab6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8791906143fb565b91505b6000613b96828461401f565b9050600083613ba783612710614414565b613bb1919061442b565b60ff8916600090815260436020526040902054909150811115613c165760405162461bcd60e51b815260206004820152601b60248201527f5072696365206d616e6970756c6174696f6e206465746563746564000000000060448201526064016108c8565b845415613cb3576000613c2d88876000015461401f565b8654909150600090613c4183612710614414565b613c4b919061442b565b60ff8b16600090815260436020526040902054909150811115613cb05760405162461bcd60e51b815260206004820152601860248201527f507269636520646576696174696f6e206578636565646564000000000000000060448201526064016108c8565b50505b505050929055505050565b6036546001600160a01b0390811690831603613d1b57604080549051630472e8c560e01b81526001600160a01b03838116600483015290911690630472e8c590602401600060405180830381600087803b15801561131157600080fd5b6037546001600160a01b0390811690831603613d6357604080549051631da8fae360e21b81526001600160a01b038381166004830152909116906376a3eb8c906024016112f7565b5050565b604080516000808252602082019092526001600160a01b038416908390604051613d9191906145ad565b60006040518083038185875af1925050503d8060008114613dce576040519150601f19603f3d011682016040523d82523d6000602084013e613dd3565b606091505b50509050806115785760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527308115512081d1c985b9cd9995c8819985a5b195960621b60648201526084016108c8565b600060495442613e51919061442b565b905090565b6036546001600160a01b0390811690821603613ecb57604080548151632db3f04960e11b815291516001600160a01b0390911691635b67e09291600480830192600092919082900301818387803b158015613eb057600080fd5b505af1158015613ec4573d6000803e3d6000fd5b5050505050565b6037546001600160a01b0390811690821603613f255760408054815163e09d3c3f60e01b815291516001600160a01b039091169163e09d3c3f91600480830192600092919082900301818387803b158015613eb057600080fd5b50565b60008160ff16600003613f3d57506045919050565b8160ff16600103613f5057506046919050565b60405162461bcd60e51b81526004016108c8906142e2565b6000613f72613e41565b600081815260476020526040812054919250613f8e84836143bd565b90506048548111156140085760405162461bcd60e51b815260206004820152603a60248201527f476c6f62616c20766f6c756d65206c696d69742065786365656465642e20547260448201527f6164696e6720726573756d65732061742074696d657374616d7000000000000060648201526084016108c8565b600092835260476020526040909220919091555050565b60008183101561403857614033838361459a565b614042565b614042828461459a565b90505b92915050565b634e487b7160e01b600052600160045260246000fd5b80356001600160a01b0381168114610e0c57600080fd5b60006020828403121561408a57600080fd5b61404282614061565b6000602082840312156140a557600080fd5b5035919050565b6000806000606084860312156140c157600080fd5b6140ca84614061565b95602085013595506040909401359392505050565b803560ff81168114610e0c57600080fd5b60006020828403121561410257600080fd5b614042826140df565b6000806040838503121561411e57600080fd5b50508035926020909101359150565b6000806040838503121561414057600080fd5b61414983614061565b946020939093013593505050565b60008060006060848603121561416c57600080fd5b505081359360208301359350604090920135919050565b60008060008060008060008060008060006101608c8e0312156141a557600080fd5b6141ae8c614061565b9a506141bc60208d01614061565b99506141ca60408d01614061565b98506141d860608d01614061565b97506141e660808d01614061565b96506141f460a08d01614061565b955061420260c08d01614061565b945061421060e08d01614061565b935061421f6101008d01614061565b925061422e6101208d01614061565b91506101408c013590509295989b509295989b9093969950565b60008060006060848603121561425d57600080fd5b6140ca846140df565b60208082526010908201526f524f555445523a5a45524f434845434b60801b604082015260600190565b60208082526010908201526f2927aaaa22a91d2327a92124a22222a760811b604082015260600190565b6020808252600e908201526d1493d55511548e9156141254915160921b604082015260600190565b602080825260129082015271496e76616c696420746f6b656e207479706560701b604082015260600190565b6020808252600d908201526c1493d55511548e94105554d151609a1b604082015260600190565b80518015158114610e0c57600080fd5b60006040828403121561435757600080fd5b6040516040810181811067ffffffffffffffff8211171561438857634e487b7160e01b600052604160045260246000fd5b6040528251815261439b60208401614335565b60208201529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115614045576140456143a7565b602080825260119082015270524f555445523a424c4f434b44454c415960781b604082015260600190565b60006020828403121561440d57600080fd5b5051919050565b8082028115828204841417614045576140456143a7565b60008261444857634e487b7160e01b600052601260045260246000fd5b500490565b60208082526021908201527f45544820696e7075742062656c6f77206d696e696d756d205553442076616c756040820152606560f81b606082015260800190565b80516001600160701b0381168114610e0c57600080fd5b6000806000606084860312156144ba57600080fd5b6144c38461448e565b92506144d16020850161448e565b9150604084015163ffffffff811681146144ea57600080fd5b809150509250925092565b60208082526027908201527f42616e6b58526f757465723a20494e53554646494349454e545f4f555450555460408201526617d05353d5539560ca1b606082015260800190565b60006020828403121561454e57600080fd5b61404282614335565b60208082526023908201527f42616e6b58526f757465723a204558434553534956455f494e5055545f414d4f60408201526215539560ea1b606082015260800190565b81810381811115614045576140456143a7565b6000825160005b818110156145ce57602081860181015185830152016145b4565b50600092019182525091905056fea26469706673582212205abb93b0cf6dfa2547f2d61b67ed67176e323cfd59b2a62b49358681c3b76aa864736f6c63430008150033