ETH Price: $2,526.97 (+0.37%)

Token

Craptos (Craptos)
 

Overview

Max Total Supply

1,000,000,000 Craptos

Holders

66

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,866,456.927411717 Craptos

Value
$0.00
0xe6edc71d4a4eca28c582f40c24a9b93b15538e24
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Craptos

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : Craptos.sol
pragma solidity ^0.8.7;

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);
            }
        }
    }
}
abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

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);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        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;
    }
}

contract Craptos is IERC20, Ownable {
    using Address for address;
    
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Craptos";
    string constant _symbol = "Craptos";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 _maxBuyTxAmount = (_totalSupply * 1) / 500;
    uint256 _maxSellTxAmount = (_totalSupply * 1) / 500;
    uint256 _maxWalletSize = (_totalSupply * 2) / 100;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => uint256) public lastSell;
    mapping (address => uint256) public lastBuy;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) liquidityCreator;

    uint256 marketingFee = 400;
    uint256 liquidityFee = 200;
    uint256 totalFee = marketingFee + liquidityFee;
    uint256 sellBias = 0;
    uint256 feeDenominator = 10000;

    address payable public liquidityFeeReceiver = payable(0x655455fD9Ce65fBeA14C59f96EeE614c3d89413C);
    address payable public marketingFeeReceiver = payable(0x655455fD9Ce65fBeA14C59f96EeE614c3d89413C);

    IDEXRouter public router;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    mapping (address => bool) liquidityPools;
    mapping (address => uint256) public protected;
    bool protectionEnabled = true;
    bool protectionDisabled = false;
    uint256 protectionLimit;
    uint256 public protectionCount;
    uint256 protectionTimer;

    address public pair;

    uint256 public launchedAt;
    uint256 public launchedTime;
    uint256 public deadBlocks;
    bool startBullRun = false;
    bool pauseDisabled = false;
    uint256 public rateLimit = 2;

    bool public swapEnabled = false;
    bool processEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000;
    uint256 public swapMinimum = _totalSupply / 10000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    mapping (address => bool) teamMember;
    
    modifier onlyTeam() {
        require(teamMember[_msgSender()] || msg.sender == owner(), "Caller is not a team member");
        _;
    }
    
    event ProtectedWallet(address, address, uint256, uint8);

    constructor () {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        liquidityPools[pair] = true;
        _allowances[owner()][routerAddress] = type(uint256).max;
        _allowances[address(this)][routerAddress] = type(uint256).max;

        isFeeExempt[owner()] = true;
        liquidityCreator[owner()] = true;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[routerAddress] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[owner()] = _totalSupply;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function name() external pure returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function maxBuyTxTokens() external view returns (uint256) { return _maxBuyTxAmount / (10 ** _decimals); }
    function maxSellTxTokens() external view returns (uint256) { return _maxSellTxAmount / (10 ** _decimals); }
    function maxWalletTokens() external view returns (uint256) { return _maxWalletSize / (10 ** _decimals); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }
    
    function setTeamMember(address _team, bool _enabled) external onlyOwner {
        teamMember[_team] = _enabled;
    }
    
    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner {
        require(addresses.length > 0 && amounts.length == addresses.length);
        address from = msg.sender;

        for (uint i = 0; i < addresses.length; i++) {
            if(!liquidityPools[addresses[i]] && !liquidityCreator[addresses[i]]) {
                _basicTransfer(from, addresses[i], amounts[i] * (10 ** _decimals));
            }
        }
    }
    
    function clearStuckBalance(uint256 amountPercentage, address adr) external onlyTeam {
        uint256 amountETH = address(this).balance;
        payable(adr).transfer((amountETH * amountPercentage) / 100);
    }
    
    function openTrading(uint256 _deadBlocks, uint256 _protection, uint256 _limit) external onlyTeam {
        require(!startBullRun && _deadBlocks < 10);
        deadBlocks = _deadBlocks;
        startBullRun = true;
        launchedAt = block.number;
        protectionTimer = block.timestamp + _protection;
        protectionLimit = _limit * (10 ** _decimals);
    }
    
    function pauseTrading() external onlyTeam {
        require(!pauseDisabled);
        startBullRun = false;
    }
    
    function disablePause() external onlyTeam {
        pauseDisabled = true;
        startBullRun = true;
    }
    
    function setProtection(bool _protect, uint256 _addTime) external onlyTeam {
        require(!protectionDisabled);
        protectionEnabled = _protect;
        require(_addTime < 1 days);
        protectionTimer += _addTime;
    }
    
    function disableProtection() external onlyTeam {
        protectionDisabled = true;
        protectionEnabled = false;
    }
    
    function protectWallet(address[] calldata _wallets, bool _protect) external onlyTeam {
        if (_protect) {
            require(protectionEnabled);
        }
        
        for (uint i = 0; i < _wallets.length; i++) {
            
            if (_protect) {
                protectionCount++;
                emit ProtectedWallet(tx.origin, _wallets[i], block.number, 2);
            }
            else {
                if (protected[_wallets[i]] != 0)
                    protectionCount--;      
            }
            protected[_wallets[i]] = _protect ? block.number : 0;
        }
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "BEP20: transfer from 0x0");
        require(recipient != address(0), "BEP20: transfer to 0x0");
        require(amount > 0, "Amount must be > zero");
        require(_balances[sender] >= amount, "Insufficient balance");
        if(!launched() && liquidityPools[recipient]){ require(liquidityCreator[sender], "Liquidity not added yet."); launch(); }
        if(!startBullRun){ require(liquidityCreator[sender] || liquidityCreator[recipient], "Trading not open yet."); }

        checkTxLimit(sender, recipient, amount);
        
        if (!liquidityPools[recipient] && recipient != DEAD) {
            if (!isTxLimitExempt[recipient]) {
                checkWalletLimit(recipient, amount);
            }
        }
        
        if(protectionEnabled && protectionTimer > block.timestamp) {
            if(liquidityPools[sender] && tx.origin != recipient && protected[recipient] == 0) {
                protected[recipient] = block.number;
                protectionCount++;
                emit ProtectedWallet(tx.origin, recipient, block.number, 0);
            }
        }
        
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        _balances[sender] = _balances[sender] - amount;

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(recipient, amount) : amount;
        
        if(shouldSwapBack(recipient)){ if (amount > 0) swapBack(amount); }
        
        _balances[recipient] = _balances[recipient] + amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
        launchedTime = block.timestamp;
        swapEnabled = true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function checkWalletLimit(address recipient, uint256 amount) internal view {
        uint256 walletLimit = _maxWalletSize;
        require(_balances[recipient] + amount <= walletLimit, "Transfer amount exceeds the bag size.");
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal {
        require(isTxLimitExempt[sender] || amount <= (liquidityPools[sender] ? _maxBuyTxAmount : _maxSellTxAmount), "TX Limit Exceeded");
        require(isTxLimitExempt[sender] || lastBuy[recipient] + rateLimit <= block.number, "Transfer rate limit exceeded.");
        
        if (protected[sender] != 0){
            require(amount <= protectionLimit * (10 ** _decimals) && lastSell[sender] == 0 && protectionTimer > block.timestamp, "Wallet protected, please contact support.");
            lastSell[sender] = block.number;
        }
        
        if (liquidityPools[recipient]) {
            lastSell[sender] = block.number;
        } else if (shouldTakeFee(sender)) {
            if (protectionEnabled && protectionTimer > block.timestamp && lastBuy[tx.origin] == block.number && protected[recipient] == 0) {
                protected[recipient] = block.number;
                emit ProtectedWallet(tx.origin, recipient, block.number, 1);
            }
            lastBuy[recipient] = block.number;
            if (tx.origin != recipient)
                lastBuy[tx.origin] = block.number;
        }
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + deadBlocks >= block.number){ return feeDenominator - 1; }
        if (selling) return totalFee + sellBias;
        return totalFee - sellBias;
    }

    function takeFee(address recipient, uint256 amount) internal returns (uint256) {
        bool selling = liquidityPools[recipient];
        uint256 feeAmount = (amount * getTotalFee(selling)) / feeDenominator;
        
        _balances[address(this)] += feeAmount;
    
        return amount - feeAmount;
    }

    function shouldSwapBack(address recipient) internal view returns (bool) {
        return !liquidityPools[msg.sender]
        && !inSwap
        && swapEnabled
        && liquidityPools[recipient]
        && _balances[address(this)] >= swapMinimum;
    }

    function swapBack(uint256 amount) internal swapping {
        uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold;
        if (_balances[address(this)] < amountToSwap) amountToSwap = _balances[address(this)];
        
        uint256 amountToLiquify = (amountToSwap * liquidityFee / 2) / totalFee;
        amountToSwap -= amountToLiquify;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        
        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance - balanceBefore;
        uint256 totalBNBFee = totalFee - (liquidityFee / 2);

        uint256 amountBNBLiquidity = (amountBNB * liquidityFee / 2) / totalBNBFee;
        uint256 amountBNBMarketing = amountBNB - amountBNBLiquidity;
        
        if (amountBNBMarketing > 0)
            marketingFeeReceiver.transfer(amountBNBMarketing);
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityFeeReceiver,
                block.timestamp
            );
        }

        emit FundsDistributed(amountBNBMarketing, amountBNBLiquidity, amountToLiquify);
    }
    
    function addLiquidityPool(address lp, bool isPool) external onlyOwner {
        require(lp != pair, "Can't alter current liquidity pair");
        liquidityPools[lp] = isPool;
    }

    function setRateLimit(uint256 rate) external onlyOwner {
        require(rate <= 60 seconds);
        rateLimit = rate;
    }

    function setTxLimit(uint256 buyNumerator, uint256 sellNumerator, uint256 divisor) external onlyOwner {
        require(buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000);
        _maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
        _maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
    }
    
    function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner() {
        require(numerator > 0 && divisor > 0 && divisor <= 10000);
        _maxWalletSize = (_totalSupply * numerator) / divisor;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _sellBias, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        totalFee = _marketingFee + _liquidityFee;
        sellBias = _sellBias;
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 2);
    }

    function setFeeReceivers(address _liquidityFeeReceiver, address _marketingFeeReceiver) external onlyOwner {
        liquidityFeeReceiver = payable(_liquidityFeeReceiver);
        marketingFeeReceiver = payable(_marketingFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, bool _processEnabled, uint256 _denominator, uint256 _swapMinimum) external onlyOwner {
        require(_denominator > 0);
        swapEnabled = _enabled;
        processEnabled = _processEnabled;
        swapThreshold = _totalSupply / _denominator;
        swapMinimum = _swapMinimum * (10 ** _decimals);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - (balanceOf(DEAD) + balanceOf(ZERO));
    }

    event FundsDistributed(uint256 marketingBNB, uint256 liquidityBNB, uint256 liquidityTokens);
}

Settings
{
  "remappings": [
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"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":"marketingBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"}],"name":"FundsDistributed","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":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"","type":"uint8"}],"name":"ProtectedWallet","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":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"adr","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disablePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"},{"internalType":"uint256","name":"_protection","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_protect","type":"bool"}],"name":"protectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"protected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityFeeReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellBias","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_protect","type":"bool"},{"internalType":"uint256","name":"_addTime","type":"uint256"}],"name":"setProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setRateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_processEnabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_swapMinimum","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyNumerator","type":"uint256"},{"internalType":"uint256","name":"sellNumerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b031990811661dead17909155600280549091169055620000326009600a620005c9565b6200004290633b9aca00620005e1565b6003556101f46003546001620000599190620005e1565b620000659190620005fb565b6004556101f460035460016200007c9190620005e1565b620000889190620005fb565b600555606460035460026200009e9190620005e1565b620000aa9190620005fb565b600655610190600e81905560c8600f819055620000c7916200061e565b6010556000601155612710601255601380546001600160a01b031990811673655455fd9ce65fbea14c59f96eee614c3d89413c90811790925560148054821690921790915560168054909116737a250d5630b4cf539739df2c5dacb4c659f2488d1790556019805461ffff19908116600117909155602180548216905560026022556023805490911661010017905560035462000168906103e890620005fb565b6024556127106003546200017d9190620005fb565b6025553480156200018d57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601654601580546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200022c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000252919062000634565b6001600160a01b031663c9c65396601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002da919062000634565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000327573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034d919062000634565b601d80546001600160a01b0319166001600160a01b039290921691821790556000908152601760205260408120805460ff19166001179055600019906008906200039f6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601680548416835290855283822095909555308082526008855283822086548416835285528382206000199055815483168252600b85528382208054600160ff199182168117909255835485168452600d87528584208054821683179055918352600c865284832080548316821790558254841683528483208054831682179055955483168252838220805482168717905585548316825283822080549091169095179094556003548454821685526007845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200065f565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200050b578160001904821115620004ef57620004ef620004b4565b80851615620004fd57918102915b93841c9390800290620004cf565b509250929050565b6000826200052457506001620005c3565b816200053357506000620005c3565b81600181146200054c5760028114620005575762000577565b6001915050620005c3565b60ff8411156200056b576200056b620004b4565b50506001821b620005c3565b5060208310610133831016604e8410600b84101617156200059c575081810a620005c3565b620005a88383620004ca565b8060001904821115620005bf57620005bf620004b4565b0290505b92915050565b6000620005da60ff84168362000513565b9392505050565b8082028115828204841417620005c357620005c3620004b4565b6000826200061957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620005c357620005c3620004b4565b6000602082840312156200064757600080fd5b81516001600160a01b0381168114620005da57600080fd5b612be1806200066f6000396000f3fe6080604052600436106103035760003560e01c80636f4ce42811610190578063bf56b371116100dc578063e96fada211610095578063f84ba65d1161006f578063f84ba65d146108fe578063f8821a621461091e578063f887ea4014610934578063fabb0b4f1461095457600080fd5b8063e96fada21461089e578063f1f3bca3146108be578063f2fde38b146108de57600080fd5b8063bf56b371146107b5578063bfa21d6a146107cb578063c1adf7bc146107eb578063c287184e14610818578063d686014214610838578063dd62ed3e1461085857600080fd5b806395d89b4111610149578063a8aa1b3111610123578063a8aa1b3114610740578063a9059cbb14610760578063abe57e7014610780578063bafe446b146107a057600080fd5b806395d89b41146103385780639b02c4021461070a578063a4b45c001461072057600080fd5b80636f4ce428146106225780636fcba3771461064f57806370a082311461066f578063715018a6146106a5578063893d20e8146106ba5780638da5cb5b146106ec57600080fd5b8063492a937b1161024f578063584f969a1161020857806363a803e1116101e257806363a803e1146105b3578063658d4b7f146105c857806367243482146105e85780636ddd17131461060857600080fd5b8063584f969a1461056857806360bba03d1461057d57806361e08e721461059d57600080fd5b8063492a937b146104b257806350713935146104d257806354a1dfc9146104f257806356a227f214610512578063571ac8b0146105325780635804f1e41461055257600080fd5b8063234e9494116102bc578063313ce56711610296578063313ce5671461043457806334848b9a14610450578063421dd7c71461047057806346d7edaa1461048557600080fd5b8063234e9494146103ea57806323b872dd146103ff5780632b112e491461041f57600080fd5b80630445b6671461030f57806306fdde0314610338578063095db78f1461036e578063095ea7b3146103905780631031e36e146103c057806318160ddd146103d557600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032560245481565b6040519081526020015b60405180910390f35b34801561034457600080fd5b50604080518082018252600781526643726170746f7360c81b6020820152905161032f91906124f4565b34801561037a57600080fd5b5061038e6103893660046125a3565b61096a565b005b34801561039c57600080fd5b506103b06103ab36600461260f565b610b26565b604051901515815260200161032f565b3480156103cc57600080fd5b5061038e610b93565b3480156103e157600080fd5b50600354610325565b3480156103f657600080fd5b50610325610bf8565b34801561040b57600080fd5b506103b061041a36600461263b565b610c18565b34801561042b57600080fd5b50610325610cad565b34801561044057600080fd5b506040516009815260200161032f565b34801561045c57600080fd5b5061038e61046b36600461267c565b610cee565b34801561047c57600080fd5b5061038e610d8f565b34801561049157600080fd5b506103256104a03660046126a8565b60186020526000908152604090205481565b3480156104be57600080fd5b5061038e6104cd3660046126c5565b610de4565b3480156104de57600080fd5b5061038e6104ed36600461267c565b610ea2565b3480156104fe57600080fd5b5061038e61050d3660046126fa565b610f3d565b34801561051e57600080fd5b5061038e61052d36600461273c565b610fc0565b34801561053e57600080fd5b506103b061054d3660046126a8565b611050565b34801561055e57600080fd5b50610325601f5481565b34801561057457600080fd5b5061038e61105e565b34801561058957600080fd5b5061038e6105983660046126c5565b6110b3565b3480156105a957600080fd5b5061032560225481565b3480156105bf57600080fd5b50610325611108565b3480156105d457600080fd5b5061038e6105e33660046126c5565b611123565b3480156105f457600080fd5b5061038e61060336600461276c565b611178565b34801561061457600080fd5b506023546103b09060ff1681565b34801561062e57600080fd5b5061032561063d3660046126a8565b60096020526000908152604090205481565b34801561065b57600080fd5b5061038e61066a3660046127d8565b6112df565b34801561067b57600080fd5b5061032561068a3660046126a8565b6001600160a01b031660009081526007602052604090205490565b3480156106b157600080fd5b5061038e611342565b3480156106c657600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161032f565b3480156106f857600080fd5b506000546001600160a01b03166106d4565b34801561071657600080fd5b50610325601b5481565b34801561072c57600080fd5b5061038e61073b36600461280a565b6113b6565b34801561074c57600080fd5b50601d546106d4906001600160a01b031681565b34801561076c57600080fd5b506103b061077b36600461260f565b61140e565b34801561078c57600080fd5b5061038e61079b366004612838565b61141b565b3480156107ac57600080fd5b5061032561148c565b3480156107c157600080fd5b50610325601e5481565b3480156107d757600080fd5b506013546106d4906001600160a01b031681565b3480156107f757600080fd5b506103256108063660046126a8565b600a6020526000908152604090205481565b34801561082457600080fd5b5061038e61083336600461285a565b6114a7565b34801561084457600080fd5b5061038e610853366004612873565b6114e4565b34801561086457600080fd5b5061032561087336600461280a565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156108aa57600080fd5b506014546106d4906001600160a01b031681565b3480156108ca57600080fd5b506103256108d936600461288f565b611575565b3480156108ea57600080fd5b5061038e6108f93660046126a8565b6115c2565b34801561090a57600080fd5b5061038e6109193660046126c5565b6116ac565b34801561092a57600080fd5b5061032560255481565b34801561094057600080fd5b506015546106d4906001600160a01b031681565b34801561096057600080fd5b5061032560205481565b3360009081526027602052604090205460ff168061099257506000546001600160a01b031633145b6109b75760405162461bcd60e51b81526004016109ae906128aa565b60405180910390fd5b80156109cc5760195460ff166109cc57600080fd5b60005b82811015610b20578115610a5b57601b80549060006109ed836128f7565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610a2657610a26612910565b9050602002016020810190610a3b91906126a8565b436002604051610a4e9493929190612926565b60405180910390a1610abb565b60186000858584818110610a7157610a71612910565b9050602002016020810190610a8691906126a8565b6001600160a01b0316815260208101919091526040016000205415610abb57601b8054906000610ab583612951565b91905055505b81610ac7576000610ac9565b435b60186000868685818110610adf57610adf612910565b9050602002016020810190610af491906126a8565b6001600160a01b0316815260208101919091526040016000205580610b18816128f7565b9150506109cf565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b819086815260200190565b60405180910390a35060015b92915050565b3360009081526027602052604090205460ff1680610bbb57506000546001600160a01b031633145b610bd75760405162461bcd60e51b81526004016109ae906128aa565b602154610100900460ff1615610bec57600080fd5b6021805460ff19169055565b6000610c066009600a612a4c565b600554610c139190612a5b565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610c98576001600160a01b0384166000908152600860209081526040808320338452909152902054610c73908390612a7d565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610ca3848484611701565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610ce191612a90565b600354610c139190612a7d565b3360009081526027602052604090205460ff1680610d1657506000546001600160a01b031633145b610d325760405162461bcd60e51b81526004016109ae906128aa565b60215460ff16158015610d455750600a83105b610d4e57600080fd5b60208390556021805460ff1916600117905543601e55610d6e8242612a90565b601c55610d7d6009600a612a4c565b610d879082612aa3565b601a55505050565b3360009081526027602052604090205460ff1680610db757506000546001600160a01b031633145b610dd35760405162461bcd60e51b81526004016109ae906128aa565b6019805461ffff1916610100179055565b6000546001600160a01b03163314610e0e5760405162461bcd60e51b81526004016109ae90612aba565b601d546001600160a01b0390811690831603610e775760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b60648201526084016109ae565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ecc5760405162461bcd60e51b81526004016109ae90612aba565b600083118015610edc5750600082115b8015610ee85750600081115b8015610ef657506127108111155b610eff57600080fd5b8083600354610f0e9190612aa3565b610f189190612a5b565b6004556003548190610f2b908490612aa3565b610f359190612a5b565b600555505050565b6000546001600160a01b03163314610f675760405162461bcd60e51b81526004016109ae90612aba565b60008211610f7457600080fd5b6023805461ffff191685151561ff0019161761010085151502179055600354610f9e908390612a5b565b602455610fad6009600a612a4c565b610fb79082612aa3565b60255550505050565b3360009081526027602052604090205460ff1680610fe857506000546001600160a01b031633145b6110045760405162461bcd60e51b81526004016109ae906128aa565b476001600160a01b0382166108fc606461101e8685612aa3565b6110289190612a5b565b6040518115909202916000818181858888f19350505050158015610b20573d6000803e3d6000fd5b6000610b8d82600019610b26565b3360009081526027602052604090205460ff168061108657506000546001600160a01b031633145b6110a25760405162461bcd60e51b81526004016109ae906128aa565b6021805461ffff1916610101179055565b6000546001600160a01b031633146110dd5760405162461bcd60e51b81526004016109ae90612aba565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b60006111166009600a612a4c565b600654610c139190612a5b565b6000546001600160a01b0316331461114d5760405162461bcd60e51b81526004016109ae90612aba565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111a25760405162461bcd60e51b81526004016109ae90612aba565b82158015906111b057508083145b6111b957600080fd5b3360005b848110156112d757601760008787848181106111db576111db612910565b90506020020160208101906111f091906126a8565b6001600160a01b0316815260208101919091526040016000205460ff1615801561125f5750600d600087878481811061122b5761122b612910565b905060200201602081019061124091906126a8565b6001600160a01b0316815260208101919091526040016000205460ff16155b156112c5576112c38287878481811061127a5761127a612910565b905060200201602081019061128f91906126a8565b61129b6009600a612a4c565b8787868181106112ad576112ad612910565b905060200201356112be9190612aa3565b611c03565b505b806112cf816128f7565b9150506111bd565b505050505050565b6000546001600160a01b031633146113095760405162461bcd60e51b81526004016109ae90612aba565b600f849055600e83905561131d8484612a90565b60105560118290556012819055611335600282612a5b565b60105410610b2057600080fd5b6000546001600160a01b0316331461136c5760405162461bcd60e51b81526004016109ae90612aba565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113e05760405162461bcd60e51b81526004016109ae90612aba565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000610ca6338484611701565b6000546001600160a01b031633146114455760405162461bcd60e51b81526004016109ae90612aba565b6000821180156114555750600081115b801561146357506127108111155b61146c57600080fd5b808260035461147b9190612aa3565b6114859190612a5b565b6006555050565b600061149a6009600a612a4c565b600454610c139190612a5b565b6000546001600160a01b031633146114d15760405162461bcd60e51b81526004016109ae90612aba565b603c8111156114df57600080fd5b602255565b3360009081526027602052604090205460ff168061150c57506000546001600160a01b031633145b6115285760405162461bcd60e51b81526004016109ae906128aa565b601954610100900460ff161561153d57600080fd5b6019805460ff191683151517905562015180811061155a57600080fd5b80601c600082825461156c9190612a90565b90915550505050565b600043602054601e546115889190612a90565b1061159c576001601254610b8d9190612a7d565b81156115b257601154601054610b8d9190612a90565b601154601054610b8d9190612a7d565b6000546001600160a01b031633146115ec5760405162461bcd60e51b81526004016109ae90612aba565b6001600160a01b0381166116515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ae565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116d65760405162461bcd60e51b81526004016109ae90612aba565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006001600160a01b0384166117595760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d20307830000000000000000060448201526064016109ae565b6001600160a01b0383166117a85760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b60448201526064016109ae565b600082116117f05760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b60448201526064016109ae565b6001600160a01b03841660009081526007602052604090205482111561184f5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016109ae565b601e5415801561187757506001600160a01b03831660009081526017602052604090205460ff165b156118fe576001600160a01b0384166000908152600d602052604090205460ff166118e45760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e000000000000000060448201526064016109ae565b6118fe43601e5542601f556023805460ff19166001179055565b60215460ff1661198b576001600160a01b0384166000908152600d602052604090205460ff168061194757506001600160a01b0383166000908152600d602052604090205460ff165b61198b5760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b60448201526064016109ae565b611996848484611cbd565b6001600160a01b03831660009081526017602052604090205460ff161580156119cd57506001546001600160a01b03848116911614155b156119fc576001600160a01b0383166000908152600c602052604090205460ff166119fc576119fc8383612012565b60195460ff168015611a0f575042601c54115b15611ad9576001600160a01b03841660009081526017602052604090205460ff168015611a455750326001600160a01b03841614155b8015611a6757506001600160a01b038316600090815260186020526040902054155b15611ad9576001600160a01b0383166000908152601860205260408120439055601b805491611a95836128f7565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611ad09493929190612926565b60405180910390a15b60265460ff1615611af657611aef848484611c03565b9050610ca6565b6001600160a01b038416600090815260076020526040902054611b1a908390612a7d565b6001600160a01b038516600090815260076020908152604080832093909355600b90529081205460ff1615611b4f5782611b59565b611b598484612097565b9050611b6484612115565b15611b78578215611b7857611b788361218c565b6001600160a01b038416600090815260076020526040902054611b9c908290612a90565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bf09085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260076020526040812054611c27908390612a7d565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611c57908390612a90565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cab9086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600c602052604090205460ff1680611d0f57506001600160a01b03831660009081526017602052604090205460ff16611d0757600554611d0b565b6004545b8111155b611d4f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109ae565b6001600160a01b0383166000908152600c602052604090205460ff1680611d9b57506022546001600160a01b0383166000908152600a60205260409020544391611d9891612a90565b11155b611de75760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e00000060448201526064016109ae565b6001600160a01b03831660009081526018602052604090205415611eca57611e116009600a612a4c565b601a54611e1e9190612aa3565b8111158015611e4357506001600160a01b038316600090815260096020526040902054155b8015611e50575042601c54115b611eae5760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b60648201526084016109ae565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526017602052604090205460ff1615611f095750506001600160a01b03166000908152600960205260409020439055565b6001600160a01b0383166000908152600b602052604090205460ff1661200d5760195460ff168015611f3c575042601c54115b8015611f565750326000908152600a602052604090205443145b8015611f7857506001600160a01b038216600090815260186020526040902054155b15611fd9576001600160a01b03821660009081526018602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea91611fd09132918691600190612926565b60405180910390a15b6001600160a01b0382166000818152600a60205260409020439055321461200d57326000908152600a602052604090204390555b505050565b6006546001600160a01b038316600090815260076020526040902054819061203b908490612a90565b111561200d5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016109ae565b6001600160a01b03821660009081526017602052604081205460125460ff9091169082906120c483611575565b6120ce9086612aa3565b6120d89190612a5b565b306000908152600760205260408120805492935083929091906120fc908490612a90565b9091555061210c90508185612a7d565b95945050505050565b3360009081526017602052604081205460ff16158015612138575060265460ff16155b8015612146575060235460ff165b801561216a57506001600160a01b03821660009081526017602052604090205460ff165b8015610b8d575060255430600090815260076020526040902054101592915050565b6026805460ff1916600117905560245460009082106121ad576024546121af565b815b306000908152600760205260409020549091508111156121db5750306000908152600760205260409020545b60006010546002600f54846121f09190612aa3565b6121fa9190612a5b565b6122049190612a5b565b90506122108183612a7d565b6040805160028082526060820183529294506000929091602083019080368337019050509050308160008151811061224a5761224a612910565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156122a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c79190612aef565b816001815181106122da576122da612910565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac94790612324908790600090879030904290600401612b0c565b600060405180830381600087803b15801561233e57600080fd5b505af1158015612352573d6000803e3d6000fd5b50505050600081476123649190612a7d565b905060006002600f546123779190612a5b565b6010546123849190612a7d565b90506000816002600f54856123999190612aa3565b6123a39190612a5b565b6123ad9190612a5b565b905060006123bb8285612a7d565b905080156123ff576014546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156123fd573d6000803e3d6000fd5b505b861561249e5760155460135460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af1158015612475573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061249a9190612b7d565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506026805460ff1916905550505050505050565b600060208083528351808285015260005b8181101561252157858101830151858201604001528201612505565b506000604082860101526040601f19601f8301168501019250505092915050565b60008083601f84011261255457600080fd5b50813567ffffffffffffffff81111561256c57600080fd5b6020830191508360208260051b850101111561258757600080fd5b9250929050565b8035801515811461259e57600080fd5b919050565b6000806000604084860312156125b857600080fd5b833567ffffffffffffffff8111156125cf57600080fd5b6125db86828701612542565b90945092506125ee90506020850161258e565b90509250925092565b6001600160a01b038116811461260c57600080fd5b50565b6000806040838503121561262257600080fd5b823561262d816125f7565b946020939093013593505050565b60008060006060848603121561265057600080fd5b833561265b816125f7565b9250602084013561266b816125f7565b929592945050506040919091013590565b60008060006060848603121561269157600080fd5b505081359360208301359350604090920135919050565b6000602082840312156126ba57600080fd5b8135610ca6816125f7565b600080604083850312156126d857600080fd5b82356126e3816125f7565b91506126f16020840161258e565b90509250929050565b6000806000806080858703121561271057600080fd5b6127198561258e565b93506127276020860161258e565b93969395505050506040820135916060013590565b6000806040838503121561274f57600080fd5b823591506020830135612761816125f7565b809150509250929050565b6000806000806040858703121561278257600080fd5b843567ffffffffffffffff8082111561279a57600080fd5b6127a688838901612542565b909650945060208701359150808211156127bf57600080fd5b506127cc87828801612542565b95989497509550505050565b600080600080608085870312156127ee57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561281d57600080fd5b8235612828816125f7565b91506020830135612761816125f7565b6000806040838503121561284b57600080fd5b50508035926020909101359150565b60006020828403121561286c57600080fd5b5035919050565b6000806040838503121561288657600080fd5b61262d8361258e565b6000602082840312156128a157600080fd5b610ca68261258e565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600060018201612909576129096128e1565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b600081612960576129606128e1565b506000190190565b600181815b808511156129a3578160001904821115612989576129896128e1565b8085161561299657918102915b93841c939080029061296d565b509250929050565b6000826129ba57506001610b8d565b816129c757506000610b8d565b81600181146129dd57600281146129e757612a03565b6001915050610b8d565b60ff8411156129f8576129f86128e1565b50506001821b610b8d565b5060208310610133831016604e8410600b8410161715612a26575081810a610b8d565b612a308383612968565b8060001904821115612a4457612a446128e1565b029392505050565b6000610ca660ff8416836129ab565b600082612a7857634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610b8d57610b8d6128e1565b80820180821115610b8d57610b8d6128e1565b8082028115828204841417610b8d57610b8d6128e1565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612b0157600080fd5b8151610ca6816125f7565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b5c5784516001600160a01b031683529383019391830191600101612b37565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612b9257600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212201ea7edb0030f088aa1159e32b1b127ea3c07b3fe9b16e1b2c553423aba63cc3164736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80636f4ce42811610190578063bf56b371116100dc578063e96fada211610095578063f84ba65d1161006f578063f84ba65d146108fe578063f8821a621461091e578063f887ea4014610934578063fabb0b4f1461095457600080fd5b8063e96fada21461089e578063f1f3bca3146108be578063f2fde38b146108de57600080fd5b8063bf56b371146107b5578063bfa21d6a146107cb578063c1adf7bc146107eb578063c287184e14610818578063d686014214610838578063dd62ed3e1461085857600080fd5b806395d89b4111610149578063a8aa1b3111610123578063a8aa1b3114610740578063a9059cbb14610760578063abe57e7014610780578063bafe446b146107a057600080fd5b806395d89b41146103385780639b02c4021461070a578063a4b45c001461072057600080fd5b80636f4ce428146106225780636fcba3771461064f57806370a082311461066f578063715018a6146106a5578063893d20e8146106ba5780638da5cb5b146106ec57600080fd5b8063492a937b1161024f578063584f969a1161020857806363a803e1116101e257806363a803e1146105b3578063658d4b7f146105c857806367243482146105e85780636ddd17131461060857600080fd5b8063584f969a1461056857806360bba03d1461057d57806361e08e721461059d57600080fd5b8063492a937b146104b257806350713935146104d257806354a1dfc9146104f257806356a227f214610512578063571ac8b0146105325780635804f1e41461055257600080fd5b8063234e9494116102bc578063313ce56711610296578063313ce5671461043457806334848b9a14610450578063421dd7c71461047057806346d7edaa1461048557600080fd5b8063234e9494146103ea57806323b872dd146103ff5780632b112e491461041f57600080fd5b80630445b6671461030f57806306fdde0314610338578063095db78f1461036e578063095ea7b3146103905780631031e36e146103c057806318160ddd146103d557600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032560245481565b6040519081526020015b60405180910390f35b34801561034457600080fd5b50604080518082018252600781526643726170746f7360c81b6020820152905161032f91906124f4565b34801561037a57600080fd5b5061038e6103893660046125a3565b61096a565b005b34801561039c57600080fd5b506103b06103ab36600461260f565b610b26565b604051901515815260200161032f565b3480156103cc57600080fd5b5061038e610b93565b3480156103e157600080fd5b50600354610325565b3480156103f657600080fd5b50610325610bf8565b34801561040b57600080fd5b506103b061041a36600461263b565b610c18565b34801561042b57600080fd5b50610325610cad565b34801561044057600080fd5b506040516009815260200161032f565b34801561045c57600080fd5b5061038e61046b36600461267c565b610cee565b34801561047c57600080fd5b5061038e610d8f565b34801561049157600080fd5b506103256104a03660046126a8565b60186020526000908152604090205481565b3480156104be57600080fd5b5061038e6104cd3660046126c5565b610de4565b3480156104de57600080fd5b5061038e6104ed36600461267c565b610ea2565b3480156104fe57600080fd5b5061038e61050d3660046126fa565b610f3d565b34801561051e57600080fd5b5061038e61052d36600461273c565b610fc0565b34801561053e57600080fd5b506103b061054d3660046126a8565b611050565b34801561055e57600080fd5b50610325601f5481565b34801561057457600080fd5b5061038e61105e565b34801561058957600080fd5b5061038e6105983660046126c5565b6110b3565b3480156105a957600080fd5b5061032560225481565b3480156105bf57600080fd5b50610325611108565b3480156105d457600080fd5b5061038e6105e33660046126c5565b611123565b3480156105f457600080fd5b5061038e61060336600461276c565b611178565b34801561061457600080fd5b506023546103b09060ff1681565b34801561062e57600080fd5b5061032561063d3660046126a8565b60096020526000908152604090205481565b34801561065b57600080fd5b5061038e61066a3660046127d8565b6112df565b34801561067b57600080fd5b5061032561068a3660046126a8565b6001600160a01b031660009081526007602052604090205490565b3480156106b157600080fd5b5061038e611342565b3480156106c657600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161032f565b3480156106f857600080fd5b506000546001600160a01b03166106d4565b34801561071657600080fd5b50610325601b5481565b34801561072c57600080fd5b5061038e61073b36600461280a565b6113b6565b34801561074c57600080fd5b50601d546106d4906001600160a01b031681565b34801561076c57600080fd5b506103b061077b36600461260f565b61140e565b34801561078c57600080fd5b5061038e61079b366004612838565b61141b565b3480156107ac57600080fd5b5061032561148c565b3480156107c157600080fd5b50610325601e5481565b3480156107d757600080fd5b506013546106d4906001600160a01b031681565b3480156107f757600080fd5b506103256108063660046126a8565b600a6020526000908152604090205481565b34801561082457600080fd5b5061038e61083336600461285a565b6114a7565b34801561084457600080fd5b5061038e610853366004612873565b6114e4565b34801561086457600080fd5b5061032561087336600461280a565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156108aa57600080fd5b506014546106d4906001600160a01b031681565b3480156108ca57600080fd5b506103256108d936600461288f565b611575565b3480156108ea57600080fd5b5061038e6108f93660046126a8565b6115c2565b34801561090a57600080fd5b5061038e6109193660046126c5565b6116ac565b34801561092a57600080fd5b5061032560255481565b34801561094057600080fd5b506015546106d4906001600160a01b031681565b34801561096057600080fd5b5061032560205481565b3360009081526027602052604090205460ff168061099257506000546001600160a01b031633145b6109b75760405162461bcd60e51b81526004016109ae906128aa565b60405180910390fd5b80156109cc5760195460ff166109cc57600080fd5b60005b82811015610b20578115610a5b57601b80549060006109ed836128f7565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610a2657610a26612910565b9050602002016020810190610a3b91906126a8565b436002604051610a4e9493929190612926565b60405180910390a1610abb565b60186000858584818110610a7157610a71612910565b9050602002016020810190610a8691906126a8565b6001600160a01b0316815260208101919091526040016000205415610abb57601b8054906000610ab583612951565b91905055505b81610ac7576000610ac9565b435b60186000868685818110610adf57610adf612910565b9050602002016020810190610af491906126a8565b6001600160a01b0316815260208101919091526040016000205580610b18816128f7565b9150506109cf565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b819086815260200190565b60405180910390a35060015b92915050565b3360009081526027602052604090205460ff1680610bbb57506000546001600160a01b031633145b610bd75760405162461bcd60e51b81526004016109ae906128aa565b602154610100900460ff1615610bec57600080fd5b6021805460ff19169055565b6000610c066009600a612a4c565b600554610c139190612a5b565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610c98576001600160a01b0384166000908152600860209081526040808320338452909152902054610c73908390612a7d565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610ca3848484611701565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610ce191612a90565b600354610c139190612a7d565b3360009081526027602052604090205460ff1680610d1657506000546001600160a01b031633145b610d325760405162461bcd60e51b81526004016109ae906128aa565b60215460ff16158015610d455750600a83105b610d4e57600080fd5b60208390556021805460ff1916600117905543601e55610d6e8242612a90565b601c55610d7d6009600a612a4c565b610d879082612aa3565b601a55505050565b3360009081526027602052604090205460ff1680610db757506000546001600160a01b031633145b610dd35760405162461bcd60e51b81526004016109ae906128aa565b6019805461ffff1916610100179055565b6000546001600160a01b03163314610e0e5760405162461bcd60e51b81526004016109ae90612aba565b601d546001600160a01b0390811690831603610e775760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b60648201526084016109ae565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ecc5760405162461bcd60e51b81526004016109ae90612aba565b600083118015610edc5750600082115b8015610ee85750600081115b8015610ef657506127108111155b610eff57600080fd5b8083600354610f0e9190612aa3565b610f189190612a5b565b6004556003548190610f2b908490612aa3565b610f359190612a5b565b600555505050565b6000546001600160a01b03163314610f675760405162461bcd60e51b81526004016109ae90612aba565b60008211610f7457600080fd5b6023805461ffff191685151561ff0019161761010085151502179055600354610f9e908390612a5b565b602455610fad6009600a612a4c565b610fb79082612aa3565b60255550505050565b3360009081526027602052604090205460ff1680610fe857506000546001600160a01b031633145b6110045760405162461bcd60e51b81526004016109ae906128aa565b476001600160a01b0382166108fc606461101e8685612aa3565b6110289190612a5b565b6040518115909202916000818181858888f19350505050158015610b20573d6000803e3d6000fd5b6000610b8d82600019610b26565b3360009081526027602052604090205460ff168061108657506000546001600160a01b031633145b6110a25760405162461bcd60e51b81526004016109ae906128aa565b6021805461ffff1916610101179055565b6000546001600160a01b031633146110dd5760405162461bcd60e51b81526004016109ae90612aba565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b60006111166009600a612a4c565b600654610c139190612a5b565b6000546001600160a01b0316331461114d5760405162461bcd60e51b81526004016109ae90612aba565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111a25760405162461bcd60e51b81526004016109ae90612aba565b82158015906111b057508083145b6111b957600080fd5b3360005b848110156112d757601760008787848181106111db576111db612910565b90506020020160208101906111f091906126a8565b6001600160a01b0316815260208101919091526040016000205460ff1615801561125f5750600d600087878481811061122b5761122b612910565b905060200201602081019061124091906126a8565b6001600160a01b0316815260208101919091526040016000205460ff16155b156112c5576112c38287878481811061127a5761127a612910565b905060200201602081019061128f91906126a8565b61129b6009600a612a4c565b8787868181106112ad576112ad612910565b905060200201356112be9190612aa3565b611c03565b505b806112cf816128f7565b9150506111bd565b505050505050565b6000546001600160a01b031633146113095760405162461bcd60e51b81526004016109ae90612aba565b600f849055600e83905561131d8484612a90565b60105560118290556012819055611335600282612a5b565b60105410610b2057600080fd5b6000546001600160a01b0316331461136c5760405162461bcd60e51b81526004016109ae90612aba565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113e05760405162461bcd60e51b81526004016109ae90612aba565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000610ca6338484611701565b6000546001600160a01b031633146114455760405162461bcd60e51b81526004016109ae90612aba565b6000821180156114555750600081115b801561146357506127108111155b61146c57600080fd5b808260035461147b9190612aa3565b6114859190612a5b565b6006555050565b600061149a6009600a612a4c565b600454610c139190612a5b565b6000546001600160a01b031633146114d15760405162461bcd60e51b81526004016109ae90612aba565b603c8111156114df57600080fd5b602255565b3360009081526027602052604090205460ff168061150c57506000546001600160a01b031633145b6115285760405162461bcd60e51b81526004016109ae906128aa565b601954610100900460ff161561153d57600080fd5b6019805460ff191683151517905562015180811061155a57600080fd5b80601c600082825461156c9190612a90565b90915550505050565b600043602054601e546115889190612a90565b1061159c576001601254610b8d9190612a7d565b81156115b257601154601054610b8d9190612a90565b601154601054610b8d9190612a7d565b6000546001600160a01b031633146115ec5760405162461bcd60e51b81526004016109ae90612aba565b6001600160a01b0381166116515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ae565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116d65760405162461bcd60e51b81526004016109ae90612aba565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006001600160a01b0384166117595760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d20307830000000000000000060448201526064016109ae565b6001600160a01b0383166117a85760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b60448201526064016109ae565b600082116117f05760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b60448201526064016109ae565b6001600160a01b03841660009081526007602052604090205482111561184f5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016109ae565b601e5415801561187757506001600160a01b03831660009081526017602052604090205460ff165b156118fe576001600160a01b0384166000908152600d602052604090205460ff166118e45760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e000000000000000060448201526064016109ae565b6118fe43601e5542601f556023805460ff19166001179055565b60215460ff1661198b576001600160a01b0384166000908152600d602052604090205460ff168061194757506001600160a01b0383166000908152600d602052604090205460ff165b61198b5760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b60448201526064016109ae565b611996848484611cbd565b6001600160a01b03831660009081526017602052604090205460ff161580156119cd57506001546001600160a01b03848116911614155b156119fc576001600160a01b0383166000908152600c602052604090205460ff166119fc576119fc8383612012565b60195460ff168015611a0f575042601c54115b15611ad9576001600160a01b03841660009081526017602052604090205460ff168015611a455750326001600160a01b03841614155b8015611a6757506001600160a01b038316600090815260186020526040902054155b15611ad9576001600160a01b0383166000908152601860205260408120439055601b805491611a95836128f7565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611ad09493929190612926565b60405180910390a15b60265460ff1615611af657611aef848484611c03565b9050610ca6565b6001600160a01b038416600090815260076020526040902054611b1a908390612a7d565b6001600160a01b038516600090815260076020908152604080832093909355600b90529081205460ff1615611b4f5782611b59565b611b598484612097565b9050611b6484612115565b15611b78578215611b7857611b788361218c565b6001600160a01b038416600090815260076020526040902054611b9c908290612a90565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bf09085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260076020526040812054611c27908390612a7d565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611c57908390612a90565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cab9086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600c602052604090205460ff1680611d0f57506001600160a01b03831660009081526017602052604090205460ff16611d0757600554611d0b565b6004545b8111155b611d4f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109ae565b6001600160a01b0383166000908152600c602052604090205460ff1680611d9b57506022546001600160a01b0383166000908152600a60205260409020544391611d9891612a90565b11155b611de75760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e00000060448201526064016109ae565b6001600160a01b03831660009081526018602052604090205415611eca57611e116009600a612a4c565b601a54611e1e9190612aa3565b8111158015611e4357506001600160a01b038316600090815260096020526040902054155b8015611e50575042601c54115b611eae5760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b60648201526084016109ae565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526017602052604090205460ff1615611f095750506001600160a01b03166000908152600960205260409020439055565b6001600160a01b0383166000908152600b602052604090205460ff1661200d5760195460ff168015611f3c575042601c54115b8015611f565750326000908152600a602052604090205443145b8015611f7857506001600160a01b038216600090815260186020526040902054155b15611fd9576001600160a01b03821660009081526018602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea91611fd09132918691600190612926565b60405180910390a15b6001600160a01b0382166000818152600a60205260409020439055321461200d57326000908152600a602052604090204390555b505050565b6006546001600160a01b038316600090815260076020526040902054819061203b908490612a90565b111561200d5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016109ae565b6001600160a01b03821660009081526017602052604081205460125460ff9091169082906120c483611575565b6120ce9086612aa3565b6120d89190612a5b565b306000908152600760205260408120805492935083929091906120fc908490612a90565b9091555061210c90508185612a7d565b95945050505050565b3360009081526017602052604081205460ff16158015612138575060265460ff16155b8015612146575060235460ff165b801561216a57506001600160a01b03821660009081526017602052604090205460ff165b8015610b8d575060255430600090815260076020526040902054101592915050565b6026805460ff1916600117905560245460009082106121ad576024546121af565b815b306000908152600760205260409020549091508111156121db5750306000908152600760205260409020545b60006010546002600f54846121f09190612aa3565b6121fa9190612a5b565b6122049190612a5b565b90506122108183612a7d565b6040805160028082526060820183529294506000929091602083019080368337019050509050308160008151811061224a5761224a612910565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156122a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c79190612aef565b816001815181106122da576122da612910565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac94790612324908790600090879030904290600401612b0c565b600060405180830381600087803b15801561233e57600080fd5b505af1158015612352573d6000803e3d6000fd5b50505050600081476123649190612a7d565b905060006002600f546123779190612a5b565b6010546123849190612a7d565b90506000816002600f54856123999190612aa3565b6123a39190612a5b565b6123ad9190612a5b565b905060006123bb8285612a7d565b905080156123ff576014546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156123fd573d6000803e3d6000fd5b505b861561249e5760155460135460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af1158015612475573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061249a9190612b7d565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506026805460ff1916905550505050505050565b600060208083528351808285015260005b8181101561252157858101830151858201604001528201612505565b506000604082860101526040601f19601f8301168501019250505092915050565b60008083601f84011261255457600080fd5b50813567ffffffffffffffff81111561256c57600080fd5b6020830191508360208260051b850101111561258757600080fd5b9250929050565b8035801515811461259e57600080fd5b919050565b6000806000604084860312156125b857600080fd5b833567ffffffffffffffff8111156125cf57600080fd5b6125db86828701612542565b90945092506125ee90506020850161258e565b90509250925092565b6001600160a01b038116811461260c57600080fd5b50565b6000806040838503121561262257600080fd5b823561262d816125f7565b946020939093013593505050565b60008060006060848603121561265057600080fd5b833561265b816125f7565b9250602084013561266b816125f7565b929592945050506040919091013590565b60008060006060848603121561269157600080fd5b505081359360208301359350604090920135919050565b6000602082840312156126ba57600080fd5b8135610ca6816125f7565b600080604083850312156126d857600080fd5b82356126e3816125f7565b91506126f16020840161258e565b90509250929050565b6000806000806080858703121561271057600080fd5b6127198561258e565b93506127276020860161258e565b93969395505050506040820135916060013590565b6000806040838503121561274f57600080fd5b823591506020830135612761816125f7565b809150509250929050565b6000806000806040858703121561278257600080fd5b843567ffffffffffffffff8082111561279a57600080fd5b6127a688838901612542565b909650945060208701359150808211156127bf57600080fd5b506127cc87828801612542565b95989497509550505050565b600080600080608085870312156127ee57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561281d57600080fd5b8235612828816125f7565b91506020830135612761816125f7565b6000806040838503121561284b57600080fd5b50508035926020909101359150565b60006020828403121561286c57600080fd5b5035919050565b6000806040838503121561288657600080fd5b61262d8361258e565b6000602082840312156128a157600080fd5b610ca68261258e565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600060018201612909576129096128e1565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b600081612960576129606128e1565b506000190190565b600181815b808511156129a3578160001904821115612989576129896128e1565b8085161561299657918102915b93841c939080029061296d565b509250929050565b6000826129ba57506001610b8d565b816129c757506000610b8d565b81600181146129dd57600281146129e757612a03565b6001915050610b8d565b60ff8411156129f8576129f86128e1565b50506001821b610b8d565b5060208310610133831016604e8410600b8410161715612a26575081810a610b8d565b612a308383612968565b8060001904821115612a4457612a446128e1565b029392505050565b6000610ca660ff8416836129ab565b600082612a7857634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610b8d57610b8d6128e1565b80820180821115610b8d57610b8d6128e1565b8082028115828204841417610b8d57610b8d6128e1565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612b0157600080fd5b8151610ca6816125f7565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b5c5784516001600160a01b031683529383019391830191600101612b37565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612b9257600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212201ea7edb0030f088aa1159e32b1b127ea3c07b3fe9b16e1b2c553423aba63cc3164736f6c63430008110033

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.