Contract Address Details

0x1df5c9B7789BD1416d005C15A42762481C95eDC2

Token
DogeTools (DTools)
Creator
0xd86132–a313b0 at 0x444539–933a84
Balance
13.447327076617877859 Doge
Tokens
Fetching tokens...
Transactions
2,213 Transactions
Transfers
16,185 Transfers
Gas Used
101,946,007
Last Balance Update
25363194
Contract name:
DogeTools




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




EVM Version
default




Verified at
2022-08-20T20:58:53.911229Z

Contract source code

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

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

    uint8 constant _decimals = 18;

    uint256 _totalSupply = 10000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply * 20 / 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 = "DogeTools";
    string constant _symbol = "DTools";

    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 = 2;
    uint256 public marketingFee = 7;
    uint256 public devFee = 1;

    uint256 public totalFee = 0;
    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 = 0xD86132b33668aDf3e1C2A28D07849FDc17a313B0;
        marketingWallet = 0xcc28B073D0FfEf1A2CA2dE8A75C5373f7c6eac9d;
        devWallet = 0xA08525E5b2ab1894ad1239447Ba94d5a16E86100;
        
        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

0x60806040526012600a6200001491906200105a565b6298968062000024919062001197565b6002556103e860146002546200003b919062001197565b62000047919062000fc7565b6003556103e860146002546200005e919062001197565b6200006a919062000fc7565b60045561dead600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a4ee06ce40cb7e8c04e127c1f7d3dfb7f7039c81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555063ee6b28006008556001600960006101000a81548160ff0219169083151502179055506002600e556007600f556001601055600060115560006012556000601960006101000a81548160ff0219169083151502179055506001601960016101000a81548160ff0219169083151502179055506001601c60016101000a81548160ff0219169083151502179055506000601c60026101000a81548160ff0219169083151502179055506000601c60036101000a81548160ff0219169083151502179055506107d060046002546200021e919062001197565b6200022a919062000fc7565b601d553480156200023a57600080fd5b5060006200024d62000df660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200042f57600080fd5b505afa15801562000444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046a919062000e78565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b815260040160206040518083038186803b158015620004ee57600080fd5b505afa15801562000503573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000529919062000e78565b306040518363ffffffff1660e01b81526004016200054992919062000eed565b602060405180830381600087803b1580156200056457600080fd5b505af115801562000579573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200059f919062000e78565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555073d86132b33668adf3e1c2a28d07849fdc17a313b0601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cc28b073d0ffef1a2ca2de8a75c5373f7c6eac9d601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a08525e5b2ab1894ad1239447ba94d5a16e86100601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000d3160105462000d1d600f54600e5462000dfe60201b620021fd1790919060201c565b62000dfe60201b620021fd1790919060201c565b601181905550601154601281905550600254600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60025460405162000de8919062000f3c565b60405180910390a3620012f1565b600033905090565b600080828462000e0f919062000f6a565b90508381101562000e57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e4e9062000f1a565b60405180910390fd5b8091505092915050565b60008151905062000e7281620012d7565b92915050565b60006020828403121562000e8b57600080fd5b600062000e9b8482850162000e61565b91505092915050565b62000eaf81620011f8565b82525050565b600062000ec4601b8362000f59565b915062000ed182620012ae565b602082019050919050565b62000ee7816200122c565b82525050565b600060408201905062000f04600083018562000ea4565b62000f13602083018462000ea4565b9392505050565b6000602082019050818103600083015262000f358162000eb5565b9050919050565b600060208201905062000f53600083018462000edc565b92915050565b600082825260208201905092915050565b600062000f77826200122c565b915062000f84836200122c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000fbc5762000fbb62001243565b5b828201905092915050565b600062000fd4826200122c565b915062000fe1836200122c565b92508262000ff45762000ff362001272565b5b828204905092915050565b6000808291508390505b6001851115620010515780860481111562001029576200102862001243565b5b6001851615620010395780820291505b80810290506200104985620012a1565b945062001009565b94509492505050565b600062001067826200122c565b9150620010748362001236565b9250620010a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620010ab565b905092915050565b600082620010bd576001905062001190565b81620010cd576000905062001190565b8160018114620010e65760028114620010f15762001127565b600191505062001190565b60ff84111562001106576200110562001243565b5b8360020a91508482111562001120576200111f62001243565b5b5062001190565b5060208310610133831016604e8410600b8410161715620011615782820a9050838111156200115b576200115a62001243565b5b62001190565b62001170848484600162000fff565b925090508184048111156200118a576200118962001243565b5b81810290505b9392505050565b6000620011a4826200122c565b9150620011b1836200122c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620011ed57620011ec62001243565b5b828202905092915050565b600062001205826200120c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b620012e281620011f8565b8114620012ee57600080fd5b50565b61498580620013016000396000f3fe6080604052600436106102b25760003560e01c80637d1db4a511610175578063a8aa1b31116100dc578063dd62ed3e11610095578063f84ba65d1161006f578063f84ba65d14610ad5578063f887ea4014610afe578063fe575a8714610b29578063ffb54a9914610b66576102b9565b8063dd62ed3e14610a46578063f1d5f51714610a83578063f2fde38b14610aac576102b9565b8063a8aa1b3114610934578063a9059cbb1461095f578063bf56b3711461099c578063ca987b0e146109c7578063da00097d146109f2578063dd51faa214610a1d576102b9565b80638da5cb5b1161012e5780638da5cb5b146108245780638dd148021461084f5780638e2eee84146108785780638f16c41c146108a157806395d89b41146108de57806398118cb414610909576102b9565b80637d1db4a514610712578063807c2d9c1461073d578063893d20e814610768578063896648c1146107935780638b42507f146107be5780638c33c9e4146107fb576102b9565b806344de2e4c116102195780636827e764116101d25780636827e764146106145780636b67c4df1461063f5780636ca7c2161461066a5780636fcba3771461069557806370a08231146106be578063715018a6146106fb576102b9565b806344de2e4c146105065780634a74bb0214610531578063571ac8b01461055c5780635def85e4146105995780635e562f3b146105c2578063658d4b7f146105eb576102b9565b80631df4ccfc1161026b5780631df4ccfc146103ce57806323b872dd146103f95780632b112e4914610436578063313ce5671461046157806333f3d6281461048c5780633f4218e0146104c9576102b9565b80630445b667146102be57806306fdde03146102e9578063095ea7b3146103145780630d2959801461035157806318160ddd1461037a5780631da1db5e146103a5576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b91565b6040516102e0919061432e565b60405180910390f35b3480156102f557600080fd5b506102fe610b97565b60405161030b91906141ac565b60405180910390f35b34801561032057600080fd5b5061033b60048036038101906103369190613c03565b610bd4565b6040516103489190614176565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190613c97565b610cc6565b005b34801561038657600080fd5b5061038f610d78565b60405161039c919061432e565b60405180910390f35b3480156103b157600080fd5b506103cc60048036038101906103c79190613d25565b610d82565b005b3480156103da57600080fd5b506103e3610e7e565b6040516103f0919061432e565b60405180910390f35b34801561040557600080fd5b50610420600480360381019061041b9190613b78565b610e84565b60405161042d9190614176565b60405180910390f35b34801561044257600080fd5b5061044b611084565b604051610458919061432e565b60405180910390f35b34801561046d57600080fd5b50610476611106565b60405161048391906143cc565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae9190613c03565b61110f565b6040516104c09190614176565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb9190613aea565b61123b565b6040516104fd9190614176565b60405180910390f35b34801561051257600080fd5b5061051b61125b565b6040516105289190614176565b60405180910390f35b34801561053d57600080fd5b5061054661126e565b6040516105539190614176565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190613aea565b611281565b6040516105909190614176565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190613ce9565b6112b4565b005b3480156105ce57600080fd5b506105e960048036038101906105e49190613c97565b6113a4565b005b3480156105f757600080fd5b50610612600480360381019061060d9190613bc7565b611456565b005b34801561062057600080fd5b50610629611546565b604051610636919061432e565b60405180910390f35b34801561064b57600080fd5b5061065461154c565b604051610661919061432e565b60405180910390f35b34801561067657600080fd5b5061067f611552565b60405161068c919061432e565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b79190613d9d565b611558565b005b3480156106ca57600080fd5b506106e560048036038101906106e09190613aea565b61165c565b6040516106f2919061432e565b60405180910390f35b34801561070757600080fd5b506107106116a5565b005b34801561071e57600080fd5b506107276117f8565b604051610734919061432e565b60405180910390f35b34801561074957600080fd5b506107526117fe565b60405161075f919061432e565b60405180910390f35b34801561077457600080fd5b5061077d611804565b60405161078a91906140d1565b60405180910390f35b34801561079f57600080fd5b506107a8611813565b6040516107b59190614176565b60405180910390f35b3480156107ca57600080fd5b506107e560048036038101906107e09190613aea565b611826565b6040516107f29190614176565b60405180910390f35b34801561080757600080fd5b50610822600480360381019061081d9190613c97565b611846565b005b34801561083057600080fd5b506108396118f8565b60405161084691906140d1565b60405180910390f35b34801561085b57600080fd5b5061087660048036038101906108719190613aea565b611921565b005b34801561088457600080fd5b5061089f600480360381019061089a9190613c3f565b611ac0565b005b3480156108ad57600080fd5b506108c860048036038101906108c39190613aea565b611c1e565b6040516108d59190614176565b60405180910390f35b3480156108ea57600080fd5b506108f3611c3e565b60405161090091906141ac565b60405180910390f35b34801561091557600080fd5b5061091e611c7b565b60405161092b919061432e565b60405180910390f35b34801561094057600080fd5b50610949611c81565b60405161095691906140d1565b60405180910390f35b34801561096b57600080fd5b5061098660048036038101906109819190613c03565b611ca7565b6040516109939190614176565b60405180910390f35b3480156109a857600080fd5b506109b1611cbc565b6040516109be919061432e565b60405180910390f35b3480156109d357600080fd5b506109dc611cc2565b6040516109e9919061432e565b60405180910390f35b3480156109fe57600080fd5b50610a07611cc8565b604051610a149190614176565b60405180910390f35b348015610a2957600080fd5b50610a446004803603810190610a3f9190613d25565b611cdb565b005b348015610a5257600080fd5b50610a6d6004803603810190610a689190613b3c565b611dcc565b604051610a7a919061432e565b60405180910390f35b348015610a8f57600080fd5b50610aaa6004803603810190610aa59190613d25565b611e53565b005b348015610ab857600080fd5b50610ad36004803603810190610ace9190613aea565b611ef2565b005b348015610ae157600080fd5b50610afc6004803603810190610af79190613bc7565b6120b4565b005b348015610b0a57600080fd5b50610b136121a4565b604051610b209190614191565b60405180910390f35b348015610b3557600080fd5b50610b506004803603810190610b4b9190613aea565b6121ca565b604051610b5d9190614176565b60405180910390f35b348015610b7257600080fd5b50610b7b6121ea565b604051610b889190614176565b60405180910390f35b601d5481565b60606040518060400160405280600981526020017f446f6765546f6f6c730000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610cb4919061432e565b60405180910390a36001905092915050565b610cce61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d52906142ce565b60405180910390fd5b80601960006101000a81548160ff02191690831515021790555050565b6000600254905090565b610d8a61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e906142ce565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc60648484610e4491906144ce565b610e4e919061449d565b9081150290604051600060405180830381858888f19350505050158015610e79573d6000803e3d6000fd5b505050565b60115481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461107057610fef826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122639092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61107b8484846122c7565b90509392505050565b60006111016110b4600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661165c565b6110f36110e2600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661165c565b600254612c5890919063ffffffff16565b612c5890919063ffffffff16565b905090565b60006012905090565b600061111961225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119d906142ce565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016111e19291906140ec565b602060405180830381600087803b1580156111fb57600080fd5b505af115801561120f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112339190613cc0565b905092915050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900460ff1681565b601c60019054906101000a900460ff1681565b60006112ad827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610bd4565b9050919050565b6112bc61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611349576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611340906142ce565b60405180910390fd5b81601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6113ac61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611430906142ce565b60405180910390fd5b80601960016101000a81548160ff02191690831515021790555050565b61145e61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e2906142ce565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600f5481565b60085481565b61156061225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e4906142ce565b60405180910390fd5b83600e8190555082600f819055508160108190555061162d60105461161f600f54600e546121fd90919063ffffffff16565b6121fd90919063ffffffff16565b601181905550806011546116419190614447565b60128190555060196012541061165657600080fd5b50505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116ad61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461173a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611731906142ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60035481565b60045481565b600061180e6118f8565b905090565b601960019054906101000a900460ff1681565b600d6020528060005260406000206000915054906101000a900460ff1681565b61184e61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d2906142ce565b60405180910390fd5b80601c60036101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61192961225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad906142ce565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611ac861225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4c906142ce565b60405180910390fd5b60005b83839050811015611c185781601a6000868685818110611ba1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611bb69190613aea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611c119061461a565b9050611b58565b50505050565b601b6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600681526020017f44546f6f6c730000000000000000000000000000000000000000000000000000815250905090565b600e5481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611cb43384846122c7565b905092915050565b60185481565b60125481565b601c60029054906101000a900460ff1681565b611ce361225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d67906142ce565b60405180910390fd5b60078111611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa9061420e565b60405180910390fd5b633b9aca0081611dc391906144ce565b60088190555050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e5b61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf906142ce565b60405180910390fd5b8060048190555050565b611efa61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7e906142ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fee9061422e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6120bc61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612140906142ce565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a6020528060005260406000206000915054906101000a900460ff1681565b601960009054906101000a900460ff1681565b600080828461220c9190614447565b905083811015612251576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122489061424e565b60405180910390fd5b8091505092915050565b600033905090565b60008383111582906122ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a291906141ac565b60405180910390fd5b50600083856122ba9190614528565b9050809150509392505050565b6000601c60009054906101000a900460ff16156122f0576122e9848484612ca2565b9050612c51565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123945750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123e957601960009054906101000a900460ff166123e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123df9061428e565b60405180910390fd5b5b600354821115806124435750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612479906141ee565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156124ed5750601c60009054906101000a900460ff16155b80156125055750601c60019054906101000a900460ff165b80156125525750601d54600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156125605761255f612e75565b5b6125686134fc565b1580156125c25750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612652576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612649576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126409061426e565b60405180910390fd5b612651613509565b5b601c60039054906101000a900460ff1615612672576126718484613512565b5b601960019054906101000a900460ff161561271557601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270b9061430e565b60405180910390fd5b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156127bc5750600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612807576008543a1115612806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fd906141ce565b60405180910390fd5b5b6008543a101580156128675750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156128c5576001601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b61294e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122639092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129f75750600960009054906101000a900460ff165b15612a9357600454612a5183600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fd90919063ffffffff16565b1115612a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a89906142ee565b60405180910390fd5b5b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b395750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612b435782612b4f565b612b4e85858561373f565b5b9050612ba381600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fd90919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c43919061432e565b60405180910390a360019150505b9392505050565b6000612c9a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612263565b905092915050565b6000612d2d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122639092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dc282600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fd90919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e62919061432e565b60405180910390a3600190509392505050565b6001601c60006101000a81548160ff0219169083151502179055506000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612f126002612f04601154612ef6600e54876138e790919063ffffffff16565b61396290919063ffffffff16565b61396290919063ffffffff16565b90506000612f298284612c5890919063ffffffff16565b90506000600267ffffffffffffffff811115612f6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f9c5781602001602082028036833780820191505090505b5090503081600081518110612fda577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b815260040160206040518083038186803b15801561307c57600080fd5b505afa158015613090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b49190613b13565b816001815181106130ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b43d9bbb8360008430426040518663ffffffff1660e01b815260040161318c959493929190614349565b600060405180830381600087803b1580156131a657600080fd5b505af11580156131ba573d6000803e3d6000fd5b50505050600047905060006131ef6131de6002600e5461396290919063ffffffff16565b601154612c5890919063ffffffff16565b9050600061322d600261321f84613211600e54886138e790919063ffffffff16565b61396290919063ffffffff16565b61396290919063ffffffff16565b905060006132588361324a600f54876138e790919063ffffffff16565b61396290919063ffffffff16565b9050600061328384613275601054886138e790919063ffffffff16565b61396290919063ffffffff16565b90506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516132d1906140bc565b600060405180830381858888f193505050503d806000811461330f576040519150601f19603f3d011682016040523d82523d6000602084013e613314565b606091505b50509050600090506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051613368906140bc565b600060405180830381858888f193505050503d80600081146133a6576040519150601f19603f3d011682016040523d82523d6000602084013e6133ab565b606091505b505090506000905060008a11156134d457601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6529ab486308d600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161344596959493929190614115565b6060604051808303818588803b15801561345e57600080fd5b505af1158015613472573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134979190613d4e565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858b6040516134cb9291906143a3565b60405180910390a15b50505050505050505050506000601c60006101000a81548160ff021916908315150217905550565b6000806018541415905090565b43601881905550565b61351b816139ac565b80156135715750601b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135c75750600c60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135df5750601c60039054906101000a900460ff165b806136dd5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561368c5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136c457503273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156136dc5750601c60039054906101000a900460ff165b5b1561373b576001601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461379f576011546137a3565b6012545b905060006137cd60646137bf84876138e790919063ffffffff16565b61396290919063ffffffff16565b905061382181600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fd90919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138c1919061432e565b60405180910390a36138dc8185612c5890919063ffffffff16565b925050509392505050565b6000808314156138fa576000905061395c565b6000828461390891906144ce565b9050828482613917919061449d565b14613957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394e906142ae565b60405180910390fd5b809150505b92915050565b60006139a483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506139bf565b905092915050565b600080823b905060008111915050919050565b60008083118290613a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139fd91906141ac565b60405180910390fd5b5060008385613a15919061449d565b9050809150509392505050565b600081359050613a318161490a565b92915050565b600081519050613a468161490a565b92915050565b60008083601f840112613a5e57600080fd5b8235905067ffffffffffffffff811115613a7757600080fd5b602083019150836020820283011115613a8f57600080fd5b9250929050565b600081359050613aa581614921565b92915050565b600081519050613aba81614921565b92915050565b600081359050613acf81614938565b92915050565b600081519050613ae481614938565b92915050565b600060208284031215613afc57600080fd5b6000613b0a84828501613a22565b91505092915050565b600060208284031215613b2557600080fd5b6000613b3384828501613a37565b91505092915050565b60008060408385031215613b4f57600080fd5b6000613b5d85828601613a22565b9250506020613b6e85828601613a22565b9150509250929050565b600080600060608486031215613b8d57600080fd5b6000613b9b86828701613a22565b9350506020613bac86828701613a22565b9250506040613bbd86828701613ac0565b9150509250925092565b60008060408385031215613bda57600080fd5b6000613be885828601613a22565b9250506020613bf985828601613a96565b9150509250929050565b60008060408385031215613c1657600080fd5b6000613c2485828601613a22565b9250506020613c3585828601613ac0565b9150509250929050565b600080600060408486031215613c5457600080fd5b600084013567ffffffffffffffff811115613c6e57600080fd5b613c7a86828701613a4c565b93509350506020613c8d86828701613a96565b9150509250925092565b600060208284031215613ca957600080fd5b6000613cb784828501613a96565b91505092915050565b600060208284031215613cd257600080fd5b6000613ce084828501613aab565b91505092915050565b60008060408385031215613cfc57600080fd5b6000613d0a85828601613a96565b9250506020613d1b85828601613a22565b9150509250929050565b600060208284031215613d3757600080fd5b6000613d4584828501613ac0565b91505092915050565b600080600060608486031215613d6357600080fd5b6000613d7186828701613ad5565b9350506020613d8286828701613ad5565b9250506040613d9386828701613ad5565b9150509250925092565b60008060008060808587031215613db357600080fd5b6000613dc187828801613ac0565b9450506020613dd287828801613ac0565b9350506040613de387828801613ac0565b9250506060613df487828801613ac0565b91505092959194509250565b6000613e0c8383613e18565b60208301905092915050565b613e218161455c565b82525050565b613e308161455c565b82525050565b6000613e41826143f7565b613e4b818561441a565b9350613e56836143e7565b8060005b83811015613e87578151613e6e8882613e00565b9750613e798361440d565b925050600181019050613e5a565b5085935050505092915050565b613e9d8161456e565b82525050565b613eac816145b1565b82525050565b613ebb816145d5565b82525050565b6000613ecc82614402565b613ed68185614436565b9350613ee68185602086016145e7565b613eef816146c1565b840191505092915050565b6000613f07601683614436565b9150613f12826146d2565b602082019050919050565b6000613f2a601183614436565b9150613f35826146fb565b602082019050919050565b6000613f4d602483614436565b9150613f5882614724565b604082019050919050565b6000613f70602683614436565b9150613f7b82614773565b604082019050919050565b6000613f93601b83614436565b9150613f9e826147c2565b602082019050919050565b6000613fb6601683614436565b9150613fc1826147eb565b602082019050919050565b6000613fd9601483614436565b9150613fe482614814565b602082019050919050565b6000613ffc602183614436565b91506140078261483d565b604082019050919050565b600061401f602083614436565b915061402a8261488c565b602082019050919050565b600061404260008361442b565b915061404d826148b5565b600082019050919050565b6000614065601483614436565b9150614070826148b8565b602082019050919050565b6000614088600b83614436565b9150614093826148e1565b602082019050919050565b6140a78161459a565b82525050565b6140b6816145a4565b82525050565b60006140c782614035565b9150819050919050565b60006020820190506140e66000830184613e27565b92915050565b60006040820190506141016000830185613e27565b61410e602083018461409e565b9392505050565b600060c08201905061412a6000830189613e27565b614137602083018861409e565b6141446040830187613eb2565b6141516060830186613eb2565b61415e6080830185613e27565b61416b60a083018461409e565b979650505050505050565b600060208201905061418b6000830184613e94565b92915050565b60006020820190506141a66000830184613ea3565b92915050565b600060208201905081810360008301526141c68184613ec1565b905092915050565b600060208201905081810360008301526141e781613efa565b9050919050565b6000602082019050818103600083015261420781613f1d565b9050919050565b6000602082019050818103600083015261422781613f40565b9050919050565b6000602082019050818103600083015261424781613f63565b9050919050565b6000602082019050818103600083015261426781613f86565b9050919050565b6000602082019050818103600083015261428781613fa9565b9050919050565b600060208201905081810360008301526142a781613fcc565b9050919050565b600060208201905081810360008301526142c781613fef565b9050919050565b600060208201905081810360008301526142e781614012565b9050919050565b6000602082019050818103600083015261430781614058565b9050919050565b600060208201905081810360008301526143278161407b565b9050919050565b6000602082019050614343600083018461409e565b92915050565b600060a08201905061435e600083018861409e565b61436b6020830187613eb2565b818103604083015261437d8186613e36565b905061438c6060830185613e27565b614399608083018461409e565b9695505050505050565b60006040820190506143b8600083018561409e565b6143c5602083018461409e565b9392505050565b60006020820190506143e160008301846140ad565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006144528261459a565b915061445d8361459a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561449257614491614663565b5b828201905092915050565b60006144a88261459a565b91506144b38361459a565b9250826144c3576144c2614692565b5b828204905092915050565b60006144d98261459a565b91506144e48361459a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561451d5761451c614663565b5b828202905092915050565b60006145338261459a565b915061453e8361459a565b92508282101561455157614550614663565b5b828203905092915050565b60006145678261457a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006145bc826145c3565b9050919050565b60006145ce8261457a565b9050919050565b60006145e08261459a565b9050919050565b60005b838110156146055780820151818401526020810190506145ea565b83811115614614576000848401525b50505050565b60006146258261459a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561465857614657614663565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f3e53656c6c206f6e2077616c6c657420616374696f6e00000000000000000000600082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f4d6178206761732073686f756c6420626520686967686572207468616e20372060008201527f6777656900000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5a65726f2062616c616e63652076696f6c617465642100000000000000000000600082015250565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f4d61782077616c6c65742076696f6c6174656421000000000000000000000000600082015250565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6149138161455c565b811461491e57600080fd5b50565b61492a8161456e565b811461493557600080fd5b50565b6149418161459a565b811461494c57600080fd5b5056fea264697066735822122079683cd305e0373f4a96c1be9c7a4a98fbb932c8dbcfc1d13735a468c312016b64736f6c63430008040033

Deployed ByteCode

0x6080604052600436106102b25760003560e01c80637d1db4a511610175578063a8aa1b31116100dc578063dd62ed3e11610095578063f84ba65d1161006f578063f84ba65d14610ad5578063f887ea4014610afe578063fe575a8714610b29578063ffb54a9914610b66576102b9565b8063dd62ed3e14610a46578063f1d5f51714610a83578063f2fde38b14610aac576102b9565b8063a8aa1b3114610934578063a9059cbb1461095f578063bf56b3711461099c578063ca987b0e146109c7578063da00097d146109f2578063dd51faa214610a1d576102b9565b80638da5cb5b1161012e5780638da5cb5b146108245780638dd148021461084f5780638e2eee84146108785780638f16c41c146108a157806395d89b41146108de57806398118cb414610909576102b9565b80637d1db4a514610712578063807c2d9c1461073d578063893d20e814610768578063896648c1146107935780638b42507f146107be5780638c33c9e4146107fb576102b9565b806344de2e4c116102195780636827e764116101d25780636827e764146106145780636b67c4df1461063f5780636ca7c2161461066a5780636fcba3771461069557806370a08231146106be578063715018a6146106fb576102b9565b806344de2e4c146105065780634a74bb0214610531578063571ac8b01461055c5780635def85e4146105995780635e562f3b146105c2578063658d4b7f146105eb576102b9565b80631df4ccfc1161026b5780631df4ccfc146103ce57806323b872dd146103f95780632b112e4914610436578063313ce5671461046157806333f3d6281461048c5780633f4218e0146104c9576102b9565b80630445b667146102be57806306fdde03146102e9578063095ea7b3146103145780630d2959801461035157806318160ddd1461037a5780631da1db5e146103a5576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b91565b6040516102e0919061432e565b60405180910390f35b3480156102f557600080fd5b506102fe610b97565b60405161030b91906141ac565b60405180910390f35b34801561032057600080fd5b5061033b60048036038101906103369190613c03565b610bd4565b6040516103489190614176565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190613c97565b610cc6565b005b34801561038657600080fd5b5061038f610d78565b60405161039c919061432e565b60405180910390f35b3480156103b157600080fd5b506103cc60048036038101906103c79190613d25565b610d82565b005b3480156103da57600080fd5b506103e3610e7e565b6040516103f0919061432e565b60405180910390f35b34801561040557600080fd5b50610420600480360381019061041b9190613b78565b610e84565b60405161042d9190614176565b60405180910390f35b34801561044257600080fd5b5061044b611084565b604051610458919061432e565b60405180910390f35b34801561046d57600080fd5b50610476611106565b60405161048391906143cc565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae9190613c03565b61110f565b6040516104c09190614176565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb9190613aea565b61123b565b6040516104fd9190614176565b60405180910390f35b34801561051257600080fd5b5061051b61125b565b6040516105289190614176565b60405180910390f35b34801561053d57600080fd5b5061054661126e565b6040516105539190614176565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190613aea565b611281565b6040516105909190614176565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190613ce9565b6112b4565b005b3480156105ce57600080fd5b506105e960048036038101906105e49190613c97565b6113a4565b005b3480156105f757600080fd5b50610612600480360381019061060d9190613bc7565b611456565b005b34801561062057600080fd5b50610629611546565b604051610636919061432e565b60405180910390f35b34801561064b57600080fd5b5061065461154c565b604051610661919061432e565b60405180910390f35b34801561067657600080fd5b5061067f611552565b60405161068c919061432e565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b79190613d9d565b611558565b005b3480156106ca57600080fd5b506106e560048036038101906106e09190613aea565b61165c565b6040516106f2919061432e565b60405180910390f35b34801561070757600080fd5b506107106116a5565b005b34801561071e57600080fd5b506107276117f8565b604051610734919061432e565b60405180910390f35b34801561074957600080fd5b506107526117fe565b60405161075f919061432e565b60405180910390f35b34801561077457600080fd5b5061077d611804565b60405161078a91906140d1565b60405180910390f35b34801561079f57600080fd5b506107a8611813565b6040516107b59190614176565b60405180910390f35b3480156107ca57600080fd5b506107e560048036038101906107e09190613aea565b611826565b6040516107f29190614176565b60405180910390f35b34801561080757600080fd5b50610822600480360381019061081d9190613c97565b611846565b005b34801561083057600080fd5b506108396118f8565b60405161084691906140d1565b60405180910390f35b34801561085b57600080fd5b5061087660048036038101906108719190613aea565b611921565b005b34801561088457600080fd5b5061089f600480360381019061089a9190613c3f565b611ac0565b005b3480156108ad57600080fd5b506108c860048036038101906108c39190613aea565b611c1e565b6040516108d59190614176565b60405180910390f35b3480156108ea57600080fd5b506108f3611c3e565b60405161090091906141ac565b60405180910390f35b34801561091557600080fd5b5061091e611c7b565b60405161092b919061432e565b60405180910390f35b34801561094057600080fd5b50610949611c81565b60405161095691906140d1565b60405180910390f35b34801561096b57600080fd5b5061098660048036038101906109819190613c03565b611ca7565b6040516109939190614176565b60405180910390f35b3480156109a857600080fd5b506109b1611cbc565b6040516109be919061432e565b60405180910390f35b3480156109d357600080fd5b506109dc611cc2565b6040516109e9919061432e565b60405180910390f35b3480156109fe57600080fd5b50610a07611cc8565b604051610a149190614176565b60405180910390f35b348015610a2957600080fd5b50610a446004803603810190610a3f9190613d25565b611cdb565b005b348015610a5257600080fd5b50610a6d6004803603810190610a689190613b3c565b611dcc565b604051610a7a919061432e565b60405180910390f35b348015610a8f57600080fd5b50610aaa6004803603810190610aa59190613d25565b611e53565b005b348015610ab857600080fd5b50610ad36004803603810190610ace9190613aea565b611ef2565b005b348015610ae157600080fd5b50610afc6004803603810190610af79190613bc7565b6120b4565b005b348015610b0a57600080fd5b50610b136121a4565b604051610b209190614191565b60405180910390f35b348015610b3557600080fd5b50610b506004803603810190610b4b9190613aea565b6121ca565b604051610b5d9190614176565b60405180910390f35b348015610b7257600080fd5b50610b7b6121ea565b604051610b889190614176565b60405180910390f35b601d5481565b60606040518060400160405280600981526020017f446f6765546f6f6c730000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610cb4919061432e565b60405180910390a36001905092915050565b610cce61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d52906142ce565b60405180910390fd5b80601960006101000a81548160ff02191690831515021790555050565b6000600254905090565b610d8a61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e906142ce565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc60648484610e4491906144ce565b610e4e919061449d565b9081150290604051600060405180830381858888f19350505050158015610e79573d6000803e3d6000fd5b505050565b60115481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461107057610fef826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122639092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61107b8484846122c7565b90509392505050565b60006111016110b4600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661165c565b6110f36110e2600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661165c565b600254612c5890919063ffffffff16565b612c5890919063ffffffff16565b905090565b60006012905090565b600061111961225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119d906142ce565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016111e19291906140ec565b602060405180830381600087803b1580156111fb57600080fd5b505af115801561120f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112339190613cc0565b905092915050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900460ff1681565b601c60019054906101000a900460ff1681565b60006112ad827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610bd4565b9050919050565b6112bc61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611349576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611340906142ce565b60405180910390fd5b81601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6113ac61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611430906142ce565b60405180910390fd5b80601960016101000a81548160ff02191690831515021790555050565b61145e61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e2906142ce565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600f5481565b60085481565b61156061225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e4906142ce565b60405180910390fd5b83600e8190555082600f819055508160108190555061162d60105461161f600f54600e546121fd90919063ffffffff16565b6121fd90919063ffffffff16565b601181905550806011546116419190614447565b60128190555060196012541061165657600080fd5b50505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116ad61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461173a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611731906142ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60035481565b60045481565b600061180e6118f8565b905090565b601960019054906101000a900460ff1681565b600d6020528060005260406000206000915054906101000a900460ff1681565b61184e61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d2906142ce565b60405180910390fd5b80601c60036101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61192961225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad906142ce565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611ac861225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4c906142ce565b60405180910390fd5b60005b83839050811015611c185781601a6000868685818110611ba1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611bb69190613aea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611c119061461a565b9050611b58565b50505050565b601b6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600681526020017f44546f6f6c730000000000000000000000000000000000000000000000000000815250905090565b600e5481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611cb43384846122c7565b905092915050565b60185481565b60125481565b601c60029054906101000a900460ff1681565b611ce361225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d67906142ce565b60405180910390fd5b60078111611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa9061420e565b60405180910390fd5b633b9aca0081611dc391906144ce565b60088190555050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e5b61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf906142ce565b60405180910390fd5b8060048190555050565b611efa61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7e906142ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fee9061422e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6120bc61225b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612140906142ce565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a6020528060005260406000206000915054906101000a900460ff1681565b601960009054906101000a900460ff1681565b600080828461220c9190614447565b905083811015612251576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122489061424e565b60405180910390fd5b8091505092915050565b600033905090565b60008383111582906122ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a291906141ac565b60405180910390fd5b50600083856122ba9190614528565b9050809150509392505050565b6000601c60009054906101000a900460ff16156122f0576122e9848484612ca2565b9050612c51565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123945750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123e957601960009054906101000a900460ff166123e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123df9061428e565b60405180910390fd5b5b600354821115806124435750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612479906141ee565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156124ed5750601c60009054906101000a900460ff16155b80156125055750601c60019054906101000a900460ff165b80156125525750601d54600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156125605761255f612e75565b5b6125686134fc565b1580156125c25750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612652576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612649576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126409061426e565b60405180910390fd5b612651613509565b5b601c60039054906101000a900460ff1615612672576126718484613512565b5b601960019054906101000a900460ff161561271557601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270b9061430e565b60405180910390fd5b5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156127bc5750600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612807576008543a1115612806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fd906141ce565b60405180910390fd5b5b6008543a101580156128675750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156128c5576001601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b61294e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122639092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129f75750600960009054906101000a900460ff165b15612a9357600454612a5183600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fd90919063ffffffff16565b1115612a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a89906142ee565b60405180910390fd5b5b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b395750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612b435782612b4f565b612b4e85858561373f565b5b9050612ba381600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fd90919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c43919061432e565b60405180910390a360019150505b9392505050565b6000612c9a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612263565b905092915050565b6000612d2d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122639092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dc282600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fd90919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e62919061432e565b60405180910390a3600190509392505050565b6001601c60006101000a81548160ff0219169083151502179055506000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612f126002612f04601154612ef6600e54876138e790919063ffffffff16565b61396290919063ffffffff16565b61396290919063ffffffff16565b90506000612f298284612c5890919063ffffffff16565b90506000600267ffffffffffffffff811115612f6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f9c5781602001602082028036833780820191505090505b5090503081600081518110612fda577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b815260040160206040518083038186803b15801561307c57600080fd5b505afa158015613090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b49190613b13565b816001815181106130ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b43d9bbb8360008430426040518663ffffffff1660e01b815260040161318c959493929190614349565b600060405180830381600087803b1580156131a657600080fd5b505af11580156131ba573d6000803e3d6000fd5b50505050600047905060006131ef6131de6002600e5461396290919063ffffffff16565b601154612c5890919063ffffffff16565b9050600061322d600261321f84613211600e54886138e790919063ffffffff16565b61396290919063ffffffff16565b61396290919063ffffffff16565b905060006132588361324a600f54876138e790919063ffffffff16565b61396290919063ffffffff16565b9050600061328384613275601054886138e790919063ffffffff16565b61396290919063ffffffff16565b90506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516132d1906140bc565b600060405180830381858888f193505050503d806000811461330f576040519150601f19603f3d011682016040523d82523d6000602084013e613314565b606091505b50509050600090506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051613368906140bc565b600060405180830381858888f193505050503d80600081146133a6576040519150601f19603f3d011682016040523d82523d6000602084013e6133ab565b606091505b505090506000905060008a11156134d457601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6529ab486308d600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161344596959493929190614115565b6060604051808303818588803b15801561345e57600080fd5b505af1158015613472573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134979190613d4e565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858b6040516134cb9291906143a3565b60405180910390a15b50505050505050505050506000601c60006101000a81548160ff021916908315150217905550565b6000806018541415905090565b43601881905550565b61351b816139ac565b80156135715750601b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135c75750600c60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135df5750601c60039054906101000a900460ff165b806136dd5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561368c5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136c457503273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b80156136dc5750601c60039054906101000a900460ff165b5b1561373b576001601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461379f576011546137a3565b6012545b905060006137cd60646137bf84876138e790919063ffffffff16565b61396290919063ffffffff16565b905061382181600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fd90919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138c1919061432e565b60405180910390a36138dc8185612c5890919063ffffffff16565b925050509392505050565b6000808314156138fa576000905061395c565b6000828461390891906144ce565b9050828482613917919061449d565b14613957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394e906142ae565b60405180910390fd5b809150505b92915050565b60006139a483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506139bf565b905092915050565b600080823b905060008111915050919050565b60008083118290613a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139fd91906141ac565b60405180910390fd5b5060008385613a15919061449d565b9050809150509392505050565b600081359050613a318161490a565b92915050565b600081519050613a468161490a565b92915050565b60008083601f840112613a5e57600080fd5b8235905067ffffffffffffffff811115613a7757600080fd5b602083019150836020820283011115613a8f57600080fd5b9250929050565b600081359050613aa581614921565b92915050565b600081519050613aba81614921565b92915050565b600081359050613acf81614938565b92915050565b600081519050613ae481614938565b92915050565b600060208284031215613afc57600080fd5b6000613b0a84828501613a22565b91505092915050565b600060208284031215613b2557600080fd5b6000613b3384828501613a37565b91505092915050565b60008060408385031215613b4f57600080fd5b6000613b5d85828601613a22565b9250506020613b6e85828601613a22565b9150509250929050565b600080600060608486031215613b8d57600080fd5b6000613b9b86828701613a22565b9350506020613bac86828701613a22565b9250506040613bbd86828701613ac0565b9150509250925092565b60008060408385031215613bda57600080fd5b6000613be885828601613a22565b9250506020613bf985828601613a96565b9150509250929050565b60008060408385031215613c1657600080fd5b6000613c2485828601613a22565b9250506020613c3585828601613ac0565b9150509250929050565b600080600060408486031215613c5457600080fd5b600084013567ffffffffffffffff811115613c6e57600080fd5b613c7a86828701613a4c565b93509350506020613c8d86828701613a96565b9150509250925092565b600060208284031215613ca957600080fd5b6000613cb784828501613a96565b91505092915050565b600060208284031215613cd257600080fd5b6000613ce084828501613aab565b91505092915050565b60008060408385031215613cfc57600080fd5b6000613d0a85828601613a96565b9250506020613d1b85828601613a22565b9150509250929050565b600060208284031215613d3757600080fd5b6000613d4584828501613ac0565b91505092915050565b600080600060608486031215613d6357600080fd5b6000613d7186828701613ad5565b9350506020613d8286828701613ad5565b9250506040613d9386828701613ad5565b9150509250925092565b60008060008060808587031215613db357600080fd5b6000613dc187828801613ac0565b9450506020613dd287828801613ac0565b9350506040613de387828801613ac0565b9250506060613df487828801613ac0565b91505092959194509250565b6000613e0c8383613e18565b60208301905092915050565b613e218161455c565b82525050565b613e308161455c565b82525050565b6000613e41826143f7565b613e4b818561441a565b9350613e56836143e7565b8060005b83811015613e87578151613e6e8882613e00565b9750613e798361440d565b925050600181019050613e5a565b5085935050505092915050565b613e9d8161456e565b82525050565b613eac816145b1565b82525050565b613ebb816145d5565b82525050565b6000613ecc82614402565b613ed68185614436565b9350613ee68185602086016145e7565b613eef816146c1565b840191505092915050565b6000613f07601683614436565b9150613f12826146d2565b602082019050919050565b6000613f2a601183614436565b9150613f35826146fb565b602082019050919050565b6000613f4d602483614436565b9150613f5882614724565b604082019050919050565b6000613f70602683614436565b9150613f7b82614773565b604082019050919050565b6000613f93601b83614436565b9150613f9e826147c2565b602082019050919050565b6000613fb6601683614436565b9150613fc1826147eb565b602082019050919050565b6000613fd9601483614436565b9150613fe482614814565b602082019050919050565b6000613ffc602183614436565b91506140078261483d565b604082019050919050565b600061401f602083614436565b915061402a8261488c565b602082019050919050565b600061404260008361442b565b915061404d826148b5565b600082019050919050565b6000614065601483614436565b9150614070826148b8565b602082019050919050565b6000614088600b83614436565b9150614093826148e1565b602082019050919050565b6140a78161459a565b82525050565b6140b6816145a4565b82525050565b60006140c782614035565b9150819050919050565b60006020820190506140e66000830184613e27565b92915050565b60006040820190506141016000830185613e27565b61410e602083018461409e565b9392505050565b600060c08201905061412a6000830189613e27565b614137602083018861409e565b6141446040830187613eb2565b6141516060830186613eb2565b61415e6080830185613e27565b61416b60a083018461409e565b979650505050505050565b600060208201905061418b6000830184613e94565b92915050565b60006020820190506141a66000830184613ea3565b92915050565b600060208201905081810360008301526141c68184613ec1565b905092915050565b600060208201905081810360008301526141e781613efa565b9050919050565b6000602082019050818103600083015261420781613f1d565b9050919050565b6000602082019050818103600083015261422781613f40565b9050919050565b6000602082019050818103600083015261424781613f63565b9050919050565b6000602082019050818103600083015261426781613f86565b9050919050565b6000602082019050818103600083015261428781613fa9565b9050919050565b600060208201905081810360008301526142a781613fcc565b9050919050565b600060208201905081810360008301526142c781613fef565b9050919050565b600060208201905081810360008301526142e781614012565b9050919050565b6000602082019050818103600083015261430781614058565b9050919050565b600060208201905081810360008301526143278161407b565b9050919050565b6000602082019050614343600083018461409e565b92915050565b600060a08201905061435e600083018861409e565b61436b6020830187613eb2565b818103604083015261437d8186613e36565b905061438c6060830185613e27565b614399608083018461409e565b9695505050505050565b60006040820190506143b8600083018561409e565b6143c5602083018461409e565b9392505050565b60006020820190506143e160008301846140ad565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006144528261459a565b915061445d8361459a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561449257614491614663565b5b828201905092915050565b60006144a88261459a565b91506144b38361459a565b9250826144c3576144c2614692565b5b828204905092915050565b60006144d98261459a565b91506144e48361459a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561451d5761451c614663565b5b828202905092915050565b60006145338261459a565b915061453e8361459a565b92508282101561455157614550614663565b5b828203905092915050565b60006145678261457a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006145bc826145c3565b9050919050565b60006145ce8261457a565b9050919050565b60006145e08261459a565b9050919050565b60005b838110156146055780820151818401526020810190506145ea565b83811115614614576000848401525b50505050565b60006146258261459a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561465857614657614663565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f3e53656c6c206f6e2077616c6c657420616374696f6e00000000000000000000600082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f4d6178206761732073686f756c6420626520686967686572207468616e20372060008201527f6777656900000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5a65726f2062616c616e63652076696f6c617465642100000000000000000000600082015250565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f4d61782077616c6c65742076696f6c6174656421000000000000000000000000600082015250565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6149138161455c565b811461491e57600080fd5b50565b61492a8161456e565b811461493557600080fd5b50565b6149418161459a565b811461494c57600080fd5b5056fea264697066735822122079683cd305e0373f4a96c1be9c7a4a98fbb932c8dbcfc1d13735a468c312016b64736f6c63430008040033