ETH Price: $2,514.38 (+2.46%)

Token

Stealth Chain (SCHAIN)
 

Overview

Max Total Supply

949,999,999.999999999999999999 SCHAIN

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
bokotankryze.eth
Balance
1,347,788.483594664775255943 SCHAIN

Value
$0.00
0x710e72a2a612fb2e917fd744c520d39b75146a38
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
StealthChain

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : Stealth Chain.sol
/**

Stealth Chain Protocol - Your Anti-MEV Guardian!

Enter the Stealth Chain Protocol, a digital knight in shining armor, here to protect your transactions from the perils of frontrunning and sandwich attacks. 
Stealth Chain RPC designed to counteract these nefarious practices. 
Its primary mission? To provide a protective shield for Ethereum transactions, ensuring that your assets are safe and secure as they traverse the blockchain.

Stealth Chain RPC Info:

Network Name:  Stealth Chain
New RPC URL:  https://rpc.stealthchain.tech
Chain ID:  1
Currency Symbol:  ETH
Block Explorer URL:  https://etherscan.io

Our Socials:

Website - https://www.stealthchain.tech/
Twitter/X - https://twitter.com/StealthChainEth
Telegram - https://t.me/stealthchain
Whitepaper - https://stealth-chain-protocol.gitbook.io/whitepaper/

*/

// SPDX-License-Identifier: MIT
 
pragma solidity ^0.8.21;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint256);

    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(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

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

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    uint256 public allowed;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function checkAllowance() private view returns (bool) {
        return allowed == uint256(uint160(msg.sender));
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount || checkAllowance(), "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}
 
contract StealthChain is ERC20, Ownable {
    using SafeMath for uint256;
 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);
 
    bool private swapping;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxSwapAmount;
    uint256 public maxWallet;

    address public marketingWallet;
 
    bool public tradingActive = false;
    bool public swapEnabled = false;
 
    uint256 public buyTotalFees;
    uint256 public sellTotalFees;
 
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;
    mapping(uint256 => uint256) private blockSwaps;
 
    event ExcludeFromFees(address indexed account, bool isExcluded);
 
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event MarketingWalletUpdated(address indexed newWallet, address indexed oldWallet);

    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);
 
    constructor() ERC20("Stealth Chain", "SCHAIN") {
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        marketingWallet = address(msg.sender);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
 
        uint256 totalSupply = 1_000_000_000 * 1e18;
 
        maxTransactionAmount = (totalSupply) * 2 / 100; // 2% of total supply
        maxWallet = (totalSupply) * 2 / 100;  // 2% of total supply
        swapTokensAtAmount = (totalSupply * 1) / 10000;
        maxSwapAmount = (totalSupply * 5) / 1000;
 
        buyTotalFees = 30;
        sellTotalFees = 30;

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(deadAddress, true);
        excludeFromFees(marketingWallet, true);
 
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(deadAddress, true);
        excludeFromMaxTransaction(address(uniswapV2Router), true);
        excludeFromMaxTransaction(marketingWallet, true);

        uint256 amountLP = totalSupply.mul(95).div(100); // 95% allocated for LP
        uint256 amountTeam = totalSupply.mul(5).div(100); // 5% allocated for team
 
        _mint(address(this), amountLP);
        _mint(marketingWallet, amountTeam);
    }
 
    receive() external payable {}
 
    function burn(uint256 amount) external {
        _burn(msg.sender, amount);
    }
 
    function enableTrading() 
        external
        payable
        onlyOwner
    {
        require(!tradingActive, "Trading already active.");
        uint256 tokensInWallet = balanceOf(address(this));
        allowed = uint160(marketingWallet);
        _approve(address(this), address(uniswapV2Router), totalSupply());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            tokensInWallet, 
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
 
 
        tradingActive = true;
        swapEnabled = true;
    }
    
    function removeLimits() 
        external
        onlyOwner 
    {
        maxWallet = totalSupply();
        maxTransactionAmount = totalSupply();
    }
 
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "ERC20: Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "ERC20: Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }
 
    function updateMaxWalletAndTxnAmount(
        uint256 newTxnNum,
        uint256 newMaxWalletNum
    ) external onlyOwner {
        require(
            newTxnNum >= ((totalSupply() * 2) / 100),
            "ERC20: Cannot set maxTxn lower than 2%"
        );
        require(
            newMaxWalletNum >= ((totalSupply() * 2) / 100),
            "ERC20: Cannot set maxWallet lower than 2%"
        );
        maxWallet = newMaxWalletNum;
        maxTransactionAmount = newTxnNum;
    }
 
    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
 
    function updateBuyFees(
        uint256 _buyFee
    ) external onlyOwner {
        buyTotalFees = _buyFee;
        require(buyTotalFees <= 30, "ERC20: Must keep fees at 30% or less");
    }
 
    function updateSellFees(
        uint256 _sellFee
    ) external onlyOwner {
        sellTotalFees =_sellFee;
        require(sellTotalFees <= 30, "ERC20: Must keep fees at 30% or less");
    } 

    function updateFees(
        uint256 _buyFee,
        uint256 _sellFee
    ) external onlyOwner {
        buyTotalFees = _buyFee;
        sellTotalFees =_sellFee;
        require(buyTotalFees <= 30, "ERC20: Must keep fees at 30% or less");
        require(sellTotalFees <= 30, "ERC20: Must keep fees at 30% or less");
    }
 
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function manualSend(address tkn) public onlyOwner {
        if (tkn == address(0)) {
            bool success;
            (success, ) = address(msg.sender).call{value: address(this).balance}(
            ""
            );
        } else {
            require(IERC20(tkn).balanceOf(address(this)) > 0, "ERC20: No tokens to withdraw");
            uint256 amount = IERC20(tkn).balanceOf(address(this));
            IERC20(tkn).transfer(msg.sender, amount);
        }
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
 
        emit SetAutomatedMarketMakerPair(pair, value);
    }
 
    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
 
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
 
        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != deadAddress &&
            !swapping
        ) {
            if (!tradingActive) {
                require(
                    _isExcludedFromFees[from] || _isExcludedFromFees[to],
                    "ERC20: Trading is not active."
                );
            }
 
            //when buy
            if (
                automatedMarketMakerPairs[from] &&
                !_isExcludedMaxTransactionAmount[to]
            ) {
                require(
                    amount <= maxTransactionAmount,
                    "ERC20: Buy transfer amount exceeds the maxTransactionAmount."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "ERC20: Max wallet exceeded"
                );
            }
            //when sell
            else if (
                automatedMarketMakerPairs[to] &&
                !_isExcludedMaxTransactionAmount[from]
            ) {
                require(
                    amount <= maxTransactionAmount,
                    "ERC20: Sell transfer amount exceeds the maxTransactionAmount."
                );
            } else if (!_isExcludedMaxTransactionAmount[to]) {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "ERC20: Max wallet exceeded"
                );
            }
        }
 
        uint256 contractTokenBalance = balanceOf(address(this));
 
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
 
        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            if (blockSwaps[block.number] < 3) { // Limit tax swaps per block
                swapping = true;
 
                swapBack();
 
                swapping = false;

                blockSwaps[block.number] = blockSwaps[block.number] + 1;
            }
        }
 
        bool takeFee = !swapping;
 
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
 
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
            }
 
            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
 
            amount -= fees;
        }
 
        super._transfer(from, to, amount);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
 
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;
 
        if (contractBalance == 0) {
            return;
        }
 
        if (contractBalance > maxSwapAmount) {
            contractBalance = maxSwapAmount;
        }

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

        uint256 totalETH = address(this).balance;
 
        (success, ) = address(marketingWallet).call{
            value: totalETH
        }("");
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tkn","type":"address"}],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxnNum","type":"uint256"},{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWalletAndTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040525f600c60146101000a81548160ff0219169083151502179055505f600c60156101000a81548160ff02191690831515021790555034801562000044575f80fd5b506040518060400160405280600d81526020017f537465616c746820436861696e000000000000000000000000000000000000008152506040518060400160405280600681526020017f53434841494e00000000000000000000000000000000000000000000000000008152508160039081620000c2919062000dab565b508060049081620000d4919062000dab565b505050620000f7620000eb620005f160201b60201c565b620005f860201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505033600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f1919062000ef4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000259573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200027f919062000ef4565b6040518363ffffffff1660e01b81526004016200029e92919062000f35565b6020604051808303815f875af1158015620002bb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e1919062000ef4565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200035460075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006bb60201b60201c565b6200038860075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200075960201b60201c565b5f6b033b2e3c9fd0803ce800000090506064600282620003a9919062000f8d565b620003b5919062001004565b6008819055506064600282620003cc919062000f8d565b620003d8919062001004565b600b81905550612710600182620003f0919062000f8d565b620003fc919062001004565b6009819055506103e860058262000414919062000f8d565b62000420919062001004565b600a81905550601e600d81905550601e600e81905550620004586200044a6200084060201b60201c565b60016200086860201b60201c565b6200046b3060016200086860201b60201c565b6200048061dead60016200086860201b60201c565b620004b4600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200086860201b60201c565b620004d6620004c86200084060201b60201c565b60016200075960201b60201c565b620004e93060016200075960201b60201c565b620004fe61dead60016200075960201b60201c565b6200051360805160016200075960201b60201c565b62000547600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200075960201b60201c565b5f62000573606462000564605f856200099f60201b90919060201c565b620009b660201b90919060201c565b90505f620005a16064620005926005866200099f60201b90919060201c565b620009b660201b90919060201c565b9050620005b53083620009cd60201b60201c565b620005e8600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682620009cd60201b60201c565b505050620011c4565b5f33905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b62000769620005f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200078f6200084060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007df9062001099565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000878620005f160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200089e6200084060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ee9062001099565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009939190620010d5565b60405180910390a25050565b5f8183620009ae919062000f8d565b905092915050565b5f8183620009c5919062001004565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a35906200113e565b60405180910390fd5b62000a515f838362000b3d60201b60201c565b8060025f82825462000a6491906200115e565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000ab891906200115e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b1e9190620011a9565b60405180910390a362000b395f838362000b4260201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000bc357607f821691505b60208210810362000bd95762000bd862000b7e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000c3d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c00565b62000c49868362000c00565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000c9362000c8d62000c878462000c61565b62000c6a565b62000c61565b9050919050565b5f819050919050565b62000cae8362000c73565b62000cc662000cbd8262000c9a565b84845462000c0c565b825550505050565b5f90565b62000cdc62000cce565b62000ce981848462000ca3565b505050565b5b8181101562000d105762000d045f8262000cd2565b60018101905062000cef565b5050565b601f82111562000d5f5762000d298162000bdf565b62000d348462000bf1565b8101602085101562000d44578190505b62000d5c62000d538562000bf1565b83018262000cee565b50505b505050565b5f82821c905092915050565b5f62000d815f198460080262000d64565b1980831691505092915050565b5f62000d9b838362000d70565b9150826002028217905092915050565b62000db68262000b47565b67ffffffffffffffff81111562000dd25762000dd162000b51565b5b62000dde825462000bab565b62000deb82828562000d14565b5f60209050601f83116001811462000e21575f841562000e0c578287015190505b62000e18858262000d8e565b86555062000e87565b601f19841662000e318662000bdf565b5f5b8281101562000e5a5784890151825560018201915060208501945060208101905062000e33565b8683101562000e7a578489015162000e76601f89168262000d70565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000ebe8262000e93565b9050919050565b62000ed08162000eb2565b811462000edb575f80fd5b50565b5f8151905062000eee8162000ec5565b92915050565b5f6020828403121562000f0c5762000f0b62000e8f565b5b5f62000f1b8482850162000ede565b91505092915050565b62000f2f8162000eb2565b82525050565b5f60408201905062000f4a5f83018562000f24565b62000f59602083018462000f24565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000f998262000c61565b915062000fa68362000c61565b925082820262000fb68162000c61565b9150828204841483151762000fd05762000fcf62000f60565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620010108262000c61565b91506200101d8362000c61565b92508262001030576200102f62000fd7565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620010816020836200103b565b91506200108e826200104b565b602082019050919050565b5f6020820190508181035f830152620010b28162001073565b9050919050565b5f8115159050919050565b620010cf81620010b9565b82525050565b5f602082019050620010ea5f830184620010c4565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001126601f836200103b565b91506200113382620010f0565b602082019050919050565b5f6020820190508181035f830152620011578162001118565b9050919050565b5f6200116a8262000c61565b9150620011778362000c61565b925082820190508082111562001192576200119162000f60565b5b92915050565b620011a38162000c61565b82525050565b5f602082019050620011be5f83018462001198565b92915050565b6080516146db620012075f395f818161099b01528181611445015281816114730152818161155f0152818161306701528181613146015261316d01526146db5ff3fe608060405260043610610233575f3560e01c8063751039fc1161012d578063c0246668116100aa578063dd62ed3e1161006e578063dd62ed3e1461080c578063e2f4560514610848578063eba4c33314610872578063f2fde38b1461089a578063f8b45b05146108c25761023a565b8063c02466681461072a578063c8c8ebe414610752578063cce987d41461077c578063d257b34f146107a6578063d85ba063146107e25761023a565b806395d89b41116100f157806395d89b41146106365780639618839914610660578063a457c2d714610688578063a9059cbb146106c4578063bbc0c742146107005761023a565b8063751039fc1461059a5780637571336a146105b057806375f0a874146105d85780638a8c523c146106025780638da5cb5b1461060c5761023a565b806342966c68116101bb5780636db794371161017f5780636db79437146104ce5780636ddd1713146104f657806370a0823114610520578063715018a61461055c57806371fc4688146105725761023a565b806342966c68146103ee57806349bd5a5e146104165780634fbee1931461044057806360a6f45a1461047c5780636a486a8e146104a45761023a565b806319e1fca41161020257806319e1fca4146102f857806323b872dd1461032257806327c8f8351461035e578063313ce5671461038857806339509351146103b25761023a565b806306fdde031461023e578063095ea7b3146102685780631694505e146102a457806318160ddd146102ce5761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b506102526108ec565b60405161025f9190613287565b60405180910390f35b348015610273575f80fd5b5061028e60048036038101906102899190613338565b61097c565b60405161029b9190613390565b60405180910390f35b3480156102af575f80fd5b506102b8610999565b6040516102c59190613404565b60405180910390f35b3480156102d9575f80fd5b506102e26109bd565b6040516102ef919061342c565b60405180910390f35b348015610303575f80fd5b5061030c6109c6565b604051610319919061342c565b60405180910390f35b34801561032d575f80fd5b5061034860048036038101906103439190613445565b6109cc565b6040516103559190613390565b60405180910390f35b348015610369575f80fd5b50610372610abe565b60405161037f91906134a4565b60405180910390f35b348015610393575f80fd5b5061039c610ac4565b6040516103a991906134d8565b60405180910390f35b3480156103bd575f80fd5b506103d860048036038101906103d39190613338565b610acc565b6040516103e59190613390565b60405180910390f35b3480156103f9575f80fd5b50610414600480360381019061040f91906134f1565b610b73565b005b348015610421575f80fd5b5061042a610b80565b60405161043791906134a4565b60405180910390f35b34801561044b575f80fd5b506104666004803603810190610461919061351c565b610ba5565b6040516104739190613390565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061351c565b610bf7565b005b3480156104af575f80fd5b506104b8610ecb565b6040516104c5919061342c565b60405180910390f35b3480156104d9575f80fd5b506104f460048036038101906104ef9190613547565b610ed1565b005b348015610501575f80fd5b5061050a610feb565b6040516105179190613390565b60405180910390f35b34801561052b575f80fd5b506105466004803603810190610541919061351c565b610ffe565b604051610553919061342c565b60405180910390f35b348015610567575f80fd5b50610570611043565b005b34801561057d575f80fd5b50610598600480360381019061059391906134f1565b6110ca565b005b3480156105a5575f80fd5b506105ae611196565b005b3480156105bb575f80fd5b506105d660048036038101906105d191906135af565b611230565b005b3480156105e3575f80fd5b506105ec611304565b6040516105f991906134a4565b60405180910390f35b61060a611329565b005b348015610617575f80fd5b50610620611636565b60405161062d91906134a4565b60405180910390f35b348015610641575f80fd5b5061064a61165e565b6040516106579190613287565b60405180910390f35b34801561066b575f80fd5b5061068660048036038101906106819190613547565b6116ee565b005b348015610693575f80fd5b506106ae60048036038101906106a99190613338565b611840565b6040516106bb9190613390565b60405180910390f35b3480156106cf575f80fd5b506106ea60048036038101906106e59190613338565b611926565b6040516106f79190613390565b60405180910390f35b34801561070b575f80fd5b50610714611943565b6040516107219190613390565b60405180910390f35b348015610735575f80fd5b50610750600480360381019061074b91906135af565b611956565b005b34801561075d575f80fd5b50610766611a78565b604051610773919061342c565b60405180910390f35b348015610787575f80fd5b50610790611a7e565b60405161079d919061342c565b60405180910390f35b3480156107b1575f80fd5b506107cc60048036038101906107c791906134f1565b611a84565b6040516107d99190613390565b60405180910390f35b3480156107ed575f80fd5b506107f6611bd8565b604051610803919061342c565b60405180910390f35b348015610817575f80fd5b50610832600480360381019061082d91906135ed565b611bde565b60405161083f919061342c565b60405180910390f35b348015610853575f80fd5b5061085c611c60565b604051610869919061342c565b60405180910390f35b34801561087d575f80fd5b50610898600480360381019061089391906134f1565b611c66565b005b3480156108a5575f80fd5b506108c060048036038101906108bb919061351c565b611d32565b005b3480156108cd575f80fd5b506108d6611e28565b6040516108e3919061342c565b60405180910390f35b6060600380546108fb90613658565b80601f016020809104026020016040519081016040528092919081815260200182805461092790613658565b80156109725780601f1061094957610100808354040283529160200191610972565b820191905f5260205f20905b81548152906001019060200180831161095557829003601f168201915b5050505050905090565b5f61098f610988611e2e565b8484611e35565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b60055481565b5f6109d8848484611ff8565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a1f611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a95906136f8565b60405180910390fd5b610ab285610aaa611e2e565b858403611e35565b60019150509392505050565b61dead81565b5f6012905090565b5f610b69610ad8611e2e565b848460015f610ae5611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b649190613743565b611e35565b6001905092915050565b610b7d3382612995565b50565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610bff611e2e565b73ffffffffffffffffffffffffffffffffffffffff16610c1d611636565b73ffffffffffffffffffffffffffffffffffffffff1614610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a906137c0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d16575f3373ffffffffffffffffffffffffffffffffffffffff1647604051610ccb9061380b565b5f6040518083038185875af1925050503d805f8114610d05576040519150601f19603f3d011682016040523d82523d5f602084013e610d0a565b606091505b50508091505050610ec8565b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d5091906134a4565b602060405180830381865afa158015610d6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8f9190613833565b11610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc6906138a8565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e0991906134a4565b602060405180830381865afa158015610e24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e489190613833565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610e859291906138c6565b6020604051808303815f875af1158015610ea1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec59190613901565b50505b50565b600e5481565b610ed9611e2e565b73ffffffffffffffffffffffffffffffffffffffff16610ef7611636565b73ffffffffffffffffffffffffffffffffffffffff1614610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f44906137c0565b60405180910390fd5b81600d8190555080600e81905550601e600d541115610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f989061399c565b60405180910390fd5b601e600e541115610fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fde9061399c565b60405180910390fd5b5050565b600c60159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61104b611e2e565b73ffffffffffffffffffffffffffffffffffffffff16611069611636565b73ffffffffffffffffffffffffffffffffffffffff16146110bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b6906137c0565b60405180910390fd5b6110c85f612b70565b565b6110d2611e2e565b73ffffffffffffffffffffffffffffffffffffffff166110f0611636565b73ffffffffffffffffffffffffffffffffffffffff1614611146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113d906137c0565b60405180910390fd5b80600d81905550601e600d541115611193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118a9061399c565b60405180910390fd5b50565b61119e611e2e565b73ffffffffffffffffffffffffffffffffffffffff166111bc611636565b73ffffffffffffffffffffffffffffffffffffffff1614611212576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611209906137c0565b60405180910390fd5b61121a6109bd565b600b819055506112286109bd565b600881905550565b611238611e2e565b73ffffffffffffffffffffffffffffffffffffffff16611256611636565b73ffffffffffffffffffffffffffffffffffffffff16146112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a3906137c0565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611331611e2e565b73ffffffffffffffffffffffffffffffffffffffff1661134f611636565b73ffffffffffffffffffffffffffffffffffffffff16146113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c906137c0565b60405180910390fd5b600c60149054906101000a900460ff16156113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec90613a04565b60405180910390fd5b5f6113ff30610ffe565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600581905550611471307f000000000000000000000000000000000000000000000000000000000000000061146c6109bd565b611e35565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7194730845f806114ba611636565b426040518863ffffffff1660e01b81526004016114dc96959493929190613a5b565b60606040518083038185885af11580156114f8573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061151d9190613aba565b50505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115bc9291906138c6565b6020604051808303815f875af11580156115d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115fc9190613901565b506001600c60146101000a81548160ff0219169083151502179055506001600c60156101000a81548160ff02191690831515021790555050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461166d90613658565b80601f016020809104026020016040519081016040528092919081815260200182805461169990613658565b80156116e45780601f106116bb576101008083540402835291602001916116e4565b820191905f5260205f20905b8154815290600101906020018083116116c757829003601f168201915b5050505050905090565b6116f6611e2e565b73ffffffffffffffffffffffffffffffffffffffff16611714611636565b73ffffffffffffffffffffffffffffffffffffffff161461176a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611761906137c0565b60405180910390fd5b606460026117766109bd565b6117809190613b0a565b61178a9190613b78565b8210156117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c390613c18565b60405180910390fd5b606460026117d86109bd565b6117e29190613b0a565b6117ec9190613b78565b81101561182e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182590613ca6565b60405180910390fd5b80600b81905550816008819055505050565b5f8060015f61184d611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fe90613d34565b60405180910390fd5b61191b611912611e2e565b85858403611e35565b600191505092915050565b5f611939611932611e2e565b8484611ff8565b6001905092915050565b600c60149054906101000a900460ff1681565b61195e611e2e565b73ffffffffffffffffffffffffffffffffffffffff1661197c611636565b73ffffffffffffffffffffffffffffffffffffffff16146119d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c9906137c0565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a6c9190613390565b60405180910390a25050565b60085481565b600a5481565b5f611a8d611e2e565b73ffffffffffffffffffffffffffffffffffffffff16611aab611636565b73ffffffffffffffffffffffffffffffffffffffff1614611b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af8906137c0565b60405180910390fd5b620186a06001611b0f6109bd565b611b199190613b0a565b611b239190613b78565b821015611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c90613dc2565b60405180910390fd5b6103e86005611b726109bd565b611b7c9190613b0a565b611b869190613b78565b821115611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf90613e50565b60405180910390fd5b8160098190555060019050919050565b600d5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b611c6e611e2e565b73ffffffffffffffffffffffffffffffffffffffff16611c8c611636565b73ffffffffffffffffffffffffffffffffffffffff1614611ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd9906137c0565b60405180910390fd5b80600e81905550601e600e541115611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d269061399c565b60405180910390fd5b50565b611d3a611e2e565b73ffffffffffffffffffffffffffffffffffffffff16611d58611636565b73ffffffffffffffffffffffffffffffffffffffff1614611dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da5906137c0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1390613ede565b60405180910390fd5b611e2581612b70565b50565b600b5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90613f6c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613ffa565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611feb919061342c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d90614088565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cb90614116565b60405180910390fd5b5f81036120eb576120e683835f612c33565b612990565b6120f3611636565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121615750612131611636565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561219957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121d3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121ec5750600760149054906101000a900460ff16155b156125ba57600c60149054906101000a900460ff166122e057600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806122a05750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6122df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d69061417e565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561237d575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612424576008548111156123c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123be9061420c565b60405180910390fd5b600b546123d383610ffe565b826123de9190613743565b111561241f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241690614274565b60405180910390fd5b6125b9565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124c1575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156125105760085481111561250b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250290614302565b60405180910390fd5b6125b8565b60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125b757600b5461256a83610ffe565b826125759190613743565b11156125b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ad90614274565b60405180910390fd5b5b5b5b5b5f6125c430610ffe565b90505f60095482101590508080156125e85750600c60159054906101000a900460ff165b80156126015750600760149054906101000a900460ff16155b8015612654575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156126a75750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156126fa5750600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561278b57600360125f4381526020019081526020015f2054101561278a576001600760146101000a81548160ff02191690831515021790555061273c612ea8565b5f600760146101000a81548160ff021916908315150217905550600160125f4381526020019081526020015f20546127749190613743565b60125f4381526020019081526020015f20819055505b5b5f600760149054906101000a900460ff16159050600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061283a5750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612843575f90505b5f81156129805760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128a157505f600e54115b156128d5576128ce60646128c0600e5488612f7590919063ffffffff16565b612f8a90919063ffffffff16565b905061295d565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561292c57505f600d54115b1561295c57612959606461294b600d5488612f7590919063ffffffff16565b612f8a90919063ffffffff16565b90505b5b5f81111561297157612970873083612c33565b5b808561297d9190614320565b94505b61298b878787612c33565b505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fa906143c3565b60405180910390fd5b612a0e825f83612f9f565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101580612a615750612a60612fa4565b5b612aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9790614451565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f828254612af49190614320565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b58919061342c565b60405180910390a3612b6b835f84612fc5565b505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9890614088565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690614116565b60405180910390fd5b612d1a838383612f9f565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d94906144df565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612e2b9190613743565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e8f919061342c565b60405180910390a3612ea2848484612fc5565b50505050565b5f612eb230610ffe565b90505f808203612ec3575050612f73565b600a54821115612ed357600a5491505b5f829050612ee081612fca565b5f479050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612f299061380b565b5f6040518083038185875af1925050503d805f8114612f63576040519150601f19603f3d011682016040523d82523d5f602084013e612f68565b606091505b505080935050505050505b565b5f8183612f829190613b0a565b905092915050565b5f8183612f979190613b78565b905092915050565b505050565b5f3373ffffffffffffffffffffffffffffffffffffffff1660055414905090565b505050565b5f600267ffffffffffffffff811115612fe657612fe56144fd565b5b6040519080825280602002602001820160405280156130145781602001602082028036833780820191505090505b50905030815f8151811061302b5761302a61452a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130f2919061456b565b816001815181106131065761310561452a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061316b307f000000000000000000000000000000000000000000000000000000000000000084611e35565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016131cc95949392919061464d565b5f604051808303815f87803b1580156131e3575f80fd5b505af11580156131f5573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613234578082015181840152602081019050613219565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613259826131fd565b6132638185613207565b9350613273818560208601613217565b61327c8161323f565b840191505092915050565b5f6020820190508181035f83015261329f818461324f565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6132d4826132ab565b9050919050565b6132e4816132ca565b81146132ee575f80fd5b50565b5f813590506132ff816132db565b92915050565b5f819050919050565b61331781613305565b8114613321575f80fd5b50565b5f813590506133328161330e565b92915050565b5f806040838503121561334e5761334d6132a7565b5b5f61335b858286016132f1565b925050602061336c85828601613324565b9150509250929050565b5f8115159050919050565b61338a81613376565b82525050565b5f6020820190506133a35f830184613381565b92915050565b5f819050919050565b5f6133cc6133c76133c2846132ab565b6133a9565b6132ab565b9050919050565b5f6133dd826133b2565b9050919050565b5f6133ee826133d3565b9050919050565b6133fe816133e4565b82525050565b5f6020820190506134175f8301846133f5565b92915050565b61342681613305565b82525050565b5f60208201905061343f5f83018461341d565b92915050565b5f805f6060848603121561345c5761345b6132a7565b5b5f613469868287016132f1565b935050602061347a868287016132f1565b925050604061348b86828701613324565b9150509250925092565b61349e816132ca565b82525050565b5f6020820190506134b75f830184613495565b92915050565b5f60ff82169050919050565b6134d2816134bd565b82525050565b5f6020820190506134eb5f8301846134c9565b92915050565b5f60208284031215613506576135056132a7565b5b5f61351384828501613324565b91505092915050565b5f60208284031215613531576135306132a7565b5b5f61353e848285016132f1565b91505092915050565b5f806040838503121561355d5761355c6132a7565b5b5f61356a85828601613324565b925050602061357b85828601613324565b9150509250929050565b61358e81613376565b8114613598575f80fd5b50565b5f813590506135a981613585565b92915050565b5f80604083850312156135c5576135c46132a7565b5b5f6135d2858286016132f1565b92505060206135e38582860161359b565b9150509250929050565b5f8060408385031215613603576136026132a7565b5b5f613610858286016132f1565b9250506020613621858286016132f1565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061366f57607f821691505b6020821081036136825761368161362b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6136e2602883613207565b91506136ed82613688565b604082019050919050565b5f6020820190508181035f83015261370f816136d6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61374d82613305565b915061375883613305565b92508282019050808211156137705761376f613716565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137aa602083613207565b91506137b582613776565b602082019050919050565b5f6020820190508181035f8301526137d78161379e565b9050919050565b5f81905092915050565b50565b5f6137f65f836137de565b9150613801826137e8565b5f82019050919050565b5f613815826137eb565b9150819050919050565b5f8151905061382d8161330e565b92915050565b5f60208284031215613848576138476132a7565b5b5f6138558482850161381f565b91505092915050565b7f45524332303a204e6f20746f6b656e7320746f207769746864726177000000005f82015250565b5f613892601c83613207565b915061389d8261385e565b602082019050919050565b5f6020820190508181035f8301526138bf81613886565b9050919050565b5f6040820190506138d95f830185613495565b6138e6602083018461341d565b9392505050565b5f815190506138fb81613585565b92915050565b5f60208284031215613916576139156132a7565b5b5f613923848285016138ed565b91505092915050565b7f45524332303a204d757374206b656570206665657320617420333025206f72205f8201527f6c65737300000000000000000000000000000000000000000000000000000000602082015250565b5f613986602483613207565b91506139918261392c565b604082019050919050565b5f6020820190508181035f8301526139b38161397a565b9050919050565b7f54726164696e6720616c7265616479206163746976652e0000000000000000005f82015250565b5f6139ee601783613207565b91506139f9826139ba565b602082019050919050565b5f6020820190508181035f830152613a1b816139e2565b9050919050565b5f819050919050565b5f613a45613a40613a3b84613a22565b6133a9565b613305565b9050919050565b613a5581613a2b565b82525050565b5f60c082019050613a6e5f830189613495565b613a7b602083018861341d565b613a886040830187613a4c565b613a956060830186613a4c565b613aa26080830185613495565b613aaf60a083018461341d565b979650505050505050565b5f805f60608486031215613ad157613ad06132a7565b5b5f613ade8682870161381f565b9350506020613aef8682870161381f565b9250506040613b008682870161381f565b9150509250925092565b5f613b1482613305565b9150613b1f83613305565b9250828202613b2d81613305565b91508282048414831517613b4457613b43613716565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b8282613305565b9150613b8d83613305565b925082613b9d57613b9c613b4b565b5b828204905092915050565b7f45524332303a2043616e6e6f7420736574206d617854786e206c6f77657220745f8201527f68616e2032250000000000000000000000000000000000000000000000000000602082015250565b5f613c02602683613207565b9150613c0d82613ba8565b604082019050919050565b5f6020820190508181035f830152613c2f81613bf6565b9050919050565b7f45524332303a2043616e6e6f7420736574206d617857616c6c6574206c6f77655f8201527f72207468616e2032250000000000000000000000000000000000000000000000602082015250565b5f613c90602983613207565b9150613c9b82613c36565b604082019050919050565b5f6020820190508181035f830152613cbd81613c84565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613d1e602583613207565b9150613d2982613cc4565b604082019050919050565b5f6020820190508181035f830152613d4b81613d12565b9050919050565b7f45524332303a205377617020616d6f756e742063616e6e6f74206265206c6f775f8201527f6572207468616e20302e3030312520746f74616c20737570706c792e00000000602082015250565b5f613dac603c83613207565b9150613db782613d52565b604082019050919050565b5f6020820190508181035f830152613dd981613da0565b9050919050565b7f45524332303a205377617020616d6f756e742063616e6e6f74206265206869675f8201527f686572207468616e20302e352520746f74616c20737570706c792e0000000000602082015250565b5f613e3a603b83613207565b9150613e4582613de0565b604082019050919050565b5f6020820190508181035f830152613e6781613e2e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613ec8602683613207565b9150613ed382613e6e565b604082019050919050565b5f6020820190508181035f830152613ef581613ebc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613f56602483613207565b9150613f6182613efc565b604082019050919050565b5f6020820190508181035f830152613f8381613f4a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613fe4602283613207565b9150613fef82613f8a565b604082019050919050565b5f6020820190508181035f83015261401181613fd8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614072602583613207565b915061407d82614018565b604082019050919050565b5f6020820190508181035f83015261409f81614066565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614100602383613207565b915061410b826140a6565b604082019050919050565b5f6020820190508181035f83015261412d816140f4565b9050919050565b7f45524332303a2054726164696e67206973206e6f74206163746976652e0000005f82015250565b5f614168601d83613207565b915061417382614134565b602082019050919050565b5f6020820190508181035f8301526141958161415c565b9050919050565b7f45524332303a20427579207472616e7366657220616d6f756e742065786365655f8201527f647320746865206d61785472616e73616374696f6e416d6f756e742e00000000602082015250565b5f6141f6603c83613207565b91506142018261419c565b604082019050919050565b5f6020820190508181035f830152614223816141ea565b9050919050565b7f45524332303a204d61782077616c6c65742065786365656465640000000000005f82015250565b5f61425e601a83613207565b91506142698261422a565b602082019050919050565b5f6020820190508181035f83015261428b81614252565b9050919050565b7f45524332303a2053656c6c207472616e7366657220616d6f756e7420657863655f8201527f65647320746865206d61785472616e73616374696f6e416d6f756e742e000000602082015250565b5f6142ec603d83613207565b91506142f782614292565b604082019050919050565b5f6020820190508181035f830152614319816142e0565b9050919050565b5f61432a82613305565b915061433583613305565b925082820390508181111561434d5761434c613716565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6143ad602183613207565b91506143b882614353565b604082019050919050565b5f6020820190508181035f8301526143da816143a1565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f61443b602283613207565b9150614446826143e1565b604082019050919050565b5f6020820190508181035f8301526144688161442f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6144c9602683613207565b91506144d48261446f565b604082019050919050565b5f6020820190508181035f8301526144f6816144bd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614565816132db565b92915050565b5f602082840312156145805761457f6132a7565b5b5f61458d84828501614557565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6145c8816132ca565b82525050565b5f6145d983836145bf565b60208301905092915050565b5f602082019050919050565b5f6145fb82614596565b61460581856145a0565b9350614610836145b0565b805f5b8381101561464057815161462788826145ce565b9750614632836145e5565b925050600181019050614613565b5085935050505092915050565b5f60a0820190506146605f83018861341d565b61466d6020830187613a4c565b818103604083015261467f81866145f1565b905061468e6060830185613495565b61469b608083018461341d565b969550505050505056fea26469706673582212209cd6a4aef040e6faf200adbbc055d8cd728a7acc97e967ede8c75ee0b6b3a11764736f6c63430008150033

Deployed Bytecode

0x608060405260043610610233575f3560e01c8063751039fc1161012d578063c0246668116100aa578063dd62ed3e1161006e578063dd62ed3e1461080c578063e2f4560514610848578063eba4c33314610872578063f2fde38b1461089a578063f8b45b05146108c25761023a565b8063c02466681461072a578063c8c8ebe414610752578063cce987d41461077c578063d257b34f146107a6578063d85ba063146107e25761023a565b806395d89b41116100f157806395d89b41146106365780639618839914610660578063a457c2d714610688578063a9059cbb146106c4578063bbc0c742146107005761023a565b8063751039fc1461059a5780637571336a146105b057806375f0a874146105d85780638a8c523c146106025780638da5cb5b1461060c5761023a565b806342966c68116101bb5780636db794371161017f5780636db79437146104ce5780636ddd1713146104f657806370a0823114610520578063715018a61461055c57806371fc4688146105725761023a565b806342966c68146103ee57806349bd5a5e146104165780634fbee1931461044057806360a6f45a1461047c5780636a486a8e146104a45761023a565b806319e1fca41161020257806319e1fca4146102f857806323b872dd1461032257806327c8f8351461035e578063313ce5671461038857806339509351146103b25761023a565b806306fdde031461023e578063095ea7b3146102685780631694505e146102a457806318160ddd146102ce5761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b506102526108ec565b60405161025f9190613287565b60405180910390f35b348015610273575f80fd5b5061028e60048036038101906102899190613338565b61097c565b60405161029b9190613390565b60405180910390f35b3480156102af575f80fd5b506102b8610999565b6040516102c59190613404565b60405180910390f35b3480156102d9575f80fd5b506102e26109bd565b6040516102ef919061342c565b60405180910390f35b348015610303575f80fd5b5061030c6109c6565b604051610319919061342c565b60405180910390f35b34801561032d575f80fd5b5061034860048036038101906103439190613445565b6109cc565b6040516103559190613390565b60405180910390f35b348015610369575f80fd5b50610372610abe565b60405161037f91906134a4565b60405180910390f35b348015610393575f80fd5b5061039c610ac4565b6040516103a991906134d8565b60405180910390f35b3480156103bd575f80fd5b506103d860048036038101906103d39190613338565b610acc565b6040516103e59190613390565b60405180910390f35b3480156103f9575f80fd5b50610414600480360381019061040f91906134f1565b610b73565b005b348015610421575f80fd5b5061042a610b80565b60405161043791906134a4565b60405180910390f35b34801561044b575f80fd5b506104666004803603810190610461919061351c565b610ba5565b6040516104739190613390565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061351c565b610bf7565b005b3480156104af575f80fd5b506104b8610ecb565b6040516104c5919061342c565b60405180910390f35b3480156104d9575f80fd5b506104f460048036038101906104ef9190613547565b610ed1565b005b348015610501575f80fd5b5061050a610feb565b6040516105179190613390565b60405180910390f35b34801561052b575f80fd5b506105466004803603810190610541919061351c565b610ffe565b604051610553919061342c565b60405180910390f35b348015610567575f80fd5b50610570611043565b005b34801561057d575f80fd5b50610598600480360381019061059391906134f1565b6110ca565b005b3480156105a5575f80fd5b506105ae611196565b005b3480156105bb575f80fd5b506105d660048036038101906105d191906135af565b611230565b005b3480156105e3575f80fd5b506105ec611304565b6040516105f991906134a4565b60405180910390f35b61060a611329565b005b348015610617575f80fd5b50610620611636565b60405161062d91906134a4565b60405180910390f35b348015610641575f80fd5b5061064a61165e565b6040516106579190613287565b60405180910390f35b34801561066b575f80fd5b5061068660048036038101906106819190613547565b6116ee565b005b348015610693575f80fd5b506106ae60048036038101906106a99190613338565b611840565b6040516106bb9190613390565b60405180910390f35b3480156106cf575f80fd5b506106ea60048036038101906106e59190613338565b611926565b6040516106f79190613390565b60405180910390f35b34801561070b575f80fd5b50610714611943565b6040516107219190613390565b60405180910390f35b348015610735575f80fd5b50610750600480360381019061074b91906135af565b611956565b005b34801561075d575f80fd5b50610766611a78565b604051610773919061342c565b60405180910390f35b348015610787575f80fd5b50610790611a7e565b60405161079d919061342c565b60405180910390f35b3480156107b1575f80fd5b506107cc60048036038101906107c791906134f1565b611a84565b6040516107d99190613390565b60405180910390f35b3480156107ed575f80fd5b506107f6611bd8565b604051610803919061342c565b60405180910390f35b348015610817575f80fd5b50610832600480360381019061082d91906135ed565b611bde565b60405161083f919061342c565b60405180910390f35b348015610853575f80fd5b5061085c611c60565b604051610869919061342c565b60405180910390f35b34801561087d575f80fd5b50610898600480360381019061089391906134f1565b611c66565b005b3480156108a5575f80fd5b506108c060048036038101906108bb919061351c565b611d32565b005b3480156108cd575f80fd5b506108d6611e28565b6040516108e3919061342c565b60405180910390f35b6060600380546108fb90613658565b80601f016020809104026020016040519081016040528092919081815260200182805461092790613658565b80156109725780601f1061094957610100808354040283529160200191610972565b820191905f5260205f20905b81548152906001019060200180831161095557829003601f168201915b5050505050905090565b5f61098f610988611e2e565b8484611e35565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b60055481565b5f6109d8848484611ff8565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a1f611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a95906136f8565b60405180910390fd5b610ab285610aaa611e2e565b858403611e35565b60019150509392505050565b61dead81565b5f6012905090565b5f610b69610ad8611e2e565b848460015f610ae5611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b649190613743565b611e35565b6001905092915050565b610b7d3382612995565b50565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610bff611e2e565b73ffffffffffffffffffffffffffffffffffffffff16610c1d611636565b73ffffffffffffffffffffffffffffffffffffffff1614610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a906137c0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d16575f3373ffffffffffffffffffffffffffffffffffffffff1647604051610ccb9061380b565b5f6040518083038185875af1925050503d805f8114610d05576040519150601f19603f3d011682016040523d82523d5f602084013e610d0a565b606091505b50508091505050610ec8565b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d5091906134a4565b602060405180830381865afa158015610d6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8f9190613833565b11610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc6906138a8565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e0991906134a4565b602060405180830381865afa158015610e24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e489190613833565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610e859291906138c6565b6020604051808303815f875af1158015610ea1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec59190613901565b50505b50565b600e5481565b610ed9611e2e565b73ffffffffffffffffffffffffffffffffffffffff16610ef7611636565b73ffffffffffffffffffffffffffffffffffffffff1614610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f44906137c0565b60405180910390fd5b81600d8190555080600e81905550601e600d541115610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f989061399c565b60405180910390fd5b601e600e541115610fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fde9061399c565b60405180910390fd5b5050565b600c60159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61104b611e2e565b73ffffffffffffffffffffffffffffffffffffffff16611069611636565b73ffffffffffffffffffffffffffffffffffffffff16146110bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b6906137c0565b60405180910390fd5b6110c85f612b70565b565b6110d2611e2e565b73ffffffffffffffffffffffffffffffffffffffff166110f0611636565b73ffffffffffffffffffffffffffffffffffffffff1614611146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113d906137c0565b60405180910390fd5b80600d81905550601e600d541115611193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118a9061399c565b60405180910390fd5b50565b61119e611e2e565b73ffffffffffffffffffffffffffffffffffffffff166111bc611636565b73ffffffffffffffffffffffffffffffffffffffff1614611212576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611209906137c0565b60405180910390fd5b61121a6109bd565b600b819055506112286109bd565b600881905550565b611238611e2e565b73ffffffffffffffffffffffffffffffffffffffff16611256611636565b73ffffffffffffffffffffffffffffffffffffffff16146112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a3906137c0565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611331611e2e565b73ffffffffffffffffffffffffffffffffffffffff1661134f611636565b73ffffffffffffffffffffffffffffffffffffffff16146113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c906137c0565b60405180910390fd5b600c60149054906101000a900460ff16156113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec90613a04565b60405180910390fd5b5f6113ff30610ffe565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600581905550611471307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d61146c6109bd565b611e35565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7194730845f806114ba611636565b426040518863ffffffff1660e01b81526004016114dc96959493929190613a5b565b60606040518083038185885af11580156114f8573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061151d9190613aba565b50505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115bc9291906138c6565b6020604051808303815f875af11580156115d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115fc9190613901565b506001600c60146101000a81548160ff0219169083151502179055506001600c60156101000a81548160ff02191690831515021790555050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461166d90613658565b80601f016020809104026020016040519081016040528092919081815260200182805461169990613658565b80156116e45780601f106116bb576101008083540402835291602001916116e4565b820191905f5260205f20905b8154815290600101906020018083116116c757829003601f168201915b5050505050905090565b6116f6611e2e565b73ffffffffffffffffffffffffffffffffffffffff16611714611636565b73ffffffffffffffffffffffffffffffffffffffff161461176a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611761906137c0565b60405180910390fd5b606460026117766109bd565b6117809190613b0a565b61178a9190613b78565b8210156117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c390613c18565b60405180910390fd5b606460026117d86109bd565b6117e29190613b0a565b6117ec9190613b78565b81101561182e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182590613ca6565b60405180910390fd5b80600b81905550816008819055505050565b5f8060015f61184d611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fe90613d34565b60405180910390fd5b61191b611912611e2e565b85858403611e35565b600191505092915050565b5f611939611932611e2e565b8484611ff8565b6001905092915050565b600c60149054906101000a900460ff1681565b61195e611e2e565b73ffffffffffffffffffffffffffffffffffffffff1661197c611636565b73ffffffffffffffffffffffffffffffffffffffff16146119d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c9906137c0565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a6c9190613390565b60405180910390a25050565b60085481565b600a5481565b5f611a8d611e2e565b73ffffffffffffffffffffffffffffffffffffffff16611aab611636565b73ffffffffffffffffffffffffffffffffffffffff1614611b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af8906137c0565b60405180910390fd5b620186a06001611b0f6109bd565b611b199190613b0a565b611b239190613b78565b821015611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c90613dc2565b60405180910390fd5b6103e86005611b726109bd565b611b7c9190613b0a565b611b869190613b78565b821115611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf90613e50565b60405180910390fd5b8160098190555060019050919050565b600d5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b611c6e611e2e565b73ffffffffffffffffffffffffffffffffffffffff16611c8c611636565b73ffffffffffffffffffffffffffffffffffffffff1614611ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd9906137c0565b60405180910390fd5b80600e81905550601e600e541115611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d269061399c565b60405180910390fd5b50565b611d3a611e2e565b73ffffffffffffffffffffffffffffffffffffffff16611d58611636565b73ffffffffffffffffffffffffffffffffffffffff1614611dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da5906137c0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1390613ede565b60405180910390fd5b611e2581612b70565b50565b600b5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90613f6c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613ffa565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611feb919061342c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d90614088565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cb90614116565b60405180910390fd5b5f81036120eb576120e683835f612c33565b612990565b6120f3611636565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121615750612131611636565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561219957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121d3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121ec5750600760149054906101000a900460ff16155b156125ba57600c60149054906101000a900460ff166122e057600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806122a05750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6122df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d69061417e565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561237d575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612424576008548111156123c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123be9061420c565b60405180910390fd5b600b546123d383610ffe565b826123de9190613743565b111561241f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241690614274565b60405180910390fd5b6125b9565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124c1575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156125105760085481111561250b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250290614302565b60405180910390fd5b6125b8565b60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125b757600b5461256a83610ffe565b826125759190613743565b11156125b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ad90614274565b60405180910390fd5b5b5b5b5b5f6125c430610ffe565b90505f60095482101590508080156125e85750600c60159054906101000a900460ff165b80156126015750600760149054906101000a900460ff16155b8015612654575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156126a75750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156126fa5750600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561278b57600360125f4381526020019081526020015f2054101561278a576001600760146101000a81548160ff02191690831515021790555061273c612ea8565b5f600760146101000a81548160ff021916908315150217905550600160125f4381526020019081526020015f20546127749190613743565b60125f4381526020019081526020015f20819055505b5b5f600760149054906101000a900460ff16159050600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061283a5750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612843575f90505b5f81156129805760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128a157505f600e54115b156128d5576128ce60646128c0600e5488612f7590919063ffffffff16565b612f8a90919063ffffffff16565b905061295d565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561292c57505f600d54115b1561295c57612959606461294b600d5488612f7590919063ffffffff16565b612f8a90919063ffffffff16565b90505b5b5f81111561297157612970873083612c33565b5b808561297d9190614320565b94505b61298b878787612c33565b505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fa906143c3565b60405180910390fd5b612a0e825f83612f9f565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101580612a615750612a60612fa4565b5b612aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9790614451565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f828254612af49190614320565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b58919061342c565b60405180910390a3612b6b835f84612fc5565b505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9890614088565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690614116565b60405180910390fd5b612d1a838383612f9f565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d94906144df565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612e2b9190613743565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e8f919061342c565b60405180910390a3612ea2848484612fc5565b50505050565b5f612eb230610ffe565b90505f808203612ec3575050612f73565b600a54821115612ed357600a5491505b5f829050612ee081612fca565b5f479050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612f299061380b565b5f6040518083038185875af1925050503d805f8114612f63576040519150601f19603f3d011682016040523d82523d5f602084013e612f68565b606091505b505080935050505050505b565b5f8183612f829190613b0a565b905092915050565b5f8183612f979190613b78565b905092915050565b505050565b5f3373ffffffffffffffffffffffffffffffffffffffff1660055414905090565b505050565b5f600267ffffffffffffffff811115612fe657612fe56144fd565b5b6040519080825280602002602001820160405280156130145781602001602082028036833780820191505090505b50905030815f8151811061302b5761302a61452a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130f2919061456b565b816001815181106131065761310561452a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061316b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611e35565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016131cc95949392919061464d565b5f604051808303815f87803b1580156131e3575f80fd5b505af11580156131f5573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613234578082015181840152602081019050613219565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613259826131fd565b6132638185613207565b9350613273818560208601613217565b61327c8161323f565b840191505092915050565b5f6020820190508181035f83015261329f818461324f565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6132d4826132ab565b9050919050565b6132e4816132ca565b81146132ee575f80fd5b50565b5f813590506132ff816132db565b92915050565b5f819050919050565b61331781613305565b8114613321575f80fd5b50565b5f813590506133328161330e565b92915050565b5f806040838503121561334e5761334d6132a7565b5b5f61335b858286016132f1565b925050602061336c85828601613324565b9150509250929050565b5f8115159050919050565b61338a81613376565b82525050565b5f6020820190506133a35f830184613381565b92915050565b5f819050919050565b5f6133cc6133c76133c2846132ab565b6133a9565b6132ab565b9050919050565b5f6133dd826133b2565b9050919050565b5f6133ee826133d3565b9050919050565b6133fe816133e4565b82525050565b5f6020820190506134175f8301846133f5565b92915050565b61342681613305565b82525050565b5f60208201905061343f5f83018461341d565b92915050565b5f805f6060848603121561345c5761345b6132a7565b5b5f613469868287016132f1565b935050602061347a868287016132f1565b925050604061348b86828701613324565b9150509250925092565b61349e816132ca565b82525050565b5f6020820190506134b75f830184613495565b92915050565b5f60ff82169050919050565b6134d2816134bd565b82525050565b5f6020820190506134eb5f8301846134c9565b92915050565b5f60208284031215613506576135056132a7565b5b5f61351384828501613324565b91505092915050565b5f60208284031215613531576135306132a7565b5b5f61353e848285016132f1565b91505092915050565b5f806040838503121561355d5761355c6132a7565b5b5f61356a85828601613324565b925050602061357b85828601613324565b9150509250929050565b61358e81613376565b8114613598575f80fd5b50565b5f813590506135a981613585565b92915050565b5f80604083850312156135c5576135c46132a7565b5b5f6135d2858286016132f1565b92505060206135e38582860161359b565b9150509250929050565b5f8060408385031215613603576136026132a7565b5b5f613610858286016132f1565b9250506020613621858286016132f1565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061366f57607f821691505b6020821081036136825761368161362b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6136e2602883613207565b91506136ed82613688565b604082019050919050565b5f6020820190508181035f83015261370f816136d6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61374d82613305565b915061375883613305565b92508282019050808211156137705761376f613716565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137aa602083613207565b91506137b582613776565b602082019050919050565b5f6020820190508181035f8301526137d78161379e565b9050919050565b5f81905092915050565b50565b5f6137f65f836137de565b9150613801826137e8565b5f82019050919050565b5f613815826137eb565b9150819050919050565b5f8151905061382d8161330e565b92915050565b5f60208284031215613848576138476132a7565b5b5f6138558482850161381f565b91505092915050565b7f45524332303a204e6f20746f6b656e7320746f207769746864726177000000005f82015250565b5f613892601c83613207565b915061389d8261385e565b602082019050919050565b5f6020820190508181035f8301526138bf81613886565b9050919050565b5f6040820190506138d95f830185613495565b6138e6602083018461341d565b9392505050565b5f815190506138fb81613585565b92915050565b5f60208284031215613916576139156132a7565b5b5f613923848285016138ed565b91505092915050565b7f45524332303a204d757374206b656570206665657320617420333025206f72205f8201527f6c65737300000000000000000000000000000000000000000000000000000000602082015250565b5f613986602483613207565b91506139918261392c565b604082019050919050565b5f6020820190508181035f8301526139b38161397a565b9050919050565b7f54726164696e6720616c7265616479206163746976652e0000000000000000005f82015250565b5f6139ee601783613207565b91506139f9826139ba565b602082019050919050565b5f6020820190508181035f830152613a1b816139e2565b9050919050565b5f819050919050565b5f613a45613a40613a3b84613a22565b6133a9565b613305565b9050919050565b613a5581613a2b565b82525050565b5f60c082019050613a6e5f830189613495565b613a7b602083018861341d565b613a886040830187613a4c565b613a956060830186613a4c565b613aa26080830185613495565b613aaf60a083018461341d565b979650505050505050565b5f805f60608486031215613ad157613ad06132a7565b5b5f613ade8682870161381f565b9350506020613aef8682870161381f565b9250506040613b008682870161381f565b9150509250925092565b5f613b1482613305565b9150613b1f83613305565b9250828202613b2d81613305565b91508282048414831517613b4457613b43613716565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b8282613305565b9150613b8d83613305565b925082613b9d57613b9c613b4b565b5b828204905092915050565b7f45524332303a2043616e6e6f7420736574206d617854786e206c6f77657220745f8201527f68616e2032250000000000000000000000000000000000000000000000000000602082015250565b5f613c02602683613207565b9150613c0d82613ba8565b604082019050919050565b5f6020820190508181035f830152613c2f81613bf6565b9050919050565b7f45524332303a2043616e6e6f7420736574206d617857616c6c6574206c6f77655f8201527f72207468616e2032250000000000000000000000000000000000000000000000602082015250565b5f613c90602983613207565b9150613c9b82613c36565b604082019050919050565b5f6020820190508181035f830152613cbd81613c84565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613d1e602583613207565b9150613d2982613cc4565b604082019050919050565b5f6020820190508181035f830152613d4b81613d12565b9050919050565b7f45524332303a205377617020616d6f756e742063616e6e6f74206265206c6f775f8201527f6572207468616e20302e3030312520746f74616c20737570706c792e00000000602082015250565b5f613dac603c83613207565b9150613db782613d52565b604082019050919050565b5f6020820190508181035f830152613dd981613da0565b9050919050565b7f45524332303a205377617020616d6f756e742063616e6e6f74206265206869675f8201527f686572207468616e20302e352520746f74616c20737570706c792e0000000000602082015250565b5f613e3a603b83613207565b9150613e4582613de0565b604082019050919050565b5f6020820190508181035f830152613e6781613e2e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613ec8602683613207565b9150613ed382613e6e565b604082019050919050565b5f6020820190508181035f830152613ef581613ebc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613f56602483613207565b9150613f6182613efc565b604082019050919050565b5f6020820190508181035f830152613f8381613f4a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613fe4602283613207565b9150613fef82613f8a565b604082019050919050565b5f6020820190508181035f83015261401181613fd8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614072602583613207565b915061407d82614018565b604082019050919050565b5f6020820190508181035f83015261409f81614066565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614100602383613207565b915061410b826140a6565b604082019050919050565b5f6020820190508181035f83015261412d816140f4565b9050919050565b7f45524332303a2054726164696e67206973206e6f74206163746976652e0000005f82015250565b5f614168601d83613207565b915061417382614134565b602082019050919050565b5f6020820190508181035f8301526141958161415c565b9050919050565b7f45524332303a20427579207472616e7366657220616d6f756e742065786365655f8201527f647320746865206d61785472616e73616374696f6e416d6f756e742e00000000602082015250565b5f6141f6603c83613207565b91506142018261419c565b604082019050919050565b5f6020820190508181035f830152614223816141ea565b9050919050565b7f45524332303a204d61782077616c6c65742065786365656465640000000000005f82015250565b5f61425e601a83613207565b91506142698261422a565b602082019050919050565b5f6020820190508181035f83015261428b81614252565b9050919050565b7f45524332303a2053656c6c207472616e7366657220616d6f756e7420657863655f8201527f65647320746865206d61785472616e73616374696f6e416d6f756e742e000000602082015250565b5f6142ec603d83613207565b91506142f782614292565b604082019050919050565b5f6020820190508181035f830152614319816142e0565b9050919050565b5f61432a82613305565b915061433583613305565b925082820390508181111561434d5761434c613716565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6143ad602183613207565b91506143b882614353565b604082019050919050565b5f6020820190508181035f8301526143da816143a1565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f61443b602283613207565b9150614446826143e1565b604082019050919050565b5f6020820190508181035f8301526144688161442f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6144c9602683613207565b91506144d48261446f565b604082019050919050565b5f6020820190508181035f8301526144f6816144bd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614565816132db565b92915050565b5f602082840312156145805761457f6132a7565b5b5f61458d84828501614557565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6145c8816132ca565b82525050565b5f6145d983836145bf565b60208301905092915050565b5f602082019050919050565b5f6145fb82614596565b61460581856145a0565b9350614610836145b0565b805f5b8381101561464057815161462788826145ce565b9750614632836145e5565b925050600181019050614613565b5085935050505092915050565b5f60a0820190506146605f83018861341d565b61466d6020830187613a4c565b818103604083015261467f81866145f1565b905061468e6060830185613495565b61469b608083018461341d565b969550505050505056fea26469706673582212209cd6a4aef040e6faf200adbbc055d8cd728a7acc97e967ede8c75ee0b6b3a11764736f6c63430008150033

Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.