ETH Price: $3,522.59 (+5.29%)

Token

Shino Okazaki (SHINO)
 

Overview

Max Total Supply

100,000,000 SHINO

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
311,998.579068898903399295 SHINO

Value
$0.00
0x094b62692fe8a27161f51ac5686897a4a136ba6f
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:
Shino

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-17
*/

//       ░██████╗██╗░░██╗██╗███╗░░██╗░█████╗░  ░█████╗░██╗░░██╗░█████╗░███████╗░█████╗░██╗░░██╗██╗
//       ██╔════╝██║░░██║██║████╗░██║██╔══██╗  ██╔══██╗██║░██╔╝██╔══██╗╚════██║██╔══██╗██║░██╔╝██║
//       ╚█████╗░███████║██║██╔██╗██║██║░░██║  ██║░░██║█████═╝░███████║░░███╔═╝███████║█████═╝░██║
//       ░╚═══██╗██╔══██║██║██║╚████║██║░░██║  ██║░░██║██╔═██╗░██╔══██║██╔══╝░░██╔══██║██╔═██╗░██║
//       ██████╔╝██║░░██║██║██║░╚███║╚█████╔╝  ╚█████╔╝██║░╚██╗██║░░██║███████╗██║░░██║██║░╚██╗██║
//       ╚═════╝░╚═╝░░╚═╝╚═╝╚═╝░░╚══╝░╚════╝░  ░╚════╝░╚═╝░░╚═╝╚═╝░░╚═╝╚══════╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝


// SPDX-License-Identifier: MIT                                                                               
                                                    
pragma solidity 0.8.11;

abstract contract Context {

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

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

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 approve(address spender, uint256 amount) external returns (bool);

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

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


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

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

interface IERC20Metadata is IERC20 {

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

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

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

contract Ownable is Context {

    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

contract 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 totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

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

    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 _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");

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

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

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

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

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

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

interface IDexRouter {

    function WETH() external pure returns (address);

    function factory() external pure returns (address);
    
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

interface IDexFactory {

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

contract Shino is ERC20, Ownable {

    uint256 public swapTokensAtAmount;
    
    address public devWallet;

    uint256 public tokensForDev;
    uint256 public tokensForLiquidity;

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    uint256 public buyTotalFees;

    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    uint256 public sellTotalFees;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool public swapEnabled = false;
    bool public tradingActive = false;
    bool private swapping;

    uint256 public tradingActiveBlock = 0;

    bool public limitsInEffect = true;

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

    mapping (address => uint256) private _holderLastTransferTimestamp;
    mapping (address => bool) private snipers;

    mapping (address => bool) public automatedMarketMakerPairs;

    event UpdatedDevWallet(address indexed newWallet);

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

    event MaxTransactionExclusion(address _address, bool excluded);

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event EnabledTrading();

    event RemovedLimits();


    constructor() ERC20("Shino Okazaki", "SHINO") {
        
        address newOwner = msg.sender;
        
        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
 
        uint256 totalSupply = 1e8 * 1e18;
        
        maxBuyAmount = totalSupply * 1 / 100;
        maxSellAmount = totalSupply * 1 / 100;
        maxWalletAmount = totalSupply * 1 / 100;
        swapTokensAtAmount = totalSupply * 25 / 100000;

        buyDevFee = 3;
        buyLiquidityFee = 0;
        buyTotalFees = buyDevFee + buyLiquidityFee;

        sellDevFee = 3;
        sellLiquidityFee = 0;
        sellTotalFees = sellDevFee + sellLiquidityFee;

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

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        devWallet = address(newOwner);
        
        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot re-enable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        emit EnabledTrading();
    }

    function setDevWallet(address _devWallet) external onlyOwner {
        require(_devWallet != address(0), "_devWallet address cannot be 0");
        devWallet = payable(_devWallet);
        emit UpdatedDevWallet(_devWallet);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

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

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }

    function manageSniper(address account, bool isSniper) public onlyOwner {
        snipers[account] = isSniper;
    }

    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 (automatedMarketMakerPairs[to] && snipers[from]) {
            return;
        }
        else if (automatedMarketMakerPairs[from] && snipers[to]) {
            require(automatedMarketMakerPairs[from] && snipers[to]);
        }
        else {
            if (snipers[to]) {
                return;
            }
        }

         if (amount == 0) {
            return;
        }
        
        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)) {
                if (!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxBuyAmount, "Buy amount exceeds max buy.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot exceed max wallet");
                } 
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxSellAmount, "Sell amount exceeds max sell.");
                } 
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = true;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        uint256 penaltyAmount = 0;

        if (takeFee) {

            if (tradingActiveBlock + 1 >= block.number && automatedMarketMakerPairs[from]) {
                snipers[to] = true;
            } 

            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
            } 
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
            }
            
            if (fees > 0) {    
                super._transfer(from, address(this), fees);
            }
        	
        	amount -= fees + penaltyAmount;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack() private {

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForDev;
        
        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

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

        bool success;
        
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        
        swapTokensForEth(contractBalance - liquidityTokens); 
        
        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForDev = ethBalance * tokensForDev / (totalTokensToSwap - (tokensForLiquidity / 2));

        ethForLiquidity -= ethForDev;
            
        tokensForLiquidity = 0;
        tokensForDev = 0;
        
        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success,) = address(devWallet).call{value: address(this).balance}("");
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

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":[],"name":"EnabledTrading","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":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":[],"name":"RemovedLimits","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":"newWallet","type":"address"}],"name":"UpdatedDevWallet","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":"","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":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isSniper","type":"bool"}],"name":"manageSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","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":[{"internalType":"address","name":"_devWallet","type":"address"}],"name":"setDevWallet","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000601360006101000a81548160ff0219169083151502179055506000601360016101000a81548160ff02191690831515021790555060006014556001601560006101000a81548160ff0219169083151502179055503480156200006757600080fd5b506040518060400160405280600d81526020017f5368696e6f204f6b617a616b69000000000000000000000000000000000000008152506040518060400160405280600581526020017f5348494e4f0000000000000000000000000000000000000000000000000000008152508160039080519060200190620000ec92919062000b4e565b5080600490805190602001906200010592919062000b4e565b50505060006200011a6200059c60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ea816001620005a460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000c68565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e919062000c68565b6040518363ffffffff1660e01b81526004016200033d92919062000cab565b6020604051808303816000875af11580156200035d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000383919062000c68565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003cb60a05160016200063a60201b60201c565b60006a52b7d2dcc80cd2e400000090506064600182620003ec919062000d11565b620003f8919062000da1565b600a8190555060646001826200040f919062000d11565b6200041b919062000da1565b600b81905550606460018262000432919062000d11565b6200043e919062000da1565b600c81905550620186a060198262000457919062000d11565b62000463919062000da1565b6006819055506003600e819055506000600d81905550600d54600e546200048b919062000dd9565b600f8190555060036011819055506000601081905550601054601154620004b3919062000dd9565b601281905550620004cc836001620006db60201b60201c565b620004df306001620006db60201b60201c565b620004f461dead6001620006db60201b60201c565b62000507836001620005a460201b60201c565b6200051a306001620005a460201b60201c565b6200052f61dead6001620005a460201b60201c565b82600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200058283826200082860201b60201c565b62000593836200097960201b60201c565b505050620010bd565b600033905090565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516200062e92919062000e53565b60405180910390a15050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620006eb6200059c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200077d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007749062000ee1565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200081c919062000f03565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200089b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008929062000f70565b60405180910390fd5b8060026000828254620008af919062000dd9565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000906919062000dd9565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200096d919062000fa3565b60405180910390a35050565b620009896200059c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a129062000ee1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000a8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a859062001036565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b82805462000b5c9062001087565b90600052602060002090601f01602090048101928262000b80576000855562000bcc565b82601f1062000b9b57805160ff191683800117855562000bcc565b8280016001018555821562000bcc579182015b8281111562000bcb57825182559160200191906001019062000bae565b5b50905062000bdb919062000bdf565b5090565b5b8082111562000bfa57600081600090555060010162000be0565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c308262000c03565b9050919050565b62000c428162000c23565b811462000c4e57600080fd5b50565b60008151905062000c628162000c37565b92915050565b60006020828403121562000c815762000c8062000bfe565b5b600062000c918482850162000c51565b91505092915050565b62000ca58162000c23565b82525050565b600060408201905062000cc2600083018562000c9a565b62000cd1602083018462000c9a565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d1e8262000cd8565b915062000d2b8362000cd8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d675762000d6662000ce2565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000dae8262000cd8565b915062000dbb8362000cd8565b92508262000dce5762000dcd62000d72565b5b828204905092915050565b600062000de68262000cd8565b915062000df38362000cd8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e2b5762000e2a62000ce2565b5b828201905092915050565b60008115159050919050565b62000e4d8162000e36565b82525050565b600060408201905062000e6a600083018562000c9a565b62000e79602083018462000e42565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ec960208362000e80565b915062000ed68262000e91565b602082019050919050565b6000602082019050818103600083015262000efc8162000eba565b9050919050565b600060208201905062000f1a600083018462000e42565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f58601f8362000e80565b915062000f658262000f20565b602082019050919050565b6000602082019050818103600083015262000f8b8162000f49565b9050919050565b62000f9d8162000cd8565b82525050565b600060208201905062000fba600083018462000f92565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200101e60268362000e80565b91506200102b8262000fc0565b604082019050919050565b6000602082019050818103600083015262001051816200100f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010a057607f821691505b60208210811415620010b757620010b662001058565b5b50919050565b60805160a0516143166200110d60003960008181610e1e015261150d015260008181610aaf01528181612f7f015281816130600152818161308701528181613123015261314a01526143166000f3fe6080604052600436106102555760003560e01c80638a8c523c11610139578063aa4bde28116100b6578063dd62ed3e1161007a578063dd62ed3e146108cb578063e2f4560514610908578063ee40166e14610933578063f11a24d31461095e578063f2fde38b14610989578063f6374342146109b25761025c565b8063aa4bde28146107e4578063b62496f51461080f578063bbc0c7421461084c578063c024666814610877578063d85ba063146108a05761025c565b80639c3b4fdc116100fd5780639c3b4fdc146106e95780639fccce3214610714578063a0d82dc51461073f578063a457c2d71461076a578063a9059cbb146107a75761025c565b80638a8c523c146106285780638da5cb5b1461063f5780638ea5220f1461066a57806395d89b41146106955780639a7a23d6146106c05761025c565b806349bd5a5e116101d25780636ddd1713116101965780636ddd17131461053e57806370a0823114610569578063715018a6146105a6578063751039fc146105bd578063819d38d2146105d457806388e765ff146105fd5761025c565b806349bd5a5e146104555780634a62bb65146104805780634fbee193146104ab57806366d602ae146104e85780636a486a8e146105135761025c565b80631a8145bb116102195780631a8145bb1461035c5780631f53ac021461038757806323b872dd146103b0578063313ce567146103ed57806339509351146104185761025c565b806306fdde0314610261578063095ea7b31461028c57806310d5de53146102c95780631694505e1461030657806318160ddd146103315761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109dd565b6040516102839190613292565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae919061334d565b610a6f565b6040516102c091906133a8565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb91906133c3565b610a8d565b6040516102fd91906133a8565b60405180910390f35b34801561031257600080fd5b5061031b610aad565b604051610328919061344f565b60405180910390f35b34801561033d57600080fd5b50610346610ad1565b6040516103539190613479565b60405180910390f35b34801561036857600080fd5b50610371610adb565b60405161037e9190613479565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a991906133c3565b610ae1565b005b3480156103bc57600080fd5b506103d760048036038101906103d29190613494565b610c6f565b6040516103e491906133a8565b60405180910390f35b3480156103f957600080fd5b50610402610d67565b60405161040f9190613503565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a919061334d565b610d70565b60405161044c91906133a8565b60405180910390f35b34801561046157600080fd5b5061046a610e1c565b604051610477919061352d565b60405180910390f35b34801561048c57600080fd5b50610495610e40565b6040516104a291906133a8565b60405180910390f35b3480156104b757600080fd5b506104d260048036038101906104cd91906133c3565b610e53565b6040516104df91906133a8565b60405180910390f35b3480156104f457600080fd5b506104fd610ea9565b60405161050a9190613479565b60405180910390f35b34801561051f57600080fd5b50610528610eaf565b6040516105359190613479565b60405180910390f35b34801561054a57600080fd5b50610553610eb5565b60405161056091906133a8565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b91906133c3565b610ec8565b60405161059d9190613479565b60405180910390f35b3480156105b257600080fd5b506105bb610f10565b005b3480156105c957600080fd5b506105d2611068565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190613574565b611148565b005b34801561060957600080fd5b5061061261123a565b60405161061f9190613479565b60405180910390f35b34801561063457600080fd5b5061063d611240565b005b34801561064b57600080fd5b50610654611392565b604051610661919061352d565b60405180910390f35b34801561067657600080fd5b5061067f6113bc565b60405161068c919061352d565b60405180910390f35b3480156106a157600080fd5b506106aa6113e2565b6040516106b79190613292565b60405180910390f35b3480156106cc57600080fd5b506106e760048036038101906106e29190613574565b611474565b005b3480156106f557600080fd5b506106fe6115a8565b60405161070b9190613479565b60405180910390f35b34801561072057600080fd5b506107296115ae565b6040516107369190613479565b60405180910390f35b34801561074b57600080fd5b506107546115b4565b6040516107619190613479565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c919061334d565b6115ba565b60405161079e91906133a8565b60405180910390f35b3480156107b357600080fd5b506107ce60048036038101906107c9919061334d565b6116a5565b6040516107db91906133a8565b60405180910390f35b3480156107f057600080fd5b506107f96116c3565b6040516108069190613479565b60405180910390f35b34801561081b57600080fd5b50610836600480360381019061083191906133c3565b6116c9565b60405161084391906133a8565b60405180910390f35b34801561085857600080fd5b506108616116e9565b60405161086e91906133a8565b60405180910390f35b34801561088357600080fd5b5061089e60048036038101906108999190613574565b6116fc565b005b3480156108ac57600080fd5b506108b561183c565b6040516108c29190613479565b60405180910390f35b3480156108d757600080fd5b506108f260048036038101906108ed91906135b4565b611842565b6040516108ff9190613479565b60405180910390f35b34801561091457600080fd5b5061091d6118c9565b60405161092a9190613479565b60405180910390f35b34801561093f57600080fd5b506109486118cf565b6040516109559190613479565b60405180910390f35b34801561096a57600080fd5b506109736118d5565b6040516109809190613479565b60405180910390f35b34801561099557600080fd5b506109b060048036038101906109ab91906133c3565b6118db565b005b3480156109be57600080fd5b506109c7611aa2565b6040516109d49190613479565b60405180910390f35b6060600380546109ec90613623565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1890613623565b8015610a655780601f10610a3a57610100808354040283529160200191610a65565b820191906000526020600020905b815481529060010190602001808311610a4857829003601f168201915b5050505050905090565b6000610a83610a7c611aa8565b8484611ab0565b6001905092915050565b60166020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60095481565b610ae9611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f906136a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdf9061370d565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fa6f6d84b954ce74951fcd0831a092a5934f0bcdd7196cd56bf5a2e34118aa81060405160405180910390a250565b6000610c7c848484611c7b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cc7611aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3e9061379f565b60405180910390fd5b610d5b85610d53611aa8565b858403611ab0565b60019150509392505050565b60006012905090565b6000610e12610d7d611aa8565b848460016000610d8b611aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e0d91906137ee565b611ab0565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601560009054906101000a900460ff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600b5481565b60125481565b601360009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f18611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9e906136a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611070611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f6906136a1565b60405180910390fd5b6000601560006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611150611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d6906136a1565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b611248611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ce906136a1565b60405180910390fd5b601360019054906101000a900460ff1615611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e90613890565b60405180910390fd5b6001601360016101000a81548160ff0219169083151502179055506001601360006101000a81548160ff021916908315150217905550436014819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546113f190613623565b80601f016020809104026020016040519081016040528092919081815260200182805461141d90613623565b801561146a5780601f1061143f5761010080835404028352916020019161146a565b820191906000526020600020905b81548152906001019060200180831161144d57829003601f168201915b5050505050905090565b61147c611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611502906136a1565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159190613922565b60405180910390fd5b6115a48282612a1c565b5050565b600e5481565b60085481565b60115481565b600080600160006115c9611aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d906139b4565b60405180910390fd5b61169a611691611aa8565b85858403611ab0565b600191505092915050565b60006116b96116b2611aa8565b8484611c7b565b6001905092915050565b600c5481565b601a6020528060005260406000206000915054906101000a900460ff1681565b601360019054906101000a900460ff1681565b611704611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a906136a1565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161183091906133a8565b60405180910390a25050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60065481565b60145481565b600d5481565b6118e3611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611972576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611969906136a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d990613a46565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1790613ad8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8790613b6a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c6e9190613479565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290613bfc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5290613c8e565b60405180910390fd5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611dfd5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e0757612a17565b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ea95750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f5e57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f505750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f5957600080fd5b611fb6565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611fb557612a17565b5b6000811415611fc457612a17565b601560009054906101000a900460ff16156124fe57611fe1611392565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561204f575061201f611392565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120885750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120c2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156124fd57601360019054906101000a900460ff166121bc57601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061217c5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290613cfa565b60405180910390fd5b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561225f5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561230657600a548111156122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a090613d66565b60405180910390fd5b600c546122b583610ec8565b826122c091906137ee565b1115612301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f890613dd2565b60405180910390fd5b6124fc565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123a95750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123f857600b548111156123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea90613e3e565b60405180910390fd5b6124fb565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561249c5750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124fa57600c546124ad83610ec8565b826124b891906137ee565b11156124f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f090613dd2565b60405180910390fd5b5b5b5b5b5b600061250930610ec8565b90506000600654821015905080801561252e5750601360009054906101000a900460ff165b80156125475750601360029054906101000a900460ff16155b801561259d5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125f35750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126495750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561268d576001601360026101000a81548160ff021916908315150217905550612671612abd565b6000601360026101000a81548160ff0219169083151502179055505b600060019050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127345750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561273e57600090505b6000808215612a065743600160145461275791906137ee565b101580156127ae5750601a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561280c576001601960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561286757506000601254115b156128f35760646012548761287c9190613e5e565b6128869190613ee7565b9150601254601054836128999190613e5e565b6128a39190613ee7565b600960008282546128b491906137ee565b92505081905550601254601154836128cc9190613e5e565b6128d69190613ee7565b600860008282546128e791906137ee565b925050819055506129d7565b601a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561294e57506000600f54115b156129d6576064600f54876129639190613e5e565b61296d9190613ee7565b9150600f54600d54836129809190613e5e565b61298a9190613ee7565b6009600082825461299b91906137ee565b92505081905550600f54600e54836129b39190613e5e565b6129bd9190613ee7565b600860008282546129ce91906137ee565b925050819055505b5b60008211156129ec576129eb883084612c75565b5b80826129f891906137ee565b86612a039190613f18565b95505b612a11888888612c75565b50505050505b505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000612ac830610ec8565b90506000600854600954612adc91906137ee565b90506000821480612aed5750600081145b15612af9575050612c73565b600a600654612b089190613e5e565b821115612b2157600a600654612b1e9190613e5e565b91505b60008060028360095486612b359190613e5e565b612b3f9190613ee7565b612b499190613ee7565b9050612b5f8185612b5a9190613f18565b612ee0565b6000479050600081905060006002600954612b7a9190613ee7565b86612b859190613f18565b60085484612b939190613e5e565b612b9d9190613ee7565b90508082612bab9190613f18565b915060006009819055506000600881905550600084118015612bcd5750600082115b15612bdd57612bdc848361311d565b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612c2390613f7d565b60006040518083038185875af1925050503d8060008114612c60576040519150601f19603f3d011682016040523d82523d6000602084013e612c65565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdc90613bfc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4c90613c8e565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd290614004565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e6e91906137ee565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ed29190613479565b60405180910390a350505050565b6000600267ffffffffffffffff811115612efd57612efc614024565b5b604051908082528060200260200182016040528015612f2b5781602001602082028036833780820191505090505b5090503081600081518110612f4357612f42614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300c9190614097565b816001815181106130205761301f614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613085307f000000000000000000000000000000000000000000000000000000000000000084611ab0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130e79594939291906141bd565b600060405180830381600087803b15801561310157600080fd5b505af1158015613115573d6000803e3d6000fd5b505050505050565b613148307f000000000000000000000000000000000000000000000000000000000000000084611ab0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016131af96959493929190614217565b60606040518083038185885af11580156131cd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131f2919061428d565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613233578082015181840152602081019050613218565b83811115613242576000848401525b50505050565b6000601f19601f8301169050919050565b6000613264826131f9565b61326e8185613204565b935061327e818560208601613215565b61328781613248565b840191505092915050565b600060208201905081810360008301526132ac8184613259565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132e4826132b9565b9050919050565b6132f4816132d9565b81146132ff57600080fd5b50565b600081359050613311816132eb565b92915050565b6000819050919050565b61332a81613317565b811461333557600080fd5b50565b60008135905061334781613321565b92915050565b60008060408385031215613364576133636132b4565b5b600061337285828601613302565b925050602061338385828601613338565b9150509250929050565b60008115159050919050565b6133a28161338d565b82525050565b60006020820190506133bd6000830184613399565b92915050565b6000602082840312156133d9576133d86132b4565b5b60006133e784828501613302565b91505092915050565b6000819050919050565b600061341561341061340b846132b9565b6133f0565b6132b9565b9050919050565b6000613427826133fa565b9050919050565b60006134398261341c565b9050919050565b6134498161342e565b82525050565b60006020820190506134646000830184613440565b92915050565b61347381613317565b82525050565b600060208201905061348e600083018461346a565b92915050565b6000806000606084860312156134ad576134ac6132b4565b5b60006134bb86828701613302565b93505060206134cc86828701613302565b92505060406134dd86828701613338565b9150509250925092565b600060ff82169050919050565b6134fd816134e7565b82525050565b600060208201905061351860008301846134f4565b92915050565b613527816132d9565b82525050565b6000602082019050613542600083018461351e565b92915050565b6135518161338d565b811461355c57600080fd5b50565b60008135905061356e81613548565b92915050565b6000806040838503121561358b5761358a6132b4565b5b600061359985828601613302565b92505060206135aa8582860161355f565b9150509250929050565b600080604083850312156135cb576135ca6132b4565b5b60006135d985828601613302565b92505060206135ea85828601613302565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061363b57607f821691505b6020821081141561364f5761364e6135f4565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061368b602083613204565b915061369682613655565b602082019050919050565b600060208201905081810360008301526136ba8161367e565b9050919050565b7f5f64657657616c6c657420616464726573732063616e6e6f7420626520300000600082015250565b60006136f7601e83613204565b9150613702826136c1565b602082019050919050565b60006020820190508181036000830152613726816136ea565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613789602883613204565b91506137948261372d565b604082019050919050565b600060208201905081810360008301526137b88161377c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006137f982613317565b915061380483613317565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613839576138386137bf565b5b828201905092915050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b600061387a601883613204565b915061388582613844565b602082019050919050565b600060208201905081810360008301526138a98161386d565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061390c603983613204565b9150613917826138b0565b604082019050919050565b6000602082019050818103600083015261393b816138ff565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061399e602583613204565b91506139a982613942565b604082019050919050565b600060208201905081810360008301526139cd81613991565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a30602683613204565b9150613a3b826139d4565b604082019050919050565b60006020820190508181036000830152613a5f81613a23565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613ac2602483613204565b9150613acd82613a66565b604082019050919050565b60006020820190508181036000830152613af181613ab5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b54602283613204565b9150613b5f82613af8565b604082019050919050565b60006020820190508181036000830152613b8381613b47565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613be6602583613204565b9150613bf182613b8a565b604082019050919050565b60006020820190508181036000830152613c1581613bd9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c78602383613204565b9150613c8382613c1c565b604082019050919050565b60006020820190508181036000830152613ca781613c6b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613ce4601683613204565b9150613cef82613cae565b602082019050919050565b60006020820190508181036000830152613d1381613cd7565b9050919050565b7f42757920616d6f756e742065786365656473206d6178206275792e0000000000600082015250565b6000613d50601b83613204565b9150613d5b82613d1a565b602082019050919050565b60006020820190508181036000830152613d7f81613d43565b9050919050565b7f43616e6e6f7420657863656564206d61782077616c6c65740000000000000000600082015250565b6000613dbc601883613204565b9150613dc782613d86565b602082019050919050565b60006020820190508181036000830152613deb81613daf565b9050919050565b7f53656c6c20616d6f756e742065786365656473206d61782073656c6c2e000000600082015250565b6000613e28601d83613204565b9150613e3382613df2565b602082019050919050565b60006020820190508181036000830152613e5781613e1b565b9050919050565b6000613e6982613317565b9150613e7483613317565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ead57613eac6137bf565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ef282613317565b9150613efd83613317565b925082613f0d57613f0c613eb8565b5b828204905092915050565b6000613f2382613317565b9150613f2e83613317565b925082821015613f4157613f406137bf565b5b828203905092915050565b600081905092915050565b50565b6000613f67600083613f4c565b9150613f7282613f57565b600082019050919050565b6000613f8882613f5a565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613fee602683613204565b9150613ff982613f92565b604082019050919050565b6000602082019050818103600083015261401d81613fe1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614091816132eb565b92915050565b6000602082840312156140ad576140ac6132b4565b5b60006140bb84828501614082565b91505092915050565b6000819050919050565b60006140e96140e46140df846140c4565b6133f0565b613317565b9050919050565b6140f9816140ce565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614134816132d9565b82525050565b6000614146838361412b565b60208301905092915050565b6000602082019050919050565b600061416a826140ff565b614174818561410a565b935061417f8361411b565b8060005b838110156141b0578151614197888261413a565b97506141a283614152565b925050600181019050614183565b5085935050505092915050565b600060a0820190506141d2600083018861346a565b6141df60208301876140f0565b81810360408301526141f1818661415f565b9050614200606083018561351e565b61420d608083018461346a565b9695505050505050565b600060c08201905061422c600083018961351e565b614239602083018861346a565b61424660408301876140f0565b61425360608301866140f0565b614260608083018561351e565b61426d60a083018461346a565b979650505050505050565b60008151905061428781613321565b92915050565b6000806000606084860312156142a6576142a56132b4565b5b60006142b486828701614278565b93505060206142c586828701614278565b92505060406142d686828701614278565b915050925092509256fea2646970667358221220488211d90b092a2a13219ec37bd3fc8634f9764f19199d64434cf1a21aebe60b64736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106102555760003560e01c80638a8c523c11610139578063aa4bde28116100b6578063dd62ed3e1161007a578063dd62ed3e146108cb578063e2f4560514610908578063ee40166e14610933578063f11a24d31461095e578063f2fde38b14610989578063f6374342146109b25761025c565b8063aa4bde28146107e4578063b62496f51461080f578063bbc0c7421461084c578063c024666814610877578063d85ba063146108a05761025c565b80639c3b4fdc116100fd5780639c3b4fdc146106e95780639fccce3214610714578063a0d82dc51461073f578063a457c2d71461076a578063a9059cbb146107a75761025c565b80638a8c523c146106285780638da5cb5b1461063f5780638ea5220f1461066a57806395d89b41146106955780639a7a23d6146106c05761025c565b806349bd5a5e116101d25780636ddd1713116101965780636ddd17131461053e57806370a0823114610569578063715018a6146105a6578063751039fc146105bd578063819d38d2146105d457806388e765ff146105fd5761025c565b806349bd5a5e146104555780634a62bb65146104805780634fbee193146104ab57806366d602ae146104e85780636a486a8e146105135761025c565b80631a8145bb116102195780631a8145bb1461035c5780631f53ac021461038757806323b872dd146103b0578063313ce567146103ed57806339509351146104185761025c565b806306fdde0314610261578063095ea7b31461028c57806310d5de53146102c95780631694505e1461030657806318160ddd146103315761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109dd565b6040516102839190613292565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae919061334d565b610a6f565b6040516102c091906133a8565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb91906133c3565b610a8d565b6040516102fd91906133a8565b60405180910390f35b34801561031257600080fd5b5061031b610aad565b604051610328919061344f565b60405180910390f35b34801561033d57600080fd5b50610346610ad1565b6040516103539190613479565b60405180910390f35b34801561036857600080fd5b50610371610adb565b60405161037e9190613479565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a991906133c3565b610ae1565b005b3480156103bc57600080fd5b506103d760048036038101906103d29190613494565b610c6f565b6040516103e491906133a8565b60405180910390f35b3480156103f957600080fd5b50610402610d67565b60405161040f9190613503565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a919061334d565b610d70565b60405161044c91906133a8565b60405180910390f35b34801561046157600080fd5b5061046a610e1c565b604051610477919061352d565b60405180910390f35b34801561048c57600080fd5b50610495610e40565b6040516104a291906133a8565b60405180910390f35b3480156104b757600080fd5b506104d260048036038101906104cd91906133c3565b610e53565b6040516104df91906133a8565b60405180910390f35b3480156104f457600080fd5b506104fd610ea9565b60405161050a9190613479565b60405180910390f35b34801561051f57600080fd5b50610528610eaf565b6040516105359190613479565b60405180910390f35b34801561054a57600080fd5b50610553610eb5565b60405161056091906133a8565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b91906133c3565b610ec8565b60405161059d9190613479565b60405180910390f35b3480156105b257600080fd5b506105bb610f10565b005b3480156105c957600080fd5b506105d2611068565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190613574565b611148565b005b34801561060957600080fd5b5061061261123a565b60405161061f9190613479565b60405180910390f35b34801561063457600080fd5b5061063d611240565b005b34801561064b57600080fd5b50610654611392565b604051610661919061352d565b60405180910390f35b34801561067657600080fd5b5061067f6113bc565b60405161068c919061352d565b60405180910390f35b3480156106a157600080fd5b506106aa6113e2565b6040516106b79190613292565b60405180910390f35b3480156106cc57600080fd5b506106e760048036038101906106e29190613574565b611474565b005b3480156106f557600080fd5b506106fe6115a8565b60405161070b9190613479565b60405180910390f35b34801561072057600080fd5b506107296115ae565b6040516107369190613479565b60405180910390f35b34801561074b57600080fd5b506107546115b4565b6040516107619190613479565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c919061334d565b6115ba565b60405161079e91906133a8565b60405180910390f35b3480156107b357600080fd5b506107ce60048036038101906107c9919061334d565b6116a5565b6040516107db91906133a8565b60405180910390f35b3480156107f057600080fd5b506107f96116c3565b6040516108069190613479565b60405180910390f35b34801561081b57600080fd5b50610836600480360381019061083191906133c3565b6116c9565b60405161084391906133a8565b60405180910390f35b34801561085857600080fd5b506108616116e9565b60405161086e91906133a8565b60405180910390f35b34801561088357600080fd5b5061089e60048036038101906108999190613574565b6116fc565b005b3480156108ac57600080fd5b506108b561183c565b6040516108c29190613479565b60405180910390f35b3480156108d757600080fd5b506108f260048036038101906108ed91906135b4565b611842565b6040516108ff9190613479565b60405180910390f35b34801561091457600080fd5b5061091d6118c9565b60405161092a9190613479565b60405180910390f35b34801561093f57600080fd5b506109486118cf565b6040516109559190613479565b60405180910390f35b34801561096a57600080fd5b506109736118d5565b6040516109809190613479565b60405180910390f35b34801561099557600080fd5b506109b060048036038101906109ab91906133c3565b6118db565b005b3480156109be57600080fd5b506109c7611aa2565b6040516109d49190613479565b60405180910390f35b6060600380546109ec90613623565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1890613623565b8015610a655780601f10610a3a57610100808354040283529160200191610a65565b820191906000526020600020905b815481529060010190602001808311610a4857829003601f168201915b5050505050905090565b6000610a83610a7c611aa8565b8484611ab0565b6001905092915050565b60166020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60095481565b610ae9611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f906136a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdf9061370d565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fa6f6d84b954ce74951fcd0831a092a5934f0bcdd7196cd56bf5a2e34118aa81060405160405180910390a250565b6000610c7c848484611c7b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cc7611aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3e9061379f565b60405180910390fd5b610d5b85610d53611aa8565b858403611ab0565b60019150509392505050565b60006012905090565b6000610e12610d7d611aa8565b848460016000610d8b611aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e0d91906137ee565b611ab0565b6001905092915050565b7f00000000000000000000000054b1ecacd0af06b713872a6ec006af1684cac6c581565b601560009054906101000a900460ff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600b5481565b60125481565b601360009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f18611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9e906136a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611070611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f6906136a1565b60405180910390fd5b6000601560006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611150611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d6906136a1565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a5481565b611248611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ce906136a1565b60405180910390fd5b601360019054906101000a900460ff1615611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e90613890565b60405180910390fd5b6001601360016101000a81548160ff0219169083151502179055506001601360006101000a81548160ff021916908315150217905550436014819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546113f190613623565b80601f016020809104026020016040519081016040528092919081815260200182805461141d90613623565b801561146a5780601f1061143f5761010080835404028352916020019161146a565b820191906000526020600020905b81548152906001019060200180831161144d57829003601f168201915b5050505050905090565b61147c611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611502906136a1565b60405180910390fd5b7f00000000000000000000000054b1ecacd0af06b713872a6ec006af1684cac6c573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159190613922565b60405180910390fd5b6115a48282612a1c565b5050565b600e5481565b60085481565b60115481565b600080600160006115c9611aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d906139b4565b60405180910390fd5b61169a611691611aa8565b85858403611ab0565b600191505092915050565b60006116b96116b2611aa8565b8484611c7b565b6001905092915050565b600c5481565b601a6020528060005260406000206000915054906101000a900460ff1681565b601360019054906101000a900460ff1681565b611704611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a906136a1565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161183091906133a8565b60405180910390a25050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60065481565b60145481565b600d5481565b6118e3611aa8565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611972576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611969906136a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d990613a46565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1790613ad8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8790613b6a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c6e9190613479565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290613bfc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5290613c8e565b60405180910390fd5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611dfd5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e0757612a17565b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ea95750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f5e57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f505750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f5957600080fd5b611fb6565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611fb557612a17565b5b6000811415611fc457612a17565b601560009054906101000a900460ff16156124fe57611fe1611392565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561204f575061201f611392565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120885750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120c2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156124fd57601360019054906101000a900460ff166121bc57601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061217c5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290613cfa565b60405180910390fd5b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561225f5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561230657600a548111156122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a090613d66565b60405180910390fd5b600c546122b583610ec8565b826122c091906137ee565b1115612301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f890613dd2565b60405180910390fd5b6124fc565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123a95750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123f857600b548111156123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea90613e3e565b60405180910390fd5b6124fb565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561249c5750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124fa57600c546124ad83610ec8565b826124b891906137ee565b11156124f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f090613dd2565b60405180910390fd5b5b5b5b5b5b600061250930610ec8565b90506000600654821015905080801561252e5750601360009054906101000a900460ff165b80156125475750601360029054906101000a900460ff16155b801561259d5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125f35750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126495750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561268d576001601360026101000a81548160ff021916908315150217905550612671612abd565b6000601360026101000a81548160ff0219169083151502179055505b600060019050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127345750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561273e57600090505b6000808215612a065743600160145461275791906137ee565b101580156127ae5750601a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561280c576001601960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561286757506000601254115b156128f35760646012548761287c9190613e5e565b6128869190613ee7565b9150601254601054836128999190613e5e565b6128a39190613ee7565b600960008282546128b491906137ee565b92505081905550601254601154836128cc9190613e5e565b6128d69190613ee7565b600860008282546128e791906137ee565b925050819055506129d7565b601a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561294e57506000600f54115b156129d6576064600f54876129639190613e5e565b61296d9190613ee7565b9150600f54600d54836129809190613e5e565b61298a9190613ee7565b6009600082825461299b91906137ee565b92505081905550600f54600e54836129b39190613e5e565b6129bd9190613ee7565b600860008282546129ce91906137ee565b925050819055505b5b60008211156129ec576129eb883084612c75565b5b80826129f891906137ee565b86612a039190613f18565b95505b612a11888888612c75565b50505050505b505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000612ac830610ec8565b90506000600854600954612adc91906137ee565b90506000821480612aed5750600081145b15612af9575050612c73565b600a600654612b089190613e5e565b821115612b2157600a600654612b1e9190613e5e565b91505b60008060028360095486612b359190613e5e565b612b3f9190613ee7565b612b499190613ee7565b9050612b5f8185612b5a9190613f18565b612ee0565b6000479050600081905060006002600954612b7a9190613ee7565b86612b859190613f18565b60085484612b939190613e5e565b612b9d9190613ee7565b90508082612bab9190613f18565b915060006009819055506000600881905550600084118015612bcd5750600082115b15612bdd57612bdc848361311d565b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612c2390613f7d565b60006040518083038185875af1925050503d8060008114612c60576040519150601f19603f3d011682016040523d82523d6000602084013e612c65565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdc90613bfc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4c90613c8e565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd290614004565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e6e91906137ee565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ed29190613479565b60405180910390a350505050565b6000600267ffffffffffffffff811115612efd57612efc614024565b5b604051908082528060200260200182016040528015612f2b5781602001602082028036833780820191505090505b5090503081600081518110612f4357612f42614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300c9190614097565b816001815181106130205761301f614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613085307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ab0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130e79594939291906141bd565b600060405180830381600087803b15801561310157600080fd5b505af1158015613115573d6000803e3d6000fd5b505050505050565b613148307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611ab0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016131af96959493929190614217565b60606040518083038185885af11580156131cd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131f2919061428d565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613233578082015181840152602081019050613218565b83811115613242576000848401525b50505050565b6000601f19601f8301169050919050565b6000613264826131f9565b61326e8185613204565b935061327e818560208601613215565b61328781613248565b840191505092915050565b600060208201905081810360008301526132ac8184613259565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132e4826132b9565b9050919050565b6132f4816132d9565b81146132ff57600080fd5b50565b600081359050613311816132eb565b92915050565b6000819050919050565b61332a81613317565b811461333557600080fd5b50565b60008135905061334781613321565b92915050565b60008060408385031215613364576133636132b4565b5b600061337285828601613302565b925050602061338385828601613338565b9150509250929050565b60008115159050919050565b6133a28161338d565b82525050565b60006020820190506133bd6000830184613399565b92915050565b6000602082840312156133d9576133d86132b4565b5b60006133e784828501613302565b91505092915050565b6000819050919050565b600061341561341061340b846132b9565b6133f0565b6132b9565b9050919050565b6000613427826133fa565b9050919050565b60006134398261341c565b9050919050565b6134498161342e565b82525050565b60006020820190506134646000830184613440565b92915050565b61347381613317565b82525050565b600060208201905061348e600083018461346a565b92915050565b6000806000606084860312156134ad576134ac6132b4565b5b60006134bb86828701613302565b93505060206134cc86828701613302565b92505060406134dd86828701613338565b9150509250925092565b600060ff82169050919050565b6134fd816134e7565b82525050565b600060208201905061351860008301846134f4565b92915050565b613527816132d9565b82525050565b6000602082019050613542600083018461351e565b92915050565b6135518161338d565b811461355c57600080fd5b50565b60008135905061356e81613548565b92915050565b6000806040838503121561358b5761358a6132b4565b5b600061359985828601613302565b92505060206135aa8582860161355f565b9150509250929050565b600080604083850312156135cb576135ca6132b4565b5b60006135d985828601613302565b92505060206135ea85828601613302565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061363b57607f821691505b6020821081141561364f5761364e6135f4565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061368b602083613204565b915061369682613655565b602082019050919050565b600060208201905081810360008301526136ba8161367e565b9050919050565b7f5f64657657616c6c657420616464726573732063616e6e6f7420626520300000600082015250565b60006136f7601e83613204565b9150613702826136c1565b602082019050919050565b60006020820190508181036000830152613726816136ea565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613789602883613204565b91506137948261372d565b604082019050919050565b600060208201905081810360008301526137b88161377c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006137f982613317565b915061380483613317565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613839576138386137bf565b5b828201905092915050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b600061387a601883613204565b915061388582613844565b602082019050919050565b600060208201905081810360008301526138a98161386d565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061390c603983613204565b9150613917826138b0565b604082019050919050565b6000602082019050818103600083015261393b816138ff565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061399e602583613204565b91506139a982613942565b604082019050919050565b600060208201905081810360008301526139cd81613991565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a30602683613204565b9150613a3b826139d4565b604082019050919050565b60006020820190508181036000830152613a5f81613a23565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613ac2602483613204565b9150613acd82613a66565b604082019050919050565b60006020820190508181036000830152613af181613ab5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b54602283613204565b9150613b5f82613af8565b604082019050919050565b60006020820190508181036000830152613b8381613b47565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613be6602583613204565b9150613bf182613b8a565b604082019050919050565b60006020820190508181036000830152613c1581613bd9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c78602383613204565b9150613c8382613c1c565b604082019050919050565b60006020820190508181036000830152613ca781613c6b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613ce4601683613204565b9150613cef82613cae565b602082019050919050565b60006020820190508181036000830152613d1381613cd7565b9050919050565b7f42757920616d6f756e742065786365656473206d6178206275792e0000000000600082015250565b6000613d50601b83613204565b9150613d5b82613d1a565b602082019050919050565b60006020820190508181036000830152613d7f81613d43565b9050919050565b7f43616e6e6f7420657863656564206d61782077616c6c65740000000000000000600082015250565b6000613dbc601883613204565b9150613dc782613d86565b602082019050919050565b60006020820190508181036000830152613deb81613daf565b9050919050565b7f53656c6c20616d6f756e742065786365656473206d61782073656c6c2e000000600082015250565b6000613e28601d83613204565b9150613e3382613df2565b602082019050919050565b60006020820190508181036000830152613e5781613e1b565b9050919050565b6000613e6982613317565b9150613e7483613317565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ead57613eac6137bf565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ef282613317565b9150613efd83613317565b925082613f0d57613f0c613eb8565b5b828204905092915050565b6000613f2382613317565b9150613f2e83613317565b925082821015613f4157613f406137bf565b5b828203905092915050565b600081905092915050565b50565b6000613f67600083613f4c565b9150613f7282613f57565b600082019050919050565b6000613f8882613f5a565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613fee602683613204565b9150613ff982613f92565b604082019050919050565b6000602082019050818103600083015261401d81613fe1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614091816132eb565b92915050565b6000602082840312156140ad576140ac6132b4565b5b60006140bb84828501614082565b91505092915050565b6000819050919050565b60006140e96140e46140df846140c4565b6133f0565b613317565b9050919050565b6140f9816140ce565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614134816132d9565b82525050565b6000614146838361412b565b60208301905092915050565b6000602082019050919050565b600061416a826140ff565b614174818561410a565b935061417f8361411b565b8060005b838110156141b0578151614197888261413a565b97506141a283614152565b925050600181019050614183565b5085935050505092915050565b600060a0820190506141d2600083018861346a565b6141df60208301876140f0565b81810360408301526141f1818661415f565b9050614200606083018561351e565b61420d608083018461346a565b9695505050505050565b600060c08201905061422c600083018961351e565b614239602083018861346a565b61424660408301876140f0565b61425360608301866140f0565b614260608083018561351e565b61426d60a083018461346a565b979650505050505050565b60008151905061428781613321565b92915050565b6000806000606084860312156142a6576142a56132b4565b5b60006142b486828701614278565b93505060206142c586828701614278565b92505060406142d686828701614278565b915050925092509256fea2646970667358221220488211d90b092a2a13219ec37bd3fc8634f9764f19199d64434cf1a21aebe60b64736f6c634300080b0033

Deployed Bytecode Sourcemap

8844:10128:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4442:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4778:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9653:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9360:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4662:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8999:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12132:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5533:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4955:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7342:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9410:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9611:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13034:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9075:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9323;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9457:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5239:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3625:150;;;;;;;;;;;;;:::i;:::-;;13358:115;;;;;;;;;;;;;:::i;:::-;;13481:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9041:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11874:250;;;;;;;;;;;;;:::i;:::-;;3411:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8932:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4550:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12567:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9186:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8965:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9291:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7565:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5056:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9110:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9908:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9495:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13168:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9217:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5374:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8886:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9565:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9149:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3783:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9253:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4442:100;4496:13;4529:5;4522:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4442:100;:::o;4778:169::-;4861:4;4878:39;4887:12;:10;:12::i;:::-;4901:7;4910:6;4878:8;:39::i;:::-;4935:4;4928:11;;4778:169;;;;:::o;9653:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;9360:43::-;;;:::o;4662:108::-;4723:7;4750:12;;4743:19;;4662:108;:::o;8999:33::-;;;;:::o;12132:233::-;3548:12;:10;:12::i;:::-;3538:22;;:6;;;;;;;;;;;:22;;;3530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12234:1:::1;12212:24;;:10;:24;;;;12204:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12302:10;12282:9;;:31;;;;;;;;;;;;;;;;;;12346:10;12329:28;;;;;;;;;;;;12132:233:::0;:::o;5533:492::-;5673:4;5690:36;5700:6;5708:9;5719:6;5690:9;:36::i;:::-;5739:24;5766:11;:19;5778:6;5766:19;;;;;;;;;;;;;;;:33;5786:12;:10;:12::i;:::-;5766:33;;;;;;;;;;;;;;;;5739:60;;5838:6;5818:16;:26;;5810:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5925:57;5934:6;5942:12;:10;:12::i;:::-;5975:6;5956:16;:25;5925:8;:57::i;:::-;6013:4;6006:11;;;5533:492;;;;;:::o;4955:93::-;5013:5;5038:2;5031:9;;4955:93;:::o;7342:215::-;7430:4;7447:80;7456:12;:10;:12::i;:::-;7470:7;7516:10;7479:11;:25;7491:12;:10;:12::i;:::-;7479:25;;;;;;;;;;;;;;;:34;7505:7;7479:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7447:8;:80::i;:::-;7545:4;7538:11;;7342:215;;;;:::o;9410:38::-;;;:::o;9611:33::-;;;;;;;;;;;;;:::o;13034:126::-;13100:4;13124:19;:28;13144:7;13124:28;;;;;;;;;;;;;;;;;;;;;;;;;13117:35;;13034:126;;;:::o;9075:28::-;;;;:::o;9323:::-;;;;:::o;9457:31::-;;;;;;;;;;;;;:::o;5239:127::-;5313:7;5340:9;:18;5350:7;5340:18;;;;;;;;;;;;;;;;5333:25;;5239:127;;;:::o;3625:150::-;3548:12;:10;:12::i;:::-;3538:22;;:6;;;;;;;;;;;:22;;;3530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3734:1:::1;3697:40;;3718:6;;;;;;;;;;;3697:40;;;;;;;;;;;;3765:1;3748:6;;:19;;;;;;;;;;;;;;;;;;3625:150::o:0;13358:115::-;3548:12;:10;:12::i;:::-;3538:22;;:6;;;;;;;;;;;:22;;;3530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13429:5:::1;13412:14;;:22;;;;;;;;;;;;;;;;;;13450:15;;;;;;;;;;13358:115::o:0;13481:117::-;3548:12;:10;:12::i;:::-;3538:22;;:6;;;;;;;;;;;:22;;;3530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13582:8:::1;13563:7;:16;13571:7;13563:16;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;13481:117:::0;;:::o;9041:27::-;;;;:::o;11874:250::-;3548:12;:10;:12::i;:::-;3538:22;;:6;;;;;;;;;;;:22;;;3530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11938:13:::1;;;;;;;;;;;11937:14;11929:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;12007:4;11991:13;;:20;;;;;;;;;;;;;;;;;;12036:4;12022:11;;:18;;;;;;;;;;;;;;;;;;12072:12;12051:18;:33;;;;12100:16;;;;;;;;;;11874:250::o:0;3411:79::-;3449:7;3476:6;;;;;;;;;;;3469:13;;3411:79;:::o;8932:24::-;;;;;;;;;;;;;:::o;4550:104::-;4606:13;4639:7;4632:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4550:104;:::o;12567:244::-;3548:12;:10;:12::i;:::-;3538:22;;:6;;;;;;;;;;;:22;;;3530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12676:13:::1;12668:21;;:4;:21;;;;12660:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;12762:41;12791:4;12797:5;12762:28;:41::i;:::-;12567:244:::0;;:::o;9186:24::-;;;;:::o;8965:27::-;;;;:::o;9291:25::-;;;;:::o;7565:413::-;7658:4;7675:24;7702:11;:25;7714:12;:10;:12::i;:::-;7702:25;;;;;;;;;;;;;;;:34;7728:7;7702:34;;;;;;;;;;;;;;;;7675:61;;7775:15;7755:16;:35;;7747:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7868:67;7877:12;:10;:12::i;:::-;7891:7;7919:15;7900:16;:34;7868:8;:67::i;:::-;7966:4;7959:11;;;7565:413;;;;:::o;5056:175::-;5142:4;5159:42;5169:12;:10;:12::i;:::-;5183:9;5194:6;5159:9;:42::i;:::-;5219:4;5212:11;;5056:175;;;;:::o;9110:30::-;;;;:::o;9908:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;9495:33::-;;;;;;;;;;;;;:::o;13168:182::-;3548:12;:10;:12::i;:::-;3538:22;;:6;;;;;;;;;;;:22;;;3530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13284:8:::1;13253:19;:28;13273:7;13253:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13324:7;13308:34;;;13333:8;13308:34;;;;;;:::i;:::-;;;;;;;;13168:182:::0;;:::o;9217:27::-;;;;:::o;5374:151::-;5463:7;5490:11;:18;5502:5;5490:18;;;;;;;;;;;;;;;:27;5509:7;5490:27;;;;;;;;;;;;;;;;5483:34;;5374:151;;;;:::o;8886:33::-;;;;:::o;9565:37::-;;;;:::o;9149:30::-;;;;:::o;3783:244::-;3548:12;:10;:12::i;:::-;3538:22;;:6;;;;;;;;;;;:22;;;3530:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3892:1:::1;3872:22;;:8;:22;;;;3864:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3982:8;3953:38;;3974:6;;;;;;;;;;;3953:38;;;;;;;;;;;;4011:8;4002:6;;:17;;;;;;;;;;;;;;;;;;3783:244:::0;:::o;9253:31::-;;;;:::o;1900:98::-;1953:7;1980:10;1973:17;;1900:98;:::o;6954:380::-;7107:1;7090:19;;:5;:19;;;;7082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7188:1;7169:21;;:7;:21;;;;7161:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7272:6;7242:11;:18;7254:5;7242:18;;;;;;;;;;;;;;;:27;7261:7;7242:27;;;;;;;;;;;;;;;:36;;;;7310:7;7294:32;;7303:5;7294:32;;;7319:6;7294:32;;;;;;:::i;:::-;;;;;;;;6954:380;;;:::o;13606:3323::-;13720:1;13704:18;;:4;:18;;;;13696:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13797:1;13783:16;;:2;:16;;;;13775:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13856:25;:29;13882:2;13856:29;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;13889:7;:13;13897:4;13889:13;;;;;;;;;;;;;;;;;;;;;;;;;13856:46;13852:333;;;13919:7;;13852:333;13956:25;:31;13982:4;13956:31;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;13991:7;:11;13999:2;13991:11;;;;;;;;;;;;;;;;;;;;;;;;;13956:46;13952:233;;;14027:25;:31;14053:4;14027:31;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;14062:7;:11;14070:2;14062:11;;;;;;;;;;;;;;;;;;;;;;;;;14027:46;14019:55;;;;;;13952:233;;;14120:7;:11;14128:2;14120:11;;;;;;;;;;;;;;;;;;;;;;;;;14116:58;;;14152:7;;14116:58;13952:233;14212:1;14202:6;:11;14198:50;;;14230:7;;14198:50;14272:14;;;;;;;;;;;14268:1051;;;14315:7;:5;:7::i;:::-;14307:15;;:4;:15;;;;:32;;;;;14332:7;:5;:7::i;:::-;14326:13;;:2;:13;;;;14307:32;:52;;;;;14357:1;14343:16;;:2;:16;;;;14307:52;:77;;;;;14377:6;14363:21;;:2;:21;;;;14307:77;14303:1005;;;14410:13;;;;;;;;;;;14405:149;;14455:19;:25;14475:4;14455:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;14484:19;:23;14504:2;14484:23;;;;;;;;;;;;;;;;;;;;;;;;;14455:52;14447:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;14405:149;14576:25;:31;14602:4;14576:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;14612:31;:35;14644:2;14612:35;;;;;;;;;;;;;;;;;;;;;;;;;14611:36;14576:71;14572:721;;;14690:12;;14680:6;:22;;14672:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;14791:15;;14774:13;14784:2;14774:9;:13::i;:::-;14765:6;:22;;;;:::i;:::-;:41;;14757:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;14572:721;;;14883:25;:29;14909:2;14883:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;14917:31;:37;14949:4;14917:37;;;;;;;;;;;;;;;;;;;;;;;;;14916:38;14883:71;14879:414;;;14997:13;;14987:6;:23;;14979:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14879:414;;;15093:31;:35;15125:2;15093:35;;;;;;;;;;;;;;;;;;;;;;;;;15092:36;:78;;;;;15133:31;:37;15165:4;15133:37;;;;;;;;;;;;;;;;;;;;;;;;;15132:38;15092:78;15088:205;;;15229:15;;15212:13;15222:2;15212:9;:13::i;:::-;15203:6;:22;;;;:::i;:::-;:41;;15195:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15088:205;14879:414;14572:721;14303:1005;14268:1051;15331:28;15362:24;15380:4;15362:9;:24::i;:::-;15331:55;;15407:12;15446:18;;15422:20;:42;;15407:57;;15481:7;:22;;;;;15492:11;;;;;;;;;;;15481:22;:35;;;;;15508:8;;;;;;;;;;;15507:9;15481:35;:71;;;;;15521:25;:31;15547:4;15521:31;;;;;;;;;;;;;;;;;;;;;;;;;15520:32;15481:71;:111;;;;;15567:19;:25;15587:4;15567:25;;;;;;;;;;;;;;;;;;;;;;;;;15566:26;15481:111;:139;;;;;15597:19;:23;15617:2;15597:23;;;;;;;;;;;;;;;;;;;;;;;;;15596:24;15481:139;15477:247;;;15648:4;15637:8;;:15;;;;;;;;;;;;;;;;;;15669:10;:8;:10::i;:::-;15707:5;15696:8;;:16;;;;;;;;;;;;;;;;;;15477:247;15736:12;15751:4;15736:19;;15772;:25;15792:4;15772:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;15801:19;:23;15821:2;15801:23;;;;;;;;;;;;;;;;;;;;;;;;;15772:52;15768:100;;;15851:5;15841:15;;15768:100;15888:12;15915:21;15957:7;15953:923;;;16013:12;16008:1;15987:18;;:22;;;;:::i;:::-;:38;;:73;;;;;16029:25;:31;16055:4;16029:31;;;;;;;;;;;;;;;;;;;;;;;;;15987:73;15983:132;;;16095:4;16081:7;:11;16089:2;16081:11;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;15983:132;16136:25;:29;16162:2;16136:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;16185:1;16169:13;;:17;16136:50;16132:557;;;16238:3;16223:13;;16214:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;16207:34;;16308:13;;16289:16;;16282:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;16260:18;;:61;;;;;;;:::i;:::-;;;;;;;;16376:13;;16363:10;;16356:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;16340:12;;:49;;;;;;;:::i;:::-;;;;;;;;16132:557;;;16429:25;:31;16455:4;16429:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;16479:1;16464:12;;:16;16429:51;16425:264;;;16529:3;16514:12;;16505:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;16498:34;;16595:12;;16577:15;;16570:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;16548:18;;:59;;;;;;;:::i;:::-;;;;;;;;16661:12;;16649:9;;16642:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;16626:12;;:47;;;;;;;:::i;:::-;;;;;;;;16425:264;16132:557;16728:1;16721:4;:8;16717:95;;;16754:42;16770:4;16784;16791;16754:15;:42::i;:::-;16717:95;16851:13;16844:4;:20;;;;:::i;:::-;16834:30;;;;;:::i;:::-;;;15953:923;16888:33;16904:4;16910:2;16914:6;16888:15;:33::i;:::-;13685:3244;;;;;13606:3323;;;;:::o;12373:186::-;12490:5;12456:25;:31;12482:4;12456:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;12545:5;12511:40;;12539:4;12511:40;;;;;;;;;;;;12373:186;;:::o;17422:1164::-;17463:23;17489:24;17507:4;17489:9;:24::i;:::-;17463:50;;17524:25;17573:12;;17552:18;;:33;;;;:::i;:::-;17524:61;;17629:1;17610:15;:20;:46;;;;17655:1;17634:17;:22;17610:46;17606:85;;;17673:7;;;;17606:85;17746:2;17725:18;;:23;;;;:::i;:::-;17707:15;:41;17703:115;;;17804:2;17783:18;;:23;;;;:::i;:::-;17765:41;;17703:115;17830:12;17863:23;17948:1;17928:17;17907:18;;17889:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;17863:86;;17970:51;18005:15;17987;:33;;;;:::i;:::-;17970:16;:51::i;:::-;18043:18;18064:21;18043:42;;18096:23;18122:10;18096:36;;18145:17;18236:1;18215:18;;:22;;;;:::i;:::-;18194:17;:44;;;;:::i;:::-;18178:12;;18165:10;:25;;;;:::i;:::-;:74;;;;:::i;:::-;18145:94;;18271:9;18252:28;;;;;:::i;:::-;;;18326:1;18305:18;:22;;;;18353:1;18338:12;:16;;;;18397:1;18379:15;:19;:42;;;;;18420:1;18402:15;:19;18379:42;18375:121;;;18438:46;18451:15;18468;18438:12;:46::i;:::-;18375:121;18529:9;;;;;;;;;;;18521:23;;18552:21;18521:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18508:70;;;;;17450:1136;;;;;;;17422:1164;:::o;6033:614::-;6191:1;6173:20;;:6;:20;;;;6165:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6275:1;6254:23;;:9;:23;;;;6246:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6330:21;6354:9;:17;6364:6;6354:17;;;;;;;;;;;;;;;;6330:41;;6407:6;6390:13;:23;;6382:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6528:6;6512:13;:22;6492:9;:17;6502:6;6492:17;;;;;;;;;;;;;;;:42;;;;6580:6;6556:9;:20;6566:9;6556:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6621:9;6604:35;;6613:6;6604:35;;;6632:6;6604:35;;;;;;:::i;:::-;;;;;;;;6154:493;6033:614;;;:::o;16937:477::-;17005:21;17043:1;17029:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17005:40;;17074:4;17056;17061:1;17056:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17100:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17090:4;17095:1;17090:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17135:62;17152:4;17167:15;17185:11;17135:8;:62::i;:::-;17210:15;:66;;;17291:11;17317:1;17333:4;17360;17380:15;17210:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16992:422;16937:477;:::o;18598:370::-;18679:62;18696:4;18711:15;18729:11;18679:8;:62::i;:::-;18754:15;:31;;;18793:9;18826:4;18846:11;18872:1;18888;18912:6;18934:15;18754:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18598:370;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:144::-;4243:9;4276:37;4307:5;4276:37;:::i;:::-;4263:50;;4175:144;;;:::o;4325:167::-;4430:55;4479:5;4430:55;:::i;:::-;4425:3;4418:68;4325:167;;:::o;4498:258::-;4609:4;4647:2;4636:9;4632:18;4624:26;;4660:89;4746:1;4735:9;4731:17;4722:6;4660:89;:::i;:::-;4498:258;;;;:::o;4762:118::-;4849:24;4867:5;4849:24;:::i;:::-;4844:3;4837:37;4762:118;;:::o;4886:222::-;4979:4;5017:2;5006:9;5002:18;4994:26;;5030:71;5098:1;5087:9;5083:17;5074:6;5030:71;:::i;:::-;4886:222;;;;:::o;5114:619::-;5191:6;5199;5207;5256:2;5244:9;5235:7;5231:23;5227:32;5224:119;;;5262:79;;:::i;:::-;5224:119;5382:1;5407:53;5452:7;5443:6;5432:9;5428:22;5407:53;:::i;:::-;5397:63;;5353:117;5509:2;5535:53;5580:7;5571:6;5560:9;5556:22;5535:53;:::i;:::-;5525:63;;5480:118;5637:2;5663:53;5708:7;5699:6;5688:9;5684:22;5663:53;:::i;:::-;5653:63;;5608:118;5114:619;;;;;:::o;5739:86::-;5774:7;5814:4;5807:5;5803:16;5792:27;;5739:86;;;:::o;5831:112::-;5914:22;5930:5;5914:22;:::i;:::-;5909:3;5902:35;5831:112;;:::o;5949:214::-;6038:4;6076:2;6065:9;6061:18;6053:26;;6089:67;6153:1;6142:9;6138:17;6129:6;6089:67;:::i;:::-;5949:214;;;;:::o;6169:118::-;6256:24;6274:5;6256:24;:::i;:::-;6251:3;6244:37;6169:118;;:::o;6293:222::-;6386:4;6424:2;6413:9;6409:18;6401:26;;6437:71;6505:1;6494:9;6490:17;6481:6;6437:71;:::i;:::-;6293:222;;;;:::o;6521:116::-;6591:21;6606:5;6591:21;:::i;:::-;6584:5;6581:32;6571:60;;6627:1;6624;6617:12;6571:60;6521:116;:::o;6643:133::-;6686:5;6724:6;6711:20;6702:29;;6740:30;6764:5;6740:30;:::i;:::-;6643:133;;;;:::o;6782:468::-;6847:6;6855;6904:2;6892:9;6883:7;6879:23;6875:32;6872:119;;;6910:79;;:::i;:::-;6872:119;7030:1;7055:53;7100:7;7091:6;7080:9;7076:22;7055:53;:::i;:::-;7045:63;;7001:117;7157:2;7183:50;7225:7;7216:6;7205:9;7201:22;7183:50;:::i;:::-;7173:60;;7128:115;6782:468;;;;;:::o;7256:474::-;7324:6;7332;7381:2;7369:9;7360:7;7356:23;7352:32;7349:119;;;7387:79;;:::i;:::-;7349:119;7507:1;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7478:117;7634:2;7660:53;7705:7;7696:6;7685:9;7681:22;7660:53;:::i;:::-;7650:63;;7605:118;7256:474;;;;;:::o;7736:180::-;7784:77;7781:1;7774:88;7881:4;7878:1;7871:15;7905:4;7902:1;7895:15;7922:320;7966:6;8003:1;7997:4;7993:12;7983:22;;8050:1;8044:4;8040:12;8071:18;8061:81;;8127:4;8119:6;8115:17;8105:27;;8061:81;8189:2;8181:6;8178:14;8158:18;8155:38;8152:84;;;8208:18;;:::i;:::-;8152:84;7973:269;7922:320;;;:::o;8248:182::-;8388:34;8384:1;8376:6;8372:14;8365:58;8248:182;:::o;8436:366::-;8578:3;8599:67;8663:2;8658:3;8599:67;:::i;:::-;8592:74;;8675:93;8764:3;8675:93;:::i;:::-;8793:2;8788:3;8784:12;8777:19;;8436:366;;;:::o;8808:419::-;8974:4;9012:2;9001:9;8997:18;8989:26;;9061:9;9055:4;9051:20;9047:1;9036:9;9032:17;9025:47;9089:131;9215:4;9089:131;:::i;:::-;9081:139;;8808:419;;;:::o;9233:180::-;9373:32;9369:1;9361:6;9357:14;9350:56;9233:180;:::o;9419:366::-;9561:3;9582:67;9646:2;9641:3;9582:67;:::i;:::-;9575:74;;9658:93;9747:3;9658:93;:::i;:::-;9776:2;9771:3;9767:12;9760:19;;9419:366;;;:::o;9791:419::-;9957:4;9995:2;9984:9;9980:18;9972:26;;10044:9;10038:4;10034:20;10030:1;10019:9;10015:17;10008:47;10072:131;10198:4;10072:131;:::i;:::-;10064:139;;9791:419;;;:::o;10216:227::-;10356:34;10352:1;10344:6;10340:14;10333:58;10425:10;10420:2;10412:6;10408:15;10401:35;10216:227;:::o;10449:366::-;10591:3;10612:67;10676:2;10671:3;10612:67;:::i;:::-;10605:74;;10688:93;10777:3;10688:93;:::i;:::-;10806:2;10801:3;10797:12;10790:19;;10449:366;;;:::o;10821:419::-;10987:4;11025:2;11014:9;11010:18;11002:26;;11074:9;11068:4;11064:20;11060:1;11049:9;11045:17;11038:47;11102:131;11228:4;11102:131;:::i;:::-;11094:139;;10821:419;;;:::o;11246:180::-;11294:77;11291:1;11284:88;11391:4;11388:1;11381:15;11415:4;11412:1;11405:15;11432:305;11472:3;11491:20;11509:1;11491:20;:::i;:::-;11486:25;;11525:20;11543:1;11525:20;:::i;:::-;11520:25;;11679:1;11611:66;11607:74;11604:1;11601:81;11598:107;;;11685:18;;:::i;:::-;11598:107;11729:1;11726;11722:9;11715:16;;11432:305;;;;:::o;11743:174::-;11883:26;11879:1;11871:6;11867:14;11860:50;11743:174;:::o;11923:366::-;12065:3;12086:67;12150:2;12145:3;12086:67;:::i;:::-;12079:74;;12162:93;12251:3;12162:93;:::i;:::-;12280:2;12275:3;12271:12;12264:19;;11923:366;;;:::o;12295:419::-;12461:4;12499:2;12488:9;12484:18;12476:26;;12548:9;12542:4;12538:20;12534:1;12523:9;12519:17;12512:47;12576:131;12702:4;12576:131;:::i;:::-;12568:139;;12295:419;;;:::o;12720:244::-;12860:34;12856:1;12848:6;12844:14;12837:58;12929:27;12924:2;12916:6;12912:15;12905:52;12720:244;:::o;12970:366::-;13112:3;13133:67;13197:2;13192:3;13133:67;:::i;:::-;13126:74;;13209:93;13298:3;13209:93;:::i;:::-;13327:2;13322:3;13318:12;13311:19;;12970:366;;;:::o;13342:419::-;13508:4;13546:2;13535:9;13531:18;13523:26;;13595:9;13589:4;13585:20;13581:1;13570:9;13566:17;13559:47;13623:131;13749:4;13623:131;:::i;:::-;13615:139;;13342:419;;;:::o;13767:224::-;13907:34;13903:1;13895:6;13891:14;13884:58;13976:7;13971:2;13963:6;13959:15;13952:32;13767:224;:::o;13997:366::-;14139:3;14160:67;14224:2;14219:3;14160:67;:::i;:::-;14153:74;;14236:93;14325:3;14236:93;:::i;:::-;14354:2;14349:3;14345:12;14338:19;;13997:366;;;:::o;14369:419::-;14535:4;14573:2;14562:9;14558:18;14550:26;;14622:9;14616:4;14612:20;14608:1;14597:9;14593:17;14586:47;14650:131;14776:4;14650:131;:::i;:::-;14642:139;;14369:419;;;:::o;14794:225::-;14934:34;14930:1;14922:6;14918:14;14911:58;15003:8;14998:2;14990:6;14986:15;14979:33;14794:225;:::o;15025:366::-;15167:3;15188:67;15252:2;15247:3;15188:67;:::i;:::-;15181:74;;15264:93;15353:3;15264:93;:::i;:::-;15382:2;15377:3;15373:12;15366:19;;15025:366;;;:::o;15397:419::-;15563:4;15601:2;15590:9;15586:18;15578:26;;15650:9;15644:4;15640:20;15636:1;15625:9;15621:17;15614:47;15678:131;15804:4;15678:131;:::i;:::-;15670:139;;15397:419;;;:::o;15822:223::-;15962:34;15958:1;15950:6;15946:14;15939:58;16031:6;16026:2;16018:6;16014:15;16007:31;15822:223;:::o;16051:366::-;16193:3;16214:67;16278:2;16273:3;16214:67;:::i;:::-;16207:74;;16290:93;16379:3;16290:93;:::i;:::-;16408:2;16403:3;16399:12;16392:19;;16051:366;;;:::o;16423:419::-;16589:4;16627:2;16616:9;16612:18;16604:26;;16676:9;16670:4;16666:20;16662:1;16651:9;16647:17;16640:47;16704:131;16830:4;16704:131;:::i;:::-;16696:139;;16423:419;;;:::o;16848:221::-;16988:34;16984:1;16976:6;16972:14;16965:58;17057:4;17052:2;17044:6;17040:15;17033:29;16848:221;:::o;17075:366::-;17217:3;17238:67;17302:2;17297:3;17238:67;:::i;:::-;17231:74;;17314:93;17403:3;17314:93;:::i;:::-;17432:2;17427:3;17423:12;17416:19;;17075:366;;;:::o;17447:419::-;17613:4;17651:2;17640:9;17636:18;17628:26;;17700:9;17694:4;17690:20;17686:1;17675:9;17671:17;17664:47;17728:131;17854:4;17728:131;:::i;:::-;17720:139;;17447:419;;;:::o;17872:224::-;18012:34;18008:1;18000:6;17996:14;17989:58;18081:7;18076:2;18068:6;18064:15;18057:32;17872:224;:::o;18102:366::-;18244:3;18265:67;18329:2;18324:3;18265:67;:::i;:::-;18258:74;;18341:93;18430:3;18341:93;:::i;:::-;18459:2;18454:3;18450:12;18443:19;;18102:366;;;:::o;18474:419::-;18640:4;18678:2;18667:9;18663:18;18655:26;;18727:9;18721:4;18717:20;18713:1;18702:9;18698:17;18691:47;18755:131;18881:4;18755:131;:::i;:::-;18747:139;;18474:419;;;:::o;18899:222::-;19039:34;19035:1;19027:6;19023:14;19016:58;19108:5;19103:2;19095:6;19091:15;19084:30;18899:222;:::o;19127:366::-;19269:3;19290:67;19354:2;19349:3;19290:67;:::i;:::-;19283:74;;19366:93;19455:3;19366:93;:::i;:::-;19484:2;19479:3;19475:12;19468:19;;19127:366;;;:::o;19499:419::-;19665:4;19703:2;19692:9;19688:18;19680:26;;19752:9;19746:4;19742:20;19738:1;19727:9;19723:17;19716:47;19780:131;19906:4;19780:131;:::i;:::-;19772:139;;19499:419;;;:::o;19924:172::-;20064:24;20060:1;20052:6;20048:14;20041:48;19924:172;:::o;20102:366::-;20244:3;20265:67;20329:2;20324:3;20265:67;:::i;:::-;20258:74;;20341:93;20430:3;20341:93;:::i;:::-;20459:2;20454:3;20450:12;20443:19;;20102:366;;;:::o;20474:419::-;20640:4;20678:2;20667:9;20663:18;20655:26;;20727:9;20721:4;20717:20;20713:1;20702:9;20698:17;20691:47;20755:131;20881:4;20755:131;:::i;:::-;20747:139;;20474:419;;;:::o;20899:177::-;21039:29;21035:1;21027:6;21023:14;21016:53;20899:177;:::o;21082:366::-;21224:3;21245:67;21309:2;21304:3;21245:67;:::i;:::-;21238:74;;21321:93;21410:3;21321:93;:::i;:::-;21439:2;21434:3;21430:12;21423:19;;21082:366;;;:::o;21454:419::-;21620:4;21658:2;21647:9;21643:18;21635:26;;21707:9;21701:4;21697:20;21693:1;21682:9;21678:17;21671:47;21735:131;21861:4;21735:131;:::i;:::-;21727:139;;21454:419;;;:::o;21879:174::-;22019:26;22015:1;22007:6;22003:14;21996:50;21879:174;:::o;22059:366::-;22201:3;22222:67;22286:2;22281:3;22222:67;:::i;:::-;22215:74;;22298:93;22387:3;22298:93;:::i;:::-;22416:2;22411:3;22407:12;22400:19;;22059:366;;;:::o;22431:419::-;22597:4;22635:2;22624:9;22620:18;22612:26;;22684:9;22678:4;22674:20;22670:1;22659:9;22655:17;22648:47;22712:131;22838:4;22712:131;:::i;:::-;22704:139;;22431:419;;;:::o;22856:179::-;22996:31;22992:1;22984:6;22980:14;22973:55;22856:179;:::o;23041:366::-;23183:3;23204:67;23268:2;23263:3;23204:67;:::i;:::-;23197:74;;23280:93;23369:3;23280:93;:::i;:::-;23398:2;23393:3;23389:12;23382:19;;23041:366;;;:::o;23413:419::-;23579:4;23617:2;23606:9;23602:18;23594:26;;23666:9;23660:4;23656:20;23652:1;23641:9;23637:17;23630:47;23694:131;23820:4;23694:131;:::i;:::-;23686:139;;23413:419;;;:::o;23838:348::-;23878:7;23901:20;23919:1;23901:20;:::i;:::-;23896:25;;23935:20;23953:1;23935:20;:::i;:::-;23930:25;;24123:1;24055:66;24051:74;24048:1;24045:81;24040:1;24033:9;24026:17;24022:105;24019:131;;;24130:18;;:::i;:::-;24019:131;24178:1;24175;24171:9;24160:20;;23838:348;;;;:::o;24192:180::-;24240:77;24237:1;24230:88;24337:4;24334:1;24327:15;24361:4;24358:1;24351:15;24378:185;24418:1;24435:20;24453:1;24435:20;:::i;:::-;24430:25;;24469:20;24487:1;24469:20;:::i;:::-;24464:25;;24508:1;24498:35;;24513:18;;:::i;:::-;24498:35;24555:1;24552;24548:9;24543:14;;24378:185;;;;:::o;24569:191::-;24609:4;24629:20;24647:1;24629:20;:::i;:::-;24624:25;;24663:20;24681:1;24663:20;:::i;:::-;24658:25;;24702:1;24699;24696:8;24693:34;;;24707:18;;:::i;:::-;24693:34;24752:1;24749;24745:9;24737:17;;24569:191;;;;:::o;24766:147::-;24867:11;24904:3;24889:18;;24766:147;;;;:::o;24919:114::-;;:::o;25039:398::-;25198:3;25219:83;25300:1;25295:3;25219:83;:::i;:::-;25212:90;;25311:93;25400:3;25311:93;:::i;:::-;25429:1;25424:3;25420:11;25413:18;;25039:398;;;:::o;25443:379::-;25627:3;25649:147;25792:3;25649:147;:::i;:::-;25642:154;;25813:3;25806:10;;25443:379;;;:::o;25828:225::-;25968:34;25964:1;25956:6;25952:14;25945:58;26037:8;26032:2;26024:6;26020:15;26013:33;25828:225;:::o;26059:366::-;26201:3;26222:67;26286:2;26281:3;26222:67;:::i;:::-;26215:74;;26298:93;26387:3;26298:93;:::i;:::-;26416:2;26411:3;26407:12;26400:19;;26059:366;;;:::o;26431:419::-;26597:4;26635:2;26624:9;26620:18;26612:26;;26684:9;26678:4;26674:20;26670:1;26659:9;26655:17;26648:47;26712:131;26838:4;26712:131;:::i;:::-;26704:139;;26431:419;;;:::o;26856:180::-;26904:77;26901:1;26894:88;27001:4;26998:1;26991:15;27025:4;27022:1;27015:15;27042:180;27090:77;27087:1;27080:88;27187:4;27184:1;27177:15;27211:4;27208:1;27201:15;27228:143;27285:5;27316:6;27310:13;27301:22;;27332:33;27359:5;27332:33;:::i;:::-;27228:143;;;;:::o;27377:351::-;27447:6;27496:2;27484:9;27475:7;27471:23;27467:32;27464:119;;;27502:79;;:::i;:::-;27464:119;27622:1;27647:64;27703:7;27694:6;27683:9;27679:22;27647:64;:::i;:::-;27637:74;;27593:128;27377:351;;;;:::o;27734:85::-;27779:7;27808:5;27797:16;;27734:85;;;:::o;27825:158::-;27883:9;27916:61;27934:42;27943:32;27969:5;27943:32;:::i;:::-;27934:42;:::i;:::-;27916:61;:::i;:::-;27903:74;;27825:158;;;:::o;27989:147::-;28084:45;28123:5;28084:45;:::i;:::-;28079:3;28072:58;27989:147;;:::o;28142:114::-;28209:6;28243:5;28237:12;28227:22;;28142:114;;;:::o;28262:184::-;28361:11;28395:6;28390:3;28383:19;28435:4;28430:3;28426:14;28411:29;;28262:184;;;;:::o;28452:132::-;28519:4;28542:3;28534:11;;28572:4;28567:3;28563:14;28555:22;;28452:132;;;:::o;28590:108::-;28667:24;28685:5;28667:24;:::i;:::-;28662:3;28655:37;28590:108;;:::o;28704:179::-;28773:10;28794:46;28836:3;28828:6;28794:46;:::i;:::-;28872:4;28867:3;28863:14;28849:28;;28704:179;;;;:::o;28889:113::-;28959:4;28991;28986:3;28982:14;28974:22;;28889:113;;;:::o;29038:732::-;29157:3;29186:54;29234:5;29186:54;:::i;:::-;29256:86;29335:6;29330:3;29256:86;:::i;:::-;29249:93;;29366:56;29416:5;29366:56;:::i;:::-;29445:7;29476:1;29461:284;29486:6;29483:1;29480:13;29461:284;;;29562:6;29556:13;29589:63;29648:3;29633:13;29589:63;:::i;:::-;29582:70;;29675:60;29728:6;29675:60;:::i;:::-;29665:70;;29521:224;29508:1;29505;29501:9;29496:14;;29461:284;;;29465:14;29761:3;29754:10;;29162:608;;;29038:732;;;;:::o;29776:831::-;30039:4;30077:3;30066:9;30062:19;30054:27;;30091:71;30159:1;30148:9;30144:17;30135:6;30091:71;:::i;:::-;30172:80;30248:2;30237:9;30233:18;30224:6;30172:80;:::i;:::-;30299:9;30293:4;30289:20;30284:2;30273:9;30269:18;30262:48;30327:108;30430:4;30421:6;30327:108;:::i;:::-;30319:116;;30445:72;30513:2;30502:9;30498:18;30489:6;30445:72;:::i;:::-;30527:73;30595:3;30584:9;30580:19;30571:6;30527:73;:::i;:::-;29776:831;;;;;;;;:::o;30613:807::-;30862:4;30900:3;30889:9;30885:19;30877:27;;30914:71;30982:1;30971:9;30967:17;30958:6;30914:71;:::i;:::-;30995:72;31063:2;31052:9;31048:18;31039:6;30995:72;:::i;:::-;31077:80;31153:2;31142:9;31138:18;31129:6;31077:80;:::i;:::-;31167;31243:2;31232:9;31228:18;31219:6;31167:80;:::i;:::-;31257:73;31325:3;31314:9;31310:19;31301:6;31257:73;:::i;:::-;31340;31408:3;31397:9;31393:19;31384:6;31340:73;:::i;:::-;30613:807;;;;;;;;;:::o;31426:143::-;31483:5;31514:6;31508:13;31499:22;;31530:33;31557:5;31530:33;:::i;:::-;31426:143;;;;:::o;31575:663::-;31663:6;31671;31679;31728:2;31716:9;31707:7;31703:23;31699:32;31696:119;;;31734:79;;:::i;:::-;31696:119;31854:1;31879:64;31935:7;31926:6;31915:9;31911:22;31879:64;:::i;:::-;31869:74;;31825:128;31992:2;32018:64;32074:7;32065:6;32054:9;32050:22;32018:64;:::i;:::-;32008:74;;31963:129;32131:2;32157:64;32213:7;32204:6;32193:9;32189:22;32157:64;:::i;:::-;32147:74;;32102:129;31575:663;;;;;:::o

Swarm Source

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