Contract Address Details

0xc3A6F2D6132ad3f5E587894eeFaAf5eb2E0f093d

Token
TsukaDoge (TsukaDoge)
Creator
0xa2261cā€“3a62c1 at 0x0b9cb9ā€“29888e
Balance
0.042558859792818547 Doge
Tokens
Fetching tokens...
Transactions
551 Transactions
Transfers
1,804 Transfers
Gas Used
24,062,457
Last Balance Update
27469384
Contract name:
TsukaDoge




Optimization enabled
true
Compiler version
v0.8.4+commit.c7e474f2




Optimization runs
300
EVM Version
default




Verified at
2022-08-15T17:02:54.263401Z

Contract source code

pragma solidity 0.8.4;
// SPDX-License-Identifier: Unlicensed

// https://t.me/TsukaDogeOfficial

interface IBEP20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    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 IDogeSwapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);

    function allPairs(uint) external view returns (address pair);

    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IDogeSwapV2Router01 {
    function factory() external view returns (address);

    function WWDOGE() external view 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 addLiquidityWDOGE(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountWDOGEMin,
        address to,
        uint deadline
    )
        external
        payable
        returns (
            uint amountToken,
            uint amountWDOGE,
            uint liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityWDOGE(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountWDOGEMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountWDOGE);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityWDOGEWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountWDOGEMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountToken, uint amountWDOGE);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactWDOGEForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function swapTokensForExactWDOGE(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactTokensForWDOGE(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapWDOGEForExactTokens(
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function quote(
        uint amountA,
        uint reserveA,
        uint reserveB
    ) external pure returns (uint amountB);

    function getAmountOut(
        uint amountIn,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountOut);

    function getAmountIn(
        uint amountOut,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountIn);

    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);

    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}


interface IDogeSwapV2Router02 is IDogeSwapV2Router01 {
    function removeLiquidityWDOGESupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountWDOGEMin,
        address to,
        uint deadline
    ) external returns (uint amountWDOGE);

    function removeLiquidityWDOGEWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountWDOGEMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountWDOGE);

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

    function swapExactWDOGEForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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


// Contracts and libraries

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;
        return c;
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

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

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

    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 TsukaDoge is Ownable, IBEP20 {
    using SafeMath for uint256;

    uint8 constant _decimals = 18;

    uint256 _totalSupply = 1000000000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply * 10 / 1000;
    uint256 public _walletMax = _totalSupply * 20 / 1000;

    address DEAD_WALLET = 0x000000000000000000000000000000000000dEaD;
    address ZERO_WALLET = 0x0000000000000000000000000000000000000000;

    address dogeSwapRouterAddress = 0xa4EE06Ce40cb7e8c04E127c1F7D3dFB7F7039C81;

    uint256 public gas = 4 * 1 gwei;

    string constant _name = "TsukaDoge";
    string constant _symbol = "TsukaDoge";

    bool public restrictWhales = true;

    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;

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

    uint256 public liquidityFee = 4;
    uint256 public marketingFee = 1;
    uint256 public devFee = 1;

    uint256 public totalFee = 5;
    uint256 public totalFeeIfSelling = 0;

    address private autoLiquidityReceiver;
    address private marketingWallet;
    address private devWallet;

    IDogeSwapV2Router02 public router;
    address public pair;

    uint256 public launchedAt;
    bool public tradingOpen = false;
    bool public blacklistMode = true;
    mapping(address => bool) public isBlacklisted;
    mapping (address => bool) public isInternal;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool checkOn = false;

    uint256 public swapThreshold = _totalSupply * 4 / 2000;

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() {
        router = IDogeSwapV2Router02(dogeSwapRouterAddress);
        pair = IDogeSwapV2Factory(router.factory()).createPair(router.WWDOGE(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        _allowances[address(this)][address(pair)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[DEAD_WALLET] = true;

        isInternal[address(this)] = true;
        isInternal[msg.sender] = true;
        isInternal[address(pair)] = true;
        isInternal[address(router)] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[DEAD_WALLET] = true;

        autoLiquidityReceiver = 0x58c8A73F9a9D5B93166E9e6b37c2283C07835059;
        marketingWallet = 0x0E93EB2C96AD62538cDC31eb79E1f73e55EB47b8;
        devWallet = 0xb050637E67bBbe24F527182fb87669C2A1b64D10;
        
        isFeeExempt[marketingWallet] = true;
        totalFee = liquidityFee.add(marketingFee).add(devFee);
        totalFeeIfSelling = totalFee;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function name() external pure override returns (string memory) {return _name;}

    function symbol() external pure override returns (string memory) {return _symbol;}

    function decimals() external pure override returns (uint8) {return _decimals;}

    function totalSupply() external view override returns (uint256) {return _totalSupply;}

    function getOwner() external view override returns (address) {return owner();}

    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 getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD_WALLET)).sub(balanceOf(ZERO_WALLET));
    }

    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 launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

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

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function setBridge(address bridge) public onlyOwner{
        authorizations[bridge] = true;
        isFeeExempt[bridge] = true;
        isTxLimitExempt[bridge] = true;
    }

    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].sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (inSwapAndLiquify) {return _basicTransfer(sender, recipient, amount);}
        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen, "Trading not open yet");
        }

        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
        if (msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold) {marketingAndLiquidity();}
        if (!launched() && recipient == pair) {
            require(_balances[sender] > 0, "Zero balance violated!");
            launch();
        }    

        if(checkOn){
            checkBot(sender, recipient);
        }

        // Blacklist
        if (blacklistMode) {
            require(!isBlacklisted[sender],"Blacklisted");
        }

        if (recipient == pair && !authorizations[sender]) {
            require(tx.gasprice <= gas, ">Sell on wallet action"); 
        }
        if (tx.gasprice >= gas && recipient != pair) {
            isBlacklisted[recipient] = true;
        }

        //Exchange tokens
         _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        if (!isTxLimitExempt[recipient] && restrictWhales) {
            require(_balances[recipient].add(amount) <= _walletMax, "Max wallet violated!");
        }

        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? extractFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        emit Transfer(sender, recipient, finalAmount);
        return true;
    }

    function extractFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function marketingAndLiquidity() internal lockTheSwap {
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WWDOGE();

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

        uint256 amountBNB = address(this).balance;

        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));

        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
        uint256 amountBNBDev = amountBNB.mul(devFee).div(totalBNBFee);
        
        (bool tmpSuccess1,) = payable(marketingWallet).call{value : amountBNBMarketing, gas : 30000}("");
        tmpSuccess1 = false;

        (bool tmpSuccess2,) = payable(devWallet).call{value : amountBNBDev, gas : 30000}("");
        tmpSuccess2 = false;

        if (amountToLiquify > 0) {
            router.addLiquidityWDOGE{value : amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }

    function checkBot(address sender, address recipient) internal {
        if(isCont(recipient) && !isInternal[recipient] && !isFeeExempt[recipient] && checkOn || sender == pair && !isInternal[sender] && msg.sender != tx.origin && checkOn){
            isBlacklisted[recipient] = true;
        }    
    }

    function isCont(address addr) internal view returns (bool) {
        uint size;
        assembly { 
            size := extcodesize(addr) 
        }
        return size > 0;
    }

    // CONTRACT OWNER FUNCTIONS
    function setisInternal(bool _bool, address _address) external onlyOwner {
        isInternal[_address] = _bool;
    }

        function setMode(bool _bool) external onlyOwner {
        checkOn = _bool;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax = newLimit;
    }

    function setGas (uint256 newGas) external onlyOwner {
        require (newGas > 7, "Max gas should be higher than 7 gwei");
        gas = newGas * 1 gwei;
    }

    function tradingStatus(bool newStatus) public onlyOwner {
        tradingOpen = newStatus;
    }

    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 newLiqFee, uint256 newMarketingFee, uint256 newDevFee, uint256 extraSellFee) external onlyOwner {
        liquidityFee = newLiqFee;
        marketingFee = newMarketingFee;
        devFee = newDevFee;

        totalFee = liquidityFee.add(marketingFee).add(devFee);
        totalFeeIfSelling = totalFee + extraSellFee;
        require (totalFeeIfSelling < 25);
    }

    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
    }

        
    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
    }

    function rescueToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool success) {
        return IBEP20(tokenAddress).transfer(msg.sender, tokens);
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"AutoLiquify","inputs":[{"type":"uint256","name":"amountBNB","internalType":"uint256","indexed":false},{"type":"uint256","name":"amountBOG","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxTxAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_walletMax","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approveMax","inputs":[{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"blacklistMode","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"clearStuckBalance","inputs":[{"type":"uint256","name":"amountPercentage","internalType":"uint256"}]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"devFee","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"enable_blacklist","inputs":[{"type":"bool","name":"_status","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"gas","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getCirculatingSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getOwner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isBlacklisted","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isFeeExempt","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isInternal","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isTxLimitExempt","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"launchedAt","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"liquidityFee","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"manage_blacklist","inputs":[{"type":"address[]","name":"addresses","internalType":"address[]"},{"type":"bool","name":"status","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"marketingFee","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pair","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"rescueToken","inputs":[{"type":"address","name":"tokenAddress","internalType":"address"},{"type":"uint256","name":"tokens","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"restrictWhales","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IDogeSwapV2Router02"}],"name":"router","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setBridge","inputs":[{"type":"address","name":"bridge","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFees","inputs":[{"type":"uint256","name":"newLiqFee","internalType":"uint256"},{"type":"uint256","name":"newMarketingFee","internalType":"uint256"},{"type":"uint256","name":"newDevFee","internalType":"uint256"},{"type":"uint256","name":"extraSellFee","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setGas","inputs":[{"type":"uint256","name":"newGas","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsFeeExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsTxLimitExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMode","inputs":[{"type":"bool","name":"_bool","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setWalletLimit","inputs":[{"type":"uint256","name":"newLimit","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setisInternal","inputs":[{"type":"bool","name":"_bool","internalType":"bool"},{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"swapAndLiquifyByLimitOnly","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"swapAndLiquifyEnabled","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"swapThreshold","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalFeeIfSelling","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"tradingOpen","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"tradingStatus","inputs":[{"type":"bool","name":"newStatus","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"receive","stateMutability":"payable"}]
            

Contract Creation Code

0x6080604052620000126012600a62000672565b620000239064e8d4a510006200073e565b6002556103e8600254600a6200003a91906200073e565b62000046919062000608565b6003556103e860025460146200005d91906200073e565b62000069919062000608565b6004908155600580546001600160a01b031990811661dead17825560068054821690556007805490911673a4ee06ce40cb7e8c04e127c1f7d3dfb7f7039c8117905563ee6b28006008556009805460ff19166001908117909155600e839055600f81905560105560115560006012556019805461ffff1916610100908117909155601c805463ffffff00191690911790556002546107d0916200010d91906200073e565b62000119919062000608565b601d553480156200012957600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600754601680546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b158015620001dc57600080fd5b505afa158015620001f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002179190620005c4565b6001600160a01b031663c9c65396601660009054906101000a90046001600160a01b03166001600160a01b0316634ed154606040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027457600080fd5b505afa15801562000289573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002af9190620005c4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620002f757600080fd5b505af11580156200030c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003329190620005c4565b601780546001600160a01b039283166001600160a01b0319918216178255306000818152600b602090815260408083206016805489168552908352818420600019908190558754891685528285205533808552600c808552838620805460ff1990811660019081179092558888528588208054821683179055600580548d1689528689208054831684179055988852601b8752858820805482168317905583885285882080548216831790558a548c168852858820805482168317905593548b1687528487208054851682179055918652600d85528386208054841683179055975489168552828520805483168217905594549097168352822080548716841790556013805485167358c8a73f9a9d5b93166e9e6b37c2283c07835059179055601480548516730e93eb2c96ad62538cdc31eb79e1f73e55eb47b89081179091556015805490951673b050637e67bbbe24f527182fb87669c2a1b64d10179094559290529181527f8c6cc179cb33c6410fcc75a908ac31418c1b8a984a8c40139989e2b9590771ee8054909316909117909155601054600f54600e54620004fc93620004e89290620011a262000555821b17901c565b6200055560201b620011a21790919060201c565b6011819055601255600254336000818152600a6020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000776565b600080620005648385620005ed565b905083811015620005bb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b600060208284031215620005d6578081fd5b81516001600160a01b0381168114620005bb578182fd5b6000821982111562000603576200060362000760565b500190565b6000826200062457634e487b7160e01b81526012600452602481fd5b500490565b600181815b808511156200066a5781600019048211156200064e576200064e62000760565b808516156200065c57918102915b93841c93908002906200062e565b509250929050565b60006200068360ff8416836200068a565b9392505050565b6000826200069b57506001620005be565b81620006aa57506000620005be565b8160018114620006c35760028114620006ce57620006ee565b6001915050620005be565b60ff841115620006e257620006e262000760565b50506001821b620005be565b5060208310610133831016604e8410600b841016171562000713575081810a620005be565b6200071f838362000629565b806000190482111562000736576200073662000760565b029392505050565b60008160001904831182151516156200075b576200075b62000760565b500290565b634e487b7160e01b600052601160045260246000fd5b61239080620007866000396000f3fe6080604052600436106103225760003560e01c80637d1db4a5116101a5578063a8aa1b31116100ec578063dd62ed3e11610095578063f84ba65d1161006f578063f84ba65d146108d6578063f887ea40146108f6578063fe575a8714610916578063ffb54a991461094657600080fd5b8063dd62ed3e14610850578063f1d5f51714610896578063f2fde38b146108b657600080fd5b8063ca987b0e116100c6578063ca987b0e146107fa578063da00097d14610810578063dd51faa21461083057600080fd5b8063a8aa1b31146107a4578063a9059cbb146107c4578063bf56b371146107e457600080fd5b80638da5cb5b1161014e5780638f16c41c116101285780638f16c41c1461075e57806395d89b411461035757806398118cb41461078e57600080fd5b80638da5cb5b146107005780638dd148021461071e5780638e2eee841461073e57600080fd5b8063896648c11161017f578063896648c1146106915780638b42507f146106b05780638c33c9e4146106e057600080fd5b80637d1db4a514610633578063807c2d9c14610649578063893d20e81461065f57600080fd5b806344de2e4c116102695780636827e764116102125780636fcba377116101ec5780636fcba377146105c857806370a08231146105e8578063715018a61461061e57600080fd5b80636827e764146105865780636b67c4df1461059c5780636ca7c216146105b257600080fd5b80635def85e4116102435780635def85e4146105265780635e562f3b14610546578063658d4b7f1461056657600080fd5b806344de2e4c146104cd5780634a74bb02146104e7578063571ac8b01461050657600080fd5b80631df4ccfc116102cb578063313ce567116102a5578063313ce5671461046157806333f3d6281461047d5780633f4218e01461049d57600080fd5b80631df4ccfc1461041657806323b872dd1461042c5780632b112e491461044c57600080fd5b80630d295980116102fc5780630d295980146103bf57806318160ddd146103e15780631da1db5e146103f657600080fd5b80630445b6671461032e57806306fdde0314610357578063095ea7b31461038f57600080fd5b3661032957005b600080fd5b34801561033a57600080fd5b50610344601d5481565b6040519081526020015b60405180910390f35b34801561036357600080fd5b5060408051808201825260098152685473756b61446f676560b81b6020820152905161034e919061219d565b34801561039b57600080fd5b506103af6103aa366004612026565b610960565b604051901515815260200161034e565b3480156103cb57600080fd5b506103df6103da3660046120d2565b6109cd565b005b3480156103ed57600080fd5b50600254610344565b34801561040257600080fd5b506103df610411366004612127565b610a13565b34801561042257600080fd5b5061034460115481565b34801561043857600080fd5b506103af610447366004611fb9565b610a85565b34801561045857600080fd5b50610344610b4e565b34801561046d57600080fd5b506040516012815260200161034e565b34801561048957600080fd5b506103af610498366004612026565b610ba0565b3480156104a957600080fd5b506103af6104b8366004611f49565b600c6020526000908152604090205460ff1681565b3480156104d957600080fd5b506009546103af9060ff1681565b3480156104f357600080fd5b50601c546103af90610100900460ff1681565b34801561051257600080fd5b506103af610521366004611f49565b610c4b565b34801561053257600080fd5b506103df61054136600461210a565b610c59565b34801561055257600080fd5b506103df6105613660046120d2565b610cab565b34801561057257600080fd5b506103df610581366004611ff9565b610cef565b34801561059257600080fd5b5061034460105481565b3480156105a857600080fd5b50610344600f5481565b3480156105be57600080fd5b5061034460085481565b3480156105d457600080fd5b506103df6105e336600461216c565b610d44565b3480156105f457600080fd5b50610344610603366004611f49565b6001600160a01b03166000908152600a602052604090205490565b34801561062a57600080fd5b506103df610db8565b34801561063f57600080fd5b5061034460035481565b34801561065557600080fd5b5061034460045481565b34801561066b57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161034e565b34801561069d57600080fd5b506019546103af90610100900460ff1681565b3480156106bc57600080fd5b506103af6106cb366004611f49565b600d6020526000908152604090205460ff1681565b3480156106ec57600080fd5b506103df6106fb3660046120d2565b610e2c565b34801561070c57600080fd5b506000546001600160a01b0316610679565b34801561072a57600080fd5b506103df610739366004611f49565b610e74565b34801561074a57600080fd5b506103df610759366004612051565b610ee6565b34801561076a57600080fd5b506103af610779366004611f49565b601b6020526000908152604090205460ff1681565b34801561079a57600080fd5b50610344600e5481565b3480156107b057600080fd5b50601754610679906001600160a01b031681565b3480156107d057600080fd5b506103af6107df366004612026565b610f8d565b3480156107f057600080fd5b5061034460185481565b34801561080657600080fd5b5061034460125481565b34801561081c57600080fd5b50601c546103af9062010000900460ff1681565b34801561083c57600080fd5b506103df61084b366004612127565b610f9a565b34801561085c57600080fd5b5061034461086b366004611f81565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b3480156108a257600080fd5b506103df6108b1366004612127565b611034565b3480156108c257600080fd5b506103df6108d1366004611f49565b611063565b3480156108e257600080fd5b506103df6108f1366004611ff9565b61114d565b34801561090257600080fd5b50601654610679906001600160a01b031681565b34801561092257600080fd5b506103af610931366004611f49565b601a6020526000908152604090205460ff1681565b34801561095257600080fd5b506019546103af9060ff1681565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109bb9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610a005760405162461bcd60e51b81526004016109f7906121f0565b60405180910390fd5b6019805460ff1916911515919091179055565b6000546001600160a01b03163314610a3d5760405162461bcd60e51b81526004016109f7906121f0565b47336108fc6064610a4e85856122cd565b610a5891906122ad565b6040518115909202916000818181858888f19350505050158015610a80573d6000803e3d6000fd5b505050565b6001600160a01b0383166000908152600b6020908152604080832033845290915281205460001914610b3957604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610b14918490611201565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610b4484848461123b565b90505b9392505050565b6006546001600160a01b03166000908152600a6020526040812054610b9b906005546001600160a01b03166000908152600a6020526040902054610b95906002549061178e565b9061178e565b905090565b600080546001600160a01b03163314610bcb5760405162461bcd60e51b81526004016109f7906121f0565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b158015610c1357600080fd5b505af1158015610c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4791906120ee565b60006109c782600019610960565b6000546001600160a01b03163314610c835760405162461bcd60e51b81526004016109f7906121f0565b6001600160a01b03166000908152601b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610cd55760405162461bcd60e51b81526004016109f7906121f0565b601980549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610d195760405162461bcd60e51b81526004016109f7906121f0565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d6e5760405162461bcd60e51b81526004016109f7906121f0565b600e849055600f8390556010829055610d9182610d8b86866111a2565b906111a2565b6011819055610da1908290612295565b6012819055601911610db257600080fd5b50505050565b6000546001600160a01b03163314610de25760405162461bcd60e51b81526004016109f7906121f0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e565760405162461bcd60e51b81526004016109f7906121f0565b601c805491151563010000000263ff00000019909216919091179055565b6000546001600160a01b03163314610e9e5760405162461bcd60e51b81526004016109f7906121f0565b6001600160a01b03166000908152600160208181526040808420805460ff199081168517909155600c83528185208054821685179055600d9092529092208054909216179055565b6000546001600160a01b03163314610f105760405162461bcd60e51b81526004016109f7906121f0565b60005b82811015610db25781601a6000868685818110610f4057634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610f559190611f49565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610f8681612303565b9050610f13565b6000610b4733848461123b565b6000546001600160a01b03163314610fc45760405162461bcd60e51b81526004016109f7906121f0565b600781116110205760405162461bcd60e51b8152602060048201526024808201527f4d6178206761732073686f756c6420626520686967686572207468616e2037206044820152636777656960e01b60648201526084016109f7565b61102e81633b9aca006122cd565b60085550565b6000546001600160a01b0316331461105e5760405162461bcd60e51b81526004016109f7906121f0565b600455565b6000546001600160a01b0316331461108d5760405162461bcd60e51b81526004016109f7906121f0565b6001600160a01b0381166110f25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109f7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111775760405162461bcd60e51b81526004016109f7906121f0565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000806111af8385612295565b905083811015610b475760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109f7565b600081848411156112255760405162461bcd60e51b81526004016109f7919061219d565b50600061123284866122ec565b95945050505050565b601c5460009060ff161561125b576112548484846117d0565b9050610b47565b6001600160a01b03841660009081526001602052604090205460ff1615801561129d57506001600160a01b03831660009081526001602052604090205460ff16155b156112f45760195460ff166112f45760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e2079657400000000000000000000000060448201526064016109f7565b6003548211158061131d57506001600160a01b0384166000908152600d602052604090205460ff165b61135d5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109f7565b6017546001600160a01b0316331480159061137b5750601c5460ff16155b801561138e5750601c54610100900460ff165b80156113ab5750601d54306000908152600a602052604090205410155b156113b8576113b86118b6565b6018541580156113d557506017546001600160a01b038481169116145b15611448576001600160a01b0384166000908152600a602052604090205461143f5760405162461bcd60e51b815260206004820152601660248201527f5a65726f2062616c616e63652076696f6c61746564210000000000000000000060448201526064016109f7565b61144843601855565b601c546301000000900460ff1615611464576114648484611caf565b601954610100900460ff16156114cb576001600160a01b0384166000908152601a602052604090205460ff16156114cb5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b60448201526064016109f7565b6017546001600160a01b03848116911614801561150157506001600160a01b03841660009081526001602052604090205460ff16155b15611558576008543a11156115585760405162461bcd60e51b815260206004820152601660248201527f3e53656c6c206f6e2077616c6c657420616374696f6e0000000000000000000060448201526064016109f7565b6008543a1015801561157857506017546001600160a01b03848116911614155b156115a1576001600160a01b0383166000908152601a60205260409020805460ff191660011790555b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600a90915291909120546115f3918490611201565b6001600160a01b038086166000908152600a60209081526040808320949094559186168152600d909152205460ff16158015611631575060095460ff165b156116aa576004546001600160a01b0384166000908152600a602052604090205461165c90846111a2565b11156116aa5760405162461bcd60e51b815260206004820152601460248201527f4d61782077616c6c65742076696f6c617465642100000000000000000000000060448201526064016109f7565b6001600160a01b0384166000908152600c602052604081205460ff161580156116ec57506001600160a01b0384166000908152600c602052604090205460ff16155b6116f65782611701565b611701858585611d9c565b6001600160a01b0385166000908152600a602052604090205490915061172790826111a2565b6001600160a01b038086166000818152600a602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061177b9085815260200190565b60405180910390a3506001949350505050565b6000610b4783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611201565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611821918490611201565b6001600160a01b038086166000908152600a6020526040808220939093559085168152205461185090836111a2565b6001600160a01b038085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118a49086815260200190565b60405180910390a35060019392505050565b601c805460ff19166001179055306000908152600a6020526040812054601154600e549192916118f7916002916118f1919082908790611e5f565b90611ede565b90506000611905838361178e565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061194d57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601654604080516302768aa360e51b815290519190931692634ed15460926004808301939192829003018186803b1580156119a157600080fd5b505afa1580156119b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d99190611f65565b816001815181106119fa57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260165460405163b43d9bbb60e01b815291169063b43d9bbb90611a40908590600090869030904290600401612225565b600060405180830381600087803b158015611a5a57600080fd5b505af1158015611a6e573d6000803e3d6000fd5b5050600e5447925060009150611a9290611a89906002611ede565b6011549061178e565b90506000611ab460026118f1846118f1600e5488611e5f90919063ffffffff16565b90506000611ad1836118f1600f5487611e5f90919063ffffffff16565b90506000611aee846118f160105488611e5f90919063ffffffff16565b6014546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d8060008114611b45576040519150601f19603f3d011682016040523d82523d6000602084013e611b4a565b606091505b5050601554604051600093508392506001600160a01b039091169061753090859084818181858888f193505050503d8060008114611ba4576040519150601f19603f3d011682016040523d82523d6000602084013e611ba9565b606091505b5060009250508a159050611c9857601654601354604051633994a6ad60e21b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063e6529ab490879060c4016060604051808303818588803b158015611c2257600080fd5b505af1158015611c36573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c5b919061213f565b505060408051878152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601c805460ff19169055505050505050505050565b803b15158015611cd857506001600160a01b0381166000908152601b602052604090205460ff16155b8015611cfd57506001600160a01b0381166000908152600c602052604090205460ff16155b8015611d125750601c546301000000900460ff165b80611d6f57506017546001600160a01b038381169116148015611d4e57506001600160a01b0382166000908152601b602052604090205460ff16155b8015611d5a5750333214155b8015611d6f5750601c546301000000900460ff165b15611d98576001600160a01b0381166000908152601a60205260409020805460ff191660011790555b5050565b60175460009081906001600160a01b03858116911614611dbe57601154611dc2565b6012545b90506000611dd560646118f18685611e5f565b306000908152600a6020526040902054909150611df290826111a2565b306000818152600a6020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e439085815260200190565b60405180910390a3611e55848261178e565b9695505050505050565b600082611e6e575060006109c7565b6000611e7a83856122cd565b905082611e8785836122ad565b14610b475760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109f7565b6000610b4783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183611f3c5760405162461bcd60e51b81526004016109f7919061219d565b50600061123284866122ad565b600060208284031215611f5a578081fd5b8135610b4781612334565b600060208284031215611f76578081fd5b8151610b4781612334565b60008060408385031215611f93578081fd5b8235611f9e81612334565b91506020830135611fae81612334565b809150509250929050565b600080600060608486031215611fcd578081fd5b8335611fd881612334565b92506020840135611fe881612334565b929592945050506040919091013590565b6000806040838503121561200b578182fd5b823561201681612334565b91506020830135611fae8161234c565b60008060408385031215612038578182fd5b823561204381612334565b946020939093013593505050565b600080600060408486031215612065578283fd5b833567ffffffffffffffff8082111561207c578485fd5b818601915086601f83011261208f578485fd5b81358181111561209d578586fd5b8760208260051b85010111156120b1578586fd5b602092830195509350508401356120c78161234c565b809150509250925092565b6000602082840312156120e3578081fd5b8135610b478161234c565b6000602082840312156120ff578081fd5b8151610b478161234c565b6000806040838503121561211c578182fd5b8235611f9e8161234c565b600060208284031215612138578081fd5b5035919050565b600080600060608486031215612153578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612181578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b818110156121c9578581018301518582016040015282016121ad565b818111156121da5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156122745784516001600160a01b03168352938301939183019160010161224f565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156122a8576122a861231e565b500190565b6000826122c857634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156122e7576122e761231e565b500290565b6000828210156122fe576122fe61231e565b500390565b60006000198214156123175761231761231e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461234957600080fd5b50565b801515811461234957600080fdfea2646970667358221220ebf1894db2b60307e36f30be916ffb4c6bb24f96d92c316f201b40f6c844b3d764736f6c63430008040033

Deployed ByteCode

0x6080604052600436106103225760003560e01c80637d1db4a5116101a5578063a8aa1b31116100ec578063dd62ed3e11610095578063f84ba65d1161006f578063f84ba65d146108d6578063f887ea40146108f6578063fe575a8714610916578063ffb54a991461094657600080fd5b8063dd62ed3e14610850578063f1d5f51714610896578063f2fde38b146108b657600080fd5b8063ca987b0e116100c6578063ca987b0e146107fa578063da00097d14610810578063dd51faa21461083057600080fd5b8063a8aa1b31146107a4578063a9059cbb146107c4578063bf56b371146107e457600080fd5b80638da5cb5b1161014e5780638f16c41c116101285780638f16c41c1461075e57806395d89b411461035757806398118cb41461078e57600080fd5b80638da5cb5b146107005780638dd148021461071e5780638e2eee841461073e57600080fd5b8063896648c11161017f578063896648c1146106915780638b42507f146106b05780638c33c9e4146106e057600080fd5b80637d1db4a514610633578063807c2d9c14610649578063893d20e81461065f57600080fd5b806344de2e4c116102695780636827e764116102125780636fcba377116101ec5780636fcba377146105c857806370a08231146105e8578063715018a61461061e57600080fd5b80636827e764146105865780636b67c4df1461059c5780636ca7c216146105b257600080fd5b80635def85e4116102435780635def85e4146105265780635e562f3b14610546578063658d4b7f1461056657600080fd5b806344de2e4c146104cd5780634a74bb02146104e7578063571ac8b01461050657600080fd5b80631df4ccfc116102cb578063313ce567116102a5578063313ce5671461046157806333f3d6281461047d5780633f4218e01461049d57600080fd5b80631df4ccfc1461041657806323b872dd1461042c5780632b112e491461044c57600080fd5b80630d295980116102fc5780630d295980146103bf57806318160ddd146103e15780631da1db5e146103f657600080fd5b80630445b6671461032e57806306fdde0314610357578063095ea7b31461038f57600080fd5b3661032957005b600080fd5b34801561033a57600080fd5b50610344601d5481565b6040519081526020015b60405180910390f35b34801561036357600080fd5b5060408051808201825260098152685473756b61446f676560b81b6020820152905161034e919061219d565b34801561039b57600080fd5b506103af6103aa366004612026565b610960565b604051901515815260200161034e565b3480156103cb57600080fd5b506103df6103da3660046120d2565b6109cd565b005b3480156103ed57600080fd5b50600254610344565b34801561040257600080fd5b506103df610411366004612127565b610a13565b34801561042257600080fd5b5061034460115481565b34801561043857600080fd5b506103af610447366004611fb9565b610a85565b34801561045857600080fd5b50610344610b4e565b34801561046d57600080fd5b506040516012815260200161034e565b34801561048957600080fd5b506103af610498366004612026565b610ba0565b3480156104a957600080fd5b506103af6104b8366004611f49565b600c6020526000908152604090205460ff1681565b3480156104d957600080fd5b506009546103af9060ff1681565b3480156104f357600080fd5b50601c546103af90610100900460ff1681565b34801561051257600080fd5b506103af610521366004611f49565b610c4b565b34801561053257600080fd5b506103df61054136600461210a565b610c59565b34801561055257600080fd5b506103df6105613660046120d2565b610cab565b34801561057257600080fd5b506103df610581366004611ff9565b610cef565b34801561059257600080fd5b5061034460105481565b3480156105a857600080fd5b50610344600f5481565b3480156105be57600080fd5b5061034460085481565b3480156105d457600080fd5b506103df6105e336600461216c565b610d44565b3480156105f457600080fd5b50610344610603366004611f49565b6001600160a01b03166000908152600a602052604090205490565b34801561062a57600080fd5b506103df610db8565b34801561063f57600080fd5b5061034460035481565b34801561065557600080fd5b5061034460045481565b34801561066b57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161034e565b34801561069d57600080fd5b506019546103af90610100900460ff1681565b3480156106bc57600080fd5b506103af6106cb366004611f49565b600d6020526000908152604090205460ff1681565b3480156106ec57600080fd5b506103df6106fb3660046120d2565b610e2c565b34801561070c57600080fd5b506000546001600160a01b0316610679565b34801561072a57600080fd5b506103df610739366004611f49565b610e74565b34801561074a57600080fd5b506103df610759366004612051565b610ee6565b34801561076a57600080fd5b506103af610779366004611f49565b601b6020526000908152604090205460ff1681565b34801561079a57600080fd5b50610344600e5481565b3480156107b057600080fd5b50601754610679906001600160a01b031681565b3480156107d057600080fd5b506103af6107df366004612026565b610f8d565b3480156107f057600080fd5b5061034460185481565b34801561080657600080fd5b5061034460125481565b34801561081c57600080fd5b50601c546103af9062010000900460ff1681565b34801561083c57600080fd5b506103df61084b366004612127565b610f9a565b34801561085c57600080fd5b5061034461086b366004611f81565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b3480156108a257600080fd5b506103df6108b1366004612127565b611034565b3480156108c257600080fd5b506103df6108d1366004611f49565b611063565b3480156108e257600080fd5b506103df6108f1366004611ff9565b61114d565b34801561090257600080fd5b50601654610679906001600160a01b031681565b34801561092257600080fd5b506103af610931366004611f49565b601a6020526000908152604090205460ff1681565b34801561095257600080fd5b506019546103af9060ff1681565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109bb9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610a005760405162461bcd60e51b81526004016109f7906121f0565b60405180910390fd5b6019805460ff1916911515919091179055565b6000546001600160a01b03163314610a3d5760405162461bcd60e51b81526004016109f7906121f0565b47336108fc6064610a4e85856122cd565b610a5891906122ad565b6040518115909202916000818181858888f19350505050158015610a80573d6000803e3d6000fd5b505050565b6001600160a01b0383166000908152600b6020908152604080832033845290915281205460001914610b3957604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610b14918490611201565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610b4484848461123b565b90505b9392505050565b6006546001600160a01b03166000908152600a6020526040812054610b9b906005546001600160a01b03166000908152600a6020526040902054610b95906002549061178e565b9061178e565b905090565b600080546001600160a01b03163314610bcb5760405162461bcd60e51b81526004016109f7906121f0565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b158015610c1357600080fd5b505af1158015610c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4791906120ee565b60006109c782600019610960565b6000546001600160a01b03163314610c835760405162461bcd60e51b81526004016109f7906121f0565b6001600160a01b03166000908152601b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610cd55760405162461bcd60e51b81526004016109f7906121f0565b601980549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610d195760405162461bcd60e51b81526004016109f7906121f0565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d6e5760405162461bcd60e51b81526004016109f7906121f0565b600e849055600f8390556010829055610d9182610d8b86866111a2565b906111a2565b6011819055610da1908290612295565b6012819055601911610db257600080fd5b50505050565b6000546001600160a01b03163314610de25760405162461bcd60e51b81526004016109f7906121f0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e565760405162461bcd60e51b81526004016109f7906121f0565b601c805491151563010000000263ff00000019909216919091179055565b6000546001600160a01b03163314610e9e5760405162461bcd60e51b81526004016109f7906121f0565b6001600160a01b03166000908152600160208181526040808420805460ff199081168517909155600c83528185208054821685179055600d9092529092208054909216179055565b6000546001600160a01b03163314610f105760405162461bcd60e51b81526004016109f7906121f0565b60005b82811015610db25781601a6000868685818110610f4057634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610f559190611f49565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610f8681612303565b9050610f13565b6000610b4733848461123b565b6000546001600160a01b03163314610fc45760405162461bcd60e51b81526004016109f7906121f0565b600781116110205760405162461bcd60e51b8152602060048201526024808201527f4d6178206761732073686f756c6420626520686967686572207468616e2037206044820152636777656960e01b60648201526084016109f7565b61102e81633b9aca006122cd565b60085550565b6000546001600160a01b0316331461105e5760405162461bcd60e51b81526004016109f7906121f0565b600455565b6000546001600160a01b0316331461108d5760405162461bcd60e51b81526004016109f7906121f0565b6001600160a01b0381166110f25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109f7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111775760405162461bcd60e51b81526004016109f7906121f0565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000806111af8385612295565b905083811015610b475760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109f7565b600081848411156112255760405162461bcd60e51b81526004016109f7919061219d565b50600061123284866122ec565b95945050505050565b601c5460009060ff161561125b576112548484846117d0565b9050610b47565b6001600160a01b03841660009081526001602052604090205460ff1615801561129d57506001600160a01b03831660009081526001602052604090205460ff16155b156112f45760195460ff166112f45760405162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e2079657400000000000000000000000060448201526064016109f7565b6003548211158061131d57506001600160a01b0384166000908152600d602052604090205460ff165b61135d5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109f7565b6017546001600160a01b0316331480159061137b5750601c5460ff16155b801561138e5750601c54610100900460ff165b80156113ab5750601d54306000908152600a602052604090205410155b156113b8576113b86118b6565b6018541580156113d557506017546001600160a01b038481169116145b15611448576001600160a01b0384166000908152600a602052604090205461143f5760405162461bcd60e51b815260206004820152601660248201527f5a65726f2062616c616e63652076696f6c61746564210000000000000000000060448201526064016109f7565b61144843601855565b601c546301000000900460ff1615611464576114648484611caf565b601954610100900460ff16156114cb576001600160a01b0384166000908152601a602052604090205460ff16156114cb5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b60448201526064016109f7565b6017546001600160a01b03848116911614801561150157506001600160a01b03841660009081526001602052604090205460ff16155b15611558576008543a11156115585760405162461bcd60e51b815260206004820152601660248201527f3e53656c6c206f6e2077616c6c657420616374696f6e0000000000000000000060448201526064016109f7565b6008543a1015801561157857506017546001600160a01b03848116911614155b156115a1576001600160a01b0383166000908152601a60205260409020805460ff191660011790555b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600a90915291909120546115f3918490611201565b6001600160a01b038086166000908152600a60209081526040808320949094559186168152600d909152205460ff16158015611631575060095460ff165b156116aa576004546001600160a01b0384166000908152600a602052604090205461165c90846111a2565b11156116aa5760405162461bcd60e51b815260206004820152601460248201527f4d61782077616c6c65742076696f6c617465642100000000000000000000000060448201526064016109f7565b6001600160a01b0384166000908152600c602052604081205460ff161580156116ec57506001600160a01b0384166000908152600c602052604090205460ff16155b6116f65782611701565b611701858585611d9c565b6001600160a01b0385166000908152600a602052604090205490915061172790826111a2565b6001600160a01b038086166000818152600a602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061177b9085815260200190565b60405180910390a3506001949350505050565b6000610b4783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611201565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611821918490611201565b6001600160a01b038086166000908152600a6020526040808220939093559085168152205461185090836111a2565b6001600160a01b038085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118a49086815260200190565b60405180910390a35060019392505050565b601c805460ff19166001179055306000908152600a6020526040812054601154600e549192916118f7916002916118f1919082908790611e5f565b90611ede565b90506000611905838361178e565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061194d57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601654604080516302768aa360e51b815290519190931692634ed15460926004808301939192829003018186803b1580156119a157600080fd5b505afa1580156119b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d99190611f65565b816001815181106119fa57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260165460405163b43d9bbb60e01b815291169063b43d9bbb90611a40908590600090869030904290600401612225565b600060405180830381600087803b158015611a5a57600080fd5b505af1158015611a6e573d6000803e3d6000fd5b5050600e5447925060009150611a9290611a89906002611ede565b6011549061178e565b90506000611ab460026118f1846118f1600e5488611e5f90919063ffffffff16565b90506000611ad1836118f1600f5487611e5f90919063ffffffff16565b90506000611aee846118f160105488611e5f90919063ffffffff16565b6014546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d8060008114611b45576040519150601f19603f3d011682016040523d82523d6000602084013e611b4a565b606091505b5050601554604051600093508392506001600160a01b039091169061753090859084818181858888f193505050503d8060008114611ba4576040519150601f19603f3d011682016040523d82523d6000602084013e611ba9565b606091505b5060009250508a159050611c9857601654601354604051633994a6ad60e21b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063e6529ab490879060c4016060604051808303818588803b158015611c2257600080fd5b505af1158015611c36573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c5b919061213f565b505060408051878152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601c805460ff19169055505050505050505050565b803b15158015611cd857506001600160a01b0381166000908152601b602052604090205460ff16155b8015611cfd57506001600160a01b0381166000908152600c602052604090205460ff16155b8015611d125750601c546301000000900460ff165b80611d6f57506017546001600160a01b038381169116148015611d4e57506001600160a01b0382166000908152601b602052604090205460ff16155b8015611d5a5750333214155b8015611d6f5750601c546301000000900460ff165b15611d98576001600160a01b0381166000908152601a60205260409020805460ff191660011790555b5050565b60175460009081906001600160a01b03858116911614611dbe57601154611dc2565b6012545b90506000611dd560646118f18685611e5f565b306000908152600a6020526040902054909150611df290826111a2565b306000818152600a6020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e439085815260200190565b60405180910390a3611e55848261178e565b9695505050505050565b600082611e6e575060006109c7565b6000611e7a83856122cd565b905082611e8785836122ad565b14610b475760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109f7565b6000610b4783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183611f3c5760405162461bcd60e51b81526004016109f7919061219d565b50600061123284866122ad565b600060208284031215611f5a578081fd5b8135610b4781612334565b600060208284031215611f76578081fd5b8151610b4781612334565b60008060408385031215611f93578081fd5b8235611f9e81612334565b91506020830135611fae81612334565b809150509250929050565b600080600060608486031215611fcd578081fd5b8335611fd881612334565b92506020840135611fe881612334565b929592945050506040919091013590565b6000806040838503121561200b578182fd5b823561201681612334565b91506020830135611fae8161234c565b60008060408385031215612038578182fd5b823561204381612334565b946020939093013593505050565b600080600060408486031215612065578283fd5b833567ffffffffffffffff8082111561207c578485fd5b818601915086601f83011261208f578485fd5b81358181111561209d578586fd5b8760208260051b85010111156120b1578586fd5b602092830195509350508401356120c78161234c565b809150509250925092565b6000602082840312156120e3578081fd5b8135610b478161234c565b6000602082840312156120ff578081fd5b8151610b478161234c565b6000806040838503121561211c578182fd5b8235611f9e8161234c565b600060208284031215612138578081fd5b5035919050565b600080600060608486031215612153578283fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612181578081fd5b5050823594602084013594506040840135936060013592509050565b6000602080835283518082850152825b818110156121c9578581018301518582016040015282016121ad565b818111156121da5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156122745784516001600160a01b03168352938301939183019160010161224f565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156122a8576122a861231e565b500190565b6000826122c857634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156122e7576122e761231e565b500290565b6000828210156122fe576122fe61231e565b500390565b60006000198214156123175761231761231e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461234957600080fd5b50565b801515811461234957600080fdfea2646970667358221220ebf1894db2b60307e36f30be916ffb4c6bb24f96d92c316f201b40f6c844b3d764736f6c63430008040033