ETH Price: $2,453.71 (-1.90%)

Token

Moonopoly (MPLY)
 

Overview

Max Total Supply

50,000,000 MPLY

Holders

1,102

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
17,500 MPLY

Value
$0.00
0x49c44a25894f8ed7130506a4efd2a5c88d36c178
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Moonopoly is a utility-based token Built on the Ethereum network.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MPLY

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-21
*/

// SPDX-License-Identifier:MIT
pragma solidity ^0.8.10;

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

interface IUniSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniSwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract MPLY is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "Moonopoly"; // token name
    string private _symbol = "MPLY"; // token ticker
    uint8 private _decimals = 18; // token decimals

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    uint256 _buyLiquidityFee = 3;
    uint256 _buyMarketingFee = 2;

    uint256 _sellLiquidityFee = 8;
    uint256 _sellMarketingFee = 8;

    uint256 public totalBuyFee;
    uint256 public totalSellFee;

    address public marketingWallet = address(0xc372f1f1299eeD2225f27d12D499608654e1f245);
    address public liquidityReciever = address(0x9eeFC7E6f44970FfFc4CD140f0afd2c8Ee4CB73E);
    address private FundsRescueWallet;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isBot;

    uint256 private _totalSupply = 50_000_000 * 10**_decimals;

    uint256 denominator = 100;

    uint256 public minimumTokensBeforeSwap = 30_000 * 10**_decimals;
    uint256 public _maxTxAmount =  _totalSupply.mul(1).div(denominator);     //1%
    uint256 public _walletMax = _totalSupply.mul(1).div(denominator);    //1%

    bool public transferFeeEnabled = true;
    uint256 public initalTransferFee = 99; // 99% max fees limit on inital transfer
    uint256 public launchedAt; 
    uint256 public snipingTime = 60 seconds; //1 min snipping time
    bool public trading; 

    bool public EnableTxLimit = true;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    modifier onlyGuard() {
        require(msg.sender == FundsRescueWallet,"Error: Guarded!");
        _;
    }

    IUniSwapRouter public uniswapRouter;
    address public uniswapPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() {

        // //uniswap Swap
        IUniSwapRouter _dexRouter = IUniSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapPair = IUniSwapFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );

        uniswapRouter = _dexRouter;

        _allowances[address(this)][address(uniswapRouter)] = ~uint256(0);

        FundsRescueWallet = msg.sender;

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;
        isExcludedFromFee[address(uniswapRouter)] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(uniswapRouter)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(uniswapRouter)] = true;

        isMarketPair[address(uniswapPair)] = true;

        totalBuyFee = _buyLiquidityFee.add(_buyMarketingFee);
        totalSellFee = _sellLiquidityFee.add(_sellMarketingFee);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

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

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

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        require(!isBot[sender], "ERC20: Bot detected");
        require(!isBot[msg.sender], "ERC20: Bot detected");
        require(!isBot[tx.origin], "ERC20: Bot detected");

        if(inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            if (!isExcludedFromFee[sender] && !isExcludedFromFee[recipient]) {
                require(trading, "ERC20: trading not enable yet");

                if (
                    block.timestamp < launchedAt + snipingTime &&
                    sender != address(uniswapRouter)
                ) {
                    if (uniswapPair == sender) {
                        isBot[recipient] = true;
                    } else if (uniswapPair == recipient) {
                        isBot[sender] = true;
                    }
                }
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                swapAndLiquify(contractTokenBalance);
            }

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            } 
            
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Max Wallet Limit Exceeded!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }

    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isMarketPair[sender]) { //buy
                feeAmount = amount.mul(totalBuyFee).div(denominator);
            } 
            else if(isMarketPair[recipient]) { //sell
                feeAmount = amount.mul(totalSellFee).div(denominator);
            }
            else {
                if(transferFeeEnabled) {
                    feeAmount = amount.mul(initalTransferFee).div(denominator);
                }
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    function swapAndLiquify(uint contractBalance) private lockTheSwap {

        uint256 totalShares = totalBuyFee.add(totalSellFee);

        if(totalShares == 0) return;

        uint256 _liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        // uint256 _MarketingShare = _buyMarketingFee.add(_sellMarketingFee);

        uint256 tokensForLP = contractBalance.mul(_liquidityShare).div(totalShares).div(2);
        uint256 tokensForSwap = contractBalance.sub(tokensForLP);

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(_liquidityShare.div(2));
        
        uint256 amountETHLiquidity = amountReceived.mul(_liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity);

        if(amountETHMarketing > 0)
            payable(marketingWallet).transfer(amountETHMarketing);

        if(amountETHLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountETHLiquidity);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();

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

        // make the swap
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapRouter), tokenAmount);

        // add the liquidity
        uniswapRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            liquidityReciever,
            block.timestamp
        );
    }

    function enableSwapAndLiquifiy(bool _status) external onlyOwner {
        swapAndLiquifyEnabled = _status;
        emit SwapAndLiquifyEnabledUpdated(_status);
    }

    function setSwapThreshold(uint _newLimit) external onlyOwner {
        minimumTokensBeforeSwap = _newLimit;
    }

    function setBuyFee(uint _newLp, uint _newMarketing) external onlyOwner {
        _buyLiquidityFee = _newLp;
        _buyMarketingFee = _newMarketing;
        totalBuyFee = _buyLiquidityFee.add(_buyMarketingFee);
    }

    function setSellFee(uint _newLp, uint _newMarketing) external onlyOwner {
        _sellLiquidityFee = _newLp;
        _sellMarketingFee = _newMarketing;
        totalSellFee = _sellLiquidityFee.add(_sellMarketingFee);
    }

    function setMarketingWl(address _newWl) external onlyOwner {
        marketingWallet = _newWl;
    }

    function setLiquidityWl(address _newWl) external onlyOwner {
        liquidityReciever = _newWl;
    }

    function startTrading() external onlyOwner {
        require(!trading, "ERC20: Already Enabled");
        trading = true;
        launchedAt = block.timestamp;
    }

    //To Rescue Stucked Balance
    function rescueFunds() external onlyGuard { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    //To Rescue Stucked Tokens
    function rescueTokens(IERC20 adr,address recipient,uint amount) external onlyGuard {
        adr.transfer(recipient,amount);
    }

    function addOrRemoveBots(address[] calldata accounts, bool value)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < accounts.length; i++) {
            isBot[accounts[i]] = value;
        }
    }

    function disableTransferFee(bool _status) external onlyOwner {
        transferFeeEnabled = _status;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTxLimit = _status;
    }

    function enableWalletLimit(bool _status) external onlyOwner {
        checkWalletLimit = _status;
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        isExcludedFromFee[_adr] = _status;
    }

    function excludeWalletLimit(address _adr,bool _status) external onlyOwner {
        isWalletLimitExempt[_adr] = _status;
    }

    function excludeTxLimit(address _adr,bool _status) external onlyOwner {
        isTxLimitExempt[_adr] = _status;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }

    function setMarketPair(address _pair, bool _status) external onlyOwner {
        isMarketPair[_pair] = _status;
    }

    function setRouter(address _newRouter) external onlyOwner {
        uniswapRouter = IUniSwapRouter(_newRouter);
    }

}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"addOrRemoveBots","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"disableTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableSwapAndLiquifiy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initalTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"adr","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLp","type":"uint256"},{"internalType":"uint256","name":"_newMarketing","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWl","type":"address"}],"name":"setLiquidityWl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWl","type":"address"}],"name":"setMarketingWl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newRouter","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLp","type":"uint256"},{"internalType":"uint256","name":"_newMarketing","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLimit","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferFeeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600981526020017f4d6f6f6e6f706f6c790000000000000000000000000000000000000000000000815250600190816200004a919062001092565b506040518060400160405280600481526020017f4d504c59000000000000000000000000000000000000000000000000000000008152506002908162000091919062001092565b506012600360006101000a81548160ff021916908360ff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff16815250600360045560026005556008600655600860075573c372f1f1299eed2225f27d12d499608654e1f245600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739eefc7e6f44970fffc4cd140f0afd2c8ee4cb73e600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900460ff16600a620001f3919062001309565b6302faf0806200020491906200135a565b6014556064601555600360009054906101000a900460ff16600a6200022a919062001309565b6175306200023991906200135a565b6016556200027460155462000260600160145462000bac60201b6200265f1790919060201c565b62000c2f60201b620026d91790919060201c565b601755620002af6015546200029b600160145462000bac60201b6200265f1790919060201c565b62000c2f60201b620026d91790919060201c565b6018556001601960006101000a81548160ff0219169083151502179055506063601a55603c601c556001601d60016101000a81548160ff0219169083151502179055506001601d60026101000a81548160ff0219169083151502179055506001601e60156101000a81548160ff0219169083151502179055503480156200033557600080fd5b50620003566200034a62000c8160201b60201c565b62000c8960201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e191906200140f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000449573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046f91906200140f565b6040518363ffffffff1660e01b81526004016200048e92919062001452565b6020604051808303816000875af1158015620004ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d491906200140f565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000acb60055460045462000d4d60201b620027231790919060201c565b60088190555062000aef60075460065462000d4d60201b620027231790919060201c565b600981905550601454600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60145460405162000b9d919062001490565b60405180910390a3506200170c565b600080830362000bc0576000905062000c29565b6000828462000bd091906200135a565b905082848262000be19190620014dc565b1462000c24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c1b906200159b565b60405180910390fd5b809150505b92915050565b600062000c7983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000db060201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080828462000d5e9190620015bd565b90508381101562000da6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d9d9062001648565b60405180910390fd5b8091505092915050565b6000808311829062000dfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000df19190620016e8565b60405180910390fd5b506000838562000e0b9190620014dc565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e9a57607f821691505b60208210810362000eb05762000eaf62000e52565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000f1a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000edb565b62000f26868362000edb565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000f7362000f6d62000f678462000f3e565b62000f48565b62000f3e565b9050919050565b6000819050919050565b62000f8f8362000f52565b62000fa762000f9e8262000f7a565b84845462000ee8565b825550505050565b600090565b62000fbe62000faf565b62000fcb81848462000f84565b505050565b5b8181101562000ff35762000fe760008262000fb4565b60018101905062000fd1565b5050565b601f82111562001042576200100c8162000eb6565b620010178462000ecb565b8101602085101562001027578190505b6200103f620010368562000ecb565b83018262000fd0565b50505b505050565b600082821c905092915050565b6000620010676000198460080262001047565b1980831691505092915050565b600062001082838362001054565b9150826002028217905092915050565b6200109d8262000e18565b67ffffffffffffffff811115620010b957620010b862000e23565b5b620010c5825462000e81565b620010d282828562000ff7565b600060209050601f8311600181146200110a5760008415620010f5578287015190505b62001101858262001074565b86555062001171565b601f1984166200111a8662000eb6565b60005b8281101562001144578489015182556001820191506020850194506020810190506200111d565b8683101562001164578489015162001160601f89168262001054565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200120757808604811115620011df57620011de62001179565b5b6001851615620011ef5780820291505b8081029050620011ff85620011a8565b9450620011bf565b94509492505050565b600082620012225760019050620012f5565b81620012325760009050620012f5565b81600181146200124b576002811462001256576200128c565b6001915050620012f5565b60ff8411156200126b576200126a62001179565b5b8360020a91508482111562001285576200128462001179565b5b50620012f5565b5060208310610133831016604e8410600b8410161715620012c65782820a905083811115620012c057620012bf62001179565b5b620012f5565b620012d58484846001620011b5565b92509050818404811115620012ef57620012ee62001179565b5b81810290505b9392505050565b600060ff82169050919050565b6000620013168262000f3e565b91506200132383620012fc565b9250620013527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001210565b905092915050565b6000620013678262000f3e565b9150620013748362000f3e565b9250828202620013848162000f3e565b915082820484148315176200139e576200139d62001179565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620013d782620013aa565b9050919050565b620013e981620013ca565b8114620013f557600080fd5b50565b6000815190506200140981620013de565b92915050565b600060208284031215620014285762001427620013a5565b5b60006200143884828501620013f8565b91505092915050565b6200144c81620013ca565b82525050565b600060408201905062001469600083018562001441565b62001478602083018462001441565b9392505050565b6200148a8162000f3e565b82525050565b6000602082019050620014a760008301846200147f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620014e98262000f3e565b9150620014f68362000f3e565b925082620015095762001508620014ad565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006200158360218362001514565b9150620015908262001525565b604082019050919050565b60006020820190508181036000830152620015b68162001574565b9050919050565b6000620015ca8262000f3e565b9150620015d78362000f3e565b9250828201905080821115620015f257620015f162001179565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001630601b8362001514565b91506200163d82620015f8565b602082019050919050565b60006020820190508181036000830152620016638162001621565b9050919050565b60005b838110156200168a5780820151818401526020810190506200166d565b60008484015250505050565b6000601f19601f8301169050919050565b6000620016b48262000e18565b620016c0818562001514565b9350620016d28185602086016200166a565b620016dd8162001696565b840191505092915050565b60006020820190508181036000830152620017048184620016a7565b905092915050565b60805160a0516154686200174060003960008181610e8f01526112b201526000818161119601526112de01526154686000f3fe6080604052600436106103905760003560e01c8063807c2d9c116101dc578063c867d60b11610102578063e7d8320e116100a0578063f2fde38b1161006f578063f2fde38b14610d55578063f872858a14610d7e578063f92082b314610da9578063fb0ecfa414610dd257610397565b8063e7d8320e14610cab578063e7f1bfcb14610cd6578063ec44acf214610d01578063ee828db314610d2c57610397565b8063d2d7ad83116100dc578063d2d7ad8314610c03578063dd62ed3e14610c2e578063df8408fe14610c6b578063e6b2603b14610c9457610397565b8063c867d60b14610b74578063cea9d26f14610bb1578063d27e0e6a14610bda57610397565b8063a457c2d71161017a578063bf56b37111610149578063bf56b37114610acc578063c0d7865514610af7578063c16dd4a414610b20578063c816841b14610b4957610397565b8063a457c2d714610a00578063a9059cbb14610a3d578063ae85ade614610a7a578063bdcb340014610aa357610397565b806395d89b41116101b657806395d89b411461095657806398e944c8146109815780639d0014b1146109ac5780639d9241ec146109d557610397565b8063807c2d9c146108c35780638b42507f146108ee5780638da5cb5b1461092b57610397565b80634974d88f116102c15780636ac9a8701161025f578063735de9f71161022e578063735de9f71461081757806375f0a874146108425780637d1db4a51461086d5780637d99c66d1461089857610397565b80636ac9a8701461077157806370a082311461079a578063715018a6146107d7578063728d41c9146107ee57610397565b806359b107b91161029b57806359b107b9146106c95780635c85974f146106f45780635e42358c1461071d578063651a89871461074857610397565b80634974d88f146106385780634a74bb02146106615780635342acb41461068c57610397565b806327c8f8351161032e578063313ce56711610308578063313ce5671461055657806339509351146105815780633bbac579146105be5780633ecad271146105fb57610397565b806327c8f835146104e9578063293230b8146105145780632b112e491461052b57610397565b806310a60f021161036a57806310a60f021461042f57806318160ddd146104585780631f012b0a1461048357806323b872dd146104ac57610397565b806306fdde031461039c5780630930907b146103c7578063095ea7b3146103f257610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610dfb565b6040516103be9190614120565b60405180910390f35b3480156103d357600080fd5b506103dc610e8d565b6040516103e99190614183565b60405180910390f35b3480156103fe57600080fd5b506104196004803603810190610414919061420a565b610eb1565b6040516104269190614265565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190614311565b610ecf565b005b34801561046457600080fd5b5061046d610ff0565b60405161047a9190614380565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a5919061439b565b610ffa565b005b3480156104b857600080fd5b506104d360048036038101906104ce91906143c8565b6110ba565b6040516104e09190614265565b60405180910390f35b3480156104f557600080fd5b506104fe611194565b60405161050b9190614183565b60405180910390f35b34801561052057600080fd5b506105296111b8565b005b34801561053757600080fd5b506105406112a8565b60405161054d9190614380565b60405180910390f35b34801561056257600080fd5b5061056b611326565b6040516105789190614437565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a3919061420a565b61133d565b6040516105b59190614265565b60405180910390f35b3480156105ca57600080fd5b506105e560048036038101906105e0919061439b565b6113f0565b6040516105f29190614265565b60405180910390f35b34801561060757600080fd5b50610622600480360381019061061d919061439b565b611410565b60405161062f9190614265565b60405180910390f35b34801561064457600080fd5b5061065f600480360381019061065a9190614452565b611430565b005b34801561066d57600080fd5b506106766114c9565b6040516106839190614265565b60405180910390f35b34801561069857600080fd5b506106b360048036038101906106ae919061439b565b6114dc565b6040516106c09190614265565b60405180910390f35b3480156106d557600080fd5b506106de6114fc565b6040516106eb9190614380565b60405180910390f35b34801561070057600080fd5b5061071b6004803603810190610716919061447f565b611502565b005b34801561072957600080fd5b50610732611588565b60405161073f9190614265565b60405180910390f35b34801561075457600080fd5b5061076f600480360381019061076a91906144ac565b61159b565b005b34801561077d57600080fd5b50610798600480360381019061079391906144ec565b611672565b005b3480156107a657600080fd5b506107c160048036038101906107bc919061439b565b61171d565b6040516107ce9190614380565b60405180910390f35b3480156107e357600080fd5b506107ec611766565b005b3480156107fa57600080fd5b506108156004803603810190610810919061447f565b6117ee565b005b34801561082357600080fd5b5061082c611874565b604051610839919061458b565b60405180910390f35b34801561084e57600080fd5b5061085761189a565b6040516108649190614183565b60405180910390f35b34801561087957600080fd5b506108826118c0565b60405161088f9190614380565b60405180910390f35b3480156108a457600080fd5b506108ad6118c6565b6040516108ba9190614380565b60405180910390f35b3480156108cf57600080fd5b506108d86118cc565b6040516108e59190614380565b60405180910390f35b3480156108fa57600080fd5b506109156004803603810190610910919061439b565b6118d2565b6040516109229190614265565b60405180910390f35b34801561093757600080fd5b506109406118f2565b60405161094d9190614183565b60405180910390f35b34801561096257600080fd5b5061096b61191b565b6040516109789190614120565b60405180910390f35b34801561098d57600080fd5b506109966119ad565b6040516109a39190614183565b60405180910390f35b3480156109b857600080fd5b506109d360048036038101906109ce919061447f565b6119d3565b005b3480156109e157600080fd5b506109ea611a59565b6040516109f79190614380565b60405180910390f35b348015610a0c57600080fd5b50610a276004803603810190610a22919061420a565b611a5f565b604051610a349190614265565b60405180910390f35b348015610a4957600080fd5b50610a646004803603810190610a5f919061420a565b611b2c565b604051610a719190614265565b60405180910390f35b348015610a8657600080fd5b50610aa16004803603810190610a9c91906144ac565b611b4b565b005b348015610aaf57600080fd5b50610aca6004803603810190610ac59190614452565b611c22565b005b348015610ad857600080fd5b50610ae1611cf2565b604051610aee9190614380565b60405180910390f35b348015610b0357600080fd5b50610b1e6004803603810190610b19919061439b565b611cf8565b005b348015610b2c57600080fd5b50610b476004803603810190610b4291906144ac565b611db8565b005b348015610b5557600080fd5b50610b5e611e8f565b604051610b6b9190614183565b60405180910390f35b348015610b8057600080fd5b50610b9b6004803603810190610b96919061439b565b611eb5565b604051610ba89190614265565b60405180910390f35b348015610bbd57600080fd5b50610bd86004803603810190610bd391906145e4565b611ed5565b005b348015610be657600080fd5b50610c016004803603810190610bfc9190614452565b611fe9565b005b348015610c0f57600080fd5b50610c18612082565b604051610c259190614380565b60405180910390f35b348015610c3a57600080fd5b50610c556004803603810190610c509190614637565b612088565b604051610c629190614380565b60405180910390f35b348015610c7757600080fd5b50610c926004803603810190610c8d91906144ac565b61210f565b005b348015610ca057600080fd5b50610ca96121e6565b005b348015610cb757600080fd5b50610cc0612325565b604051610ccd9190614380565b60405180910390f35b348015610ce257600080fd5b50610ceb61232b565b604051610cf89190614265565b60405180910390f35b348015610d0d57600080fd5b50610d1661233e565b604051610d239190614265565b60405180910390f35b348015610d3857600080fd5b50610d536004803603810190610d4e9190614452565b612351565b005b348015610d6157600080fd5b50610d7c6004803603810190610d77919061439b565b6123ea565b005b348015610d8a57600080fd5b50610d936124e1565b604051610da09190614265565b60405180910390f35b348015610db557600080fd5b50610dd06004803603810190610dcb919061439b565b6124f4565b005b348015610dde57600080fd5b50610df96004803603810190610df491906144ec565b6125b4565b005b606060018054610e0a906146a6565b80601f0160208091040260200160405190810160405280929190818152602001828054610e36906146a6565b8015610e835780601f10610e5857610100808354040283529160200191610e83565b820191906000526020600020905b815481529060010190602001808311610e6657829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610ec5610ebe612781565b8484612789565b6001905092915050565b610ed7612781565b73ffffffffffffffffffffffffffffffffffffffff16610ef56118f2565b73ffffffffffffffffffffffffffffffffffffffff1614610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4290614723565b60405180910390fd5b60005b83839050811015610fea578160136000868685818110610f7157610f70614743565b5b9050602002016020810190610f86919061439b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fe2906147a1565b915050610f4e565b50505050565b6000601454905090565b611002612781565b73ffffffffffffffffffffffffffffffffffffffff166110206118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d90614723565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006110c7848484612952565b50611189846110d4612781565b611184856040518060600160405280602881526020016153e660289139600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061113a612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133879092919063ffffffff16565b612789565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6111c0612781565b73ffffffffffffffffffffffffffffffffffffffff166111de6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b90614723565b60405180910390fd5b601d60009054906101000a900460ff1615611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90614835565b60405180910390fd5b6001601d60006101000a81548160ff02191690831515021790555042601b81905550565b60006113216112d67f000000000000000000000000000000000000000000000000000000000000000061171d565b6113136113027f000000000000000000000000000000000000000000000000000000000000000061171d565b6014546133eb90919063ffffffff16565b6133eb90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006113e661134a612781565b846113e185600e600061135b612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b612789565b6001905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b611438612781565b73ffffffffffffffffffffffffffffffffffffffff166114566118f2565b73ffffffffffffffffffffffffffffffffffffffff16146114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390614723565b60405180910390fd5b80601d60026101000a81548160ff02191690831515021790555050565b601e60159054906101000a900460ff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b60085481565b61150a612781565b73ffffffffffffffffffffffffffffffffffffffff166115286118f2565b73ffffffffffffffffffffffffffffffffffffffff161461157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590614723565b60405180910390fd5b8060178190555050565b601d60019054906101000a900460ff1681565b6115a3612781565b73ffffffffffffffffffffffffffffffffffffffff166115c16118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e90614723565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61167a612781565b73ffffffffffffffffffffffffffffffffffffffff166116986118f2565b73ffffffffffffffffffffffffffffffffffffffff16146116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590614723565b60405180910390fd5b816006819055508060078190555061171360075460065461272390919063ffffffff16565b6009819055505050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61176e612781565b73ffffffffffffffffffffffffffffffffffffffff1661178c6118f2565b73ffffffffffffffffffffffffffffffffffffffff16146117e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d990614723565b60405180910390fd5b6117ec6000613435565b565b6117f6612781565b73ffffffffffffffffffffffffffffffffffffffff166118146118f2565b73ffffffffffffffffffffffffffffffffffffffff161461186a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186190614723565b60405180910390fd5b8060188190555050565b601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b601c5481565b60185481565b60126020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461192a906146a6565b80601f0160208091040260200160405190810160405280929190818152602001828054611956906146a6565b80156119a35780601f10611978576101008083540402835291602001916119a3565b820191906000526020600020905b81548152906001019060200180831161198657829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119db612781565b73ffffffffffffffffffffffffffffffffffffffff166119f96118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4690614723565b60405180910390fd5b8060168190555050565b60095481565b6000611b22611a6c612781565b84611b1d8560405180606001604052806025815260200161540e60259139600e6000611a96612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133879092919063ffffffff16565b612789565b6001905092915050565b6000611b40611b39612781565b8484612952565b506001905092915050565b611b53612781565b73ffffffffffffffffffffffffffffffffffffffff16611b716118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbe90614723565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611c2a612781565b73ffffffffffffffffffffffffffffffffffffffff16611c486118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9590614723565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611ce79190614265565b60405180910390a150565b601b5481565b611d00612781565b73ffffffffffffffffffffffffffffffffffffffff16611d1e6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6b90614723565b60405180910390fd5b80601d60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611dc0612781565b73ffffffffffffffffffffffffffffffffffffffff16611dde6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b90614723565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60116020528060005260406000206000915054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c906148a1565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611fa09291906148c1565b6020604051808303816000875af1158015611fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe391906148ff565b50505050565b611ff1612781565b73ffffffffffffffffffffffffffffffffffffffff1661200f6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614612065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205c90614723565b60405180910390fd5b80601960006101000a81548160ff02191690831515021790555050565b60165481565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612117612781565b73ffffffffffffffffffffffffffffffffffffffff166121356118f2565b73ffffffffffffffffffffffffffffffffffffffff161461218b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218290614723565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d906148a1565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161229c9061495d565b60006040518083038185875af1925050503d80600081146122d9576040519150601f19603f3d011682016040523d82523d6000602084013e6122de565b606091505b5050905080612322576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612319906149be565b60405180910390fd5b50565b601a5481565b601960009054906101000a900460ff1681565b601d60009054906101000a900460ff1681565b612359612781565b73ffffffffffffffffffffffffffffffffffffffff166123776118f2565b73ffffffffffffffffffffffffffffffffffffffff16146123cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c490614723565b60405180910390fd5b80601d60016101000a81548160ff02191690831515021790555050565b6123f2612781565b73ffffffffffffffffffffffffffffffffffffffff166124106118f2565b73ffffffffffffffffffffffffffffffffffffffff1614612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614723565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cc90614a50565b60405180910390fd5b6124de81613435565b50565b601d60029054906101000a900460ff1681565b6124fc612781565b73ffffffffffffffffffffffffffffffffffffffff1661251a6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614612570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256790614723565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6125bc612781565b73ffffffffffffffffffffffffffffffffffffffff166125da6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262790614723565b60405180910390fd5b816004819055508060058190555061265560055460045461272390919063ffffffff16565b6008819055505050565b600080830361267157600090506126d3565b6000828461267f9190614a70565b905082848261268e9190614ae1565b146126ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c590614b84565b60405180910390fd5b809150505b92915050565b600061271b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506134f9565b905092915050565b60008082846127329190614ba4565b905083811015612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e90614c24565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ef90614cb6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285e90614d48565b60405180910390fd5b80600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129459190614380565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036129c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b990614dda565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2890614e6c565b60405180910390fd5b60008211612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b90614efe565b60405180910390fd5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af890614f6a565b60405180910390fd5b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8590614f6a565b60405180910390fd5b601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1290614f6a565b60405180910390fd5b601e60149054906101000a900460ff1615612c4257612c3b84848461355c565b9050613380565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ce65750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f0e57601d60009054906101000a900460ff16612d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3190614fd6565b60405180910390fd5b601c54601b54612d4a9190614ba4565b42108015612da65750601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612f0d578373ffffffffffffffffffffffffffffffffffffffff16601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612e5d576001601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612f0c565b8273ffffffffffffffffffffffffffffffffffffffff16601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612f0b576001601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b6000612f193061171d565b905060006016548210159050808015612f3f5750601e60149054906101000a900460ff16155b8015612f955750601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612fad5750601e60159054906101000a900460ff165b15612fbc57612fbb8261372f565b5b601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130605750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130785750601d60019054906101000a900460ff165b156130c3576017548411156130c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b990615068565b60405180910390fd5b5b61314c846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133879092919063ffffffff16565b600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061319b878761393e565b6131af576131aa878787613aa9565b6131b1565b845b9050601d60029054906101000a900460ff1680156132195750601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561327e5760185461323c8261322e8961171d565b61272390919063ffffffff16565b111561327d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613274906150d4565b60405180910390fd5b5b6132d081600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133709190614380565b60405180910390a3600193505050505b9392505050565b60008383111582906133cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c69190614120565b60405180910390fd5b50600083856133de91906150f4565b9050809150509392505050565b600061342d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613387565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008083118290613540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135379190614120565b60405180910390fd5b506000838561354f9190614ae1565b9050809150509392505050565b60006135e7826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133879092919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061367c82600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161371c9190614380565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff021916908315150217905550600061376360095460085461272390919063ffffffff16565b9050600081036137735750613920565b600061378c60065460045461272390919063ffffffff16565b905060006137c860026137ba856137ac868961265f90919063ffffffff16565b6126d990919063ffffffff16565b6126d990919063ffffffff16565b905060006137df82866133eb90919063ffffffff16565b905060004790506137ef82613d14565b600061380482476133eb90919063ffffffff16565b9050600061382e61381f6002886126d990919063ffffffff16565b886133eb90919063ffffffff16565b9050600061386a600261385c8461384e8b8861265f90919063ffffffff16565b6126d990919063ffffffff16565b6126d990919063ffffffff16565b9050600061388182856133eb90919063ffffffff16565b905060008111156138f657600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156138f4573d6000803e3d6000fd5b505b6000821180156139065750600087115b15613916576139158783613f90565b5b5050505050505050505b6000601e60146101000a81548160ff02191690831515021790555050565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139e15750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139ef5760019050613aa3565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a905750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613a9e5760009050613aa3565b600090505b92915050565b600080601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b2e57613b27601554613b196008548661265f90919063ffffffff16565b6126d990919063ffffffff16565b9050613bf3565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613bb057613ba9601554613b9b6009548661265f90919063ffffffff16565b6126d990919063ffffffff16565b9050613bf2565b601960009054906101000a900460ff1615613bf157613bee601554613be0601a548661265f90919063ffffffff16565b6126d990919063ffffffff16565b90505b5b5b6000811115613cf757613c4e81600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613cee9190614380565b60405180910390a35b613d0a81846133eb90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115613d3157613d30615128565b5b604051908082528060200260200182016040528015613d5f5781602001602082028036833780820191505090505b5090503081600081518110613d7757613d76614743565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e42919061516c565b81600181518110613e5657613e55614743565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ebd30601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612789565b601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f21959493929190615292565b600060405180830381600087803b158015613f3b57600080fd5b505af1158015613f4f573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613f849291906152ec565b60405180910390a15050565b613fbd30601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612789565b601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016140469695949392919061531c565b60606040518083038185885af1158015614064573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140899190615392565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140ca5780820151818401526020810190506140af565b60008484015250505050565b6000601f19601f8301169050919050565b60006140f282614090565b6140fc818561409b565b935061410c8185602086016140ac565b614115816140d6565b840191505092915050565b6000602082019050818103600083015261413a81846140e7565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061416d82614142565b9050919050565b61417d81614162565b82525050565b60006020820190506141986000830184614174565b92915050565b600080fd5b600080fd5b6141b181614162565b81146141bc57600080fd5b50565b6000813590506141ce816141a8565b92915050565b6000819050919050565b6141e7816141d4565b81146141f257600080fd5b50565b600081359050614204816141de565b92915050565b600080604083850312156142215761422061419e565b5b600061422f858286016141bf565b9250506020614240858286016141f5565b9150509250929050565b60008115159050919050565b61425f8161424a565b82525050565b600060208201905061427a6000830184614256565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126142a5576142a4614280565b5b8235905067ffffffffffffffff8111156142c2576142c1614285565b5b6020830191508360208202830111156142de576142dd61428a565b5b9250929050565b6142ee8161424a565b81146142f957600080fd5b50565b60008135905061430b816142e5565b92915050565b60008060006040848603121561432a5761432961419e565b5b600084013567ffffffffffffffff811115614348576143476141a3565b5b6143548682870161428f565b93509350506020614367868287016142fc565b9150509250925092565b61437a816141d4565b82525050565b60006020820190506143956000830184614371565b92915050565b6000602082840312156143b1576143b061419e565b5b60006143bf848285016141bf565b91505092915050565b6000806000606084860312156143e1576143e061419e565b5b60006143ef868287016141bf565b9350506020614400868287016141bf565b9250506040614411868287016141f5565b9150509250925092565b600060ff82169050919050565b6144318161441b565b82525050565b600060208201905061444c6000830184614428565b92915050565b6000602082840312156144685761446761419e565b5b6000614476848285016142fc565b91505092915050565b6000602082840312156144955761449461419e565b5b60006144a3848285016141f5565b91505092915050565b600080604083850312156144c3576144c261419e565b5b60006144d1858286016141bf565b92505060206144e2858286016142fc565b9150509250929050565b600080604083850312156145035761450261419e565b5b6000614511858286016141f5565b9250506020614522858286016141f5565b9150509250929050565b6000819050919050565b600061455161454c61454784614142565b61452c565b614142565b9050919050565b600061456382614536565b9050919050565b600061457582614558565b9050919050565b6145858161456a565b82525050565b60006020820190506145a0600083018461457c565b92915050565b60006145b182614162565b9050919050565b6145c1816145a6565b81146145cc57600080fd5b50565b6000813590506145de816145b8565b92915050565b6000806000606084860312156145fd576145fc61419e565b5b600061460b868287016145cf565b935050602061461c868287016141bf565b925050604061462d868287016141f5565b9150509250925092565b6000806040838503121561464e5761464d61419e565b5b600061465c858286016141bf565b925050602061466d858286016141bf565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806146be57607f821691505b6020821081036146d1576146d0614677565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061470d60208361409b565b9150614718826146d7565b602082019050919050565b6000602082019050818103600083015261473c81614700565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147ac826141d4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147de576147dd614772565b5b600182019050919050565b7f45524332303a20416c726561647920456e61626c656400000000000000000000600082015250565b600061481f60168361409b565b915061482a826147e9565b602082019050919050565b6000602082019050818103600083015261484e81614812565b9050919050565b7f4572726f723a2047756172646564210000000000000000000000000000000000600082015250565b600061488b600f8361409b565b915061489682614855565b602082019050919050565b600060208201905081810360008301526148ba8161487e565b9050919050565b60006040820190506148d66000830185614174565b6148e36020830184614371565b9392505050565b6000815190506148f9816142e5565b92915050565b6000602082840312156149155761491461419e565b5b6000614923848285016148ea565b91505092915050565b600081905092915050565b50565b600061494760008361492c565b915061495282614937565b600082019050919050565b60006149688261493a565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b60006149a860148361409b565b91506149b382614972565b602082019050919050565b600060208201905081810360008301526149d78161499b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a3a60268361409b565b9150614a45826149de565b604082019050919050565b60006020820190508181036000830152614a6981614a2d565b9050919050565b6000614a7b826141d4565b9150614a86836141d4565b9250828202614a94816141d4565b91508282048414831517614aab57614aaa614772565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614aec826141d4565b9150614af7836141d4565b925082614b0757614b06614ab2565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b6e60218361409b565b9150614b7982614b12565b604082019050919050565b60006020820190508181036000830152614b9d81614b61565b9050919050565b6000614baf826141d4565b9150614bba836141d4565b9250828201905080821115614bd257614bd1614772565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614c0e601b8361409b565b9150614c1982614bd8565b602082019050919050565b60006020820190508181036000830152614c3d81614c01565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ca060248361409b565b9150614cab82614c44565b604082019050919050565b60006020820190508181036000830152614ccf81614c93565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d3260228361409b565b9150614d3d82614cd6565b604082019050919050565b60006020820190508181036000830152614d6181614d25565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614dc460258361409b565b9150614dcf82614d68565b604082019050919050565b60006020820190508181036000830152614df381614db7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e5660238361409b565b9150614e6182614dfa565b604082019050919050565b60006020820190508181036000830152614e8581614e49565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614ee860298361409b565b9150614ef382614e8c565b604082019050919050565b60006020820190508181036000830152614f1781614edb565b9050919050565b7f45524332303a20426f7420646574656374656400000000000000000000000000600082015250565b6000614f5460138361409b565b9150614f5f82614f1e565b602082019050919050565b60006020820190508181036000830152614f8381614f47565b9050919050565b7f45524332303a2074726164696e67206e6f7420656e61626c6520796574000000600082015250565b6000614fc0601d8361409b565b9150614fcb82614f8a565b602082019050919050565b60006020820190508181036000830152614fef81614fb3565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061505260288361409b565b915061505d82614ff6565b604082019050919050565b6000602082019050818103600083015261508181615045565b9050919050565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b60006150be601b8361409b565b91506150c982615088565b602082019050919050565b600060208201905081810360008301526150ed816150b1565b9050919050565b60006150ff826141d4565b915061510a836141d4565b925082820390508181111561512257615121614772565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615166816141a8565b92915050565b6000602082840312156151825761518161419e565b5b600061519084828501615157565b91505092915050565b6000819050919050565b60006151be6151b96151b484615199565b61452c565b6141d4565b9050919050565b6151ce816151a3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61520981614162565b82525050565b600061521b8383615200565b60208301905092915050565b6000602082019050919050565b600061523f826151d4565b61524981856151df565b9350615254836151f0565b8060005b8381101561528557815161526c888261520f565b975061527783615227565b925050600181019050615258565b5085935050505092915050565b600060a0820190506152a76000830188614371565b6152b460208301876151c5565b81810360408301526152c68186615234565b90506152d56060830185614174565b6152e26080830184614371565b9695505050505050565b60006040820190506153016000830185614371565b81810360208301526153138184615234565b90509392505050565b600060c0820190506153316000830189614174565b61533e6020830188614371565b61534b60408301876151c5565b61535860608301866151c5565b6153656080830185614174565b61537260a0830184614371565b979650505050505050565b60008151905061538c816141de565b92915050565b6000806000606084860312156153ab576153aa61419e565b5b60006153b98682870161537d565b93505060206153ca8682870161537d565b92505060406153db8682870161537d565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206c4bab062e8a8c4a258dfaf2ded0f1ac1c1c95e81e0c1cb946e1817318aed9a464736f6c63430008120033

Deployed Bytecode

0x6080604052600436106103905760003560e01c8063807c2d9c116101dc578063c867d60b11610102578063e7d8320e116100a0578063f2fde38b1161006f578063f2fde38b14610d55578063f872858a14610d7e578063f92082b314610da9578063fb0ecfa414610dd257610397565b8063e7d8320e14610cab578063e7f1bfcb14610cd6578063ec44acf214610d01578063ee828db314610d2c57610397565b8063d2d7ad83116100dc578063d2d7ad8314610c03578063dd62ed3e14610c2e578063df8408fe14610c6b578063e6b2603b14610c9457610397565b8063c867d60b14610b74578063cea9d26f14610bb1578063d27e0e6a14610bda57610397565b8063a457c2d71161017a578063bf56b37111610149578063bf56b37114610acc578063c0d7865514610af7578063c16dd4a414610b20578063c816841b14610b4957610397565b8063a457c2d714610a00578063a9059cbb14610a3d578063ae85ade614610a7a578063bdcb340014610aa357610397565b806395d89b41116101b657806395d89b411461095657806398e944c8146109815780639d0014b1146109ac5780639d9241ec146109d557610397565b8063807c2d9c146108c35780638b42507f146108ee5780638da5cb5b1461092b57610397565b80634974d88f116102c15780636ac9a8701161025f578063735de9f71161022e578063735de9f71461081757806375f0a874146108425780637d1db4a51461086d5780637d99c66d1461089857610397565b80636ac9a8701461077157806370a082311461079a578063715018a6146107d7578063728d41c9146107ee57610397565b806359b107b91161029b57806359b107b9146106c95780635c85974f146106f45780635e42358c1461071d578063651a89871461074857610397565b80634974d88f146106385780634a74bb02146106615780635342acb41461068c57610397565b806327c8f8351161032e578063313ce56711610308578063313ce5671461055657806339509351146105815780633bbac579146105be5780633ecad271146105fb57610397565b806327c8f835146104e9578063293230b8146105145780632b112e491461052b57610397565b806310a60f021161036a57806310a60f021461042f57806318160ddd146104585780631f012b0a1461048357806323b872dd146104ac57610397565b806306fdde031461039c5780630930907b146103c7578063095ea7b3146103f257610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103b1610dfb565b6040516103be9190614120565b60405180910390f35b3480156103d357600080fd5b506103dc610e8d565b6040516103e99190614183565b60405180910390f35b3480156103fe57600080fd5b506104196004803603810190610414919061420a565b610eb1565b6040516104269190614265565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190614311565b610ecf565b005b34801561046457600080fd5b5061046d610ff0565b60405161047a9190614380565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a5919061439b565b610ffa565b005b3480156104b857600080fd5b506104d360048036038101906104ce91906143c8565b6110ba565b6040516104e09190614265565b60405180910390f35b3480156104f557600080fd5b506104fe611194565b60405161050b9190614183565b60405180910390f35b34801561052057600080fd5b506105296111b8565b005b34801561053757600080fd5b506105406112a8565b60405161054d9190614380565b60405180910390f35b34801561056257600080fd5b5061056b611326565b6040516105789190614437565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a3919061420a565b61133d565b6040516105b59190614265565b60405180910390f35b3480156105ca57600080fd5b506105e560048036038101906105e0919061439b565b6113f0565b6040516105f29190614265565b60405180910390f35b34801561060757600080fd5b50610622600480360381019061061d919061439b565b611410565b60405161062f9190614265565b60405180910390f35b34801561064457600080fd5b5061065f600480360381019061065a9190614452565b611430565b005b34801561066d57600080fd5b506106766114c9565b6040516106839190614265565b60405180910390f35b34801561069857600080fd5b506106b360048036038101906106ae919061439b565b6114dc565b6040516106c09190614265565b60405180910390f35b3480156106d557600080fd5b506106de6114fc565b6040516106eb9190614380565b60405180910390f35b34801561070057600080fd5b5061071b6004803603810190610716919061447f565b611502565b005b34801561072957600080fd5b50610732611588565b60405161073f9190614265565b60405180910390f35b34801561075457600080fd5b5061076f600480360381019061076a91906144ac565b61159b565b005b34801561077d57600080fd5b50610798600480360381019061079391906144ec565b611672565b005b3480156107a657600080fd5b506107c160048036038101906107bc919061439b565b61171d565b6040516107ce9190614380565b60405180910390f35b3480156107e357600080fd5b506107ec611766565b005b3480156107fa57600080fd5b506108156004803603810190610810919061447f565b6117ee565b005b34801561082357600080fd5b5061082c611874565b604051610839919061458b565b60405180910390f35b34801561084e57600080fd5b5061085761189a565b6040516108649190614183565b60405180910390f35b34801561087957600080fd5b506108826118c0565b60405161088f9190614380565b60405180910390f35b3480156108a457600080fd5b506108ad6118c6565b6040516108ba9190614380565b60405180910390f35b3480156108cf57600080fd5b506108d86118cc565b6040516108e59190614380565b60405180910390f35b3480156108fa57600080fd5b506109156004803603810190610910919061439b565b6118d2565b6040516109229190614265565b60405180910390f35b34801561093757600080fd5b506109406118f2565b60405161094d9190614183565b60405180910390f35b34801561096257600080fd5b5061096b61191b565b6040516109789190614120565b60405180910390f35b34801561098d57600080fd5b506109966119ad565b6040516109a39190614183565b60405180910390f35b3480156109b857600080fd5b506109d360048036038101906109ce919061447f565b6119d3565b005b3480156109e157600080fd5b506109ea611a59565b6040516109f79190614380565b60405180910390f35b348015610a0c57600080fd5b50610a276004803603810190610a22919061420a565b611a5f565b604051610a349190614265565b60405180910390f35b348015610a4957600080fd5b50610a646004803603810190610a5f919061420a565b611b2c565b604051610a719190614265565b60405180910390f35b348015610a8657600080fd5b50610aa16004803603810190610a9c91906144ac565b611b4b565b005b348015610aaf57600080fd5b50610aca6004803603810190610ac59190614452565b611c22565b005b348015610ad857600080fd5b50610ae1611cf2565b604051610aee9190614380565b60405180910390f35b348015610b0357600080fd5b50610b1e6004803603810190610b19919061439b565b611cf8565b005b348015610b2c57600080fd5b50610b476004803603810190610b4291906144ac565b611db8565b005b348015610b5557600080fd5b50610b5e611e8f565b604051610b6b9190614183565b60405180910390f35b348015610b8057600080fd5b50610b9b6004803603810190610b96919061439b565b611eb5565b604051610ba89190614265565b60405180910390f35b348015610bbd57600080fd5b50610bd86004803603810190610bd391906145e4565b611ed5565b005b348015610be657600080fd5b50610c016004803603810190610bfc9190614452565b611fe9565b005b348015610c0f57600080fd5b50610c18612082565b604051610c259190614380565b60405180910390f35b348015610c3a57600080fd5b50610c556004803603810190610c509190614637565b612088565b604051610c629190614380565b60405180910390f35b348015610c7757600080fd5b50610c926004803603810190610c8d91906144ac565b61210f565b005b348015610ca057600080fd5b50610ca96121e6565b005b348015610cb757600080fd5b50610cc0612325565b604051610ccd9190614380565b60405180910390f35b348015610ce257600080fd5b50610ceb61232b565b604051610cf89190614265565b60405180910390f35b348015610d0d57600080fd5b50610d1661233e565b604051610d239190614265565b60405180910390f35b348015610d3857600080fd5b50610d536004803603810190610d4e9190614452565b612351565b005b348015610d6157600080fd5b50610d7c6004803603810190610d77919061439b565b6123ea565b005b348015610d8a57600080fd5b50610d936124e1565b604051610da09190614265565b60405180910390f35b348015610db557600080fd5b50610dd06004803603810190610dcb919061439b565b6124f4565b005b348015610dde57600080fd5b50610df96004803603810190610df491906144ec565b6125b4565b005b606060018054610e0a906146a6565b80601f0160208091040260200160405190810160405280929190818152602001828054610e36906146a6565b8015610e835780601f10610e5857610100808354040283529160200191610e83565b820191906000526020600020905b815481529060010190602001808311610e6657829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610ec5610ebe612781565b8484612789565b6001905092915050565b610ed7612781565b73ffffffffffffffffffffffffffffffffffffffff16610ef56118f2565b73ffffffffffffffffffffffffffffffffffffffff1614610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4290614723565b60405180910390fd5b60005b83839050811015610fea578160136000868685818110610f7157610f70614743565b5b9050602002016020810190610f86919061439b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fe2906147a1565b915050610f4e565b50505050565b6000601454905090565b611002612781565b73ffffffffffffffffffffffffffffffffffffffff166110206118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d90614723565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006110c7848484612952565b50611189846110d4612781565b611184856040518060600160405280602881526020016153e660289139600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061113a612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133879092919063ffffffff16565b612789565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6111c0612781565b73ffffffffffffffffffffffffffffffffffffffff166111de6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b90614723565b60405180910390fd5b601d60009054906101000a900460ff1615611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90614835565b60405180910390fd5b6001601d60006101000a81548160ff02191690831515021790555042601b81905550565b60006113216112d67f000000000000000000000000000000000000000000000000000000000000000061171d565b6113136113027f000000000000000000000000000000000000000000000000000000000000dead61171d565b6014546133eb90919063ffffffff16565b6133eb90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006113e661134a612781565b846113e185600e600061135b612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b612789565b6001905092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b611438612781565b73ffffffffffffffffffffffffffffffffffffffff166114566118f2565b73ffffffffffffffffffffffffffffffffffffffff16146114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390614723565b60405180910390fd5b80601d60026101000a81548160ff02191690831515021790555050565b601e60159054906101000a900460ff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b60085481565b61150a612781565b73ffffffffffffffffffffffffffffffffffffffff166115286118f2565b73ffffffffffffffffffffffffffffffffffffffff161461157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590614723565b60405180910390fd5b8060178190555050565b601d60019054906101000a900460ff1681565b6115a3612781565b73ffffffffffffffffffffffffffffffffffffffff166115c16118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e90614723565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61167a612781565b73ffffffffffffffffffffffffffffffffffffffff166116986118f2565b73ffffffffffffffffffffffffffffffffffffffff16146116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590614723565b60405180910390fd5b816006819055508060078190555061171360075460065461272390919063ffffffff16565b6009819055505050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61176e612781565b73ffffffffffffffffffffffffffffffffffffffff1661178c6118f2565b73ffffffffffffffffffffffffffffffffffffffff16146117e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d990614723565b60405180910390fd5b6117ec6000613435565b565b6117f6612781565b73ffffffffffffffffffffffffffffffffffffffff166118146118f2565b73ffffffffffffffffffffffffffffffffffffffff161461186a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186190614723565b60405180910390fd5b8060188190555050565b601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b601c5481565b60185481565b60126020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461192a906146a6565b80601f0160208091040260200160405190810160405280929190818152602001828054611956906146a6565b80156119a35780601f10611978576101008083540402835291602001916119a3565b820191906000526020600020905b81548152906001019060200180831161198657829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6119db612781565b73ffffffffffffffffffffffffffffffffffffffff166119f96118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4690614723565b60405180910390fd5b8060168190555050565b60095481565b6000611b22611a6c612781565b84611b1d8560405180606001604052806025815260200161540e60259139600e6000611a96612781565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133879092919063ffffffff16565b612789565b6001905092915050565b6000611b40611b39612781565b8484612952565b506001905092915050565b611b53612781565b73ffffffffffffffffffffffffffffffffffffffff16611b716118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbe90614723565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611c2a612781565b73ffffffffffffffffffffffffffffffffffffffff16611c486118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9590614723565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611ce79190614265565b60405180910390a150565b601b5481565b611d00612781565b73ffffffffffffffffffffffffffffffffffffffff16611d1e6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6b90614723565b60405180910390fd5b80601d60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611dc0612781565b73ffffffffffffffffffffffffffffffffffffffff16611dde6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614611e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2b90614723565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60116020528060005260406000206000915054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c906148a1565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611fa09291906148c1565b6020604051808303816000875af1158015611fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe391906148ff565b50505050565b611ff1612781565b73ffffffffffffffffffffffffffffffffffffffff1661200f6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614612065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205c90614723565b60405180910390fd5b80601960006101000a81548160ff02191690831515021790555050565b60165481565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612117612781565b73ffffffffffffffffffffffffffffffffffffffff166121356118f2565b73ffffffffffffffffffffffffffffffffffffffff161461218b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218290614723565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d906148a1565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161229c9061495d565b60006040518083038185875af1925050503d80600081146122d9576040519150601f19603f3d011682016040523d82523d6000602084013e6122de565b606091505b5050905080612322576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612319906149be565b60405180910390fd5b50565b601a5481565b601960009054906101000a900460ff1681565b601d60009054906101000a900460ff1681565b612359612781565b73ffffffffffffffffffffffffffffffffffffffff166123776118f2565b73ffffffffffffffffffffffffffffffffffffffff16146123cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c490614723565b60405180910390fd5b80601d60016101000a81548160ff02191690831515021790555050565b6123f2612781565b73ffffffffffffffffffffffffffffffffffffffff166124106118f2565b73ffffffffffffffffffffffffffffffffffffffff1614612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614723565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cc90614a50565b60405180910390fd5b6124de81613435565b50565b601d60029054906101000a900460ff1681565b6124fc612781565b73ffffffffffffffffffffffffffffffffffffffff1661251a6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614612570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256790614723565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6125bc612781565b73ffffffffffffffffffffffffffffffffffffffff166125da6118f2565b73ffffffffffffffffffffffffffffffffffffffff1614612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262790614723565b60405180910390fd5b816004819055508060058190555061265560055460045461272390919063ffffffff16565b6008819055505050565b600080830361267157600090506126d3565b6000828461267f9190614a70565b905082848261268e9190614ae1565b146126ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c590614b84565b60405180910390fd5b809150505b92915050565b600061271b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506134f9565b905092915050565b60008082846127329190614ba4565b905083811015612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e90614c24565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ef90614cb6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285e90614d48565b60405180910390fd5b80600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129459190614380565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036129c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b990614dda565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2890614e6c565b60405180910390fd5b60008211612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b90614efe565b60405180910390fd5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af890614f6a565b60405180910390fd5b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8590614f6a565b60405180910390fd5b601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1290614f6a565b60405180910390fd5b601e60149054906101000a900460ff1615612c4257612c3b84848461355c565b9050613380565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ce65750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f0e57601d60009054906101000a900460ff16612d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3190614fd6565b60405180910390fd5b601c54601b54612d4a9190614ba4565b42108015612da65750601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612f0d578373ffffffffffffffffffffffffffffffffffffffff16601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612e5d576001601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612f0c565b8273ffffffffffffffffffffffffffffffffffffffff16601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612f0b576001601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b6000612f193061171d565b905060006016548210159050808015612f3f5750601e60149054906101000a900460ff16155b8015612f955750601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612fad5750601e60159054906101000a900460ff165b15612fbc57612fbb8261372f565b5b601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130605750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130785750601d60019054906101000a900460ff165b156130c3576017548411156130c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b990615068565b60405180910390fd5b5b61314c846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133879092919063ffffffff16565b600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061319b878761393e565b6131af576131aa878787613aa9565b6131b1565b845b9050601d60029054906101000a900460ff1680156132195750601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561327e5760185461323c8261322e8961171d565b61272390919063ffffffff16565b111561327d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613274906150d4565b60405180910390fd5b5b6132d081600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133709190614380565b60405180910390a3600193505050505b9392505050565b60008383111582906133cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c69190614120565b60405180910390fd5b50600083856133de91906150f4565b9050809150509392505050565b600061342d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613387565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008083118290613540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135379190614120565b60405180910390fd5b506000838561354f9190614ae1565b9050809150509392505050565b60006135e7826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133879092919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061367c82600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161371c9190614380565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff021916908315150217905550600061376360095460085461272390919063ffffffff16565b9050600081036137735750613920565b600061378c60065460045461272390919063ffffffff16565b905060006137c860026137ba856137ac868961265f90919063ffffffff16565b6126d990919063ffffffff16565b6126d990919063ffffffff16565b905060006137df82866133eb90919063ffffffff16565b905060004790506137ef82613d14565b600061380482476133eb90919063ffffffff16565b9050600061382e61381f6002886126d990919063ffffffff16565b886133eb90919063ffffffff16565b9050600061386a600261385c8461384e8b8861265f90919063ffffffff16565b6126d990919063ffffffff16565b6126d990919063ffffffff16565b9050600061388182856133eb90919063ffffffff16565b905060008111156138f657600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156138f4573d6000803e3d6000fd5b505b6000821180156139065750600087115b15613916576139158783613f90565b5b5050505050505050505b6000601e60146101000a81548160ff02191690831515021790555050565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139e15750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139ef5760019050613aa3565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613a905750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613a9e5760009050613aa3565b600090505b92915050565b600080601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b2e57613b27601554613b196008548661265f90919063ffffffff16565b6126d990919063ffffffff16565b9050613bf3565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613bb057613ba9601554613b9b6009548661265f90919063ffffffff16565b6126d990919063ffffffff16565b9050613bf2565b601960009054906101000a900460ff1615613bf157613bee601554613be0601a548661265f90919063ffffffff16565b6126d990919063ffffffff16565b90505b5b5b6000811115613cf757613c4e81600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272390919063ffffffff16565b600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613cee9190614380565b60405180910390a35b613d0a81846133eb90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115613d3157613d30615128565b5b604051908082528060200260200182016040528015613d5f5781602001602082028036833780820191505090505b5090503081600081518110613d7757613d76614743565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e42919061516c565b81600181518110613e5657613e55614743565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ebd30601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612789565b601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f21959493929190615292565b600060405180830381600087803b158015613f3b57600080fd5b505af1158015613f4f573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613f849291906152ec565b60405180910390a15050565b613fbd30601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612789565b601d60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016140469695949392919061531c565b60606040518083038185885af1158015614064573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140899190615392565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140ca5780820151818401526020810190506140af565b60008484015250505050565b6000601f19601f8301169050919050565b60006140f282614090565b6140fc818561409b565b935061410c8185602086016140ac565b614115816140d6565b840191505092915050565b6000602082019050818103600083015261413a81846140e7565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061416d82614142565b9050919050565b61417d81614162565b82525050565b60006020820190506141986000830184614174565b92915050565b600080fd5b600080fd5b6141b181614162565b81146141bc57600080fd5b50565b6000813590506141ce816141a8565b92915050565b6000819050919050565b6141e7816141d4565b81146141f257600080fd5b50565b600081359050614204816141de565b92915050565b600080604083850312156142215761422061419e565b5b600061422f858286016141bf565b9250506020614240858286016141f5565b9150509250929050565b60008115159050919050565b61425f8161424a565b82525050565b600060208201905061427a6000830184614256565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126142a5576142a4614280565b5b8235905067ffffffffffffffff8111156142c2576142c1614285565b5b6020830191508360208202830111156142de576142dd61428a565b5b9250929050565b6142ee8161424a565b81146142f957600080fd5b50565b60008135905061430b816142e5565b92915050565b60008060006040848603121561432a5761432961419e565b5b600084013567ffffffffffffffff811115614348576143476141a3565b5b6143548682870161428f565b93509350506020614367868287016142fc565b9150509250925092565b61437a816141d4565b82525050565b60006020820190506143956000830184614371565b92915050565b6000602082840312156143b1576143b061419e565b5b60006143bf848285016141bf565b91505092915050565b6000806000606084860312156143e1576143e061419e565b5b60006143ef868287016141bf565b9350506020614400868287016141bf565b9250506040614411868287016141f5565b9150509250925092565b600060ff82169050919050565b6144318161441b565b82525050565b600060208201905061444c6000830184614428565b92915050565b6000602082840312156144685761446761419e565b5b6000614476848285016142fc565b91505092915050565b6000602082840312156144955761449461419e565b5b60006144a3848285016141f5565b91505092915050565b600080604083850312156144c3576144c261419e565b5b60006144d1858286016141bf565b92505060206144e2858286016142fc565b9150509250929050565b600080604083850312156145035761450261419e565b5b6000614511858286016141f5565b9250506020614522858286016141f5565b9150509250929050565b6000819050919050565b600061455161454c61454784614142565b61452c565b614142565b9050919050565b600061456382614536565b9050919050565b600061457582614558565b9050919050565b6145858161456a565b82525050565b60006020820190506145a0600083018461457c565b92915050565b60006145b182614162565b9050919050565b6145c1816145a6565b81146145cc57600080fd5b50565b6000813590506145de816145b8565b92915050565b6000806000606084860312156145fd576145fc61419e565b5b600061460b868287016145cf565b935050602061461c868287016141bf565b925050604061462d868287016141f5565b9150509250925092565b6000806040838503121561464e5761464d61419e565b5b600061465c858286016141bf565b925050602061466d858286016141bf565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806146be57607f821691505b6020821081036146d1576146d0614677565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061470d60208361409b565b9150614718826146d7565b602082019050919050565b6000602082019050818103600083015261473c81614700565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147ac826141d4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147de576147dd614772565b5b600182019050919050565b7f45524332303a20416c726561647920456e61626c656400000000000000000000600082015250565b600061481f60168361409b565b915061482a826147e9565b602082019050919050565b6000602082019050818103600083015261484e81614812565b9050919050565b7f4572726f723a2047756172646564210000000000000000000000000000000000600082015250565b600061488b600f8361409b565b915061489682614855565b602082019050919050565b600060208201905081810360008301526148ba8161487e565b9050919050565b60006040820190506148d66000830185614174565b6148e36020830184614371565b9392505050565b6000815190506148f9816142e5565b92915050565b6000602082840312156149155761491461419e565b5b6000614923848285016148ea565b91505092915050565b600081905092915050565b50565b600061494760008361492c565b915061495282614937565b600082019050919050565b60006149688261493a565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b60006149a860148361409b565b91506149b382614972565b602082019050919050565b600060208201905081810360008301526149d78161499b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a3a60268361409b565b9150614a45826149de565b604082019050919050565b60006020820190508181036000830152614a6981614a2d565b9050919050565b6000614a7b826141d4565b9150614a86836141d4565b9250828202614a94816141d4565b91508282048414831517614aab57614aaa614772565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614aec826141d4565b9150614af7836141d4565b925082614b0757614b06614ab2565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b6e60218361409b565b9150614b7982614b12565b604082019050919050565b60006020820190508181036000830152614b9d81614b61565b9050919050565b6000614baf826141d4565b9150614bba836141d4565b9250828201905080821115614bd257614bd1614772565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614c0e601b8361409b565b9150614c1982614bd8565b602082019050919050565b60006020820190508181036000830152614c3d81614c01565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ca060248361409b565b9150614cab82614c44565b604082019050919050565b60006020820190508181036000830152614ccf81614c93565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d3260228361409b565b9150614d3d82614cd6565b604082019050919050565b60006020820190508181036000830152614d6181614d25565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614dc460258361409b565b9150614dcf82614d68565b604082019050919050565b60006020820190508181036000830152614df381614db7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e5660238361409b565b9150614e6182614dfa565b604082019050919050565b60006020820190508181036000830152614e8581614e49565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614ee860298361409b565b9150614ef382614e8c565b604082019050919050565b60006020820190508181036000830152614f1781614edb565b9050919050565b7f45524332303a20426f7420646574656374656400000000000000000000000000600082015250565b6000614f5460138361409b565b9150614f5f82614f1e565b602082019050919050565b60006020820190508181036000830152614f8381614f47565b9050919050565b7f45524332303a2074726164696e67206e6f7420656e61626c6520796574000000600082015250565b6000614fc0601d8361409b565b9150614fcb82614f8a565b602082019050919050565b60006020820190508181036000830152614fef81614fb3565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061505260288361409b565b915061505d82614ff6565b604082019050919050565b6000602082019050818103600083015261508181615045565b9050919050565b7f4d61782057616c6c6574204c696d697420457863656564656421210000000000600082015250565b60006150be601b8361409b565b91506150c982615088565b602082019050919050565b600060208201905081810360008301526150ed816150b1565b9050919050565b60006150ff826141d4565b915061510a836141d4565b925082820390508181111561512257615121614772565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615166816141a8565b92915050565b6000602082840312156151825761518161419e565b5b600061519084828501615157565b91505092915050565b6000819050919050565b60006151be6151b96151b484615199565b61452c565b6141d4565b9050919050565b6151ce816151a3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61520981614162565b82525050565b600061521b8383615200565b60208301905092915050565b6000602082019050919050565b600061523f826151d4565b61524981856151df565b9350615254836151f0565b8060005b8381101561528557815161526c888261520f565b975061527783615227565b925050600181019050615258565b5085935050505092915050565b600060a0820190506152a76000830188614371565b6152b460208301876151c5565b81810360408301526152c68186615234565b90506152d56060830185614174565b6152e26080830184614371565b9695505050505050565b60006040820190506153016000830185614371565b81810360208301526153138184615234565b90509392505050565b600060c0820190506153316000830189614174565b61533e6020830188614371565b61534b60408301876151c5565b61535860608301866151c5565b6153656080830185614174565b61537260a0830184614371565b979650505050505050565b60008151905061538c816141de565b92915050565b6000806000606084860312156153ab576153aa61419e565b5b60006153b98682870161537d565b93505060206153ca8682870161537d565b92505060406153db8682870161537d565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206c4bab062e8a8c4a258dfaf2ded0f1ac1c1c95e81e0c1cb946e1817318aed9a464736f6c63430008120033

Deployed Bytecode Sourcemap

7073:15760:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11013:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7411:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12351:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21397:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11290:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20607:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13134:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7323:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20829:169;;;;;;;;;;;;;:::i;:::-;;11684:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11199:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11848:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8292:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8126:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21852:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9524:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8069:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7647:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22473:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8932:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22095:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20372:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11398:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1835:94;;;;;;;;;;;;;:::i;:::-;;22359:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9419:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7716:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8509:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8835:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8592:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8237:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1526:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7807:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20020:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7680:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12074:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12959:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22231:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19845:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8802:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22709:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22582;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9461:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8178:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21257:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21630:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8439:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11529:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21965:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21039:178;;;;;;;;;;;;;:::i;:::-;;8717:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8673;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8903:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21746:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1937:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8971:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20717:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20143:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11013:83;11050:13;11083:5;11076:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11013:83;:::o;7411:81::-;;;:::o;12351:161::-;12426:4;12443:39;12452:12;:10;:12::i;:::-;12466:7;12475:6;12443:8;:39::i;:::-;12500:4;12493:11;;12351:161;;;;:::o;21397:225::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21521:9:::1;21516:99;21540:8;;:15;;21536:1;:19;21516:99;;;21598:5;21577;:18;21583:8;;21592:1;21583:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21577:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;21557:3;;;;;:::i;:::-;;;;21516:99;;;;21397:225:::0;;;:::o;11290:100::-;11343:7;11370:12;;11363:19;;11290:100;:::o;20607:102::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20695:6:::1;20677:15;;:24;;;;;;;;;;;;;;;;;;20607:102:::0;:::o;13134:313::-;13232:4;13249:36;13259:6;13267:9;13278:6;13249:9;:36::i;:::-;;13296:121;13305:6;13313:12;:10;:12::i;:::-;13327:89;13365:6;13327:89;;;;;;;;;;;;;;;;;:11;:19;13339:6;13327:19;;;;;;;;;;;;;;;:33;13347:12;:10;:12::i;:::-;13327:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;13296:8;:121::i;:::-;13435:4;13428:11;;13134:313;;;;;:::o;7323:81::-;;;:::o;20829:169::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20892:7:::1;;;;;;;;;;;20891:8;20883:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;20947:4;20937:7;;:14;;;;;;;;;;;;;;;;;;20975:15;20962:10;:28;;;;20829:169::o:0;11684:156::-;11737:7;11764:68;11809:22;11819:11;11809:9;:22::i;:::-;11764:40;11781:22;11791:11;11781:9;:22::i;:::-;11764:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;11757:75;;11684:156;:::o;11199:83::-;11240:5;11265:9;;;;;;;;;;;11258:16;;11199:83;:::o;11848:218::-;11936:4;11953:83;11962:12;:10;:12::i;:::-;11976:7;11985:50;12024:10;11985:11;:25;11997:12;:10;:12::i;:::-;11985:25;;;;;;;;;;;;;;;:34;12011:7;11985:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11953:8;:83::i;:::-;12054:4;12047:11;;11848:218;;;;:::o;8292:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;8126:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;21852:105::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21942:7:::1;21923:16;;:26;;;;;;;;;;;;;;;;;;21852:105:::0;:::o;9524:40::-;;;;;;;;;;;;;:::o;8069:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;7647:26::-;;;;:::o;22473:101::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22558:8:::1;22543:12;:23;;;;22473:101:::0;:::o;8932:32::-;;;;;;;;;;;;;:::o;22095:128::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22208:7:::1;22180:19;:25;22200:4;22180:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;22095:128:::0;;:::o;20372:227::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20475:6:::1;20455:17;:26;;;;20512:13;20492:17;:33;;;;20551:40;20573:17;;20551;;:21;;:40;;;;:::i;:::-;20536:12;:55;;;;20372:227:::0;;:::o;11398:123::-;11464:7;11490:9;:18;11500:7;11490:18;;;;;;;;;;;;;;;;11483:25;;11398:123;;;:::o;1835:94::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1900:21:::1;1918:1;1900:9;:21::i;:::-;1835:94::o:0;22359:106::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22449:8:::1;22436:10;:21;;;;22359:106:::0;:::o;9419:35::-;;;;;;;;;;;;;:::o;7716:84::-;;;;;;;;;;;;;:::o;8509:67::-;;;;:::o;8835:39::-;;;;:::o;8592:64::-;;;;:::o;8237:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;1526:87::-;1572:7;1599:6;;;;;;;;;;;1592:13;;1526:87;:::o;11104:::-;11143:13;11176:7;11169:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11104:87;:::o;7807:86::-;;;;;;;;;;;;;:::o;20020:115::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20118:9:::1;20092:23;:35;;;;20020:115:::0;:::o;7680:27::-;;;;:::o;12074:269::-;12167:4;12184:129;12193:12;:10;:12::i;:::-;12207:7;12216:96;12255:15;12216:96;;;;;;;;;;;;;;;;;:11;:25;12228:12;:10;:12::i;:::-;12216:25;;;;;;;;;;;;;;;:34;12242:7;12216:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12184:8;:129::i;:::-;12331:4;12324:11;;12074:269;;;;:::o;12959:167::-;13037:4;13054:42;13064:12;:10;:12::i;:::-;13078:9;13089:6;13054:9;:42::i;:::-;;13114:4;13107:11;;12959:167;;;;:::o;22231:120::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22336:7:::1;22312:15;:21;22328:4;22312:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;22231:120:::0;;:::o;19845:167::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19944:7:::1;19920:21;;:31;;;;;;;;;;;;;;;;;;19967:37;19996:7;19967:37;;;;;;:::i;:::-;;;;;;;;19845:167:::0;:::o;8802:25::-;;;;:::o;22709:119::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22809:10:::1;22778:13;;:42;;;;;;;;;;;;;;;;;;22709:119:::0;:::o;22582:::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22686:7:::1;22664:12;:19;22677:5;22664:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;22582:119:::0;;:::o;9461:26::-;;;;;;;;;;;;;:::o;8178:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;21257:132::-;9355:17;;;;;;;;;;;9341:31;;:10;:31;;;9333:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21351:3:::1;:12;;;21364:9;21374:6;21351:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21257:132:::0;;;:::o;21630:108::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21723:7:::1;21702:18;;:28;;;;;;;;;;;;;;;;;;21630:108:::0;:::o;8439:63::-;;;;:::o;11529:143::-;11610:7;11637:11;:18;11649:5;11637:18;;;;;;;;;;;;;;;:27;11656:7;11637:27;;;;;;;;;;;;;;;;11630:34;;11529:143;;;;:::o;21965:122::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22072:7:::1;22046:17;:23;22064:4;22046:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;21965:122:::0;;:::o;21039:178::-;9355:17;;;;;;;;;;;9341:31;;:10;:31;;;9333:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21094:7:::1;21114:10;21106:24;;21138:21;21106:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21093:71;;;21183:2;21175:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;21081:136;21039:178::o:0;8717:37::-;;;;:::o;8673:::-;;;;;;;;;;;;;:::o;8903:19::-;;;;;;;;;;;;;:::o;21746:98::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21829:7:::1;21813:13;;:23;;;;;;;;;;;;;;;;;;21746:98:::0;:::o;1937:229::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2060:1:::1;2040:22;;:8;:22;;::::0;2018:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2139:19;2149:8;2139:9;:19::i;:::-;1937:229:::0;:::o;8971:35::-;;;;;;;;;;;;;:::o;20717:104::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20807:6:::1;20787:17;;:26;;;;;;;;;;;;;;;;;;20717:104:::0;:::o;20143:221::-;1758:12;:10;:12::i;:::-;1747:23;;:7;:5;:7::i;:::-;:23;;;1739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20244:6:::1;20225:16;:25;;;;20280:13;20261:16;:32;;;;20318:38;20339:16;;20318;;:20;;:38;;;;:::i;:::-;20304:11;:52;;;;20143:221:::0;;:::o;2913:250::-;2971:7;3000:1;2995;:6;2991:47;;3025:1;3018:8;;;;2991:47;3050:9;3066:1;3062;:5;;;;:::i;:::-;3050:17;;3095:1;3090;3086;:5;;;;:::i;:::-;:10;3078:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3154:1;3147:8;;;2913:250;;;;;:::o;3171:132::-;3229:7;3256:39;3260:1;3263;3256:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3249:46;;3171:132;;;;:::o;2380:181::-;2438:7;2458:9;2474:1;2470;:5;;;;:::i;:::-;2458:17;;2499:1;2494;:6;;2486:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2552:1;2545:8;;;2380:181;;;;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;12520:337::-;12630:1;12613:19;;:5;:19;;;12605:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12711:1;12692:21;;:7;:21;;;12684:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12795:6;12765:11;:18;12777:5;12765:18;;;;;;;;;;;;;;;:27;12784:7;12765:27;;;;;;;;;;;;;;;:36;;;;12833:7;12817:32;;12826:5;12817:32;;;12842:6;12817:32;;;;;;:::i;:::-;;;;;;;;12520:337;;;:::o;13455:2411::-;13542:4;13587:1;13569:20;;:6;:20;;;13561:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13671:1;13650:23;;:9;:23;;;13642:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13741:1;13732:6;:10;13724:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13818:5;:13;13824:6;13818:13;;;;;;;;;;;;;;;;;;;;;;;;;13817:14;13809:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;13875:5;:17;13881:10;13875:17;;;;;;;;;;;;;;;;;;;;;;;;;13874:18;13866:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13936:5;:16;13942:9;13936:16;;;;;;;;;;;;;;;;;;;;;;;;;13935:17;13927:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;13992:16;;;;;;;;;;;13989:1868;;;14032:41;14047:6;14055:9;14066:6;14032:14;:41::i;:::-;14025:48;;;;13989:1868;14122:17;:25;14140:6;14122:25;;;;;;;;;;;;;;;;;;;;;;;;;14121:26;:59;;;;;14152:17;:28;14170:9;14152:28;;;;;;;;;;;;;;;;;;;;;;;;;14151:29;14121:59;14117:564;;;14209:7;;;;;;;;;;;14201:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;14328:11;;14315:10;;:24;;;;:::i;:::-;14297:15;:42;:99;;;;;14382:13;;;;;;;;;;;14364:32;;:6;:32;;;;14297:99;14271:395;;;14458:6;14443:21;;:11;;;;;;;;;;;:21;;;14439:208;;14512:4;14493:5;:16;14499:9;14493:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14439:208;;;14565:9;14550:24;;:11;;;;;;;;;;;:24;;;14546:101;;14619:4;14603:5;:13;14609:6;14603:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;14546:101;14439:208;14271:395;14117:564;14697:28;14728:24;14746:4;14728:9;:24::i;:::-;14697:55;;14767:28;14822:23;;14798:20;:47;;14767:78;;14878:23;:44;;;;;14906:16;;;;;;;;;;;14905:17;14878:44;:69;;;;;14927:12;:20;14940:6;14927:20;;;;;;;;;;;;;;;;;;;;;;;;;14926:21;14878:69;:94;;;;;14951:21;;;;;;;;;;;14878:94;14874:185;;;15007:36;15022:20;15007:14;:36::i;:::-;14874:185;15079:15;:23;15095:6;15079:23;;;;;;;;;;;;;;;;;;;;;;;;;15078:24;:55;;;;;15107:15;:26;15123:9;15107:26;;;;;;;;;;;;;;;;;;;;;;;;;15106:27;15078:55;:72;;;;;15137:13;;;;;;;;;;;15078:72;15075:187;;;15189:12;;15179:6;:22;;15171:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15075:187;15311:53;15333:6;15311:53;;;;;;;;;;;;;;;;;:9;:17;15321:6;15311:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15291:9;:17;15301:6;15291:17;;;;;;;;;;;;;;;:73;;;;15381:19;15403:34;15420:6;15427:9;15403:16;:34::i;:::-;:80;;15449:34;15457:6;15465:9;15476:6;15449:7;:34::i;:::-;15403:80;;;15440:6;15403:80;15381:102;;15503:16;;;;;;;;;;;:51;;;;;15524:19;:30;15544:9;15524:30;;;;;;;;;;;;;;;;;;;;;;;;;15523:31;15503:51;15500:181;;;15624:10;;15583:37;15608:11;15583:20;15593:9;15583;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;15575:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;15500:181;15720:37;15745:11;15720:9;:20;15730:9;15720:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;15697:9;:20;15707:9;15697:20;;;;;;;;;;;;;;;:60;;;;15796:9;15779:40;;15788:6;15779:40;;;15807:11;15779:40;;;;;;:::i;:::-;;;;;;;;15841:4;15834:11;;;;;13455:2411;;;;;;:::o;2713:192::-;2799:7;2832:1;2827;:6;;2835:12;2819:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2859:9;2875:1;2871;:5;;;;:::i;:::-;2859:17;;2896:1;2889:8;;;2713:192;;;;;:::o;2569:136::-;2627:7;2654:43;2658:1;2661;2654:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2647:50;;2569:136;;;;:::o;2174:173::-;2230:16;2249:6;;;;;;;;;;;2230:25;;2275:8;2266:6;;:17;;;;;;;;;;;;;;;;;;2330:8;2299:40;;2320:8;2299:40;;;;;;;;;;;;2219:128;2174:173;:::o;3311:278::-;3397:7;3429:1;3425;:5;3432:12;3417:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3456:9;3472:1;3468;:5;;;;:::i;:::-;3456:17;;3580:1;3573:8;;;3311:278;;;;;:::o;15874:330::-;15967:4;16004:53;16026:6;16004:53;;;;;;;;;;;;;;;;;:9;:17;16014:6;16004:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15984:9;:17;15994:6;15984:17;;;;;;;;;;;;;;;:73;;;;16091:32;16116:6;16091:9;:20;16101:9;16091:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;16068:9;:20;16078:9;16068:20;;;;;;;;;;;;;;;:55;;;;16156:9;16139:35;;16148:6;16139:35;;;16167:6;16139:35;;;;;;:::i;:::-;;;;;;;;16192:4;16185:11;;15874:330;;;;;:::o;17483:1159::-;9624:4;9605:16;;:23;;;;;;;;;;;;;;;;;;17562:19:::1;17584:29;17600:12;;17584:11;;:15;;:29;;;;:::i;:::-;17562:51;;17644:1;17629:11;:16:::0;17626:28:::1;;17647:7;;;17626:28;17666:23;17692:39;17713:17;;17692:16;;:20;;:39;;;;:::i;:::-;17666:65;;17823:19;17845:60;17903:1;17845:53;17886:11;17845:36;17865:15;17845;:19;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;17823:82;;17916:21;17940:32;17960:11;17940:15;:19;;:32;;;;:::i;:::-;17916:56;;17985:22;18010:21;17985:46;;18042:31;18059:13;18042:16;:31::i;:::-;18084:22;18109:41;18135:14;18109:21;:25;;:41;;;;:::i;:::-;18084:66;;18163:19;18185:39;18201:22;18221:1;18201:15;:19;;:22;;;;:::i;:::-;18185:11;:15;;:39;;;;:::i;:::-;18163:61;;18245:26;18274:59;18331:1;18274:52;18314:11;18274:35;18293:15;18274:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;18245:88;;18344:26;18373:38;18392:18;18373:14;:18;;:38;;;;:::i;:::-;18344:67;;18448:1;18427:18;:22;18424:93;;;18472:15;;;;;;;;;;;18464:33;;:53;18498:18;18464:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18424:93;18554:1;18533:18;:22;:41;;;;;18573:1;18559:11;:15;18533:41;18530:104;;;18589:45;18602:11;18615:18;18589:12;:45::i;:::-;18530:104;17549:1093;;;;;;;;;9639:1;9670:5:::0;9651:16;;:24;;;;;;;;;;;;;;;;;;17483:1159;:::o;16216:369::-;16300:4;16320:17;:25;16338:6;16320:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;16349:17;:28;16367:9;16349:28;;;;;;;;;;;;;;;;;;;;;;;;;16320:57;16317:261;;;16401:4;16394:11;;;;16317:261;16436:12;:20;16449:6;16436:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;16460:12;:23;16473:9;16460:23;;;;;;;;;;;;;;;;;;;;;;;;;16436:47;16432:146;;;16507:5;16500:12;;;;16432:146;16561:5;16554:12;;16216:369;;;;;:::o;16593:882::-;16679:7;16709:14;16766:12;:20;16779:6;16766:20;;;;;;;;;;;;;;;;;;;;;;;;;16763:438;;;16825:40;16853:11;;16825:23;16836:11;;16825:6;:10;;:23;;;;:::i;:::-;:27;;:40;;;;:::i;:::-;16813:52;;16763:438;;;16904:12;:23;16917:9;16904:23;;;;;;;;;;;;;;;;;;;;;;;;;16901:300;;;16967:41;16996:11;;16967:24;16978:12;;16967:6;:10;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;16955:53;;16901:300;;;17065:18;;;;;;;;;;;17062:124;;;17120:46;17154:11;;17120:29;17131:17;;17120:6;:10;;:29;;;;:::i;:::-;:33;;:46;;;;:::i;:::-;17108:58;;17062:124;16901:300;16763:438;17232:1;17220:9;:13;17217:185;;;17281:39;17310:9;17281;:24;17299:4;17281:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;17254:9;:24;17272:4;17254:24;;;;;;;;;;;;;;;:66;;;;17369:4;17344:42;;17353:6;17344:42;;;17376:9;17344:42;;;;;;:::i;:::-;;;;;;;;17217:185;17425:21;17436:9;17425:6;:10;;:21;;;;:::i;:::-;17418:28;;;16593:882;;;;;:::o;18650:660::-;18776:21;18814:1;18800:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18776:40;;18845:4;18827;18832:1;18827:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18871:13;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18861:4;18866:1;18861:7;;;;;;;;:::i;:::-;;;;;;;:30;;;;;;;;;;;18904:60;18921:4;18936:13;;;;;;;;;;;18952:11;18904:8;:60::i;:::-;19003:13;;;;;;;;;;;:64;;;19082:11;19108:1;19152:4;19179;19215:15;19003:238;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19267:35;19284:11;19297:4;19267:35;;;;;;;:::i;:::-;;;;;;;;18705:605;18650:660;:::o;19318:519::-;19466:60;19483:4;19498:13;;;;;;;;;;;19514:11;19466:8;:60::i;:::-;19569:13;;;;;;;;;;;:29;;;19606:9;19639:4;19659:11;19685:1;19728;19771:17;;;;;;;;;;;19803:15;19569:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19318:519;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:126::-;1386:7;1426:42;1419:5;1415:54;1404:65;;1349:126;;;:::o;1481:96::-;1518:7;1547:24;1565:5;1547:24;:::i;:::-;1536:35;;1481:96;;;:::o;1583:118::-;1670:24;1688:5;1670:24;:::i;:::-;1665:3;1658:37;1583:118;;:::o;1707:222::-;1800:4;1838:2;1827:9;1823:18;1815:26;;1851:71;1919:1;1908:9;1904:17;1895:6;1851:71;:::i;:::-;1707:222;;;;:::o;2016:117::-;2125:1;2122;2115:12;2139:117;2248:1;2245;2238:12;2262:122;2335:24;2353:5;2335:24;:::i;:::-;2328:5;2325:35;2315:63;;2374:1;2371;2364:12;2315:63;2262:122;:::o;2390:139::-;2436:5;2474:6;2461:20;2452:29;;2490:33;2517:5;2490:33;:::i;:::-;2390:139;;;;:::o;2535:77::-;2572:7;2601:5;2590:16;;2535:77;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:117::-;3907:1;3904;3897:12;3921:117;4030:1;4027;4020:12;4044:117;4153:1;4150;4143:12;4184:568;4257:8;4267:6;4317:3;4310:4;4302:6;4298:17;4294:27;4284:122;;4325:79;;:::i;:::-;4284:122;4438:6;4425:20;4415:30;;4468:18;4460:6;4457:30;4454:117;;;4490:79;;:::i;:::-;4454:117;4604:4;4596:6;4592:17;4580:29;;4658:3;4650:4;4642:6;4638:17;4628:8;4624:32;4621:41;4618:128;;;4665:79;;:::i;:::-;4618:128;4184:568;;;;;:::o;4758:116::-;4828:21;4843:5;4828:21;:::i;:::-;4821:5;4818:32;4808:60;;4864:1;4861;4854:12;4808:60;4758:116;:::o;4880:133::-;4923:5;4961:6;4948:20;4939:29;;4977:30;5001:5;4977:30;:::i;:::-;4880:133;;;;:::o;5019:698::-;5111:6;5119;5127;5176:2;5164:9;5155:7;5151:23;5147:32;5144:119;;;5182:79;;:::i;:::-;5144:119;5330:1;5319:9;5315:17;5302:31;5360:18;5352:6;5349:30;5346:117;;;5382:79;;:::i;:::-;5346:117;5495:80;5567:7;5558:6;5547:9;5543:22;5495:80;:::i;:::-;5477:98;;;;5273:312;5624:2;5650:50;5692:7;5683:6;5672:9;5668:22;5650:50;:::i;:::-;5640:60;;5595:115;5019:698;;;;;:::o;5723:118::-;5810:24;5828:5;5810:24;:::i;:::-;5805:3;5798:37;5723:118;;:::o;5847:222::-;5940:4;5978:2;5967:9;5963:18;5955:26;;5991:71;6059:1;6048:9;6044:17;6035:6;5991:71;:::i;:::-;5847:222;;;;:::o;6075:329::-;6134:6;6183:2;6171:9;6162:7;6158:23;6154:32;6151:119;;;6189:79;;:::i;:::-;6151:119;6309:1;6334:53;6379:7;6370:6;6359:9;6355:22;6334:53;:::i;:::-;6324:63;;6280:117;6075:329;;;;:::o;6410:619::-;6487:6;6495;6503;6552:2;6540:9;6531:7;6527:23;6523:32;6520:119;;;6558:79;;:::i;:::-;6520:119;6678:1;6703:53;6748:7;6739:6;6728:9;6724:22;6703:53;:::i;:::-;6693:63;;6649:117;6805:2;6831:53;6876:7;6867:6;6856:9;6852:22;6831:53;:::i;:::-;6821:63;;6776:118;6933:2;6959:53;7004:7;6995:6;6984:9;6980:22;6959:53;:::i;:::-;6949:63;;6904:118;6410:619;;;;;:::o;7035:86::-;7070:7;7110:4;7103:5;7099:16;7088:27;;7035:86;;;:::o;7127:112::-;7210:22;7226:5;7210:22;:::i;:::-;7205:3;7198:35;7127:112;;:::o;7245:214::-;7334:4;7372:2;7361:9;7357:18;7349:26;;7385:67;7449:1;7438:9;7434:17;7425:6;7385:67;:::i;:::-;7245:214;;;;:::o;7465:323::-;7521:6;7570:2;7558:9;7549:7;7545:23;7541:32;7538:119;;;7576:79;;:::i;:::-;7538:119;7696:1;7721:50;7763:7;7754:6;7743:9;7739:22;7721:50;:::i;:::-;7711:60;;7667:114;7465:323;;;;:::o;7794:329::-;7853:6;7902:2;7890:9;7881:7;7877:23;7873:32;7870:119;;;7908:79;;:::i;:::-;7870:119;8028:1;8053:53;8098:7;8089:6;8078:9;8074:22;8053:53;:::i;:::-;8043:63;;7999:117;7794:329;;;;:::o;8129:468::-;8194:6;8202;8251:2;8239:9;8230:7;8226:23;8222:32;8219:119;;;8257:79;;:::i;:::-;8219:119;8377:1;8402:53;8447:7;8438:6;8427:9;8423:22;8402:53;:::i;:::-;8392:63;;8348:117;8504:2;8530:50;8572:7;8563:6;8552:9;8548:22;8530:50;:::i;:::-;8520:60;;8475:115;8129:468;;;;;:::o;8603:474::-;8671:6;8679;8728:2;8716:9;8707:7;8703:23;8699:32;8696:119;;;8734:79;;:::i;:::-;8696:119;8854:1;8879:53;8924:7;8915:6;8904:9;8900:22;8879:53;:::i;:::-;8869:63;;8825:117;8981:2;9007:53;9052:7;9043:6;9032:9;9028:22;9007:53;:::i;:::-;8997:63;;8952:118;8603:474;;;;;:::o;9083:60::-;9111:3;9132:5;9125:12;;9083:60;;;:::o;9149:142::-;9199:9;9232:53;9250:34;9259:24;9277:5;9259:24;:::i;:::-;9250:34;:::i;:::-;9232:53;:::i;:::-;9219:66;;9149:142;;;:::o;9297:126::-;9347:9;9380:37;9411:5;9380:37;:::i;:::-;9367:50;;9297:126;;;:::o;9429:148::-;9501:9;9534:37;9565:5;9534:37;:::i;:::-;9521:50;;9429:148;;;:::o;9583:175::-;9692:59;9745:5;9692:59;:::i;:::-;9687:3;9680:72;9583:175;;:::o;9764:266::-;9879:4;9917:2;9906:9;9902:18;9894:26;;9930:93;10020:1;10009:9;10005:17;9996:6;9930:93;:::i;:::-;9764:266;;;;:::o;10036:109::-;10086:7;10115:24;10133:5;10115:24;:::i;:::-;10104:35;;10036:109;;;:::o;10151:148::-;10237:37;10268:5;10237:37;:::i;:::-;10230:5;10227:48;10217:76;;10289:1;10286;10279:12;10217:76;10151:148;:::o;10305:165::-;10364:5;10402:6;10389:20;10380:29;;10418:46;10458:5;10418:46;:::i;:::-;10305:165;;;;:::o;10476:645::-;10566:6;10574;10582;10631:2;10619:9;10610:7;10606:23;10602:32;10599:119;;;10637:79;;:::i;:::-;10599:119;10757:1;10782:66;10840:7;10831:6;10820:9;10816:22;10782:66;:::i;:::-;10772:76;;10728:130;10897:2;10923:53;10968:7;10959:6;10948:9;10944:22;10923:53;:::i;:::-;10913:63;;10868:118;11025:2;11051:53;11096:7;11087:6;11076:9;11072:22;11051:53;:::i;:::-;11041:63;;10996:118;10476:645;;;;;:::o;11127:474::-;11195:6;11203;11252:2;11240:9;11231:7;11227:23;11223:32;11220:119;;;11258:79;;:::i;:::-;11220:119;11378:1;11403:53;11448:7;11439:6;11428:9;11424:22;11403:53;:::i;:::-;11393:63;;11349:117;11505:2;11531:53;11576:7;11567:6;11556:9;11552:22;11531:53;:::i;:::-;11521:63;;11476:118;11127:474;;;;;:::o;11607:180::-;11655:77;11652:1;11645:88;11752:4;11749:1;11742:15;11776:4;11773:1;11766:15;11793:320;11837:6;11874:1;11868:4;11864:12;11854:22;;11921:1;11915:4;11911:12;11942:18;11932:81;;11998:4;11990:6;11986:17;11976:27;;11932:81;12060:2;12052:6;12049:14;12029:18;12026:38;12023:84;;12079:18;;:::i;:::-;12023:84;11844:269;11793:320;;;:::o;12119:182::-;12259:34;12255:1;12247:6;12243:14;12236:58;12119:182;:::o;12307:366::-;12449:3;12470:67;12534:2;12529:3;12470:67;:::i;:::-;12463:74;;12546:93;12635:3;12546:93;:::i;:::-;12664:2;12659:3;12655:12;12648:19;;12307:366;;;:::o;12679:419::-;12845:4;12883:2;12872:9;12868:18;12860:26;;12932:9;12926:4;12922:20;12918:1;12907:9;12903:17;12896:47;12960:131;13086:4;12960:131;:::i;:::-;12952:139;;12679:419;;;:::o;13104:180::-;13152:77;13149:1;13142:88;13249:4;13246:1;13239:15;13273:4;13270:1;13263:15;13290:180;13338:77;13335:1;13328:88;13435:4;13432:1;13425:15;13459:4;13456:1;13449:15;13476:233;13515:3;13538:24;13556:5;13538:24;:::i;:::-;13529:33;;13584:66;13577:5;13574:77;13571:103;;13654:18;;:::i;:::-;13571:103;13701:1;13694:5;13690:13;13683:20;;13476:233;;;:::o;13715:172::-;13855:24;13851:1;13843:6;13839:14;13832:48;13715:172;:::o;13893:366::-;14035:3;14056:67;14120:2;14115:3;14056:67;:::i;:::-;14049:74;;14132:93;14221:3;14132:93;:::i;:::-;14250:2;14245:3;14241:12;14234:19;;13893:366;;;:::o;14265:419::-;14431:4;14469:2;14458:9;14454:18;14446:26;;14518:9;14512:4;14508:20;14504:1;14493:9;14489:17;14482:47;14546:131;14672:4;14546:131;:::i;:::-;14538:139;;14265:419;;;:::o;14690:165::-;14830:17;14826:1;14818:6;14814:14;14807:41;14690:165;:::o;14861:366::-;15003:3;15024:67;15088:2;15083:3;15024:67;:::i;:::-;15017:74;;15100:93;15189:3;15100:93;:::i;:::-;15218:2;15213:3;15209:12;15202:19;;14861:366;;;:::o;15233:419::-;15399:4;15437:2;15426:9;15422:18;15414:26;;15486:9;15480:4;15476:20;15472:1;15461:9;15457:17;15450:47;15514:131;15640:4;15514:131;:::i;:::-;15506:139;;15233:419;;;:::o;15658:332::-;15779:4;15817:2;15806:9;15802:18;15794:26;;15830:71;15898:1;15887:9;15883:17;15874:6;15830:71;:::i;:::-;15911:72;15979:2;15968:9;15964:18;15955:6;15911:72;:::i;:::-;15658:332;;;;;:::o;15996:137::-;16050:5;16081:6;16075:13;16066:22;;16097:30;16121:5;16097:30;:::i;:::-;15996:137;;;;:::o;16139:345::-;16206:6;16255:2;16243:9;16234:7;16230:23;16226:32;16223:119;;;16261:79;;:::i;:::-;16223:119;16381:1;16406:61;16459:7;16450:6;16439:9;16435:22;16406:61;:::i;:::-;16396:71;;16352:125;16139:345;;;;:::o;16490:147::-;16591:11;16628:3;16613:18;;16490:147;;;;:::o;16643:114::-;;:::o;16763:398::-;16922:3;16943:83;17024:1;17019:3;16943:83;:::i;:::-;16936:90;;17035:93;17124:3;17035:93;:::i;:::-;17153:1;17148:3;17144:11;17137:18;;16763:398;;;:::o;17167:379::-;17351:3;17373:147;17516:3;17373:147;:::i;:::-;17366:154;;17537:3;17530:10;;17167:379;;;:::o;17552:170::-;17692:22;17688:1;17680:6;17676:14;17669:46;17552:170;:::o;17728:366::-;17870:3;17891:67;17955:2;17950:3;17891:67;:::i;:::-;17884:74;;17967:93;18056:3;17967:93;:::i;:::-;18085:2;18080:3;18076:12;18069:19;;17728:366;;;:::o;18100:419::-;18266:4;18304:2;18293:9;18289:18;18281:26;;18353:9;18347:4;18343:20;18339:1;18328:9;18324:17;18317:47;18381:131;18507:4;18381:131;:::i;:::-;18373:139;;18100:419;;;:::o;18525:225::-;18665:34;18661:1;18653:6;18649:14;18642:58;18734:8;18729:2;18721:6;18717:15;18710:33;18525:225;:::o;18756:366::-;18898:3;18919:67;18983:2;18978:3;18919:67;:::i;:::-;18912:74;;18995:93;19084:3;18995:93;:::i;:::-;19113:2;19108:3;19104:12;19097:19;;18756:366;;;:::o;19128:419::-;19294:4;19332:2;19321:9;19317:18;19309:26;;19381:9;19375:4;19371:20;19367:1;19356:9;19352:17;19345:47;19409:131;19535:4;19409:131;:::i;:::-;19401:139;;19128:419;;;:::o;19553:410::-;19593:7;19616:20;19634:1;19616:20;:::i;:::-;19611:25;;19650:20;19668:1;19650:20;:::i;:::-;19645:25;;19705:1;19702;19698:9;19727:30;19745:11;19727:30;:::i;:::-;19716:41;;19906:1;19897:7;19893:15;19890:1;19887:22;19867:1;19860:9;19840:83;19817:139;;19936:18;;:::i;:::-;19817:139;19601:362;19553:410;;;;:::o;19969:180::-;20017:77;20014:1;20007:88;20114:4;20111:1;20104:15;20138:4;20135:1;20128:15;20155:185;20195:1;20212:20;20230:1;20212:20;:::i;:::-;20207:25;;20246:20;20264:1;20246:20;:::i;:::-;20241:25;;20285:1;20275:35;;20290:18;;:::i;:::-;20275:35;20332:1;20329;20325:9;20320:14;;20155:185;;;;:::o;20346:220::-;20486:34;20482:1;20474:6;20470:14;20463:58;20555:3;20550:2;20542:6;20538:15;20531:28;20346:220;:::o;20572:366::-;20714:3;20735:67;20799:2;20794:3;20735:67;:::i;:::-;20728:74;;20811:93;20900:3;20811:93;:::i;:::-;20929:2;20924:3;20920:12;20913:19;;20572:366;;;:::o;20944:419::-;21110:4;21148:2;21137:9;21133:18;21125:26;;21197:9;21191:4;21187:20;21183:1;21172:9;21168:17;21161:47;21225:131;21351:4;21225:131;:::i;:::-;21217:139;;20944:419;;;:::o;21369:191::-;21409:3;21428:20;21446:1;21428:20;:::i;:::-;21423:25;;21462:20;21480:1;21462:20;:::i;:::-;21457:25;;21505:1;21502;21498:9;21491:16;;21526:3;21523:1;21520:10;21517:36;;;21533:18;;:::i;:::-;21517:36;21369:191;;;;:::o;21566:177::-;21706:29;21702:1;21694:6;21690:14;21683:53;21566:177;:::o;21749:366::-;21891:3;21912:67;21976:2;21971:3;21912:67;:::i;:::-;21905:74;;21988:93;22077:3;21988:93;:::i;:::-;22106:2;22101:3;22097:12;22090:19;;21749:366;;;:::o;22121:419::-;22287:4;22325:2;22314:9;22310:18;22302:26;;22374:9;22368:4;22364:20;22360:1;22349:9;22345:17;22338:47;22402:131;22528:4;22402:131;:::i;:::-;22394:139;;22121:419;;;:::o;22546:223::-;22686:34;22682:1;22674:6;22670:14;22663:58;22755:6;22750:2;22742:6;22738:15;22731:31;22546:223;:::o;22775:366::-;22917:3;22938:67;23002:2;22997:3;22938:67;:::i;:::-;22931:74;;23014:93;23103:3;23014:93;:::i;:::-;23132:2;23127:3;23123:12;23116:19;;22775:366;;;:::o;23147:419::-;23313:4;23351:2;23340:9;23336:18;23328:26;;23400:9;23394:4;23390:20;23386:1;23375:9;23371:17;23364:47;23428:131;23554:4;23428:131;:::i;:::-;23420:139;;23147:419;;;:::o;23572:221::-;23712:34;23708:1;23700:6;23696:14;23689:58;23781:4;23776:2;23768:6;23764:15;23757:29;23572:221;:::o;23799:366::-;23941:3;23962:67;24026:2;24021:3;23962:67;:::i;:::-;23955:74;;24038:93;24127:3;24038:93;:::i;:::-;24156:2;24151:3;24147:12;24140:19;;23799:366;;;:::o;24171:419::-;24337:4;24375:2;24364:9;24360:18;24352:26;;24424:9;24418:4;24414:20;24410:1;24399:9;24395:17;24388:47;24452:131;24578:4;24452:131;:::i;:::-;24444:139;;24171:419;;;:::o;24596:224::-;24736:34;24732:1;24724:6;24720:14;24713:58;24805:7;24800:2;24792:6;24788:15;24781:32;24596:224;:::o;24826:366::-;24968:3;24989:67;25053:2;25048:3;24989:67;:::i;:::-;24982:74;;25065:93;25154:3;25065:93;:::i;:::-;25183:2;25178:3;25174:12;25167:19;;24826:366;;;:::o;25198:419::-;25364:4;25402:2;25391:9;25387:18;25379:26;;25451:9;25445:4;25441:20;25437:1;25426:9;25422:17;25415:47;25479:131;25605:4;25479:131;:::i;:::-;25471:139;;25198:419;;;:::o;25623:222::-;25763:34;25759:1;25751:6;25747:14;25740:58;25832:5;25827:2;25819:6;25815:15;25808:30;25623:222;:::o;25851:366::-;25993:3;26014:67;26078:2;26073:3;26014:67;:::i;:::-;26007:74;;26090:93;26179:3;26090:93;:::i;:::-;26208:2;26203:3;26199:12;26192:19;;25851:366;;;:::o;26223:419::-;26389:4;26427:2;26416:9;26412:18;26404:26;;26476:9;26470:4;26466:20;26462:1;26451:9;26447:17;26440:47;26504:131;26630:4;26504:131;:::i;:::-;26496:139;;26223:419;;;:::o;26648:228::-;26788:34;26784:1;26776:6;26772:14;26765:58;26857:11;26852:2;26844:6;26840:15;26833:36;26648:228;:::o;26882:366::-;27024:3;27045:67;27109:2;27104:3;27045:67;:::i;:::-;27038:74;;27121:93;27210:3;27121:93;:::i;:::-;27239:2;27234:3;27230:12;27223:19;;26882:366;;;:::o;27254:419::-;27420:4;27458:2;27447:9;27443:18;27435:26;;27507:9;27501:4;27497:20;27493:1;27482:9;27478:17;27471:47;27535:131;27661:4;27535:131;:::i;:::-;27527:139;;27254:419;;;:::o;27679:169::-;27819:21;27815:1;27807:6;27803:14;27796:45;27679:169;:::o;27854:366::-;27996:3;28017:67;28081:2;28076:3;28017:67;:::i;:::-;28010:74;;28093:93;28182:3;28093:93;:::i;:::-;28211:2;28206:3;28202:12;28195:19;;27854:366;;;:::o;28226:419::-;28392:4;28430:2;28419:9;28415:18;28407:26;;28479:9;28473:4;28469:20;28465:1;28454:9;28450:17;28443:47;28507:131;28633:4;28507:131;:::i;:::-;28499:139;;28226:419;;;:::o;28651:179::-;28791:31;28787:1;28779:6;28775:14;28768:55;28651:179;:::o;28836:366::-;28978:3;28999:67;29063:2;29058:3;28999:67;:::i;:::-;28992:74;;29075:93;29164:3;29075:93;:::i;:::-;29193:2;29188:3;29184:12;29177:19;;28836:366;;;:::o;29208:419::-;29374:4;29412:2;29401:9;29397:18;29389:26;;29461:9;29455:4;29451:20;29447:1;29436:9;29432:17;29425:47;29489:131;29615:4;29489:131;:::i;:::-;29481:139;;29208:419;;;:::o;29633:227::-;29773:34;29769:1;29761:6;29757:14;29750:58;29842:10;29837:2;29829:6;29825:15;29818:35;29633:227;:::o;29866:366::-;30008:3;30029:67;30093:2;30088:3;30029:67;:::i;:::-;30022:74;;30105:93;30194:3;30105:93;:::i;:::-;30223:2;30218:3;30214:12;30207:19;;29866:366;;;:::o;30238:419::-;30404:4;30442:2;30431:9;30427:18;30419:26;;30491:9;30485:4;30481:20;30477:1;30466:9;30462:17;30455:47;30519:131;30645:4;30519:131;:::i;:::-;30511:139;;30238:419;;;:::o;30663:177::-;30803:29;30799:1;30791:6;30787:14;30780:53;30663:177;:::o;30846:366::-;30988:3;31009:67;31073:2;31068:3;31009:67;:::i;:::-;31002:74;;31085:93;31174:3;31085:93;:::i;:::-;31203:2;31198:3;31194:12;31187:19;;30846:366;;;:::o;31218:419::-;31384:4;31422:2;31411:9;31407:18;31399:26;;31471:9;31465:4;31461:20;31457:1;31446:9;31442:17;31435:47;31499:131;31625:4;31499:131;:::i;:::-;31491:139;;31218:419;;;:::o;31643:194::-;31683:4;31703:20;31721:1;31703:20;:::i;:::-;31698:25;;31737:20;31755:1;31737:20;:::i;:::-;31732:25;;31781:1;31778;31774:9;31766:17;;31805:1;31799:4;31796:11;31793:37;;;31810:18;;:::i;:::-;31793:37;31643:194;;;;:::o;31843:180::-;31891:77;31888:1;31881:88;31988:4;31985:1;31978:15;32012:4;32009:1;32002:15;32029:143;32086:5;32117:6;32111:13;32102:22;;32133:33;32160:5;32133:33;:::i;:::-;32029:143;;;;:::o;32178:351::-;32248:6;32297:2;32285:9;32276:7;32272:23;32268:32;32265:119;;;32303:79;;:::i;:::-;32265:119;32423:1;32448:64;32504:7;32495:6;32484:9;32480:22;32448:64;:::i;:::-;32438:74;;32394:128;32178:351;;;;:::o;32535:85::-;32580:7;32609:5;32598:16;;32535:85;;;:::o;32626:158::-;32684:9;32717:61;32735:42;32744:32;32770:5;32744:32;:::i;:::-;32735:42;:::i;:::-;32717:61;:::i;:::-;32704:74;;32626:158;;;:::o;32790:147::-;32885:45;32924:5;32885:45;:::i;:::-;32880:3;32873:58;32790:147;;:::o;32943:114::-;33010:6;33044:5;33038:12;33028:22;;32943:114;;;:::o;33063:184::-;33162:11;33196:6;33191:3;33184:19;33236:4;33231:3;33227:14;33212:29;;33063:184;;;;:::o;33253:132::-;33320:4;33343:3;33335:11;;33373:4;33368:3;33364:14;33356:22;;33253:132;;;:::o;33391:108::-;33468:24;33486:5;33468:24;:::i;:::-;33463:3;33456:37;33391:108;;:::o;33505:179::-;33574:10;33595:46;33637:3;33629:6;33595:46;:::i;:::-;33673:4;33668:3;33664:14;33650:28;;33505:179;;;;:::o;33690:113::-;33760:4;33792;33787:3;33783:14;33775:22;;33690:113;;;:::o;33839:732::-;33958:3;33987:54;34035:5;33987:54;:::i;:::-;34057:86;34136:6;34131:3;34057:86;:::i;:::-;34050:93;;34167:56;34217:5;34167:56;:::i;:::-;34246:7;34277:1;34262:284;34287:6;34284:1;34281:13;34262:284;;;34363:6;34357:13;34390:63;34449:3;34434:13;34390:63;:::i;:::-;34383:70;;34476:60;34529:6;34476:60;:::i;:::-;34466:70;;34322:224;34309:1;34306;34302:9;34297:14;;34262:284;;;34266:14;34562:3;34555:10;;33963:608;;;33839:732;;;;:::o;34577:831::-;34840:4;34878:3;34867:9;34863:19;34855:27;;34892:71;34960:1;34949:9;34945:17;34936:6;34892:71;:::i;:::-;34973:80;35049:2;35038:9;35034:18;35025:6;34973:80;:::i;:::-;35100:9;35094:4;35090:20;35085:2;35074:9;35070:18;35063:48;35128:108;35231:4;35222:6;35128:108;:::i;:::-;35120:116;;35246:72;35314:2;35303:9;35299:18;35290:6;35246:72;:::i;:::-;35328:73;35396:3;35385:9;35381:19;35372:6;35328:73;:::i;:::-;34577:831;;;;;;;;:::o;35414:483::-;35585:4;35623:2;35612:9;35608:18;35600:26;;35636:71;35704:1;35693:9;35689:17;35680:6;35636:71;:::i;:::-;35754:9;35748:4;35744:20;35739:2;35728:9;35724:18;35717:48;35782:108;35885:4;35876:6;35782:108;:::i;:::-;35774:116;;35414:483;;;;;:::o;35903:807::-;36152:4;36190:3;36179:9;36175:19;36167:27;;36204:71;36272:1;36261:9;36257:17;36248:6;36204:71;:::i;:::-;36285:72;36353:2;36342:9;36338:18;36329:6;36285:72;:::i;:::-;36367:80;36443:2;36432:9;36428:18;36419:6;36367:80;:::i;:::-;36457;36533:2;36522:9;36518:18;36509:6;36457:80;:::i;:::-;36547:73;36615:3;36604:9;36600:19;36591:6;36547:73;:::i;:::-;36630;36698:3;36687:9;36683:19;36674:6;36630:73;:::i;:::-;35903:807;;;;;;;;;:::o;36716:143::-;36773:5;36804:6;36798:13;36789:22;;36820:33;36847:5;36820:33;:::i;:::-;36716:143;;;;:::o;36865:663::-;36953:6;36961;36969;37018:2;37006:9;36997:7;36993:23;36989:32;36986:119;;;37024:79;;:::i;:::-;36986:119;37144:1;37169:64;37225:7;37216:6;37205:9;37201:22;37169:64;:::i;:::-;37159:74;;37115:128;37282:2;37308:64;37364:7;37355:6;37344:9;37340:22;37308:64;:::i;:::-;37298:74;;37253:129;37421:2;37447:64;37503:7;37494:6;37483:9;37479:22;37447:64;:::i;:::-;37437:74;;37392:129;36865:663;;;;;:::o

Swarm Source

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