ETH Price: $2,609.61 (+0.67%)

Token

NeuroTensor (NTR)
 

Overview

Max Total Supply

100,000,000 NTR

Holders

27

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: NTR 6
Balance
60,627,520.416110610159131038 NTR

Value
$0.00
0x0fe8b993fe1ea280574af3a69b64282d9cf9a0c8
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:
NeuroTensor

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-22
*/

/*

WEB: https://neurotensor.tech/

https://linktr.ee/neurotensor


*/


// SPDX-License-Identifier: MIT

pragma solidity ^0.8.22;

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

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

interface IReceiver {
    function onTokenReceived(address from, uint256 value, bytes calldata data) external returns (bool);
}



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

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 Burn(
        address indexed sender, 
        uint256 amount0, 
        uint256 amount1, 
        address indexed to
    );
    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 burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

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

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

    bool private swapping;

    address private taxWallet1;
    address private taxWallet2;

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

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 private launchedAt;
    uint256 private launchedTime;
    uint256 public deadBlocks;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event walletOneUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );
    event walletTwoUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );
    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor() ERC20("NeuroTensor", "NTR") {
        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 totalSupply = 100_000_000 * 1e18;

        maxTransactionAmount = (totalSupply * 2) / 100;

        maxWallet = (totalSupply * 2) / 100;

        swapTokensAtAmount = (totalSupply * 1) / 10000;

        taxWallet1 = msg.sender;

        taxWallet2 = msg.sender;

        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(uint256 _deadBlocks) external onlyOwner {
        deadBlocks = _deadBlocks;
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
        launchedTime = block.timestamp;
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function updateSwapTokensAtAmount(
        uint256 newAmount
    ) external onlyOwner returns (bool) {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10 ** 18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10 ** 18);
    }

    function whitelistContract(address _whitelist, bool isWL) public onlyOwner {
        _isExcludedMaxTransactionAmount[_whitelist] = isWL;

        _isExcludedFromFees[_whitelist] = isWL;
    }

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

    
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

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

    function manualSwap(uint256 amount) external {
        require(_msgSender() == taxWallet1);
        require(
            amount <= balanceOf(address(this)) && amount > 0,
            "Wrong amount"
        );
        swapTokensForEth(amount);
    }

    function manualSend() external {
        bool success;
        (success, ) = address(taxWallet1).call{value: address(this).balance}(
            ""
        );
    }

    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 updateBuyFees(uint256 _marketingFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyTotalFees = buyMarketingFee;
        require(buyTotalFees <= 50, "Must keep fees at 50% or less");
    }

    function updateSellFees(uint256 _marketingFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellTotalFees = sellMarketingFee;
        require(sellTotalFees <= 50, "Must keep fees at 50% or less");
    }

    function updateWallets(
        address newWalletOne, 
        address newWalletTwo
    ) external onlyOwner {
        emit walletOneUpdated(newWalletOne, taxWallet1);
        emit walletTwoUpdated(newWalletTwo, taxWallet2);
        taxWallet1 = newWalletOne;
        taxWallet2 = newWalletTwo;
    }

function bulkTransfer(address[] calldata to, uint256[] calldata values) public returns (bool) {
    require(to.length == values.length, "Mismatched array lengths");
    for (uint256 i = 0; i < to.length; i++) {
        transfer(to[i], values[i]);
    }
    return true;
}

function approveAndCall(address spender, uint256 value, bytes calldata data) public returns (bool) {
    approve(spender, value);
    require(IReceiver(spender).onTokenReceived(msg.sender, value, data), "onTokenReceived failed");
    return true;
}

function transferAndCall(address to, uint256 value, bytes calldata data) public returns (bool) {
    transfer(to, value);
    require(IReceiver(to).onTokenReceived(msg.sender, value, data), "onTokenReceived failed");
    return true;
}

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

        uint256 blockNum = block.number;

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if ((launchedAt + deadBlocks) >= blockNum) {
                    buyMarketingFee = 35;
                    buyTotalFees = buyMarketingFee;

                    sellMarketingFee = 35;
                    sellTotalFees = sellMarketingFee;
                } else {
                    buyMarketingFee = 35;
                    buyTotalFees = buyMarketingFee;

                    sellMarketingFee = 35;
                    sellTotalFees = sellMarketingFee;
                }

                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
               
                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"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            ++swapInBlock[blockNum];

            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);
            }
            // 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 > swapTokensAtAmount * 50) {
            contractBalance = swapTokensAtAmount * 50;
        }

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

        (success, ) = address(taxWallet1).call{
            value: address(this).balance / 2
        }("");
        (success, ) = address(taxWallet2).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":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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"walletOneUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"walletTwoUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"bulkTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","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":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWalletOne","type":"address"},{"internalType":"address","name":"newWalletTwo","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"},{"internalType":"bool","name":"isWL","type":"bool"}],"name":"whitelistContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600b805462ffffff191660011790553480156200001f575f80fd5b506040518060400160405280600b81526020016a2732bab937aa32b739b7b960a91b81525060405180604001604052806003815260200162272a2960e91b81525081600390816200007191906200069b565b5060046200008082826200069b565b5050506200009d620000976200034f60201b60201c565b62000353565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000bf816001620003a4565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000108573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200012e919062000767565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a0919062000767565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000211919062000767565b6001600160a01b031660a08190526200022c906001620003a4565b60a0516200023c9060016200041c565b6a52b7d2dcc80cd2e4000000606462000257826002620007aa565b620002639190620007ca565b600855606462000275826002620007aa565b620002819190620007ca565b600a5561271062000294826001620007aa565b620002a09190620007ca565b60095560068054336001600160a01b03199182168117909255600780549091169091179055620002e4620002dc6005546001600160a01b031690565b60016200046f565b620002f13060016200046f565b6200030061dead60016200046f565b6200031f620003176005546001600160a01b031690565b6001620003a4565b6200032c306001620003a4565b6200033b61dead6001620003a4565b62000347338262000517565b505062000800565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6005546001600160a01b03163314620003f25760405162461bcd60e51b815260206004820181905260248201525f8051602062002f6e83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b6001600160a01b0382165f81815260166020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620004b95760405162461bcd60e51b815260206004820181905260248201525f8051602062002f6e8339815191526044820152606401620003e9565b6001600160a01b0382165f81815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166200056f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620003e9565b8060025f828254620005829190620007ea565b90915550506001600160a01b0382165f9081526020819052604081208054839290620005b0908490620007ea565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200062757607f821691505b6020821081036200064657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005f957805f5260205f20601f840160051c81016020851015620006735750805b601f840160051c820191505b8181101562000694575f81556001016200067f565b5050505050565b81516001600160401b03811115620006b757620006b7620005fe565b620006cf81620006c8845462000612565b846200064c565b602080601f83116001811462000705575f8415620006ed5750858301515b5f19600386901b1c1916600185901b1785556200075f565b5f85815260208120601f198616915b82811015620007355788860151825594840194600190910190840162000714565b50858210156200075357878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6020828403121562000778575f80fd5b81516001600160a01b03811681146200078f575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620007c457620007c462000796565b92915050565b5f82620007e557634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620007c457620007c462000796565b60805160a0516127306200083e5f395f818161045c0152610e6501525f818161034501528181611e0701528181611ebe0152611efa01526127305ff3fe608060405260043610610283575f3560e01c80639213691311610155578063c8c8ebe4116100be578063e8ba854f11610078578063e8ba854f146107cf578063eba4c333146107ee578063f2fde38b1461080d578063f42938901461082c578063f8b45b0514610840578063fabb0b4f14610855575f80fd5b8063c8c8ebe41461070e578063cae9ca5114610723578063d257b34f14610742578063d85ba06314610761578063dd62ed3e14610776578063e2f45605146107ba575f80fd5b8063a9059cbb1161010f578063a9059cbb14610646578063b62496f514610665578063b70143c914610693578063bbc0c742146106b2578063c0246668146106d0578063c18bc195146106ef575f80fd5b806392136913146105a1578063924de9b7146105b657806395d89b41146105d55780639a7a23d6146105e9578063a457c2d714610608578063a672990c14610627575f80fd5b80634000aea0116101f7578063715018a6116101b1578063715018a6146104ff57806371fc468814610513578063751039fc146105325780637571336a1461054657806382aa7c68146105655780638da5cb5b14610584575f80fd5b80634000aea01461042c57806349bd5a5e1461044b5780634a62bb651461047e5780636a486a8e146104975780636ddd1713146104ac57806370a08231146104cb575f80fd5b806318160ddd1161024857806318160ddd1461037f578063203e727e1461039d57806323b872dd146103be57806327c8f835146103dd578063313ce567146103f2578063395093511461040d575f80fd5b806306fdde031461028e578063095ea7b3146102b857806310d5de53146102e7578063153a1f3e146103155780631694505e14610334575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102a261086a565b6040516102af91906121c5565b60405180910390f35b3480156102c3575f80fd5b506102d76102d2366004612225565b6108fa565b60405190151581526020016102af565b3480156102f2575f80fd5b506102d761030136600461224f565b60156020525f908152604090205460ff1681565b348015610320575f80fd5b506102d761032f3660046122b2565b610910565b34801561033f575f80fd5b506103677f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102af565b34801561038a575f80fd5b506002545b6040519081526020016102af565b3480156103a8575f80fd5b506103bc6103b7366004612319565b6109cc565b005b3480156103c9575f80fd5b506102d76103d8366004612330565b610aa9565b3480156103e8575f80fd5b5061036761dead81565b3480156103fd575f80fd5b50604051601281526020016102af565b348015610418575f80fd5b506102d7610427366004612225565b610b51565b348015610437575f80fd5b506102d761044636600461236e565b610b8c565b348015610456575f80fd5b506103677f000000000000000000000000000000000000000000000000000000000000000081565b348015610489575f80fd5b50600b546102d79060ff1681565b3480156104a2575f80fd5b5061038f60115481565b3480156104b7575f80fd5b50600b546102d79062010000900460ff1681565b3480156104d6575f80fd5b5061038f6104e536600461224f565b6001600160a01b03165f9081526020819052604090205490565b34801561050a575f80fd5b506103bc610c4f565b34801561051e575f80fd5b506103bc61052d366004612319565b610c84565b34801561053d575f80fd5b506102d7610d0c565b348015610551575f80fd5b506103bc6105603660046123fd565b610d48565b348015610570575f80fd5b506103bc61057f366004612319565b610d9c565b34801561058f575f80fd5b506005546001600160a01b0316610367565b3480156105ac575f80fd5b5061038f60125481565b3480156105c1575f80fd5b506103bc6105d0366004612434565b610de4565b3480156105e0575f80fd5b506102a2610e2a565b3480156105f4575f80fd5b506103bc6106033660046123fd565b610e39565b348015610613575f80fd5b506102d7610622366004612225565b610f18565b348015610632575f80fd5b506103bc6106413660046123fd565b610fb0565b348015610651575f80fd5b506102d7610660366004612225565b611017565b348015610670575f80fd5b506102d761067f36600461224f565b60166020525f908152604090205460ff1681565b34801561069e575f80fd5b506103bc6106ad366004612319565b611023565b3480156106bd575f80fd5b50600b546102d790610100900460ff1681565b3480156106db575f80fd5b506103bc6106ea3660046123fd565b6110a3565b3480156106fa575f80fd5b506103bc610709366004612319565b61112b565b348015610719575f80fd5b5061038f60085481565b34801561072e575f80fd5b506102d761073d36600461236e565b6111fc565b34801561074d575f80fd5b506102d761075c366004612319565b611207565b34801561076c575f80fd5b5061038f600f5481565b348015610781575f80fd5b5061038f61079036600461244f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156107c5575f80fd5b5061038f60095481565b3480156107da575f80fd5b506103bc6107e936600461244f565b611358565b3480156107f9575f80fd5b506103bc610808366004612319565b611424565b348015610818575f80fd5b506103bc61082736600461224f565b6114a9565b348015610837575f80fd5b506103bc611541565b34801561084b575f80fd5b5061038f600a5481565b348015610860575f80fd5b5061038f600e5481565b6060600380546108799061247b565b80601f01602080910402602001604051908101604052809291908181526020018280546108a59061247b565b80156108f05780601f106108c7576101008083540402835291602001916108f0565b820191905f5260205f20905b8154815290600101906020018083116108d357829003601f168201915b5050505050905090565b5f610906338484611596565b5060015b92915050565b5f8382146109655760405162461bcd60e51b815260206004820152601860248201527f4d69736d617463686564206172726179206c656e67746873000000000000000060448201526064015b60405180910390fd5b5f5b848110156109c0576109b7868683818110610984576109846124b3565b9050602002016020810190610999919061224f565b8585848181106109ab576109ab6124b3565b90506020020135611017565b50600101610967565b50600195945050505050565b6005546001600160a01b031633146109f65760405162461bcd60e51b815260040161095c906124c7565b670de0b6b3a76400006103e8610a0b60025490565b610a16906001612510565b610a209190612527565b610a2a9190612527565b811015610a915760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161095c565b610aa381670de0b6b3a7640000612510565b60085550565b5f610ab58484846116b9565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610b395760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161095c565b610b468533858403611596565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610906918590610b87908690612546565b611596565b5f610b978585611017565b50604051635f692aa160e11b81526001600160a01b0386169063bed2554290610bca903390889088908890600401612559565b6020604051808303815f875af1158015610be6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0a91906125a0565b610b465760405162461bcd60e51b81526020600482015260166024820152751bdb951bdad95b949958d95a5d99590819985a5b195960521b604482015260640161095c565b6005546001600160a01b03163314610c795760405162461bcd60e51b815260040161095c906124c7565b610c825f611d0e565b565b6005546001600160a01b03163314610cae5760405162461bcd60e51b815260040161095c906124c7565b6010819055600f8190556032811115610d095760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420353025206f72206c657373000000604482015260640161095c565b50565b6005545f906001600160a01b03163314610d385760405162461bcd60e51b815260040161095c906124c7565b50600b805460ff19169055600190565b6005546001600160a01b03163314610d725760405162461bcd60e51b815260040161095c906124c7565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610dc65760405162461bcd60e51b815260040161095c906124c7565b600e55600b805462ffff0019166201010017905543600c5542600d55565b6005546001600160a01b03163314610e0e5760405162461bcd60e51b815260040161095c906124c7565b600b8054911515620100000262ff000019909216919091179055565b6060600480546108799061247b565b6005546001600160a01b03163314610e635760405162461bcd60e51b815260040161095c906124c7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610f0a5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161095c565b610f148282611d5f565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610f995760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161095c565b610fa63385858403611596565b5060019392505050565b6005546001600160a01b03163314610fda5760405162461bcd60e51b815260040161095c906124c7565b6001600160a01b039091165f908152601560209081526040808320805494151560ff19958616811790915560139092529091208054909216179055565b5f6109063384846116b9565b6006546001600160a01b0316336001600160a01b031614611042575f80fd5b305f90815260208190526040902054811115801561105f57505f81115b61109a5760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b604482015260640161095c565b610d0981611db2565b6005546001600160a01b031633146110cd5760405162461bcd60e51b815260040161095c906124c7565b6001600160a01b0382165f81815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146111555760405162461bcd60e51b815260040161095c906124c7565b670de0b6b3a76400006103e861116a60025490565b611175906005612510565b61117f9190612527565b6111899190612527565b8110156111e45760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b606482015260840161095c565b6111f681670de0b6b3a7640000612510565b600a5550565b5f610b9785856108fa565b6005545f906001600160a01b031633146112335760405162461bcd60e51b815260040161095c906124c7565b620186a061124060025490565b61124b906001612510565b6112559190612527565b8210156112c25760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161095c565b6103e86112ce60025490565b6112d9906005612510565b6112e39190612527565b82111561134f5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161095c565b50600955600190565b6005546001600160a01b031633146113825760405162461bcd60e51b815260040161095c906124c7565b6006546040516001600160a01b03918216918416907fa99dead445593e0ad945143dc1b0f9b10d5ff5356d423a8428b064c9c9b3f507905f90a36007546040516001600160a01b03918216918316907ffc6e5ad4b1cc83c1340fc759e88f86ea75ce690eaf188413d0cf6b5290cc6334905f90a3600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b0316331461144e5760405162461bcd60e51b815260040161095c906124c7565b601281905560118190556032811115610d095760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420353025206f72206c657373000000604482015260640161095c565b6005546001600160a01b031633146114d35760405162461bcd60e51b815260040161095c906124c7565b6001600160a01b0381166115385760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161095c565b610d0981611d0e565b6006546040515f916001600160a01b03169047908381818185875af1925050503d805f811461158b576040519150601f19603f3d011682016040523d82523d5f602084013e611590565b606091505b50505050565b6001600160a01b0383166115f85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161095c565b6001600160a01b0382166116595760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161095c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116df5760405162461bcd60e51b815260040161095c906125bb565b6001600160a01b0382166117055760405162461bcd60e51b815260040161095c90612600565b805f0361171c5761171783835f611f68565b505050565b600b54439060ff1615611acf576005546001600160a01b0385811691161480159061175557506005546001600160a01b03848116911614155b801561176957506001600160a01b03831615155b801561178057506001600160a01b03831661dead14155b80156117965750600554600160a01b900460ff16155b15611acf5780600e54600c546117ac9190612546565b106117ca5760236010819055600f81905560128190556011556117df565b60236010819055600f81905560128190556011555b600b54610100900460ff16611870576001600160a01b0384165f9081526013602052604090205460ff168061182b57506001600160a01b0383165f9081526013602052604090205460ff165b6118705760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161095c565b6001600160a01b0384165f9081526016602052604090205460ff1680156118af57506001600160a01b0383165f9081526015602052604090205460ff16155b15611992576008548211156119245760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161095c565b600a546001600160a01b0384165f908152602081905260409020546119499084612546565b111561198d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161095c565b611acf565b6001600160a01b0383165f9081526016602052604090205460ff1680156119d157506001600160a01b0384165f9081526015602052604090205460ff16155b15611a475760085482111561198d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161095c565b6001600160a01b0383165f9081526015602052604090205460ff16611acf57600a546001600160a01b0384165f90815260208190526040902054611a8b9084612546565b1115611acf5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161095c565b305f9081526020819052604090205460095481108015908190611afa5750600b5462010000900460ff165b8015611b105750600554600160a01b900460ff16155b8015611b2957505f838152601460205260409020546002115b8015611b4d57506001600160a01b0386165f9081526016602052604090205460ff16155b8015611b7157506001600160a01b0386165f9081526013602052604090205460ff16155b8015611b9557506001600160a01b0385165f9081526013602052604090205460ff16155b15611be2576005805460ff60a01b1916600160a01b179055611bb56120bb565b5f8381526014602052604081208054909190611bd090612643565b909155506005805460ff60a01b191690555b6005546001600160a01b0387165f9081526013602052604090205460ff600160a01b909204821615911680611c2e57506001600160a01b0386165f9081526013602052604090205460ff165b15611c3657505f5b5f8115611cf9576001600160a01b0387165f9081526016602052604090205460ff168015611c6557505f601154115b15611c9157611c8a6064611c84601154896121a890919063ffffffff16565b906121ba565b9050611cdb565b6001600160a01b0388165f9081526016602052604090205460ff168015611cb957505f600f54115b15611cdb57611cd86064611c84600f54896121a890919063ffffffff16565b90505b8015611cec57611cec883083611f68565b611cf6818761265b565b95505b611d04888888611f68565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f81815260166020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611de557611de56124b3565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e61573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e85919061266e565b81600181518110611e9857611e986124b3565b60200260200101906001600160a01b031690816001600160a01b031681525050611ee3307f000000000000000000000000000000000000000000000000000000000000000084611596565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611f379085905f90869030904290600401612689565b5f604051808303815f87803b158015611f4e575f80fd5b505af1158015611f60573d5f803e3d5ffd5b505050505050565b6001600160a01b038316611f8e5760405162461bcd60e51b815260040161095c906125bb565b6001600160a01b038216611fb45760405162461bcd60e51b815260040161095c90612600565b6001600160a01b0383165f908152602081905260409020548181101561202b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161095c565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290612061908490612546565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120ad91815260200190565b60405180910390a350505050565b305f90815260208190526040812054908181036120d6575050565b6009546120e4906032612510565b8211156120fc576009546120f9906032612510565b91505b8161210681611db2565b6006546001600160a01b031661211d600247612527565b6040515f81818185875af1925050503d805f8114612156576040519150601f19603f3d011682016040523d82523d5f602084013e61215b565b606091505b50506007546040519193506001600160a01b03169047905f81818185875af1925050503d805f8114611f60576040519150601f19603f3d011682016040523d82523d5f602084013e611f60565b5f6121b38284612510565b9392505050565b5f6121b38284612527565b5f602080835283518060208501525f5b818110156121f1578581018301518582016040015282016121d5565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d09575f80fd5b5f8060408385031215612236575f80fd5b823561224181612211565b946020939093013593505050565b5f6020828403121561225f575f80fd5b81356121b381612211565b5f8083601f84011261227a575f80fd5b50813567ffffffffffffffff811115612291575f80fd5b6020830191508360208260051b85010111156122ab575f80fd5b9250929050565b5f805f80604085870312156122c5575f80fd5b843567ffffffffffffffff808211156122dc575f80fd5b6122e88883890161226a565b90965094506020870135915080821115612300575f80fd5b5061230d8782880161226a565b95989497509550505050565b5f60208284031215612329575f80fd5b5035919050565b5f805f60608486031215612342575f80fd5b833561234d81612211565b9250602084013561235d81612211565b929592945050506040919091013590565b5f805f8060608587031215612381575f80fd5b843561238c81612211565b935060208501359250604085013567ffffffffffffffff808211156123af575f80fd5b818701915087601f8301126123c2575f80fd5b8135818111156123d0575f80fd5b8860208285010111156123e1575f80fd5b95989497505060200194505050565b8015158114610d09575f80fd5b5f806040838503121561240e575f80fd5b823561241981612211565b91506020830135612429816123f0565b809150509250929050565b5f60208284031215612444575f80fd5b81356121b3816123f0565b5f8060408385031215612460575f80fd5b823561246b81612211565b9150602083013561242981612211565b600181811c9082168061248f57607f821691505b6020821081036124ad57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761090a5761090a6124fc565b5f8261254157634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561090a5761090a6124fc565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f602082840312156125b0575f80fd5b81516121b3816123f0565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60018201612654576126546124fc565b5060010190565b8181038181111561090a5761090a6124fc565b5f6020828403121561267e575f80fd5b81516121b381612211565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156126d95784516001600160a01b0316835293830193918301916001016126b4565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220ed660dfba75f437e7bb8ab32155ad7c6f0a852413c5fcec309ad31060d7f255664736f6c634300081600334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x608060405260043610610283575f3560e01c80639213691311610155578063c8c8ebe4116100be578063e8ba854f11610078578063e8ba854f146107cf578063eba4c333146107ee578063f2fde38b1461080d578063f42938901461082c578063f8b45b0514610840578063fabb0b4f14610855575f80fd5b8063c8c8ebe41461070e578063cae9ca5114610723578063d257b34f14610742578063d85ba06314610761578063dd62ed3e14610776578063e2f45605146107ba575f80fd5b8063a9059cbb1161010f578063a9059cbb14610646578063b62496f514610665578063b70143c914610693578063bbc0c742146106b2578063c0246668146106d0578063c18bc195146106ef575f80fd5b806392136913146105a1578063924de9b7146105b657806395d89b41146105d55780639a7a23d6146105e9578063a457c2d714610608578063a672990c14610627575f80fd5b80634000aea0116101f7578063715018a6116101b1578063715018a6146104ff57806371fc468814610513578063751039fc146105325780637571336a1461054657806382aa7c68146105655780638da5cb5b14610584575f80fd5b80634000aea01461042c57806349bd5a5e1461044b5780634a62bb651461047e5780636a486a8e146104975780636ddd1713146104ac57806370a08231146104cb575f80fd5b806318160ddd1161024857806318160ddd1461037f578063203e727e1461039d57806323b872dd146103be57806327c8f835146103dd578063313ce567146103f2578063395093511461040d575f80fd5b806306fdde031461028e578063095ea7b3146102b857806310d5de53146102e7578063153a1f3e146103155780631694505e14610334575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102a261086a565b6040516102af91906121c5565b60405180910390f35b3480156102c3575f80fd5b506102d76102d2366004612225565b6108fa565b60405190151581526020016102af565b3480156102f2575f80fd5b506102d761030136600461224f565b60156020525f908152604090205460ff1681565b348015610320575f80fd5b506102d761032f3660046122b2565b610910565b34801561033f575f80fd5b506103677f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102af565b34801561038a575f80fd5b506002545b6040519081526020016102af565b3480156103a8575f80fd5b506103bc6103b7366004612319565b6109cc565b005b3480156103c9575f80fd5b506102d76103d8366004612330565b610aa9565b3480156103e8575f80fd5b5061036761dead81565b3480156103fd575f80fd5b50604051601281526020016102af565b348015610418575f80fd5b506102d7610427366004612225565b610b51565b348015610437575f80fd5b506102d761044636600461236e565b610b8c565b348015610456575f80fd5b506103677f0000000000000000000000000fe8b993fe1ea280574af3a69b64282d9cf9a0c881565b348015610489575f80fd5b50600b546102d79060ff1681565b3480156104a2575f80fd5b5061038f60115481565b3480156104b7575f80fd5b50600b546102d79062010000900460ff1681565b3480156104d6575f80fd5b5061038f6104e536600461224f565b6001600160a01b03165f9081526020819052604090205490565b34801561050a575f80fd5b506103bc610c4f565b34801561051e575f80fd5b506103bc61052d366004612319565b610c84565b34801561053d575f80fd5b506102d7610d0c565b348015610551575f80fd5b506103bc6105603660046123fd565b610d48565b348015610570575f80fd5b506103bc61057f366004612319565b610d9c565b34801561058f575f80fd5b506005546001600160a01b0316610367565b3480156105ac575f80fd5b5061038f60125481565b3480156105c1575f80fd5b506103bc6105d0366004612434565b610de4565b3480156105e0575f80fd5b506102a2610e2a565b3480156105f4575f80fd5b506103bc6106033660046123fd565b610e39565b348015610613575f80fd5b506102d7610622366004612225565b610f18565b348015610632575f80fd5b506103bc6106413660046123fd565b610fb0565b348015610651575f80fd5b506102d7610660366004612225565b611017565b348015610670575f80fd5b506102d761067f36600461224f565b60166020525f908152604090205460ff1681565b34801561069e575f80fd5b506103bc6106ad366004612319565b611023565b3480156106bd575f80fd5b50600b546102d790610100900460ff1681565b3480156106db575f80fd5b506103bc6106ea3660046123fd565b6110a3565b3480156106fa575f80fd5b506103bc610709366004612319565b61112b565b348015610719575f80fd5b5061038f60085481565b34801561072e575f80fd5b506102d761073d36600461236e565b6111fc565b34801561074d575f80fd5b506102d761075c366004612319565b611207565b34801561076c575f80fd5b5061038f600f5481565b348015610781575f80fd5b5061038f61079036600461244f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156107c5575f80fd5b5061038f60095481565b3480156107da575f80fd5b506103bc6107e936600461244f565b611358565b3480156107f9575f80fd5b506103bc610808366004612319565b611424565b348015610818575f80fd5b506103bc61082736600461224f565b6114a9565b348015610837575f80fd5b506103bc611541565b34801561084b575f80fd5b5061038f600a5481565b348015610860575f80fd5b5061038f600e5481565b6060600380546108799061247b565b80601f01602080910402602001604051908101604052809291908181526020018280546108a59061247b565b80156108f05780601f106108c7576101008083540402835291602001916108f0565b820191905f5260205f20905b8154815290600101906020018083116108d357829003601f168201915b5050505050905090565b5f610906338484611596565b5060015b92915050565b5f8382146109655760405162461bcd60e51b815260206004820152601860248201527f4d69736d617463686564206172726179206c656e67746873000000000000000060448201526064015b60405180910390fd5b5f5b848110156109c0576109b7868683818110610984576109846124b3565b9050602002016020810190610999919061224f565b8585848181106109ab576109ab6124b3565b90506020020135611017565b50600101610967565b50600195945050505050565b6005546001600160a01b031633146109f65760405162461bcd60e51b815260040161095c906124c7565b670de0b6b3a76400006103e8610a0b60025490565b610a16906001612510565b610a209190612527565b610a2a9190612527565b811015610a915760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161095c565b610aa381670de0b6b3a7640000612510565b60085550565b5f610ab58484846116b9565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610b395760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161095c565b610b468533858403611596565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610906918590610b87908690612546565b611596565b5f610b978585611017565b50604051635f692aa160e11b81526001600160a01b0386169063bed2554290610bca903390889088908890600401612559565b6020604051808303815f875af1158015610be6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0a91906125a0565b610b465760405162461bcd60e51b81526020600482015260166024820152751bdb951bdad95b949958d95a5d99590819985a5b195960521b604482015260640161095c565b6005546001600160a01b03163314610c795760405162461bcd60e51b815260040161095c906124c7565b610c825f611d0e565b565b6005546001600160a01b03163314610cae5760405162461bcd60e51b815260040161095c906124c7565b6010819055600f8190556032811115610d095760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420353025206f72206c657373000000604482015260640161095c565b50565b6005545f906001600160a01b03163314610d385760405162461bcd60e51b815260040161095c906124c7565b50600b805460ff19169055600190565b6005546001600160a01b03163314610d725760405162461bcd60e51b815260040161095c906124c7565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610dc65760405162461bcd60e51b815260040161095c906124c7565b600e55600b805462ffff0019166201010017905543600c5542600d55565b6005546001600160a01b03163314610e0e5760405162461bcd60e51b815260040161095c906124c7565b600b8054911515620100000262ff000019909216919091179055565b6060600480546108799061247b565b6005546001600160a01b03163314610e635760405162461bcd60e51b815260040161095c906124c7565b7f0000000000000000000000000fe8b993fe1ea280574af3a69b64282d9cf9a0c86001600160a01b0316826001600160a01b031603610f0a5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161095c565b610f148282611d5f565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610f995760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161095c565b610fa63385858403611596565b5060019392505050565b6005546001600160a01b03163314610fda5760405162461bcd60e51b815260040161095c906124c7565b6001600160a01b039091165f908152601560209081526040808320805494151560ff19958616811790915560139092529091208054909216179055565b5f6109063384846116b9565b6006546001600160a01b0316336001600160a01b031614611042575f80fd5b305f90815260208190526040902054811115801561105f57505f81115b61109a5760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b604482015260640161095c565b610d0981611db2565b6005546001600160a01b031633146110cd5760405162461bcd60e51b815260040161095c906124c7565b6001600160a01b0382165f81815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146111555760405162461bcd60e51b815260040161095c906124c7565b670de0b6b3a76400006103e861116a60025490565b611175906005612510565b61117f9190612527565b6111899190612527565b8110156111e45760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b606482015260840161095c565b6111f681670de0b6b3a7640000612510565b600a5550565b5f610b9785856108fa565b6005545f906001600160a01b031633146112335760405162461bcd60e51b815260040161095c906124c7565b620186a061124060025490565b61124b906001612510565b6112559190612527565b8210156112c25760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161095c565b6103e86112ce60025490565b6112d9906005612510565b6112e39190612527565b82111561134f5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161095c565b50600955600190565b6005546001600160a01b031633146113825760405162461bcd60e51b815260040161095c906124c7565b6006546040516001600160a01b03918216918416907fa99dead445593e0ad945143dc1b0f9b10d5ff5356d423a8428b064c9c9b3f507905f90a36007546040516001600160a01b03918216918316907ffc6e5ad4b1cc83c1340fc759e88f86ea75ce690eaf188413d0cf6b5290cc6334905f90a3600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b0316331461144e5760405162461bcd60e51b815260040161095c906124c7565b601281905560118190556032811115610d095760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420353025206f72206c657373000000604482015260640161095c565b6005546001600160a01b031633146114d35760405162461bcd60e51b815260040161095c906124c7565b6001600160a01b0381166115385760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161095c565b610d0981611d0e565b6006546040515f916001600160a01b03169047908381818185875af1925050503d805f811461158b576040519150601f19603f3d011682016040523d82523d5f602084013e611590565b606091505b50505050565b6001600160a01b0383166115f85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161095c565b6001600160a01b0382166116595760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161095c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116df5760405162461bcd60e51b815260040161095c906125bb565b6001600160a01b0382166117055760405162461bcd60e51b815260040161095c90612600565b805f0361171c5761171783835f611f68565b505050565b600b54439060ff1615611acf576005546001600160a01b0385811691161480159061175557506005546001600160a01b03848116911614155b801561176957506001600160a01b03831615155b801561178057506001600160a01b03831661dead14155b80156117965750600554600160a01b900460ff16155b15611acf5780600e54600c546117ac9190612546565b106117ca5760236010819055600f81905560128190556011556117df565b60236010819055600f81905560128190556011555b600b54610100900460ff16611870576001600160a01b0384165f9081526013602052604090205460ff168061182b57506001600160a01b0383165f9081526013602052604090205460ff165b6118705760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161095c565b6001600160a01b0384165f9081526016602052604090205460ff1680156118af57506001600160a01b0383165f9081526015602052604090205460ff16155b15611992576008548211156119245760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161095c565b600a546001600160a01b0384165f908152602081905260409020546119499084612546565b111561198d5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161095c565b611acf565b6001600160a01b0383165f9081526016602052604090205460ff1680156119d157506001600160a01b0384165f9081526015602052604090205460ff16155b15611a475760085482111561198d5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161095c565b6001600160a01b0383165f9081526015602052604090205460ff16611acf57600a546001600160a01b0384165f90815260208190526040902054611a8b9084612546565b1115611acf5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161095c565b305f9081526020819052604090205460095481108015908190611afa5750600b5462010000900460ff165b8015611b105750600554600160a01b900460ff16155b8015611b2957505f838152601460205260409020546002115b8015611b4d57506001600160a01b0386165f9081526016602052604090205460ff16155b8015611b7157506001600160a01b0386165f9081526013602052604090205460ff16155b8015611b9557506001600160a01b0385165f9081526013602052604090205460ff16155b15611be2576005805460ff60a01b1916600160a01b179055611bb56120bb565b5f8381526014602052604081208054909190611bd090612643565b909155506005805460ff60a01b191690555b6005546001600160a01b0387165f9081526013602052604090205460ff600160a01b909204821615911680611c2e57506001600160a01b0386165f9081526013602052604090205460ff165b15611c3657505f5b5f8115611cf9576001600160a01b0387165f9081526016602052604090205460ff168015611c6557505f601154115b15611c9157611c8a6064611c84601154896121a890919063ffffffff16565b906121ba565b9050611cdb565b6001600160a01b0388165f9081526016602052604090205460ff168015611cb957505f600f54115b15611cdb57611cd86064611c84600f54896121a890919063ffffffff16565b90505b8015611cec57611cec883083611f68565b611cf6818761265b565b95505b611d04888888611f68565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f81815260166020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611de557611de56124b3565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e61573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e85919061266e565b81600181518110611e9857611e986124b3565b60200260200101906001600160a01b031690816001600160a01b031681525050611ee3307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611596565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611f379085905f90869030904290600401612689565b5f604051808303815f87803b158015611f4e575f80fd5b505af1158015611f60573d5f803e3d5ffd5b505050505050565b6001600160a01b038316611f8e5760405162461bcd60e51b815260040161095c906125bb565b6001600160a01b038216611fb45760405162461bcd60e51b815260040161095c90612600565b6001600160a01b0383165f908152602081905260409020548181101561202b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161095c565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290612061908490612546565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120ad91815260200190565b60405180910390a350505050565b305f90815260208190526040812054908181036120d6575050565b6009546120e4906032612510565b8211156120fc576009546120f9906032612510565b91505b8161210681611db2565b6006546001600160a01b031661211d600247612527565b6040515f81818185875af1925050503d805f8114612156576040519150601f19603f3d011682016040523d82523d5f602084013e61215b565b606091505b50506007546040519193506001600160a01b03169047905f81818185875af1925050503d805f8114611f60576040519150601f19603f3d011682016040523d82523d5f602084013e611f60565b5f6121b38284612510565b9392505050565b5f6121b38284612527565b5f602080835283518060208501525f5b818110156121f1578581018301518582016040015282016121d5565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d09575f80fd5b5f8060408385031215612236575f80fd5b823561224181612211565b946020939093013593505050565b5f6020828403121561225f575f80fd5b81356121b381612211565b5f8083601f84011261227a575f80fd5b50813567ffffffffffffffff811115612291575f80fd5b6020830191508360208260051b85010111156122ab575f80fd5b9250929050565b5f805f80604085870312156122c5575f80fd5b843567ffffffffffffffff808211156122dc575f80fd5b6122e88883890161226a565b90965094506020870135915080821115612300575f80fd5b5061230d8782880161226a565b95989497509550505050565b5f60208284031215612329575f80fd5b5035919050565b5f805f60608486031215612342575f80fd5b833561234d81612211565b9250602084013561235d81612211565b929592945050506040919091013590565b5f805f8060608587031215612381575f80fd5b843561238c81612211565b935060208501359250604085013567ffffffffffffffff808211156123af575f80fd5b818701915087601f8301126123c2575f80fd5b8135818111156123d0575f80fd5b8860208285010111156123e1575f80fd5b95989497505060200194505050565b8015158114610d09575f80fd5b5f806040838503121561240e575f80fd5b823561241981612211565b91506020830135612429816123f0565b809150509250929050565b5f60208284031215612444575f80fd5b81356121b3816123f0565b5f8060408385031215612460575f80fd5b823561246b81612211565b9150602083013561242981612211565b600181811c9082168061248f57607f821691505b6020821081036124ad57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761090a5761090a6124fc565b5f8261254157634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561090a5761090a6124fc565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f602082840312156125b0575f80fd5b81516121b3816123f0565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60018201612654576126546124fc565b5060010190565b8181038181111561090a5761090a6124fc565b5f6020828403121561267e575f80fd5b81516121b381612211565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156126d95784516001600160a01b0316835293830193918301916001016126b4565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220ed660dfba75f437e7bb8ab32155ad7c6f0a852413c5fcec309ad31060d7f255664736f6c63430008160033

Deployed Bytecode Sourcemap

15636:12651:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3013:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3993:195;;;;;;;;;;-1:-1:-1;3993:195:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;3993:195:0;1023:187:1;16579:63:0;;;;;;;;;;-1:-1:-1;16579:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22319:277;;;;;;;;;;-1:-1:-1;22319:277:0;;;;;:::i;:::-;;:::i;15717:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2808:32:1;;;2790:51;;2778:2;2763:18;15717:51:0;2617:230:1;3334:108:0;;;;;;;;;;-1:-1:-1;3422:12:0;;3334:108;;;2998:25:1;;;2986:2;2971:18;3334:108:0;2852:177:1;19345:277:0;;;;;;;;;;-1:-1:-1;19345:277:0;;;;;:::i;:::-;;:::i;:::-;;4196:529;;;;;;;;;;-1:-1:-1;4196:529:0;;;;;:::i;:::-;;:::i;15820:53::-;;;;;;;;;;;;15866:6;15820:53;;3233:93;;;;;;;;;;-1:-1:-1;3233:93:0;;3316:2;4030:36:1;;4018:2;4003:18;3233:93:0;3888:184:1;4733:290:0;;;;;;;;;;-1:-1:-1;4733:290:0;;;;;:::i;:::-;;:::i;22856:239::-;;;;;;;;;;-1:-1:-1;22856:239:0;;;;;:::i;:::-;;:::i;15775:38::-;;;;;;;;;;;;;;;16095:33;;;;;;;;;;-1:-1:-1;16095:33:0;;;;;;;;16391:28;;;;;;;;;;;;;;;;16175:31;;;;;;;;;;-1:-1:-1;16175:31:0;;;;;;;;;;;3450:143;;;;;;;;;;-1:-1:-1;3450:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;3567:18:0;3540:7;3567:18;;;;;;;;;;;;3450:143;881:103;;;;;;;;;;;;;:::i;21532:227::-;;;;;;;;;;-1:-1:-1;21532:227:0;;;;;:::i;:::-;;:::i;18727:121::-;;;;;;;;;;;;;:::i;20099:170::-;;;;;;;;;;-1:-1:-1;20099:170:0;;;;;:::i;:::-;;:::i;18476:243::-;;;;;;;;;;-1:-1:-1;18476:243:0;;;;;:::i;:::-;;:::i;658:87::-;;;;;;;;;;-1:-1:-1;731:6:0;;-1:-1:-1;;;;;731:6:0;658:87;;16426:31;;;;;;;;;;;;;;;;20283:100;;;;;;;;;;-1:-1:-1;20283:100:0;;;;;:::i;:::-;;:::i;3121:104::-;;;;;;;;;;;;;:::i;21021:307::-;;;;;;;;;;-1:-1:-1;21021:307:0;;;;;:::i;:::-;;:::i;5031:475::-;;;;;;;;;;-1:-1:-1;5031:475:0;;;;;:::i;:::-;;:::i;19896:195::-;;;;;;;;;;-1:-1:-1;19896:195:0;;;;;:::i;:::-;;:::i;3601:200::-;;;;;;;;;;-1:-1:-1;3601:200:0;;;;;:::i;:::-;;:::i;16649:57::-;;;;;;;;;;-1:-1:-1;16649:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20581:255;;;;;;;;;;-1:-1:-1;20581:255:0;;;;;:::i;:::-;;:::i;16135:33::-;;;;;;;;;;-1:-1:-1;16135:33:0;;;;;;;;;;;20391:182;;;;;;;;;;-1:-1:-1;20391:182:0;;;;;:::i;:::-;;:::i;19630:258::-;;;;;;;;;;-1:-1:-1;19630:258:0;;;;;:::i;:::-;;:::i;15980:35::-;;;;;;;;;;;;;;;;22600:252;;;;;;;;;;-1:-1:-1;22600:252:0;;;;;:::i;:::-;;:::i;18856:481::-;;;;;;;;;;-1:-1:-1;18856:481:0;;;;;:::i;:::-;;:::i;16317:27::-;;;;;;;;;;;;;;;;3809:176;;;;;;;;;;-1:-1:-1;3809:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;3950:18:0;;;3923:7;3950:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3809:176;16022:33;;;;;;;;;;;;;;;;22007:308;;;;;;;;;;-1:-1:-1;22007:308:0;;;;;:::i;:::-;;:::i;21767:232::-;;;;;;;;;;-1:-1:-1;21767:232:0;;;;;:::i;:::-;;:::i;992:238::-;;;;;;;;;;-1:-1:-1;992:238:0;;;;;:::i;:::-;;:::i;20844:169::-;;;;;;;;;;;;;:::i;16062:24::-;;;;;;;;;;;;;;;;16283:25;;;;;;;;;;;;;;;;3013:100;3067:13;3100:5;3093:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3013:100;:::o;3993:195::-;4102:4;4119:39;259:10;4142:7;4151:6;4119:8;:39::i;:::-;-1:-1:-1;4176:4:0;3993:195;;;;;:::o;22319:277::-;22407:4;22428:26;;;22420:63;;;;-1:-1:-1;;;22420:63:0;;6612:2:1;22420:63:0;;;6594:21:1;6651:2;6631:18;;;6624:30;6690:26;6670:18;;;6663:54;6734:18;;22420:63:0;;;;;;;;;22495:9;22490:85;22510:13;;;22490:85;;;22541:26;22550:2;;22553:1;22550:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22557:6;;22564:1;22557:9;;;;;;;:::i;:::-;;;;;;;22541:8;:26::i;:::-;-1:-1:-1;22525:3:0;;22490:85;;;-1:-1:-1;22588:4:0;;22319:277;-1:-1:-1;;;;;22319:277:0:o;19345:::-;731:6;;-1:-1:-1;;;;;731:6:0;259:10;793:23;785:68;;;;-1:-1:-1;;;785:68:0;;;;;;;:::i;:::-;19482:4:::1;19474;19453:13;3422:12:::0;;;3334:108;19453:13:::1;:17;::::0;19469:1:::1;19453:17;:::i;:::-;19452:26;;;;:::i;:::-;19451:35;;;;:::i;:::-;19441:6;:45;;19419:142;;;::::0;-1:-1:-1;;;19419:142:0;;7985:2:1;19419:142:0::1;::::0;::::1;7967:21:1::0;8024:2;8004:18;;;7997:30;8063:34;8043:18;;;8036:62;-1:-1:-1;;;8114:18:1;;;8107:45;8169:19;;19419:142:0::1;7783:411:1::0;19419:142:0::1;19595:19;:6:::0;19605:8:::1;19595:19;:::i;:::-;19572:20;:42:::0;-1:-1:-1;19345:277:0:o;4196:529::-;4336:4;4353:36;4363:6;4371:9;4382:6;4353:9;:36::i;:::-;-1:-1:-1;;;;;4429:19:0;;4402:24;4429:19;;;:11;:19;;;;;;;;259:10;4429:33;;;;;;;;4495:26;;;;4473:116;;;;-1:-1:-1;;;4473:116:0;;8401:2:1;4473:116:0;;;8383:21:1;8440:2;8420:18;;;8413:30;8479:34;8459:18;;;8452:62;-1:-1:-1;;;8530:18:1;;;8523:38;8578:19;;4473:116:0;8199:404:1;4473:116:0;4625:57;4634:6;259:10;4675:6;4656:16;:25;4625:8;:57::i;:::-;-1:-1:-1;4713:4:0;;4196:529;-1:-1:-1;;;;4196:529:0:o;4733:290::-;259:10;4846:4;4935:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4935:34:0;;;;;;;;;;4846:4;;4863:130;;4913:7;;4935:47;;4972:10;;4935:47;:::i;:::-;4863:8;:130::i;22856:239::-;22945:4;22958:19;22967:2;22971:5;22958:8;:19::i;:::-;-1:-1:-1;22992:54:0;;-1:-1:-1;;;22992:54:0;;-1:-1:-1;;;;;22992:29:0;;;;;:54;;23022:10;;23034:5;;23041:4;;;;22992:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22984:89;;;;-1:-1:-1;;;22984:89:0;;9754:2:1;22984:89:0;;;9736:21:1;9793:2;9773:18;;;9766:30;-1:-1:-1;;;9812:18:1;;;9805:52;9874:18;;22984:89:0;9552:346:1;881:103:0;731:6;;-1:-1:-1;;;;;731:6:0;259:10;793:23;785:68;;;;-1:-1:-1;;;785:68:0;;;;;;;:::i;:::-;946:30:::1;973:1;946:18;:30::i;:::-;881:103::o:0;21532:227::-;731:6;;-1:-1:-1;;;;;731:6:0;259:10;793:23;785:68;;;;-1:-1:-1;;;785:68:0;;;;;;;:::i;:::-;21608:15:::1;:31:::0;;;21650:12:::1;:30:::0;;;21715:2:::1;21699:18:::0;::::1;;21691:60;;;::::0;-1:-1:-1;;;21691:60:0;;10105:2:1;21691:60:0::1;::::0;::::1;10087:21:1::0;10144:2;10124:18;;;10117:30;10183:31;10163:18;;;10156:59;10232:18;;21691:60:0::1;9903:353:1::0;21691:60:0::1;21532:227:::0;:::o;18727:121::-;731:6;;18779:4;;-1:-1:-1;;;;;731:6:0;259:10;793:23;785:68;;;;-1:-1:-1;;;785:68:0;;;;;;;:::i;:::-;-1:-1:-1;18796:14:0::1;:22:::0;;-1:-1:-1;;18796:22:0::1;::::0;;;18727:121;:::o;20099:170::-;731:6;;-1:-1:-1;;;;;731:6:0;259:10;793:23;785:68;;;;-1:-1:-1;;;785:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20215:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;20215:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20099:170::o;18476:243::-;731:6;;-1:-1:-1;;;;;731:6:0;259:10;793:23;785:68;;;;-1:-1:-1;;;785:68:0;;;;;;;:::i;:::-;18550:10:::1;:24:::0;18585:13:::1;:20:::0;;-1:-1:-1;;18616:18:0;;;;;18658:12:::1;18645:10;:25:::0;18696:15:::1;18681:12;:30:::0;18476:243::o;20283:100::-;731:6;;-1:-1:-1;;;;;731:6:0;259:10;793:23;785:68;;;;-1:-1:-1;;;785:68:0;;;;;;;:::i;:::-;20354:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;20354:21:0;;::::1;::::0;;;::::1;::::0;;20283:100::o;3121:104::-;3177:13;3210:7;3203:14;;;;;:::i;21021:307::-;731:6;;-1:-1:-1;;;;;731:6:0;259:10;793:23;785:68;;;;-1:-1:-1;;;785:68:0;;;;;;;:::i;:::-;21168:13:::1;-1:-1:-1::0;;;;;21160:21:0::1;:4;-1:-1:-1::0;;;;;21160:21:0::1;::::0;21138:128:::1;;;::::0;-1:-1:-1;;;21138:128:0;;10463:2:1;21138:128:0::1;::::0;::::1;10445:21:1::0;10502:2;10482:18;;;10475:30;10541:34;10521:18;;;10514:62;10612:27;10592:18;;;10585:55;10657:19;;21138:128:0::1;10261:421:1::0;21138:128:0::1;21279:41;21308:4;21314:5;21279:28;:41::i;:::-;21021:307:::0;;:::o;5031:475::-;259:10;5149:4;5193:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5193:34:0;;;;;;;;;;5260:35;;;;5238:122;;;;-1:-1:-1;;;5238:122:0;;10889:2:1;5238:122:0;;;10871:21:1;10928:2;10908:18;;;10901:30;10967:34;10947:18;;;10940:62;-1:-1:-1;;;11018:18:1;;;11011:35;11063:19;;5238:122:0;10687:401:1;5238:122:0;5396:67;259:10;5419:7;5447:15;5428:16;:34;5396:8;:67::i;:::-;-1:-1:-1;5494:4:0;;5031:475;-1:-1:-1;;;5031:475:0:o;19896:195::-;731:6;;-1:-1:-1;;;;;731:6:0;259:10;793:23;785:68;;;;-1:-1:-1;;;785:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19982:43:0;;::::1;;::::0;;;:31:::1;:43;::::0;;;;;;;:50;;;::::1;;-1:-1:-1::0;;19982:50:0;;::::1;::::0;::::1;::::0;;;20045:19:::1;:31:::0;;;;;;:38;;;;::::1;;::::0;;19896:195::o;3601:200::-;3712:4;3729:42;259:10;3753:9;3764:6;3729:9;:42::i;20581:255::-;20661:10;;-1:-1:-1;;;;;20661:10:0;259;-1:-1:-1;;;;;20645:26:0;;20637:35;;;;;;20733:4;3540:7;3567:18;;;;;;;;;;;20705:6;:34;;:48;;;;;20752:1;20743:6;:10;20705:48;20683:110;;;;-1:-1:-1;;;20683:110:0;;11295:2:1;20683:110:0;;;11277:21:1;11334:2;11314:18;;;11307:30;-1:-1:-1;;;11353:18:1;;;11346:42;11405:18;;20683:110:0;11093:336:1;20683:110:0;20804:24;20821:6;20804:16;:24::i;20391:182::-;731:6;;-1:-1:-1;;;;;731:6:0;259:10;793:23;785:68;;;;-1:-1:-1;;;785:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20476:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;20476:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20531:34;;1163:41:1;;;20531:34:0::1;::::0;1136:18:1;20531:34:0::1;;;;;;;20391:182:::0;;:::o;19630:258::-;731:6;;-1:-1:-1;;;;;731:6:0;259:10;793:23;785:68;;;;-1:-1:-1;;;785:68:0;;;;;;;:::i;:::-;19770:4:::1;19762;19741:13;3422:12:::0;;;3334:108;19741:13:::1;:17;::::0;19757:1:::1;19741:17;:::i;:::-;19740:26;;;;:::i;:::-;19739:35;;;;:::i;:::-;19729:6;:45;;19707:131;;;::::0;-1:-1:-1;;;19707:131:0;;11636:2:1;19707:131:0::1;::::0;::::1;11618:21:1::0;11675:2;11655:18;;;11648:30;11714:34;11694:18;;;11687:62;-1:-1:-1;;;11765:18:1;;;11758:34;11809:19;;19707:131:0::1;11434:400:1::0;19707:131:0::1;19861:19;:6:::0;19871:8:::1;19861:19;:::i;:::-;19849:9;:31:::0;-1:-1:-1;19630:258:0:o;22600:252::-;22693:4;22706:23;22714:7;22723:5;22706:7;:23::i;18856:481::-;731:6;;18953:4;;-1:-1:-1;;;;;731:6:0;259:10;793:23;785:68;;;;-1:-1:-1;;;785:68:0;;;;;;;:::i;:::-;19027:6:::1;19006:13;3422:12:::0;;;3334:108;19006:13:::1;:17;::::0;19022:1:::1;19006:17;:::i;:::-;19005:28;;;;:::i;:::-;18992:9;:41;;18970:144;;;::::0;-1:-1:-1;;;18970:144:0;;12041:2:1;18970:144:0::1;::::0;::::1;12023:21:1::0;12080:2;12060:18;;;12053:30;12119:34;12099:18;;;12092:62;-1:-1:-1;;;12170:18:1;;;12163:51;12231:19;;18970:144:0::1;11839:417:1::0;18970:144:0::1;19182:4;19161:13;3422:12:::0;;;3334:108;19161:13:::1;:17;::::0;19177:1:::1;19161:17;:::i;:::-;19160:26;;;;:::i;:::-;19147:9;:39;;19125:141;;;::::0;-1:-1:-1;;;19125:141:0;;12463:2:1;19125:141:0::1;::::0;::::1;12445:21:1::0;12502:2;12482:18;;;12475:30;12541:34;12521:18;;;12514:62;-1:-1:-1;;;12592:18:1;;;12585:50;12652:19;;19125:141:0::1;12261:416:1::0;19125:141:0::1;-1:-1:-1::0;19277:18:0::1;:30:::0;19325:4:::1;::::0;18856:481::o;22007:308::-;731:6;;-1:-1:-1;;;;;731:6:0;259:10;793:23;785:68;;;;-1:-1:-1;;;785:68:0;;;;;;;:::i;:::-;22166:10:::1;::::0;22135:42:::1;::::0;-1:-1:-1;;;;;22166:10:0;;::::1;::::0;22135:42;::::1;::::0;::::1;::::0;22166:10:::1;::::0;22135:42:::1;22224:10;::::0;22193:42:::1;::::0;-1:-1:-1;;;;;22224:10:0;;::::1;::::0;22193:42;::::1;::::0;::::1;::::0;22224:10:::1;::::0;22193:42:::1;22246:10;:25:::0;;-1:-1:-1;;;;;22246:25:0;;::::1;-1:-1:-1::0;;;;;;22246:25:0;;::::1;;::::0;;;22282:10:::1;:25:::0;;;;;::::1;::::0;::::1;;::::0;;22007:308::o;21767:232::-;731:6;;-1:-1:-1;;;;;731:6:0;259:10;793:23;785:68;;;;-1:-1:-1;;;785:68:0;;;;;;;:::i;:::-;21844:16:::1;:32:::0;;;21887:13:::1;:32:::0;;;21955:2:::1;21938:19:::0;::::1;;21930:61;;;::::0;-1:-1:-1;;;21930:61:0;;10105:2:1;21930:61:0::1;::::0;::::1;10087:21:1::0;10144:2;10124:18;;;10117:30;10183:31;10163:18;;;10156:59;10232:18;;21930:61:0::1;9903:353:1::0;992:238:0;731:6;;-1:-1:-1;;;;;731:6:0;259:10;793:23;785:68;;;;-1:-1:-1;;;785:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1095:22:0;::::1;1073:110;;;::::0;-1:-1:-1;;;1073:110:0;;12884:2:1;1073:110:0::1;::::0;::::1;12866:21:1::0;12923:2;12903:18;;;12896:30;12962:34;12942:18;;;12935:62;-1:-1:-1;;;13013:18:1;;;13006:36;13059:19;;1073:110:0::1;12682:402:1::0;1073:110:0::1;1194:28;1213:8;1194:18;:28::i;20844:169::-:0;20931:10;;20923:82;;20886:12;;-1:-1:-1;;;;;20931:10:0;;20955:21;;20886:12;20923:82;20886:12;20923:82;20955:21;20931:10;20923:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;20844:169:0:o;7298:380::-;-1:-1:-1;;;;;7434:19:0;;7426:68;;;;-1:-1:-1;;;7426:68:0;;13501:2:1;7426:68:0;;;13483:21:1;13540:2;13520:18;;;13513:30;13579:34;13559:18;;;13552:62;-1:-1:-1;;;13630:18:1;;;13623:34;13674:19;;7426:68:0;13299:400:1;7426:68:0;-1:-1:-1;;;;;7513:21:0;;7505:68;;;;-1:-1:-1;;;7505:68:0;;13906:2:1;7505:68:0;;;13888:21:1;13945:2;13925:18;;;13918:30;13984:34;13964:18;;;13957:62;-1:-1:-1;;;14035:18:1;;;14028:32;14077:19;;7505:68:0;13704:398:1;7505:68:0;-1:-1:-1;;;;;7586:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7638:32;;2998:25:1;;;7638:32:0;;2971:18:1;7638:32:0;;;;;;;7298:380;;;:::o;23103:3932::-;-1:-1:-1;;;;;23237:18:0;;23229:68;;;;-1:-1:-1;;;23229:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23316:16:0;;23308:64;;;;-1:-1:-1;;;23308:64:0;;;;;;;:::i;:::-;23389:6;23399:1;23389:11;23385:93;;23417:28;23433:4;23439:2;23443:1;23417:15;:28::i;:::-;23103:3932;;;:::o;23385:93::-;23538:14;;23509:12;;23538:14;;23534:2175;;;731:6;;-1:-1:-1;;;;;23591:15:0;;;731:6;;23591:15;;;;:49;;-1:-1:-1;731:6:0;;-1:-1:-1;;;;;23627:13:0;;;731:6;;23627:13;;23591:49;:86;;;;-1:-1:-1;;;;;;23661:16:0;;;;23591:86;:128;;;;-1:-1:-1;;;;;;23698:21:0;;23712:6;23698:21;;23591:128;:158;;;;-1:-1:-1;23741:8:0;;-1:-1:-1;;;23741:8:0;;;;23740:9;23591:158;23569:2129;;;23817:8;23802:10;;23789;;:23;;;;:::i;:::-;23788:37;23784:483;;23868:2;23850:15;:20;;;23893:12;:30;;;23948:16;:21;;;23992:13;:32;23784:483;;;24091:2;24073:15;:20;;;24116:12;:30;;;24171:16;:21;;;24215:13;:32;23784:483;24292:13;;;;;;;24287:223;;-1:-1:-1;;;;;24364:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;24393:23:0;;;;;;:19;:23;;;;;;;;24364:52;24330:160;;;;-1:-1:-1;;;24330:160:0;;15119:2:1;24330:160:0;;;15101:21:1;15158:2;15138:18;;;15131:30;-1:-1:-1;;;15177:18:1;;;15170:52;15239:18;;24330:160:0;14917:346:1;24330:160:0;-1:-1:-1;;;;;24574:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;24631:35:0;;;;;;:31;:35;;;;;;;;24630:36;24574:92;24548:1135;;;24753:20;;24743:6;:30;;24709:169;;;;-1:-1:-1;;;24709:169:0;;15470:2:1;24709:169:0;;;15452:21:1;15509:2;15489:18;;;15482:30;15548:34;15528:18;;;15521:62;-1:-1:-1;;;15599:18:1;;;15592:51;15660:19;;24709:169:0;15268:417:1;24709:169:0;24961:9;;-1:-1:-1;;;;;3567:18:0;;3540:7;3567:18;;;;;;;;;;;24935:22;;:6;:22;:::i;:::-;:35;;24901:140;;;;-1:-1:-1;;;24901:140:0;;15892:2:1;24901:140:0;;;15874:21:1;15931:2;15911:18;;;15904:30;-1:-1:-1;;;15950:18:1;;;15943:49;16009:18;;24901:140:0;15690:343:1;24901:140:0;24548:1135;;;-1:-1:-1;;;;;25127:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;25182:37:0;;;;;;:31;:37;;;;;;;;25181:38;25127:92;25101:582;;;25306:20;;25296:6;:30;;25262:170;;;;-1:-1:-1;;;25262:170:0;;16240:2:1;25262:170:0;;;16222:21:1;16279:2;16259:18;;;16252:30;16318:34;16298:18;;;16291:62;-1:-1:-1;;;16369:18:1;;;16362:52;16431:19;;25262:170:0;16038:418:1;25101:582:0;-1:-1:-1;;;;;25463:35:0;;;;;;:31;:35;;;;;;;;25458:225;;25583:9;;-1:-1:-1;;;;;3567:18:0;;3540:7;3567:18;;;;;;;;;;;25557:22;;:6;:22;:::i;:::-;:35;;25523:140;;;;-1:-1:-1;;;25523:140:0;;15892:2:1;25523:140:0;;;15874:21:1;15931:2;15911:18;;;15904:30;-1:-1:-1;;;15950:18:1;;;15943:49;16009:18;;25523:140:0;15690:343:1;25523:140:0;25770:4;25721:28;3567:18;;;;;;;;;;;25828;;25804:42;;;;;;;25877:35;;-1:-1:-1;25901:11:0;;;;;;;25877:35;:61;;;;-1:-1:-1;25930:8:0;;-1:-1:-1;;;25930:8:0;;;;25929:9;25877:61;:105;;;;-1:-1:-1;25956:21:0;;;;:11;:21;;;;;;25980:1;-1:-1:-1;25877:105:0;:154;;;;-1:-1:-1;;;;;;26000:31:0;;;;;;:25;:31;;;;;;;;25999:32;25877:154;:197;;;;-1:-1:-1;;;;;;26049:25:0;;;;;;:19;:25;;;;;;;;26048:26;25877:197;:238;;;;-1:-1:-1;;;;;;26092:23:0;;;;;;:19;:23;;;;;;;;26091:24;25877:238;25859:410;;;26142:8;:15;;-1:-1:-1;;;;26142:15:0;-1:-1:-1;;;26142:15:0;;;26174:10;:8;:10::i;:::-;26203:21;;;;:11;:21;;;;;26201:23;;26203:21;;;26201:23;;;:::i;:::-;;;;-1:-1:-1;26241:8:0;:16;;-1:-1:-1;;;;26241:16:0;;;25859:410;26297:8;;-1:-1:-1;;;;;26330:25:0;;26281:12;26330:25;;;:19;:25;;;;;;26297:8;-1:-1:-1;;;26297:8:0;;;;;26296:9;;26330:25;;:52;;-1:-1:-1;;;;;;26359:23:0;;;;;;:19;:23;;;;;;;;26330:52;26326:100;;;-1:-1:-1;26409:5:0;26326:100;26438:12;26479:7;26475:507;;;-1:-1:-1;;;;;26531:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;26580:1;26564:13;;:17;26531:50;26527:306;;;26609:34;26639:3;26609:25;26620:13;;26609:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;26602:41;;26527:306;;;-1:-1:-1;;;;;26705:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;26755:1;26740:12;;:16;26705:51;26701:132;;;26784:33;26813:3;26784:24;26795:12;;26784:6;:10;;:24;;;;:::i;:33::-;26777:40;;26701:132;26853:8;;26849:91;;26882:42;26898:4;26912;26919;26882:15;:42::i;:::-;26956:14;26966:4;26956:14;;:::i;:::-;;;26475:507;26994:33;27010:4;27016:2;27020:6;26994:15;:33::i;:::-;23218:3817;;;;;23103:3932;;;:::o;1238:191::-;1331:6;;;-1:-1:-1;;;;;1348:17:0;;;-1:-1:-1;;;;;;1348:17:0;;;;;;;1381:40;;1331:6;;;1348:17;1331:6;;1381:40;;1312:16;;1381:40;1301:128;1238:191;:::o;21336:188::-;-1:-1:-1;;;;;21419:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;21419:39:0;;;;;;;;;;21476:40;;21419:39;;:31;21476:40;;;21336:188;;:::o;27043:589::-;27193:16;;;27207:1;27193:16;;;;;;;;27169:21;;27193:16;;;;;;;;;;-1:-1:-1;27193:16:0;27169:40;;27238:4;27220;27225:1;27220:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;27220:23:0;;;-1:-1:-1;;;;;27220:23:0;;;;;27264:15;-1:-1:-1;;;;;27264:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27254:4;27259:1;27254:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;27254:32:0;;;-1:-1:-1;;;;;27254:32:0;;;;;27299:62;27316:4;27331:15;27349:11;27299:8;:62::i;:::-;27400:224;;-1:-1:-1;;;27400:224:0;;-1:-1:-1;;;;;27400:15:0;:66;;;;:224;;27481:11;;27507:1;;27551:4;;27578;;27598:15;;27400:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27098:534;27043:589;:::o;5514:770::-;-1:-1:-1;;;;;5654:20:0;;5646:70;;;;-1:-1:-1;;;5646:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5735:23:0;;5727:71;;;;-1:-1:-1;;;5727:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5895:17:0;;5871:21;5895:17;;;;;;;;;;;5945:23;;;;5923:111;;;;-1:-1:-1;;;5923:111:0;;18309:2:1;5923:111:0;;;18291:21:1;18348:2;18328:18;;;18321:30;18387:34;18367:18;;;18360:62;-1:-1:-1;;;18438:18:1;;;18431:36;18484:19;;5923:111:0;18107:402:1;5923:111:0;-1:-1:-1;;;;;6070:17:0;;;:9;:17;;;;;;;;;;;6090:22;;;6070:42;;6134:20;;;;;;;;:30;;6106:6;;6070:9;6134:30;;6106:6;;6134:30;:::i;:::-;;;;;;;;6199:9;-1:-1:-1;;;;;6182:35:0;6191:6;-1:-1:-1;;;;;6182:35:0;;6210:6;6182:35;;;;2998:25:1;;2986:2;2971:18;;2852:177;6182:35:0;;;;;;;;5635:649;5514:770;;;:::o;27640:644::-;27723:4;27679:23;3567:18;;;;;;;;;;;;27769:20;;;27765:59;;27806:7;;27640:644::o;27765:59::-;27858:18;;:23;;27879:2;27858:23;:::i;:::-;27840:15;:41;27836:115;;;27916:18;;:23;;27937:2;27916:23;:::i;:::-;27898:41;;27836:115;27992:15;28020:36;27992:15;28020:16;:36::i;:::-;28091:10;;-1:-1:-1;;;;;28091:10:0;28129:25;28153:1;28129:21;:25;:::i;:::-;28083:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28202:10:0;;28194:82;;28069:100;;-1:-1:-1;;;;;;28202:10:0;;28226:21;;28194:82;;;;28226:21;28202:10;28194:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9431:98;9489:7;9516:5;9520:1;9516;:5;:::i;:::-;9509:12;9431:98;-1:-1:-1;;;9431:98:0:o;9537:::-;9595:7;9622:5;9626:1;9622;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1467:367::-;1530:8;1540:6;1594:3;1587:4;1579:6;1575:17;1571:27;1561:55;;1612:1;1609;1602:12;1561:55;-1:-1:-1;1635:20:1;;1678:18;1667:30;;1664:50;;;1710:1;1707;1700:12;1664:50;1747:4;1739:6;1735:17;1723:29;;1807:3;1800:4;1790:6;1787:1;1783:14;1775:6;1771:27;1767:38;1764:47;1761:67;;;1824:1;1821;1814:12;1761:67;1467:367;;;;;:::o;1839:773::-;1961:6;1969;1977;1985;2038:2;2026:9;2017:7;2013:23;2009:32;2006:52;;;2054:1;2051;2044:12;2006:52;2094:9;2081:23;2123:18;2164:2;2156:6;2153:14;2150:34;;;2180:1;2177;2170:12;2150:34;2219:70;2281:7;2272:6;2261:9;2257:22;2219:70;:::i;:::-;2308:8;;-1:-1:-1;2193:96:1;-1:-1:-1;2396:2:1;2381:18;;2368:32;;-1:-1:-1;2412:16:1;;;2409:36;;;2441:1;2438;2431:12;2409:36;;2480:72;2544:7;2533:8;2522:9;2518:24;2480:72;:::i;:::-;1839:773;;;;-1:-1:-1;2571:8:1;-1:-1:-1;;;;1839:773:1:o;3034:180::-;3093:6;3146:2;3134:9;3125:7;3121:23;3117:32;3114:52;;;3162:1;3159;3152:12;3114:52;-1:-1:-1;3185:23:1;;3034:180;-1:-1:-1;3034:180:1:o;3219:456::-;3296:6;3304;3312;3365:2;3353:9;3344:7;3340:23;3336:32;3333:52;;;3381:1;3378;3371:12;3333:52;3420:9;3407:23;3439:31;3464:5;3439:31;:::i;:::-;3489:5;-1:-1:-1;3546:2:1;3531:18;;3518:32;3559:33;3518:32;3559:33;:::i;:::-;3219:456;;3611:7;;-1:-1:-1;;;3665:2:1;3650:18;;;;3637:32;;3219:456::o;4077:794::-;4165:6;4173;4181;4189;4242:2;4230:9;4221:7;4217:23;4213:32;4210:52;;;4258:1;4255;4248:12;4210:52;4297:9;4284:23;4316:31;4341:5;4316:31;:::i;:::-;4366:5;-1:-1:-1;4418:2:1;4403:18;;4390:32;;-1:-1:-1;4473:2:1;4458:18;;4445:32;4496:18;4526:14;;;4523:34;;;4553:1;4550;4543:12;4523:34;4591:6;4580:9;4576:22;4566:32;;4636:7;4629:4;4625:2;4621:13;4617:27;4607:55;;4658:1;4655;4648:12;4607:55;4698:2;4685:16;4724:2;4716:6;4713:14;4710:34;;;4740:1;4737;4730:12;4710:34;4785:7;4780:2;4771:6;4767:2;4763:15;4759:24;4756:37;4753:57;;;4806:1;4803;4796:12;4753:57;4077:794;;;;-1:-1:-1;;4837:2:1;4829:11;;-1:-1:-1;;;4077:794:1:o;4876:118::-;4962:5;4955:13;4948:21;4941:5;4938:32;4928:60;;4984:1;4981;4974:12;4999:382;5064:6;5072;5125:2;5113:9;5104:7;5100:23;5096:32;5093:52;;;5141:1;5138;5131:12;5093:52;5180:9;5167:23;5199:31;5224:5;5199:31;:::i;:::-;5249:5;-1:-1:-1;5306:2:1;5291:18;;5278:32;5319:30;5278:32;5319:30;:::i;:::-;5368:7;5358:17;;;4999:382;;;;;:::o;5386:241::-;5442:6;5495:2;5483:9;5474:7;5470:23;5466:32;5463:52;;;5511:1;5508;5501:12;5463:52;5550:9;5537:23;5569:28;5591:5;5569:28;:::i;5632:388::-;5700:6;5708;5761:2;5749:9;5740:7;5736:23;5732:32;5729:52;;;5777:1;5774;5767:12;5729:52;5816:9;5803:23;5835:31;5860:5;5835:31;:::i;:::-;5885:5;-1:-1:-1;5942:2:1;5927:18;;5914:32;5955:33;5914:32;5955:33;:::i;6025:380::-;6104:1;6100:12;;;;6147;;;6168:61;;6222:4;6214:6;6210:17;6200:27;;6168:61;6275:2;6267:6;6264:14;6244:18;6241:38;6238:161;;6321:10;6316:3;6312:20;6309:1;6302:31;6356:4;6353:1;6346:15;6384:4;6381:1;6374:15;6238:161;;6025:380;;;:::o;6763:127::-;6824:10;6819:3;6815:20;6812:1;6805:31;6855:4;6852:1;6845:15;6879:4;6876:1;6869:15;6895:356;7097:2;7079:21;;;7116:18;;;7109:30;7175:34;7170:2;7155:18;;7148:62;7242:2;7227:18;;6895:356::o;7256:127::-;7317:10;7312:3;7308:20;7305:1;7298:31;7348:4;7345:1;7338:15;7372:4;7369:1;7362:15;7388:168;7461:9;;;7492;;7509:15;;;7503:22;;7489:37;7479:71;;7530:18;;:::i;7561:217::-;7601:1;7627;7617:132;;7671:10;7666:3;7662:20;7659:1;7652:31;7706:4;7703:1;7696:15;7734:4;7731:1;7724:15;7617:132;-1:-1:-1;7763:9:1;;7561:217::o;8608:125::-;8673:9;;;8694:10;;;8691:36;;;8707:18;;:::i;8738:559::-;-1:-1:-1;;;;;8951:32:1;;8933:51;;9015:2;9000:18;;8993:34;;;9063:2;9058;9043:18;;9036:30;;;9082:18;;9075:34;;;9102:6;9152;9146:3;9131:19;;9118:49;9217:1;9187:22;;;9211:3;9183:32;;;9176:43;;;;9280:2;9259:15;;;-1:-1:-1;;9255:29:1;9240:45;9236:55;;8738:559;-1:-1:-1;;;8738:559:1:o;9302:245::-;9369:6;9422:2;9410:9;9401:7;9397:23;9393:32;9390:52;;;9438:1;9435;9428:12;9390:52;9470:9;9464:16;9489:28;9511:5;9489:28;:::i;14107:401::-;14309:2;14291:21;;;14348:2;14328:18;;;14321:30;14387:34;14382:2;14367:18;;14360:62;-1:-1:-1;;;14453:2:1;14438:18;;14431:35;14498:3;14483:19;;14107:401::o;14513:399::-;14715:2;14697:21;;;14754:2;14734:18;;;14727:30;14793:34;14788:2;14773:18;;14766:62;-1:-1:-1;;;14859:2:1;14844:18;;14837:33;14902:3;14887:19;;14513:399::o;16461:135::-;16500:3;16521:17;;;16518:43;;16541:18;;:::i;:::-;-1:-1:-1;16588:1:1;16577:13;;16461:135::o;16601:128::-;16668:9;;;16689:11;;;16686:37;;;16703:18;;:::i;16866:251::-;16936:6;16989:2;16977:9;16968:7;16964:23;16960:32;16957:52;;;17005:1;17002;16995:12;16957:52;17037:9;17031:16;17056:31;17081:5;17056:31;:::i;17122:980::-;17384:4;17432:3;17421:9;17417:19;17463:6;17452:9;17445:25;17489:2;17527:6;17522:2;17511:9;17507:18;17500:34;17570:3;17565:2;17554:9;17550:18;17543:31;17594:6;17629;17623:13;17660:6;17652;17645:22;17698:3;17687:9;17683:19;17676:26;;17737:2;17729:6;17725:15;17711:29;;17758:1;17768:195;17782:6;17779:1;17776:13;17768:195;;;17847:13;;-1:-1:-1;;;;;17843:39:1;17831:52;;17938:15;;;;17903:12;;;;17879:1;17797:9;17768:195;;;-1:-1:-1;;;;;;;18019:32:1;;;;18014:2;17999:18;;17992:60;-1:-1:-1;;;18083:3:1;18068:19;18061:35;17980:3;17122:980;-1:-1:-1;;;17122:980:1:o

Swarm Source

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