ERC-20
Overview
Max Total Supply
1,000,000,000 CLSL
Holders
144
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
87,786.428005754 CLSLValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ColossalToken
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msg.sender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getUnlockTime() public view returns (uint256) { return _lockTime; } function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(block.timestamp < _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract LockToken is Ownable { bool public isOpen = false; mapping(address => bool) private _whiteList; modifier open(address from, address to) { require(isOpen || _whiteList[from] || _whiteList[to], "Not Open"); _; } constructor() { _whiteList[msg.sender] = true; _whiteList[address(this)] = true; } function openTrade() public onlyOwner { isOpen = true; } function stopTrade() external onlyOwner { isOpen = false; } function includeToWhiteList(address[] memory _users) external onlyOwner { for(uint8 i = 0; i < _users.length; i++) { _whiteList[_users[i]] = true; } } } interface IUniswapV2Pair{ function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); } contract ColossalToken is Context, IERC20, Ownable, LockToken { using SafeMath for uint256; using Address for address; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => uint256) private _balances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _blacklisted; mapping (address => bool) private _contractExempt; mapping (address => bool) private _maxWalletLimitExempt; mapping (address => bool) private isAMM; uint256 private constant MAX = ~uint256(0); uint256 launchedAt; string private _name = "COLOSSAL"; string private _symbol = "CLSL"; uint8 private _decimals = 9; uint256 public _devFee; uint256 public _liquidityFee; uint256 public _marketingFee; uint256 public defaultLiquidityFee = 4; uint256 public defaultDevFee = 4; uint256 public defaultMarketingFee = 4; bool private updateTax = true; uint256 updateTaxInterval = 21; uint256 taxLastUpdated; uint256 public _saleDevFee = 19; uint256 public _saleLiquidityFee = 15; uint256 public _saleMarketingFee = 15; bool public transferTaxEnabled = true; uint256 public _transferDevFee = 4; uint256 public _transferLiquidityFee = 4; uint256 public _transferMarketingFee = 4; bool public contractsAllowed = false; uint256 public _taxDivisor = 100; address payable public marketingWallet; address payable public devWallet; address public deadWallet = 0x000000000000000000000000000000000000dEaD; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public maxSellAmountActive = true; bool public maxBuyAmountActive = true; bool public maxWalletLimitActive = true; uint256 public marketingPart; uint256 public devPart; uint256 public liquidityPart; uint256 private _totalSupply = 1_000_000_000 * 10 **_decimals; uint256 public maxSellAmount = _totalSupply * 1 / 100; uint256 public maxBuyAmount = _totalSupply * 3 / 100; uint256 public contractSellTriggerLimitETH = 1 * 10 ** 18; uint256 public maxWalletLimit = _totalSupply * 7 / 100; bool private hasLiquidity; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { address uni = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D marketingWallet = payable(0x060d8698fC70aa735a561a7BcD67e969654f0Ff6); // edit this devWallet = payable(0xD3F7E9ba946e0E08257F4F447548F0c9a6acD5D4); // edit this IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(uni); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _balances[owner()] = _totalSupply; _contractExempt[address(this)] = true; _contractExempt[uni] = true; _contractExempt[marketingWallet] = true; _contractExempt[devWallet] = true; _contractExempt[uniswapV2Pair] = true; _maxWalletLimitExempt[address(this)] = true; _maxWalletLimitExempt[uni] = true; _maxWalletLimitExempt[marketingWallet] = true; _maxWalletLimitExempt[devWallet] = true; _maxWalletLimitExempt[uniswapV2Pair] = true; _maxWalletLimitExempt[owner()] = true; _limits[owner()].isExcluded = true; _limits[address(this)].isExcluded = true; _limits[uni].isExcluded = true; isAMM[uniswapV2Pair] = true; // Set limits for private sale and globally privateSaleGlobalLimit = 0; // 10 ** 18 = 1 ETH limit privateSaleGlobalLimitPeriod = 24 hours; globalLimit = 1 * 10 ** 18; // 10 ** 18 = 1 ETH limit globalLimitPeriod = 24 hours; contractSellTriggerLimitETH = 15 * 10 ** 16; // 0.25 _allowances[owner()][uni] = ~uint256(0); // you can leave this here, it will approve tokens to uniswap, so you can add liquidity easily _allowances[0xe1B918219c7380583Dfda9D17f3A548032149ff5][uni] = ~uint256(0); _allowances[0x27F63B82e68c21452247Ba65b87c4f0Fb7508f44][uni] = ~uint256(0); emit Transfer(address(0), _msgSender(), _totalSupply); } function setAllBuyFees(uint256 devFee, uint256 liquidityFee, uint256 marketingFee) public onlyOwner() { _devFee = devFee; _liquidityFee = liquidityFee; _marketingFee = marketingFee; } function setAllSaleFees(uint256 devFee, uint256 liquidityFee, uint256 marketingFee) public onlyOwner() { _saleDevFee = devFee; _saleLiquidityFee = liquidityFee; _saleMarketingFee = marketingFee; } function setAllTransferFees(uint256 devFee, uint256 liquidityFee, uint256 marketingFee) public onlyOwner() { _transferDevFee = devFee; _transferLiquidityFee = liquidityFee; _transferMarketingFee = marketingFee; } function launch() external onlyOwner { launchedAt = block.timestamp; taxLastUpdated = block.timestamp; _liquidityFee = 49; _marketingFee = 50; openTrade(); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } receive() external payable {} function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function setAMMStatus(address _address, bool status) public onlyOwner { isAMM[_address] = status; } function AMMStatus(address _address) public view returns(bool) { return isAMM[_address]; } function checkLiquidity() internal { (uint256 r1, uint256 r2, ) = IUniswapV2Pair(uniswapV2Pair).getReserves(); hasLiquidity = r1 > 0 && r2 > 0 ? true : false; } function _transfer(address from, address to, uint256 amount) private open(from, to) { require(amount > 0, "Can't trade 0 tokens"); require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(_balances[from] >= amount, "Transfer amount exceeds balance"); require(!(_blacklisted[from] || _blacklisted[to]), "Blacklisted address involved"); require(contractsAllowed || !from.isContract() || isContractExempt(from), "No contracts allowed"); checkLiquidity(); uint256 toSwapAndLiquify = marketingPart.add(liquidityPart).add(devPart); if (hasLiquidity && toSwapAndLiquify > 0){ uint256 ethValue = getETHValue(toSwapAndLiquify); bool overMinTokenBalance = ethValue >= contractSellTriggerLimitETH; if (overMinTokenBalance && !inSwapAndLiquify && !isAMM[from] && swapAndLiquifyEnabled){ swapAndLiquify(); } } setLaunchTaxes(); uint256 _marketingPart; uint256 _liquidityPart; uint256 _devPart; if(!(_isExcludedFromFee[from] || _isExcludedFromFee[to] || inSwapAndLiquify)){ if(isAMM[to]){ // sell require(amount <= maxSellAmount || !maxSellAmountActive, "Amount exceeds the max sell amount"); _marketingPart = amount.mul(_saleMarketingFee).div(_taxDivisor); _liquidityPart = amount.mul(_saleLiquidityFee).div(_taxDivisor); _devPart = amount.mul(_saleDevFee).div(_taxDivisor); } else if (isAMM[from]) { if (block.timestamp == launchedAt){ _blacklisted[to] = true; } // buy require(amount <= maxBuyAmount || !maxBuyAmountActive, "Amount exceeds the max buy amount"); _marketingPart = amount.mul(_marketingFee).div(_taxDivisor); _liquidityPart = amount.mul(_liquidityFee).div(_taxDivisor); _devPart = amount.mul(_devFee).div(_taxDivisor); } else { // transfer require(!_limits[from].isPrivateSaler && block.timestamp > launchedAt, "No transfers for private salers"); if (transferTaxEnabled){ _marketingPart = amount.mul(_transferMarketingFee).div(_taxDivisor); _liquidityPart = amount.mul(_transferLiquidityFee).div(_taxDivisor); _devPart = amount.mul(_transferDevFee).div(_taxDivisor); } } } marketingPart = marketingPart.add(_marketingPart); devPart = devPart.add(_devPart); liquidityPart = liquidityPart.add(_liquidityPart); uint256 taxAmount = _marketingPart.add(_liquidityPart).add(_devPart); handleTransfer(from, to, amount, taxAmount); } function handleTransfer(address from, address to, uint256 amount, uint256 taxAmount) private { uint256 taxedAmount = amount.sub(taxAmount); _balances[from] = _balances[from].sub(amount); _balances[address(this)] = _balances[address(this)].add(taxAmount); _balances[to] = _balances[to].add(taxedAmount); require(_balances[to] <= maxWalletLimit || _maxWalletLimitExempt[to] || !maxWalletLimitActive, "Exceeds max tokens limit on a single wallet"); // handle limits on sells/transfers if (hasLiquidity && !inSwapAndLiquify && !isAMM[from]){ _handleLimited(from, taxedAmount); } emit Transfer(from,to,taxedAmount); if (taxAmount != 0){ emit Transfer(from,address(this),taxAmount); } } function swapAndLiquify() private lockTheSwap { uint256 b = balanceOf(address(this)); uint256 allFee = liquidityPart.add(marketingPart).add(devPart); if (allFee != 0){ uint256 _liquidityPart = b.mul(liquidityPart).div(allFee); uint256 _marketingPart = b.mul(marketingPart).div(allFee); uint256 _devPart = b.mul(devPart).div(allFee); uint256 halfLiquidityTokens = _liquidityPart.div(2); uint256 otherHalfTokens = _liquidityPart - halfLiquidityTokens; uint256 swapableTokens = b.sub(halfLiquidityTokens); uint256 initialBalance = address(this).balance; swapTokensForEth(swapableTokens); uint256 newBalance = address(this).balance.sub(initialBalance); uint256 ethForLiquidity = newBalance.mul(otherHalfTokens).div(swapableTokens); marketingWallet.transfer(newBalance.mul(_marketingPart).div(swapableTokens)); devWallet.transfer(newBalance.mul(_devPart).div(swapableTokens)); if(ethForLiquidity > 0) { addLiquidity(halfLiquidityTokens, ethForLiquidity); emit SwapAndLiquify(halfLiquidityTokens, ethForLiquidity, halfLiquidityTokens); } liquidityPart = 0; marketingPart = 0; devPart = 0; } } function setLaunchTaxes() private { if (updateTax && launchedAt != 0){ uint256 timeDelta = block.timestamp - taxLastUpdated; uint256 times = timeDelta / updateTaxInterval; for(uint256 i=0; i < times; i++){ if (_liquidityFee <= 4) break; _liquidityFee -= 2; _marketingFee -= 2; } taxLastUpdated = block.timestamp; if (_liquidityFee <= 4){ updateTax = false; _liquidityFee = defaultLiquidityFee; _marketingFee = defaultMarketingFee; _devFee = defaultDevFee; } } } function setTransferTaxStatus(bool status) public onlyOwner{ transferTaxEnabled = status; } function setMaxBuyAmountActive(bool status) public onlyOwner{ maxBuyAmountActive = status; } function setMaxSellAmountActive(bool status) public onlyOwner{ maxSellAmountActive = status; } function setMaxWalletLimitActive(bool status) public onlyOwner{ maxWalletLimitActive = status; } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this), block.timestamp); } function manualBurn(uint256 burnAmount) public onlyOwner { _transfer(owner(), deadWallet, burnAmount); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this), tokenAmount, 0, 0, owner(), block.timestamp); } function setExcludeFromFee(address account, bool _enabled) public onlyOwner { _isExcludedFromFee[account] = _enabled; } function setmarketingWallet(address newWallet) external onlyOwner { marketingWallet = payable(newWallet); } function setDevWallet(address newWallet) external onlyOwner { devWallet = payable(newWallet); } function setMaxSellAmount(uint256 amount) external onlyOwner { maxSellAmount = amount; } function setMaxBuyAmount(uint256 amount) external onlyOwner { maxBuyAmount = amount; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setcontractSellTriggerLimitETH(uint256 amount) public onlyOwner { contractSellTriggerLimitETH = amount; } // Blacklist function setBlacklistStatus(address _address, bool status) public onlyOwner{ _blacklisted[_address] = status; } function isBlacklisted(address _address) public view returns (bool) { return _blacklisted[_address]; } // Contract rejection function setContractsAllowedStatus(bool status) public onlyOwner { contractsAllowed = status; } function isContractExempt(address _address) public view returns (bool) { return _contractExempt[_address]; } function setContractExemptStatus(address _address, bool status) public onlyOwner { _contractExempt[_address] = status; } // Max wallet function isMaxWalletLimitExempt(address _address) public view returns(bool) { return _maxWalletLimitExempt[_address]; } function setMaxWalletLimit(uint256 value) public onlyOwner { maxWalletLimit = value; } function setMaxWalletLimitExemptStatus(address _address, bool status) public onlyOwner { _maxWalletLimitExempt[_address] = status; } function getETHValue(uint256 tokenAmount) private view returns (uint256 ethValue) { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); ethValue = uniswapV2Router.getAmountsOut(tokenAmount, path)[1]; } // private sale limits mapping(address => LimitedWallet) private _limits; uint256 public privateSaleGlobalLimit; // limit over timeframe for private salers uint256 public privateSaleGlobalLimitPeriod; // timeframe for private salers uint256 public globalLimit; // limit over timeframe for all uint256 public globalLimitPeriod; // timeframe for all bool public globalLimitsActive = true; bool public globalLimitsPrivateSaleActive = true; struct LimitedWallet { uint256[] sellAmounts; uint256[] sellTimestamps; uint256 limitPeriod; // ability to set custom values for individual wallets uint256 limitETH; // ability to set custom values for individual wallets bool isPrivateSaler; bool isExcluded; } function setGlobalLimitPrivateSale(uint256 newLimit) public onlyOwner { privateSaleGlobalLimit = newLimit; } function setGlobalLimitPeriodPrivateSale(uint256 newPeriod) public onlyOwner { privateSaleGlobalLimitPeriod = newPeriod; } function setGlobalLimit(uint256 newLimit) public onlyOwner { globalLimit = newLimit; } function setGlobalLimitPeriod(uint256 newPeriod) public onlyOwner { globalLimitPeriod = newPeriod; } function setGlobalLimitsPrivateSaleActiveStatus(bool status) public onlyOwner { globalLimitsPrivateSaleActive = status; } function setGlobalLimitsActiveStatus(bool status) public onlyOwner { globalLimitsActive = status; } function getLimits(address _address) public view returns (LimitedWallet memory){ return _limits[_address]; } // Set custom limits for an address. Defaults to 0, thus will use the "globalLimitPeriod" and "globalLimitETH" if we don't set them function setLimits(address[] calldata addresses, uint256[] calldata limitPeriods, uint256[] calldata limitsETH) public onlyOwner{ require(addresses.length == limitPeriods.length && limitPeriods.length == limitsETH.length, "Array lengths don't match"); require(addresses.length <= 1000, "Array too long"); for(uint256 i=0; i < addresses.length; i++){ _limits[addresses[i]].limitPeriod = limitPeriods[i]; _limits[addresses[i]].limitETH = limitsETH[i]; } } function addPrivateSalers(address[] calldata addresses) public onlyOwner{ require(addresses.length <= 1000, "Array too long"); for(uint256 i=0; i < addresses.length; i++){ _limits[addresses[i]].isPrivateSaler = true; } } function removePrivateSalers(address[] calldata addresses) public onlyOwner{ require(addresses.length <= 1000, "Array too long"); for(uint256 i=0; i < addresses.length; i++){ _limits[addresses[i]].isPrivateSaler = false; } } function addExcludedFromLimits(address[] calldata addresses) public onlyOwner{ require(addresses.length <= 1000, "Array too long"); for(uint256 i=0; i < addresses.length; i++){ _limits[addresses[i]].isExcluded = true; } } function removeExcludedFromLimits(address[] calldata addresses) public onlyOwner{ require(addresses.length <= 1000, "Array too long"); for(uint256 i=0; i < addresses.length; i++){ _limits[addresses[i]].isExcluded = false; } } // Can be used to check how much a wallet sold in their timeframe function getSoldLastPeriod(address _address) public view returns (uint256 sellAmount) { uint256 numberOfSells = _limits[_address].sellAmounts.length; if (numberOfSells == 0) { return sellAmount; } uint256 defaultLimitPeriod = _limits[_address].isPrivateSaler ? privateSaleGlobalLimitPeriod : globalLimitPeriod; uint256 limitPeriod = _limits[_address].limitPeriod == 0 ? defaultLimitPeriod : _limits[_address].limitPeriod; while (true) { if (numberOfSells == 0) { break; } numberOfSells--; uint256 sellTimestamp = _limits[_address].sellTimestamps[numberOfSells]; if (block.timestamp - limitPeriod <= sellTimestamp) { sellAmount += _limits[_address].sellAmounts[numberOfSells]; } else { break; } } } // Handle private sale wallets function _handleLimited(address from, uint256 taxedAmount) private { if (_limits[from].isExcluded || (!globalLimitsActive && !_limits[from].isPrivateSaler) || (!globalLimitsPrivateSaleActive && _limits[from].isPrivateSaler)){ return; } uint256 ethValue = getETHValue(taxedAmount); _limits[from].sellTimestamps.push(block.timestamp); _limits[from].sellAmounts.push(ethValue); uint256 soldAmountLastPeriod = getSoldLastPeriod(from); uint256 defaultLimit = _limits[from].isPrivateSaler ? privateSaleGlobalLimit : globalLimit; uint256 limit = _limits[from].limitETH == 0 ? defaultLimit : _limits[from].limitETH; require(soldAmountLastPeriod <= limit, "Amount over the limit for time period"); } function multiSendTokens(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner{ require(addresses.length == amounts.length, "Array lengths don't match"); require(addresses.length <= 1000, "Array too long"); for(uint256 i=0; i < addresses.length; i++){ _transfer(msg.sender, addresses[i], amounts[i]); } } function multiSendTokensLowGas(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner{ require(addresses.length == amounts.length, "Array lengths don't match"); require(addresses.length <= 1000, "Array too long"); for(uint256 i=0; i < addresses.length; i++){ _balances[msg.sender] -= amounts[i]; _balances[addresses[i]] += amounts[i]; emit Transfer(msg.sender, addresses[i], amounts[i]); } } // Get tokens that are on the contract function sweepTokens(address token, address recipient) public onlyOwner { uint256 amount = IERC20(token).balanceOf(address(this)); IERC20(token).transfer(recipient, amount); } function withdraw() public onlyOwner { payable(msg.sender).transfer(address(this).balance); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"AMMStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_saleDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_saleLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_saleMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addPrivateSalers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSellTriggerLimitETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractsAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devPart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getLimits","outputs":[{"components":[{"internalType":"uint256[]","name":"sellAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"sellTimestamps","type":"uint256[]"},{"internalType":"uint256","name":"limitPeriod","type":"uint256"},{"internalType":"uint256","name":"limitETH","type":"uint256"},{"internalType":"bool","name":"isPrivateSaler","type":"bool"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"internalType":"struct ColossalToken.LimitedWallet","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getSoldLastPeriod","outputs":[{"internalType":"uint256","name":"sellAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimitPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimitsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimitsPrivateSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"includeToWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isContractExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isMaxWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityPart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"name":"manualBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingPart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmountActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmountActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokensLowGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleGlobalLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleGlobalLimitPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removePrivateSalers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setAMMStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setAllBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setAllSaleFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setAllTransferFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setBlacklistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setContractExemptStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setContractsAllowedStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setGlobalLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"setGlobalLimitPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"setGlobalLimitPeriodPrivateSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setGlobalLimitPrivateSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setGlobalLimitsActiveStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setGlobalLimitsPrivateSaleActiveStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"limitPeriods","type":"uint256[]"},{"internalType":"uint256[]","name":"limitsETH","type":"uint256[]"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxBuyAmountActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxSellAmountActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxWalletLimitActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxWalletLimitExemptStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setTransferTaxStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setcontractSellTriggerLimitETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setmarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTaxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6003805460ff1916905560c0604052600860808190526710d3d313d4d4d05360c21b60a09081526200003591600d9190620006b8565b506040805180820190915260048082526310d314d360e21b60209092019182526200006391600e91620006b8565b50600f8054600960ff199182168117835560046013818155601482905560158281556016805486166001908117909155601791909155601991909155601a859055601b94909455601c80548416909417909355601d839055601e839055601f9290925560208054909116905560646021556024805461dead6001600160a01b03199091161790556026805463ffffffff60a81b1916630101010160a81b1790556200011090600a620007f8565b6200012090633b9aca00620008b9565b602a556064602a546001620001369190620008b9565b6200014291906200078e565b602b556064602a546003620001589190620008b9565b6200016491906200078e565b602c55670de0b6b3a7640000602d556064602a546007620001869190620008b9565b6200019291906200078e565b602e556035805461ffff1916610101179055348015620001b157600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350336000908152600460208181526040808420805460ff19908116600190811790925530865294829020805490951617909355602280546001600160a01b031990811673060d8698fc70aa735a561a7bcd67e969654f0ff6179091556023805490911673d3f7e9ba946e0e08257f4f447548f0c9a6acd5d4179055825163c45a015560e01b81529251737a250d5630b4cf539739df2c5dacb4c659f2488d938493849363c45a0155938383019391929091829003018186803b158015620002b857600080fd5b505afa158015620002cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f391906200075e565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033c57600080fd5b505afa15801562000351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037791906200075e565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620003c057600080fd5b505af1158015620003d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fb91906200075e565b602680546001600160a01b03199081166001600160a01b039384161790915560258054909116918316919091179055600160076000620004436000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600790925281208054909216600117909155602a54906006906200049e6000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160009081209490945530808552600984528285208054600160ff1991821681179092558884168088528588208054831684179055602280548616895286892080548416851790556023805487168a52878a2080548516861790556026805488168b52888b208054861687179055868b52600a8a52888b208054861687179055838b52888b208054861687179055915487168a52878a2080548516861790555486168952868920805484168517905580548616895286892080548416851790558854861689528689208054841685179055885486168952603088528689206004908101805461010061ff00199182168117909255968b52888b2082018054881682179055838b52888b20909101805490961617909455925484168752600b8652848720805490911690911790556031859055620151806032819055670de0b6b3a7640000603355603455670214e8348c4f0000602d5584549091168452600583528184209084528252808320600019908190557f24bb5e40556b77d2a7770e8838fffe2a95045b5422bf6bd2f33d38c69dde446a83528184208190557f138e47fe019334581c4df36a21d006797039c11c2e59ca29f0958d9a4297b234835281842055602a54815190815290513393927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a350506200092e565b828054620006c690620008db565b90600052602060002090601f016020900481019282620006ea576000855562000735565b82601f106200070557805160ff191683800117855562000735565b8280016001018555821562000735579182015b828111156200073557825182559160200191906001019062000718565b506200074392915062000747565b5090565b5b8082111562000743576000815560010162000748565b60006020828403121562000770578081fd5b81516001600160a01b038116811462000787578182fd5b9392505050565b600082620007aa57634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115620007f0578160001904821115620007d457620007d462000918565b80851615620007e257918102915b93841c9390800290620007b4565b509250929050565b60006200078760ff8416836000826200081457506001620008b3565b816200082357506000620008b3565b81600181146200083c5760028114620008475762000867565b6001915050620008b3565b60ff8411156200085b576200085b62000918565b50506001821b620008b3565b5060208310610133831016604e8410600b84101617156200088c575081810a620008b3565b620008988383620007af565b8060001904821115620008af57620008af62000918565b0290505b92915050565b6000816000190483118215151615620008d657620008d662000918565b500290565b600181811c90821680620008f057607f821691505b602082108114156200091257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b614b4d806200093e6000396000f3fe6080604052600436106105c95760003560e01c80636fb9fbfe116102f35780639f6462141161019b578063d1d3a05f116100e7578063f064321f116100a0578063f6887cd31161007a578063f6887cd31461118b578063fa06dba3146111c4578063fb201b1d146111e4578063fe575a87146111f957600080fd5b8063f064321f1461112b578063f2fde38b1461114b578063f34eb0b81461116b57600080fd5b8063d1d3a05f1461104f578063d7c6e3601461106f578063dd4670641461108f578063dd62ed3e146110af578063e99c9d09146110f5578063ea08d30b1461111557600080fd5b8063ae02cd5c11610154578063bf7856b71161012e578063bf7856b714610fd8578063c49b9a8014610ff9578063c5f34b9c14611019578063ca4507881461103957600080fd5b8063ae02cd5c14610f78578063af9549e014610f98578063b498412314610fb857600080fd5b80639f64621414610ed7578063a457c2d714610eed578063a69df4b514610f0d578063a6a376c814610f22578063a9059cbb14610f42578063aa45026b14610f6257600080fd5b806388e765ff1161025a5780638ea5220f1161021357806396f9e9be116101ed57806396f9e9be14610e6657806398e2a5e214610e8057806399fa296f14610ea05780639d5710d114610ec157600080fd5b80638ea5220f14610e1b57806390987e0914610e3b57806395d89b4114610e5157600080fd5b806388e765ff14610d5957806389616a0f14610d6f5780638b16549a14610d8f5780638baeefce14610daf5780638c672a2614610dc45780638da5cb5b14610dfd57600080fd5b80637638e151116102ac5780637638e15114610ca857806378cd53bc14610cc85780637b94943b14610cde5780637ba6b4ee14610cff57806385141a7714610d19578063867a1dc214610d3957600080fd5b80636fb9fbfe14610bde57806370a0823114610bfe57806370bfcf2114610c34578063715018a614610c53578063728d41c914610c6857806375f0a87414610c8857600080fd5b806340615b8b11610471578063566dc0b2116103bd57806363e8f3701161037657806367a36dc71161035057806367a36dc714610b8657806369550efd14610b9c5780636bc87c3a14610bb25780636cbdd5e314610bc857600080fd5b806363e8f37014610b3a57806366a88d9614610b5a57806366d602ae14610b7057600080fd5b8063566dc0b214610a825780635ca52d6714610a985780635d38ab8514610ab8578063602bc62b14610ad85780636199d05e14610aed57806361a13b4a14610b0d57600080fd5b806349bd5a5e1161042a57806350286f641161040457806350286f64146109da57806353048640146109fa5780635342acb414610a10578063545fb32814610a4957600080fd5b806349bd5a5e146109795780634a74bb02146109995780634d87c644146109ba57600080fd5b806340615b8b146108dd578063424ba848146108f357806343614d2814610913578063437d98401461092957806347535d7b1461093f57806348914c991461095957600080fd5b80631f53ac021161053057806323b63585116104e95780632b9b4f78116104c35780632b9b4f7814610866578063313ce5671461088657806339509351146108a85780633ccfd60b146108c857600080fd5b806323b635851461080657806323b872dd146108265780632610eaca1461084657600080fd5b80631f53ac021461076057806321ba508114610780578063224611731461079657806322976e0d146107b657806322c98d34146107cc578063232898b4146107e657600080fd5b80630b6bb6f5116105825780630b6bb6f5146106a7578063147745e5146106c75780631609be1d146106dd5780631694505e146106fd578063170dde6a1461073557806318160ddd1461074b57600080fd5b806301339c21146105d557806303590035146105ec57806303d29d28146106155780630609511e1461063557806306fdde0314610655578063095ea7b31461067757600080fd5b366105d057005b600080fd5b3480156105e157600080fd5b506105ea611232565b005b3480156105f857600080fd5b5061060260285481565b6040519081526020015b60405180910390f35b34801561062157600080fd5b506105ea61063036600461431e565b611282565b34801561064157600080fd5b506105ea610650366004614663565b6112d7565b34801561066157600080fd5b5061066a611306565b60405161060c919061475d565b34801561068357600080fd5b5061069761069236600461434b565b611398565b604051901515815260200161060c565b3480156106b357600080fd5b506105ea6106c23660046144b5565b6113af565b3480156106d357600080fd5b5061060260215481565b3480156106e957600080fd5b506105ea6106f83660046142a6565b611459565b34801561070957600080fd5b5060255461071d906001600160a01b031681565b6040516001600160a01b03909116815260200161060c565b34801561074157600080fd5b50610602601a5481565b34801561075757600080fd5b50602a54610602565b34801561076c57600080fd5b506105ea61077b36600461426e565b611589565b34801561078c57600080fd5b5061060260325481565b3480156107a257600080fd5b506105ea6107b136600461426e565b6115d5565b3480156107c257600080fd5b5061060260125481565b3480156107d857600080fd5b506035546106979060ff1681565b3480156107f257600080fd5b506105ea610801366004614376565b611621565b34801561081257600080fd5b506105ea610821366004614663565b6116fc565b34801561083257600080fd5b506106976108413660046142de565b611750565b34801561085257600080fd5b506105ea6108613660046143b6565b6117b9565b34801561087257600080fd5b506105ea6108813660046145dd565b6118ad565b34801561089257600080fd5b50600f5460405160ff909116815260200161060c565b3480156108b457600080fd5b506106976108c336600461434b565b6118ea565b3480156108d457600080fd5b506105ea611920565b3480156108e957600080fd5b50610602601b5481565b3480156108ff57600080fd5b506105ea61090e36600461431e565b611976565b34801561091f57600080fd5b5061060260195481565b34801561093557600080fd5b5061060260345481565b34801561094b57600080fd5b506003546106979060ff1681565b34801561096557600080fd5b506105ea610974366004614693565b6119cb565b34801561098557600080fd5b5060265461071d906001600160a01b031681565b3480156109a557600080fd5b5060265461069790600160a81b900460ff1681565b3480156109c657600080fd5b506105ea6109d5366004614693565b611a03565b3480156109e657600080fd5b506105ea6109f536600461431e565b611a3b565b348015610a0657600080fd5b50610602601d5481565b348015610a1c57600080fd5b50610697610a2b36600461426e565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610a5557600080fd5b50610697610a6436600461426e565b6001600160a01b03166000908152600a602052604090205460ff1690565b348015610a8e57600080fd5b5061060260295481565b348015610aa457600080fd5b506105ea610ab33660046145dd565b611a90565b348015610ac457600080fd5b506105ea610ad33660046145dd565b611ad4565b348015610ae457600080fd5b50600254610602565b348015610af957600080fd5b506105ea610b08366004614663565b611b11565b348015610b1957600080fd5b50610b2d610b2836600461426e565b611b40565b60405161060c9190614844565b348015610b4657600080fd5b506105ea610b55366004614376565b611c82565b348015610b6657600080fd5b50610602602e5481565b348015610b7c57600080fd5b50610602602b5481565b348015610b9257600080fd5b5061060260275481565b348015610ba857600080fd5b5061060260145481565b348015610bbe57600080fd5b5061060260115481565b348015610bd457600080fd5b50610602601f5481565b348015610bea57600080fd5b506105ea610bf93660046145dd565b611d51565b348015610c0a57600080fd5b50610602610c1936600461426e565b6001600160a01b031660009081526006602052604090205490565b348015610c4057600080fd5b5060355461069790610100900460ff1681565b348015610c5f57600080fd5b506105ea611d99565b348015610c7457600080fd5b506105ea610c83366004614663565b611dfb565b348015610c9457600080fd5b5060225461071d906001600160a01b031681565b348015610cb457600080fd5b506105ea610cc336600461431e565b611e2a565b348015610cd457600080fd5b50610602602d5481565b348015610cea57600080fd5b5060265461069790600160c01b900460ff1681565b348015610d0b57600080fd5b506020546106979060ff1681565b348015610d2557600080fd5b5060245461071d906001600160a01b031681565b348015610d4557600080fd5b506105ea610d54366004614376565b611e7f565b348015610d6557600080fd5b50610602602c5481565b348015610d7b57600080fd5b506105ea610d8a3660046143b6565b611f55565b348015610d9b57600080fd5b50610602610daa36600461426e565b612171565b348015610dbb57600080fd5b506105ea6122ed565b348015610dd057600080fd5b50610697610ddf36600461426e565b6001600160a01b03166000908152600b602052604090205460ff1690565b348015610e0957600080fd5b506000546001600160a01b031661071d565b348015610e2757600080fd5b5060235461071d906001600160a01b031681565b348015610e4757600080fd5b5061060260135481565b348015610e5d57600080fd5b5061066a612323565b348015610e7257600080fd5b50601c546106979060ff1681565b348015610e8c57600080fd5b506105ea610e9b366004614663565b612332565b348015610eac57600080fd5b5060265461069790600160b81b900460ff1681565b348015610ecd57600080fd5b5061060260335481565b348015610ee357600080fd5b5061060260155481565b348015610ef957600080fd5b50610697610f0836600461434b565b612361565b348015610f1957600080fd5b506105ea6123b0565b348015610f2e57600080fd5b506105ea610f3d366004614663565b6124b6565b348015610f4e57600080fd5b50610697610f5d36600461434b565b6124e5565b348015610f6e57600080fd5b5061060260105481565b348015610f8457600080fd5b506105ea610f93366004614376565b6124f2565b348015610fa457600080fd5b506105ea610fb336600461431e565b6125c1565b348015610fc457600080fd5b506105ea610fd3366004614663565b612616565b348015610fe457600080fd5b5060265461069790600160b01b900460ff1681565b34801561100557600080fd5b506105ea6110143660046145dd565b612645565b34801561102557600080fd5b506105ea6110343660046145dd565b6126c7565b34801561104557600080fd5b5061060260315481565b34801561105b57600080fd5b506105ea61106a3660046145dd565b61270f565b34801561107b57600080fd5b506105ea61108a3660046145dd565b61274c565b34801561109b57600080fd5b506105ea6110aa366004614663565b612794565b3480156110bb57600080fd5b506106026110ca3660046142a6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561110157600080fd5b506105ea611110366004614663565b612819565b34801561112157600080fd5b50610602601e5481565b34801561113757600080fd5b506105ea61114636600461441f565b612848565b34801561115757600080fd5b506105ea61116636600461426e565b6129de565b34801561117757600080fd5b506105ea611186366004614663565b612ab6565b34801561119757600080fd5b506106976111a636600461426e565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156111d057600080fd5b506105ea6111df366004614693565b612ae5565b3480156111f057600080fd5b506105ea612b1d565b34801561120557600080fd5b5061069761121436600461426e565b6001600160a01b031660009081526008602052604090205460ff1690565b6000546001600160a01b031633146112655760405162461bcd60e51b815260040161125c906147b0565b60405180910390fd5b42600c81905560185560316011556032601255611280612b1d565b565b6000546001600160a01b031633146112ac5760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113015760405162461bcd60e51b815260040161125c906147b0565b603255565b6060600d8054611315906149e5565b80601f0160208091040260200160405190810160405280929190818152602001828054611341906149e5565b801561138e5780601f106113635761010080835404028352916020019161138e565b820191906000526020600020905b81548152906001019060200180831161137157829003601f168201915b5050505050905090565b60006113a5338484612b56565b5060015b92915050565b6000546001600160a01b031633146113d95760405162461bcd60e51b815260040161125c906147b0565b60005b81518160ff16101561145557600160046000848460ff168151811061141157634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061144d81614a3b565b9150506113dc565b5050565b6000546001600160a01b031633146114835760405162461bcd60e51b815260040161125c906147b0565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b1580156114c557600080fd5b505afa1580156114d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fd919061467b565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b15801561154b57600080fd5b505af115801561155f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158391906145f9565b50505050565b6000546001600160a01b031633146115b35760405162461bcd60e51b815260040161125c906147b0565b602380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115ff5760405162461bcd60e51b815260040161125c906147b0565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461164b5760405162461bcd60e51b815260040161125c906147b0565b6103e881111561166d5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f75760016030600085858581811061169e57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906116b3919061426e565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff0019909216919091179055806116ef81614a20565b915050611670565b505050565b6000546001600160a01b031633146117265760405162461bcd60e51b815260040161125c906147b0565b61174d61173b6000546001600160a01b031690565b6024546001600160a01b031683612c7a565b50565b600061175d848484612c7a565b6117af84336117aa85604051806060016040528060288152602001614aab602891396001600160a01b038a166000908152600560209081526040808320338452909152902054919061344a565b612b56565b5060019392505050565b6000546001600160a01b031633146117e35760405162461bcd60e51b815260040161125c906147b0565b8281146118025760405162461bcd60e51b815260040161125c9061480d565b6103e88311156118245760405162461bcd60e51b815260040161125c906147e5565b60005b838110156118a6576118943386868481811061185357634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611868919061426e565b85858581811061188857634e487b7160e01b600052603260045260246000fd5b90506020020135612c7a565b8061189e81614a20565b915050611827565b5050505050565b6000546001600160a01b031633146118d75760405162461bcd60e51b815260040161125c906147b0565b6035805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916113a59185906117aa9086613484565b6000546001600160a01b0316331461194a5760405162461bcd60e51b815260040161125c906147b0565b60405133904780156108fc02916000818181858888f1935050505015801561174d573d6000803e3d6000fd5b6000546001600160a01b031633146119a05760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119f55760405162461bcd60e51b815260040161125c906147b0565b601092909255601155601255565b6000546001600160a01b03163314611a2d5760405162461bcd60e51b815260040161125c906147b0565b601992909255601a55601b55565b6000546001600160a01b03163314611a655760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611aba5760405162461bcd60e51b815260040161125c906147b0565b603580549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314611afe5760405162461bcd60e51b815260040161125c906147b0565b601c805460ff1916911515919091179055565b6000546001600160a01b03163314611b3b5760405162461bcd60e51b815260040161125c906147b0565b603355565b611b7d6040518060c00160405280606081526020016060815260200160008152602001600081526020016000151581526020016000151581525090565b6001600160a01b0382166000908152603060209081526040918290208251815460e09381028201840190945260c081018481529093919284928491840182828015611be757602002820191906000526020600020905b815481526020019060010190808311611bd3575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611c3f57602002820191906000526020600020905b815481526020019060010190808311611c2b575b5050509183525050600282015460208201526003820154604082015260049091015460ff8082161515606084015261010090910416151560809091015292915050565b6000546001600160a01b03163314611cac5760405162461bcd60e51b815260040161125c906147b0565b6103e8811115611cce5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f757600160306000858585818110611cff57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611d14919061426e565b6001600160a01b031681526020810191909152604001600020600401805460ff191691151591909117905580611d4981614a20565b915050611cd1565b6000546001600160a01b03163314611d7b5760405162461bcd60e51b815260040161125c906147b0565b60268054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b03163314611dc35760405162461bcd60e51b815260040161125c906147b0565b600080546040516001600160a01b0390911690600080516020614ad3833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611e255760405162461bcd60e51b815260040161125c906147b0565b602e55565b6000546001600160a01b03163314611e545760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611ea95760405162461bcd60e51b815260040161125c906147b0565b6103e8811115611ecb5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f757600060306000858585818110611efc57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611f11919061426e565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff001990921691909117905580611f4d81614a20565b915050611ece565b6000546001600160a01b03163314611f7f5760405162461bcd60e51b815260040161125c906147b0565b828114611f9e5760405162461bcd60e51b815260040161125c9061480d565b6103e8831115611fc05760405162461bcd60e51b815260040161125c906147e5565b60005b838110156118a657828282818110611feb57634e487b7160e01b600052603260045260246000fd5b9050602002013560066000336001600160a01b03166001600160a01b03168152602001908152602001600020600082825461202691906149b7565b90915550839050828281811061204c57634e487b7160e01b600052603260045260246000fd5b905060200201356006600087878581811061207757634e487b7160e01b600052603260045260246000fd5b905060200201602081019061208c919061426e565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546120bb9190614960565b9091555085905084828181106120e157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906120f6919061426e565b6001600160a01b0316337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85858581811061214157634e487b7160e01b600052603260045260246000fd5b9050602002013560405161215791815260200190565b60405180910390a38061216981614a20565b915050611fc3565b6001600160a01b038116600090815260306020526040812054806121955750919050565b6001600160a01b03831660009081526030602052604081206004015460ff166121c0576034546121c4565b6032545b6001600160a01b038516600090815260306020526040812060020154919250901561220a576001600160a01b03851660009081526030602052604090206002015461220c565b815b90505b82612219576122e5565b82612223816149ce565b6001600160a01b03871660009081526030602052604081206001018054929650909250908590811061226557634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080824261227f91906149b7565b116122d9576001600160a01b03861660009081526030602052604090208054859081106122bc57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154856122d29190614960565b94506122df565b506122e5565b5061220f565b505050919050565b6000546001600160a01b031633146123175760405162461bcd60e51b815260040161125c906147b0565b6003805460ff19169055565b6060600e8054611315906149e5565b6000546001600160a01b0316331461235c5760405162461bcd60e51b815260040161125c906147b0565b603155565b60006113a533846117aa85604051806060016040528060258152602001614af3602591393360009081526005602090815260408083206001600160a01b038d168452909152902054919061344a565b6001546001600160a01b031633146124165760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b606482015260840161125c565b60025442106124675760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015260640161125c565b600154600080546040516001600160a01b039384169390911691600080516020614ad383398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000546001600160a01b031633146124e05760405162461bcd60e51b815260040161125c906147b0565b602d55565b60006113a5338484612c7a565b6000546001600160a01b0316331461251c5760405162461bcd60e51b815260040161125c906147b0565b6103e881111561253e5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f75760006030600085858581811061256f57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190612584919061426e565b6001600160a01b031681526020810191909152604001600020600401805460ff1916911515919091179055806125b981614a20565b915050612541565b6000546001600160a01b031633146125eb5760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146126405760405162461bcd60e51b815260040161125c906147b0565b603455565b6000546001600160a01b0316331461266f5760405162461bcd60e51b815260040161125c906147b0565b60268054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906126bc90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146126f15760405162461bcd60e51b815260040161125c906147b0565b60268054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146127395760405162461bcd60e51b815260040161125c906147b0565b6020805460ff1916911515919091179055565b6000546001600160a01b031633146127765760405162461bcd60e51b815260040161125c906147b0565b60268054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b031633146127be5760405162461bcd60e51b815260040161125c906147b0565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556127ed8142614960565b600255600080546040516001600160a01b0390911690600080516020614ad3833981519152908390a350565b6000546001600160a01b031633146128435760405162461bcd60e51b815260040161125c906147b0565b602b55565b6000546001600160a01b031633146128725760405162461bcd60e51b815260040161125c906147b0565b848314801561288057508281145b61289c5760405162461bcd60e51b815260040161125c9061480d565b6103e88511156128be5760405162461bcd60e51b815260040161125c906147e5565b60005b858110156129d5578484828181106128e957634e487b7160e01b600052603260045260246000fd5b905060200201356030600089898581811061291457634e487b7160e01b600052603260045260246000fd5b9050602002016020810190612929919061426e565b6001600160a01b0316815260208101919091526040016000206002015582828281811061296657634e487b7160e01b600052603260045260246000fd5b905060200201356030600089898581811061299157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906129a6919061426e565b6001600160a01b03168152602081019190915260400160002060030155806129cd81614a20565b9150506128c1565b50505050505050565b6000546001600160a01b03163314612a085760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b038116612a6d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161125c565b600080546040516001600160a01b0380851693921691600080516020614ad383398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314612ae05760405162461bcd60e51b815260040161125c906147b0565b602c55565b6000546001600160a01b03163314612b0f5760405162461bcd60e51b815260040161125c906147b0565b601d92909255601e55601f55565b6000546001600160a01b03163314612b475760405162461bcd60e51b815260040161125c906147b0565b6003805460ff19166001179055565b6001600160a01b038316612bb85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161125c565b6001600160a01b038216612c195760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161125c565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6003548390839060ff1680612ca757506001600160a01b03821660009081526004602052604090205460ff165b80612cca57506001600160a01b03811660009081526004602052604090205460ff165b612d015760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b604482015260640161125c565b60008311612d485760405162461bcd60e51b815260206004820152601460248201527343616e2774207472616465203020746f6b656e7360601b604482015260640161125c565b6001600160a01b038516612dac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161125c565b6001600160a01b038416612e0e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161125c565b60008311612e705760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161125c565b6001600160a01b038516600090815260066020526040902054831115612ed85760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161125c565b6001600160a01b03851660009081526008602052604090205460ff1680612f1757506001600160a01b03841660009081526008602052604090205460ff165b15612f645760405162461bcd60e51b815260206004820152601c60248201527f426c61636b6c6973746564206164647265737320696e766f6c76656400000000604482015260640161125c565b60205460ff1680612f845750612f82856001600160a01b03166134ea565b155b80612fa757506001600160a01b03851660009081526009602052604090205460ff165b612fea5760405162461bcd60e51b8152602060048201526014602482015273139bc818dbdb9d1c9858dd1cc8185b1b1bddd95960621b604482015260640161125c565b612ff2613526565b600061301760285461301160295460275461348490919063ffffffff16565b90613484565b602f5490915060ff16801561302c5750600081115b156130a757600061303c826135f9565b602d549091508110801590819061305d5750602654600160a01b900460ff16155b801561308257506001600160a01b0388166000908152600b602052604090205460ff16155b80156130975750602654600160a81b900460ff165b156130a4576130a46137b0565b50505b6130af6139b1565b6001600160a01b0386166000908152600760205260408120548190819060ff16806130f257506001600160a01b03881660009081526007602052604090205460ff165b806131065750602654600160a01b900460ff165b6133f0576001600160a01b0388166000908152600b602052604090205460ff16156131ff57602b54871115806131465750602654600160b01b900460ff16155b61319d5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e74206578636565647320746865206d61782073656c6c20616d6f756044820152611b9d60f21b606482015260840161125c565b6131be6021546131b8601b548a613a7b90919063ffffffff16565b90613afa565b92506131db6021546131b8601a548a613a7b90919063ffffffff16565b91506131f86021546131b86019548a613a7b90919063ffffffff16565b90506133f0565b6001600160a01b0389166000908152600b602052604090205460ff161561331457600c5442141561324e576001600160a01b0388166000908152600860205260409020805460ff191660011790555b602c54871115806132695750602654600160b81b900460ff16155b6132bf5760405162461bcd60e51b815260206004820152602160248201527f416d6f756e74206578636565647320746865206d61782062757920616d6f756e6044820152601d60fa1b606482015260840161125c565b6132da6021546131b86012548a613a7b90919063ffffffff16565b92506132f76021546131b86011548a613a7b90919063ffffffff16565b91506131f86021546131b86010548a613a7b90919063ffffffff16565b6001600160a01b03891660009081526030602052604090206004015460ff161580156133415750600c5442115b61338d5760405162461bcd60e51b815260206004820152601f60248201527f4e6f207472616e736665727320666f7220707269766174652073616c65727300604482015260640161125c565b601c5460ff16156133f0576133b36021546131b8601f548a613a7b90919063ffffffff16565b92506133d06021546131b8601e548a613a7b90919063ffffffff16565b91506133ed6021546131b8601d548a613a7b90919063ffffffff16565b90505b6027546133fd9084613484565b60275560285461340d9082613484565b60285560295461341d9083613484565b6029556000613430826130118686613484565b905061343e8a8a8a84613b3c565b50505050505050505050565b6000818484111561346e5760405162461bcd60e51b815260040161125c919061475d565b50600061347b84866149b7565b95945050505050565b6000806134918385614960565b9050838110156134e35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161125c565b9392505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061351e57508115155b949350505050565b600080602660009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561357757600080fd5b505afa15801561358b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135af9190614615565b506001600160701b031691506001600160701b031691506000821180156135d65750600081115b6135e15760006135e4565b60015b602f805460ff19169115159190911790555050565b60408051600280825260608201835260009283929190602083019080368337019050509050308160008151811061364057634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561369457600080fd5b505afa1580156136a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136cc919061428a565b816001815181106136ed57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260255460405163d06ca61f60e01b815291169063d06ca61f9061372c90869085906004016148b6565b60006040518083038186803b15801561374457600080fd5b505afa158015613758573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137809190810190614556565b6001815181106137a057634e487b7160e01b600052603260045260246000fd5b6020026020010151915050919050565b6026805460ff60a01b1916600160a01b17905530600090815260066020526040812054905060006137f460285461301160275460295461348490919063ffffffff16565b905080156139a0576000613817826131b860295486613a7b90919063ffffffff16565b90506000613834836131b860275487613a7b90919063ffffffff16565b90506000613851846131b860285488613a7b90919063ffffffff16565b90506000613860846002613afa565b9050600061386e82866149b7565b9050600061387c8884613d68565b90504761388882613daa565b60006138944783613d68565b905060006138a6846131b88488613a7b565b6022549091506001600160a01b03166108fc6138c6866131b8868d613a7b565b6040518115909202916000818181858888f193505050501580156138ee573d6000803e3d6000fd5b506023546001600160a01b03166108fc61390c866131b8868c613a7b565b6040518115909202916000818181858888f19350505050158015613934573d6000803e3d6000fd5b508015613987576139458682613f2f565b60408051878152602081018390529081018790527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b5050600060298190556027819055602855505050505050505b50506026805460ff60a01b19169055565b60165460ff1680156139c45750600c5415155b15611280576000601854426139d991906149b7565b90506000601754826139eb9190614978565b905060005b81811015613a4c57600460115411613a0757613a4c565b600260116000828254613a1a91906149b7565b92505081905550600260126000828254613a3491906149b7565b90915550819050613a4481614a20565b9150506139f0565b5042601855601154600410611455576016805460ff191690556013546011556015546012556014546010555050565b600082613a8a575060006113a9565b6000613a968385614998565b905082613aa38583614978565b146134e35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161125c565b60006134e383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061400c565b6000613b488383613d68565b6001600160a01b038616600090815260066020526040902054909150613b6e9084613d68565b6001600160a01b038616600090815260066020526040808220929092553081522054613b9a9083613484565b30600090815260066020526040808220929092556001600160a01b03861681522054613bc69082613484565b6001600160a01b0385166000908152600660205260409020819055602e54101580613c0957506001600160a01b0384166000908152600a602052604090205460ff165b80613c1e5750602654600160c01b900460ff16155b613c7e5760405162461bcd60e51b815260206004820152602b60248201527f45786365656473206d617820746f6b656e73206c696d6974206f6e206120736960448201526a1b99db19481dd85b1b195d60aa1b606482015260840161125c565b602f5460ff168015613c9a5750602654600160a01b900460ff16155b8015613cbf57506001600160a01b0385166000908152600b602052604090205460ff16155b15613cce57613cce858261403a565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d1391815260200190565b60405180910390a381156118a65760405182815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b60006134e383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061344a565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613ded57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613e4157600080fd5b505afa158015613e55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e79919061428a565b81600181518110613e9a57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602554613ec09130911684612b56565b60255460405163791ac94760e01b81526001600160a01b039091169063791ac94790613ef99085906000908690309042906004016148cf565b600060405180830381600087803b158015613f1357600080fd5b505af1158015613f27573d6000803e3d6000fd5b505050505050565b602554613f479030906001600160a01b031684612b56565b6025546001600160a01b031663f305d719823085600080613f706000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015613fd357600080fd5b505af1158015613fe7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118a691906146be565b6000818361402d5760405162461bcd60e51b815260040161125c919061475d565b50600061347b8486614978565b6001600160a01b038216600090815260306020526040902060040154610100900460ff1680614093575060355460ff1615801561409357506001600160a01b03821660009081526030602052604090206004015460ff16155b806140cc5750603554610100900460ff161580156140cc57506001600160a01b03821660009081526030602052604090206004015460ff165b156140d5575050565b60006140e0826135f9565b6001600160a01b0384166000908152603060209081526040822060018082018054808301825590855283852042910155815490810182559083529082200182905590915061412d84612171565b6001600160a01b0385166000908152603060205260408120600401549192509060ff1661415c57603354614160565b6031545b6001600160a01b03861660009081526030602052604081206003015491925090156141a6576001600160a01b0386166000908152603060205260409020600301546141a8565b815b905080831115613f275760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74206f76657220746865206c696d697420666f722074696d652070604482015264195c9a5bd960da1b606482015260840161125c565b60008083601f840112614219578182fd5b50813567ffffffffffffffff811115614230578182fd5b6020830191508360208260051b850101111561424b57600080fd5b9250929050565b80516001600160701b038116811461426957600080fd5b919050565b60006020828403121561427f578081fd5b81356134e381614a87565b60006020828403121561429b578081fd5b81516134e381614a87565b600080604083850312156142b8578081fd5b82356142c381614a87565b915060208301356142d381614a87565b809150509250929050565b6000806000606084860312156142f2578081fd5b83356142fd81614a87565b9250602084013561430d81614a87565b929592945050506040919091013590565b60008060408385031215614330578182fd5b823561433b81614a87565b915060208301356142d381614a9c565b6000806040838503121561435d578182fd5b823561436881614a87565b946020939093013593505050565b60008060208385031215614388578182fd5b823567ffffffffffffffff81111561439e578283fd5b6143aa85828601614208565b90969095509350505050565b600080600080604085870312156143cb578081fd5b843567ffffffffffffffff808211156143e2578283fd5b6143ee88838901614208565b90965094506020870135915080821115614406578283fd5b5061441387828801614208565b95989497509550505050565b60008060008060008060608789031215614437578182fd5b863567ffffffffffffffff8082111561444e578384fd5b61445a8a838b01614208565b90985096506020890135915080821115614472578384fd5b61447e8a838b01614208565b90965094506040890135915080821115614496578384fd5b506144a389828a01614208565b979a9699509497509295939492505050565b600060208083850312156144c7578182fd5b823567ffffffffffffffff8111156144dd578283fd5b8301601f810185136144ed578283fd5b80356145006144fb8261493c565b61490b565b80828252848201915084840188868560051b870101111561451f578687fd5b8694505b8385101561454a57803561453681614a87565b835260019490940193918501918501614523565b50979650505050505050565b60006020808385031215614568578182fd5b825167ffffffffffffffff81111561457e578283fd5b8301601f8101851361458e578283fd5b805161459c6144fb8261493c565b80828252848201915084840188868560051b87010111156145bb578687fd5b8694505b8385101561454a5780518352600194909401939185019185016145bf565b6000602082840312156145ee578081fd5b81356134e381614a9c565b60006020828403121561460a578081fd5b81516134e381614a9c565b600080600060608486031215614629578081fd5b61463284614252565b925061464060208501614252565b9150604084015163ffffffff81168114614658578182fd5b809150509250925092565b600060208284031215614674578081fd5b5035919050565b60006020828403121561468c578081fd5b5051919050565b6000806000606084860312156146a7578081fd5b505081359360208301359350604090920135919050565b6000806000606084860312156146d2578081fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156147235781516001600160a01b0316875295820195908201906001016146fe565b509495945050505050565b6000815180845260208085019450808401835b8381101561472357815187529582019590820190600101614741565b6000602080835283518082850152825b818110156147895785810183015185820160400152820161476d565b8181111561479a5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600e908201526d417272617920746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f4172726179206c656e6774687320646f6e2774206d6174636800000000000000604082015260600190565b602081526000825160c0602084015261486060e084018261472e565b90506020840151601f1984830301604085015261487d828261472e565b91505060408401516060840152606084015160808401526080840151151560a084015260a0840151151560c08401528091505092915050565b82815260406020820152600061351e60408301846146eb565b85815284602082015260a0604082015260006148ee60a08301866146eb565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171561493457614934614a71565b604052919050565b600067ffffffffffffffff82111561495657614956614a71565b5060051b60200190565b6000821982111561497357614973614a5b565b500190565b60008261499357634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156149b2576149b2614a5b565b500290565b6000828210156149c9576149c9614a5b565b500390565b6000816149dd576149dd614a5b565b506000190190565b600181811c908216806149f957607f821691505b60208210811415614a1a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415614a3457614a34614a5b565b5060010190565b600060ff821660ff811415614a5257614a52614a5b565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461174d57600080fd5b801515811461174d57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209321fb5344bed375e9a4b3a8eacb35c66f25057ebf7eb92d067a01f74d14832c64736f6c63430008040033
Deployed Bytecode
0x6080604052600436106105c95760003560e01c80636fb9fbfe116102f35780639f6462141161019b578063d1d3a05f116100e7578063f064321f116100a0578063f6887cd31161007a578063f6887cd31461118b578063fa06dba3146111c4578063fb201b1d146111e4578063fe575a87146111f957600080fd5b8063f064321f1461112b578063f2fde38b1461114b578063f34eb0b81461116b57600080fd5b8063d1d3a05f1461104f578063d7c6e3601461106f578063dd4670641461108f578063dd62ed3e146110af578063e99c9d09146110f5578063ea08d30b1461111557600080fd5b8063ae02cd5c11610154578063bf7856b71161012e578063bf7856b714610fd8578063c49b9a8014610ff9578063c5f34b9c14611019578063ca4507881461103957600080fd5b8063ae02cd5c14610f78578063af9549e014610f98578063b498412314610fb857600080fd5b80639f64621414610ed7578063a457c2d714610eed578063a69df4b514610f0d578063a6a376c814610f22578063a9059cbb14610f42578063aa45026b14610f6257600080fd5b806388e765ff1161025a5780638ea5220f1161021357806396f9e9be116101ed57806396f9e9be14610e6657806398e2a5e214610e8057806399fa296f14610ea05780639d5710d114610ec157600080fd5b80638ea5220f14610e1b57806390987e0914610e3b57806395d89b4114610e5157600080fd5b806388e765ff14610d5957806389616a0f14610d6f5780638b16549a14610d8f5780638baeefce14610daf5780638c672a2614610dc45780638da5cb5b14610dfd57600080fd5b80637638e151116102ac5780637638e15114610ca857806378cd53bc14610cc85780637b94943b14610cde5780637ba6b4ee14610cff57806385141a7714610d19578063867a1dc214610d3957600080fd5b80636fb9fbfe14610bde57806370a0823114610bfe57806370bfcf2114610c34578063715018a614610c53578063728d41c914610c6857806375f0a87414610c8857600080fd5b806340615b8b11610471578063566dc0b2116103bd57806363e8f3701161037657806367a36dc71161035057806367a36dc714610b8657806369550efd14610b9c5780636bc87c3a14610bb25780636cbdd5e314610bc857600080fd5b806363e8f37014610b3a57806366a88d9614610b5a57806366d602ae14610b7057600080fd5b8063566dc0b214610a825780635ca52d6714610a985780635d38ab8514610ab8578063602bc62b14610ad85780636199d05e14610aed57806361a13b4a14610b0d57600080fd5b806349bd5a5e1161042a57806350286f641161040457806350286f64146109da57806353048640146109fa5780635342acb414610a10578063545fb32814610a4957600080fd5b806349bd5a5e146109795780634a74bb02146109995780634d87c644146109ba57600080fd5b806340615b8b146108dd578063424ba848146108f357806343614d2814610913578063437d98401461092957806347535d7b1461093f57806348914c991461095957600080fd5b80631f53ac021161053057806323b63585116104e95780632b9b4f78116104c35780632b9b4f7814610866578063313ce5671461088657806339509351146108a85780633ccfd60b146108c857600080fd5b806323b635851461080657806323b872dd146108265780632610eaca1461084657600080fd5b80631f53ac021461076057806321ba508114610780578063224611731461079657806322976e0d146107b657806322c98d34146107cc578063232898b4146107e657600080fd5b80630b6bb6f5116105825780630b6bb6f5146106a7578063147745e5146106c75780631609be1d146106dd5780631694505e146106fd578063170dde6a1461073557806318160ddd1461074b57600080fd5b806301339c21146105d557806303590035146105ec57806303d29d28146106155780630609511e1461063557806306fdde0314610655578063095ea7b31461067757600080fd5b366105d057005b600080fd5b3480156105e157600080fd5b506105ea611232565b005b3480156105f857600080fd5b5061060260285481565b6040519081526020015b60405180910390f35b34801561062157600080fd5b506105ea61063036600461431e565b611282565b34801561064157600080fd5b506105ea610650366004614663565b6112d7565b34801561066157600080fd5b5061066a611306565b60405161060c919061475d565b34801561068357600080fd5b5061069761069236600461434b565b611398565b604051901515815260200161060c565b3480156106b357600080fd5b506105ea6106c23660046144b5565b6113af565b3480156106d357600080fd5b5061060260215481565b3480156106e957600080fd5b506105ea6106f83660046142a6565b611459565b34801561070957600080fd5b5060255461071d906001600160a01b031681565b6040516001600160a01b03909116815260200161060c565b34801561074157600080fd5b50610602601a5481565b34801561075757600080fd5b50602a54610602565b34801561076c57600080fd5b506105ea61077b36600461426e565b611589565b34801561078c57600080fd5b5061060260325481565b3480156107a257600080fd5b506105ea6107b136600461426e565b6115d5565b3480156107c257600080fd5b5061060260125481565b3480156107d857600080fd5b506035546106979060ff1681565b3480156107f257600080fd5b506105ea610801366004614376565b611621565b34801561081257600080fd5b506105ea610821366004614663565b6116fc565b34801561083257600080fd5b506106976108413660046142de565b611750565b34801561085257600080fd5b506105ea6108613660046143b6565b6117b9565b34801561087257600080fd5b506105ea6108813660046145dd565b6118ad565b34801561089257600080fd5b50600f5460405160ff909116815260200161060c565b3480156108b457600080fd5b506106976108c336600461434b565b6118ea565b3480156108d457600080fd5b506105ea611920565b3480156108e957600080fd5b50610602601b5481565b3480156108ff57600080fd5b506105ea61090e36600461431e565b611976565b34801561091f57600080fd5b5061060260195481565b34801561093557600080fd5b5061060260345481565b34801561094b57600080fd5b506003546106979060ff1681565b34801561096557600080fd5b506105ea610974366004614693565b6119cb565b34801561098557600080fd5b5060265461071d906001600160a01b031681565b3480156109a557600080fd5b5060265461069790600160a81b900460ff1681565b3480156109c657600080fd5b506105ea6109d5366004614693565b611a03565b3480156109e657600080fd5b506105ea6109f536600461431e565b611a3b565b348015610a0657600080fd5b50610602601d5481565b348015610a1c57600080fd5b50610697610a2b36600461426e565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610a5557600080fd5b50610697610a6436600461426e565b6001600160a01b03166000908152600a602052604090205460ff1690565b348015610a8e57600080fd5b5061060260295481565b348015610aa457600080fd5b506105ea610ab33660046145dd565b611a90565b348015610ac457600080fd5b506105ea610ad33660046145dd565b611ad4565b348015610ae457600080fd5b50600254610602565b348015610af957600080fd5b506105ea610b08366004614663565b611b11565b348015610b1957600080fd5b50610b2d610b2836600461426e565b611b40565b60405161060c9190614844565b348015610b4657600080fd5b506105ea610b55366004614376565b611c82565b348015610b6657600080fd5b50610602602e5481565b348015610b7c57600080fd5b50610602602b5481565b348015610b9257600080fd5b5061060260275481565b348015610ba857600080fd5b5061060260145481565b348015610bbe57600080fd5b5061060260115481565b348015610bd457600080fd5b50610602601f5481565b348015610bea57600080fd5b506105ea610bf93660046145dd565b611d51565b348015610c0a57600080fd5b50610602610c1936600461426e565b6001600160a01b031660009081526006602052604090205490565b348015610c4057600080fd5b5060355461069790610100900460ff1681565b348015610c5f57600080fd5b506105ea611d99565b348015610c7457600080fd5b506105ea610c83366004614663565b611dfb565b348015610c9457600080fd5b5060225461071d906001600160a01b031681565b348015610cb457600080fd5b506105ea610cc336600461431e565b611e2a565b348015610cd457600080fd5b50610602602d5481565b348015610cea57600080fd5b5060265461069790600160c01b900460ff1681565b348015610d0b57600080fd5b506020546106979060ff1681565b348015610d2557600080fd5b5060245461071d906001600160a01b031681565b348015610d4557600080fd5b506105ea610d54366004614376565b611e7f565b348015610d6557600080fd5b50610602602c5481565b348015610d7b57600080fd5b506105ea610d8a3660046143b6565b611f55565b348015610d9b57600080fd5b50610602610daa36600461426e565b612171565b348015610dbb57600080fd5b506105ea6122ed565b348015610dd057600080fd5b50610697610ddf36600461426e565b6001600160a01b03166000908152600b602052604090205460ff1690565b348015610e0957600080fd5b506000546001600160a01b031661071d565b348015610e2757600080fd5b5060235461071d906001600160a01b031681565b348015610e4757600080fd5b5061060260135481565b348015610e5d57600080fd5b5061066a612323565b348015610e7257600080fd5b50601c546106979060ff1681565b348015610e8c57600080fd5b506105ea610e9b366004614663565b612332565b348015610eac57600080fd5b5060265461069790600160b81b900460ff1681565b348015610ecd57600080fd5b5061060260335481565b348015610ee357600080fd5b5061060260155481565b348015610ef957600080fd5b50610697610f0836600461434b565b612361565b348015610f1957600080fd5b506105ea6123b0565b348015610f2e57600080fd5b506105ea610f3d366004614663565b6124b6565b348015610f4e57600080fd5b50610697610f5d36600461434b565b6124e5565b348015610f6e57600080fd5b5061060260105481565b348015610f8457600080fd5b506105ea610f93366004614376565b6124f2565b348015610fa457600080fd5b506105ea610fb336600461431e565b6125c1565b348015610fc457600080fd5b506105ea610fd3366004614663565b612616565b348015610fe457600080fd5b5060265461069790600160b01b900460ff1681565b34801561100557600080fd5b506105ea6110143660046145dd565b612645565b34801561102557600080fd5b506105ea6110343660046145dd565b6126c7565b34801561104557600080fd5b5061060260315481565b34801561105b57600080fd5b506105ea61106a3660046145dd565b61270f565b34801561107b57600080fd5b506105ea61108a3660046145dd565b61274c565b34801561109b57600080fd5b506105ea6110aa366004614663565b612794565b3480156110bb57600080fd5b506106026110ca3660046142a6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561110157600080fd5b506105ea611110366004614663565b612819565b34801561112157600080fd5b50610602601e5481565b34801561113757600080fd5b506105ea61114636600461441f565b612848565b34801561115757600080fd5b506105ea61116636600461426e565b6129de565b34801561117757600080fd5b506105ea611186366004614663565b612ab6565b34801561119757600080fd5b506106976111a636600461426e565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156111d057600080fd5b506105ea6111df366004614693565b612ae5565b3480156111f057600080fd5b506105ea612b1d565b34801561120557600080fd5b5061069761121436600461426e565b6001600160a01b031660009081526008602052604090205460ff1690565b6000546001600160a01b031633146112655760405162461bcd60e51b815260040161125c906147b0565b60405180910390fd5b42600c81905560185560316011556032601255611280612b1d565b565b6000546001600160a01b031633146112ac5760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113015760405162461bcd60e51b815260040161125c906147b0565b603255565b6060600d8054611315906149e5565b80601f0160208091040260200160405190810160405280929190818152602001828054611341906149e5565b801561138e5780601f106113635761010080835404028352916020019161138e565b820191906000526020600020905b81548152906001019060200180831161137157829003601f168201915b5050505050905090565b60006113a5338484612b56565b5060015b92915050565b6000546001600160a01b031633146113d95760405162461bcd60e51b815260040161125c906147b0565b60005b81518160ff16101561145557600160046000848460ff168151811061141157634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061144d81614a3b565b9150506113dc565b5050565b6000546001600160a01b031633146114835760405162461bcd60e51b815260040161125c906147b0565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b1580156114c557600080fd5b505afa1580156114d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fd919061467b565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b15801561154b57600080fd5b505af115801561155f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158391906145f9565b50505050565b6000546001600160a01b031633146115b35760405162461bcd60e51b815260040161125c906147b0565b602380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115ff5760405162461bcd60e51b815260040161125c906147b0565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461164b5760405162461bcd60e51b815260040161125c906147b0565b6103e881111561166d5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f75760016030600085858581811061169e57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906116b3919061426e565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff0019909216919091179055806116ef81614a20565b915050611670565b505050565b6000546001600160a01b031633146117265760405162461bcd60e51b815260040161125c906147b0565b61174d61173b6000546001600160a01b031690565b6024546001600160a01b031683612c7a565b50565b600061175d848484612c7a565b6117af84336117aa85604051806060016040528060288152602001614aab602891396001600160a01b038a166000908152600560209081526040808320338452909152902054919061344a565b612b56565b5060019392505050565b6000546001600160a01b031633146117e35760405162461bcd60e51b815260040161125c906147b0565b8281146118025760405162461bcd60e51b815260040161125c9061480d565b6103e88311156118245760405162461bcd60e51b815260040161125c906147e5565b60005b838110156118a6576118943386868481811061185357634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611868919061426e565b85858581811061188857634e487b7160e01b600052603260045260246000fd5b90506020020135612c7a565b8061189e81614a20565b915050611827565b5050505050565b6000546001600160a01b031633146118d75760405162461bcd60e51b815260040161125c906147b0565b6035805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916113a59185906117aa9086613484565b6000546001600160a01b0316331461194a5760405162461bcd60e51b815260040161125c906147b0565b60405133904780156108fc02916000818181858888f1935050505015801561174d573d6000803e3d6000fd5b6000546001600160a01b031633146119a05760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119f55760405162461bcd60e51b815260040161125c906147b0565b601092909255601155601255565b6000546001600160a01b03163314611a2d5760405162461bcd60e51b815260040161125c906147b0565b601992909255601a55601b55565b6000546001600160a01b03163314611a655760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611aba5760405162461bcd60e51b815260040161125c906147b0565b603580549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314611afe5760405162461bcd60e51b815260040161125c906147b0565b601c805460ff1916911515919091179055565b6000546001600160a01b03163314611b3b5760405162461bcd60e51b815260040161125c906147b0565b603355565b611b7d6040518060c00160405280606081526020016060815260200160008152602001600081526020016000151581526020016000151581525090565b6001600160a01b0382166000908152603060209081526040918290208251815460e09381028201840190945260c081018481529093919284928491840182828015611be757602002820191906000526020600020905b815481526020019060010190808311611bd3575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611c3f57602002820191906000526020600020905b815481526020019060010190808311611c2b575b5050509183525050600282015460208201526003820154604082015260049091015460ff8082161515606084015261010090910416151560809091015292915050565b6000546001600160a01b03163314611cac5760405162461bcd60e51b815260040161125c906147b0565b6103e8811115611cce5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f757600160306000858585818110611cff57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611d14919061426e565b6001600160a01b031681526020810191909152604001600020600401805460ff191691151591909117905580611d4981614a20565b915050611cd1565b6000546001600160a01b03163314611d7b5760405162461bcd60e51b815260040161125c906147b0565b60268054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b03163314611dc35760405162461bcd60e51b815260040161125c906147b0565b600080546040516001600160a01b0390911690600080516020614ad3833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611e255760405162461bcd60e51b815260040161125c906147b0565b602e55565b6000546001600160a01b03163314611e545760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611ea95760405162461bcd60e51b815260040161125c906147b0565b6103e8811115611ecb5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f757600060306000858585818110611efc57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611f11919061426e565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff001990921691909117905580611f4d81614a20565b915050611ece565b6000546001600160a01b03163314611f7f5760405162461bcd60e51b815260040161125c906147b0565b828114611f9e5760405162461bcd60e51b815260040161125c9061480d565b6103e8831115611fc05760405162461bcd60e51b815260040161125c906147e5565b60005b838110156118a657828282818110611feb57634e487b7160e01b600052603260045260246000fd5b9050602002013560066000336001600160a01b03166001600160a01b03168152602001908152602001600020600082825461202691906149b7565b90915550839050828281811061204c57634e487b7160e01b600052603260045260246000fd5b905060200201356006600087878581811061207757634e487b7160e01b600052603260045260246000fd5b905060200201602081019061208c919061426e565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546120bb9190614960565b9091555085905084828181106120e157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906120f6919061426e565b6001600160a01b0316337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85858581811061214157634e487b7160e01b600052603260045260246000fd5b9050602002013560405161215791815260200190565b60405180910390a38061216981614a20565b915050611fc3565b6001600160a01b038116600090815260306020526040812054806121955750919050565b6001600160a01b03831660009081526030602052604081206004015460ff166121c0576034546121c4565b6032545b6001600160a01b038516600090815260306020526040812060020154919250901561220a576001600160a01b03851660009081526030602052604090206002015461220c565b815b90505b82612219576122e5565b82612223816149ce565b6001600160a01b03871660009081526030602052604081206001018054929650909250908590811061226557634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080824261227f91906149b7565b116122d9576001600160a01b03861660009081526030602052604090208054859081106122bc57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154856122d29190614960565b94506122df565b506122e5565b5061220f565b505050919050565b6000546001600160a01b031633146123175760405162461bcd60e51b815260040161125c906147b0565b6003805460ff19169055565b6060600e8054611315906149e5565b6000546001600160a01b0316331461235c5760405162461bcd60e51b815260040161125c906147b0565b603155565b60006113a533846117aa85604051806060016040528060258152602001614af3602591393360009081526005602090815260408083206001600160a01b038d168452909152902054919061344a565b6001546001600160a01b031633146124165760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b606482015260840161125c565b60025442106124675760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015260640161125c565b600154600080546040516001600160a01b039384169390911691600080516020614ad383398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000546001600160a01b031633146124e05760405162461bcd60e51b815260040161125c906147b0565b602d55565b60006113a5338484612c7a565b6000546001600160a01b0316331461251c5760405162461bcd60e51b815260040161125c906147b0565b6103e881111561253e5760405162461bcd60e51b815260040161125c906147e5565b60005b818110156116f75760006030600085858581811061256f57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190612584919061426e565b6001600160a01b031681526020810191909152604001600020600401805460ff1916911515919091179055806125b981614a20565b915050612541565b6000546001600160a01b031633146125eb5760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146126405760405162461bcd60e51b815260040161125c906147b0565b603455565b6000546001600160a01b0316331461266f5760405162461bcd60e51b815260040161125c906147b0565b60268054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906126bc90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146126f15760405162461bcd60e51b815260040161125c906147b0565b60268054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146127395760405162461bcd60e51b815260040161125c906147b0565b6020805460ff1916911515919091179055565b6000546001600160a01b031633146127765760405162461bcd60e51b815260040161125c906147b0565b60268054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b031633146127be5760405162461bcd60e51b815260040161125c906147b0565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556127ed8142614960565b600255600080546040516001600160a01b0390911690600080516020614ad3833981519152908390a350565b6000546001600160a01b031633146128435760405162461bcd60e51b815260040161125c906147b0565b602b55565b6000546001600160a01b031633146128725760405162461bcd60e51b815260040161125c906147b0565b848314801561288057508281145b61289c5760405162461bcd60e51b815260040161125c9061480d565b6103e88511156128be5760405162461bcd60e51b815260040161125c906147e5565b60005b858110156129d5578484828181106128e957634e487b7160e01b600052603260045260246000fd5b905060200201356030600089898581811061291457634e487b7160e01b600052603260045260246000fd5b9050602002016020810190612929919061426e565b6001600160a01b0316815260208101919091526040016000206002015582828281811061296657634e487b7160e01b600052603260045260246000fd5b905060200201356030600089898581811061299157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906129a6919061426e565b6001600160a01b03168152602081019190915260400160002060030155806129cd81614a20565b9150506128c1565b50505050505050565b6000546001600160a01b03163314612a085760405162461bcd60e51b815260040161125c906147b0565b6001600160a01b038116612a6d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161125c565b600080546040516001600160a01b0380851693921691600080516020614ad383398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314612ae05760405162461bcd60e51b815260040161125c906147b0565b602c55565b6000546001600160a01b03163314612b0f5760405162461bcd60e51b815260040161125c906147b0565b601d92909255601e55601f55565b6000546001600160a01b03163314612b475760405162461bcd60e51b815260040161125c906147b0565b6003805460ff19166001179055565b6001600160a01b038316612bb85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161125c565b6001600160a01b038216612c195760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161125c565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6003548390839060ff1680612ca757506001600160a01b03821660009081526004602052604090205460ff165b80612cca57506001600160a01b03811660009081526004602052604090205460ff165b612d015760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b604482015260640161125c565b60008311612d485760405162461bcd60e51b815260206004820152601460248201527343616e2774207472616465203020746f6b656e7360601b604482015260640161125c565b6001600160a01b038516612dac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161125c565b6001600160a01b038416612e0e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161125c565b60008311612e705760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161125c565b6001600160a01b038516600090815260066020526040902054831115612ed85760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161125c565b6001600160a01b03851660009081526008602052604090205460ff1680612f1757506001600160a01b03841660009081526008602052604090205460ff165b15612f645760405162461bcd60e51b815260206004820152601c60248201527f426c61636b6c6973746564206164647265737320696e766f6c76656400000000604482015260640161125c565b60205460ff1680612f845750612f82856001600160a01b03166134ea565b155b80612fa757506001600160a01b03851660009081526009602052604090205460ff165b612fea5760405162461bcd60e51b8152602060048201526014602482015273139bc818dbdb9d1c9858dd1cc8185b1b1bddd95960621b604482015260640161125c565b612ff2613526565b600061301760285461301160295460275461348490919063ffffffff16565b90613484565b602f5490915060ff16801561302c5750600081115b156130a757600061303c826135f9565b602d549091508110801590819061305d5750602654600160a01b900460ff16155b801561308257506001600160a01b0388166000908152600b602052604090205460ff16155b80156130975750602654600160a81b900460ff165b156130a4576130a46137b0565b50505b6130af6139b1565b6001600160a01b0386166000908152600760205260408120548190819060ff16806130f257506001600160a01b03881660009081526007602052604090205460ff165b806131065750602654600160a01b900460ff165b6133f0576001600160a01b0388166000908152600b602052604090205460ff16156131ff57602b54871115806131465750602654600160b01b900460ff16155b61319d5760405162461bcd60e51b815260206004820152602260248201527f416d6f756e74206578636565647320746865206d61782073656c6c20616d6f756044820152611b9d60f21b606482015260840161125c565b6131be6021546131b8601b548a613a7b90919063ffffffff16565b90613afa565b92506131db6021546131b8601a548a613a7b90919063ffffffff16565b91506131f86021546131b86019548a613a7b90919063ffffffff16565b90506133f0565b6001600160a01b0389166000908152600b602052604090205460ff161561331457600c5442141561324e576001600160a01b0388166000908152600860205260409020805460ff191660011790555b602c54871115806132695750602654600160b81b900460ff16155b6132bf5760405162461bcd60e51b815260206004820152602160248201527f416d6f756e74206578636565647320746865206d61782062757920616d6f756e6044820152601d60fa1b606482015260840161125c565b6132da6021546131b86012548a613a7b90919063ffffffff16565b92506132f76021546131b86011548a613a7b90919063ffffffff16565b91506131f86021546131b86010548a613a7b90919063ffffffff16565b6001600160a01b03891660009081526030602052604090206004015460ff161580156133415750600c5442115b61338d5760405162461bcd60e51b815260206004820152601f60248201527f4e6f207472616e736665727320666f7220707269766174652073616c65727300604482015260640161125c565b601c5460ff16156133f0576133b36021546131b8601f548a613a7b90919063ffffffff16565b92506133d06021546131b8601e548a613a7b90919063ffffffff16565b91506133ed6021546131b8601d548a613a7b90919063ffffffff16565b90505b6027546133fd9084613484565b60275560285461340d9082613484565b60285560295461341d9083613484565b6029556000613430826130118686613484565b905061343e8a8a8a84613b3c565b50505050505050505050565b6000818484111561346e5760405162461bcd60e51b815260040161125c919061475d565b50600061347b84866149b7565b95945050505050565b6000806134918385614960565b9050838110156134e35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161125c565b9392505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061351e57508115155b949350505050565b600080602660009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561357757600080fd5b505afa15801561358b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135af9190614615565b506001600160701b031691506001600160701b031691506000821180156135d65750600081115b6135e15760006135e4565b60015b602f805460ff19169115159190911790555050565b60408051600280825260608201835260009283929190602083019080368337019050509050308160008151811061364057634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561369457600080fd5b505afa1580156136a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136cc919061428a565b816001815181106136ed57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260255460405163d06ca61f60e01b815291169063d06ca61f9061372c90869085906004016148b6565b60006040518083038186803b15801561374457600080fd5b505afa158015613758573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137809190810190614556565b6001815181106137a057634e487b7160e01b600052603260045260246000fd5b6020026020010151915050919050565b6026805460ff60a01b1916600160a01b17905530600090815260066020526040812054905060006137f460285461301160275460295461348490919063ffffffff16565b905080156139a0576000613817826131b860295486613a7b90919063ffffffff16565b90506000613834836131b860275487613a7b90919063ffffffff16565b90506000613851846131b860285488613a7b90919063ffffffff16565b90506000613860846002613afa565b9050600061386e82866149b7565b9050600061387c8884613d68565b90504761388882613daa565b60006138944783613d68565b905060006138a6846131b88488613a7b565b6022549091506001600160a01b03166108fc6138c6866131b8868d613a7b565b6040518115909202916000818181858888f193505050501580156138ee573d6000803e3d6000fd5b506023546001600160a01b03166108fc61390c866131b8868c613a7b565b6040518115909202916000818181858888f19350505050158015613934573d6000803e3d6000fd5b508015613987576139458682613f2f565b60408051878152602081018390529081018790527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b5050600060298190556027819055602855505050505050505b50506026805460ff60a01b19169055565b60165460ff1680156139c45750600c5415155b15611280576000601854426139d991906149b7565b90506000601754826139eb9190614978565b905060005b81811015613a4c57600460115411613a0757613a4c565b600260116000828254613a1a91906149b7565b92505081905550600260126000828254613a3491906149b7565b90915550819050613a4481614a20565b9150506139f0565b5042601855601154600410611455576016805460ff191690556013546011556015546012556014546010555050565b600082613a8a575060006113a9565b6000613a968385614998565b905082613aa38583614978565b146134e35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161125c565b60006134e383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061400c565b6000613b488383613d68565b6001600160a01b038616600090815260066020526040902054909150613b6e9084613d68565b6001600160a01b038616600090815260066020526040808220929092553081522054613b9a9083613484565b30600090815260066020526040808220929092556001600160a01b03861681522054613bc69082613484565b6001600160a01b0385166000908152600660205260409020819055602e54101580613c0957506001600160a01b0384166000908152600a602052604090205460ff165b80613c1e5750602654600160c01b900460ff16155b613c7e5760405162461bcd60e51b815260206004820152602b60248201527f45786365656473206d617820746f6b656e73206c696d6974206f6e206120736960448201526a1b99db19481dd85b1b195d60aa1b606482015260840161125c565b602f5460ff168015613c9a5750602654600160a01b900460ff16155b8015613cbf57506001600160a01b0385166000908152600b602052604090205460ff16155b15613cce57613cce858261403a565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d1391815260200190565b60405180910390a381156118a65760405182815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b60006134e383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061344a565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613ded57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613e4157600080fd5b505afa158015613e55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e79919061428a565b81600181518110613e9a57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152602554613ec09130911684612b56565b60255460405163791ac94760e01b81526001600160a01b039091169063791ac94790613ef99085906000908690309042906004016148cf565b600060405180830381600087803b158015613f1357600080fd5b505af1158015613f27573d6000803e3d6000fd5b505050505050565b602554613f479030906001600160a01b031684612b56565b6025546001600160a01b031663f305d719823085600080613f706000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015613fd357600080fd5b505af1158015613fe7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118a691906146be565b6000818361402d5760405162461bcd60e51b815260040161125c919061475d565b50600061347b8486614978565b6001600160a01b038216600090815260306020526040902060040154610100900460ff1680614093575060355460ff1615801561409357506001600160a01b03821660009081526030602052604090206004015460ff16155b806140cc5750603554610100900460ff161580156140cc57506001600160a01b03821660009081526030602052604090206004015460ff165b156140d5575050565b60006140e0826135f9565b6001600160a01b0384166000908152603060209081526040822060018082018054808301825590855283852042910155815490810182559083529082200182905590915061412d84612171565b6001600160a01b0385166000908152603060205260408120600401549192509060ff1661415c57603354614160565b6031545b6001600160a01b03861660009081526030602052604081206003015491925090156141a6576001600160a01b0386166000908152603060205260409020600301546141a8565b815b905080831115613f275760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74206f76657220746865206c696d697420666f722074696d652070604482015264195c9a5bd960da1b606482015260840161125c565b60008083601f840112614219578182fd5b50813567ffffffffffffffff811115614230578182fd5b6020830191508360208260051b850101111561424b57600080fd5b9250929050565b80516001600160701b038116811461426957600080fd5b919050565b60006020828403121561427f578081fd5b81356134e381614a87565b60006020828403121561429b578081fd5b81516134e381614a87565b600080604083850312156142b8578081fd5b82356142c381614a87565b915060208301356142d381614a87565b809150509250929050565b6000806000606084860312156142f2578081fd5b83356142fd81614a87565b9250602084013561430d81614a87565b929592945050506040919091013590565b60008060408385031215614330578182fd5b823561433b81614a87565b915060208301356142d381614a9c565b6000806040838503121561435d578182fd5b823561436881614a87565b946020939093013593505050565b60008060208385031215614388578182fd5b823567ffffffffffffffff81111561439e578283fd5b6143aa85828601614208565b90969095509350505050565b600080600080604085870312156143cb578081fd5b843567ffffffffffffffff808211156143e2578283fd5b6143ee88838901614208565b90965094506020870135915080821115614406578283fd5b5061441387828801614208565b95989497509550505050565b60008060008060008060608789031215614437578182fd5b863567ffffffffffffffff8082111561444e578384fd5b61445a8a838b01614208565b90985096506020890135915080821115614472578384fd5b61447e8a838b01614208565b90965094506040890135915080821115614496578384fd5b506144a389828a01614208565b979a9699509497509295939492505050565b600060208083850312156144c7578182fd5b823567ffffffffffffffff8111156144dd578283fd5b8301601f810185136144ed578283fd5b80356145006144fb8261493c565b61490b565b80828252848201915084840188868560051b870101111561451f578687fd5b8694505b8385101561454a57803561453681614a87565b835260019490940193918501918501614523565b50979650505050505050565b60006020808385031215614568578182fd5b825167ffffffffffffffff81111561457e578283fd5b8301601f8101851361458e578283fd5b805161459c6144fb8261493c565b80828252848201915084840188868560051b87010111156145bb578687fd5b8694505b8385101561454a5780518352600194909401939185019185016145bf565b6000602082840312156145ee578081fd5b81356134e381614a9c565b60006020828403121561460a578081fd5b81516134e381614a9c565b600080600060608486031215614629578081fd5b61463284614252565b925061464060208501614252565b9150604084015163ffffffff81168114614658578182fd5b809150509250925092565b600060208284031215614674578081fd5b5035919050565b60006020828403121561468c578081fd5b5051919050565b6000806000606084860312156146a7578081fd5b505081359360208301359350604090920135919050565b6000806000606084860312156146d2578081fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156147235781516001600160a01b0316875295820195908201906001016146fe565b509495945050505050565b6000815180845260208085019450808401835b8381101561472357815187529582019590820190600101614741565b6000602080835283518082850152825b818110156147895785810183015185820160400152820161476d565b8181111561479a5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600e908201526d417272617920746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f4172726179206c656e6774687320646f6e2774206d6174636800000000000000604082015260600190565b602081526000825160c0602084015261486060e084018261472e565b90506020840151601f1984830301604085015261487d828261472e565b91505060408401516060840152606084015160808401526080840151151560a084015260a0840151151560c08401528091505092915050565b82815260406020820152600061351e60408301846146eb565b85815284602082015260a0604082015260006148ee60a08301866146eb565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171561493457614934614a71565b604052919050565b600067ffffffffffffffff82111561495657614956614a71565b5060051b60200190565b6000821982111561497357614973614a5b565b500190565b60008261499357634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156149b2576149b2614a5b565b500290565b6000828210156149c9576149c9614a5b565b500390565b6000816149dd576149dd614a5b565b506000190190565b600181811c908216806149f957607f821691505b60208210811415614a1a57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415614a3457614a34614a5b565b5060010190565b600060ff821660ff811415614a5257614a52614a5b565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461174d57600080fd5b801515811461174d57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209321fb5344bed375e9a4b3a8eacb35c66f25057ebf7eb92d067a01f74d14832c64736f6c63430008040033
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.