ETH Price: $2,576.95 (-2.86%)

Token

Puppy (PUPPY)
 

Overview

Max Total Supply

1,000,000,000 PUPPY

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
19,000,000 PUPPY

Value
$0.00
0x68F673f772CdC29cB78Fce4fb9748ddd65fF4805
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:
PUPPY

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-19
*/

/**

Website: https://Puppyerc20.com

TG: https://t.me/PuppyERC20

Twitter: https://x.com/Puppyerc20com

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.18;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
   
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

}

abstract 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() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

contract PUPPY is ERC20, Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public buyFee;
    uint256 public sellFee;
    uint256 public timeInTrade;


    address public marketingWallet;

    bool    public tradingEnabled;

    uint256 public swapTokensAtAmount;
    bool    public swapWithLimit;
    bool    private swapping;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SwapAndSend(uint256 tokensSwapped, uint256 valueReceived);
    event ExcludedFromLimits(address indexed account, bool isExcluded);
    event SwapWithLimitUpdated(bool swapWithLimit);

    constructor () ERC20("Puppy", "PUPPY") 
    {   
        address newOwner = 0x2e51A414Ed5CafD58AA944Ebc09C7629db47F0bF;
        transferOwnership(newOwner);

        address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        buyFee  = 0;
        sellFee = 0;

        marketingWallet = 0x3acdfD87105bc5458a6234a0D4738e3496F1C033;

        _isExcludedFromMaxTxLimit[owner()] = true;
        _isExcludedFromMaxTxLimit[address(0)] = true;
        _isExcludedFromMaxTxLimit[address(this)] = true;
        _isExcludedFromMaxTxLimit[address(0xdead)] = true;
        _isExcludedFromMaxTxLimit[address(marketingWallet)] = true;

        _isExcludedFromMaxWalletLimit[owner()] = true;
        _isExcludedFromMaxWalletLimit[address(0)] = true;
        _isExcludedFromMaxWalletLimit[address(this)] = true;
        _isExcludedFromMaxWalletLimit[address(0xdead)] = true;
        _isExcludedFromMaxWalletLimit[address(marketingWallet)] = true;


        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[address(marketingWallet)] = true;

        _mint(owner(), 1e9 ether);
        swapTokensAtAmount = totalSupply() / 5000;

        maxTransactionAmount  = totalSupply() / 50;
        maxWalletAmount       = totalSupply() / 50;

    }

    receive() external payable {

  	}

    function enableTrading() public onlyOwner{
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        timeInTrade = block.timestamp;

    }  

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this));
        if (token == address(0x0)) {
            (bool success,) = msg.sender.call{value: address(this).balance}("");
            require(success, "Claim failed");
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner{
        require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
       
    function _transfer(address from,address to,uint256 amount) internal  override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not enabled yet");
              
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (maxTransactionLimitEnabled) 
        {
            if ((from == uniswapV2Pair || to == uniswapV2Pair) &&
                _isExcludedFromMaxTxLimit[from] == false && 
                _isExcludedFromMaxTxLimit[to]   == false) 
            {
                require(amount <= maxTransactionAmount, "Transfer amount exceeds the maxTransactionAmount");                
            }
        }

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            to == uniswapV2Pair
        ) {
            swapping = true;

            if (swapWithLimit) {
                contractTokenBalance = swapTokensAtAmount;
            }

            swap(contractTokenBalance);        

            swapping = false;
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            if(block.timestamp - timeInTrade <= 2 minutes) _totalFees = 5;
            else _totalFees = buyFee;
        } else if (to == uniswapV2Pair) {
            if(block.timestamp - timeInTrade <= 2 minutes) _totalFees = 10;
           else _totalFees = sellFee;
        } else {
            _totalFees = 0;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

        if (maxWalletLimitEnabled) {
            if (_isExcludedFromMaxWalletLimit[from]  == false && 
                _isExcludedFromMaxWalletLimit[to]    == false &&
                to != uniswapV2Pair
            ) {
                uint balance  = balanceOf(to);
                require(
                    balance + amount <= maxWalletAmount, 
                    "Amount exceeds the maxWalletAmount"
                );
            }
        }

        super._transfer(from, to, amount);
    }
   
    function swap(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

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

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

        uint256 newBalance = address(this).balance - initialBalance;

        bool success = payable(marketingWallet).send(newBalance);
        if (success) {
            emit SwapAndSend(tokenAmount, newBalance);
        }
    }

    mapping(address => bool) private _isExcludedFromMaxTxLimit;
    mapping(address => bool) private _isExcludedFromMaxWalletLimit;
    bool    public limitsEnabled              = true;
    bool    public maxWalletLimitEnabled      = true;
    bool    public maxTransactionLimitEnabled = true;
    uint256 public maxWalletAmount;
    uint256 public maxTransactionAmount; 

    function setEnableLimits(bool enable) external onlyOwner {
        require(
        enable != limitsEnabled);
        maxWalletLimitEnabled = enable;
        maxTransactionLimitEnabled = enable;
    }

    function setExcludeFromLimits(address account, bool exclude) external onlyOwner {
        require(
        _isExcludedFromMaxWalletLimit[account] != exclude && _isExcludedFromMaxTxLimit[account] != exclude);
        _isExcludedFromMaxWalletLimit[account] = exclude;
        _isExcludedFromMaxTxLimit[account]     = exclude;
        emit ExcludedFromLimits(account, exclude);
    }

    function isExcludedFromMaxWalletLimit(address account) public view returns(bool) {
        return _isExcludedFromMaxWalletLimit[account];
    }

    function isExcludedFromMaxTransaction(address account) public view returns(bool) {
        return _isExcludedFromMaxTxLimit[account];
    }    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"valueReceived","type":"uint256"}],"name":"SwapAndSend","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"swapWithLimit","type":"bool"}],"name":"SwapWithLimitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludeFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapWithLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeInTrade","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":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001601160006101000a81548160ff0219169083151502179055506001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600581526020017f50757070790000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f50555050590000000000000000000000000000000000000000000000000000008152508160039081620000e091906200127d565b508060049081620000f291906200127d565b50505060006200010762000aa060201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000732e51a414ed5cafd58aa944ebc09c7629db47f0bf9050620001d08162000aa860201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002629190620013ce565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f09190620013ce565b6040518363ffffffff1660e01b81526004016200030f92919062001411565b6020604051808303816000875af11580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003559190620013ce565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000c7c60201b60201c565b60006009819055506000600a81905550733acdfd87105bc5458a6234a0d4738e3496f1c033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f6000620004a962000e4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060006200069462000e4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860006200087f62000e4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000a2962000a1062000e4d60201b60201c565b6b033b2e3c9fd0803ce800000062000e7760201b60201c565b61138862000a3c62000fef60201b60201c565b62000a4891906200149c565b600d81905550603262000a6062000fef60201b60201c565b62000a6c91906200149c565b601381905550603262000a8462000fef60201b60201c565b62000a9091906200149c565b60128190555050505050620017fa565b600033905090565b62000ab862000aa060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000b4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b419062001535565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000bbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bb390620015cd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000cee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ce59062001665565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000d60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d5790620016fd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000e40919062001730565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000ee9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ee0906200179d565b60405180910390fd5b62000efd6000838362000ff960201b60201c565b806002600082825462000f119190620017bf565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000f689190620017bf565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000fcf919062001730565b60405180910390a362000feb6000838362000ffe60201b60201c565b5050565b6000600254905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200108557607f821691505b6020821081036200109b576200109a6200103d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620011057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620010c6565b620011118683620010c6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200115e62001158620011528462001129565b62001133565b62001129565b9050919050565b6000819050919050565b6200117a836200113d565b62001192620011898262001165565b848454620010d3565b825550505050565b600090565b620011a96200119a565b620011b68184846200116f565b505050565b5b81811015620011de57620011d26000826200119f565b600181019050620011bc565b5050565b601f8211156200122d57620011f781620010a1565b6200120284620010b6565b8101602085101562001212578190505b6200122a6200122185620010b6565b830182620011bb565b50505b505050565b600082821c905092915050565b6000620012526000198460080262001232565b1980831691505092915050565b60006200126d83836200123f565b9150826002028217905092915050565b620012888262001003565b67ffffffffffffffff811115620012a457620012a36200100e565b5b620012b082546200106c565b620012bd828285620011e2565b600060209050601f831160018114620012f55760008415620012e0578287015190505b620012ec85826200125f565b8655506200135c565b601f1984166200130586620010a1565b60005b828110156200132f5784890151825560018201915060208501945060208101905062001308565b868310156200134f57848901516200134b601f8916826200123f565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620013968262001369565b9050919050565b620013a88162001389565b8114620013b457600080fd5b50565b600081519050620013c8816200139d565b92915050565b600060208284031215620013e757620013e662001364565b5b6000620013f784828501620013b7565b91505092915050565b6200140b8162001389565b82525050565b600060408201905062001428600083018562001400565b62001437602083018462001400565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620014a98262001129565b9150620014b68362001129565b925082620014c957620014c86200143e565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200151d602083620014d4565b91506200152a82620014e5565b602082019050919050565b6000602082019050818103600083015262001550816200150e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620015b5602683620014d4565b9150620015c28262001557565b604082019050919050565b60006020820190508181036000830152620015e881620015a6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006200164d602483620014d4565b91506200165a82620015ef565b604082019050919050565b6000602082019050818103600083015262001680816200163e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620016e5602283620014d4565b9150620016f28262001687565b604082019050919050565b600060208201905081810360008301526200171881620016d6565b9050919050565b6200172a8162001129565b82525050565b60006020820190506200174760008301846200171f565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001785601f83620014d4565b915062001792826200174d565b602082019050919050565b60006020820190508181036000830152620017b88162001776565b9050919050565b6000620017cc8262001129565b9150620017d98362001129565b9250828201905080821115620017f457620017f36200146d565b5b92915050565b613c0e806200180a6000396000f3fe6080604052600436106102135760003560e01c80634fbee19311610118578063a9059cbb116100a0578063c8c8ebe41161006f578063c8c8ebe4146107c8578063dd62ed3e146107f3578063e2f4560514610830578063f2fde38b1461085b578063f9d0831a146108845761021a565b8063a9059cbb1461070e578063aa4bde281461074b578063b42337fe14610776578063c02466681461079f5761021a565b80638a8c523c116100e75780638a8c523c146106275780638da5cb5b1461063e57806395d89b4114610669578063a457c2d714610694578063a8a69b9d146106d15761021a565b80634fbee1931461056b57806370a08231146105a8578063715018a6146105e557806375f0a874146105fc5761021a565b80632b14ca561161019b578063395093511161016a578063395093511461048257806347062402146104bf578063488eb37f146104ea57806349bd5a5e146105155780634ada218b146105405761021a565b80632b14ca56146103d65780632ba86bf214610401578063313ce5671461042c5780633582ad23146104575761021a565b80631694505e116101e25780631694505e146102db57806318160ddd1461030657806318d9ceae1461033157806321a9d82a1461036e57806323b872dd146103995761021a565b8063045494f41461021f57806306fdde0314610248578063095ea7b3146102735780630be479ed146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b5061024660048036038101906102419190612b58565b6108ad565b005b34801561025457600080fd5b5061025d61099a565b60405161026a9190612c15565b60405180910390f35b34801561027f57600080fd5b5061029a60048036038101906102959190612ccb565b610a2c565b6040516102a79190612d1a565b60405180910390f35b3480156102bc57600080fd5b506102c5610a4a565b6040516102d29190612d44565b60405180910390f35b3480156102e757600080fd5b506102f0610a50565b6040516102fd9190612dbe565b60405180910390f35b34801561031257600080fd5b5061031b610a76565b6040516103289190612d44565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190612dd9565b610a80565b6040516103659190612d1a565b60405180910390f35b34801561037a57600080fd5b50610383610ad6565b6040516103909190612d1a565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190612e06565b610ae9565b6040516103cd9190612d1a565b60405180910390f35b3480156103e257600080fd5b506103eb610c08565b6040516103f89190612d44565b60405180910390f35b34801561040d57600080fd5b50610416610c0e565b6040516104239190612d1a565b60405180910390f35b34801561043857600080fd5b50610441610c21565b60405161044e9190612e75565b60405180910390f35b34801561046357600080fd5b5061046c610c2a565b6040516104799190612d1a565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a49190612ccb565b610c3d565b6040516104b69190612d1a565b60405180910390f35b3480156104cb57600080fd5b506104d4610ce9565b6040516104e19190612d44565b60405180910390f35b3480156104f657600080fd5b506104ff610cef565b60405161050c9190612d1a565b60405180910390f35b34801561052157600080fd5b5061052a610d02565b6040516105379190612e9f565b60405180910390f35b34801561054c57600080fd5b50610555610d28565b6040516105629190612d1a565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190612dd9565b610d3b565b60405161059f9190612d1a565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca9190612dd9565b610d91565b6040516105dc9190612d44565b60405180910390f35b3480156105f157600080fd5b506105fa610dd9565b005b34801561060857600080fd5b50610611610f31565b60405161061e9190612e9f565b60405180910390f35b34801561063357600080fd5b5061063c610f57565b005b34801561064a57600080fd5b50610653611062565b6040516106609190612e9f565b60405180910390f35b34801561067557600080fd5b5061067e61108c565b60405161068b9190612c15565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b69190612ccb565b61111e565b6040516106c89190612d1a565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f39190612dd9565b611209565b6040516107059190612d1a565b60405180910390f35b34801561071a57600080fd5b5061073560048036038101906107309190612ccb565b61125f565b6040516107429190612d1a565b60405180910390f35b34801561075757600080fd5b5061076061127d565b60405161076d9190612d44565b60405180910390f35b34801561078257600080fd5b5061079d60048036038101906107989190612eba565b611283565b005b3480156107ab57600080fd5b506107c660048036038101906107c19190612eba565b6114d3565b005b3480156107d457600080fd5b506107dd6116a5565b6040516107ea9190612d44565b60405180910390f35b3480156107ff57600080fd5b5061081a60048036038101906108159190612efa565b6116ab565b6040516108279190612d44565b60405180910390f35b34801561083c57600080fd5b50610845611732565b6040516108529190612d44565b60405180910390f35b34801561086757600080fd5b50610882600480360381019061087d9190612dd9565b611738565b005b34801561089057600080fd5b506108ab60048036038101906108a69190612dd9565b6118fe565b005b6108b5611bbb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093b90612f86565b60405180910390fd5b601160009054906101000a900460ff1615158115150361096357600080fd5b80601160016101000a81548160ff02191690831515021790555080601160026101000a81548160ff02191690831515021790555050565b6060600380546109a990612fd5565b80601f01602080910402602001604051908101604052809291908181526020018280546109d590612fd5565b8015610a225780601f106109f757610100808354040283529160200191610a22565b820191906000526020600020905b815481529060010190602001808311610a0557829003601f168201915b5050505050905090565b6000610a40610a39611bbb565b8484611bc3565b6001905092915050565b600b5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601160019054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b35611bbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bf15782811015610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390613078565b60405180910390fd5b610bf085610be8611bbb565b858403611bc3565b5b610bfc858585611d8c565b60019150509392505050565b600a5481565b601160029054906101000a900460ff1681565b60006012905090565b601160009054906101000a900460ff1681565b6000610cdf610c4a611bbb565b848460016000610c58611bbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cda91906130c7565b611bc3565b6001905092915050565b60095481565b600e60009054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60149054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610de1611bbb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6790612f86565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f5f611bbb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe590612f86565b60405180910390fd5b600c60149054906101000a900460ff161561103e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103590613147565b60405180910390fd5b6001600c60146101000a81548160ff02191690831515021790555042600b81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461109b90612fd5565b80601f01602080910402602001604051908101604052809291908181526020018280546110c790612fd5565b80156111145780601f106110e957610100808354040283529160200191611114565b820191906000526020600020905b8154815290600101906020018083116110f757829003601f168201915b5050505050905090565b6000806001600061112d611bbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e1906131d9565b60405180910390fd5b6111fe6111f5611bbb565b85858403611bc3565b600191505092915050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061127361126c611bbb565b8484611d8c565b6001905092915050565b60125481565b61128b611bbb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190612f86565b60405180910390fd5b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141580156113ca5750801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514155b6113d357600080fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f74392251b09500cc108c71712e5e7e0392be9075a74a24f1494551cfa8e06870826040516114c79190612d1a565b60405180910390a25050565b6114db611bbb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156190612f86565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036115fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f39061326b565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516116999190612d1a565b60405180910390a25050565b60135481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b611740611bbb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c690612f86565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361183e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611835906132fd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611906611bbb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198c90612f86565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119cd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ab35760003373ffffffffffffffffffffffffffffffffffffffff1647604051611a279061334e565b60006040518083038185875af1925050503d8060008114611a64576040519150601f19603f3d011682016040523d82523d6000602084013e611a69565b606091505b5050905080611aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa4906133af565b60405180910390fd5b50611bb8565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611af39190612e9f565b602060405180830381865afa158015611b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3491906133e4565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611b71929190613411565b6020604051808303816000875af1158015611b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb4919061344f565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c29906134ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9890613580565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d7f9190612d44565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df290613612565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e61906136a4565b60405180910390fd5b600c60149054906101000a900460ff1680611ece5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f225750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5890613710565b60405180910390fd5b60008103611f7a57611f75838360006125c9565b6125c4565b601160029054906101000a900460ff161561213c57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806120385750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015612094575060001515600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b80156120f0575060001515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1561213b5760135481111561213a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612131906137a2565b60405180910390fd5b5b5b600061214730610d91565b90506000600d54821015905080801561216d5750600e60019054906101000a900460ff16155b80156121c65750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15612226576001600e60016101000a81548160ff021916908315150217905550600e60009054906101000a900460ff161561220157600d5491505b61220a82612848565b6000600e60016101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122c95750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806122e05750600e60019054906101000a900460ff165b156122ee57600090506123f1565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361236c576078600b544261235391906137c2565b116123615760059050612367565b60095490505b6123f0565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036123ea576078600b54426123d191906137c2565b116123df57600a90506123e5565b600a5490505b6123ef565b600090505b5b5b60008111156124315760006064828661240a91906137f6565b6124149190613867565b9050808561242291906137c2565b945061242f8730836125c9565b505b601160019054906101000a900460ff16156125b55760001515601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156124f6575060001515601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b80156125505750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156125b457600061256086610d91565b9050601254858261257191906130c7565b11156125b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a99061390a565b60405180910390fd5b505b5b6125c08686866125c9565b5050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f90613612565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269e906136a4565b60405180910390fd5b6126b2838383612b11565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272f9061399c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127cb91906130c7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161282f9190612d44565b60405180910390a3612842848484612b16565b50505050565b60004790506000600267ffffffffffffffff81111561286a576128696139bc565b5b6040519080825280602002602001820160405280156128985781602001602082028036833780820191505090505b50905030816000815181106128b0576128af6139eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297b9190613a2f565b8160018151811061298f5761298e6139eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401612a2d959493929190613b55565b600060405180830381600087803b158015612a4757600080fd5b505af1158015612a5b573d6000803e3d6000fd5b5050505060008247612a6d91906137c2565b90506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505090508015612b0a577f1309193d68e1a43bd32da5f04e07935cc194c20b2bd1813be5c6898b99dac4be8583604051612b01929190613baf565b60405180910390a15b5050505050565b505050565b505050565b600080fd5b60008115159050919050565b612b3581612b20565b8114612b4057600080fd5b50565b600081359050612b5281612b2c565b92915050565b600060208284031215612b6e57612b6d612b1b565b5b6000612b7c84828501612b43565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bbf578082015181840152602081019050612ba4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612be782612b85565b612bf18185612b90565b9350612c01818560208601612ba1565b612c0a81612bcb565b840191505092915050565b60006020820190508181036000830152612c2f8184612bdc565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c6282612c37565b9050919050565b612c7281612c57565b8114612c7d57600080fd5b50565b600081359050612c8f81612c69565b92915050565b6000819050919050565b612ca881612c95565b8114612cb357600080fd5b50565b600081359050612cc581612c9f565b92915050565b60008060408385031215612ce257612ce1612b1b565b5b6000612cf085828601612c80565b9250506020612d0185828601612cb6565b9150509250929050565b612d1481612b20565b82525050565b6000602082019050612d2f6000830184612d0b565b92915050565b612d3e81612c95565b82525050565b6000602082019050612d596000830184612d35565b92915050565b6000819050919050565b6000612d84612d7f612d7a84612c37565b612d5f565b612c37565b9050919050565b6000612d9682612d69565b9050919050565b6000612da882612d8b565b9050919050565b612db881612d9d565b82525050565b6000602082019050612dd36000830184612daf565b92915050565b600060208284031215612def57612dee612b1b565b5b6000612dfd84828501612c80565b91505092915050565b600080600060608486031215612e1f57612e1e612b1b565b5b6000612e2d86828701612c80565b9350506020612e3e86828701612c80565b9250506040612e4f86828701612cb6565b9150509250925092565b600060ff82169050919050565b612e6f81612e59565b82525050565b6000602082019050612e8a6000830184612e66565b92915050565b612e9981612c57565b82525050565b6000602082019050612eb46000830184612e90565b92915050565b60008060408385031215612ed157612ed0612b1b565b5b6000612edf85828601612c80565b9250506020612ef085828601612b43565b9150509250929050565b60008060408385031215612f1157612f10612b1b565b5b6000612f1f85828601612c80565b9250506020612f3085828601612c80565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f70602083612b90565b9150612f7b82612f3a565b602082019050919050565b60006020820190508181036000830152612f9f81612f63565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fed57607f821691505b60208210810361300057612fff612fa6565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613062602883612b90565b915061306d82613006565b604082019050919050565b6000602082019050818103600083015261309181613055565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130d282612c95565b91506130dd83612c95565b92508282019050808211156130f5576130f4613098565b5b92915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613131601a83612b90565b915061313c826130fb565b602082019050919050565b6000602082019050818103600083015261316081613124565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006131c3602583612b90565b91506131ce82613167565b604082019050919050565b600060208201905081810360008301526131f2816131b6565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613255602a83612b90565b9150613260826131f9565b604082019050919050565b6000602082019050818103600083015261328481613248565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132e7602683612b90565b91506132f28261328b565b604082019050919050565b60006020820190508181036000830152613316816132da565b9050919050565b600081905092915050565b50565b600061333860008361331d565b915061334382613328565b600082019050919050565b60006133598261332b565b9150819050919050565b7f436c61696d206661696c65640000000000000000000000000000000000000000600082015250565b6000613399600c83612b90565b91506133a482613363565b602082019050919050565b600060208201905081810360008301526133c88161338c565b9050919050565b6000815190506133de81612c9f565b92915050565b6000602082840312156133fa576133f9612b1b565b5b6000613408848285016133cf565b91505092915050565b60006040820190506134266000830185612e90565b6134336020830184612d35565b9392505050565b60008151905061344981612b2c565b92915050565b60006020828403121561346557613464612b1b565b5b60006134738482850161343a565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006134d8602483612b90565b91506134e38261347c565b604082019050919050565b60006020820190508181036000830152613507816134cb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061356a602283612b90565b91506135758261350e565b604082019050919050565b600060208201905081810360008301526135998161355d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135fc602583612b90565b9150613607826135a0565b604082019050919050565b6000602082019050818103600083015261362b816135ef565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061368e602383612b90565b915061369982613632565b604082019050919050565b600060208201905081810360008301526136bd81613681565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b60006136fa601a83612b90565b9150613705826136c4565b602082019050919050565b60006020820190508181036000830152613729816136ed565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f72616e73616374696f6e416d6f756e7400000000000000000000000000000000602082015250565b600061378c603083612b90565b915061379782613730565b604082019050919050565b600060208201905081810360008301526137bb8161377f565b9050919050565b60006137cd82612c95565b91506137d883612c95565b92508282039050818111156137f0576137ef613098565b5b92915050565b600061380182612c95565b915061380c83612c95565b925082820261381a81612c95565b9150828204841483151761383157613830613098565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061387282612c95565b915061387d83612c95565b92508261388d5761388c613838565b5b828204905092915050565b7f416d6f756e74206578636565647320746865206d617857616c6c6574416d6f7560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b60006138f4602283612b90565b91506138ff82613898565b604082019050919050565b60006020820190508181036000830152613923816138e7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613986602683612b90565b91506139918261392a565b604082019050919050565b600060208201905081810360008301526139b581613979565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613a2981612c69565b92915050565b600060208284031215613a4557613a44612b1b565b5b6000613a5384828501613a1a565b91505092915050565b6000819050919050565b6000613a81613a7c613a7784613a5c565b612d5f565b612c95565b9050919050565b613a9181613a66565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613acc81612c57565b82525050565b6000613ade8383613ac3565b60208301905092915050565b6000602082019050919050565b6000613b0282613a97565b613b0c8185613aa2565b9350613b1783613ab3565b8060005b83811015613b48578151613b2f8882613ad2565b9750613b3a83613aea565b925050600181019050613b1b565b5085935050505092915050565b600060a082019050613b6a6000830188612d35565b613b776020830187613a88565b8181036040830152613b898186613af7565b9050613b986060830185612e90565b613ba56080830184612d35565b9695505050505050565b6000604082019050613bc46000830185612d35565b613bd16020830184612d35565b939250505056fea2646970667358221220e3c930bb213c50f847be65c52b8923f6abe1c41f91cdc777525927652ffb352064736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102135760003560e01c80634fbee19311610118578063a9059cbb116100a0578063c8c8ebe41161006f578063c8c8ebe4146107c8578063dd62ed3e146107f3578063e2f4560514610830578063f2fde38b1461085b578063f9d0831a146108845761021a565b8063a9059cbb1461070e578063aa4bde281461074b578063b42337fe14610776578063c02466681461079f5761021a565b80638a8c523c116100e75780638a8c523c146106275780638da5cb5b1461063e57806395d89b4114610669578063a457c2d714610694578063a8a69b9d146106d15761021a565b80634fbee1931461056b57806370a08231146105a8578063715018a6146105e557806375f0a874146105fc5761021a565b80632b14ca561161019b578063395093511161016a578063395093511461048257806347062402146104bf578063488eb37f146104ea57806349bd5a5e146105155780634ada218b146105405761021a565b80632b14ca56146103d65780632ba86bf214610401578063313ce5671461042c5780633582ad23146104575761021a565b80631694505e116101e25780631694505e146102db57806318160ddd1461030657806318d9ceae1461033157806321a9d82a1461036e57806323b872dd146103995761021a565b8063045494f41461021f57806306fdde0314610248578063095ea7b3146102735780630be479ed146102b05761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b5061024660048036038101906102419190612b58565b6108ad565b005b34801561025457600080fd5b5061025d61099a565b60405161026a9190612c15565b60405180910390f35b34801561027f57600080fd5b5061029a60048036038101906102959190612ccb565b610a2c565b6040516102a79190612d1a565b60405180910390f35b3480156102bc57600080fd5b506102c5610a4a565b6040516102d29190612d44565b60405180910390f35b3480156102e757600080fd5b506102f0610a50565b6040516102fd9190612dbe565b60405180910390f35b34801561031257600080fd5b5061031b610a76565b6040516103289190612d44565b60405180910390f35b34801561033d57600080fd5b5061035860048036038101906103539190612dd9565b610a80565b6040516103659190612d1a565b60405180910390f35b34801561037a57600080fd5b50610383610ad6565b6040516103909190612d1a565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190612e06565b610ae9565b6040516103cd9190612d1a565b60405180910390f35b3480156103e257600080fd5b506103eb610c08565b6040516103f89190612d44565b60405180910390f35b34801561040d57600080fd5b50610416610c0e565b6040516104239190612d1a565b60405180910390f35b34801561043857600080fd5b50610441610c21565b60405161044e9190612e75565b60405180910390f35b34801561046357600080fd5b5061046c610c2a565b6040516104799190612d1a565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a49190612ccb565b610c3d565b6040516104b69190612d1a565b60405180910390f35b3480156104cb57600080fd5b506104d4610ce9565b6040516104e19190612d44565b60405180910390f35b3480156104f657600080fd5b506104ff610cef565b60405161050c9190612d1a565b60405180910390f35b34801561052157600080fd5b5061052a610d02565b6040516105379190612e9f565b60405180910390f35b34801561054c57600080fd5b50610555610d28565b6040516105629190612d1a565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190612dd9565b610d3b565b60405161059f9190612d1a565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca9190612dd9565b610d91565b6040516105dc9190612d44565b60405180910390f35b3480156105f157600080fd5b506105fa610dd9565b005b34801561060857600080fd5b50610611610f31565b60405161061e9190612e9f565b60405180910390f35b34801561063357600080fd5b5061063c610f57565b005b34801561064a57600080fd5b50610653611062565b6040516106609190612e9f565b60405180910390f35b34801561067557600080fd5b5061067e61108c565b60405161068b9190612c15565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b69190612ccb565b61111e565b6040516106c89190612d1a565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f39190612dd9565b611209565b6040516107059190612d1a565b60405180910390f35b34801561071a57600080fd5b5061073560048036038101906107309190612ccb565b61125f565b6040516107429190612d1a565b60405180910390f35b34801561075757600080fd5b5061076061127d565b60405161076d9190612d44565b60405180910390f35b34801561078257600080fd5b5061079d60048036038101906107989190612eba565b611283565b005b3480156107ab57600080fd5b506107c660048036038101906107c19190612eba565b6114d3565b005b3480156107d457600080fd5b506107dd6116a5565b6040516107ea9190612d44565b60405180910390f35b3480156107ff57600080fd5b5061081a60048036038101906108159190612efa565b6116ab565b6040516108279190612d44565b60405180910390f35b34801561083c57600080fd5b50610845611732565b6040516108529190612d44565b60405180910390f35b34801561086757600080fd5b50610882600480360381019061087d9190612dd9565b611738565b005b34801561089057600080fd5b506108ab60048036038101906108a69190612dd9565b6118fe565b005b6108b5611bbb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093b90612f86565b60405180910390fd5b601160009054906101000a900460ff1615158115150361096357600080fd5b80601160016101000a81548160ff02191690831515021790555080601160026101000a81548160ff02191690831515021790555050565b6060600380546109a990612fd5565b80601f01602080910402602001604051908101604052809291908181526020018280546109d590612fd5565b8015610a225780601f106109f757610100808354040283529160200191610a22565b820191906000526020600020905b815481529060010190602001808311610a0557829003601f168201915b5050505050905090565b6000610a40610a39611bbb565b8484611bc3565b6001905092915050565b600b5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601160019054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b35611bbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bf15782811015610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390613078565b60405180910390fd5b610bf085610be8611bbb565b858403611bc3565b5b610bfc858585611d8c565b60019150509392505050565b600a5481565b601160029054906101000a900460ff1681565b60006012905090565b601160009054906101000a900460ff1681565b6000610cdf610c4a611bbb565b848460016000610c58611bbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cda91906130c7565b611bc3565b6001905092915050565b60095481565b600e60009054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60149054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610de1611bbb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6790612f86565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f5f611bbb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe590612f86565b60405180910390fd5b600c60149054906101000a900460ff161561103e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103590613147565b60405180910390fd5b6001600c60146101000a81548160ff02191690831515021790555042600b81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461109b90612fd5565b80601f01602080910402602001604051908101604052809291908181526020018280546110c790612fd5565b80156111145780601f106110e957610100808354040283529160200191611114565b820191906000526020600020905b8154815290600101906020018083116110f757829003601f168201915b5050505050905090565b6000806001600061112d611bbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e1906131d9565b60405180910390fd5b6111fe6111f5611bbb565b85858403611bc3565b600191505092915050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061127361126c611bbb565b8484611d8c565b6001905092915050565b60125481565b61128b611bbb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190612f86565b60405180910390fd5b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141580156113ca5750801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514155b6113d357600080fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f74392251b09500cc108c71712e5e7e0392be9075a74a24f1494551cfa8e06870826040516114c79190612d1a565b60405180910390a25050565b6114db611bbb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156190612f86565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036115fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f39061326b565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516116999190612d1a565b60405180910390a25050565b60135481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b611740611bbb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c690612f86565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361183e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611835906132fd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611906611bbb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198c90612f86565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119cd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ab35760003373ffffffffffffffffffffffffffffffffffffffff1647604051611a279061334e565b60006040518083038185875af1925050503d8060008114611a64576040519150601f19603f3d011682016040523d82523d6000602084013e611a69565b606091505b5050905080611aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa4906133af565b60405180910390fd5b50611bb8565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611af39190612e9f565b602060405180830381865afa158015611b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3491906133e4565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611b71929190613411565b6020604051808303816000875af1158015611b90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb4919061344f565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c29906134ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9890613580565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d7f9190612d44565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df290613612565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e61906136a4565b60405180910390fd5b600c60149054906101000a900460ff1680611ece5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f225750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5890613710565b60405180910390fd5b60008103611f7a57611f75838360006125c9565b6125c4565b601160029054906101000a900460ff161561213c57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806120385750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015612094575060001515600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b80156120f0575060001515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1561213b5760135481111561213a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612131906137a2565b60405180910390fd5b5b5b600061214730610d91565b90506000600d54821015905080801561216d5750600e60019054906101000a900460ff16155b80156121c65750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15612226576001600e60016101000a81548160ff021916908315150217905550600e60009054906101000a900460ff161561220157600d5491505b61220a82612848565b6000600e60016101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122c95750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806122e05750600e60019054906101000a900460ff165b156122ee57600090506123f1565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361236c576078600b544261235391906137c2565b116123615760059050612367565b60095490505b6123f0565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036123ea576078600b54426123d191906137c2565b116123df57600a90506123e5565b600a5490505b6123ef565b600090505b5b5b60008111156124315760006064828661240a91906137f6565b6124149190613867565b9050808561242291906137c2565b945061242f8730836125c9565b505b601160019054906101000a900460ff16156125b55760001515601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156124f6575060001515601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b80156125505750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156125b457600061256086610d91565b9050601254858261257191906130c7565b11156125b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a99061390a565b60405180910390fd5b505b5b6125c08686866125c9565b5050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f90613612565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269e906136a4565b60405180910390fd5b6126b2838383612b11565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272f9061399c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127cb91906130c7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161282f9190612d44565b60405180910390a3612842848484612b16565b50505050565b60004790506000600267ffffffffffffffff81111561286a576128696139bc565b5b6040519080825280602002602001820160405280156128985781602001602082028036833780820191505090505b50905030816000815181106128b0576128af6139eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297b9190613a2f565b8160018151811061298f5761298e6139eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401612a2d959493929190613b55565b600060405180830381600087803b158015612a4757600080fd5b505af1158015612a5b573d6000803e3d6000fd5b5050505060008247612a6d91906137c2565b90506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505090508015612b0a577f1309193d68e1a43bd32da5f04e07935cc194c20b2bd1813be5c6898b99dac4be8583604051612b01929190613baf565b60405180910390a15b5050505050565b505050565b505050565b600080fd5b60008115159050919050565b612b3581612b20565b8114612b4057600080fd5b50565b600081359050612b5281612b2c565b92915050565b600060208284031215612b6e57612b6d612b1b565b5b6000612b7c84828501612b43565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bbf578082015181840152602081019050612ba4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612be782612b85565b612bf18185612b90565b9350612c01818560208601612ba1565b612c0a81612bcb565b840191505092915050565b60006020820190508181036000830152612c2f8184612bdc565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c6282612c37565b9050919050565b612c7281612c57565b8114612c7d57600080fd5b50565b600081359050612c8f81612c69565b92915050565b6000819050919050565b612ca881612c95565b8114612cb357600080fd5b50565b600081359050612cc581612c9f565b92915050565b60008060408385031215612ce257612ce1612b1b565b5b6000612cf085828601612c80565b9250506020612d0185828601612cb6565b9150509250929050565b612d1481612b20565b82525050565b6000602082019050612d2f6000830184612d0b565b92915050565b612d3e81612c95565b82525050565b6000602082019050612d596000830184612d35565b92915050565b6000819050919050565b6000612d84612d7f612d7a84612c37565b612d5f565b612c37565b9050919050565b6000612d9682612d69565b9050919050565b6000612da882612d8b565b9050919050565b612db881612d9d565b82525050565b6000602082019050612dd36000830184612daf565b92915050565b600060208284031215612def57612dee612b1b565b5b6000612dfd84828501612c80565b91505092915050565b600080600060608486031215612e1f57612e1e612b1b565b5b6000612e2d86828701612c80565b9350506020612e3e86828701612c80565b9250506040612e4f86828701612cb6565b9150509250925092565b600060ff82169050919050565b612e6f81612e59565b82525050565b6000602082019050612e8a6000830184612e66565b92915050565b612e9981612c57565b82525050565b6000602082019050612eb46000830184612e90565b92915050565b60008060408385031215612ed157612ed0612b1b565b5b6000612edf85828601612c80565b9250506020612ef085828601612b43565b9150509250929050565b60008060408385031215612f1157612f10612b1b565b5b6000612f1f85828601612c80565b9250506020612f3085828601612c80565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f70602083612b90565b9150612f7b82612f3a565b602082019050919050565b60006020820190508181036000830152612f9f81612f63565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fed57607f821691505b60208210810361300057612fff612fa6565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613062602883612b90565b915061306d82613006565b604082019050919050565b6000602082019050818103600083015261309181613055565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130d282612c95565b91506130dd83612c95565b92508282019050808211156130f5576130f4613098565b5b92915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613131601a83612b90565b915061313c826130fb565b602082019050919050565b6000602082019050818103600083015261316081613124565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006131c3602583612b90565b91506131ce82613167565b604082019050919050565b600060208201905081810360008301526131f2816131b6565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613255602a83612b90565b9150613260826131f9565b604082019050919050565b6000602082019050818103600083015261328481613248565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132e7602683612b90565b91506132f28261328b565b604082019050919050565b60006020820190508181036000830152613316816132da565b9050919050565b600081905092915050565b50565b600061333860008361331d565b915061334382613328565b600082019050919050565b60006133598261332b565b9150819050919050565b7f436c61696d206661696c65640000000000000000000000000000000000000000600082015250565b6000613399600c83612b90565b91506133a482613363565b602082019050919050565b600060208201905081810360008301526133c88161338c565b9050919050565b6000815190506133de81612c9f565b92915050565b6000602082840312156133fa576133f9612b1b565b5b6000613408848285016133cf565b91505092915050565b60006040820190506134266000830185612e90565b6134336020830184612d35565b9392505050565b60008151905061344981612b2c565b92915050565b60006020828403121561346557613464612b1b565b5b60006134738482850161343a565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006134d8602483612b90565b91506134e38261347c565b604082019050919050565b60006020820190508181036000830152613507816134cb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061356a602283612b90565b91506135758261350e565b604082019050919050565b600060208201905081810360008301526135998161355d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135fc602583612b90565b9150613607826135a0565b604082019050919050565b6000602082019050818103600083015261362b816135ef565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061368e602383612b90565b915061369982613632565b604082019050919050565b600060208201905081810360008301526136bd81613681565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b60006136fa601a83612b90565b9150613705826136c4565b602082019050919050565b60006020820190508181036000830152613729816136ed565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f72616e73616374696f6e416d6f756e7400000000000000000000000000000000602082015250565b600061378c603083612b90565b915061379782613730565b604082019050919050565b600060208201905081810360008301526137bb8161377f565b9050919050565b60006137cd82612c95565b91506137d883612c95565b92508282039050818111156137f0576137ef613098565b5b92915050565b600061380182612c95565b915061380c83612c95565b925082820261381a81612c95565b9150828204841483151761383157613830613098565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061387282612c95565b915061387d83612c95565b92508261388d5761388c613838565b5b828204905092915050565b7f416d6f756e74206578636565647320746865206d617857616c6c6574416d6f7560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b60006138f4602283612b90565b91506138ff82613898565b604082019050919050565b60006020820190508181036000830152613923816138e7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613986602683612b90565b91506139918261392a565b604082019050919050565b600060208201905081810360008301526139b581613979565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613a2981612c69565b92915050565b600060208284031215613a4557613a44612b1b565b5b6000613a5384828501613a1a565b91505092915050565b6000819050919050565b6000613a81613a7c613a7784613a5c565b612d5f565b612c95565b9050919050565b613a9181613a66565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613acc81612c57565b82525050565b6000613ade8383613ac3565b60208301905092915050565b6000602082019050919050565b6000613b0282613a97565b613b0c8185613aa2565b9350613b1783613ab3565b8060005b83811015613b48578151613b2f8882613ad2565b9750613b3a83613aea565b925050600181019050613b1b565b5085935050505092915050565b600060a082019050613b6a6000830188612d35565b613b776020830187613a88565b8181036040830152613b898186613af7565b9050613b986060830185612e90565b613ba56080830184612d35565b9695505050505050565b6000604082019050613bc46000830185612d35565b613bd16020830184612d35565b939250505056fea2646970667358221220e3c930bb213c50f847be65c52b8923f6abe1c41f91cdc777525927652ffb352064736f6c63430008120033

Deployed Bytecode Sourcemap

12836:8236:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20164:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8121:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9035:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13081:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12876:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8442:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20924:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19972:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9212:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13052:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20027:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8341:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19917:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9793:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13024:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13235:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12924:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13157;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16376:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8558:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7308:148;;;;;;;;;;;;;:::i;:::-;;13118:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15404:188;;;;;;;;;;;;;:::i;:::-;;7094:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8229:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10016:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20771:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8693:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20082:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20377:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16078:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20119:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8876:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13195:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7464:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15602:468;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20164:205;7231:12;:10;:12::i;:::-;7221:22;;:6;;;;;;;;;;;:22;;;7213:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20260:13:::1;;;;;;;;;;;20250:23;;:6;:23;;::::0;20232:42:::1;;;::::0;::::1;;20309:6;20285:21;;:30;;;;;;;;;;;;;;;;;;20355:6;20326:26;;:35;;;;;;;;;;;;;;;;;;20164:205:::0;:::o;8121:100::-;8175:13;8208:5;8201:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8121:100;:::o;9035:169::-;9118:4;9135:39;9144:12;:10;:12::i;:::-;9158:7;9167:6;9135:8;:39::i;:::-;9192:4;9185:11;;9035:169;;;;:::o;13081:26::-;;;;:::o;12876:41::-;;;;;;;;;;;;;:::o;8442:108::-;8503:7;8530:12;;8523:19;;8442:108;:::o;20924:141::-;20999:4;21023:25;:34;21049:7;21023:34;;;;;;;;;;;;;;;;;;;;;;;;;21016:41;;20924:141;;;:::o;19972:48::-;;;;;;;;;;;;;:::o;9212:573::-;9352:4;9369:24;9396:11;:19;9408:6;9396:19;;;;;;;;;;;;;;;:33;9416:12;:10;:12::i;:::-;9396:33;;;;;;;;;;;;;;;;9369:60;;9464:17;9444:16;:37;9440:265;;9526:6;9506:16;:26;;9498:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9621:57;9630:6;9638:12;:10;:12::i;:::-;9671:6;9652:16;:25;9621:8;:57::i;:::-;9440:265;9717:36;9727:6;9735:9;9746:6;9717:9;:36::i;:::-;9773:4;9766:11;;;9212:573;;;;;:::o;13052:22::-;;;;:::o;20027:48::-;;;;;;;;;;;;;:::o;8341:93::-;8399:5;8424:2;8417:9;;8341:93;:::o;19917:48::-;;;;;;;;;;;;;:::o;9793:215::-;9881:4;9898:80;9907:12;:10;:12::i;:::-;9921:7;9967:10;9930:11;:25;9942:12;:10;:12::i;:::-;9930:25;;;;;;;;;;;;;;;:34;9956:7;9930:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;9898:8;:80::i;:::-;9996:4;9989:11;;9793:215;;;;:::o;13024:21::-;;;;:::o;13235:28::-;;;;;;;;;;;;;:::o;12924:29::-;;;;;;;;;;;;;:::o;13157:::-;;;;;;;;;;;;;:::o;16376:125::-;16441:4;16465:19;:28;16485:7;16465:28;;;;;;;;;;;;;;;;;;;;;;;;;16458:35;;16376:125;;;:::o;8558:127::-;8632:7;8659:9;:18;8669:7;8659:18;;;;;;;;;;;;;;;;8652:25;;8558:127;;;:::o;7308:148::-;7231:12;:10;:12::i;:::-;7221:22;;:6;;;;;;;;;;;:22;;;7213:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7415:1:::1;7378:40;;7399:6;;;;;;;;;;;7378:40;;;;;;;;;;;;7446:1;7429:6;;:19;;;;;;;;;;;;;;;;;;7308:148::o:0;13118:30::-;;;;;;;;;;;;;:::o;15404:188::-;7231:12;:10;:12::i;:::-;7221:22;;:6;;;;;;;;;;;:22;;;7213:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15465:14:::1;;;;;;;;;;;15464:15;15456:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;15538:4;15521:14;;:21;;;;;;;;;;;;;;;;;;15567:15;15553:11;:29;;;;15404:188::o:0;7094:79::-;7132:7;7159:6;;;;;;;;;;;7152:13;;7094:79;:::o;8229:104::-;8285:13;8318:7;8311:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8229:104;:::o;10016:413::-;10109:4;10126:24;10153:11;:25;10165:12;:10;:12::i;:::-;10153:25;;;;;;;;;;;;;;;:34;10179:7;10153:34;;;;;;;;;;;;;;;;10126:61;;10226:15;10206:16;:35;;10198:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10319:67;10328:12;:10;:12::i;:::-;10342:7;10370:15;10351:16;:34;10319:8;:67::i;:::-;10417:4;10410:11;;;10016:413;;;;:::o;20771:145::-;20846:4;20870:29;:38;20900:7;20870:38;;;;;;;;;;;;;;;;;;;;;;;;;20863:45;;20771:145;;;:::o;8693:175::-;8779:4;8796:42;8806:12;:10;:12::i;:::-;8820:9;8831:6;8796:9;:42::i;:::-;8856:4;8849:11;;8693:175;;;;:::o;20082:30::-;;;;:::o;20377:386::-;7231:12;:10;:12::i;:::-;7221:22;;:6;;;;;;;;;;;:22;;;7213:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20528:7:::1;20486:49;;:29;:38;20516:7;20486:38;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;:98;;;;;20577:7;20539:45;;:25;:34;20565:7;20539:34;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;20486:98;20468:117;;;::::0;::::1;;20637:7;20596:29;:38;20626:7;20596:38;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;20696:7;20655:25;:34;20681:7;20655:34;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;20738:7;20719:36;;;20747:7;20719:36;;;;;;:::i;:::-;;;;;;;;20377:386:::0;;:::o;16078:290::-;7231:12;:10;:12::i;:::-;7221:22;;:6;;;;;;;;;;;:22;;;7213:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16204:8:::1;16172:40;;:19;:28;16192:7;16172:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;16164:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16300:8;16269:19;:28;16289:7;16269:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16342:7;16326:34;;;16351:8;16326:34;;;;;;:::i;:::-;;;;;;;;16078:290:::0;;:::o;20119:35::-;;;;:::o;8876:151::-;8965:7;8992:11;:18;9004:5;8992:18;;;;;;;;;;;;;;;:27;9011:7;8992:27;;;;;;;;;;;;;;;;8985:34;;8876:151;;;;:::o;13195:33::-;;;;:::o;7464:244::-;7231:12;:10;:12::i;:::-;7221:22;;:6;;;;;;;;;;;:22;;;7213:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7573:1:::1;7553:22;;:8;:22;;::::0;7545:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7663:8;7634:38;;7655:6;;;;;;;;;;;7634:38;;;;;;;;;;;;7692:8;7683:6;;:17;;;;;;;;;;;;;;;;;;7464:244:::0;:::o;15602:468::-;7231:12;:10;:12::i;:::-;7221:22;;:6;;;;;;;;;;;:22;;;7213:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15698:4:::1;15681:22;;:5;:22;;::::0;15673:31:::1;;;::::0;::::1;;15736:3;15719:21;;:5;:21;;::::0;15715:189:::1;;15758:12;15775:10;:15;;15798:21;15775:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15757:67;;;15847:7;15839:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;15886:7;;;15715:189;15914:17;15941:5;15914:33;;15958:15;15976:10;:20;;;16005:4;15976:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15958:53;;16022:10;:19;;;16042:10;16054:7;16022:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15662:408;;7291:1;15602:468:::0;:::o;6658:98::-;6711:7;6738:10;6731:17;;6658:98;:::o;12184:380::-;12337:1;12320:19;;:5;:19;;;12312:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12418:1;12399:21;;:7;:21;;;12391:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12502:6;12472:11;:18;12484:5;12472:18;;;;;;;;;;;;;;;:27;12491:7;12472:27;;;;;;;;;;;;;;;:36;;;;12540:7;12524:32;;12533:5;12524:32;;;12549:6;12524:32;;;;;;:::i;:::-;;;;;;;;12184:380;;;:::o;16516:2579::-;16629:1;16613:18;;:4;:18;;;16605:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16706:1;16692:16;;:2;:16;;;16684:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16767:14;;;;;;;;;;;:43;;;;16785:19;:25;16805:4;16785:25;;;;;;;;;;;;;;;;;;;;;;;;;16767:43;:70;;;;16814:19;:23;16834:2;16814:23;;;;;;;;;;;;;;;;;;;;;;;;;16767:70;16759:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;16909:1;16899:6;:11;16895:93;;16927:28;16943:4;16949:2;16953:1;16927:15;:28::i;:::-;16970:7;;16895:93;17004:26;;;;;;;;;;;17000:399;;;17070:13;;;;;;;;;;;17062:21;;:4;:21;;;:44;;;;17093:13;;;;;;;;;;;17087:19;;:2;:19;;;17062:44;17061:107;;;;;17163:5;17128:40;;:25;:31;17154:4;17128:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;17061:107;:169;;;;;17225:5;17190:40;;:25;:29;17216:2;17190:29;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;17061:169;17057:331;;;17283:20;;17273:6;:30;;17265:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;17057:331;17000:399;17405:28;17436:24;17454:4;17436:9;:24::i;:::-;17405:55;;17473:12;17512:18;;17488:20;:42;;17473:57;;17547:7;:33;;;;;17572:8;;;;;;;;;;;17571:9;17547:33;:69;;;;;17603:13;;;;;;;;;;;17597:19;;:2;:19;;;17547:69;17543:322;;;17654:4;17643:8;;:15;;;;;;;;;;;;;;;;;;17679:13;;;;;;;;;;;17675:95;;;17736:18;;17713:41;;17675:95;17786:26;17791:20;17786:4;:26::i;:::-;17848:5;17837:8;;:16;;;;;;;;;;;;;;;;;;17543:322;17877:18;17910:19;:25;17930:4;17910:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17939:19;:23;17959:2;17939:23;;;;;;;;;;;;;;;;;;;;;;;;;17910:52;:64;;;;17966:8;;;;;;;;;;;17910:64;17906:477;;;18004:1;17991:14;;17906:477;;;18035:13;;;;;;;;;;;18027:21;;:4;:21;;;18023:360;;18101:9;18086:11;;18068:15;:29;;;;:::i;:::-;:42;18065:100;;18125:1;18112:14;;18065:100;;;18159:6;;18146:19;;18065:100;18023:360;;;18193:13;;;;;;;;;;;18187:19;;:2;:19;;;18183:200;;18259:9;18244:11;;18226:15;:29;;;;:::i;:::-;:42;18223:101;;18283:2;18270:15;;18223:101;;;18317:7;;18304:20;;18223:101;18183:200;;;18370:1;18357:14;;18183:200;18023:360;17906:477;18412:1;18399:10;:14;18395:183;;;18430:12;18469:3;18455:10;18446:6;:19;;;;:::i;:::-;18445:27;;;;:::i;:::-;18430:42;;18505:4;18496:6;:13;;;;:::i;:::-;18487:22;;18524:42;18540:4;18554;18561;18524:15;:42::i;:::-;18415:163;18395:183;18594:21;;;;;;;;;;;18590:452;;;18676:5;18636:45;;:29;:35;18666:4;18636:35;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;:112;;;;;18743:5;18703:45;;:29;:33;18733:2;18703:33;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;18636:112;:152;;;;;18775:13;;;;;;;;;;;18769:19;;:2;:19;;;;18636:152;18632:399;;;18823:12;18839:13;18849:2;18839:9;:13::i;:::-;18823:29;;18921:15;;18911:6;18901:7;:16;;;;:::i;:::-;:35;;18871:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;18804:227;18632:399;18590:452;19054:33;19070:4;19076:2;19080:6;19054:15;:33::i;:::-;16594:2501;;;16516:2579;;;;:::o;10437:733::-;10595:1;10577:20;;:6;:20;;;10569:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10679:1;10658:23;;:9;:23;;;10650:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10734:47;10755:6;10763:9;10774:6;10734:20;:47::i;:::-;10794:21;10818:9;:17;10828:6;10818:17;;;;;;;;;;;;;;;;10794:41;;10871:6;10854:13;:23;;10846:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10992:6;10976:13;:22;10956:9;:17;10966:6;10956:17;;;;;;;;;;;;;;;:42;;;;11044:6;11020:9;:20;11030:9;11020:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;11085:9;11068:35;;11077:6;11068:35;;;11096:6;11068:35;;;;;;:::i;:::-;;;;;;;;11116:46;11136:6;11144:9;11155:6;11116:19;:46::i;:::-;10558:612;10437:733;;;:::o;19106:669::-;19160:22;19185:21;19160:46;;19219:21;19257:1;19243:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19219:40;;19288:4;19270;19275:1;19270:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19314:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19304:4;19309:1;19304:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;19349:15;;;;;;;;;;;:66;;;19430:11;19456:1;19472:4;19499;19519:15;19349:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19548:18;19593:14;19569:21;:38;;;;:::i;:::-;19548:59;;19620:12;19643:15;;;;;;;;;;;19635:29;;:41;19665:10;19635:41;;;;;;;;;;;;;;;;;;;;;;;19620:56;;19691:7;19687:81;;;19720:36;19732:11;19745:10;19720:36;;;;;;;:::i;:::-;;;;;;;;19687:81;19149:626;;;;19106:669;:::o;12572:125::-;;;;:::o;12705:124::-;;;;:::o;88:117:1:-;197:1;194;187:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:323::-;747:6;796:2;784:9;775:7;771:23;767:32;764:119;;;802:79;;:::i;:::-;764:119;922:1;947:50;989:7;980:6;969:9;965:22;947:50;:::i;:::-;937:60;;893:114;691:323;;;;:::o;1020:99::-;1072:6;1106:5;1100:12;1090:22;;1020:99;;;:::o;1125:169::-;1209:11;1243:6;1238:3;1231:19;1283:4;1278:3;1274:14;1259:29;;1125:169;;;;:::o;1300:246::-;1381:1;1391:113;1405:6;1402:1;1399:13;1391:113;;;1490:1;1485:3;1481:11;1475:18;1471:1;1466:3;1462:11;1455:39;1427:2;1424:1;1420:10;1415:15;;1391:113;;;1538:1;1529:6;1524:3;1520:16;1513:27;1362:184;1300:246;;;:::o;1552:102::-;1593:6;1644:2;1640:7;1635:2;1628:5;1624:14;1620:28;1610:38;;1552:102;;;:::o;1660:377::-;1748:3;1776:39;1809:5;1776:39;:::i;:::-;1831:71;1895:6;1890:3;1831:71;:::i;:::-;1824:78;;1911:65;1969:6;1964:3;1957:4;1950:5;1946:16;1911:65;:::i;:::-;2001:29;2023:6;2001:29;:::i;:::-;1996:3;1992:39;1985:46;;1752:285;1660:377;;;;:::o;2043:313::-;2156:4;2194:2;2183:9;2179:18;2171:26;;2243:9;2237:4;2233:20;2229:1;2218:9;2214:17;2207:47;2271:78;2344:4;2335:6;2271:78;:::i;:::-;2263:86;;2043:313;;;;:::o;2362:126::-;2399:7;2439:42;2432:5;2428:54;2417:65;;2362:126;;;:::o;2494:96::-;2531:7;2560:24;2578:5;2560:24;:::i;:::-;2549:35;;2494:96;;;:::o;2596:122::-;2669:24;2687:5;2669:24;:::i;:::-;2662:5;2659:35;2649:63;;2708:1;2705;2698:12;2649:63;2596:122;:::o;2724:139::-;2770:5;2808:6;2795:20;2786:29;;2824:33;2851:5;2824:33;:::i;:::-;2724:139;;;;:::o;2869:77::-;2906:7;2935:5;2924:16;;2869:77;;;:::o;2952:122::-;3025:24;3043:5;3025:24;:::i;:::-;3018:5;3015:35;3005:63;;3064:1;3061;3054:12;3005:63;2952:122;:::o;3080:139::-;3126:5;3164:6;3151:20;3142:29;;3180:33;3207:5;3180:33;:::i;:::-;3080:139;;;;:::o;3225:474::-;3293:6;3301;3350:2;3338:9;3329:7;3325:23;3321:32;3318:119;;;3356:79;;:::i;:::-;3318:119;3476:1;3501:53;3546:7;3537:6;3526:9;3522:22;3501:53;:::i;:::-;3491:63;;3447:117;3603:2;3629:53;3674:7;3665:6;3654:9;3650:22;3629:53;:::i;:::-;3619:63;;3574:118;3225:474;;;;;:::o;3705:109::-;3786:21;3801:5;3786:21;:::i;:::-;3781:3;3774:34;3705:109;;:::o;3820:210::-;3907:4;3945:2;3934:9;3930:18;3922:26;;3958:65;4020:1;4009:9;4005:17;3996:6;3958:65;:::i;:::-;3820:210;;;;:::o;4036:118::-;4123:24;4141:5;4123:24;:::i;:::-;4118:3;4111:37;4036:118;;:::o;4160:222::-;4253:4;4291:2;4280:9;4276:18;4268:26;;4304:71;4372:1;4361:9;4357:17;4348:6;4304:71;:::i;:::-;4160:222;;;;:::o;4388:60::-;4416:3;4437:5;4430:12;;4388:60;;;:::o;4454:142::-;4504:9;4537:53;4555:34;4564:24;4582:5;4564:24;:::i;:::-;4555:34;:::i;:::-;4537:53;:::i;:::-;4524:66;;4454:142;;;:::o;4602:126::-;4652:9;4685:37;4716:5;4685:37;:::i;:::-;4672:50;;4602:126;;;:::o;4734:152::-;4810:9;4843:37;4874:5;4843:37;:::i;:::-;4830:50;;4734:152;;;:::o;4892:183::-;5005:63;5062:5;5005:63;:::i;:::-;5000:3;4993:76;4892:183;;:::o;5081:274::-;5200:4;5238:2;5227:9;5223:18;5215:26;;5251:97;5345:1;5334:9;5330:17;5321:6;5251:97;:::i;:::-;5081:274;;;;:::o;5361:329::-;5420:6;5469:2;5457:9;5448:7;5444:23;5440:32;5437:119;;;5475:79;;:::i;:::-;5437:119;5595:1;5620:53;5665:7;5656:6;5645:9;5641:22;5620:53;:::i;:::-;5610:63;;5566:117;5361:329;;;;:::o;5696:619::-;5773:6;5781;5789;5838:2;5826:9;5817:7;5813:23;5809:32;5806:119;;;5844:79;;:::i;:::-;5806:119;5964:1;5989:53;6034:7;6025:6;6014:9;6010:22;5989:53;:::i;:::-;5979:63;;5935:117;6091:2;6117:53;6162:7;6153:6;6142:9;6138:22;6117:53;:::i;:::-;6107:63;;6062:118;6219:2;6245:53;6290:7;6281:6;6270:9;6266:22;6245:53;:::i;:::-;6235:63;;6190:118;5696:619;;;;;:::o;6321:86::-;6356:7;6396:4;6389:5;6385:16;6374:27;;6321:86;;;:::o;6413:112::-;6496:22;6512:5;6496:22;:::i;:::-;6491:3;6484:35;6413:112;;:::o;6531:214::-;6620:4;6658:2;6647:9;6643:18;6635:26;;6671:67;6735:1;6724:9;6720:17;6711:6;6671:67;:::i;:::-;6531:214;;;;:::o;6751:118::-;6838:24;6856:5;6838:24;:::i;:::-;6833:3;6826:37;6751:118;;:::o;6875:222::-;6968:4;7006:2;6995:9;6991:18;6983:26;;7019:71;7087:1;7076:9;7072:17;7063:6;7019:71;:::i;:::-;6875:222;;;;:::o;7103:468::-;7168:6;7176;7225:2;7213:9;7204:7;7200:23;7196:32;7193:119;;;7231:79;;:::i;:::-;7193:119;7351:1;7376:53;7421:7;7412:6;7401:9;7397:22;7376:53;:::i;:::-;7366:63;;7322:117;7478:2;7504:50;7546:7;7537:6;7526:9;7522:22;7504:50;:::i;:::-;7494:60;;7449:115;7103:468;;;;;:::o;7577:474::-;7645:6;7653;7702:2;7690:9;7681:7;7677:23;7673:32;7670:119;;;7708:79;;:::i;:::-;7670:119;7828:1;7853:53;7898:7;7889:6;7878:9;7874:22;7853:53;:::i;:::-;7843:63;;7799:117;7955:2;7981:53;8026:7;8017:6;8006:9;8002:22;7981:53;:::i;:::-;7971:63;;7926:118;7577:474;;;;;:::o;8057:182::-;8197:34;8193:1;8185:6;8181:14;8174:58;8057:182;:::o;8245:366::-;8387:3;8408:67;8472:2;8467:3;8408:67;:::i;:::-;8401:74;;8484:93;8573:3;8484:93;:::i;:::-;8602:2;8597:3;8593:12;8586:19;;8245:366;;;:::o;8617:419::-;8783:4;8821:2;8810:9;8806:18;8798:26;;8870:9;8864:4;8860:20;8856:1;8845:9;8841:17;8834:47;8898:131;9024:4;8898:131;:::i;:::-;8890:139;;8617:419;;;:::o;9042:180::-;9090:77;9087:1;9080:88;9187:4;9184:1;9177:15;9211:4;9208:1;9201:15;9228:320;9272:6;9309:1;9303:4;9299:12;9289:22;;9356:1;9350:4;9346:12;9377:18;9367:81;;9433:4;9425:6;9421:17;9411:27;;9367:81;9495:2;9487:6;9484:14;9464:18;9461:38;9458:84;;9514:18;;:::i;:::-;9458:84;9279:269;9228:320;;;:::o;9554:227::-;9694:34;9690:1;9682:6;9678:14;9671:58;9763:10;9758:2;9750:6;9746:15;9739:35;9554:227;:::o;9787:366::-;9929:3;9950:67;10014:2;10009:3;9950:67;:::i;:::-;9943:74;;10026:93;10115:3;10026:93;:::i;:::-;10144:2;10139:3;10135:12;10128:19;;9787:366;;;:::o;10159:419::-;10325:4;10363:2;10352:9;10348:18;10340:26;;10412:9;10406:4;10402:20;10398:1;10387:9;10383:17;10376:47;10440:131;10566:4;10440:131;:::i;:::-;10432:139;;10159:419;;;:::o;10584:180::-;10632:77;10629:1;10622:88;10729:4;10726:1;10719:15;10753:4;10750:1;10743:15;10770:191;10810:3;10829:20;10847:1;10829:20;:::i;:::-;10824:25;;10863:20;10881:1;10863:20;:::i;:::-;10858:25;;10906:1;10903;10899:9;10892:16;;10927:3;10924:1;10921:10;10918:36;;;10934:18;;:::i;:::-;10918:36;10770:191;;;;:::o;10967:176::-;11107:28;11103:1;11095:6;11091:14;11084:52;10967:176;:::o;11149:366::-;11291:3;11312:67;11376:2;11371:3;11312:67;:::i;:::-;11305:74;;11388:93;11477:3;11388:93;:::i;:::-;11506:2;11501:3;11497:12;11490:19;;11149:366;;;:::o;11521:419::-;11687:4;11725:2;11714:9;11710:18;11702:26;;11774:9;11768:4;11764:20;11760:1;11749:9;11745:17;11738:47;11802:131;11928:4;11802:131;:::i;:::-;11794:139;;11521:419;;;:::o;11946:224::-;12086:34;12082:1;12074:6;12070:14;12063:58;12155:7;12150:2;12142:6;12138:15;12131:32;11946:224;:::o;12176:366::-;12318:3;12339:67;12403:2;12398:3;12339:67;:::i;:::-;12332:74;;12415:93;12504:3;12415:93;:::i;:::-;12533:2;12528:3;12524:12;12517:19;;12176:366;;;:::o;12548:419::-;12714:4;12752:2;12741:9;12737:18;12729:26;;12801:9;12795:4;12791:20;12787:1;12776:9;12772:17;12765:47;12829:131;12955:4;12829:131;:::i;:::-;12821:139;;12548:419;;;:::o;12973:229::-;13113:34;13109:1;13101:6;13097:14;13090:58;13182:12;13177:2;13169:6;13165:15;13158:37;12973:229;:::o;13208:366::-;13350:3;13371:67;13435:2;13430:3;13371:67;:::i;:::-;13364:74;;13447:93;13536:3;13447:93;:::i;:::-;13565:2;13560:3;13556:12;13549:19;;13208:366;;;:::o;13580:419::-;13746:4;13784:2;13773:9;13769:18;13761:26;;13833:9;13827:4;13823:20;13819:1;13808:9;13804:17;13797:47;13861:131;13987:4;13861:131;:::i;:::-;13853:139;;13580:419;;;:::o;14005:225::-;14145:34;14141:1;14133:6;14129:14;14122:58;14214:8;14209:2;14201:6;14197:15;14190:33;14005:225;:::o;14236:366::-;14378:3;14399:67;14463:2;14458:3;14399:67;:::i;:::-;14392:74;;14475:93;14564:3;14475:93;:::i;:::-;14593:2;14588:3;14584:12;14577:19;;14236:366;;;:::o;14608:419::-;14774:4;14812:2;14801:9;14797:18;14789:26;;14861:9;14855:4;14851:20;14847:1;14836:9;14832:17;14825:47;14889:131;15015:4;14889:131;:::i;:::-;14881:139;;14608:419;;;:::o;15033:147::-;15134:11;15171:3;15156:18;;15033:147;;;;:::o;15186:114::-;;:::o;15306:398::-;15465:3;15486:83;15567:1;15562:3;15486:83;:::i;:::-;15479:90;;15578:93;15667:3;15578:93;:::i;:::-;15696:1;15691:3;15687:11;15680:18;;15306:398;;;:::o;15710:379::-;15894:3;15916:147;16059:3;15916:147;:::i;:::-;15909:154;;16080:3;16073:10;;15710:379;;;:::o;16095:162::-;16235:14;16231:1;16223:6;16219:14;16212:38;16095:162;:::o;16263:366::-;16405:3;16426:67;16490:2;16485:3;16426:67;:::i;:::-;16419:74;;16502:93;16591:3;16502:93;:::i;:::-;16620:2;16615:3;16611:12;16604:19;;16263:366;;;:::o;16635:419::-;16801:4;16839:2;16828:9;16824:18;16816:26;;16888:9;16882:4;16878:20;16874:1;16863:9;16859:17;16852:47;16916:131;17042:4;16916:131;:::i;:::-;16908:139;;16635:419;;;:::o;17060:143::-;17117:5;17148:6;17142:13;17133:22;;17164:33;17191:5;17164:33;:::i;:::-;17060:143;;;;:::o;17209:351::-;17279:6;17328:2;17316:9;17307:7;17303:23;17299:32;17296:119;;;17334:79;;:::i;:::-;17296:119;17454:1;17479:64;17535:7;17526:6;17515:9;17511:22;17479:64;:::i;:::-;17469:74;;17425:128;17209:351;;;;:::o;17566:332::-;17687:4;17725:2;17714:9;17710:18;17702:26;;17738:71;17806:1;17795:9;17791:17;17782:6;17738:71;:::i;:::-;17819:72;17887:2;17876:9;17872:18;17863:6;17819:72;:::i;:::-;17566:332;;;;;:::o;17904:137::-;17958:5;17989:6;17983:13;17974:22;;18005:30;18029:5;18005:30;:::i;:::-;17904:137;;;;:::o;18047:345::-;18114:6;18163:2;18151:9;18142:7;18138:23;18134:32;18131:119;;;18169:79;;:::i;:::-;18131:119;18289:1;18314:61;18367:7;18358:6;18347:9;18343:22;18314:61;:::i;:::-;18304:71;;18260:125;18047:345;;;;:::o;18398:223::-;18538:34;18534:1;18526:6;18522:14;18515:58;18607:6;18602:2;18594:6;18590:15;18583:31;18398:223;:::o;18627:366::-;18769:3;18790:67;18854:2;18849:3;18790:67;:::i;:::-;18783:74;;18866:93;18955:3;18866:93;:::i;:::-;18984:2;18979:3;18975:12;18968:19;;18627:366;;;:::o;18999:419::-;19165:4;19203:2;19192:9;19188:18;19180:26;;19252:9;19246:4;19242:20;19238:1;19227:9;19223:17;19216:47;19280:131;19406:4;19280:131;:::i;:::-;19272:139;;18999:419;;;:::o;19424:221::-;19564:34;19560:1;19552:6;19548:14;19541:58;19633:4;19628:2;19620:6;19616:15;19609:29;19424:221;:::o;19651:366::-;19793:3;19814:67;19878:2;19873:3;19814:67;:::i;:::-;19807:74;;19890:93;19979:3;19890:93;:::i;:::-;20008:2;20003:3;19999:12;19992:19;;19651:366;;;:::o;20023:419::-;20189:4;20227:2;20216:9;20212:18;20204:26;;20276:9;20270:4;20266:20;20262:1;20251:9;20247:17;20240:47;20304:131;20430:4;20304:131;:::i;:::-;20296:139;;20023:419;;;:::o;20448:224::-;20588:34;20584:1;20576:6;20572:14;20565:58;20657:7;20652:2;20644:6;20640:15;20633:32;20448:224;:::o;20678:366::-;20820:3;20841:67;20905:2;20900:3;20841:67;:::i;:::-;20834:74;;20917:93;21006:3;20917:93;:::i;:::-;21035:2;21030:3;21026:12;21019:19;;20678:366;;;:::o;21050:419::-;21216:4;21254:2;21243:9;21239:18;21231:26;;21303:9;21297:4;21293:20;21289:1;21278:9;21274:17;21267:47;21331:131;21457:4;21331:131;:::i;:::-;21323:139;;21050:419;;;:::o;21475:222::-;21615:34;21611:1;21603:6;21599:14;21592:58;21684:5;21679:2;21671:6;21667:15;21660:30;21475:222;:::o;21703:366::-;21845:3;21866:67;21930:2;21925:3;21866:67;:::i;:::-;21859:74;;21942:93;22031:3;21942:93;:::i;:::-;22060:2;22055:3;22051:12;22044:19;;21703:366;;;:::o;22075:419::-;22241:4;22279:2;22268:9;22264:18;22256:26;;22328:9;22322:4;22318:20;22314:1;22303:9;22299:17;22292:47;22356:131;22482:4;22356:131;:::i;:::-;22348:139;;22075:419;;;:::o;22500:176::-;22640:28;22636:1;22628:6;22624:14;22617:52;22500:176;:::o;22682:366::-;22824:3;22845:67;22909:2;22904:3;22845:67;:::i;:::-;22838:74;;22921:93;23010:3;22921:93;:::i;:::-;23039:2;23034:3;23030:12;23023:19;;22682:366;;;:::o;23054:419::-;23220:4;23258:2;23247:9;23243:18;23235:26;;23307:9;23301:4;23297:20;23293:1;23282:9;23278:17;23271:47;23335:131;23461:4;23335:131;:::i;:::-;23327:139;;23054:419;;;:::o;23479:235::-;23619:34;23615:1;23607:6;23603:14;23596:58;23688:18;23683:2;23675:6;23671:15;23664:43;23479:235;:::o;23720:366::-;23862:3;23883:67;23947:2;23942:3;23883:67;:::i;:::-;23876:74;;23959:93;24048:3;23959:93;:::i;:::-;24077:2;24072:3;24068:12;24061:19;;23720:366;;;:::o;24092:419::-;24258:4;24296:2;24285:9;24281:18;24273:26;;24345:9;24339:4;24335:20;24331:1;24320:9;24316:17;24309:47;24373:131;24499:4;24373:131;:::i;:::-;24365:139;;24092:419;;;:::o;24517:194::-;24557:4;24577:20;24595:1;24577:20;:::i;:::-;24572:25;;24611:20;24629:1;24611:20;:::i;:::-;24606:25;;24655:1;24652;24648:9;24640:17;;24679:1;24673:4;24670:11;24667:37;;;24684:18;;:::i;:::-;24667:37;24517:194;;;;:::o;24717:410::-;24757:7;24780:20;24798:1;24780:20;:::i;:::-;24775:25;;24814:20;24832:1;24814:20;:::i;:::-;24809:25;;24869:1;24866;24862:9;24891:30;24909:11;24891:30;:::i;:::-;24880:41;;25070:1;25061:7;25057:15;25054:1;25051:22;25031:1;25024:9;25004:83;24981:139;;25100:18;;:::i;:::-;24981:139;24765:362;24717:410;;;;:::o;25133:180::-;25181:77;25178:1;25171:88;25278:4;25275:1;25268:15;25302:4;25299:1;25292:15;25319:185;25359:1;25376:20;25394:1;25376:20;:::i;:::-;25371:25;;25410:20;25428:1;25410:20;:::i;:::-;25405:25;;25449:1;25439:35;;25454:18;;:::i;:::-;25439:35;25496:1;25493;25489:9;25484:14;;25319:185;;;;:::o;25510:221::-;25650:34;25646:1;25638:6;25634:14;25627:58;25719:4;25714:2;25706:6;25702:15;25695:29;25510:221;:::o;25737:366::-;25879:3;25900:67;25964:2;25959:3;25900:67;:::i;:::-;25893:74;;25976:93;26065:3;25976:93;:::i;:::-;26094:2;26089:3;26085:12;26078:19;;25737:366;;;:::o;26109:419::-;26275:4;26313:2;26302:9;26298:18;26290:26;;26362:9;26356:4;26352:20;26348:1;26337:9;26333:17;26326:47;26390:131;26516:4;26390:131;:::i;:::-;26382:139;;26109:419;;;:::o;26534:225::-;26674:34;26670:1;26662:6;26658:14;26651:58;26743:8;26738:2;26730:6;26726:15;26719:33;26534:225;:::o;26765:366::-;26907:3;26928:67;26992:2;26987:3;26928:67;:::i;:::-;26921:74;;27004:93;27093:3;27004:93;:::i;:::-;27122:2;27117:3;27113:12;27106:19;;26765:366;;;:::o;27137:419::-;27303:4;27341:2;27330:9;27326:18;27318:26;;27390:9;27384:4;27380:20;27376:1;27365:9;27361:17;27354:47;27418:131;27544:4;27418:131;:::i;:::-;27410:139;;27137:419;;;:::o;27562:180::-;27610:77;27607:1;27600:88;27707:4;27704:1;27697:15;27731:4;27728:1;27721:15;27748:180;27796:77;27793:1;27786:88;27893:4;27890:1;27883:15;27917:4;27914:1;27907:15;27934:143;27991:5;28022:6;28016:13;28007:22;;28038:33;28065:5;28038:33;:::i;:::-;27934:143;;;;:::o;28083:351::-;28153:6;28202:2;28190:9;28181:7;28177:23;28173:32;28170:119;;;28208:79;;:::i;:::-;28170:119;28328:1;28353:64;28409:7;28400:6;28389:9;28385:22;28353:64;:::i;:::-;28343:74;;28299:128;28083:351;;;;:::o;28440:85::-;28485:7;28514:5;28503:16;;28440:85;;;:::o;28531:158::-;28589:9;28622:61;28640:42;28649:32;28675:5;28649:32;:::i;:::-;28640:42;:::i;:::-;28622:61;:::i;:::-;28609:74;;28531:158;;;:::o;28695:147::-;28790:45;28829:5;28790:45;:::i;:::-;28785:3;28778:58;28695:147;;:::o;28848:114::-;28915:6;28949:5;28943:12;28933:22;;28848:114;;;:::o;28968:184::-;29067:11;29101:6;29096:3;29089:19;29141:4;29136:3;29132:14;29117:29;;28968:184;;;;:::o;29158:132::-;29225:4;29248:3;29240:11;;29278:4;29273:3;29269:14;29261:22;;29158:132;;;:::o;29296:108::-;29373:24;29391:5;29373:24;:::i;:::-;29368:3;29361:37;29296:108;;:::o;29410:179::-;29479:10;29500:46;29542:3;29534:6;29500:46;:::i;:::-;29578:4;29573:3;29569:14;29555:28;;29410:179;;;;:::o;29595:113::-;29665:4;29697;29692:3;29688:14;29680:22;;29595:113;;;:::o;29744:732::-;29863:3;29892:54;29940:5;29892:54;:::i;:::-;29962:86;30041:6;30036:3;29962:86;:::i;:::-;29955:93;;30072:56;30122:5;30072:56;:::i;:::-;30151:7;30182:1;30167:284;30192:6;30189:1;30186:13;30167:284;;;30268:6;30262:13;30295:63;30354:3;30339:13;30295:63;:::i;:::-;30288:70;;30381:60;30434:6;30381:60;:::i;:::-;30371:70;;30227:224;30214:1;30211;30207:9;30202:14;;30167:284;;;30171:14;30467:3;30460:10;;29868:608;;;29744:732;;;;:::o;30482:831::-;30745:4;30783:3;30772:9;30768:19;30760:27;;30797:71;30865:1;30854:9;30850:17;30841:6;30797:71;:::i;:::-;30878:80;30954:2;30943:9;30939:18;30930:6;30878:80;:::i;:::-;31005:9;30999:4;30995:20;30990:2;30979:9;30975:18;30968:48;31033:108;31136:4;31127:6;31033:108;:::i;:::-;31025:116;;31151:72;31219:2;31208:9;31204:18;31195:6;31151:72;:::i;:::-;31233:73;31301:3;31290:9;31286:19;31277:6;31233:73;:::i;:::-;30482:831;;;;;;;;:::o;31319:332::-;31440:4;31478:2;31467:9;31463:18;31455:26;;31491:71;31559:1;31548:9;31544:17;31535:6;31491:71;:::i;:::-;31572:72;31640:2;31629:9;31625:18;31616:6;31572:72;:::i;:::-;31319:332;;;;;:::o

Swarm Source

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