6.4k txs
30.2k calls
constructor
constructor(address initialOwner)
functions
_IDao
viewfunction _IDao() view returns (address)
_IFeePool
viewfunction _IFeePool() view returns (address)
_IPancakeRouter
viewfunction _IPancakeRouter() view returns (address)
addrOPB
viewfunction addrOPB() view returns (address)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
allowanceAddQuotaAddr
viewfunction allowanceAddQuotaAddr(address) view returns (bool)
allowContract
viewfunction allowContract(address) view returns (bool)
amountOPB
viewfunction amountOPB() view returns (uint256)
AMPLIFIED_BASE
viewfunction AMPLIFIED_BASE() view returns (uint256)
AMPLIFIED_DECIMALS
viewfunction AMPLIFIED_DECIMALS() view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
buyFeeAddress
viewfunction buyFeeAddress(uint256) view returns (address)
buyFeeScales
viewfunction buyFeeScales(uint256) view returns (uint256)
dayCulQuota
viewfunction dayCulQuota(uint256) view returns (uint256)
dayMaxQuota
viewfunction dayMaxQuota() view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
freeQuota
viewfunction freeQuota(address) view returns (uint256)
freeQuotaPayAddr
viewfunction freeQuotaPayAddr() view returns (address)
getAmountOut
viewfunction getAmountOut(uint256 value, bool buy_) view returns (uint256)
getReserves
viewfunction getReserves() view returns (uint256, uint256)
getTokenOunt
viewfunction getTokenOunt(uint256 amountA, uint256 amountB) view returns (uint256)
getTokenPrice
viewfunction getTokenPrice() view returns (uint256)
getTokenPriceByBnb
viewfunction getTokenPriceByBnb() view returns (uint256)
liquidityAdded
viewfunction liquidityAdded() view returns (bool)
liquidityProvider
viewfunction liquidityProvider() view returns (address)
liquidityTokenA
viewfunction liquidityTokenA() view returns (uint256)
liquidityTokenB
viewfunction liquidityTokenB() view returns (uint256)
name
viewfunction name() view returns (string)
notFreeQuota
viewfunction notFreeQuota(address) view returns (uint256)
owner
viewfunction owner() view returns (address)
porBuyFee
viewfunction porBuyFee() view returns (uint256)
porSellFee
viewfunction porSellFee() view returns (uint256)
sellFeeAddress
viewfunction sellFeeAddress(uint256) view returns (address)
sellFeeScales
viewfunction sellFeeScales(uint256) view returns (uint256)
startTime
viewfunction startTime() view returns (uint256)
symbol
viewfunction symbol() view returns (string)
timeToUnlockLiquidity
viewfunction timeToUnlockLiquidity() view returns (uint256)
TokenOPA
viewfunction TokenOPA() view returns (address)
TokenOPB
viewfunction TokenOPB() view returns (address)
totalSupply
viewfunction totalSupply() view returns (uint256)
USDT
viewfunction USDT() view returns (address)
WBNB
viewfunction WBNB() view returns (address)
addFreeQuota
nonpayablefunction addFreeQuota(address[] addrs_, uint256[] amounts_, uint256 id)
addLiquidity
payablefunction addLiquidity(uint256 _timeToUnlockLiquidity, uint256 _amountB) payable
addNotFreeQuota
nonpayablefunction addNotFreeQuota(address[] addrs_, uint256[] amounts_, uint256 id)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
extendLiquidityLock
nonpayablefunction extendLiquidityLock(uint256 _timeToUnlockLiquidity)
freeQuotaBuy
nonpayablefunction freeQuotaBuy(uint256 amount)
liquidityProviderTransfer
nonpayablefunction liquidityProviderTransfer(address newLiquidityProvider)
notFreeQuotaBuy
nonpayablefunction notFreeQuotaBuy(uint256 amount)
notFreeQuotaTransfer
nonpayablefunction notFreeQuotaTransfer(address to, uint256 amount)
removeLiquidity
nonpayablefunction removeLiquidity()
renounceOwnership
nonpayablefunction renounceOwnership()
sell
nonpayablefunction sell(uint256 amount)
setAllowanceAddQuotaAddr
nonpayablefunction setAllowanceAddQuotaAddr(address addr_, bool enable)
setAllowContract
nonpayablefunction setAllowContract(address addr_, bool enable)
setBuyFeeAddress
nonpayablefunction setBuyFeeAddress(address[2] buyFeeAddress_)
setBuyFeeScales
nonpayablefunction setBuyFeeScales(uint256[2] buyFeeScales_)
setDayMaxQuota
nonpayablefunction setDayMaxQuota(uint256 dayMaxQuota_)
setFreeQuotaPayAddr
nonpayablefunction setFreeQuotaPayAddr(address freeQuotaPayAddr_)
setIDaoAndFeePool
nonpayablefunction setIDaoAndFeePool(address token_, address tokenFeePool_)
setOPB
nonpayablefunction setOPB(uint256 amountOPB_, address addrOPB_)
setSellFeeAddress
nonpayablefunction setSellFeeAddress(address[2] sellFeeAddress_)
setSellFeeScales
nonpayablefunction setSellFeeScales(uint256[2] sellFeeScales_)
setStartTime
nonpayablefunction setStartTime(uint256 startTime_)
setToken
nonpayablefunction setToken(address tokenA_, address tokenB_)
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawBuyFee
nonpayablefunction withdrawBuyFee()
withdrawSellFee
nonpayablefunction withdrawSellFee()
events
AddFreeQuota
event AddFreeQuota(address[] addrs, uint256[] amounts, uint256 id, uint256 time)
AddFreeQuotaId
event AddFreeQuotaId(uint256 id, uint256 time)
AddLiquidity
event AddLiquidity(uint256 _blockToUnlockLiquidity, uint256 value)
AddNotFreeQuota
event AddNotFreeQuota(address[] addrs, uint256[] amounts, uint256 id, uint256 time)
AddNotFreeQuotaId
event AddNotFreeQuotaId(uint256 id, uint256 time)
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Buy
event Buy(address indexed user, uint256 amount, uint256 outAmount, uint256 tokenA, uint256 tokenB)
ExtendLiquidityLock
event ExtendLiquidityLock(uint256 lockTime)
FreeQuotaBuy
event FreeQuotaBuy(address indexed user, uint256 amount, uint256 culAmount, uint256 time)
LiquidityProviderTransfer
event LiquidityProviderTransfer(address liquidityProvider)
NotFreeQuotaBuy
event NotFreeQuotaBuy(address indexed user, uint256 amount, uint256 culAmount, uint256 time)
NotFreeQuotaTransfer
event NotFreeQuotaTransfer(address indexed user, address indexed To, uint256 amount, uint256 time)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RemoveLiquidity
event RemoveLiquidity(uint256 value)
Sell
event Sell(address indexed user, uint256 amount, uint256 outAmount, uint256 tokenA, uint256 tokenB)
Swap
event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
AddLiquidityInvalid
error AddLiquidityInvalid()
AllowanceUnauthorizedAccount
error AllowanceUnauthorizedAccount(address account)
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
InsufficientQuota
error InsufficientQuota(address user, uint256 balance, uint256 needed)
OnlyEOA
error OnlyEOA()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ParametersInvalid
error ParametersInvalid()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x600880546001600160a01b0319908116301790915560098054821673590ad3308c8507390e2385bcbb0c427c621e536c179055600a8054821673bf98c251edc2398b99a9a2dd3b003fb260bbef2c179055600b805490911673ab0aeb140b3053d65e2adb2ca9a9f09c13ff306517905560c060405260c8608090815261032060a05262000091906010906002620005b8565b506040805180820190915260c881526103206020820152620000b8906012906002620005b8565b50604080518082019091527354adf66b8367be1553defb4ffedadeefe2a8eb82815273ab0aeb140b3053d65e2adb2ca9a9f09c13ff306560208201526200010490601490600262000601565b50604080518082019091527354adf66b8367be1553defb4ffedadeefe2a8eb82815273bf98c251edc2398b99a9a2dd3b003fb260bbef2c60208201526200015090601690600262000601565b50601a80547345603d14ab1dd90ab31272d39cebe99b6c08f4936001600160a01b03199182168117909255670de0b6b3a7640000601b55683635c9adc5dea00000601d55602180549091169091179055348015620001ac575f80fd5b5060405162003e4e38038062003e4e833981016040819052620001cf9162000662565b6040805180820182526003808252624f504160e81b6020808401829052845180860190955282855284015283928392916200020b838262000731565b5060046200021a828262000731565b5050506001600160a01b0381166200024c57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6200025781620003fc565b506200029573fb6a503363c8008a20c61c14337a0b29632710666200027f6012600a62000908565b6200028f906301406f4062000915565b6200044d565b506001600781905563681cd500601e55600c805473fb6a503363c8008a20c61c14337a0b29632710666001600160a01b03199091161790556001600160a01b038281165f908152602260209081526040808320805460ff199081168717909155600a8054861685528285208054831688179055548516845260069092528083208054831686179055600b54841683528083208054831686179055308352808320805483168617905560175484168352808320805483168617905560155490931682529082902080549091169092179091555163095ea7b360e01b81527310ed43c718714eb63d5aa57b78b54704e256024e60048201525f1960248201527355d398326f99059ff775485246999027b31979559063095ea7b3906044016020604051808303815f875af1158015620003ce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003f491906200092f565b505062000966565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620004785760405163ec442f0560e01b81525f600482015260240162000243565b620004855f838362000489565b5050565b6001600160a01b038316620004b7578060025f828254620004ab919062000950565b90915550620005299050565b6001600160a01b0383165f90815260208190526040902054818110156200050b5760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000243565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216620005475760028054829003905562000565565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005ab91815260200190565b60405180910390a3505050565b8260028101928215620005ef579160200282015b82811115620005ef578251829061ffff16905591602001919060010190620005cc565b50620005fd9291506200064c565b5090565b8260028101928215620005ef579160200282015b82811115620005ef57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000615565b5b80821115620005fd575f81556001016200064d565b5f6020828403121562000673575f80fd5b81516001600160a01b03811681146200068a575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620006ba57607f821691505b602082108103620006d957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200072c575f81815260208120601f850160051c81016020861015620007075750805b601f850160051c820191505b81811015620007285782815560010162000713565b5050505b505050565b81516001600160401b038111156200074d576200074d62000691565b62000765816200075e8454620006a5565b84620006df565b602080601f8311600181146200079b575f8415620007835750858301515b5f19600386901b1c1916600185901b17855562000728565b5f85815260208120601f198616915b82811015620007cb57888601518255948401946001909101908401620007aa565b5085821015620007e957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200084d57815f1904821115620008315762000831620007f9565b808516156200083f57918102915b93841c939080029062000812565b509250929050565b5f82620008655750600162000902565b816200087357505f62000902565b81600181146200088c57600281146200089757620008b7565b600191505062000902565b60ff841115620008ab57620008ab620007f9565b50506001821b62000902565b5060208310610133831016604e8410600b8410161715620008dc575081810a62000902565b620008e883836200080d565b805f1904821115620008fe57620008fe620007f9565b0290505b92915050565b5f6200068a838362000855565b8082028115828204841417620009025762000902620007f9565b5f6020828403121562000940575f80fd5b815180151581146200068a575f80fd5b80820180821115620009025762000902620007f9565b6134da80620009745f395ff3fe608060405260043610610403575f3560e01c8063715018a611610215578063ad7dd0b31161011e578063d9443923116100a8578063e4849b3211610078578063e4849b3214610c25578063ef7b6a2d14610c44578063f2fde38b14610c63578063f6bd02fa14610c82578063f74bb8b514610cb0575f80fd5b8063d944392314610b77578063dd62ed3e14610b97578063df20a9bd14610bdb578063e0d7ee0414610c06575f80fd5b8063c3783df8116100ee578063c3783df814610adf578063c496be4114610afe578063c54e44eb14610b1d578063ccff640314610b44578063cfc08a1c14610b63575f80fd5b8063ad7dd0b314610a65578063b03d35c914610a84578063bd52b0bc14610aa3578063c17c3d2f14610ab8575f80fd5b80638e5855ea1161019f578063970905d91161016f578063970905d9146109eb5780639a4c022c146109ff5780639cd441da14610a1e578063a695067914610a31578063a9059cbb14610a46575f80fd5b80638e5855ea1461096e5780638ec8789f146109995780639564b66b146109b857806395d89b41146109d7575f80fd5b80637e6d3f2e116101e55780637e6d3f2e146108d75780638102010d146108f6578063867fef8f146109155780638da5cb5b1461092a5780638dd9500214610947575f80fd5b8063715018a61461087a57806377e6a0fd1461088e57806378e97925146108a35780637d09bb31146108b8575f80fd5b8063313ce5671161031757806355cad235116102a15780635b8bec55116102715780635b8bec55146107d557806367b9a286146107f45780636ab79817146108085780637099f7161461082757806370a0823114610846575f80fd5b806355cad2351461074e578063567220401461076d578063591610381461079b5780635a8bda7b146107b6575f80fd5b806348ffddbd116102e757806348ffddbd146106b35780634b94f50e146106dd5780634efdfb9b146106f15780634fa7392a1461071057806352df5de91461072f575f80fd5b8063313ce5671461064557806331abce18146106605780633e0a322d1461067557806348ac5b4714610694575f80fd5b80630f5afe191161039857806317ab77511161036857806317ab7751146105bf57806318160ddd146105d45780631da26a8b146105e857806323b872dd146106075780632584e9f214610626575f80fd5b80630f5afe19146105365780630fc656ed1461056d57806311106ee21461058c57806316b9507e146105ab575f80fd5b8063095ea7b3116103d3578063095ea7b3146104b45780630a26cc2c146104e35780630b89813e146105025780630c65cb2214610517575f80fd5b8063013f667b1461042557806306fdde031461044d578063084ceddd1461046e5780630902f1ac1461048d575f80fd5b3661042157345f0361041f57610417610ccf565b61041f610d05565b005b5f80fd5b348015610430575f80fd5b5061043a601d5481565b6040519081526020015b60405180910390f35b348015610458575f80fd5b50610461610d28565b6040516104449190612d77565b348015610479575f80fd5b5061041f610488366004612e30565b610db8565b348015610498575f80fd5b50600e54600f5460408051928352602083019190915201610444565b3480156104bf575f80fd5b506104d36104ce366004612ea2565b610dd1565b6040519015158152602001610444565b3480156104ee575f80fd5b5061041f6104fd366004612eca565b610dea565b34801561050d575f80fd5b5061043a600d5481565b348015610522575f80fd5b5061041f610531366004612ee1565b610ec9565b348015610541575f80fd5b50600954610555906001600160a01b031681565b6040516001600160a01b039091168152602001610444565b348015610578575f80fd5b5061043a610587366004612eca565b610f40565b348015610597575f80fd5b5061043a6105a6366004612f1f565b610f56565b3480156105b6575f80fd5b5061041f610d05565b3480156105ca575f80fd5b5061043a600e5481565b3480156105df575f80fd5b5060025461043a565b3480156105f3575f80fd5b5061041f610602366004612ee1565b610fab565b348015610612575f80fd5b506104d3610621366004612f4d565b610fe1565b348015610631575f80fd5b5061041f610640366004612f86565b6110b8565b348015610650575f80fd5b5060405160128152602001610444565b34801561066b575f80fd5b5061043a61271081565b348015610680575f80fd5b5061041f61068f366004612eca565b611139565b34801561069f575f80fd5b5061041f6106ae366004612fa6565b611146565b3480156106be575f80fd5b5061043a6106cd366004612f86565b602080525f908152604090205481565b3480156106e8575f80fd5b5061043a6111b7565b3480156106fc575f80fd5b5061041f61070b366004612ffe565b611222565b34801561071b575f80fd5b50601a54610555906001600160a01b031681565b34801561073a575f80fd5b5061041f610749366004612ea2565b611254565b348015610759575f80fd5b50602154610555906001600160a01b031681565b348015610778575f80fd5b506104d3610787366004612f86565b60226020525f908152604090205460ff1681565b3480156107a6575f80fd5b5061043a670de0b6b3a764000081565b3480156107c1575f80fd5b5061041f6107d0366004612ffe565b61136f565b3480156107e0575f80fd5b50600c54610555906001600160a01b031681565b3480156107ff575f80fd5b5061041f6113a1565b348015610813575f80fd5b5061041f610822366004613028565b611581565b348015610832575f80fd5b50610555610841366004612eca565b6115ae565b348015610851575f80fd5b5061043a610860366004612f86565b6001600160a01b03165f9081526020819052604090205490565b348015610885575f80fd5b5061041f6115cd565b348015610899575f80fd5b5061043a60185481565b3480156108ae575f80fd5b5061043a601e5481565b3480156108c3575f80fd5b5061041f6108d2366004612eca565b6115de565b3480156108e2575f80fd5b5061041f6108f1366004612eca565b6115eb565b348015610901575f80fd5b5061043a610910366004613049565b6117c0565b348015610920575f80fd5b5061043a601b5481565b348015610935575f80fd5b506005546001600160a01b0316610555565b348015610952575f80fd5b5061055573bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c81565b348015610979575f80fd5b5061043a610988366004612eca565b601c6020525f908152604090205481565b3480156109a4575f80fd5b506105556109b3366004612eca565b61181f565b3480156109c3575f80fd5b5061041f6109d2366004612f86565b61182e565b3480156109e2575f80fd5b50610461611858565b3480156109f6575f80fd5b5061043a611867565b348015610a0a575f80fd5b5061041f610a19366004612eca565b611875565b61041f610a2c366004613049565b611a31565b348015610a3c575f80fd5b5061043a60195481565b348015610a51575f80fd5b506104d3610a60366004612ea2565b611b99565b348015610a70575f80fd5b5061041f610a7f3660046130f4565b611c5a565b348015610a8f575f80fd5b5061041f610a9e366004612e30565b611e10565b348015610aae575f80fd5b5061043a600f5481565b348015610ac3575f80fd5b506105557310ed43c718714eb63d5aa57b78b54704e256024e81565b348015610aea575f80fd5b5061041f610af9366004612fa6565b611e25565b348015610b09575f80fd5b50600854610555906001600160a01b031681565b348015610b28575f80fd5b506105557355d398326f99059ff775485246999027b319795581565b348015610b4f575f80fd5b50600a54610555906001600160a01b031681565b348015610b6e575f80fd5b5061041f610ccf565b348015610b82575f80fd5b50600b546104d390600160a01b900460ff1681565b348015610ba2575f80fd5b5061043a610bb1366004612ee1565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610be6575f80fd5b5061043a610bf5366004612f86565b601f6020525f908152604090205481565b348015610c11575f80fd5b5061041f610c203660046130f4565b611e48565b348015610c30575f80fd5b5061041f610c3f366004612eca565b611fdc565b348015610c4f575f80fd5b50600b54610555906001600160a01b031681565b348015610c6e575f80fd5b5061041f610c7d366004612f86565b612000565b348015610c8d575f80fd5b506104d3610c9c366004612f86565b60066020525f908152604090205460ff1681565b348015610cbb575f80fd5b5061043a610cca366004612eca565b61203a565b6014546001600160a01b03163303610d0357601880545f909155610d01335b6008546001600160a01b03169083612049565b505b565b6016546001600160a01b03163303610d0357601980545f909155610d0133610cee565b606060038054610d37906131ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610d63906131ca565b8015610dae5780601f10610d8557610100808354040283529160200191610dae565b820191905f5260205f20905b815481529060010190602001808311610d9157829003601f168201915b5050505050905090565b610dc06120ad565b610dcd6010826002612cdd565b5050565b5f33610dde8185856120da565b60019150505b92915050565b600c546001600160a01b0316336001600160a01b031614610e265760405162461bcd60e51b8152600401610e1d90613202565b60405180910390fd5b80600d54118015610e405750600b54600160a01b900460ff165b15610e8d5760405162461bcd60e51b815260206004820152601a60248201527f596f752063616e27742073686f7274656e206475726174696f6e0000000000006044820152606401610e1d565b600d8190556040518181527fe9da15d4cb5bea133d9613a866c909df5594489b91a3f780d43720d560b3c94c906020015b60405180910390a150565b610ed16120ad565b600a80546001600160a01b039384166001600160a01b03199182168117909255600b805493909416921682179092555f918252602260209081526040808420805460ff199081166001908117909255600690935281852080548416821790559284529092208054909216179055565b60108160028110610f4f575f80fd5b0154905081565b5f805f610f66600e54600f549091565b915091508315610f9757610f7a8583613258565b610f84828761326b565b610f8e9190613282565b92505050610de4565b610fa18582613258565b610f84838761326b565b610fb36120ad565b600880546001600160a01b039384166001600160a01b03199182161790915560098054929093169116179055565b5f33610fee8582856120e7565b610ff9858585612150565b6001600160a01b0385165f9081526006602052604090205460ff16611068576001600160a01b0385163214158061103957505f856001600160a01b03163b115b8061104a5750843b63ffffffff1615155b1561106857604051639f8129d160e01b815260040160405180910390fd5b6001600160a01b0384165f9081526006602052604090205460ff166110ad57833b63ffffffff16156110ad57604051639f8129d160e01b815260040160405180910390fd5b506001949350505050565b600c546001600160a01b0316336001600160a01b0316146110eb5760405162461bcd60e51b8152600401610e1d90613202565b600c80546001600160a01b0319166001600160a01b0383169081179091556040519081527f3c27aeeb95897cd36e99d21fa799912d323b28189b13f4aa66b733e98061ec4b90602001610ebe565b6111416120ad565b601e55565b61114e6120ad565b61115b6016826002612d1b565b506017546001600160a01b03165f908152600660205260408120805460ff19166001908117909155906022906016835b01546001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905550565b5f806111f473bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c7355d398326f99059ff775485246999027b3197955670de0b6b3a76400006121ad565b9050670de0b6b3a7640000816112086122da565b611212919061326b565b61121c9190613282565b91505090565b61122a6120ad565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b335f81815260208052604090205482118061126d575081155b156112a7576001600160a01b0381165f90815260208052604090819020549051632174511960e01b8152610e1d91839185906004016132a1565b601a54601b546009546112cb926001600160a01b0391821692859290911690612310565b6001600160a01b0381165f908152602080526040812080548492906112f19084906132c2565b90915550506001600160a01b0383165f9081526020805260408120805484929061131c908490613258565b9091555050604080518381524260208201526001600160a01b0380861692908416917f1421a01afc8ff55567221f9006338e3cf6d7b16e15e5bee45c0679b87e26746b91015b60405180910390a3505050565b6113776120ad565b6001600160a01b03919091165f908152602260205260409020805460ff1916911515919091179055565b600c546001600160a01b0316336001600160a01b0316146113d45760405162461bcd60e51b8152600401610e1d90613202565b600d544210156114195760405162461bcd60e51b815260206004820152601060248201526f131a5c5d5a591a5d1e481b1bd8dad95960821b6044820152606401610e1d565b600b805460ff60a01b191690555f600e819055600c546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611463573d5f803e3d5ffd5b505f600f55600854600c546040516370a0823160e01b81523060048201526001600160a01b039283169263a9059cbb92169083906370a0823190602401602060405180830381865afa1580156114bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114df91906132d5565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611527573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154b91906132ec565b506040514781527f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa9060200160405180910390a1565b6115896120ad565b601a80546001600160a01b0319166001600160a01b0392909216919091179055601b55565b601681600281106115bd575f80fd5b01546001600160a01b0316905081565b6115d56120ad565b610d035f612349565b6115e66120ad565b601d55565b335f818152601f6020526040902054821180611605575081155b15611640576001600160a01b0381165f908152601f602052604090819020549051632174511960e01b8152610e1d91839185906004016132a1565b6001600160a01b0381165f908152601f6020526040812080548492906116679084906132c2565b9091555050602154611699907355d398326f99059ff775485246999027b3197955906001600160a01b03163085612310565b6040805160028082526060820183525f926020830190803683370190505090507355d398326f99059ff775485246999027b3197955815f815181106116e0576116e06131b6565b60200260200101906001600160a01b031690816001600160a01b03168152505073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c81600181518110611728576117286131b6565b60200260200101906001600160a01b031690816001600160a01b0316815250505f61175482853061239a565b915050611761838261242e565b6001600160a01b0383165f81815260208080526040918290205482518881529182015242918101919091527fa9729e2a8f239e92b550ba594851f5e31cd46e1240557bdaf6ed784fb586daf4906060015b60405180910390a250505050565b600e54600f545f919084156117f7576117d98583613258565b6117e3828461326b565b6117ed9190613282565b610f8e90826132c2565b6118018482613258565b61180b828461326b565b6118159190613282565b610f8e90836132c2565b601481600281106115bd575f80fd5b6118366120ad565b602180546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610d37906131ca565b5f6118706122da565b905090565b335f81815260208052604090205482118061188e575081155b156118c8576001600160a01b0381165f90815260208052604090819020549051632174511960e01b8152610e1d91839185906004016132a1565b6001600160a01b0381165f908152602080526040812080548492906118ee9084906132c2565b9091555061191490507355d398326f99059ff775485246999027b3197955823085612310565b6040805160028082526060820183525f926020830190803683370190505090507355d398326f99059ff775485246999027b3197955815f8151811061195b5761195b6131b6565b60200260200101906001600160a01b031690816001600160a01b03168152505073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c816001815181106119a3576119a36131b6565b60200260200101906001600160a01b031690816001600160a01b0316815250505f6119cf82853061239a565b9150506119dc838261242e565b6001600160a01b0383165f81815260208080526040918290205482518881529182015242918101919091527f703da37effadc211ab15edefe7d704b11f25409b4ca09132081c3af460125b1a906060016117b2565b600c546001600160a01b0316336001600160a01b031614611a645760405162461bcd60e51b8152600401610e1d90613202565b600b54600160a01b900460ff1615611a8f5760405163a395eecd60e01b815260040160405180910390fd5b600b805460ff60a01b1916600160a01b179055611aac8242613258565b600d819055421115611af55760405162461bcd60e51b8152602060048201526012602482015271426c6f636b2074696d6520746f6f206c6f7760701b6044820152606401610e1d565b345f03611b325760405162461bcd60e51b815260206004820152600b60248201526a139bc8115512081cd95b9d60aa1b6044820152606401610e1d565b600c54600854611b50916001600160a01b0391821691163084612310565b34600e819055600f8290556040805184815260208101929092527fcb1652de9aeec38545fc281847b3dbfc89aab56dfa907b1ab68466f602c36fb4910160405180910390a15050565b5f33611ba6818585612150565b6001600160a01b0381165f9081526006602052604090205460ff16611c15576001600160a01b03811632141580611be657505f816001600160a01b03163b115b80611bf75750803b63ffffffff1615155b15611c1557604051639f8129d160e01b815260040160405180910390fd5b6001600160a01b0384165f9081526006602052604090205460ff16610dde57833b63ffffffff1615610dde57604051639f8129d160e01b815260040160405180910390fd5b335f9081526022602052604090205460ff16611c9757335b60405163d2a3436f60e01b81526001600160a01b039091166004820152602401610e1d565b82511580611ca757508151835114155b15611cc5576040516313a13a4160e11b815260040160405180910390fd5b82515f905b8015611d935783611cdc6001836132c2565b81518110611cec57611cec6131b6565b602002602001015160205f87600185611d0591906132c2565b81518110611d1557611d156131b6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f828254611d4a9190613258565b90915550849050611d5c6001836132c2565b81518110611d6c57611d6c6131b6565b602002602001015182611d7f9190613258565b915080611d8b81613307565b915050611cca565b507fe0a1a1b13d59bd46cdeae8682c68b4ba87f0ebdc591e1730001a6cfa0d26e15f84848442604051611dc9949392919061335e565b60405180910390a1604080518381524260208201527f2d0ccc16405ea3fd4d72810f926d13c54dbcd5c629ad3f04058c38375ed1dd2691015b60405180910390a150505050565b611e186120ad565b610dcd6012826002612cdd565b611e2d6120ad565b611e3a6014826002612d1b565b50600160065f60148361118b565b335f9081526022602052604090205460ff16611e645733611c72565b82511580611e7457508151835114155b15611e92576040516313a13a4160e11b815260040160405180910390fd5b82515f905b8015611f605783611ea96001836132c2565b81518110611eb957611eb96131b6565b6020026020010151601f5f87600185611ed291906132c2565b81518110611ee257611ee26131b6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f828254611f179190613258565b90915550849050611f296001836132c2565b81518110611f3957611f396131b6565b602002602001015182611f4c9190613258565b915080611f5881613307565b915050611e97565b50611f6a816126f5565b7fadd558433f260bb7b82028364918238bb72b3094f951713d8e8aaec27de6f44e84848442604051611f9f949392919061335e565b60405180910390a1604080518381524260208201527fc19adcb609f75adf1c27276809b1e84d2e80feda074db2ee5f509b98c4648c419101611e02565b6008543390611ff6906001600160a01b0316823085612310565b610dcd81836127c4565b6120086120ad565b6001600160a01b03811661203157604051631e4fbdf760e01b81525f6004820152602401610e1d565b610d0181612349565b60128160028110610f4f575f80fd5b6040516001600160a01b038381166024830152604482018390526120a891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612a6f565b505050565b6005546001600160a01b03163314610d035760405163118cdaa760e01b8152336004820152602401610e1d565b6120a88383836001612adb565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981101561214a578181101561213c57828183604051637dc7a0d960e11b8152600401610e1d939291906132a1565b61214a84848484035f612adb565b50505050565b6001600160a01b03831661217957604051634b637e8f60e11b81525f6004820152602401610e1d565b6001600160a01b0382166121a25760405163ec442f0560e01b81525f6004820152602401610e1d565b6120a8838383612bad565b6040805160028082526060820183525f9283928392909160208301908036833701905050905085815f815181106121e6576121e66131b6565b60200260200101906001600160a01b031690816001600160a01b031681525050848160018151811061221a5761221a6131b6565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b81525f907310ed43c718714eb63d5aa57b78b54704e256024e9063d06ca61f9061226d90889086906004016133bd565b5f60405180830381865afa158015612287573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526122ae91908101906133dd565b9050806001815181106122c3576122c36131b6565b602002602001015192508293505050509392505050565b5f80600f545f1461230b57600f54670de0b6b3a7640000600e546122fe919061326b565b6123089190613282565b90505b919050565b6040516001600160a01b03848116602483015283811660448301526064820183905261214a9186918216906323b872dd90608401612076565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f80477310ed43c718714eb63d5aa57b78b54704e256024e63791ac947868489886123c642603c613258565b6040518663ffffffff1660e01b81526004016123e6959493929190613469565b5f604051808303815f87803b1580156123fd575f80fd5b505af115801561240f573d5f803e3d5ffd5b505050505f814761242091906132c2565b919791965090945050505050565b612436612cb3565b805f036124695760405162461bcd60e51b81526020600482015260016024820152600360fc1b6044820152606401610e1d565b600e54600f545f61247a8484613258565b612484838561326b565b61248e9190613282565b61249890836132c2565b90505f81116124df5760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d081bdd5d1c1d5d606a1b6044820152606401610e1d565b5f61271060128201546124f2908461326b565b6124fc9190613282565b90505f612710601260010154612512908561326b565b61251c9190613282565b9050826125298284613258565b1061256b5760405162461bcd60e51b815260206004820152601260248201527111995948195e18d959591cc81bdd5d1c1d5d60721b6044820152606401610e1d565b6125758686613258565b600e5561258283856132c2565b600f819055508160185f8282546125999190613258565b909155506125cb905087826125ae85876132c2565b6125b891906132c2565b6008546001600160a01b03169190612049565b6015546008546125e8916001600160a01b03918216911683612049565b600b546040516315c87f9760e21b8152600481018390526001600160a01b0390911690635721fe5c906024015f604051808303815f87803b15801561262b575f80fd5b505af115801561263d573d5f803e3d5ffd5b50506040805189815260208101879052908101889052606081018790526001600160a01b038a1692507f064fb1933e186be0b289a87e98518dc18cc9856ecbc9f1353d1a138ddf733ec5915060800160405180910390a2604080518781525f60208201819052818301526060810185905290516001600160a01b038916917f49926bbebe8474393f434dfa4f78694c0923efa07d19f2284518bfabd06eb737919081900360800190a25050505050610dcd6001600755565b601e5442908110156127335760405162461bcd60e51b815260206004820152600760248201526663756c54696d6560c81b6044820152606401610e1d565b5f62015180601e548361274691906132c2565b6127509190613282565b905082601c5f8381526020019081526020015f205f8282546127729190613258565b9091555050601d545f828152601c602052604090205411156120a85760405162461bcd60e51b815260206004820152600b60248201526a6461794d617851756f746160a81b6044820152606401610e1d565b6127cc612cb3565b805f036127ff5760405162461bcd60e51b81526020600482015260016024820152600360fc1b6044820152606401610e1d565b5f6127106010820154612812908461326b565b61281c9190613282565b90505f612710601060010154612832908561326b565b61283c9190613282565b90505f8161284a84866132c2565b61285491906132c2565b90508260195f8282546128679190613258565b9091555050601754600854612889916001600160a01b03918216911684612049565b600a546040516325152d7d60e11b8152600481018490526001600160a01b0390911690634a2a5afa906024015f604051808303815f87803b1580156128cc575f80fd5b505af11580156128de573d5f803e3d5ffd5b5050600e54600f5490925090505f6128f68483613258565b612900838561326b565b61290a9190613282565b61291490846132c2565b90505f811161295b5760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d081bdd5d1c1d5d606a1b6044820152606401610e1d565b61296581846132c2565b600e55600f829055600854612986906001600160a01b031661dead86612049565b6040516001600160a01b0389169082156108fc029083905f818181858888f193505050501580156129b9573d5f803e3d5ffd5b506040805185815260208101839052908101849052606081018390526001600160a01b038916907f483f8aec0fd892ac72ad1ba8d0e9c9e73db59c12d263fd71de480b5b3deeae3c9060800160405180910390a2604080515f80825260208201879052818301849052606082015290516001600160a01b038a16917f49926bbebe8474393f434dfa4f78694c0923efa07d19f2284518bfabd06eb737919081900360800190a2505050505050610dcd6001600755565b5f8060205f8451602086015f885af180612a8e576040513d5f823e3d81fd5b50505f513d91508115612aa5578060011415612ab2565b6001600160a01b0384163b155b1561214a57604051635274afe760e01b81526001600160a01b0385166004820152602401610e1d565b6001600160a01b038416612b045760405163e602df0560e01b81525f6004820152602401610e1d565b6001600160a01b038316612b2d57604051634a1406b160e11b81525f6004820152602401610e1d565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561214a57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051612b9f91815260200190565b60405180910390a350505050565b6001600160a01b038316612bd7578060025f828254612bcc9190613258565b90915550612c349050565b6001600160a01b0383165f9081526020819052604090205481811015612c165783818360405163391434e360e21b8152600401610e1d939291906132a1565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216612c5057600280548290039055612c6e565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161136291815260200190565b600260075403612cd657604051633ee5aeb560e01b815260040160405180910390fd5b6002600755565b8260028101928215612d0b579160200282015b82811115612d0b578251825591602001919060010190612cf0565b50612d17929150612d63565b5090565b8260028101928215612d0b579160200282015b82811115612d0b57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612d2e565b5b80821115612d17575f8155600101612d64565b5f6020808352835180828501525f5b81811015612da257858101830151858201604001528201612d86565b505f604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715612df957612df9612dc2565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612e2857612e28612dc2565b604052919050565b5f60408284031215612e40575f80fd5b82601f830112612e4e575f80fd5b612e56612dd6565b806040840185811115612e67575f80fd5b845b81811015612e81578035845260209384019301612e69565b509095945050505050565b80356001600160a01b038116811461230b575f80fd5b5f8060408385031215612eb3575f80fd5b612ebc83612e8c565b946020939093013593505050565b5f60208284031215612eda575f80fd5b5035919050565b5f8060408385031215612ef2575f80fd5b612efb83612e8c565b9150612f0960208401612e8c565b90509250929050565b8015158114610d01575f80fd5b5f8060408385031215612f30575f80fd5b823591506020830135612f4281612f12565b809150509250929050565b5f805f60608486031215612f5f575f80fd5b612f6884612e8c565b9250612f7660208501612e8c565b9150604084013590509250925092565b5f60208284031215612f96575f80fd5b612f9f82612e8c565b9392505050565b5f60408284031215612fb6575f80fd5b82601f830112612fc4575f80fd5b612fcc612dd6565b806040840185811115612fdd575f80fd5b845b81811015612e8157612ff081612e8c565b845260209384019301612fdf565b5f806040838503121561300f575f80fd5b61301883612e8c565b91506020830135612f4281612f12565b5f8060408385031215613039575f80fd5b82359150612f0960208401612e8c565b5f806040838503121561305a575f80fd5b50508035926020909101359150565b5f67ffffffffffffffff82111561308257613082612dc2565b5060051b60200190565b5f82601f83011261309b575f80fd5b813560206130b06130ab83613069565b612dff565b82815260059290921b840181019181810190868411156130ce575f80fd5b8286015b848110156130e957803583529183019183016130d2565b509695505050505050565b5f805f60608486031215613106575f80fd5b833567ffffffffffffffff8082111561311d575f80fd5b818601915086601f830112613130575f80fd5b813560206131406130ab83613069565b82815260059290921b8401810191818101908a84111561315e575f80fd5b948201945b838610156131835761317486612e8c565b82529482019490820190613163565b97505087013592505080821115613198575f80fd5b506131a58682870161308c565b925050604084013590509250925092565b634e487b7160e01b5f52603260045260245ffd5b600181811c908216806131de57607f821691505b6020821081036131fc57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526022908201527f596f7520617265206e6f7420746865206c69717569646974792070726f76696460408201526132b960f11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610de457610de4613244565b8082028115828204841417610de457610de4613244565b5f8261329c57634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160a01b039390931683526020830191909152604082015260600190565b81810381811115610de457610de4613244565b5f602082840312156132e5575f80fd5b5051919050565b5f602082840312156132fc575f80fd5b8151612f9f81612f12565b5f8161331557613315613244565b505f190190565b5f8151808452602080850194508084015f5b838110156133535781516001600160a01b03168752958201959082019060010161332e565b509495945050505050565b608081525f613370608083018761331c565b8281036020848101919091528651808352878201928201905f5b818110156133a65784518352938301939183019160010161338a565b505060408501969096525050506060015292915050565b828152604060208201525f6133d5604083018461331c565b949350505050565b5f60208083850312156133ee575f80fd5b825167ffffffffffffffff811115613404575f80fd5b8301601f81018513613414575f80fd5b80516134226130ab82613069565b81815260059190911b82018301908381019087831115613440575f80fd5b928401925b8284101561345e57835182529284019290840190613445565b979650505050505050565b85815284602082015260a060408201525f61348760a083018661331c565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220367285b1744538f4a57a3e2b21290f977eb56804b3c2f16772bb093ee88b993b64736f6c63430008140033000000000000000000000000627642feb066f379c06b00dd51c1978cc3bcc4c2