ETH Price: $3,673.89 (+2.71%)

Token

ERC-20: Rastopyry (RASTY)
 

Overview

Max Total Supply

1,000,000 RASTY

Holders

255

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,976.896936206713585092 RASTY

Value
$0.00
0xba6e816b6d6c2d3244cf273004f7051ae7fba225
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:
RastyCoin

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-24
*/

/*

    Twitter: https://x.com/RastyETH

    Telegram: https://t.me/RastyETH

    Website: https://rastopyry.dog

    Medium: https://medium.com/@rastyvitalikdog/story-of-rastopyry-vitaliks-first-dog-2b332138c645

*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

abstract contract Ownable is Context {
    address private _owner;

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

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Invalid owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "New owner is ZERO");
        _transferOwnership(newOwner);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, 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 IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

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

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

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

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

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

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

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

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (
        uint112 reserve0,
        uint112 reserve1,
        uint32 blockTimestampLast
    );

    function price0CumulativeLast() external view returns (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function mint(address to) external returns (uint256 liquidity);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}


contract ERC20 is IERC20, Context {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

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

    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 approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: Not owner != address(0)");
        require(spender != address(0), "ERC20: Not spender != address(0)");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        _transfer(from, to, amount);
        uint256 curAllow = _allowances[from][_msgSender()];
        require(curAllow >= amount, "ERC20: Not curAllow >= amount");
        unchecked {
            _approve(from, _msgSender(), curAllow - amount);
        }
        return true;
    }

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

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

    function decreaseAllowance(address spender, uint256 subValue) public virtual returns (bool) {
        uint256 curAllow = _allowances[_msgSender()][spender];
        require(curAllow >= subValue, "ERC20: Not curAllow >= subValue");
        unchecked {
            _approve(_msgSender(), spender, curAllow - subValue);
        }
        return true;
    }

    function _mint(
    	address account,
	    uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _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: Not account != address(0)");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 kBalance = _balances[account];
        require(kBalance >= amount, "ERC20: kBalance >= amount");
        unchecked {
            _balances[account] = kBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

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

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: Not from != address(0)");
        require(to != address(0), "ERC20: Not to != address(0)");
        _beforeTokenTransfer(from, to, amount);
        uint256 balanceFrom = _balances[from];
        require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount");
        unchecked {
            _balances[from] = balanceFrom - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

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

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

    IUniswapV2Router02 public swapRouter;
    address public swapPair;
    
    uint256 public minSwapTokenAmount;
    uint256 public maxTokenAmountPerWallet;
    uint256 public maxTokenAmountPerTxn;

    bool public TradingActive = false;
    uint256 public ActiveTradingBlock;
    uint256 public PreventSwapbackBlocks;
    bool public SwapEnabled = false;

    address public marketingWallet;
    address public devWallet;

    uint256 public tokenAmountForMarketing;
    uint256 public tokenAmountForDev;

    mapping(address => bool) public ExcludedMaxTokenAmountPerTxn;

    mapping(address => bool) public ExcludedFromTax;

    mapping(address => bool) public automatedMarketMakerPairs;

    bool public limitsInEffect = true;

    uint256 public sellTotalTax;
    uint256 public sellMarketingTax;
    uint256 public sellDevTax;

    uint256 public buyTotalTax;
    uint256 public buyMarketingTax;
    uint256 public buyDevTax;

    
    bool private Swapping;
    mapping(address => bool) private blackList;
    
    constructor() ERC20("Rastopyry", "RASTY") {
        devWallet = address(0x70c60912794b51a4B3D204850F12Aa3A2642Aa54);
        marketingWallet = address(0x70c60912794b51a4B3D204850F12Aa3A2642Aa54);


        swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH());

        ExcludedMaxTokenAmountPerTxn[owner()] = true;
        ExcludedMaxTokenAmountPerTxn[address(this)] = true;

        uint256 totalSupply = 1000000 * (10 ** decimals());
        minSwapTokenAmount = 1000 * (10 ** decimals()); //0.1% min swap
        maxTokenAmountPerTxn = 10000 * (10 ** decimals()); //1% max tx amount
        maxTokenAmountPerWallet = 10000 * (10 ** decimals()); //1% max wallet amount
        ExcludedFromTax[address(this)] = true;
        ExcludedFromTax[owner()] = true;


        automatedMarketMakerPairs[address(swapPair)] = true;
        
        ExcludedMaxTokenAmountPerTxn[address(0xdead)] = true;
        ExcludedMaxTokenAmountPerTxn[address(swapRouter)] = true;
        ExcludedMaxTokenAmountPerTxn[address(swapPair)] = true;

        ExcludedFromTax[address(0xdead)] = true;

        sellMarketingTax = 20;
        sellDevTax = 0;
        sellTotalTax = sellMarketingTax + sellDevTax;


        buyMarketingTax = 20;
        buyDevTax = 0;
        buyTotalTax = buyMarketingTax + buyDevTax;

        PreventSwapbackBlocks=3; //default
        _mint(msg.sender, totalSupply);
    }

    function activateTrading() external onlyOwner {
        TradingActive = true;
        SwapEnabled = true;
        ActiveTradingBlock=block.number;
    }
    function updatePrecentSwapbackBlocks(uint256 newNum) external onlyOwner{
        PreventSwapbackBlocks=newNum;
    }
    function excludeFromMaxTokenAmountPerTxn(address addr, bool value) external onlyOwner {
        ExcludedMaxTokenAmountPerTxn[addr] = value;
    }
    function excludeFromTax(address account, bool value) external onlyOwner {    	
        ExcludedFromTax[account] = value;
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
    }
    function updateSwapEnabled(bool enabled) external onlyOwner {
        SwapEnabled = enabled;
    }
    function updateMinimumSwapTokenAmount(uint256 amount) external onlyOwner {
        require(amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(amount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        minSwapTokenAmount = amount;
    }
    function updateMaxTokensPerWallet(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerWallet lower than 0.5%");
        maxTokenAmountPerWallet = newNum * (10 ** decimals());
    }
    function updateMaxTokenAmountPerTxn(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerTxn lower than 0.1%");
        maxTokenAmountPerTxn = newNum * (10 ** decimals());
    }
    function setBlackList(address addr, bool enable) external onlyOwner {
        blackList[addr] = enable;
    }
    function setBulkBlackList(address[] memory _addr, bool enable) external onlyOwner {
        for (uint256 i=0; i <= _addr.length-1; i++) {
            blackList[_addr[i]] = enable;
        }
    }
    function updateBuyTax(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        buyMarketingTax = newMarketFee;
        buyDevTax = newDevFee;
        buyTotalTax = buyMarketingTax + buyDevTax;
        require(buyTotalTax <= 50, "Must keep tax at 50% or less");
    }

    function updateSellTax(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        sellMarketingTax = newMarketFee;
        sellDevTax = newDevFee;
        sellTotalTax = sellMarketingTax + sellDevTax;
        require(sellTotalTax <= 95, "Must keep tax at 95% or less");
    }
    
    function setAutomatedMarketMakerPairs(address pair, bool value)
        external onlyOwner {
        require(pair != swapPair, "The pair cannot be removed from automatedMarketMakerPairs");
        automatedMarketMakerPairs[pair] = value;
    }
    function swapBack() private {
        bool success;
        uint256 tokenAmountToSwap = tokenAmountForMarketing + tokenAmountForDev;
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenAmountToSwap == 0 || tokenBalance == 0)
            return;

        if (tokenBalance > minSwapTokenAmount * 5){
            tokenBalance = minSwapTokenAmount * 5;
        }

        uint256 prevETHBalance = address(this).balance;
        swapTokensForEth(tokenBalance);

        uint256 ethBalance = address(this).balance.sub(prevETHBalance);
        uint256 ethForDev = ethBalance.mul(tokenAmountForDev).div(tokenAmountToSwap);

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

        tokenAmountForMarketing = 0;
        tokenAmountForDev = 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: Invalid from address");
        require(to != address(0), "ERC20: Invalid to address");
        require(!blackList[from], "ERC20: Sender is blacklisted");
        require(!blackList[to], "ERC20: Receiver is blacklisted");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !Swapping) {
                if (!TradingActive) {
                    require(ExcludedFromTax[from] || ExcludedFromTax[to], "Trading is not active.");
                }

                if (automatedMarketMakerPairs[from] && !ExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount <= maxTokenAmountPerTxn, "Buy transfer amount exceeds the maxTokenAmountPerTxn.");
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
                else if (automatedMarketMakerPairs[to] && !ExcludedMaxTokenAmountPerTxn[from]) {
                    require(amount <= maxTokenAmountPerTxn, "Sell transfer amount exceeds the maxTokenAmountPerTxn.");
                }
                else if (!ExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
            }
        }
        uint256 tokenBalance = balanceOf(address(this));
        bool canSwap = tokenBalance >= minSwapTokenAmount;
        if (SwapEnabled 
            && canSwap 
            && !Swapping 
            && !automatedMarketMakerPairs[from] 
            && !ExcludedFromTax[from] 
            && !ExcludedFromTax[to]
            && ActiveTradingBlock+PreventSwapbackBlocks <= block.number
        ) {
            Swapping = true;
            swapBack();
            Swapping = false;
        }

        bool Tax = !Swapping;
        if (ExcludedFromTax[from] || ExcludedFromTax[to])
            Tax = false;

        uint256 fees = 0;
        if (Tax) {
            if (automatedMarketMakerPairs[to] && sellTotalTax > 0) {
                fees = amount.mul(sellTotalTax).div(100);
                tokenAmountForDev += (fees * sellDevTax) / sellTotalTax;
                tokenAmountForMarketing += (fees * sellMarketingTax) / sellTotalTax;
            }
            else if (automatedMarketMakerPairs[from] && buyTotalTax > 0) {
                fees = amount.mul(buyTotalTax).div(100);
                tokenAmountForDev += (fees * buyDevTax) / buyTotalTax;
                tokenAmountForMarketing += (fees * buyMarketingTax) / buyTotalTax;
            }
            if (fees > 0)
                super._transfer(from, address(this), fees);
            amount -= fees;
        }

        super._transfer(from, to, amount);
    }
    receive() external payable {}
    function swapTokensForEth(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        _approve(address(this), address(swapRouter), amount);

        // make the swap
        swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ActiveTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedMaxTokenAmountPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PreventSwapbackBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBulkBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatePrecentSwapbackBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600b5f6101000a81548160ff0219169083151502179055505f600e5f6101000a81548160ff021916908315150217905550600160155f6101000a81548160ff02191690831515021790555034801561005b575f80fd5b506040518060400160405280600981526020017f526173746f7079727900000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5241535459000000000000000000000000000000000000000000000000000000815250815f90816100d69190610d10565b5080600190816100e69190610d10565b5050506101056100fa61086e60201b60201c565b61087560201b60201c565b7370c60912794b51a4b3d204850f12aa3a2642aa54600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507370c60912794b51a4b3d204850f12aa3a2642aa54600e60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561026c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102909190610e3d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610316573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061033a9190610e3d565b6040518363ffffffff1660e01b8152600401610357929190610e77565b6020604051808303815f875af1158015610373573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103979190610e3d565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160125f6103e961093860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f61049c61096060201b60201c565b600a6104a89190611006565b620f42406104b69190611050565b90506104c661096060201b60201c565b600a6104d29190611006565b6103e86104df9190611050565b6008819055506104f361096060201b60201c565b600a6104ff9190611006565b61271061050c9190611050565b600a8190555061052061096060201b60201c565b600a61052c9190611006565b6127106105399190611050565b600981905550600160135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f6105a761093860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160145f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060146017819055505f6018819055506018546017546108259190611091565b6016819055506014601a819055505f601b81905550601b54601a5461084a9190611091565b6019819055506003600d81905550610868338261096860201b60201c565b50611164565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cd9061111e565b60405180910390fd5b6109e75f8383610acc60201b60201c565b8060025f8282546109f89190611091565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a4b9190611091565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610aaf919061114b565b60405180910390a3610ac85f8383610ad160201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610b5157607f821691505b602082108103610b6457610b63610b0d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610bc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610b8b565b610bd08683610b8b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610c14610c0f610c0a84610be8565b610bf1565b610be8565b9050919050565b5f819050919050565b610c2d83610bfa565b610c41610c3982610c1b565b848454610b97565b825550505050565b5f90565b610c55610c49565b610c60818484610c24565b505050565b5b81811015610c8357610c785f82610c4d565b600181019050610c66565b5050565b601f821115610cc857610c9981610b6a565b610ca284610b7c565b81016020851015610cb1578190505b610cc5610cbd85610b7c565b830182610c65565b50505b505050565b5f82821c905092915050565b5f610ce85f1984600802610ccd565b1980831691505092915050565b5f610d008383610cd9565b9150826002028217905092915050565b610d1982610ad6565b67ffffffffffffffff811115610d3257610d31610ae0565b5b610d3c8254610b3a565b610d47828285610c87565b5f60209050601f831160018114610d78575f8415610d66578287015190505b610d708582610cf5565b865550610dd7565b601f198416610d8686610b6a565b5f5b82811015610dad57848901518255600182019150602085019450602081019050610d88565b86831015610dca5784890151610dc6601f891682610cd9565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e0c82610de3565b9050919050565b610e1c81610e02565b8114610e26575f80fd5b50565b5f81519050610e3781610e13565b92915050565b5f60208284031215610e5257610e51610ddf565b5b5f610e5f84828501610e29565b91505092915050565b610e7181610e02565b82525050565b5f604082019050610e8a5f830185610e68565b610e976020830184610e68565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610f2057808604811115610efc57610efb610e9e565b5b6001851615610f0b5780820291505b8081029050610f1985610ecb565b9450610ee0565b94509492505050565b5f82610f385760019050610ff3565b81610f45575f9050610ff3565b8160018114610f5b5760028114610f6557610f94565b6001915050610ff3565b60ff841115610f7757610f76610e9e565b5b8360020a915084821115610f8e57610f8d610e9e565b5b50610ff3565b5060208310610133831016604e8410600b8410161715610fc95782820a905083811115610fc457610fc3610e9e565b5b610ff3565b610fd68484846001610ed7565b92509050818404811115610fed57610fec610e9e565b5b81810290505b9392505050565b5f60ff82169050919050565b5f61101082610be8565b915061101b83610ffa565b92506110487fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610f29565b905092915050565b5f61105a82610be8565b915061106583610be8565b925082820261107381610be8565b9150828204841483151761108a57611089610e9e565b5b5092915050565b5f61109b82610be8565b91506110a683610be8565b92508282019050808211156110be576110bd610e9e565b5b92915050565b5f82825260208201905092915050565b7f45524332303a204e6f74206163636f756e7420213d20616464726573732830295f82015250565b5f6111086020836110c4565b9150611113826110d4565b602082019050919050565b5f6020820190508181035f830152611135816110fc565b9050919050565b61114581610be8565b82525050565b5f60208201905061115e5f83018461113c565b92915050565b614b20806111715f395ff3fe6080604052600436106102e7575f3560e01c806375f0a8741161018f578063b62496f5116100db578063c42c3f8811610094578063e27a55fe1161006e578063e27a55fe14610b08578063e96db1ef14610b32578063f2fde38b14610b5c578063fc0217a414610b84576102ee565b8063c42c3f8814610a7a578063c6a3064714610aa4578063dd62ed3e14610acc576102ee565b8063b62496f51461095e578063b79c18861461099a578063be691883146109c2578063c1cb02a4146109ec578063c31c9c0714610a14578063c410a11b14610a3e576102ee565b8063924de9b711610148578063a9059cbb11610122578063a9059cbb146108a6578063af8f26e7146108e2578063b38d229a1461090c578063b38d5ef414610936576102ee565b8063924de9b71461081857806395d89b4114610840578063a457c2d71461086a576102ee565b806375f0a8741461070c5780637d6731701461073657806380da454314610760578063896c2b8a1461079c5780638da5cb5b146107c45780638ea5220f146107ee576102ee565b8063395093511161024e57806367b740e9116102075780637070678b116101e15780637070678b1461067c57806370a08231146106a4578063715018a6146106e0578063751039fc146106f6576102ee565b806367b740e91461060257806368092bd91461062a578063685fbc6b14610652576102ee565b806339509351146104f857806341c787961461053457806345167f261461055e5780634a62bb6514610586578063544d1ec9146105b05780635df6e68e146105d8576102ee565b806323b872dd116102a057806323b872dd146103ec57806326991cc8146104285780632c81355e14610452578063313ce5671461047a57806333012411146104a4578063372b44b8146104ce576102ee565b806301b12312146102f257806306fdde031461031c578063095ea7b3146103465780630bd05b691461038257806318160ddd1461039857806318c34be1146103c2576102ee565b366102ee57005b5f80fd5b3480156102fd575f80fd5b50610306610bae565b604051610313919061350f565b60405180910390f35b348015610327575f80fd5b50610330610bb4565b60405161033d9190613598565b60405180910390f35b348015610351575f80fd5b5061036c6004803603810190610367919061364d565b610c43565b60405161037991906136a5565b60405180910390f35b34801561038d575f80fd5b50610396610c60565b005b3480156103a3575f80fd5b506103ac610d19565b6040516103b9919061350f565b60405180910390f35b3480156103cd575f80fd5b506103d6610d22565b6040516103e3919061350f565b60405180910390f35b3480156103f7575f80fd5b50610412600480360381019061040d91906136be565b610d28565b60405161041f91906136a5565b60405180910390f35b348015610433575f80fd5b5061043c610e1a565b604051610449919061371d565b60405180910390f35b34801561045d575f80fd5b5061047860048036038101906104739190613736565b610e3f565b005b348015610485575f80fd5b5061048e610f8c565b60405161049b919061377c565b60405180910390f35b3480156104af575f80fd5b506104b8610f94565b6040516104c5919061350f565b60405180910390f35b3480156104d9575f80fd5b506104e2610f9a565b6040516104ef919061350f565b60405180910390f35b348015610503575f80fd5b5061051e6004803603810190610519919061364d565b610fa0565b60405161052b91906136a5565b60405180910390f35b34801561053f575f80fd5b50610548611047565b60405161055591906136a5565b60405180910390f35b348015610569575f80fd5b50610584600480360381019061057f91906137bf565b611059565b005b348015610591575f80fd5b5061059a6111bc565b6040516105a791906136a5565b60405180910390f35b3480156105bb575f80fd5b506105d660048036038101906105d19190613736565b6111ce565b005b3480156105e3575f80fd5b506105ec6112f3565b6040516105f9919061350f565b60405180910390f35b34801561060d575f80fd5b5061062860048036038101906106239190613736565b6112f9565b005b348015610635575f80fd5b50610650600480360381019061064b91906137bf565b61141e565b005b34801561065d575f80fd5b506106666114f2565b604051610673919061350f565b60405180910390f35b348015610687575f80fd5b506106a2600480360381019061069d91906137bf565b6114f8565b005b3480156106af575f80fd5b506106ca60048036038101906106c591906137fd565b6115cc565b6040516106d7919061350f565b60405180910390f35b3480156106eb575f80fd5b506106f4611612565b005b348015610701575f80fd5b5061070a611699565b005b348015610717575f80fd5b50610720611730565b60405161072d919061371d565b60405180910390f35b348015610741575f80fd5b5061074a611756565b604051610757919061350f565b60405180910390f35b34801561076b575f80fd5b50610786600480360381019061078191906137fd565b61175c565b60405161079391906136a5565b60405180910390f35b3480156107a7575f80fd5b506107c260048036038101906107bd9190613736565b611779565b005b3480156107cf575f80fd5b506107d86117ff565b6040516107e5919061371d565b60405180910390f35b3480156107f9575f80fd5b50610802611827565b60405161080f919061371d565b60405180910390f35b348015610823575f80fd5b5061083e60048036038101906108399190613828565b61184c565b005b34801561084b575f80fd5b506108546118e4565b6040516108619190613598565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b919061364d565b611974565b60405161089d91906136a5565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c7919061364d565b611a5a565b6040516108d991906136a5565b60405180910390f35b3480156108ed575f80fd5b506108f6611a77565b604051610903919061350f565b60405180910390f35b348015610917575f80fd5b50610920611a7d565b60405161092d919061350f565b60405180910390f35b348015610941575f80fd5b5061095c60048036038101906109579190613853565b611a83565b005b348015610969575f80fd5b50610984600480360381019061097f91906137fd565b611b6d565b60405161099191906136a5565b60405180910390f35b3480156109a5575f80fd5b506109c060048036038101906109bb9190613853565b611b8a565b005b3480156109cd575f80fd5b506109d6611c74565b6040516109e3919061350f565b60405180910390f35b3480156109f7575f80fd5b50610a126004803603810190610a0d91906139d1565b611c7a565b005b348015610a1f575f80fd5b50610a28611d92565b604051610a359190613a86565b60405180910390f35b348015610a49575f80fd5b50610a646004803603810190610a5f91906137fd565b611db7565b604051610a7191906136a5565b60405180910390f35b348015610a85575f80fd5b50610a8e611dd4565b604051610a9b919061350f565b60405180910390f35b348015610aaf575f80fd5b50610aca6004803603810190610ac591906137bf565b611dda565b005b348015610ad7575f80fd5b50610af26004803603810190610aed9190613a9f565b611eae565b604051610aff919061350f565b60405180910390f35b348015610b13575f80fd5b50610b1c611f30565b604051610b29919061350f565b60405180910390f35b348015610b3d575f80fd5b50610b46611f36565b604051610b53919061350f565b60405180910390f35b348015610b67575f80fd5b50610b826004803603810190610b7d91906137fd565b611f3c565b005b348015610b8f575f80fd5b50610b98612032565b604051610ba591906136a5565b60405180910390f35b600d5481565b60605f8054610bc290613b0a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bee90613b0a565b8015610c395780601f10610c1057610100808354040283529160200191610c39565b820191905f5260205f20905b815481529060010190602001808311610c1c57829003601f168201915b5050505050905090565b5f610c56610c4f612044565b848461204b565b6001905092915050565b610c68612044565b73ffffffffffffffffffffffffffffffffffffffff16610c866117ff565b73ffffffffffffffffffffffffffffffffffffffff1614610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613b84565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600e5f6101000a81548160ff02191690831515021790555043600c81905550565b5f600254905090565b60105481565b5f610d3484848461220e565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d7b612044565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df190613bec565b60405180910390fd5b610e0e85610e06612044565b85840361204b565b60019150509392505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e47612044565b73ffffffffffffffffffffffffffffffffffffffff16610e656117ff565b73ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290613b84565b60405180910390fd5b620186a06001610ec9610d19565b610ed39190613c37565b610edd9190613ca5565b811015610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1690613d45565b60405180910390fd5b6103e86005610f2c610d19565b610f369190613c37565b610f409190613ca5565b811115610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7990613dd3565b60405180910390fd5b8060088190555050565b5f6012905090565b601a5481565b60115481565b5f61103d610fac612044565b848460045f610fb9612044565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110389190613df1565b61204b565b6001905092915050565b600e5f9054906101000a900460ff1681565b611061612044565b73ffffffffffffffffffffffffffffffffffffffff1661107f6117ff565b73ffffffffffffffffffffffffffffffffffffffff16146110d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cc90613b84565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115b90613e94565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60155f9054906101000a900460ff1681565b6111d6612044565b73ffffffffffffffffffffffffffffffffffffffff166111f46117ff565b73ffffffffffffffffffffffffffffffffffffffff161461124a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124190613b84565b60405180910390fd5b611252610f8c565b600a61125e9190613fe1565b6103e8600161126b610d19565b6112759190613c37565b61127f9190613ca5565b6112899190613ca5565b8110156112cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c29061409b565b60405180910390fd5b6112d3610f8c565b600a6112df9190613fe1565b816112ea9190613c37565b600a8190555050565b60195481565b611301612044565b73ffffffffffffffffffffffffffffffffffffffff1661131f6117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136c90613b84565b60405180910390fd5b61137d610f8c565b600a6113899190613fe1565b6103e86005611396610d19565b6113a09190613c37565b6113aa9190613ca5565b6113b49190613ca5565b8110156113f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ed90614129565b60405180910390fd5b6113fe610f8c565b600a61140a9190613fe1565b816114159190613c37565b60098190555050565b611426612044565b73ffffffffffffffffffffffffffffffffffffffff166114446117ff565b73ffffffffffffffffffffffffffffffffffffffff161461149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149190613b84565b60405180910390fd5b80601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60095481565b611500612044565b73ffffffffffffffffffffffffffffffffffffffff1661151e6117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156b90613b84565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61161a612044565b73ffffffffffffffffffffffffffffffffffffffff166116386117ff565b73ffffffffffffffffffffffffffffffffffffffff161461168e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168590613b84565b60405180910390fd5b6116975f612d62565b565b6116a1612044565b73ffffffffffffffffffffffffffffffffffffffff166116bf6117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c90613b84565b60405180910390fd5b5f60155f6101000a81548160ff021916908315150217905550565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6013602052805f5260405f205f915054906101000a900460ff1681565b611781612044565b73ffffffffffffffffffffffffffffffffffffffff1661179f6117ff565b73ffffffffffffffffffffffffffffffffffffffff16146117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90613b84565b60405180910390fd5b80600d8190555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611854612044565b73ffffffffffffffffffffffffffffffffffffffff166118726117ff565b73ffffffffffffffffffffffffffffffffffffffff16146118c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bf90613b84565b60405180910390fd5b80600e5f6101000a81548160ff02191690831515021790555050565b6060600180546118f390613b0a565b80601f016020809104026020016040519081016040528092919081815260200182805461191f90613b0a565b801561196a5780601f106119415761010080835404028352916020019161196a565b820191905f5260205f20905b81548152906001019060200180831161194d57829003601f168201915b5050505050905090565b5f8060045f611981612044565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3290614191565b60405180910390fd5b611a4f611a46612044565b8585840361204b565b600191505092915050565b5f611a6d611a66612044565b848461220e565b6001905092915050565b601b5481565b600c5481565b611a8b612044565b73ffffffffffffffffffffffffffffffffffffffff16611aa96117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af690613b84565b60405180910390fd5b81601a8190555080601b81905550601b54601a54611b1d9190613df1565b60198190555060326019541115611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b60906141f9565b60405180910390fd5b5050565b6014602052805f5260405f205f915054906101000a900460ff1681565b611b92612044565b73ffffffffffffffffffffffffffffffffffffffff16611bb06117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfd90613b84565b60405180910390fd5b8160178190555080601881905550601854601754611c249190613df1565b601681905550605f6016541115611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790614261565b60405180910390fd5b5050565b60185481565b611c82612044565b73ffffffffffffffffffffffffffffffffffffffff16611ca06117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90613b84565b60405180910390fd5b5f5b60018351611d06919061427f565b8111611d8d5781601d5f858481518110611d2357611d226142b2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611d85906142df565b915050611cf8565b505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6012602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b611de2612044565b73ffffffffffffffffffffffffffffffffffffffff16611e006117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d90613b84565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60165481565b60175481565b611f44612044565b73ffffffffffffffffffffffffffffffffffffffff16611f626117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faf90613b84565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201d90614370565b60405180910390fd5b61202f81612d62565b50565b600b5f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b0906143d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211e90614440565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612201919061350f565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361227c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612273906144a8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e190614510565b60405180910390fd5b601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236b90614578565b60405180910390fd5b601d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156123fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f5906145e0565b60405180910390fd5b5f81036124155761241083835f612e25565b612d5d565b60155f9054906101000a900460ff16156128f7576124316117ff565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561249f575061246f6117ff565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124d757505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612511575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125295750601c5f9054906101000a900460ff16155b156128f657600b5f9054906101000a900460ff1661261c5760135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806125dc575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61261b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261290614648565b60405180910390fd5b5b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126b9575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561276057600a54811115612703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fa906146d6565b60405180910390fd5b60095461270f836115cc565b8261271a9190613df1565b111561275b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127529061473e565b60405180910390fd5b6128f5565b60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127fd575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561284c57600a54811115612847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283e906147cc565b60405180910390fd5b6128f4565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166128f3576009546128a6836115cc565b826128b19190613df1565b11156128f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e99061473e565b60405180910390fd5b5b5b5b5b5b5f612901306115cc565b90505f6008548210159050600e5f9054906101000a900460ff1680156129245750805b801561293c5750601c5f9054906101000a900460ff16155b801561298f575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129e2575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a35575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a50575043600d54600c54612a4d9190613df1565b11155b15612a91576001601c5f6101000a81548160ff021916908315150217905550612a7761309d565b5f601c5f6101000a81548160ff0219169083151502179055505b5f601c5f9054906101000a900460ff1615905060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612b3f575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b48575f90505b5f8115612d4d5760145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ba657505f601654115b15612c3e57612bd36064612bc56016548861327890919063ffffffff16565b61328d90919063ffffffff16565b905060165460185482612be69190613c37565b612bf09190613ca5565b60115f828254612c009190613df1565b9250508190555060165460175482612c189190613c37565b612c229190613ca5565b60105f828254612c329190613df1565b92505081905550612d2a565b60145f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c9557505f601954115b15612d2957612cc26064612cb46019548861327890919063ffffffff16565b61328d90919063ffffffff16565b9050601954601b5482612cd59190613c37565b612cdf9190613ca5565b60115f828254612cef9190613df1565b92505081905550601954601a5482612d079190613c37565b612d119190613ca5565b60105f828254612d219190613df1565b925050819055505b5b5f811115612d3e57612d3d873083612e25565b5b8085612d4a919061427f565b94505b612d58878787612e25565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8a90614834565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef89061489c565b60405180910390fd5b612f0c8383836132a2565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8790614904565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546130209190613df1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613084919061350f565b60405180910390a36130978484846132a7565b50505050565b5f806011546010546130af9190613df1565b90505f6130bb306115cc565b90505f8214806130ca57505f81145b156130d757505050613276565b60056008546130e69190613c37565b8111156130ff5760056008546130fc9190613c37565b90505b5f47905061310c826132ac565b5f61312082476134e290919063ffffffff16565b90505f61314a8561313c6011548561327890919063ffffffff16565b61328d90919063ffffffff16565b9050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516131919061494f565b5f6040518083038185875af1925050503d805f81146131cb576040519150601f19603f3d011682016040523d82523d5f602084013e6131d0565b606091505b505080965050600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161321c9061494f565b5f6040518083038185875af1925050503d805f8114613256576040519150601f19603f3d011682016040523d82523d5f602084013e61325b565b606091505b5050809650505f6010819055505f6011819055505050505050505b565b5f81836132859190613c37565b905092915050565b5f818361329a9190613ca5565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156132c8576132c7613895565b5b6040519080825280602002602001820160405280156132f65781602001602082028036833780820191505090505b50905030815f8151811061330d5761330c6142b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133d59190614977565b816001815181106133e9576133e86142b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061344f3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461204b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016134b1959493929190614a92565b5f604051808303815f87803b1580156134c8575f80fd5b505af11580156134da573d5f803e3d5ffd5b505050505050565b5f81836134ef919061427f565b905092915050565b5f819050919050565b613509816134f7565b82525050565b5f6020820190506135225f830184613500565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61356a82613528565b6135748185613532565b9350613584818560208601613542565b61358d81613550565b840191505092915050565b5f6020820190508181035f8301526135b08184613560565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6135f2826135c9565b9050919050565b613602816135e8565b811461360c575f80fd5b50565b5f8135905061361d816135f9565b92915050565b61362c816134f7565b8114613636575f80fd5b50565b5f8135905061364781613623565b92915050565b5f8060408385031215613663576136626135c1565b5b5f6136708582860161360f565b925050602061368185828601613639565b9150509250929050565b5f8115159050919050565b61369f8161368b565b82525050565b5f6020820190506136b85f830184613696565b92915050565b5f805f606084860312156136d5576136d46135c1565b5b5f6136e28682870161360f565b93505060206136f38682870161360f565b925050604061370486828701613639565b9150509250925092565b613717816135e8565b82525050565b5f6020820190506137305f83018461370e565b92915050565b5f6020828403121561374b5761374a6135c1565b5b5f61375884828501613639565b91505092915050565b5f60ff82169050919050565b61377681613761565b82525050565b5f60208201905061378f5f83018461376d565b92915050565b61379e8161368b565b81146137a8575f80fd5b50565b5f813590506137b981613795565b92915050565b5f80604083850312156137d5576137d46135c1565b5b5f6137e28582860161360f565b92505060206137f3858286016137ab565b9150509250929050565b5f60208284031215613812576138116135c1565b5b5f61381f8482850161360f565b91505092915050565b5f6020828403121561383d5761383c6135c1565b5b5f61384a848285016137ab565b91505092915050565b5f8060408385031215613869576138686135c1565b5b5f61387685828601613639565b925050602061388785828601613639565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6138cb82613550565b810181811067ffffffffffffffff821117156138ea576138e9613895565b5b80604052505050565b5f6138fc6135b8565b905061390882826138c2565b919050565b5f67ffffffffffffffff82111561392757613926613895565b5b602082029050602081019050919050565b5f80fd5b5f61394e6139498461390d565b6138f3565b9050808382526020820190506020840283018581111561397157613970613938565b5b835b8181101561399a5780613986888261360f565b845260208401935050602081019050613973565b5050509392505050565b5f82601f8301126139b8576139b7613891565b5b81356139c884826020860161393c565b91505092915050565b5f80604083850312156139e7576139e66135c1565b5b5f83013567ffffffffffffffff811115613a0457613a036135c5565b5b613a10858286016139a4565b9250506020613a21858286016137ab565b9150509250929050565b5f819050919050565b5f613a4e613a49613a44846135c9565b613a2b565b6135c9565b9050919050565b5f613a5f82613a34565b9050919050565b5f613a7082613a55565b9050919050565b613a8081613a66565b82525050565b5f602082019050613a995f830184613a77565b92915050565b5f8060408385031215613ab557613ab46135c1565b5b5f613ac28582860161360f565b9250506020613ad38582860161360f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613b2157607f821691505b602082108103613b3457613b33613add565b5b50919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f613b6e600d83613532565b9150613b7982613b3a565b602082019050919050565b5f6020820190508181035f830152613b9b81613b62565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f613bd6601d83613532565b9150613be182613ba2565b602082019050919050565b5f6020820190508181035f830152613c0381613bca565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c41826134f7565b9150613c4c836134f7565b9250828202613c5a816134f7565b91508282048414831517613c7157613c70613c0a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613caf826134f7565b9150613cba836134f7565b925082613cca57613cc9613c78565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613d2f603583613532565b9150613d3a82613cd5565b604082019050919050565b5f6020820190508181035f830152613d5c81613d23565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613dbd603483613532565b9150613dc882613d63565b604082019050919050565b5f6020820190508181035f830152613dea81613db1565b9050919050565b5f613dfb826134f7565b9150613e06836134f7565b9250828201905080821115613e1e57613e1d613c0a565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613e7e603983613532565b9150613e8982613e24565b604082019050919050565b5f6020820190508181035f830152613eab81613e72565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115613f0757808604811115613ee357613ee2613c0a565b5b6001851615613ef25780820291505b8081029050613f0085613eb2565b9450613ec7565b94509492505050565b5f82613f1f5760019050613fda565b81613f2c575f9050613fda565b8160018114613f425760028114613f4c57613f7b565b6001915050613fda565b60ff841115613f5e57613f5d613c0a565b5b8360020a915084821115613f7557613f74613c0a565b5b50613fda565b5060208310610133831016604e8410600b8410161715613fb05782820a905083811115613fab57613faa613c0a565b5b613fda565b613fbd8484846001613ebe565b92509050818404811115613fd457613fd3613c0a565b5b81810290505b9392505050565b5f613feb826134f7565b9150613ff683613761565b92506140237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613f10565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f614085602f83613532565b91506140908261402b565b604082019050919050565b5f6020820190508181035f8301526140b281614079565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c5f8201527f6574206c6f776572207468616e20302e35250000000000000000000000000000602082015250565b5f614113603283613532565b915061411e826140b9565b604082019050919050565b5f6020820190508181035f83015261414081614107565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f61417b601f83613532565b915061418682614147565b602082019050919050565b5f6020820190508181035f8301526141a88161416f565b9050919050565b7f4d757374206b6565702074617820617420353025206f72206c657373000000005f82015250565b5f6141e3601c83613532565b91506141ee826141af565b602082019050919050565b5f6020820190508181035f830152614210816141d7565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c657373000000005f82015250565b5f61424b601c83613532565b915061425682614217565b602082019050919050565b5f6020820190508181035f8301526142788161423f565b9050919050565b5f614289826134f7565b9150614294836134f7565b92508282039050818111156142ac576142ab613c0a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6142e9826134f7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361431b5761431a613c0a565b5b600182019050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f61435a601183613532565b915061436582614326565b602082019050919050565b5f6020820190508181035f8301526143878161434e565b9050919050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f6143c2601e83613532565b91506143cd8261438e565b602082019050919050565b5f6020820190508181035f8301526143ef816143b6565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f61442a602083613532565b9150614435826143f6565b602082019050919050565b5f6020820190508181035f8301526144578161441e565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f614492601b83613532565b915061449d8261445e565b602082019050919050565b5f6020820190508181035f8301526144bf81614486565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f6144fa601983613532565b9150614505826144c6565b602082019050919050565b5f6020820190508181035f830152614527816144ee565b9050919050565b7f45524332303a2053656e64657220697320626c61636b6c6973746564000000005f82015250565b5f614562601c83613532565b915061456d8261452e565b602082019050919050565b5f6020820190508181035f83015261458f81614556565b9050919050565b7f45524332303a20526563656976657220697320626c61636b6c697374656400005f82015250565b5f6145ca601e83613532565b91506145d582614596565b602082019050919050565b5f6020820190508181035f8301526145f7816145be565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614632601683613532565b915061463d826145fe565b602082019050919050565b5f6020820190508181035f83015261465f81614626565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b5f6146c0603583613532565b91506146cb82614666565b604082019050919050565b5f6020820190508181035f8301526146ed816146b4565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614728601383613532565b9150614733826146f4565b602082019050919050565b5f6020820190508181035f8301526147558161471c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b5f6147b6603683613532565b91506147c18261475c565b604082019050919050565b5f6020820190508181035f8301526147e3816147aa565b9050919050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f61481e601d83613532565b9150614829826147ea565b602082019050919050565b5f6020820190508181035f83015261484b81614812565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f614886601b83613532565b915061489182614852565b602082019050919050565b5f6020820190508181035f8301526148b38161487a565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f6148ee602083613532565b91506148f9826148ba565b602082019050919050565b5f6020820190508181035f83015261491b816148e2565b9050919050565b5f81905092915050565b50565b5f61493a5f83614922565b91506149458261492c565b5f82019050919050565b5f6149598261492f565b9150819050919050565b5f81519050614971816135f9565b92915050565b5f6020828403121561498c5761498b6135c1565b5b5f61499984828501614963565b91505092915050565b5f819050919050565b5f6149c56149c06149bb846149a2565b613a2b565b6134f7565b9050919050565b6149d5816149ab565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614a0d816135e8565b82525050565b5f614a1e8383614a04565b60208301905092915050565b5f602082019050919050565b5f614a40826149db565b614a4a81856149e5565b9350614a55836149f5565b805f5b83811015614a85578151614a6c8882614a13565b9750614a7783614a2a565b925050600181019050614a58565b5085935050505092915050565b5f60a082019050614aa55f830188613500565b614ab260208301876149cc565b8181036040830152614ac48186614a36565b9050614ad3606083018561370e565b614ae06080830184613500565b969550505050505056fea26469706673582212200ce5f42f150433409e56eea7bdc6dc579d419440d2dbfc6ca9eb0687590f8b7664736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106102e7575f3560e01c806375f0a8741161018f578063b62496f5116100db578063c42c3f8811610094578063e27a55fe1161006e578063e27a55fe14610b08578063e96db1ef14610b32578063f2fde38b14610b5c578063fc0217a414610b84576102ee565b8063c42c3f8814610a7a578063c6a3064714610aa4578063dd62ed3e14610acc576102ee565b8063b62496f51461095e578063b79c18861461099a578063be691883146109c2578063c1cb02a4146109ec578063c31c9c0714610a14578063c410a11b14610a3e576102ee565b8063924de9b711610148578063a9059cbb11610122578063a9059cbb146108a6578063af8f26e7146108e2578063b38d229a1461090c578063b38d5ef414610936576102ee565b8063924de9b71461081857806395d89b4114610840578063a457c2d71461086a576102ee565b806375f0a8741461070c5780637d6731701461073657806380da454314610760578063896c2b8a1461079c5780638da5cb5b146107c45780638ea5220f146107ee576102ee565b8063395093511161024e57806367b740e9116102075780637070678b116101e15780637070678b1461067c57806370a08231146106a4578063715018a6146106e0578063751039fc146106f6576102ee565b806367b740e91461060257806368092bd91461062a578063685fbc6b14610652576102ee565b806339509351146104f857806341c787961461053457806345167f261461055e5780634a62bb6514610586578063544d1ec9146105b05780635df6e68e146105d8576102ee565b806323b872dd116102a057806323b872dd146103ec57806326991cc8146104285780632c81355e14610452578063313ce5671461047a57806333012411146104a4578063372b44b8146104ce576102ee565b806301b12312146102f257806306fdde031461031c578063095ea7b3146103465780630bd05b691461038257806318160ddd1461039857806318c34be1146103c2576102ee565b366102ee57005b5f80fd5b3480156102fd575f80fd5b50610306610bae565b604051610313919061350f565b60405180910390f35b348015610327575f80fd5b50610330610bb4565b60405161033d9190613598565b60405180910390f35b348015610351575f80fd5b5061036c6004803603810190610367919061364d565b610c43565b60405161037991906136a5565b60405180910390f35b34801561038d575f80fd5b50610396610c60565b005b3480156103a3575f80fd5b506103ac610d19565b6040516103b9919061350f565b60405180910390f35b3480156103cd575f80fd5b506103d6610d22565b6040516103e3919061350f565b60405180910390f35b3480156103f7575f80fd5b50610412600480360381019061040d91906136be565b610d28565b60405161041f91906136a5565b60405180910390f35b348015610433575f80fd5b5061043c610e1a565b604051610449919061371d565b60405180910390f35b34801561045d575f80fd5b5061047860048036038101906104739190613736565b610e3f565b005b348015610485575f80fd5b5061048e610f8c565b60405161049b919061377c565b60405180910390f35b3480156104af575f80fd5b506104b8610f94565b6040516104c5919061350f565b60405180910390f35b3480156104d9575f80fd5b506104e2610f9a565b6040516104ef919061350f565b60405180910390f35b348015610503575f80fd5b5061051e6004803603810190610519919061364d565b610fa0565b60405161052b91906136a5565b60405180910390f35b34801561053f575f80fd5b50610548611047565b60405161055591906136a5565b60405180910390f35b348015610569575f80fd5b50610584600480360381019061057f91906137bf565b611059565b005b348015610591575f80fd5b5061059a6111bc565b6040516105a791906136a5565b60405180910390f35b3480156105bb575f80fd5b506105d660048036038101906105d19190613736565b6111ce565b005b3480156105e3575f80fd5b506105ec6112f3565b6040516105f9919061350f565b60405180910390f35b34801561060d575f80fd5b5061062860048036038101906106239190613736565b6112f9565b005b348015610635575f80fd5b50610650600480360381019061064b91906137bf565b61141e565b005b34801561065d575f80fd5b506106666114f2565b604051610673919061350f565b60405180910390f35b348015610687575f80fd5b506106a2600480360381019061069d91906137bf565b6114f8565b005b3480156106af575f80fd5b506106ca60048036038101906106c591906137fd565b6115cc565b6040516106d7919061350f565b60405180910390f35b3480156106eb575f80fd5b506106f4611612565b005b348015610701575f80fd5b5061070a611699565b005b348015610717575f80fd5b50610720611730565b60405161072d919061371d565b60405180910390f35b348015610741575f80fd5b5061074a611756565b604051610757919061350f565b60405180910390f35b34801561076b575f80fd5b50610786600480360381019061078191906137fd565b61175c565b60405161079391906136a5565b60405180910390f35b3480156107a7575f80fd5b506107c260048036038101906107bd9190613736565b611779565b005b3480156107cf575f80fd5b506107d86117ff565b6040516107e5919061371d565b60405180910390f35b3480156107f9575f80fd5b50610802611827565b60405161080f919061371d565b60405180910390f35b348015610823575f80fd5b5061083e60048036038101906108399190613828565b61184c565b005b34801561084b575f80fd5b506108546118e4565b6040516108619190613598565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b919061364d565b611974565b60405161089d91906136a5565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c7919061364d565b611a5a565b6040516108d991906136a5565b60405180910390f35b3480156108ed575f80fd5b506108f6611a77565b604051610903919061350f565b60405180910390f35b348015610917575f80fd5b50610920611a7d565b60405161092d919061350f565b60405180910390f35b348015610941575f80fd5b5061095c60048036038101906109579190613853565b611a83565b005b348015610969575f80fd5b50610984600480360381019061097f91906137fd565b611b6d565b60405161099191906136a5565b60405180910390f35b3480156109a5575f80fd5b506109c060048036038101906109bb9190613853565b611b8a565b005b3480156109cd575f80fd5b506109d6611c74565b6040516109e3919061350f565b60405180910390f35b3480156109f7575f80fd5b50610a126004803603810190610a0d91906139d1565b611c7a565b005b348015610a1f575f80fd5b50610a28611d92565b604051610a359190613a86565b60405180910390f35b348015610a49575f80fd5b50610a646004803603810190610a5f91906137fd565b611db7565b604051610a7191906136a5565b60405180910390f35b348015610a85575f80fd5b50610a8e611dd4565b604051610a9b919061350f565b60405180910390f35b348015610aaf575f80fd5b50610aca6004803603810190610ac591906137bf565b611dda565b005b348015610ad7575f80fd5b50610af26004803603810190610aed9190613a9f565b611eae565b604051610aff919061350f565b60405180910390f35b348015610b13575f80fd5b50610b1c611f30565b604051610b29919061350f565b60405180910390f35b348015610b3d575f80fd5b50610b46611f36565b604051610b53919061350f565b60405180910390f35b348015610b67575f80fd5b50610b826004803603810190610b7d91906137fd565b611f3c565b005b348015610b8f575f80fd5b50610b98612032565b604051610ba591906136a5565b60405180910390f35b600d5481565b60605f8054610bc290613b0a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bee90613b0a565b8015610c395780601f10610c1057610100808354040283529160200191610c39565b820191905f5260205f20905b815481529060010190602001808311610c1c57829003601f168201915b5050505050905090565b5f610c56610c4f612044565b848461204b565b6001905092915050565b610c68612044565b73ffffffffffffffffffffffffffffffffffffffff16610c866117ff565b73ffffffffffffffffffffffffffffffffffffffff1614610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613b84565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600e5f6101000a81548160ff02191690831515021790555043600c81905550565b5f600254905090565b60105481565b5f610d3484848461220e565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d7b612044565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df190613bec565b60405180910390fd5b610e0e85610e06612044565b85840361204b565b60019150509392505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e47612044565b73ffffffffffffffffffffffffffffffffffffffff16610e656117ff565b73ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290613b84565b60405180910390fd5b620186a06001610ec9610d19565b610ed39190613c37565b610edd9190613ca5565b811015610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1690613d45565b60405180910390fd5b6103e86005610f2c610d19565b610f369190613c37565b610f409190613ca5565b811115610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7990613dd3565b60405180910390fd5b8060088190555050565b5f6012905090565b601a5481565b60115481565b5f61103d610fac612044565b848460045f610fb9612044565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110389190613df1565b61204b565b6001905092915050565b600e5f9054906101000a900460ff1681565b611061612044565b73ffffffffffffffffffffffffffffffffffffffff1661107f6117ff565b73ffffffffffffffffffffffffffffffffffffffff16146110d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cc90613b84565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115b90613e94565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60155f9054906101000a900460ff1681565b6111d6612044565b73ffffffffffffffffffffffffffffffffffffffff166111f46117ff565b73ffffffffffffffffffffffffffffffffffffffff161461124a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124190613b84565b60405180910390fd5b611252610f8c565b600a61125e9190613fe1565b6103e8600161126b610d19565b6112759190613c37565b61127f9190613ca5565b6112899190613ca5565b8110156112cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c29061409b565b60405180910390fd5b6112d3610f8c565b600a6112df9190613fe1565b816112ea9190613c37565b600a8190555050565b60195481565b611301612044565b73ffffffffffffffffffffffffffffffffffffffff1661131f6117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136c90613b84565b60405180910390fd5b61137d610f8c565b600a6113899190613fe1565b6103e86005611396610d19565b6113a09190613c37565b6113aa9190613ca5565b6113b49190613ca5565b8110156113f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ed90614129565b60405180910390fd5b6113fe610f8c565b600a61140a9190613fe1565b816114159190613c37565b60098190555050565b611426612044565b73ffffffffffffffffffffffffffffffffffffffff166114446117ff565b73ffffffffffffffffffffffffffffffffffffffff161461149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149190613b84565b60405180910390fd5b80601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60095481565b611500612044565b73ffffffffffffffffffffffffffffffffffffffff1661151e6117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156b90613b84565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61161a612044565b73ffffffffffffffffffffffffffffffffffffffff166116386117ff565b73ffffffffffffffffffffffffffffffffffffffff161461168e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168590613b84565b60405180910390fd5b6116975f612d62565b565b6116a1612044565b73ffffffffffffffffffffffffffffffffffffffff166116bf6117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c90613b84565b60405180910390fd5b5f60155f6101000a81548160ff021916908315150217905550565b600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6013602052805f5260405f205f915054906101000a900460ff1681565b611781612044565b73ffffffffffffffffffffffffffffffffffffffff1661179f6117ff565b73ffffffffffffffffffffffffffffffffffffffff16146117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90613b84565b60405180910390fd5b80600d8190555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611854612044565b73ffffffffffffffffffffffffffffffffffffffff166118726117ff565b73ffffffffffffffffffffffffffffffffffffffff16146118c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bf90613b84565b60405180910390fd5b80600e5f6101000a81548160ff02191690831515021790555050565b6060600180546118f390613b0a565b80601f016020809104026020016040519081016040528092919081815260200182805461191f90613b0a565b801561196a5780601f106119415761010080835404028352916020019161196a565b820191905f5260205f20905b81548152906001019060200180831161194d57829003601f168201915b5050505050905090565b5f8060045f611981612044565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3290614191565b60405180910390fd5b611a4f611a46612044565b8585840361204b565b600191505092915050565b5f611a6d611a66612044565b848461220e565b6001905092915050565b601b5481565b600c5481565b611a8b612044565b73ffffffffffffffffffffffffffffffffffffffff16611aa96117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af690613b84565b60405180910390fd5b81601a8190555080601b81905550601b54601a54611b1d9190613df1565b60198190555060326019541115611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b60906141f9565b60405180910390fd5b5050565b6014602052805f5260405f205f915054906101000a900460ff1681565b611b92612044565b73ffffffffffffffffffffffffffffffffffffffff16611bb06117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfd90613b84565b60405180910390fd5b8160178190555080601881905550601854601754611c249190613df1565b601681905550605f6016541115611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790614261565b60405180910390fd5b5050565b60185481565b611c82612044565b73ffffffffffffffffffffffffffffffffffffffff16611ca06117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90613b84565b60405180910390fd5b5f5b60018351611d06919061427f565b8111611d8d5781601d5f858481518110611d2357611d226142b2565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611d85906142df565b915050611cf8565b505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6012602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b611de2612044565b73ffffffffffffffffffffffffffffffffffffffff16611e006117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d90613b84565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60165481565b60175481565b611f44612044565b73ffffffffffffffffffffffffffffffffffffffff16611f626117ff565b73ffffffffffffffffffffffffffffffffffffffff1614611fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faf90613b84565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201d90614370565b60405180910390fd5b61202f81612d62565b50565b600b5f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b0906143d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211e90614440565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612201919061350f565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361227c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612273906144a8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e190614510565b60405180910390fd5b601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236b90614578565b60405180910390fd5b601d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156123fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f5906145e0565b60405180910390fd5b5f81036124155761241083835f612e25565b612d5d565b60155f9054906101000a900460ff16156128f7576124316117ff565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561249f575061246f6117ff565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124d757505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612511575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125295750601c5f9054906101000a900460ff16155b156128f657600b5f9054906101000a900460ff1661261c5760135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806125dc575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61261b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261290614648565b60405180910390fd5b5b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126b9575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561276057600a54811115612703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fa906146d6565b60405180910390fd5b60095461270f836115cc565b8261271a9190613df1565b111561275b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127529061473e565b60405180910390fd5b6128f5565b60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127fd575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561284c57600a54811115612847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283e906147cc565b60405180910390fd5b6128f4565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166128f3576009546128a6836115cc565b826128b19190613df1565b11156128f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e99061473e565b60405180910390fd5b5b5b5b5b5b5f612901306115cc565b90505f6008548210159050600e5f9054906101000a900460ff1680156129245750805b801561293c5750601c5f9054906101000a900460ff16155b801561298f575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129e2575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a35575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a50575043600d54600c54612a4d9190613df1565b11155b15612a91576001601c5f6101000a81548160ff021916908315150217905550612a7761309d565b5f601c5f6101000a81548160ff0219169083151502179055505b5f601c5f9054906101000a900460ff1615905060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612b3f575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b48575f90505b5f8115612d4d5760145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ba657505f601654115b15612c3e57612bd36064612bc56016548861327890919063ffffffff16565b61328d90919063ffffffff16565b905060165460185482612be69190613c37565b612bf09190613ca5565b60115f828254612c009190613df1565b9250508190555060165460175482612c189190613c37565b612c229190613ca5565b60105f828254612c329190613df1565b92505081905550612d2a565b60145f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c9557505f601954115b15612d2957612cc26064612cb46019548861327890919063ffffffff16565b61328d90919063ffffffff16565b9050601954601b5482612cd59190613c37565b612cdf9190613ca5565b60115f828254612cef9190613df1565b92505081905550601954601a5482612d079190613c37565b612d119190613ca5565b60105f828254612d219190613df1565b925050819055505b5b5f811115612d3e57612d3d873083612e25565b5b8085612d4a919061427f565b94505b612d58878787612e25565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8a90614834565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef89061489c565b60405180910390fd5b612f0c8383836132a2565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8790614904565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546130209190613df1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613084919061350f565b60405180910390a36130978484846132a7565b50505050565b5f806011546010546130af9190613df1565b90505f6130bb306115cc565b90505f8214806130ca57505f81145b156130d757505050613276565b60056008546130e69190613c37565b8111156130ff5760056008546130fc9190613c37565b90505b5f47905061310c826132ac565b5f61312082476134e290919063ffffffff16565b90505f61314a8561313c6011548561327890919063ffffffff16565b61328d90919063ffffffff16565b9050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516131919061494f565b5f6040518083038185875af1925050503d805f81146131cb576040519150601f19603f3d011682016040523d82523d5f602084013e6131d0565b606091505b505080965050600e60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161321c9061494f565b5f6040518083038185875af1925050503d805f8114613256576040519150601f19603f3d011682016040523d82523d5f602084013e61325b565b606091505b5050809650505f6010819055505f6011819055505050505050505b565b5f81836132859190613c37565b905092915050565b5f818361329a9190613ca5565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156132c8576132c7613895565b5b6040519080825280602002602001820160405280156132f65781602001602082028036833780820191505090505b50905030815f8151811061330d5761330c6142b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133d59190614977565b816001815181106133e9576133e86142b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061344f3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461204b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016134b1959493929190614a92565b5f604051808303815f87803b1580156134c8575f80fd5b505af11580156134da573d5f803e3d5ffd5b505050505050565b5f81836134ef919061427f565b905092915050565b5f819050919050565b613509816134f7565b82525050565b5f6020820190506135225f830184613500565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61356a82613528565b6135748185613532565b9350613584818560208601613542565b61358d81613550565b840191505092915050565b5f6020820190508181035f8301526135b08184613560565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6135f2826135c9565b9050919050565b613602816135e8565b811461360c575f80fd5b50565b5f8135905061361d816135f9565b92915050565b61362c816134f7565b8114613636575f80fd5b50565b5f8135905061364781613623565b92915050565b5f8060408385031215613663576136626135c1565b5b5f6136708582860161360f565b925050602061368185828601613639565b9150509250929050565b5f8115159050919050565b61369f8161368b565b82525050565b5f6020820190506136b85f830184613696565b92915050565b5f805f606084860312156136d5576136d46135c1565b5b5f6136e28682870161360f565b93505060206136f38682870161360f565b925050604061370486828701613639565b9150509250925092565b613717816135e8565b82525050565b5f6020820190506137305f83018461370e565b92915050565b5f6020828403121561374b5761374a6135c1565b5b5f61375884828501613639565b91505092915050565b5f60ff82169050919050565b61377681613761565b82525050565b5f60208201905061378f5f83018461376d565b92915050565b61379e8161368b565b81146137a8575f80fd5b50565b5f813590506137b981613795565b92915050565b5f80604083850312156137d5576137d46135c1565b5b5f6137e28582860161360f565b92505060206137f3858286016137ab565b9150509250929050565b5f60208284031215613812576138116135c1565b5b5f61381f8482850161360f565b91505092915050565b5f6020828403121561383d5761383c6135c1565b5b5f61384a848285016137ab565b91505092915050565b5f8060408385031215613869576138686135c1565b5b5f61387685828601613639565b925050602061388785828601613639565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6138cb82613550565b810181811067ffffffffffffffff821117156138ea576138e9613895565b5b80604052505050565b5f6138fc6135b8565b905061390882826138c2565b919050565b5f67ffffffffffffffff82111561392757613926613895565b5b602082029050602081019050919050565b5f80fd5b5f61394e6139498461390d565b6138f3565b9050808382526020820190506020840283018581111561397157613970613938565b5b835b8181101561399a5780613986888261360f565b845260208401935050602081019050613973565b5050509392505050565b5f82601f8301126139b8576139b7613891565b5b81356139c884826020860161393c565b91505092915050565b5f80604083850312156139e7576139e66135c1565b5b5f83013567ffffffffffffffff811115613a0457613a036135c5565b5b613a10858286016139a4565b9250506020613a21858286016137ab565b9150509250929050565b5f819050919050565b5f613a4e613a49613a44846135c9565b613a2b565b6135c9565b9050919050565b5f613a5f82613a34565b9050919050565b5f613a7082613a55565b9050919050565b613a8081613a66565b82525050565b5f602082019050613a995f830184613a77565b92915050565b5f8060408385031215613ab557613ab46135c1565b5b5f613ac28582860161360f565b9250506020613ad38582860161360f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613b2157607f821691505b602082108103613b3457613b33613add565b5b50919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f613b6e600d83613532565b9150613b7982613b3a565b602082019050919050565b5f6020820190508181035f830152613b9b81613b62565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f613bd6601d83613532565b9150613be182613ba2565b602082019050919050565b5f6020820190508181035f830152613c0381613bca565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c41826134f7565b9150613c4c836134f7565b9250828202613c5a816134f7565b91508282048414831517613c7157613c70613c0a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613caf826134f7565b9150613cba836134f7565b925082613cca57613cc9613c78565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613d2f603583613532565b9150613d3a82613cd5565b604082019050919050565b5f6020820190508181035f830152613d5c81613d23565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613dbd603483613532565b9150613dc882613d63565b604082019050919050565b5f6020820190508181035f830152613dea81613db1565b9050919050565b5f613dfb826134f7565b9150613e06836134f7565b9250828201905080821115613e1e57613e1d613c0a565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613e7e603983613532565b9150613e8982613e24565b604082019050919050565b5f6020820190508181035f830152613eab81613e72565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115613f0757808604811115613ee357613ee2613c0a565b5b6001851615613ef25780820291505b8081029050613f0085613eb2565b9450613ec7565b94509492505050565b5f82613f1f5760019050613fda565b81613f2c575f9050613fda565b8160018114613f425760028114613f4c57613f7b565b6001915050613fda565b60ff841115613f5e57613f5d613c0a565b5b8360020a915084821115613f7557613f74613c0a565b5b50613fda565b5060208310610133831016604e8410600b8410161715613fb05782820a905083811115613fab57613faa613c0a565b5b613fda565b613fbd8484846001613ebe565b92509050818404811115613fd457613fd3613c0a565b5b81810290505b9392505050565b5f613feb826134f7565b9150613ff683613761565b92506140237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613f10565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f614085602f83613532565b91506140908261402b565b604082019050919050565b5f6020820190508181035f8301526140b281614079565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c5f8201527f6574206c6f776572207468616e20302e35250000000000000000000000000000602082015250565b5f614113603283613532565b915061411e826140b9565b604082019050919050565b5f6020820190508181035f83015261414081614107565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f61417b601f83613532565b915061418682614147565b602082019050919050565b5f6020820190508181035f8301526141a88161416f565b9050919050565b7f4d757374206b6565702074617820617420353025206f72206c657373000000005f82015250565b5f6141e3601c83613532565b91506141ee826141af565b602082019050919050565b5f6020820190508181035f830152614210816141d7565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c657373000000005f82015250565b5f61424b601c83613532565b915061425682614217565b602082019050919050565b5f6020820190508181035f8301526142788161423f565b9050919050565b5f614289826134f7565b9150614294836134f7565b92508282039050818111156142ac576142ab613c0a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6142e9826134f7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361431b5761431a613c0a565b5b600182019050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f61435a601183613532565b915061436582614326565b602082019050919050565b5f6020820190508181035f8301526143878161434e565b9050919050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f6143c2601e83613532565b91506143cd8261438e565b602082019050919050565b5f6020820190508181035f8301526143ef816143b6565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f61442a602083613532565b9150614435826143f6565b602082019050919050565b5f6020820190508181035f8301526144578161441e565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f614492601b83613532565b915061449d8261445e565b602082019050919050565b5f6020820190508181035f8301526144bf81614486565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f6144fa601983613532565b9150614505826144c6565b602082019050919050565b5f6020820190508181035f830152614527816144ee565b9050919050565b7f45524332303a2053656e64657220697320626c61636b6c6973746564000000005f82015250565b5f614562601c83613532565b915061456d8261452e565b602082019050919050565b5f6020820190508181035f83015261458f81614556565b9050919050565b7f45524332303a20526563656976657220697320626c61636b6c697374656400005f82015250565b5f6145ca601e83613532565b91506145d582614596565b602082019050919050565b5f6020820190508181035f8301526145f7816145be565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614632601683613532565b915061463d826145fe565b602082019050919050565b5f6020820190508181035f83015261465f81614626565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b5f6146c0603583613532565b91506146cb82614666565b604082019050919050565b5f6020820190508181035f8301526146ed816146b4565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614728601383613532565b9150614733826146f4565b602082019050919050565b5f6020820190508181035f8301526147558161471c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b5f6147b6603683613532565b91506147c18261475c565b604082019050919050565b5f6020820190508181035f8301526147e3816147aa565b9050919050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f61481e601d83613532565b9150614829826147ea565b602082019050919050565b5f6020820190508181035f83015261484b81614812565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f614886601b83613532565b915061489182614852565b602082019050919050565b5f6020820190508181035f8301526148b38161487a565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f6148ee602083613532565b91506148f9826148ba565b602082019050919050565b5f6020820190508181035f83015261491b816148e2565b9050919050565b5f81905092915050565b50565b5f61493a5f83614922565b91506149458261492c565b5f82019050919050565b5f6149598261492f565b9150819050919050565b5f81519050614971816135f9565b92915050565b5f6020828403121561498c5761498b6135c1565b5b5f61499984828501614963565b91505092915050565b5f819050919050565b5f6149c56149c06149bb846149a2565b613a2b565b6134f7565b9050919050565b6149d5816149ab565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614a0d816135e8565b82525050565b5f614a1e8383614a04565b60208301905092915050565b5f602082019050919050565b5f614a40826149db565b614a4a81856149e5565b9350614a55836149f5565b805f5b83811015614a85578151614a6c8882614a13565b9750614a7783614a2a565b925050600181019050614a58565b5085935050505092915050565b5f60a082019050614aa55f830188613500565b614ab260208301876149cc565b8181036040830152614ac48186614a36565b9050614ad3606083018561370e565b614ae06080830184613500565b969550505050505056fea26469706673582212200ce5f42f150433409e56eea7bdc6dc579d419440d2dbfc6ca9eb0687590f8b7664736f6c634300081a0033

Deployed Bytecode Sourcemap

14173:10085:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14540:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9858:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10430:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16862:156;;;;;;;;;;;;;:::i;:::-;;10179:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14693:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11110:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14295:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17633:346;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10078:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15151:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14738:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11684:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14583:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19458:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14970:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18265:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15118:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17985:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18541:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14371:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17148:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10295:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1166:103;;;;;;;;;;;;;:::i;:::-;;17437:84;;;;;;;;;;;;;:::i;:::-;;14623:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14331:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14848:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17024:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;883:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14660:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17527:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9966:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11903:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11515:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15188:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14500:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18863:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14904:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19155:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15084:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18658:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14252:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14779:60;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14416:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17301:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10951:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15012:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15046:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;978:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14460:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14540:36;;;;:::o;9858:100::-;9912:13;9945:5;9938:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9858:100;:::o;10430:169::-;10513:4;10530:39;10539:12;:10;:12::i;:::-;10553:7;10562:6;10530:8;:39::i;:::-;10587:4;10580:11;;10430:169;;;;:::o;16862:156::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;16935:4:::1;16919:13;;:20;;;;;;;;;;;;;;;;;;16964:4;16950:11;;:18;;;;;;;;;;;;;;;;;;16998:12;16979:18;:31;;;;16862:156::o:0;10179:108::-;10240:7;10267:12;;10260:19;;10179:108;:::o;14693:38::-;;;;:::o;11110:397::-;11207:4;11224:27;11234:4;11240:2;11244:6;11224:9;:27::i;:::-;11262:16;11281:11;:17;11293:4;11281:17;;;;;;;;;;;;;;;:31;11299:12;:10;:12::i;:::-;11281:31;;;;;;;;;;;;;;;;11262:50;;11343:6;11331:8;:18;;11323:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11419:47;11428:4;11434:12;:10;:12::i;:::-;11459:6;11448:8;:17;11419:8;:47::i;:::-;11495:4;11488:11;;;11110:397;;;;;:::o;14295:23::-;;;;;;;;;;;;;:::o;17633:346::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17757:6:::1;17752:1;17736:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17735:28;;;;:::i;:::-;17725:6;:38;;17717:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;17872:4;17867:1;17851:13;:11;:13::i;:::-;:17;;;;:::i;:::-;17850:26;;;;:::i;:::-;17840:6;:36;;17832:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;17965:6;17944:18;:27;;;;17633:346:::0;:::o;10078:93::-;10136:5;10161:2;10154:9;;10078:93;:::o;15151:30::-;;;;:::o;14738:32::-;;;;:::o;11684:211::-;11770:4;11787:78;11796:12;:10;:12::i;:::-;11810:7;11856:8;11819:11;:25;11831:12;:10;:12::i;:::-;11819:25;;;;;;;;;;;;;;;:34;11845:7;11819:34;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;11787:8;:78::i;:::-;11883:4;11876:11;;11684:211;;;;:::o;14583:31::-;;;;;;;;;;;;;:::o;19458:247::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19577:8:::1;;;;;;;;;;;19569:16;;:4;:16;;::::0;19561:86:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19692:5;19658:25;:31;19684:4;19658:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19458:247:::0;;:::o;14970:33::-;;;;;;;;;;;;;:::o;18265:270::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18403:10:::1;:8;:10::i;:::-;18397:2;:16;;;;:::i;:::-;18388:4;18383:1;18367:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18366:26;;;;:::i;:::-;18365:49;;;;:::i;:::-;18355:6;:59;;18347:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;18516:10;:8;:10::i;:::-;18510:2;:16;;;;:::i;:::-;18500:6;:27;;;;:::i;:::-;18477:20;:50;;;;18265:270:::0;:::o;15118:26::-;;;;:::o;17985:274::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18121:10:::1;:8;:10::i;:::-;18115:2;:16;;;;:::i;:::-;18106:4;18101:1;18085:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18084:26;;;;:::i;:::-;18083:49;;;;:::i;:::-;18073:6;:59;;18065:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;18240:10;:8;:10::i;:::-;18234:2;:16;;;;:::i;:::-;18224:6;:27;;;;:::i;:::-;18198:23;:53;;;;17985:274:::0;:::o;18541:111::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18638:6:::1;18620:9;:15;18630:4;18620:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;18541:111:::0;;:::o;14371:38::-;;;;:::o;17148:147::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17282:5:::1;17245:28;:34;17274:4;17245:34;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17148:147:::0;;:::o;10295:127::-;10369:7;10396:9;:18;10406:7;10396:18;;;;;;;;;;;;;;;;10389:25;;10295:127;;;:::o;1166:103::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1231:30:::1;1258:1;1231:18;:30::i;:::-;1166:103::o:0;17437:84::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17508:5:::1;17491:14;;:22;;;;;;;;;;;;;;;;;;17437:84::o:0;14623:30::-;;;;;;;;;;;;;:::o;14331:33::-;;;;:::o;14848:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;17024:118::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17128:6:::1;17106:21;:28;;;;17024:118:::0;:::o;883:87::-;929:7;956:6;;;;;;;;;;;949:13;;883:87;:::o;14660:24::-;;;;;;;;;;;;;:::o;17527:100::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17612:7:::1;17598:11;;:21;;;;;;;;;;;;;;;;;;17527:100:::0;:::o;9966:104::-;10022:13;10055:7;10048:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9966:104;:::o;11903:360::-;11989:4;12006:16;12025:11;:25;12037:12;:10;:12::i;:::-;12025:25;;;;;;;;;;;;;;;:34;12051:7;12025:34;;;;;;;;;;;;;;;;12006:53;;12090:8;12078;:20;;12070:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12170:52;12179:12;:10;:12::i;:::-;12193:7;12213:8;12202;:19;12170:8;:52::i;:::-;12251:4;12244:11;;;11903:360;;;;:::o;11515:161::-;11594:4;11611:35;11621:12;:10;:12::i;:::-;11635:2;11639:6;11611:9;:35::i;:::-;11664:4;11657:11;;11515:161;;;;:::o;15188:24::-;;;;:::o;14500:33::-;;;;:::o;18863:284::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18974:12:::1;18956:15;:30;;;;19009:9;18997;:21;;;;19061:9;;19043:15;;:27;;;;:::i;:::-;19029:11;:41;;;;19104:2;19089:11;;:17;;19081:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;18863:284:::0;;:::o;14904:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;19155:291::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19268:12:::1;19249:16;:31;;;;19304:9;19291:10;:22;;;;19358:10;;19339:16;;:29;;;;:::i;:::-;19324:12;:44;;;;19403:2;19387:12;;:18;;19379:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;19155:291:::0;;:::o;15084:25::-;;;;:::o;18658:199::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18756:9:::1;18751:99;18787:1;18774:5;:12;:14;;;;:::i;:::-;18769:1;:19;18751:99;;18832:6;18810:9;:19;18820:5;18826:1;18820:8;;;;;;;;:::i;:::-;;;;;;;;18810:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18790:3;;;;;:::i;:::-;;;;18751:99;;;;18658:199:::0;;:::o;14252:36::-;;;;;;;;;;;;;:::o;14779:60::-;;;;;;;;;;;;;;;;;;;;;;:::o;14416:35::-;;;;:::o;17301:128::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17416:5:::1;17389:15;:24;17405:7;17389:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17301:128:::0;;:::o;10951:151::-;11040:7;11067:11;:18;11079:5;11067:18;;;;;;;;;;;;;;;:27;11086:7;11067:27;;;;;;;;;;;;;;;;11060:34;;10951:151;;;;:::o;15012:27::-;;;;:::o;15046:31::-;;;;:::o;978:180::-;825:12;:10;:12::i;:::-;814:23;;:7;:5;:7::i;:::-;:23;;;806:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1087:1:::1;1067:22;;:8;:22;;::::0;1059:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1122:28;1141:8;1122:18;:28::i;:::-;978:180:::0;:::o;14460:33::-;;;;;;;;;;;;;:::o;320:98::-;373:7;400:10;393:17;;320:98;:::o;10607:336::-;10726:1;10709:19;;:5;:19;;;10701:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10801:1;10782:21;;:7;:21;;;10774:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10881:6;10851:11;:18;10863:5;10851:18;;;;;;;;;;;;;;;:27;10870:7;10851:27;;;;;;;;;;;;;;;:36;;;;10919:7;10903:32;;10912:5;10903:32;;;10928:6;10903:32;;;;;;:::i;:::-;;;;;;;;10607:336;;;:::o;20611:3042::-;20759:1;20743:18;;:4;:18;;;20735:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;20826:1;20812:16;;:2;:16;;;20804:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;20878:9;:15;20888:4;20878:15;;;;;;;;;;;;;;;;;;;;;;;;;20877:16;20869:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;20946:9;:13;20956:2;20946:13;;;;;;;;;;;;;;;;;;;;;;;;;20945:14;20937:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;21021:1;21011:6;:11;21007:93;;21039:28;21055:4;21061:2;21065:1;21039:15;:28::i;:::-;21082:7;;21007:93;21116:14;;;;;;;;;;;21112:1078;;;21159:7;:5;:7::i;:::-;21151:15;;:4;:15;;;;:32;;;;;21176:7;:5;:7::i;:::-;21170:13;;:2;:13;;;;21151:32;:52;;;;;21201:1;21187:16;;:2;:16;;;;21151:52;:77;;;;;21221:6;21207:21;;:2;:21;;;;21151:77;:90;;;;;21233:8;;;;;;;;;;;21232:9;21151:90;21147:1032;;;21267:13;;;;;;;;;;;21262:142;;21313:15;:21;21329:4;21313:21;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;21338:15;:19;21354:2;21338:19;;;;;;;;;;;;;;;;;;;;;;;;;21313:44;21305:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;21262:142;21428:25;:31;21454:4;21428:31;;;;;;;;;;;;;;;;;;;;;;;;;:68;;;;;21464:28;:32;21493:2;21464:32;;;;;;;;;;;;;;;;;;;;;;;;;21463:33;21428:68;21424:740;;;21539:20;;21529:6;:30;;21521:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;21674:23;;21657:13;21667:2;21657:9;:13::i;:::-;21648:6;:22;;;;:::i;:::-;:49;;21640:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;21424:740;;;21768:25;:29;21794:2;21768:29;;;;;;;;;;;;;;;;;;;;;;;;;:68;;;;;21802:28;:34;21831:4;21802:34;;;;;;;;;;;;;;;;;;;;;;;;;21801:35;21768:68;21764:400;;;21879:20;;21869:6;:30;;21861:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;21764:400;;;22006:28;:32;22035:2;22006:32;;;;;;;;;;;;;;;;;;;;;;;;;22001:163;;22097:23;;22080:13;22090:2;22080:9;:13::i;:::-;22071:6;:22;;;;:::i;:::-;:49;;22063:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;22001:163;21764:400;21424:740;21147:1032;21112:1078;22200:20;22223:24;22241:4;22223:9;:24::i;:::-;22200:47;;22258:12;22289:18;;22273:12;:34;;22258:49;;22322:11;;;;;;;;;;;:36;;;;;22351:7;22322:36;:63;;;;;22377:8;;;;;;;;;;;22376:9;22322:63;:113;;;;;22404:25;:31;22430:4;22404:31;;;;;;;;;;;;;;;;;;;;;;;;;22403:32;22322:113;:153;;;;;22454:15;:21;22470:4;22454:21;;;;;;;;;;;;;;;;;;;;;;;;;22453:22;22322:153;:191;;;;;22494:15;:19;22510:2;22494:19;;;;;;;;;;;;;;;;;;;;;;;;;22493:20;22322:191;:264;;;;;22574:12;22549:21;;22530:18;;:40;;;;:::i;:::-;:56;;22322:264;22318:378;;;22624:4;22613:8;;:15;;;;;;;;;;;;;;;;;;22643:10;:8;:10::i;:::-;22679:5;22668:8;;:16;;;;;;;;;;;;;;;;;;22318:378;22708:8;22720;;;;;;;;;;;22719:9;22708:20;;22743:15;:21;22759:4;22743:21;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;22768:15;:19;22784:2;22768:19;;;;;;;;;;;;;;;;;;;;;;;;;22743:44;22739:74;;;22808:5;22802:11;;22739:74;22826:12;22857:3;22853:747;;;22881:25;:29;22907:2;22881:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;22929:1;22914:12;;:16;22881:49;22877:595;;;22958:33;22987:3;22958:24;22969:12;;22958:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;22951:40;;23053:12;;23039:10;;23032:4;:17;;;;:::i;:::-;23031:34;;;;:::i;:::-;23010:17;;:55;;;;;;;:::i;:::-;;;;;;;;23139:12;;23119:16;;23112:4;:23;;;;:::i;:::-;23111:40;;;;:::i;:::-;23084:23;;:67;;;;;;;:::i;:::-;;;;;;;;22877:595;;;23190:25;:31;23216:4;23190:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23239:1;23225:11;;:15;23190:50;23186:286;;;23268:32;23296:3;23268:23;23279:11;;23268:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;23261:39;;23361:11;;23348:9;;23341:4;:16;;;;:::i;:::-;23340:32;;;;:::i;:::-;23319:17;;:53;;;;;;;:::i;:::-;;;;;;;;23445:11;;23426:15;;23419:4;:22;;;;:::i;:::-;23418:38;;;;:::i;:::-;23391:23;;:65;;;;;;;:::i;:::-;;;;;;;;23186:286;22877:595;23497:1;23490:4;:8;23486:73;;;23517:42;23533:4;23547;23554;23517:15;:42::i;:::-;23486:73;23584:4;23574:14;;;;;:::i;:::-;;;22853:747;23612:33;23628:4;23634:2;23638:6;23612:15;:33::i;:::-;20724:2929;;;;20611:3042;;;;:::o;1277:191::-;1351:16;1370:6;;;;;;;;;;;1351:25;;1396:8;1387:6;;:17;;;;;;;;;;;;;;;;;;1451:8;1420:40;;1441:8;1420:40;;;;;;;;;;;;1340:128;1277:191;:::o;13407:607::-;13520:1;13504:18;;:4;:18;;;13496:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13589:1;13575:16;;:2;:16;;;13567:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13634:38;13655:4;13661:2;13665:6;13634:20;:38::i;:::-;13683:19;13705:9;:15;13715:4;13705:15;;;;;;;;;;;;;;;;13683:37;;13754:6;13739:11;:21;;13731:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13865:6;13851:11;:20;13833:9;:15;13843:4;13833:15;;;;;;;;;;;;;;;:38;;;;13910:6;13893:9;:13;13903:2;13893:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;13947:2;13932:26;;13941:4;13932:26;;;13951:6;13932:26;;;;;;:::i;:::-;;;;;;;;13969:37;13989:4;13995:2;13999:6;13969:19;:37::i;:::-;13485:529;13407:607;;;:::o;19711:892::-;19750:12;19773:25;19827:17;;19801:23;;:43;;;;:::i;:::-;19773:71;;19855:20;19878:24;19896:4;19878:9;:24::i;:::-;19855:47;;19938:1;19917:17;:22;:43;;;;19959:1;19943:12;:17;19917:43;19913:69;;;19975:7;;;;;19913:69;20034:1;20013:18;;:22;;;;:::i;:::-;19998:12;:37;19994:106;;;20087:1;20066:18;;:22;;;;:::i;:::-;20051:37;;19994:106;20112:22;20137:21;20112:46;;20169:30;20186:12;20169:16;:30::i;:::-;20212:18;20233:41;20259:14;20233:21;:25;;:41;;;;:::i;:::-;20212:62;;20285:17;20305:56;20343:17;20305:33;20320:17;;20305:10;:14;;:33;;;;:::i;:::-;:37;;:56;;;;:::i;:::-;20285:76;;20396:9;;;;;;;;;;;20388:23;;20419:9;20388:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20374:59;;;;;20466:15;;;;;;;;;;;20458:29;;20496:21;20458:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20444:79;;;;;20562:1;20536:23;:27;;;;20594:1;20574:17;:21;;;;19739:864;;;;;;19711:892;:::o;1499:98::-;1557:7;1588:1;1584;:5;;;;:::i;:::-;1577:12;;1499:98;;;;:::o;1883:::-;1941:7;1972:1;1968;:5;;;;:::i;:::-;1961:12;;1883:98;;;;:::o;13274:125::-;;;;:::o;14022:144::-;;;;:::o;23694:559::-;23815:21;23853:1;23839:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23815:40;;23884:4;23866;23871:1;23866:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23910:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23900:4;23905:1;23900:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;23940:52;23957:4;23972:10;;;;;;;;;;;23985:6;23940:8;:52::i;:::-;24031:10;;;;;;;;;;;:61;;;24107:6;24128:1;24172:4;24199;24219:15;24031:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23744:509;23694:559;:::o;2528:98::-;2586:7;2617:1;2613;:5;;;;:::i;:::-;2606:12;;2528:98;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:139::-;811:6;806:3;801;795:23;852:1;843:6;838:3;834:16;827:27;722:139;;;:::o;867:102::-;908:6;959:2;955:7;950:2;943:5;939:14;935:28;925:38;;867:102;;;:::o;975:377::-;1063:3;1091:39;1124:5;1091:39;:::i;:::-;1146:71;1210:6;1205:3;1146:71;:::i;:::-;1139:78;;1226:65;1284:6;1279:3;1272:4;1265:5;1261:16;1226:65;:::i;:::-;1316:29;1338:6;1316:29;:::i;:::-;1311:3;1307:39;1300:46;;1067:285;975:377;;;;:::o;1358:313::-;1471:4;1509:2;1498:9;1494:18;1486:26;;1558:9;1552:4;1548:20;1544:1;1533:9;1529:17;1522:47;1586:78;1659:4;1650:6;1586:78;:::i;:::-;1578:86;;1358:313;;;;:::o;1677:75::-;1710:6;1743:2;1737:9;1727:19;;1677:75;:::o;1758:117::-;1867:1;1864;1857:12;1881:117;1990:1;1987;1980:12;2004:126;2041:7;2081:42;2074:5;2070:54;2059:65;;2004:126;;;:::o;2136:96::-;2173:7;2202:24;2220:5;2202:24;:::i;:::-;2191:35;;2136:96;;;:::o;2238:122::-;2311:24;2329:5;2311:24;:::i;:::-;2304:5;2301:35;2291:63;;2350:1;2347;2340:12;2291:63;2238:122;:::o;2366:139::-;2412:5;2450:6;2437:20;2428:29;;2466:33;2493:5;2466:33;:::i;:::-;2366:139;;;;:::o;2511:122::-;2584:24;2602:5;2584:24;:::i;:::-;2577:5;2574:35;2564:63;;2623:1;2620;2613:12;2564:63;2511:122;:::o;2639:139::-;2685:5;2723:6;2710:20;2701:29;;2739:33;2766:5;2739:33;:::i;:::-;2639:139;;;;:::o;2784:474::-;2852:6;2860;2909:2;2897:9;2888:7;2884:23;2880:32;2877:119;;;2915:79;;:::i;:::-;2877:119;3035:1;3060:53;3105:7;3096:6;3085:9;3081:22;3060:53;:::i;:::-;3050:63;;3006:117;3162:2;3188:53;3233:7;3224:6;3213:9;3209:22;3188:53;:::i;:::-;3178:63;;3133:118;2784:474;;;;;:::o;3264:90::-;3298:7;3341:5;3334:13;3327:21;3316:32;;3264:90;;;:::o;3360:109::-;3441:21;3456:5;3441:21;:::i;:::-;3436:3;3429:34;3360:109;;:::o;3475:210::-;3562:4;3600:2;3589:9;3585:18;3577:26;;3613:65;3675:1;3664:9;3660:17;3651:6;3613:65;:::i;:::-;3475:210;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:118::-;4403:24;4421:5;4403:24;:::i;:::-;4398:3;4391:37;4316:118;;:::o;4440:222::-;4533:4;4571:2;4560:9;4556:18;4548:26;;4584:71;4652:1;4641:9;4637:17;4628:6;4584:71;:::i;:::-;4440:222;;;;:::o;4668:329::-;4727:6;4776:2;4764:9;4755:7;4751:23;4747:32;4744:119;;;4782:79;;:::i;:::-;4744:119;4902:1;4927:53;4972:7;4963:6;4952:9;4948:22;4927:53;:::i;:::-;4917:63;;4873:117;4668:329;;;;:::o;5003:86::-;5038:7;5078:4;5071:5;5067:16;5056:27;;5003:86;;;:::o;5095:112::-;5178:22;5194:5;5178:22;:::i;:::-;5173:3;5166:35;5095:112;;:::o;5213:214::-;5302:4;5340:2;5329:9;5325:18;5317:26;;5353:67;5417:1;5406:9;5402:17;5393:6;5353:67;:::i;:::-;5213:214;;;;:::o;5433:116::-;5503:21;5518:5;5503:21;:::i;:::-;5496:5;5493:32;5483:60;;5539:1;5536;5529:12;5483:60;5433:116;:::o;5555:133::-;5598:5;5636:6;5623:20;5614:29;;5652:30;5676:5;5652:30;:::i;:::-;5555:133;;;;:::o;5694:468::-;5759:6;5767;5816:2;5804:9;5795:7;5791:23;5787:32;5784:119;;;5822:79;;:::i;:::-;5784:119;5942:1;5967:53;6012:7;6003:6;5992:9;5988:22;5967:53;:::i;:::-;5957:63;;5913:117;6069:2;6095:50;6137:7;6128:6;6117:9;6113:22;6095:50;:::i;:::-;6085:60;;6040:115;5694:468;;;;;:::o;6168:329::-;6227:6;6276:2;6264:9;6255:7;6251:23;6247:32;6244:119;;;6282:79;;:::i;:::-;6244:119;6402:1;6427:53;6472:7;6463:6;6452:9;6448:22;6427:53;:::i;:::-;6417:63;;6373:117;6168:329;;;;:::o;6503:323::-;6559:6;6608:2;6596:9;6587:7;6583:23;6579:32;6576:119;;;6614:79;;:::i;:::-;6576:119;6734:1;6759:50;6801:7;6792:6;6781:9;6777:22;6759:50;:::i;:::-;6749:60;;6705:114;6503:323;;;;:::o;6832:474::-;6900:6;6908;6957:2;6945:9;6936:7;6932:23;6928:32;6925:119;;;6963:79;;:::i;:::-;6925:119;7083:1;7108:53;7153:7;7144:6;7133:9;7129:22;7108:53;:::i;:::-;7098:63;;7054:117;7210:2;7236:53;7281:7;7272:6;7261:9;7257:22;7236:53;:::i;:::-;7226:63;;7181:118;6832:474;;;;;:::o;7312:117::-;7421:1;7418;7411:12;7435:180;7483:77;7480:1;7473:88;7580:4;7577:1;7570:15;7604:4;7601:1;7594:15;7621:281;7704:27;7726:4;7704:27;:::i;:::-;7696:6;7692:40;7834:6;7822:10;7819:22;7798:18;7786:10;7783:34;7780:62;7777:88;;;7845:18;;:::i;:::-;7777:88;7885:10;7881:2;7874:22;7664:238;7621:281;;:::o;7908:129::-;7942:6;7969:20;;:::i;:::-;7959:30;;7998:33;8026:4;8018:6;7998:33;:::i;:::-;7908:129;;;:::o;8043:311::-;8120:4;8210:18;8202:6;8199:30;8196:56;;;8232:18;;:::i;:::-;8196:56;8282:4;8274:6;8270:17;8262:25;;8342:4;8336;8332:15;8324:23;;8043:311;;;:::o;8360:117::-;8469:1;8466;8459:12;8500:710;8596:5;8621:81;8637:64;8694:6;8637:64;:::i;:::-;8621:81;:::i;:::-;8612:90;;8722:5;8751:6;8744:5;8737:21;8785:4;8778:5;8774:16;8767:23;;8838:4;8830:6;8826:17;8818:6;8814:30;8867:3;8859:6;8856:15;8853:122;;;8886:79;;:::i;:::-;8853:122;9001:6;8984:220;9018:6;9013:3;9010:15;8984:220;;;9093:3;9122:37;9155:3;9143:10;9122:37;:::i;:::-;9117:3;9110:50;9189:4;9184:3;9180:14;9173:21;;9060:144;9044:4;9039:3;9035:14;9028:21;;8984:220;;;8988:21;8602:608;;8500:710;;;;;:::o;9233:370::-;9304:5;9353:3;9346:4;9338:6;9334:17;9330:27;9320:122;;9361:79;;:::i;:::-;9320:122;9478:6;9465:20;9503:94;9593:3;9585:6;9578:4;9570:6;9566:17;9503:94;:::i;:::-;9494:103;;9310:293;9233:370;;;;:::o;9609:678::-;9699:6;9707;9756:2;9744:9;9735:7;9731:23;9727:32;9724:119;;;9762:79;;:::i;:::-;9724:119;9910:1;9899:9;9895:17;9882:31;9940:18;9932:6;9929:30;9926:117;;;9962:79;;:::i;:::-;9926:117;10067:78;10137:7;10128:6;10117:9;10113:22;10067:78;:::i;:::-;10057:88;;9853:302;10194:2;10220:50;10262:7;10253:6;10242:9;10238:22;10220:50;:::i;:::-;10210:60;;10165:115;9609:678;;;;;:::o;10293:60::-;10321:3;10342:5;10335:12;;10293:60;;;:::o;10359:142::-;10409:9;10442:53;10460:34;10469:24;10487:5;10469:24;:::i;:::-;10460:34;:::i;:::-;10442:53;:::i;:::-;10429:66;;10359:142;;;:::o;10507:126::-;10557:9;10590:37;10621:5;10590:37;:::i;:::-;10577:50;;10507:126;;;:::o;10639:152::-;10715:9;10748:37;10779:5;10748:37;:::i;:::-;10735:50;;10639:152;;;:::o;10797:183::-;10910:63;10967:5;10910:63;:::i;:::-;10905:3;10898:76;10797:183;;:::o;10986:274::-;11105:4;11143:2;11132:9;11128:18;11120:26;;11156:97;11250:1;11239:9;11235:17;11226:6;11156:97;:::i;:::-;10986:274;;;;:::o;11266:474::-;11334:6;11342;11391:2;11379:9;11370:7;11366:23;11362:32;11359:119;;;11397:79;;:::i;:::-;11359:119;11517:1;11542:53;11587:7;11578:6;11567:9;11563:22;11542:53;:::i;:::-;11532:63;;11488:117;11644:2;11670:53;11715:7;11706:6;11695:9;11691:22;11670:53;:::i;:::-;11660:63;;11615:118;11266:474;;;;;:::o;11746:180::-;11794:77;11791:1;11784:88;11891:4;11888:1;11881:15;11915:4;11912:1;11905:15;11932:320;11976:6;12013:1;12007:4;12003:12;11993:22;;12060:1;12054:4;12050:12;12081:18;12071:81;;12137:4;12129:6;12125:17;12115:27;;12071:81;12199:2;12191:6;12188:14;12168:18;12165:38;12162:84;;12218:18;;:::i;:::-;12162:84;11983:269;11932:320;;;:::o;12258:163::-;12398:15;12394:1;12386:6;12382:14;12375:39;12258:163;:::o;12427:366::-;12569:3;12590:67;12654:2;12649:3;12590:67;:::i;:::-;12583:74;;12666:93;12755:3;12666:93;:::i;:::-;12784:2;12779:3;12775:12;12768:19;;12427:366;;;:::o;12799:419::-;12965:4;13003:2;12992:9;12988:18;12980:26;;13052:9;13046:4;13042:20;13038:1;13027:9;13023:17;13016:47;13080:131;13206:4;13080:131;:::i;:::-;13072:139;;12799:419;;;:::o;13224:179::-;13364:31;13360:1;13352:6;13348:14;13341:55;13224:179;:::o;13409:366::-;13551:3;13572:67;13636:2;13631:3;13572:67;:::i;:::-;13565:74;;13648:93;13737:3;13648:93;:::i;:::-;13766:2;13761:3;13757:12;13750:19;;13409:366;;;:::o;13781:419::-;13947:4;13985:2;13974:9;13970:18;13962:26;;14034:9;14028:4;14024:20;14020:1;14009:9;14005:17;13998:47;14062:131;14188:4;14062:131;:::i;:::-;14054:139;;13781:419;;;:::o;14206:180::-;14254:77;14251:1;14244:88;14351:4;14348:1;14341:15;14375:4;14372:1;14365:15;14392:410;14432:7;14455:20;14473:1;14455:20;:::i;:::-;14450:25;;14489:20;14507:1;14489:20;:::i;:::-;14484:25;;14544:1;14541;14537:9;14566:30;14584:11;14566:30;:::i;:::-;14555:41;;14745:1;14736:7;14732:15;14729:1;14726:22;14706:1;14699:9;14679:83;14656:139;;14775:18;;:::i;:::-;14656:139;14440:362;14392:410;;;;:::o;14808:180::-;14856:77;14853:1;14846:88;14953:4;14950:1;14943:15;14977:4;14974:1;14967:15;14994:185;15034:1;15051:20;15069:1;15051:20;:::i;:::-;15046:25;;15085:20;15103:1;15085:20;:::i;:::-;15080:25;;15124:1;15114:35;;15129:18;;:::i;:::-;15114:35;15171:1;15168;15164:9;15159:14;;14994:185;;;;:::o;15185:240::-;15325:34;15321:1;15313:6;15309:14;15302:58;15394:23;15389:2;15381:6;15377:15;15370:48;15185:240;:::o;15431:366::-;15573:3;15594:67;15658:2;15653:3;15594:67;:::i;:::-;15587:74;;15670:93;15759:3;15670:93;:::i;:::-;15788:2;15783:3;15779:12;15772:19;;15431:366;;;:::o;15803:419::-;15969:4;16007:2;15996:9;15992:18;15984:26;;16056:9;16050:4;16046:20;16042:1;16031:9;16027:17;16020:47;16084:131;16210:4;16084:131;:::i;:::-;16076:139;;15803:419;;;:::o;16228:239::-;16368:34;16364:1;16356:6;16352:14;16345:58;16437:22;16432:2;16424:6;16420:15;16413:47;16228:239;:::o;16473:366::-;16615:3;16636:67;16700:2;16695:3;16636:67;:::i;:::-;16629:74;;16712:93;16801:3;16712:93;:::i;:::-;16830:2;16825:3;16821:12;16814:19;;16473:366;;;:::o;16845:419::-;17011:4;17049:2;17038:9;17034:18;17026:26;;17098:9;17092:4;17088:20;17084:1;17073:9;17069:17;17062:47;17126:131;17252:4;17126:131;:::i;:::-;17118:139;;16845:419;;;:::o;17270:191::-;17310:3;17329:20;17347:1;17329:20;:::i;:::-;17324:25;;17363:20;17381:1;17363:20;:::i;:::-;17358:25;;17406:1;17403;17399:9;17392:16;;17427:3;17424:1;17421:10;17418:36;;;17434:18;;:::i;:::-;17418:36;17270:191;;;;:::o;17467:244::-;17607:34;17603:1;17595:6;17591:14;17584:58;17676:27;17671:2;17663:6;17659:15;17652:52;17467:244;:::o;17717:366::-;17859:3;17880:67;17944:2;17939:3;17880:67;:::i;:::-;17873:74;;17956:93;18045:3;17956:93;:::i;:::-;18074:2;18069:3;18065:12;18058:19;;17717:366;;;:::o;18089:419::-;18255:4;18293:2;18282:9;18278:18;18270:26;;18342:9;18336:4;18332:20;18328:1;18317:9;18313:17;18306:47;18370:131;18496:4;18370:131;:::i;:::-;18362:139;;18089:419;;;:::o;18514:102::-;18556:8;18603:5;18600:1;18596:13;18575:34;;18514:102;;;:::o;18622:848::-;18683:5;18690:4;18714:6;18705:15;;18738:5;18729:14;;18752:712;18773:1;18763:8;18760:15;18752:712;;;18868:4;18863:3;18859:14;18853:4;18850:24;18847:50;;;18877:18;;:::i;:::-;18847:50;18927:1;18917:8;18913:16;18910:451;;;19342:4;19335:5;19331:16;19322:25;;18910:451;19392:4;19386;19382:15;19374:23;;19422:32;19445:8;19422:32;:::i;:::-;19410:44;;18752:712;;;18622:848;;;;;;;:::o;19476:1073::-;19530:5;19721:8;19711:40;;19742:1;19733:10;;19744:5;;19711:40;19770:4;19760:36;;19787:1;19778:10;;19789:5;;19760:36;19856:4;19904:1;19899:27;;;;19940:1;19935:191;;;;19849:277;;19899:27;19917:1;19908:10;;19919:5;;;19935:191;19980:3;19970:8;19967:17;19964:43;;;19987:18;;:::i;:::-;19964:43;20036:8;20033:1;20029:16;20020:25;;20071:3;20064:5;20061:14;20058:40;;;20078:18;;:::i;:::-;20058:40;20111:5;;;19849:277;;20235:2;20225:8;20222:16;20216:3;20210:4;20207:13;20203:36;20185:2;20175:8;20172:16;20167:2;20161:4;20158:12;20154:35;20138:111;20135:246;;;20291:8;20285:4;20281:19;20272:28;;20326:3;20319:5;20316:14;20313:40;;;20333:18;;:::i;:::-;20313:40;20366:5;;20135:246;20406:42;20444:3;20434:8;20428:4;20425:1;20406:42;:::i;:::-;20391:57;;;;20480:4;20475:3;20471:14;20464:5;20461:25;20458:51;;;20489:18;;:::i;:::-;20458:51;20538:4;20531:5;20527:16;20518:25;;19476:1073;;;;;;:::o;20555:281::-;20613:5;20637:23;20655:4;20637:23;:::i;:::-;20629:31;;20681:25;20697:8;20681:25;:::i;:::-;20669:37;;20725:104;20762:66;20752:8;20746:4;20725:104;:::i;:::-;20716:113;;20555:281;;;;:::o;20842:234::-;20982:34;20978:1;20970:6;20966:14;20959:58;21051:17;21046:2;21038:6;21034:15;21027:42;20842:234;:::o;21082:366::-;21224:3;21245:67;21309:2;21304:3;21245:67;:::i;:::-;21238:74;;21321:93;21410:3;21321:93;:::i;:::-;21439:2;21434:3;21430:12;21423:19;;21082:366;;;:::o;21454:419::-;21620:4;21658:2;21647:9;21643:18;21635:26;;21707:9;21701:4;21697:20;21693:1;21682:9;21678:17;21671:47;21735:131;21861:4;21735:131;:::i;:::-;21727:139;;21454:419;;;:::o;21879:237::-;22019:34;22015:1;22007:6;22003:14;21996:58;22088:20;22083:2;22075:6;22071:15;22064:45;21879:237;:::o;22122:366::-;22264:3;22285:67;22349:2;22344:3;22285:67;:::i;:::-;22278:74;;22361:93;22450:3;22361:93;:::i;:::-;22479:2;22474:3;22470:12;22463:19;;22122:366;;;:::o;22494:419::-;22660:4;22698:2;22687:9;22683:18;22675:26;;22747:9;22741:4;22737:20;22733:1;22722:9;22718:17;22711:47;22775:131;22901:4;22775:131;:::i;:::-;22767:139;;22494:419;;;:::o;22919:181::-;23059:33;23055:1;23047:6;23043:14;23036:57;22919:181;:::o;23106:366::-;23248:3;23269:67;23333:2;23328:3;23269:67;:::i;:::-;23262:74;;23345:93;23434:3;23345:93;:::i;:::-;23463:2;23458:3;23454:12;23447:19;;23106:366;;;:::o;23478:419::-;23644:4;23682:2;23671:9;23667:18;23659:26;;23731:9;23725:4;23721:20;23717:1;23706:9;23702:17;23695:47;23759:131;23885:4;23759:131;:::i;:::-;23751:139;;23478:419;;;:::o;23903:178::-;24043:30;24039:1;24031:6;24027:14;24020:54;23903:178;:::o;24087:366::-;24229:3;24250:67;24314:2;24309:3;24250:67;:::i;:::-;24243:74;;24326:93;24415:3;24326:93;:::i;:::-;24444:2;24439:3;24435:12;24428:19;;24087:366;;;:::o;24459:419::-;24625:4;24663:2;24652:9;24648:18;24640:26;;24712:9;24706:4;24702:20;24698:1;24687:9;24683:17;24676:47;24740:131;24866:4;24740:131;:::i;:::-;24732:139;;24459:419;;;:::o;24884:178::-;25024:30;25020:1;25012:6;25008:14;25001:54;24884:178;:::o;25068:366::-;25210:3;25231:67;25295:2;25290:3;25231:67;:::i;:::-;25224:74;;25307:93;25396:3;25307:93;:::i;:::-;25425:2;25420:3;25416:12;25409:19;;25068:366;;;:::o;25440:419::-;25606:4;25644:2;25633:9;25629:18;25621:26;;25693:9;25687:4;25683:20;25679:1;25668:9;25664:17;25657:47;25721:131;25847:4;25721:131;:::i;:::-;25713:139;;25440:419;;;:::o;25865:194::-;25905:4;25925:20;25943:1;25925:20;:::i;:::-;25920:25;;25959:20;25977:1;25959:20;:::i;:::-;25954:25;;26003:1;26000;25996:9;25988:17;;26027:1;26021:4;26018:11;26015:37;;;26032:18;;:::i;:::-;26015:37;25865:194;;;;:::o;26065:180::-;26113:77;26110:1;26103:88;26210:4;26207:1;26200:15;26234:4;26231:1;26224:15;26251:233;26290:3;26313:24;26331:5;26313:24;:::i;:::-;26304:33;;26359:66;26352:5;26349:77;26346:103;;26429:18;;:::i;:::-;26346:103;26476:1;26469:5;26465:13;26458:20;;26251:233;;;:::o;26490:167::-;26630:19;26626:1;26618:6;26614:14;26607:43;26490:167;:::o;26663:366::-;26805:3;26826:67;26890:2;26885:3;26826:67;:::i;:::-;26819:74;;26902:93;26991:3;26902:93;:::i;:::-;27020:2;27015:3;27011:12;27004:19;;26663:366;;;:::o;27035:419::-;27201:4;27239:2;27228:9;27224:18;27216:26;;27288:9;27282:4;27278:20;27274:1;27263:9;27259:17;27252:47;27316:131;27442:4;27316:131;:::i;:::-;27308:139;;27035:419;;;:::o;27460:180::-;27600:32;27596:1;27588:6;27584:14;27577:56;27460:180;:::o;27646:366::-;27788:3;27809:67;27873:2;27868:3;27809:67;:::i;:::-;27802:74;;27885:93;27974:3;27885:93;:::i;:::-;28003:2;27998:3;27994:12;27987:19;;27646:366;;;:::o;28018:419::-;28184:4;28222:2;28211:9;28207:18;28199:26;;28271:9;28265:4;28261:20;28257:1;28246:9;28242:17;28235:47;28299:131;28425:4;28299:131;:::i;:::-;28291:139;;28018:419;;;:::o;28443:182::-;28583:34;28579:1;28571:6;28567:14;28560:58;28443:182;:::o;28631:366::-;28773:3;28794:67;28858:2;28853:3;28794:67;:::i;:::-;28787:74;;28870:93;28959:3;28870:93;:::i;:::-;28988:2;28983:3;28979:12;28972:19;;28631:366;;;:::o;29003:419::-;29169:4;29207:2;29196:9;29192:18;29184:26;;29256:9;29250:4;29246:20;29242:1;29231:9;29227:17;29220:47;29284:131;29410:4;29284:131;:::i;:::-;29276:139;;29003:419;;;:::o;29428:177::-;29568:29;29564:1;29556:6;29552:14;29545:53;29428:177;:::o;29611:366::-;29753:3;29774:67;29838:2;29833:3;29774:67;:::i;:::-;29767:74;;29850:93;29939:3;29850:93;:::i;:::-;29968:2;29963:3;29959:12;29952:19;;29611:366;;;:::o;29983:419::-;30149:4;30187:2;30176:9;30172:18;30164:26;;30236:9;30230:4;30226:20;30222:1;30211:9;30207:17;30200:47;30264:131;30390:4;30264:131;:::i;:::-;30256:139;;29983:419;;;:::o;30408:175::-;30548:27;30544:1;30536:6;30532:14;30525:51;30408:175;:::o;30589:366::-;30731:3;30752:67;30816:2;30811:3;30752:67;:::i;:::-;30745:74;;30828:93;30917:3;30828:93;:::i;:::-;30946:2;30941:3;30937:12;30930:19;;30589:366;;;:::o;30961:419::-;31127:4;31165:2;31154:9;31150:18;31142:26;;31214:9;31208:4;31204:20;31200:1;31189:9;31185:17;31178:47;31242:131;31368:4;31242:131;:::i;:::-;31234:139;;30961:419;;;:::o;31386:178::-;31526:30;31522:1;31514:6;31510:14;31503:54;31386:178;:::o;31570:366::-;31712:3;31733:67;31797:2;31792:3;31733:67;:::i;:::-;31726:74;;31809:93;31898:3;31809:93;:::i;:::-;31927:2;31922:3;31918:12;31911:19;;31570:366;;;:::o;31942:419::-;32108:4;32146:2;32135:9;32131:18;32123:26;;32195:9;32189:4;32185:20;32181:1;32170:9;32166:17;32159:47;32223:131;32349:4;32223:131;:::i;:::-;32215:139;;31942:419;;;:::o;32367:180::-;32507:32;32503:1;32495:6;32491:14;32484:56;32367:180;:::o;32553:366::-;32695:3;32716:67;32780:2;32775:3;32716:67;:::i;:::-;32709:74;;32792:93;32881:3;32792:93;:::i;:::-;32910:2;32905:3;32901:12;32894:19;;32553:366;;;:::o;32925:419::-;33091:4;33129:2;33118:9;33114:18;33106:26;;33178:9;33172:4;33168:20;33164:1;33153:9;33149:17;33142:47;33206:131;33332:4;33206:131;:::i;:::-;33198:139;;32925:419;;;:::o;33350:172::-;33490:24;33486:1;33478:6;33474:14;33467:48;33350:172;:::o;33528:366::-;33670:3;33691:67;33755:2;33750:3;33691:67;:::i;:::-;33684:74;;33767:93;33856:3;33767:93;:::i;:::-;33885:2;33880:3;33876:12;33869:19;;33528:366;;;:::o;33900:419::-;34066:4;34104:2;34093:9;34089:18;34081:26;;34153:9;34147:4;34143:20;34139:1;34128:9;34124:17;34117:47;34181:131;34307:4;34181:131;:::i;:::-;34173:139;;33900:419;;;:::o;34325:240::-;34465:34;34461:1;34453:6;34449:14;34442:58;34534:23;34529:2;34521:6;34517:15;34510:48;34325:240;:::o;34571:366::-;34713:3;34734:67;34798:2;34793:3;34734:67;:::i;:::-;34727:74;;34810:93;34899:3;34810:93;:::i;:::-;34928:2;34923:3;34919:12;34912:19;;34571:366;;;:::o;34943:419::-;35109:4;35147:2;35136:9;35132:18;35124:26;;35196:9;35190:4;35186:20;35182:1;35171:9;35167:17;35160:47;35224:131;35350:4;35224:131;:::i;:::-;35216:139;;34943:419;;;:::o;35368:169::-;35508:21;35504:1;35496:6;35492:14;35485:45;35368:169;:::o;35543:366::-;35685:3;35706:67;35770:2;35765:3;35706:67;:::i;:::-;35699:74;;35782:93;35871:3;35782:93;:::i;:::-;35900:2;35895:3;35891:12;35884:19;;35543:366;;;:::o;35915:419::-;36081:4;36119:2;36108:9;36104:18;36096:26;;36168:9;36162:4;36158:20;36154:1;36143:9;36139:17;36132:47;36196:131;36322:4;36196:131;:::i;:::-;36188:139;;35915:419;;;:::o;36340:241::-;36480:34;36476:1;36468:6;36464:14;36457:58;36549:24;36544:2;36536:6;36532:15;36525:49;36340:241;:::o;36587:366::-;36729:3;36750:67;36814:2;36809:3;36750:67;:::i;:::-;36743:74;;36826:93;36915:3;36826:93;:::i;:::-;36944:2;36939:3;36935:12;36928:19;;36587:366;;;:::o;36959:419::-;37125:4;37163:2;37152:9;37148:18;37140:26;;37212:9;37206:4;37202:20;37198:1;37187:9;37183:17;37176:47;37240:131;37366:4;37240:131;:::i;:::-;37232:139;;36959:419;;;:::o;37384:179::-;37524:31;37520:1;37512:6;37508:14;37501:55;37384:179;:::o;37569:366::-;37711:3;37732:67;37796:2;37791:3;37732:67;:::i;:::-;37725:74;;37808:93;37897:3;37808:93;:::i;:::-;37926:2;37921:3;37917:12;37910:19;;37569:366;;;:::o;37941:419::-;38107:4;38145:2;38134:9;38130:18;38122:26;;38194:9;38188:4;38184:20;38180:1;38169:9;38165:17;38158:47;38222:131;38348:4;38222:131;:::i;:::-;38214:139;;37941:419;;;:::o;38366:177::-;38506:29;38502:1;38494:6;38490:14;38483:53;38366:177;:::o;38549:366::-;38691:3;38712:67;38776:2;38771:3;38712:67;:::i;:::-;38705:74;;38788:93;38877:3;38788:93;:::i;:::-;38906:2;38901:3;38897:12;38890:19;;38549:366;;;:::o;38921:419::-;39087:4;39125:2;39114:9;39110:18;39102:26;;39174:9;39168:4;39164:20;39160:1;39149:9;39145:17;39138:47;39202:131;39328:4;39202:131;:::i;:::-;39194:139;;38921:419;;;:::o;39346:182::-;39486:34;39482:1;39474:6;39470:14;39463:58;39346:182;:::o;39534:366::-;39676:3;39697:67;39761:2;39756:3;39697:67;:::i;:::-;39690:74;;39773:93;39862:3;39773:93;:::i;:::-;39891:2;39886:3;39882:12;39875:19;;39534:366;;;:::o;39906:419::-;40072:4;40110:2;40099:9;40095:18;40087:26;;40159:9;40153:4;40149:20;40145:1;40134:9;40130:17;40123:47;40187:131;40313:4;40187:131;:::i;:::-;40179:139;;39906:419;;;:::o;40331:147::-;40432:11;40469:3;40454:18;;40331:147;;;;:::o;40484:114::-;;:::o;40604:398::-;40763:3;40784:83;40865:1;40860:3;40784:83;:::i;:::-;40777:90;;40876:93;40965:3;40876:93;:::i;:::-;40994:1;40989:3;40985:11;40978:18;;40604:398;;;:::o;41008:379::-;41192:3;41214:147;41357:3;41214:147;:::i;:::-;41207:154;;41378:3;41371:10;;41008:379;;;:::o;41393:143::-;41450:5;41481:6;41475:13;41466:22;;41497:33;41524:5;41497:33;:::i;:::-;41393:143;;;;:::o;41542:351::-;41612:6;41661:2;41649:9;41640:7;41636:23;41632:32;41629:119;;;41667:79;;:::i;:::-;41629:119;41787:1;41812:64;41868:7;41859:6;41848:9;41844:22;41812:64;:::i;:::-;41802:74;;41758:128;41542:351;;;;:::o;41899:85::-;41944:7;41973:5;41962:16;;41899:85;;;:::o;41990:158::-;42048:9;42081:61;42099:42;42108:32;42134:5;42108:32;:::i;:::-;42099:42;:::i;:::-;42081:61;:::i;:::-;42068:74;;41990:158;;;:::o;42154:147::-;42249:45;42288:5;42249:45;:::i;:::-;42244:3;42237:58;42154:147;;:::o;42307:114::-;42374:6;42408:5;42402:12;42392:22;;42307:114;;;:::o;42427:184::-;42526:11;42560:6;42555:3;42548:19;42600:4;42595:3;42591:14;42576:29;;42427:184;;;;:::o;42617:132::-;42684:4;42707:3;42699:11;;42737:4;42732:3;42728:14;42720:22;;42617:132;;;:::o;42755:108::-;42832:24;42850:5;42832:24;:::i;:::-;42827:3;42820:37;42755:108;;:::o;42869:179::-;42938:10;42959:46;43001:3;42993:6;42959:46;:::i;:::-;43037:4;43032:3;43028:14;43014:28;;42869:179;;;;:::o;43054:113::-;43124:4;43156;43151:3;43147:14;43139:22;;43054:113;;;:::o;43203:732::-;43322:3;43351:54;43399:5;43351:54;:::i;:::-;43421:86;43500:6;43495:3;43421:86;:::i;:::-;43414:93;;43531:56;43581:5;43531:56;:::i;:::-;43610:7;43641:1;43626:284;43651:6;43648:1;43645:13;43626:284;;;43727:6;43721:13;43754:63;43813:3;43798:13;43754:63;:::i;:::-;43747:70;;43840:60;43893:6;43840:60;:::i;:::-;43830:70;;43686:224;43673:1;43670;43666:9;43661:14;;43626:284;;;43630:14;43926:3;43919:10;;43327:608;;;43203:732;;;;:::o;43941:831::-;44204:4;44242:3;44231:9;44227:19;44219:27;;44256:71;44324:1;44313:9;44309:17;44300:6;44256:71;:::i;:::-;44337:80;44413:2;44402:9;44398:18;44389:6;44337:80;:::i;:::-;44464:9;44458:4;44454:20;44449:2;44438:9;44434:18;44427:48;44492:108;44595:4;44586:6;44492:108;:::i;:::-;44484:116;;44610:72;44678:2;44667:9;44663:18;44654:6;44610:72;:::i;:::-;44692:73;44760:3;44749:9;44745:19;44736:6;44692:73;:::i;:::-;43941:831;;;;;;;;:::o

Swarm Source

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