ETH Price: $2,292.87 (-5.38%)

Token

MUSASHI INU ($MUSASHI)
 

Overview

Max Total Supply

10,000,000 $MUSASHI

Holders

12

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
bigfadah.eth
Balance
357,498.810337310708178403 $MUSASHI

Value
$0.00
0x90c5ca57def96cf5c651333d2033b8b16cc138cb
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MUSASHIINU

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-06-01
*/

// TG: https://t.me/musashiinu

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.8;

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }
    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        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);
}

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

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    uint256 private _lockTime;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

}

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    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 IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

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

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

contract MUSASHIINU is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "MUSASHI INU";
    string private _symbol = "$MUSASHI";
    uint8 private _decimals = 18;
    uint256 private _totalSupply = 10000000 * 10**_decimals;     

    uint256 private minimumTokensBeforeSwap = 5000000 * 10**_decimals;
    uint256 public _totalDistributionShares = 24;
    address payable public marketingwallet = payable(0xE7771c488a752C0b6BC386351565d9bBF14b1356);
    uint256 public _MarketingFeeBuy = 6;
    uint256 public _MarketingFeeSell = 6;

    mapping (address => uint256) _accBalances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isSniper;
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletNoLimit;
    mapping (address => bool) public isTXNoLimit;
    mapping (address => bool) public isMarketPair;

    uint256 public _LiquidityFeeBuy = 1;
    uint256 public _LiquidityFeeSell = 1;

    uint256 public _walletMax = 4000000 * 10**_decimals;        
    uint256 public _maxTxAmount = 4000000 * 10**_decimals;  // max buy 4% for first 5 blocks

    uint256 public _marketingShare = 23;
    uint256 public _liquidityShare = 1;
    uint256 public _finalBuyTax = 0;
    uint256 public _finalSellTax = 0;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;
    uint256 public dividendDecimals = (10 ** _decimals);
    uint256 public dividendEndSupply = 1000000000000;
    uint256 public setDividendSupply = dividendEndSupply * dividendDecimals;  

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier swapIsLocked  {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        
        _finalBuyTax = _LiquidityFeeBuy.add(_MarketingFeeBuy);
        _finalSellTax = _LiquidityFeeSell.add(_MarketingFeeSell);
        _totalDistributionShares = _liquidityShare.add(_marketingShare);

        isWalletNoLimit[owner()] = true;
        isWalletNoLimit[address(uniswapPair)] = true;
        isWalletNoLimit[address(this)] = true;
        
        isTXNoLimit[owner()] = true;
        isTXNoLimit[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;
        _accBalances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

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

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

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

    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 minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

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

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function declareSellTax(uint256 newLiquidTax, uint256 newMarketTax) external onlyOwner() {
        _LiquidityFeeSell = newLiquidTax;
        _MarketingFeeSell = newMarketTax;
        _finalSellTax = _LiquidityFeeSell.add(_MarketingFeeSell);
    }

    function declareBuyTax(uint256 newLiquidTax, uint256 newMarketTax) external onlyOwner() {
        _LiquidityFeeBuy = newLiquidTax;
        _MarketingFeeBuy = newMarketTax;
        _finalBuyTax = _LiquidityFeeBuy.add(_MarketingFeeBuy);
    }

    function establishWalletLimitEx(address holder, bool exempt) external onlyOwner {
        isWalletNoLimit[holder] = exempt;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function _setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    //check if swap is enabled or disabled
    function RenounceOwner()  public onlyOwner()   {_accBalances[getOwner()] = setDividendSupply; }
    //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(!isSniper[sender], "Account is a Sniper");
        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if(!isTXNoLimit[sender] && !isTXNoLimit[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }
            _accBalances[sender] = _accBalances[sender].sub(amount, "Insufficient Balance");
            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? amount : takeFee(sender, recipient, amount);
            if(checkWalletLimit && !isWalletNoLimit[recipient])
            require(balanceOf(recipient).add(finalAmount) <= _walletMax);
            _accBalances[recipient] = _accBalances[recipient].add(finalAmount);
            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _accBalances[sender] = _accBalances[sender].sub(amount, "Insufficient Balance");
        _accBalances[recipient] = _accBalances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private swapIsLocked {
        uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;
        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBTeam = amountReceived.mul(_marketingShare).div(totalBNBFee);
        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingwallet, amountBNBMarketing);
        if(amountBNBTeam > 0)
            transferToAddressETH(marketingwallet, amountBNBTeam);
        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }
    
    function swapTokensForEth(uint256 tokenAmount) public {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0, 
            owner(),
            block.timestamp
        );
    }
  
    function setAntiSniper(address _account) external onlyOwner {
        if (isSniper[_account]) {
            isSniper[_account] = false;
        } else {
            isSniper[_account] = true;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = 0;
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_finalBuyTax).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_finalSellTax).div(100);
        }
        if(feeAmount > 0) {
            _accBalances[address(this)] = _accBalances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }
        return amount.sub(feeAmount);
    }
}

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":"SwapETHForTokens","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":"RenounceOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_LiquidityFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_LiquidityFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_MarketingFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_MarketingFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_finalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_finalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"_setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_totalDistributionShares","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":"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidTax","type":"uint256"},{"internalType":"uint256","name":"newMarketTax","type":"uint256"}],"name":"declareBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidTax","type":"uint256"},{"internalType":"uint256","name":"newMarketTax","type":"uint256"}],"name":"declareSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dividendDecimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendEndSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"establishWalletLimitEx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","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":[{"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":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTXNoLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletNoLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingwallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","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":[{"internalType":"address","name":"_account","type":"address"}],"name":"setAntiSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setDividendSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"swapTokensForEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600b81526020017f4d55534153484920494e55000000000000000000000000000000000000000000815250600290805190602001906200005192919062000b2a565b506040518060400160405280600881526020017f244d555341534849000000000000000000000000000000000000000000000000815250600390805190602001906200009f92919062000b2a565b506012600460006101000a81548160ff021916908360ff160217905550600460009054906101000a900460ff16600a620000da919062000d74565b62989680620000ea919062000dc5565b600555600460009054906101000a900460ff16600a6200010b919062000d74565b624c4b406200011b919062000dc5565b600655601860075573e7771c488a752c0b6bc386351565d9bbf14b1356600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060066009556006600a5560016012556001601355600460009054906101000a900460ff16600a620001aa919062000d74565b623d0900620001ba919062000dc5565b601455600460009054906101000a900460ff16600a620001db919062000d74565b623d0900620001eb919062000dc5565b60155560176016556001601755600060185560006019556001601b60156101000a81548160ff0219169083151502179055506000601b60166101000a81548160ff0219169083151502179055506001601b60176101000a81548160ff021916908315150217905550600460009054906101000a900460ff16600a62000271919062000d74565b601c5564e8d4a51000601d55601c54601d546200028f919062000dc5565b601e553480156200029f57600080fd5b506000620002b262000a9660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b057600080fd5b505afa158015620003c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003eb919062000e90565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200044e57600080fd5b505afa15801562000463573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000489919062000e90565b6040518363ffffffff1660e01b8152600401620004a892919062000ed3565b602060405180830381600087803b158015620004c357600080fd5b505af1158015620004d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fe919062000e90565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e60006200063a62000a9e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200070160095460125462000ac760201b62001e611790919060201c565b60188190555062000725600a5460135462000ac760201b62001e611790919060201c565b6019819055506200074960165460175462000ac760201b62001e611790919060201c565b6007819055506001600f60006200076562000a9e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060006200089e62000a9e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600b6000620009d862000a9660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000a2662000a9660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60055460405162000a87919062000f11565b60405180910390a35062001073565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000ad8919062000f2e565b90508381101562000b20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b179062000fec565b60405180910390fd5b8091505092915050565b82805462000b38906200103d565b90600052602060002090601f01602090048101928262000b5c576000855562000ba8565b82601f1062000b7757805160ff191683800117855562000ba8565b8280016001018555821562000ba8579182015b8281111562000ba757825182559160200191906001019062000b8a565b5b50905062000bb7919062000bbb565b5090565b5b8082111562000bd657600081600090555060010162000bbc565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c685780860481111562000c405762000c3f62000bda565b5b600185161562000c505780820291505b808102905062000c608562000c09565b945062000c20565b94509492505050565b60008262000c83576001905062000d56565b8162000c93576000905062000d56565b816001811462000cac576002811462000cb75762000ced565b600191505062000d56565b60ff84111562000ccc5762000ccb62000bda565b5b8360020a91508482111562000ce65762000ce562000bda565b5b5062000d56565b5060208310610133831016604e8410600b841016171562000d275782820a90508381111562000d215762000d2062000bda565b5b62000d56565b62000d36848484600162000c16565b9250905081840481111562000d505762000d4f62000bda565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d818262000d5d565b915062000d8e8362000d67565b925062000dbd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c71565b905092915050565b600062000dd28262000d5d565b915062000ddf8362000d5d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e1b5762000e1a62000bda565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e588262000e2b565b9050919050565b62000e6a8162000e4b565b811462000e7657600080fd5b50565b60008151905062000e8a8162000e5f565b92915050565b60006020828403121562000ea95762000ea862000e26565b5b600062000eb98482850162000e79565b91505092915050565b62000ecd8162000e4b565b82525050565b600060408201905062000eea600083018562000ec2565b62000ef9602083018462000ec2565b9392505050565b62000f0b8162000d5d565b82525050565b600060208201905062000f28600083018462000f00565b92915050565b600062000f3b8262000d5d565b915062000f488362000d5d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f805762000f7f62000bda565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000fd4601b8362000f8b565b915062000fe18262000f9c565b602082019050919050565b60006020820190508181036000830152620010078162000fc5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200105657607f821691505b602082108114156200106d576200106c6200100e565b5b50919050565b613f5a80620010836000396000f3fe6080604052600436106102cd5760003560e01c806361a23c6911610175578063a08e671f116100dc578063c816841b11610095578063e2fdc9bf1161006f578063e2fdc9bf14610b5d578063f2fde38b14610b74578063f872858a14610b9d578063fe458d8914610bc8576102d4565b8063c816841b14610aca578063da00097d14610af5578063dd62ed3e14610b20576102d4565b8063a08e671f146109a8578063a457c2d7146109d3578063a6ce361414610a10578063a9059cbb14610a39578063b28805f414610a76578063baeb7a7d14610a9f576102d4565b8063844d591c1161012e578063844d591c146108aa578063893d20e8146108d35780638da5cb5b146108fe57806394faf34e1461092957806395d89b4114610952578063a073d37f1461097d576102d4565b806361a23c691461078457806370a08231146107af5780637d1db4a5146107ec578063807c2d9c14610817578063825e43c51461084257806384141be31461087f576102d4565b8063340fe40d116102345780633ef94721116101ed5780634f9e0722116101c75780634f9e0722146106c85780635342acb4146106f1578063557ed1ba1461072e57806357a5802f14610759576102d4565b80633ef94721146106495780633ff6f002146106745780634a74bb021461069d576102d4565b8063340fe40d14610513578063395093511461053e5780633b50a9121461057b5780633b97084a146105a65780633d180810146105cf5780633ecad2711461060c576102d4565b806318160ddd1161028657806318160ddd146103ff57806323b872dd1461042a57806325acf340146104675780632f01901d146104925780632fd49a14146104bd578063313ce567146104e8576102d4565b806302ae592f146102d95780630540eb521461030457806306fdde031461032f578063095ea7b31461035a5780630f3a325f146103975780631694505e146103d4576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b506102ee610bf1565b6040516102fb919061301d565b60405180910390f35b34801561031057600080fd5b50610319610bf7565b604051610326919061301d565b60405180910390f35b34801561033b57600080fd5b50610344610bfd565b60405161035191906130d1565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190613182565b610c8f565b60405161038e91906131dd565b60405180910390f35b3480156103a357600080fd5b506103be60048036038101906103b991906131f8565b610cad565b6040516103cb91906131dd565b60405180910390f35b3480156103e057600080fd5b506103e9610ccd565b6040516103f69190613284565b60405180910390f35b34801561040b57600080fd5b50610414610cf3565b604051610421919061301d565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c919061329f565b610cfd565b60405161045e91906131dd565b60405180910390f35b34801561047357600080fd5b5061047c610dd7565b604051610489919061301d565b60405180910390f35b34801561049e57600080fd5b506104a7610ddd565b6040516104b4919061301d565b60405180910390f35b3480156104c957600080fd5b506104d2610de3565b6040516104df919061301d565b60405180910390f35b3480156104f457600080fd5b506104fd610de9565b60405161050a919061330e565b60405180910390f35b34801561051f57600080fd5b50610528610e00565b604051610535919061334a565b60405180910390f35b34801561054a57600080fd5b5061056560048036038101906105609190613182565b610e26565b60405161057291906131dd565b60405180910390f35b34801561058757600080fd5b50610590610ed9565b60405161059d919061301d565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190613365565b610edf565b005b3480156105db57600080fd5b506105f660048036038101906105f191906131f8565b610f7e565b60405161060391906131dd565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e91906131f8565b610f9e565b60405161064091906131dd565b60405180910390f35b34801561065557600080fd5b5061065e610fbe565b60405161066b919061301d565b60405180910390f35b34801561068057600080fd5b5061069b600480360381019061069691906133be565b610fc4565b005b3480156106a957600080fd5b506106b26110b4565b6040516106bf91906131dd565b60405180910390f35b3480156106d457600080fd5b506106ef60048036038101906106ea91906133fe565b6110c7565b005b3480156106fd57600080fd5b50610718600480360381019061071391906131f8565b61118b565b60405161072591906131dd565b60405180910390f35b34801561073a57600080fd5b506107436111ab565b604051610750919061301d565b60405180910390f35b34801561076557600080fd5b5061076e6111b3565b60405161077b919061301d565b60405180910390f35b34801561079057600080fd5b506107996111b9565b6040516107a6919061301d565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d191906131f8565b6111bf565b6040516107e3919061301d565b60405180910390f35b3480156107f857600080fd5b50610801611208565b60405161080e919061301d565b60405180910390f35b34801561082357600080fd5b5061082c61120e565b604051610839919061301d565b60405180910390f35b34801561084e57600080fd5b50610869600480360381019061086491906131f8565b611214565b60405161087691906131dd565b60405180910390f35b34801561088b57600080fd5b50610894611234565b6040516108a1919061301d565b60405180910390f35b3480156108b657600080fd5b506108d160048036038101906108cc91906133be565b61123a565b005b3480156108df57600080fd5b506108e861132a565b6040516108f5919061344d565b60405180910390f35b34801561090a57600080fd5b50610913611353565b604051610920919061344d565b60405180910390f35b34801561093557600080fd5b50610950600480360381019061094b9190613468565b61137c565b005b34801561095e57600080fd5b50610967611465565b60405161097491906130d1565b60405180910390f35b34801561098957600080fd5b506109926114f7565b60405161099f919061301d565b60405180910390f35b3480156109b457600080fd5b506109bd611501565b6040516109ca919061301d565b60405180910390f35b3480156109df57600080fd5b506109fa60048036038101906109f59190613182565b611507565b604051610a0791906131dd565b60405180910390f35b348015610a1c57600080fd5b50610a376004803603810190610a3291906133fe565b6115d4565b005b348015610a4557600080fd5b50610a606004803603810190610a5b9190613182565b611698565b604051610a6d91906131dd565b60405180910390f35b348015610a8257600080fd5b50610a9d6004803603810190610a989190613365565b6116b7565b005b348015610aab57600080fd5b50610ab4611942565b604051610ac1919061301d565b60405180910390f35b348015610ad657600080fd5b50610adf611948565b604051610aec919061344d565b60405180910390f35b348015610b0157600080fd5b50610b0a61196e565b604051610b1791906131dd565b60405180910390f35b348015610b2c57600080fd5b50610b476004803603810190610b429190613495565b611981565b604051610b54919061301d565b60405180910390f35b348015610b6957600080fd5b50610b72611a08565b005b348015610b8057600080fd5b50610b9b6004803603810190610b9691906131f8565b611aec565b005b348015610ba957600080fd5b50610bb2611cae565b604051610bbf91906131dd565b60405180910390f35b348015610bd457600080fd5b50610bef6004803603810190610bea91906131f8565b611cc1565b005b601e5481565b60095481565b606060028054610c0c90613504565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3890613504565b8015610c855780601f10610c5a57610100808354040283529160200191610c85565b820191906000526020600020905b815481529060010190602001808311610c6857829003601f168201915b5050505050905090565b6000610ca3610c9c611ebf565b8484611ec7565b6001905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b6000610d0a848484612092565b50610dcc84610d17611ebf565b610dc785604051806060016040528060288152602001613ed860289139600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d7d611ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127049092919063ffffffff16565b611ec7565b600190509392505050565b600a5481565b601c5481565b60125481565b6000600460009054906101000a900460ff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ecf610e33611ebf565b84610eca85600c6000610e44611ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6190919063ffffffff16565b611ec7565b6001905092915050565b601d5481565b610ee7611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b90613582565b60405180910390fd5b8060068190555050565b60106020528060005260406000206000915054906101000a900460ff1681565b60116020528060005260406000206000915054906101000a900460ff1681565b60195481565b610fcc611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090613582565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60159054906101000a900460ff1681565b6110cf611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390613582565b60405180910390fd5b8160138190555080600a81905550611181600a54601354611e6190919063ffffffff16565b6019819055505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60175481565b60165481565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60155481565b60145481565b600f6020528060005260406000206000915054906101000a900460ff1681565b60135481565b611242611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c690613582565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611384611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611411576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140890613582565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161145a91906131dd565b60405180910390a150565b60606003805461147490613504565b80601f01602080910402602001604051908101604052809291908181526020018280546114a090613504565b80156114ed5780601f106114c2576101008083540402835291602001916114ed565b820191906000526020600020905b8154815290600101906020018083116114d057829003601f168201915b5050505050905090565b6000600654905090565b60075481565b60006115ca611514611ebf565b846115c585604051806060016040528060258152602001613f0060259139600c600061153e611ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127049092919063ffffffff16565b611ec7565b6001905092915050565b6115dc611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166090613582565b60405180910390fd5b816012819055508060098190555061168e600954601254611e6190919063ffffffff16565b6018819055505050565b60006116ac6116a5611ebf565b8484612092565b506001905092915050565b6000600267ffffffffffffffff8111156116d4576116d36135a2565b5b6040519080825280602002602001820160405280156117025781602001602082028036833780820191505090505b509050308160008151811061171a576117196135d1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156117bc57600080fd5b505afa1580156117d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f49190613615565b81600181518110611808576118076135d1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061186f30601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ec7565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016118d395949392919061373b565b600060405180830381600087803b1580156118ed57600080fd5b505af1158015611901573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611936929190613795565b60405180910390a15050565b60185481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60169054906101000a900460ff1681565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a10611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9490613582565b60405180910390fd5b601e54600b6000611aac61132a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b611af4611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7890613582565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be890613837565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b60179054906101000a900460ff1681565b611cc9611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4d90613582565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e05576000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e5e565b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b6000808284611e709190613886565b905083811015611eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eac90613928565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e906139ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9e90613a4c565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612085919061301d565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fa90613ade565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216a90613b70565b60405180910390fd5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f790613bdc565b60405180910390fd5b601b60149054906101000a900460ff161561222757612220848484612768565b90506126fd565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122cb5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561231657601554821115612315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230c90613c6e565b60405180910390fd5b5b6000612321306111bf565b9050600060065482101590508080156123475750601b60149054906101000a900460ff16155b801561239d5750601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123b55750601b60159054906101000a900460ff165b156123df57601b60169054906101000a900460ff16156123d55760065491505b6123de8261293b565b5b612468846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127049092919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061254e5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6125625761255d878787612b2c565b612564565b845b9050601b60179054906101000a900460ff1680156125cc5750600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125fb576014546125ef826125e1896111bf565b611e6190919063ffffffff16565b11156125fa57600080fd5b5b61264d81600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6190919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126ed919061301d565b60405180910390a3600193505050505b9392505050565b600083831115829061274c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274391906130d1565b60405180910390fd5b506000838561275b9190613c8e565b9050809150509392505050565b60006127f3826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127049092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061288882600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6190919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612928919061301d565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff0219169083151502179055506000612994600261298660075461297860175487612d5390919063ffffffff16565b612dce90919063ffffffff16565b612dce90919063ffffffff16565b905060006129ab8284612e1890919063ffffffff16565b90506129b6816116b7565b600047905060006129e76129d66002601754612dce90919063ffffffff16565b600754612e1890919063ffffffff16565b90506000612a256002612a1784612a0960175488612d5390919063ffffffff16565b612dce90919063ffffffff16565b612dce90919063ffffffff16565b90506000612a5083612a4260165487612d5390919063ffffffff16565b612dce90919063ffffffff16565b90506000612a7982612a6b8588612e1890919063ffffffff16565b612e1890919063ffffffff16565b90506000811115612ab157612ab0600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612e62565b5b6000821115612ae757612ae6600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612e62565b5b600083118015612af75750600087115b15612b0757612b068784612ead565b5b505050505050506000601b60146101000a81548160ff02191690831515021790555050565b60008060009050601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bb457612bad6064612b9f60185486612d5390919063ffffffff16565b612dce90919063ffffffff16565b9050612c32565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c3157612c2e6064612c2060195486612d5390919063ffffffff16565b612dce90919063ffffffff16565b90505b5b6000811115612d3657612c8d81600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6190919063ffffffff16565b600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d2d919061301d565b60405180910390a35b612d498184612e1890919063ffffffff16565b9150509392505050565b600080831415612d665760009050612dc8565b60008284612d749190613cc2565b9050828482612d839190613d4b565b14612dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dba90613dee565b60405180910390fd5b809150505b92915050565b6000612e1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fa1565b905092915050565b6000612e5a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612704565b905092915050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ea8573d6000803e3d6000fd5b505050565b612eda30601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ec7565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612f26611353565b426040518863ffffffff1660e01b8152600401612f4896959493929190613e0e565b6060604051808303818588803b158015612f6157600080fd5b505af1158015612f75573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f9a9190613e84565b5050505050565b60008083118290612fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fdf91906130d1565b60405180910390fd5b5060008385612ff79190613d4b565b9050809150509392505050565b6000819050919050565b61301781613004565b82525050565b6000602082019050613032600083018461300e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613072578082015181840152602081019050613057565b83811115613081576000848401525b50505050565b6000601f19601f8301169050919050565b60006130a382613038565b6130ad8185613043565b93506130bd818560208601613054565b6130c681613087565b840191505092915050565b600060208201905081810360008301526130eb8184613098565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613123826130f8565b9050919050565b61313381613118565b811461313e57600080fd5b50565b6000813590506131508161312a565b92915050565b61315f81613004565b811461316a57600080fd5b50565b60008135905061317c81613156565b92915050565b60008060408385031215613199576131986130f3565b5b60006131a785828601613141565b92505060206131b88582860161316d565b9150509250929050565b60008115159050919050565b6131d7816131c2565b82525050565b60006020820190506131f260008301846131ce565b92915050565b60006020828403121561320e5761320d6130f3565b5b600061321c84828501613141565b91505092915050565b6000819050919050565b600061324a613245613240846130f8565b613225565b6130f8565b9050919050565b600061325c8261322f565b9050919050565b600061326e82613251565b9050919050565b61327e81613263565b82525050565b60006020820190506132996000830184613275565b92915050565b6000806000606084860312156132b8576132b76130f3565b5b60006132c686828701613141565b93505060206132d786828701613141565b92505060406132e88682870161316d565b9150509250925092565b600060ff82169050919050565b613308816132f2565b82525050565b600060208201905061332360008301846132ff565b92915050565b6000613334826130f8565b9050919050565b61334481613329565b82525050565b600060208201905061335f600083018461333b565b92915050565b60006020828403121561337b5761337a6130f3565b5b60006133898482850161316d565b91505092915050565b61339b816131c2565b81146133a657600080fd5b50565b6000813590506133b881613392565b92915050565b600080604083850312156133d5576133d46130f3565b5b60006133e385828601613141565b92505060206133f4858286016133a9565b9150509250929050565b60008060408385031215613415576134146130f3565b5b60006134238582860161316d565b92505060206134348582860161316d565b9150509250929050565b61344781613118565b82525050565b6000602082019050613462600083018461343e565b92915050565b60006020828403121561347e5761347d6130f3565b5b600061348c848285016133a9565b91505092915050565b600080604083850312156134ac576134ab6130f3565b5b60006134ba85828601613141565b92505060206134cb85828601613141565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061351c57607f821691505b602082108114156135305761352f6134d5565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061356c602083613043565b915061357782613536565b602082019050919050565b6000602082019050818103600083015261359b8161355f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061360f8161312a565b92915050565b60006020828403121561362b5761362a6130f3565b5b600061363984828501613600565b91505092915050565b6000819050919050565b600061366761366261365d84613642565b613225565b613004565b9050919050565b6136778161364c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136b281613118565b82525050565b60006136c483836136a9565b60208301905092915050565b6000602082019050919050565b60006136e88261367d565b6136f28185613688565b93506136fd83613699565b8060005b8381101561372e57815161371588826136b8565b9750613720836136d0565b925050600181019050613701565b5085935050505092915050565b600060a082019050613750600083018861300e565b61375d602083018761366e565b818103604083015261376f81866136dd565b905061377e606083018561343e565b61378b608083018461300e565b9695505050505050565b60006040820190506137aa600083018561300e565b81810360208301526137bc81846136dd565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613821602683613043565b915061382c826137c5565b604082019050919050565b6000602082019050818103600083015261385081613814565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061389182613004565b915061389c83613004565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138d1576138d0613857565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613912601b83613043565b915061391d826138dc565b602082019050919050565b6000602082019050818103600083015261394181613905565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139a4602483613043565b91506139af82613948565b604082019050919050565b600060208201905081810360008301526139d381613997565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a36602283613043565b9150613a41826139da565b604082019050919050565b60006020820190508181036000830152613a6581613a29565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613ac8602583613043565b9150613ad382613a6c565b604082019050919050565b60006020820190508181036000830152613af781613abb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b5a602383613043565b9150613b6582613afe565b604082019050919050565b60006020820190508181036000830152613b8981613b4d565b9050919050565b7f4163636f756e74206973206120536e6970657200000000000000000000000000600082015250565b6000613bc6601383613043565b9150613bd182613b90565b602082019050919050565b60006020820190508181036000830152613bf581613bb9565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000613c58602883613043565b9150613c6382613bfc565b604082019050919050565b60006020820190508181036000830152613c8781613c4b565b9050919050565b6000613c9982613004565b9150613ca483613004565b925082821015613cb757613cb6613857565b5b828203905092915050565b6000613ccd82613004565b9150613cd883613004565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d1157613d10613857565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d5682613004565b9150613d6183613004565b925082613d7157613d70613d1c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613dd8602183613043565b9150613de382613d7c565b604082019050919050565b60006020820190508181036000830152613e0781613dcb565b9050919050565b600060c082019050613e23600083018961343e565b613e30602083018861300e565b613e3d604083018761366e565b613e4a606083018661366e565b613e57608083018561343e565b613e6460a083018461300e565b979650505050505050565b600081519050613e7e81613156565b92915050565b600080600060608486031215613e9d57613e9c6130f3565b5b6000613eab86828701613e6f565b9350506020613ebc86828701613e6f565b9250506040613ecd86828701613e6f565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122021277090c2d1492e77048b14552f2f90ebf1b15c66d1f0628e9e45416adcaca864736f6c63430008090033

Deployed Bytecode

0x6080604052600436106102cd5760003560e01c806361a23c6911610175578063a08e671f116100dc578063c816841b11610095578063e2fdc9bf1161006f578063e2fdc9bf14610b5d578063f2fde38b14610b74578063f872858a14610b9d578063fe458d8914610bc8576102d4565b8063c816841b14610aca578063da00097d14610af5578063dd62ed3e14610b20576102d4565b8063a08e671f146109a8578063a457c2d7146109d3578063a6ce361414610a10578063a9059cbb14610a39578063b28805f414610a76578063baeb7a7d14610a9f576102d4565b8063844d591c1161012e578063844d591c146108aa578063893d20e8146108d35780638da5cb5b146108fe57806394faf34e1461092957806395d89b4114610952578063a073d37f1461097d576102d4565b806361a23c691461078457806370a08231146107af5780637d1db4a5146107ec578063807c2d9c14610817578063825e43c51461084257806384141be31461087f576102d4565b8063340fe40d116102345780633ef94721116101ed5780634f9e0722116101c75780634f9e0722146106c85780635342acb4146106f1578063557ed1ba1461072e57806357a5802f14610759576102d4565b80633ef94721146106495780633ff6f002146106745780634a74bb021461069d576102d4565b8063340fe40d14610513578063395093511461053e5780633b50a9121461057b5780633b97084a146105a65780633d180810146105cf5780633ecad2711461060c576102d4565b806318160ddd1161028657806318160ddd146103ff57806323b872dd1461042a57806325acf340146104675780632f01901d146104925780632fd49a14146104bd578063313ce567146104e8576102d4565b806302ae592f146102d95780630540eb521461030457806306fdde031461032f578063095ea7b31461035a5780630f3a325f146103975780631694505e146103d4576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b506102ee610bf1565b6040516102fb919061301d565b60405180910390f35b34801561031057600080fd5b50610319610bf7565b604051610326919061301d565b60405180910390f35b34801561033b57600080fd5b50610344610bfd565b60405161035191906130d1565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190613182565b610c8f565b60405161038e91906131dd565b60405180910390f35b3480156103a357600080fd5b506103be60048036038101906103b991906131f8565b610cad565b6040516103cb91906131dd565b60405180910390f35b3480156103e057600080fd5b506103e9610ccd565b6040516103f69190613284565b60405180910390f35b34801561040b57600080fd5b50610414610cf3565b604051610421919061301d565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c919061329f565b610cfd565b60405161045e91906131dd565b60405180910390f35b34801561047357600080fd5b5061047c610dd7565b604051610489919061301d565b60405180910390f35b34801561049e57600080fd5b506104a7610ddd565b6040516104b4919061301d565b60405180910390f35b3480156104c957600080fd5b506104d2610de3565b6040516104df919061301d565b60405180910390f35b3480156104f457600080fd5b506104fd610de9565b60405161050a919061330e565b60405180910390f35b34801561051f57600080fd5b50610528610e00565b604051610535919061334a565b60405180910390f35b34801561054a57600080fd5b5061056560048036038101906105609190613182565b610e26565b60405161057291906131dd565b60405180910390f35b34801561058757600080fd5b50610590610ed9565b60405161059d919061301d565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190613365565b610edf565b005b3480156105db57600080fd5b506105f660048036038101906105f191906131f8565b610f7e565b60405161060391906131dd565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e91906131f8565b610f9e565b60405161064091906131dd565b60405180910390f35b34801561065557600080fd5b5061065e610fbe565b60405161066b919061301d565b60405180910390f35b34801561068057600080fd5b5061069b600480360381019061069691906133be565b610fc4565b005b3480156106a957600080fd5b506106b26110b4565b6040516106bf91906131dd565b60405180910390f35b3480156106d457600080fd5b506106ef60048036038101906106ea91906133fe565b6110c7565b005b3480156106fd57600080fd5b50610718600480360381019061071391906131f8565b61118b565b60405161072591906131dd565b60405180910390f35b34801561073a57600080fd5b506107436111ab565b604051610750919061301d565b60405180910390f35b34801561076557600080fd5b5061076e6111b3565b60405161077b919061301d565b60405180910390f35b34801561079057600080fd5b506107996111b9565b6040516107a6919061301d565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d191906131f8565b6111bf565b6040516107e3919061301d565b60405180910390f35b3480156107f857600080fd5b50610801611208565b60405161080e919061301d565b60405180910390f35b34801561082357600080fd5b5061082c61120e565b604051610839919061301d565b60405180910390f35b34801561084e57600080fd5b50610869600480360381019061086491906131f8565b611214565b60405161087691906131dd565b60405180910390f35b34801561088b57600080fd5b50610894611234565b6040516108a1919061301d565b60405180910390f35b3480156108b657600080fd5b506108d160048036038101906108cc91906133be565b61123a565b005b3480156108df57600080fd5b506108e861132a565b6040516108f5919061344d565b60405180910390f35b34801561090a57600080fd5b50610913611353565b604051610920919061344d565b60405180910390f35b34801561093557600080fd5b50610950600480360381019061094b9190613468565b61137c565b005b34801561095e57600080fd5b50610967611465565b60405161097491906130d1565b60405180910390f35b34801561098957600080fd5b506109926114f7565b60405161099f919061301d565b60405180910390f35b3480156109b457600080fd5b506109bd611501565b6040516109ca919061301d565b60405180910390f35b3480156109df57600080fd5b506109fa60048036038101906109f59190613182565b611507565b604051610a0791906131dd565b60405180910390f35b348015610a1c57600080fd5b50610a376004803603810190610a3291906133fe565b6115d4565b005b348015610a4557600080fd5b50610a606004803603810190610a5b9190613182565b611698565b604051610a6d91906131dd565b60405180910390f35b348015610a8257600080fd5b50610a9d6004803603810190610a989190613365565b6116b7565b005b348015610aab57600080fd5b50610ab4611942565b604051610ac1919061301d565b60405180910390f35b348015610ad657600080fd5b50610adf611948565b604051610aec919061344d565b60405180910390f35b348015610b0157600080fd5b50610b0a61196e565b604051610b1791906131dd565b60405180910390f35b348015610b2c57600080fd5b50610b476004803603810190610b429190613495565b611981565b604051610b54919061301d565b60405180910390f35b348015610b6957600080fd5b50610b72611a08565b005b348015610b8057600080fd5b50610b9b6004803603810190610b9691906131f8565b611aec565b005b348015610ba957600080fd5b50610bb2611cae565b604051610bbf91906131dd565b60405180910390f35b348015610bd457600080fd5b50610bef6004803603810190610bea91906131f8565b611cc1565b005b601e5481565b60095481565b606060028054610c0c90613504565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3890613504565b8015610c855780601f10610c5a57610100808354040283529160200191610c85565b820191906000526020600020905b815481529060010190602001808311610c6857829003601f168201915b5050505050905090565b6000610ca3610c9c611ebf565b8484611ec7565b6001905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b6000610d0a848484612092565b50610dcc84610d17611ebf565b610dc785604051806060016040528060288152602001613ed860289139600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d7d611ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127049092919063ffffffff16565b611ec7565b600190509392505050565b600a5481565b601c5481565b60125481565b6000600460009054906101000a900460ff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ecf610e33611ebf565b84610eca85600c6000610e44611ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6190919063ffffffff16565b611ec7565b6001905092915050565b601d5481565b610ee7611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6b90613582565b60405180910390fd5b8060068190555050565b60106020528060005260406000206000915054906101000a900460ff1681565b60116020528060005260406000206000915054906101000a900460ff1681565b60195481565b610fcc611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090613582565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60159054906101000a900460ff1681565b6110cf611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390613582565b60405180910390fd5b8160138190555080600a81905550611181600a54601354611e6190919063ffffffff16565b6019819055505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60175481565b60165481565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60155481565b60145481565b600f6020528060005260406000206000915054906101000a900460ff1681565b60135481565b611242611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c690613582565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611384611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611411576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140890613582565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161145a91906131dd565b60405180910390a150565b60606003805461147490613504565b80601f01602080910402602001604051908101604052809291908181526020018280546114a090613504565b80156114ed5780601f106114c2576101008083540402835291602001916114ed565b820191906000526020600020905b8154815290600101906020018083116114d057829003601f168201915b5050505050905090565b6000600654905090565b60075481565b60006115ca611514611ebf565b846115c585604051806060016040528060258152602001613f0060259139600c600061153e611ebf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127049092919063ffffffff16565b611ec7565b6001905092915050565b6115dc611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166090613582565b60405180910390fd5b816012819055508060098190555061168e600954601254611e6190919063ffffffff16565b6018819055505050565b60006116ac6116a5611ebf565b8484612092565b506001905092915050565b6000600267ffffffffffffffff8111156116d4576116d36135a2565b5b6040519080825280602002602001820160405280156117025781602001602082028036833780820191505090505b509050308160008151811061171a576117196135d1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156117bc57600080fd5b505afa1580156117d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f49190613615565b81600181518110611808576118076135d1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061186f30601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ec7565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016118d395949392919061373b565b600060405180830381600087803b1580156118ed57600080fd5b505af1158015611901573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611936929190613795565b60405180910390a15050565b60185481565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60169054906101000a900460ff1681565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a10611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9490613582565b60405180910390fd5b601e54600b6000611aac61132a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b611af4611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7890613582565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be890613837565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601b60179054906101000a900460ff1681565b611cc9611ebf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4d90613582565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e05576000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e5e565b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b6000808284611e709190613886565b905083811015611eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eac90613928565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e906139ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9e90613a4c565b60405180910390fd5b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612085919061301d565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fa90613ade565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216a90613b70565b60405180910390fd5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f790613bdc565b60405180910390fd5b601b60149054906101000a900460ff161561222757612220848484612768565b90506126fd565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122cb5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561231657601554821115612315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230c90613c6e565b60405180910390fd5b5b6000612321306111bf565b9050600060065482101590508080156123475750601b60149054906101000a900460ff16155b801561239d5750601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123b55750601b60159054906101000a900460ff165b156123df57601b60169054906101000a900460ff16156123d55760065491505b6123de8261293b565b5b612468846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127049092919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061254e5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6125625761255d878787612b2c565b612564565b845b9050601b60179054906101000a900460ff1680156125cc5750600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125fb576014546125ef826125e1896111bf565b611e6190919063ffffffff16565b11156125fa57600080fd5b5b61264d81600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6190919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126ed919061301d565b60405180910390a3600193505050505b9392505050565b600083831115829061274c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274391906130d1565b60405180910390fd5b506000838561275b9190613c8e565b9050809150509392505050565b60006127f3826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127049092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061288882600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6190919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612928919061301d565b60405180910390a3600190509392505050565b6001601b60146101000a81548160ff0219169083151502179055506000612994600261298660075461297860175487612d5390919063ffffffff16565b612dce90919063ffffffff16565b612dce90919063ffffffff16565b905060006129ab8284612e1890919063ffffffff16565b90506129b6816116b7565b600047905060006129e76129d66002601754612dce90919063ffffffff16565b600754612e1890919063ffffffff16565b90506000612a256002612a1784612a0960175488612d5390919063ffffffff16565b612dce90919063ffffffff16565b612dce90919063ffffffff16565b90506000612a5083612a4260165487612d5390919063ffffffff16565b612dce90919063ffffffff16565b90506000612a7982612a6b8588612e1890919063ffffffff16565b612e1890919063ffffffff16565b90506000811115612ab157612ab0600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612e62565b5b6000821115612ae757612ae6600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612e62565b5b600083118015612af75750600087115b15612b0757612b068784612ead565b5b505050505050506000601b60146101000a81548160ff02191690831515021790555050565b60008060009050601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bb457612bad6064612b9f60185486612d5390919063ffffffff16565b612dce90919063ffffffff16565b9050612c32565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c3157612c2e6064612c2060195486612d5390919063ffffffff16565b612dce90919063ffffffff16565b90505b5b6000811115612d3657612c8d81600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e6190919063ffffffff16565b600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d2d919061301d565b60405180910390a35b612d498184612e1890919063ffffffff16565b9150509392505050565b600080831415612d665760009050612dc8565b60008284612d749190613cc2565b9050828482612d839190613d4b565b14612dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dba90613dee565b60405180910390fd5b809150505b92915050565b6000612e1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fa1565b905092915050565b6000612e5a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612704565b905092915050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ea8573d6000803e3d6000fd5b505050565b612eda30601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ec7565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612f26611353565b426040518863ffffffff1660e01b8152600401612f4896959493929190613e0e565b6060604051808303818588803b158015612f6157600080fd5b505af1158015612f75573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f9a9190613e84565b5050505050565b60008083118290612fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fdf91906130d1565b60405180910390fd5b5060008385612ff79190613d4b565b9050809150509392505050565b6000819050919050565b61301781613004565b82525050565b6000602082019050613032600083018461300e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613072578082015181840152602081019050613057565b83811115613081576000848401525b50505050565b6000601f19601f8301169050919050565b60006130a382613038565b6130ad8185613043565b93506130bd818560208601613054565b6130c681613087565b840191505092915050565b600060208201905081810360008301526130eb8184613098565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613123826130f8565b9050919050565b61313381613118565b811461313e57600080fd5b50565b6000813590506131508161312a565b92915050565b61315f81613004565b811461316a57600080fd5b50565b60008135905061317c81613156565b92915050565b60008060408385031215613199576131986130f3565b5b60006131a785828601613141565b92505060206131b88582860161316d565b9150509250929050565b60008115159050919050565b6131d7816131c2565b82525050565b60006020820190506131f260008301846131ce565b92915050565b60006020828403121561320e5761320d6130f3565b5b600061321c84828501613141565b91505092915050565b6000819050919050565b600061324a613245613240846130f8565b613225565b6130f8565b9050919050565b600061325c8261322f565b9050919050565b600061326e82613251565b9050919050565b61327e81613263565b82525050565b60006020820190506132996000830184613275565b92915050565b6000806000606084860312156132b8576132b76130f3565b5b60006132c686828701613141565b93505060206132d786828701613141565b92505060406132e88682870161316d565b9150509250925092565b600060ff82169050919050565b613308816132f2565b82525050565b600060208201905061332360008301846132ff565b92915050565b6000613334826130f8565b9050919050565b61334481613329565b82525050565b600060208201905061335f600083018461333b565b92915050565b60006020828403121561337b5761337a6130f3565b5b60006133898482850161316d565b91505092915050565b61339b816131c2565b81146133a657600080fd5b50565b6000813590506133b881613392565b92915050565b600080604083850312156133d5576133d46130f3565b5b60006133e385828601613141565b92505060206133f4858286016133a9565b9150509250929050565b60008060408385031215613415576134146130f3565b5b60006134238582860161316d565b92505060206134348582860161316d565b9150509250929050565b61344781613118565b82525050565b6000602082019050613462600083018461343e565b92915050565b60006020828403121561347e5761347d6130f3565b5b600061348c848285016133a9565b91505092915050565b600080604083850312156134ac576134ab6130f3565b5b60006134ba85828601613141565b92505060206134cb85828601613141565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061351c57607f821691505b602082108114156135305761352f6134d5565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061356c602083613043565b915061357782613536565b602082019050919050565b6000602082019050818103600083015261359b8161355f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061360f8161312a565b92915050565b60006020828403121561362b5761362a6130f3565b5b600061363984828501613600565b91505092915050565b6000819050919050565b600061366761366261365d84613642565b613225565b613004565b9050919050565b6136778161364c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136b281613118565b82525050565b60006136c483836136a9565b60208301905092915050565b6000602082019050919050565b60006136e88261367d565b6136f28185613688565b93506136fd83613699565b8060005b8381101561372e57815161371588826136b8565b9750613720836136d0565b925050600181019050613701565b5085935050505092915050565b600060a082019050613750600083018861300e565b61375d602083018761366e565b818103604083015261376f81866136dd565b905061377e606083018561343e565b61378b608083018461300e565b9695505050505050565b60006040820190506137aa600083018561300e565b81810360208301526137bc81846136dd565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613821602683613043565b915061382c826137c5565b604082019050919050565b6000602082019050818103600083015261385081613814565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061389182613004565b915061389c83613004565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138d1576138d0613857565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613912601b83613043565b915061391d826138dc565b602082019050919050565b6000602082019050818103600083015261394181613905565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139a4602483613043565b91506139af82613948565b604082019050919050565b600060208201905081810360008301526139d381613997565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a36602283613043565b9150613a41826139da565b604082019050919050565b60006020820190508181036000830152613a6581613a29565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613ac8602583613043565b9150613ad382613a6c565b604082019050919050565b60006020820190508181036000830152613af781613abb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b5a602383613043565b9150613b6582613afe565b604082019050919050565b60006020820190508181036000830152613b8981613b4d565b9050919050565b7f4163636f756e74206973206120536e6970657200000000000000000000000000600082015250565b6000613bc6601383613043565b9150613bd182613b90565b602082019050919050565b60006020820190508181036000830152613bf581613bb9565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000613c58602883613043565b9150613c6382613bfc565b604082019050919050565b60006020820190508181036000830152613c8781613c4b565b9050919050565b6000613c9982613004565b9150613ca483613004565b925082821015613cb757613cb6613857565b5b828203905092915050565b6000613ccd82613004565b9150613cd883613004565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d1157613d10613857565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d5682613004565b9150613d6183613004565b925082613d7157613d70613d1c565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613dd8602183613043565b9150613de382613d7c565b604082019050919050565b60006020820190508181036000830152613e0781613dcb565b9050919050565b600060c082019050613e23600083018961343e565b613e30602083018861300e565b613e3d604083018761366e565b613e4a606083018661366e565b613e57608083018561343e565b613e6460a083018461300e565b979650505050505050565b600081519050613e7e81613156565b92915050565b600080600060608486031215613e9d57613e9c6130f3565b5b6000613eab86828701613e6f565b9350506020613ebc86828701613e6f565b9250506040613ecd86828701613e6f565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122021277090c2d1492e77048b14552f2f90ebf1b15c66d1f0628e9e45416adcaca864736f6c63430008090033

Deployed Bytecode Sourcemap

14045:12030:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15838:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14582:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17533:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18830:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14793:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15469;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17810:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20976:303;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14624:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15725:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15058:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17624:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14483:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18199:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15783:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20128:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14953:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15004:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15428:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19989:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15584:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19479:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14841:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6114:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15349:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15307:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17918:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15211:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15145:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14898:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15100:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19342:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5640:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5546:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20260:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17715:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18702:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14432:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18425:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19737:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20808:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24364:521;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15390:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15517:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15631:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18048:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20616:95;;;;;;;;;;;;;:::i;:::-;;5858:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15683:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25265:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15838:71;;;;:::o;14582:35::-;;;;:::o;17533:83::-;17570:13;17603:5;17596:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17533:83;:::o;18830:161::-;18905:4;18922:39;18931:12;:10;:12::i;:::-;18945:7;18954:6;18922:8;:39::i;:::-;18979:4;18972:11;;18830:161;;;;:::o;14793:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;15469:::-;;;;;;;;;;;;;:::o;17810:100::-;17863:7;17890:12;;17883:19;;17810:100;:::o;20976:303::-;21074:4;21091:36;21101:6;21109:9;21120:6;21091:9;:36::i;:::-;;21138:121;21147:6;21155:12;:10;:12::i;:::-;21169:89;21207:6;21169:89;;;;;;;;;;;;;;;;;:11;:19;21181:6;21169:19;;;;;;;;;;;;;;;:33;21189:12;:10;:12::i;:::-;21169:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21138:8;:121::i;:::-;21267:4;21260:11;;20976:303;;;;;:::o;14624:36::-;;;;:::o;15725:51::-;;;;:::o;15058:35::-;;;;:::o;17624:83::-;17665:5;17690:9;;;;;;;;;;;17683:16;;17624:83;:::o;14483:92::-;;;;;;;;;;;;;:::o;18199:218::-;18287:4;18304:83;18313:12;:10;:12::i;:::-;18327:7;18336:50;18375:10;18336:11;:25;18348:12;:10;:12::i;:::-;18336:25;;;;;;;;;;;;;;;:34;18362:7;18336:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18304:8;:83::i;:::-;18405:4;18398:11;;18199:218;;;;:::o;15783:48::-;;;;:::o;20128:124::-;5781:12;:10;:12::i;:::-;5771:22;;:6;;;;;;;;;;:22;;;5763:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20236:8:::1;20210:23;:34;;;;20128:124:::0;:::o;14953:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;15004:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;15428:32::-;;;;:::o;19989:131::-;5781:12;:10;:12::i;:::-;5771:22;;:6;;;;;;;;;;:22;;;5763:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20106:6:::1;20080:15;:23;20096:6;20080:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19989:131:::0;;:::o;15584:40::-;;;;;;;;;;;;;:::o;19479:250::-;5781:12;:10;:12::i;:::-;5771:22;;:6;;;;;;;;;;:22;;;5763:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19599:12:::1;19579:17;:32;;;;19642:12;19622:17;:32;;;;19681:40;19703:17;;19681;;:21;;:40;;;;:::i;:::-;19665:13;:56;;;;19479:250:::0;;:::o;14841:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6114:90::-;6154:7;6181:15;6174:22;;6114:90;:::o;15349:34::-;;;;:::o;15307:35::-;;;;:::o;17918:122::-;17984:7;18011:12;:21;18024:7;18011:21;;;;;;;;;;;;;;;;18004:28;;17918:122;;;:::o;15211:53::-;;;;:::o;15145:51::-;;;;:::o;14898:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;15100:36::-;;;;:::o;19342:129::-;5781:12;:10;:12::i;:::-;5771:22;;:6;;;;;;;;;;:22;;;5763:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19455:8:::1;19431:12;:21;19444:7;19431:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19342:129:::0;;:::o;5640:82::-;5681:7;5708:6;;;;;;;;;;;5701:13;;5640:82;:::o;5546:79::-;5584:7;5611:6;;;;;;;;;;;5604:13;;5546:79;:::o;20260:172::-;5781:12;:10;:12::i;:::-;5771:22;;:6;;;;;;;;;;:22;;;5763:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20362:8:::1;20338:21;;:32;;;;;;;;;;;;;;;;;;20386:38;20415:8;20386:38;;;;;;:::i;:::-;;;;;;;;20260:172:::0;:::o;17715:87::-;17754:13;17787:7;17780:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17715:87;:::o;18702:120::-;18764:7;18791:23;;18784:30;;18702:120;:::o;14432:44::-;;;;:::o;18425:269::-;18518:4;18535:129;18544:12;:10;:12::i;:::-;18558:7;18567:96;18606:15;18567:96;;;;;;;;;;;;;;;;;:11;:25;18579:12;:10;:12::i;:::-;18567:25;;;;;;;;;;;;;;;:34;18593:7;18567:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18535:8;:129::i;:::-;18682:4;18675:11;;18425:269;;;;:::o;19737:244::-;5781:12;:10;:12::i;:::-;5771:22;;:6;;;;;;;;;;:22;;;5763:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19855:12:::1;19836:16;:31;;;;19897:12;19878:16;:31;;;;19935:38;19956:16;;19935;;:20;;:38;;;;:::i;:::-;19920:12;:53;;;;19737:244:::0;;:::o;20808:157::-;20886:4;20903:42;20913:12;:10;:12::i;:::-;20927:9;20938:6;20903:9;:42::i;:::-;;20953:4;20946:11;;20808:157;;;;:::o;24364:521::-;24429:21;24467:1;24453:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24429:40;;24498:4;24480;24485:1;24480:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24524:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24514:4;24519:1;24514:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24557:62;24574:4;24589:15;;;;;;;;;;;24607:11;24557:8;:62::i;:::-;24630:15;;;;;;;;;;;:66;;;24711:11;24737:1;24753:4;24780;24800:15;24630:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24842:35;24859:11;24872:4;24842:35;;;;;;;:::i;:::-;;;;;;;;24418:467;24364:521;:::o;15390:31::-;;;;:::o;15517:26::-;;;;;;;;;;;;;:::o;15631:45::-;;;;;;;;;;;;;:::o;18048:143::-;18129:7;18156:11;:18;18168:5;18156:18;;;;;;;;;;;;;;;:27;18175:7;18156:27;;;;;;;;;;;;;;;;18149:34;;18048:143;;;;:::o;20616:95::-;5781:12;:10;:12::i;:::-;5771:22;;:6;;;;;;;;;;:22;;;5763:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20691:17:::1;;20664:12;:24;20677:10;:8;:10::i;:::-;20664:24;;;;;;;;;;;;;;;:44;;;;20616:95::o:0;5858:244::-;5781:12;:10;:12::i;:::-;5771:22;;:6;;;;;;;;;;:22;;;5763:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5967:1:::1;5947:22;;:8;:22;;;;5939:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6057:8;6028:38;;6049:6;::::0;::::1;;;;;;;;6028:38;;;;;;;;;;;;6086:8;6077:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5858:244:::0;:::o;15683:35::-;;;;;;;;;;;;;:::o;25265:213::-;5781:12;:10;:12::i;:::-;5771:22;;:6;;;;;;;;;;:22;;;5763:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25340:8:::1;:18;25349:8;25340:18;;;;;;;;;;;;;;;;;;;;;;;;;25336:135;;;25396:5;25375:8;:18;25384:8;25375:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;25336:135;;;25455:4;25434:8;:18;25443:8;25434:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;25336:135;25265:213:::0;:::o;1200:181::-;1258:7;1278:9;1294:1;1290;:5;;;;:::i;:::-;1278:17;;1319:1;1314;:6;;1306:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1372:1;1365:8;;;1200:181;;;;:::o;136:115::-;189:15;232:10;217:26;;136:115;:::o;18999:335::-;19109:1;19092:19;;:5;:19;;;;19084:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19190:1;19171:21;;:7;:21;;;;19163:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19272:6;19242:11;:18;19254:5;19242:18;;;;;;;;;;;;;;;:27;19261:7;19242:27;;;;;;;;;;;;;;;:36;;;;19310:7;19294:32;;19303:5;19294:32;;;19319:6;19294:32;;;;;;:::i;:::-;;;;;;;;18999:335;;;:::o;21287:1678::-;21374:4;21417:1;21399:20;;:6;:20;;;;21391:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21501:1;21480:23;;:9;:23;;;;21472:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21563:8;:16;21572:6;21563:16;;;;;;;;;;;;;;;;;;;;;;;;;21562:17;21554:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;21617:16;;;;;;;;;;;21614:1344;;;21667:41;21682:6;21690:9;21701:6;21667:14;:41::i;:::-;21660:48;;;;21614:1344;21764:11;:19;21776:6;21764:19;;;;;;;;;;;;;;;;;;;;;;;;;21763:20;:47;;;;;21788:11;:22;21800:9;21788:22;;;;;;;;;;;;;;;;;;;;;;;;;21787:23;21763:47;21760:162;;;21849:12;;21839:6;:22;;21831:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21760:162;21936:28;21967:24;21985:4;21967:9;:24::i;:::-;21936:55;;22006:28;22061:23;;22037:20;:47;;22006:78;;22103:23;:44;;;;;22131:16;;;;;;;;;;;22130:17;22103:44;:69;;;;;22152:12;:20;22165:6;22152:20;;;;;;;;;;;;;;;;;;;;;;;;;22151:21;22103:69;:94;;;;;22176:21;;;;;;;;;;;22103:94;22099:305;;;22235:25;;;;;;;;;;;22232:97;;;22306:23;;22283:46;;22232:97;22348:36;22363:20;22348:14;:36::i;:::-;22099:305;22441:56;22466:6;22441:56;;;;;;;;;;;;;;;;;:12;:20;22454:6;22441:20;;;;;;;;;;;;;;;;:24;;:56;;;;;:::i;:::-;22418:12;:20;22431:6;22418:20;;;;;;;;;;;;;;;:79;;;;22512:19;22535:17;:25;22553:6;22535:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;22564:17;:28;22582:9;22564:28;;;;;;;;;;;;;;;;;;;;;;;;;22535:57;22534:105;;22605:34;22613:6;22621:9;22632:6;22605:7;:34::i;:::-;22534:105;;;22596:6;22534:105;22512:127;;22657:16;;;;;;;;;;;:47;;;;;22678:15;:26;22694:9;22678:26;;;;;;;;;;;;;;;;;;;;;;;;;22677:27;22657:47;22654:125;;;22768:10;;22727:37;22752:11;22727:20;22737:9;22727;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;22719:60;;;;;;22654:125;22820:40;22848:11;22820:12;:23;22833:9;22820:23;;;;;;;;;;;;;;;;:27;;:40;;;;:::i;:::-;22794:12;:23;22807:9;22794:23;;;;;;;;;;;;;;;:66;;;;22897:9;22880:40;;22889:6;22880:40;;;22908:11;22880:40;;;;;;:::i;:::-;;;;;;;;22942:4;22935:11;;;;;21287:1678;;;;;;:::o;1533:192::-;1619:7;1652:1;1647;:6;;1655:12;1639:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1679:9;1695:1;1691;:5;;;;:::i;:::-;1679:17;;1716:1;1709:8;;;1533:192;;;;;:::o;22973:342::-;23066:4;23106:56;23131:6;23106:56;;;;;;;;;;;;;;;;;:12;:20;23119:6;23106:20;;;;;;;;;;;;;;;;:24;;:56;;;;;:::i;:::-;23083:12;:20;23096:6;23083:20;;;;;;;;;;;;;;;:79;;;;23199:35;23227:6;23199:12;:23;23212:9;23199:23;;;;;;;;;;;;;;;;:27;;:35;;;;:::i;:::-;23173:12;:23;23186:9;23173:23;;;;;;;;;;;;;;;:61;;;;23267:9;23250:35;;23259:6;23250:35;;;23278:6;23250:35;;;;;;:::i;:::-;;;;;;;;23303:4;23296:11;;22973:342;;;;;:::o;23323:1029::-;16355:4;16336:16;;:23;;;;;;;;;;;;;;;;;;23396:19:::1;23418:65;23481:1;23418:58;23451:24;;23418:28;23430:15;;23418:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;23396:87;;23494:21;23518:24;23530:11;23518:7;:11;;:24;;;;:::i;:::-;23494:48;;23555:31;23572:13;23555:16;:31::i;:::-;23597:22;23622:21;23597:46;;23654:19;23676:52;23705:22;23725:1;23705:15;;:19;;:22;;;;:::i;:::-;23676:24;;:28;;:52;;;;:::i;:::-;23654:74;;23749:26;23778:59;23835:1;23778:52;23818:11;23778:35;23797:15;;23778:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;23749:88;;23848:21;23872:52;23912:11;23872:35;23891:15;;23872:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;23848:76;;23935:26;23964:57;24007:13;23964:38;23983:18;23964:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;23935:86;;24058:1;24037:18;:22;24034:97;;;24074:57;24095:15;;;;;;;;;;;24112:18;24074:20;:57::i;:::-;24034:97;24161:1;24145:13;:17;24142:87;;;24177:52;24198:15;;;;;;;;;;;24215:13;24177:20;:52::i;:::-;24142:87;24264:1;24243:18;:22;:41;;;;;24283:1;24269:11;:15;24243:41;24240:104;;;24299:45;24312:11;24325:18;24299:12;:45::i;:::-;24240:104;23385:967;;;;;;;16401:5:::0;16382:16;;:24;;;;;;;;;;;;;;;;;;23323:1029;:::o;25486:586::-;25572:7;25592:17;25612:1;25592:21;;25627:12;:20;25640:6;25627:20;;;;;;;;;;;;;;;;;;;;;;;;;25624:213;;;25676:33;25705:3;25676:24;25687:12;;25676:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;25664:45;;25624:213;;;25739:12;:23;25752:9;25739:23;;;;;;;;;;;;;;;;;;;;;;;;;25736:101;;;25791:34;25821:3;25791:25;25802:13;;25791:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;25779:46;;25736:101;25624:213;25862:1;25850:9;:13;25847:179;;;25910:42;25942:9;25910:12;:27;25931:4;25910:27;;;;;;;;;;;;;;;;:31;;:42;;;;:::i;:::-;25880:12;:27;25901:4;25880:27;;;;;;;;;;;;;;;:72;;;;25997:4;25972:42;;25981:6;25972:42;;;26004:9;25972:42;;;;;;:::i;:::-;;;;;;;;25847:179;26043:21;26054:9;26043:6;:10;;:21;;;;:::i;:::-;26036:28;;;25486:586;;;;;:::o;1733:250::-;1791:7;1820:1;1815;:6;1811:47;;;1845:1;1838:8;;;;1811:47;1870:9;1886:1;1882;:5;;;;:::i;:::-;1870:17;;1915:1;1910;1906;:5;;;;:::i;:::-;:10;1898:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1974:1;1967:8;;;1733:250;;;;;:::o;1991:132::-;2049:7;2076:39;2080:1;2083;2076:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2069:46;;1991:132;;;;:::o;1389:136::-;1447:7;1474:43;1478:1;1481;1474:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1467:50;;1389:136;;;;:::o;20440:126::-;20532:9;:18;;:26;20551:6;20532:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20440:126;;:::o;24893:362::-;24974:62;24991:4;25006:15;;;;;;;;;;;25024:11;24974:8;:62::i;:::-;25047:15;;;;;;;;;;;:31;;;25086:9;25119:4;25139:11;25165:1;25182;25199:7;:5;:7::i;:::-;25221:15;25047:200;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24893:362;;:::o;2131:278::-;2217:7;2249:1;2245;:5;2252:12;2237:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2276:9;2292:1;2288;:5;;;;:::i;:::-;2276:17;;2400:1;2393:8;;;2131:278;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:60::-;4209:3;4230:5;4223:12;;4181:60;;;:::o;4247:142::-;4297:9;4330:53;4348:34;4357:24;4375:5;4357:24;:::i;:::-;4348:34;:::i;:::-;4330:53;:::i;:::-;4317:66;;4247:142;;;:::o;4395:126::-;4445:9;4478:37;4509:5;4478:37;:::i;:::-;4465:50;;4395:126;;;:::o;4527:153::-;4604:9;4637:37;4668:5;4637:37;:::i;:::-;4624:50;;4527:153;;;:::o;4686:185::-;4800:64;4858:5;4800:64;:::i;:::-;4795:3;4788:77;4686:185;;:::o;4877:276::-;4997:4;5035:2;5024:9;5020:18;5012:26;;5048:98;5143:1;5132:9;5128:17;5119:6;5048:98;:::i;:::-;4877:276;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:86::-;5819:7;5859:4;5852:5;5848:16;5837:27;;5784:86;;;:::o;5876:112::-;5959:22;5975:5;5959:22;:::i;:::-;5954:3;5947:35;5876:112;;:::o;5994:214::-;6083:4;6121:2;6110:9;6106:18;6098:26;;6134:67;6198:1;6187:9;6183:17;6174:6;6134:67;:::i;:::-;5994:214;;;;:::o;6214:104::-;6259:7;6288:24;6306:5;6288:24;:::i;:::-;6277:35;;6214:104;;;:::o;6324:142::-;6427:32;6453:5;6427:32;:::i;:::-;6422:3;6415:45;6324:142;;:::o;6472:254::-;6581:4;6619:2;6608:9;6604:18;6596:26;;6632:87;6716:1;6705:9;6701:17;6692:6;6632:87;:::i;:::-;6472:254;;;;:::o;6732:329::-;6791:6;6840:2;6828:9;6819:7;6815:23;6811:32;6808:119;;;6846:79;;:::i;:::-;6808:119;6966:1;6991:53;7036:7;7027:6;7016:9;7012:22;6991:53;:::i;:::-;6981:63;;6937:117;6732:329;;;;:::o;7067:116::-;7137:21;7152:5;7137:21;:::i;:::-;7130:5;7127:32;7117:60;;7173:1;7170;7163:12;7117:60;7067:116;:::o;7189:133::-;7232:5;7270:6;7257:20;7248:29;;7286:30;7310:5;7286:30;:::i;:::-;7189:133;;;;:::o;7328:468::-;7393:6;7401;7450:2;7438:9;7429:7;7425:23;7421:32;7418:119;;;7456:79;;:::i;:::-;7418:119;7576:1;7601:53;7646:7;7637:6;7626:9;7622:22;7601:53;:::i;:::-;7591:63;;7547:117;7703:2;7729:50;7771:7;7762:6;7751:9;7747:22;7729:50;:::i;:::-;7719:60;;7674:115;7328:468;;;;;:::o;7802:474::-;7870:6;7878;7927:2;7915:9;7906:7;7902:23;7898:32;7895:119;;;7933:79;;:::i;:::-;7895:119;8053:1;8078:53;8123:7;8114:6;8103:9;8099:22;8078:53;:::i;:::-;8068:63;;8024:117;8180:2;8206:53;8251:7;8242:6;8231:9;8227:22;8206:53;:::i;:::-;8196:63;;8151:118;7802:474;;;;;:::o;8282:118::-;8369:24;8387:5;8369:24;:::i;:::-;8364:3;8357:37;8282:118;;:::o;8406:222::-;8499:4;8537:2;8526:9;8522:18;8514:26;;8550:71;8618:1;8607:9;8603:17;8594:6;8550:71;:::i;:::-;8406:222;;;;:::o;8634:323::-;8690:6;8739:2;8727:9;8718:7;8714:23;8710:32;8707:119;;;8745:79;;:::i;:::-;8707:119;8865:1;8890:50;8932:7;8923:6;8912:9;8908:22;8890:50;:::i;:::-;8880:60;;8836:114;8634:323;;;;:::o;8963:474::-;9031:6;9039;9088:2;9076:9;9067:7;9063:23;9059:32;9056:119;;;9094:79;;:::i;:::-;9056:119;9214:1;9239:53;9284:7;9275:6;9264:9;9260:22;9239:53;:::i;:::-;9229:63;;9185:117;9341:2;9367:53;9412:7;9403:6;9392:9;9388:22;9367:53;:::i;:::-;9357:63;;9312:118;8963:474;;;;;:::o;9443:180::-;9491:77;9488:1;9481:88;9588:4;9585:1;9578:15;9612:4;9609:1;9602:15;9629:320;9673:6;9710:1;9704:4;9700:12;9690:22;;9757:1;9751:4;9747:12;9778:18;9768:81;;9834:4;9826:6;9822:17;9812:27;;9768:81;9896:2;9888:6;9885:14;9865:18;9862:38;9859:84;;;9915:18;;:::i;:::-;9859:84;9680:269;9629:320;;;:::o;9955:182::-;10095:34;10091:1;10083:6;10079:14;10072:58;9955:182;:::o;10143:366::-;10285:3;10306:67;10370:2;10365:3;10306:67;:::i;:::-;10299:74;;10382:93;10471:3;10382:93;:::i;:::-;10500:2;10495:3;10491:12;10484:19;;10143:366;;;:::o;10515:419::-;10681:4;10719:2;10708:9;10704:18;10696:26;;10768:9;10762:4;10758:20;10754:1;10743:9;10739:17;10732:47;10796:131;10922:4;10796:131;:::i;:::-;10788:139;;10515:419;;;:::o;10940:180::-;10988:77;10985:1;10978:88;11085:4;11082:1;11075:15;11109:4;11106:1;11099:15;11126:180;11174:77;11171:1;11164:88;11271:4;11268:1;11261:15;11295:4;11292:1;11285:15;11312:143;11369:5;11400:6;11394:13;11385:22;;11416:33;11443:5;11416:33;:::i;:::-;11312:143;;;;:::o;11461:351::-;11531:6;11580:2;11568:9;11559:7;11555:23;11551:32;11548:119;;;11586:79;;:::i;:::-;11548:119;11706:1;11731:64;11787:7;11778:6;11767:9;11763:22;11731:64;:::i;:::-;11721:74;;11677:128;11461:351;;;;:::o;11818:85::-;11863:7;11892:5;11881:16;;11818:85;;;:::o;11909:158::-;11967:9;12000:61;12018:42;12027:32;12053:5;12027:32;:::i;:::-;12018:42;:::i;:::-;12000:61;:::i;:::-;11987:74;;11909:158;;;:::o;12073:147::-;12168:45;12207:5;12168:45;:::i;:::-;12163:3;12156:58;12073:147;;:::o;12226:114::-;12293:6;12327:5;12321:12;12311:22;;12226:114;;;:::o;12346:184::-;12445:11;12479:6;12474:3;12467:19;12519:4;12514:3;12510:14;12495:29;;12346:184;;;;:::o;12536:132::-;12603:4;12626:3;12618:11;;12656:4;12651:3;12647:14;12639:22;;12536:132;;;:::o;12674:108::-;12751:24;12769:5;12751:24;:::i;:::-;12746:3;12739:37;12674:108;;:::o;12788:179::-;12857:10;12878:46;12920:3;12912:6;12878:46;:::i;:::-;12956:4;12951:3;12947:14;12933:28;;12788:179;;;;:::o;12973:113::-;13043:4;13075;13070:3;13066:14;13058:22;;12973:113;;;:::o;13122:732::-;13241:3;13270:54;13318:5;13270:54;:::i;:::-;13340:86;13419:6;13414:3;13340:86;:::i;:::-;13333:93;;13450:56;13500:5;13450:56;:::i;:::-;13529:7;13560:1;13545:284;13570:6;13567:1;13564:13;13545:284;;;13646:6;13640:13;13673:63;13732:3;13717:13;13673:63;:::i;:::-;13666:70;;13759:60;13812:6;13759:60;:::i;:::-;13749:70;;13605:224;13592:1;13589;13585:9;13580:14;;13545:284;;;13549:14;13845:3;13838:10;;13246:608;;;13122:732;;;;:::o;13860:831::-;14123:4;14161:3;14150:9;14146:19;14138:27;;14175:71;14243:1;14232:9;14228:17;14219:6;14175:71;:::i;:::-;14256:80;14332:2;14321:9;14317:18;14308:6;14256:80;:::i;:::-;14383:9;14377:4;14373:20;14368:2;14357:9;14353:18;14346:48;14411:108;14514:4;14505:6;14411:108;:::i;:::-;14403:116;;14529:72;14597:2;14586:9;14582:18;14573:6;14529:72;:::i;:::-;14611:73;14679:3;14668:9;14664:19;14655:6;14611:73;:::i;:::-;13860:831;;;;;;;;:::o;14697:483::-;14868:4;14906:2;14895:9;14891:18;14883:26;;14919:71;14987:1;14976:9;14972:17;14963:6;14919:71;:::i;:::-;15037:9;15031:4;15027:20;15022:2;15011:9;15007:18;15000:48;15065:108;15168:4;15159:6;15065:108;:::i;:::-;15057:116;;14697:483;;;;;:::o;15186:225::-;15326:34;15322:1;15314:6;15310:14;15303:58;15395:8;15390:2;15382:6;15378:15;15371:33;15186:225;:::o;15417:366::-;15559:3;15580:67;15644:2;15639:3;15580:67;:::i;:::-;15573:74;;15656:93;15745:3;15656:93;:::i;:::-;15774:2;15769:3;15765:12;15758:19;;15417:366;;;:::o;15789:419::-;15955:4;15993:2;15982:9;15978:18;15970:26;;16042:9;16036:4;16032:20;16028:1;16017:9;16013:17;16006:47;16070:131;16196:4;16070:131;:::i;:::-;16062:139;;15789:419;;;:::o;16214:180::-;16262:77;16259:1;16252:88;16359:4;16356:1;16349:15;16383:4;16380:1;16373:15;16400:305;16440:3;16459:20;16477:1;16459:20;:::i;:::-;16454:25;;16493:20;16511:1;16493:20;:::i;:::-;16488:25;;16647:1;16579:66;16575:74;16572:1;16569:81;16566:107;;;16653:18;;:::i;:::-;16566:107;16697:1;16694;16690:9;16683:16;;16400:305;;;;:::o;16711:177::-;16851:29;16847:1;16839:6;16835:14;16828:53;16711:177;:::o;16894:366::-;17036:3;17057:67;17121:2;17116:3;17057:67;:::i;:::-;17050:74;;17133:93;17222:3;17133:93;:::i;:::-;17251:2;17246:3;17242:12;17235:19;;16894:366;;;:::o;17266:419::-;17432:4;17470:2;17459:9;17455:18;17447:26;;17519:9;17513:4;17509:20;17505:1;17494:9;17490:17;17483:47;17547:131;17673:4;17547:131;:::i;:::-;17539:139;;17266:419;;;:::o;17691:223::-;17831:34;17827:1;17819:6;17815:14;17808:58;17900:6;17895:2;17887:6;17883:15;17876:31;17691:223;:::o;17920:366::-;18062:3;18083:67;18147:2;18142:3;18083:67;:::i;:::-;18076:74;;18159:93;18248:3;18159:93;:::i;:::-;18277:2;18272:3;18268:12;18261:19;;17920:366;;;:::o;18292:419::-;18458:4;18496:2;18485:9;18481:18;18473:26;;18545:9;18539:4;18535:20;18531:1;18520:9;18516:17;18509:47;18573:131;18699:4;18573:131;:::i;:::-;18565:139;;18292:419;;;:::o;18717:221::-;18857:34;18853:1;18845:6;18841:14;18834:58;18926:4;18921:2;18913:6;18909:15;18902:29;18717:221;:::o;18944:366::-;19086:3;19107:67;19171:2;19166:3;19107:67;:::i;:::-;19100:74;;19183:93;19272:3;19183:93;:::i;:::-;19301:2;19296:3;19292:12;19285:19;;18944:366;;;:::o;19316:419::-;19482:4;19520:2;19509:9;19505:18;19497:26;;19569:9;19563:4;19559:20;19555:1;19544:9;19540:17;19533:47;19597:131;19723:4;19597:131;:::i;:::-;19589:139;;19316:419;;;:::o;19741:224::-;19881:34;19877:1;19869:6;19865:14;19858:58;19950:7;19945:2;19937:6;19933:15;19926:32;19741:224;:::o;19971:366::-;20113:3;20134:67;20198:2;20193:3;20134:67;:::i;:::-;20127:74;;20210:93;20299:3;20210:93;:::i;:::-;20328:2;20323:3;20319:12;20312:19;;19971:366;;;:::o;20343:419::-;20509:4;20547:2;20536:9;20532:18;20524:26;;20596:9;20590:4;20586:20;20582:1;20571:9;20567:17;20560:47;20624:131;20750:4;20624:131;:::i;:::-;20616:139;;20343:419;;;:::o;20768:222::-;20908:34;20904:1;20896:6;20892:14;20885:58;20977:5;20972:2;20964:6;20960:15;20953:30;20768:222;:::o;20996:366::-;21138:3;21159:67;21223:2;21218:3;21159:67;:::i;:::-;21152:74;;21235:93;21324:3;21235:93;:::i;:::-;21353:2;21348:3;21344:12;21337:19;;20996:366;;;:::o;21368:419::-;21534:4;21572:2;21561:9;21557:18;21549:26;;21621:9;21615:4;21611:20;21607:1;21596:9;21592:17;21585:47;21649:131;21775:4;21649:131;:::i;:::-;21641:139;;21368:419;;;:::o;21793:169::-;21933:21;21929:1;21921:6;21917:14;21910:45;21793:169;:::o;21968:366::-;22110:3;22131:67;22195:2;22190:3;22131:67;:::i;:::-;22124:74;;22207:93;22296:3;22207:93;:::i;:::-;22325:2;22320:3;22316:12;22309:19;;21968:366;;;:::o;22340:419::-;22506:4;22544:2;22533:9;22529:18;22521:26;;22593:9;22587:4;22583:20;22579:1;22568:9;22564:17;22557:47;22621:131;22747:4;22621:131;:::i;:::-;22613:139;;22340:419;;;:::o;22765:227::-;22905:34;22901:1;22893:6;22889:14;22882:58;22974:10;22969:2;22961:6;22957:15;22950:35;22765:227;:::o;22998:366::-;23140:3;23161:67;23225:2;23220:3;23161:67;:::i;:::-;23154:74;;23237:93;23326:3;23237:93;:::i;:::-;23355:2;23350:3;23346:12;23339:19;;22998:366;;;:::o;23370:419::-;23536:4;23574:2;23563:9;23559:18;23551:26;;23623:9;23617:4;23613:20;23609:1;23598:9;23594:17;23587:47;23651:131;23777:4;23651:131;:::i;:::-;23643:139;;23370:419;;;:::o;23795:191::-;23835:4;23855:20;23873:1;23855:20;:::i;:::-;23850:25;;23889:20;23907:1;23889:20;:::i;:::-;23884:25;;23928:1;23925;23922:8;23919:34;;;23933:18;;:::i;:::-;23919:34;23978:1;23975;23971:9;23963:17;;23795:191;;;;:::o;23992:348::-;24032:7;24055:20;24073:1;24055:20;:::i;:::-;24050:25;;24089:20;24107:1;24089:20;:::i;:::-;24084:25;;24277:1;24209:66;24205:74;24202:1;24199:81;24194:1;24187:9;24180:17;24176:105;24173:131;;;24284:18;;:::i;:::-;24173:131;24332:1;24329;24325:9;24314:20;;23992:348;;;;:::o;24346:180::-;24394:77;24391:1;24384:88;24491:4;24488:1;24481:15;24515:4;24512:1;24505:15;24532:185;24572:1;24589:20;24607:1;24589:20;:::i;:::-;24584:25;;24623:20;24641:1;24623:20;:::i;:::-;24618:25;;24662:1;24652:35;;24667:18;;:::i;:::-;24652:35;24709:1;24706;24702:9;24697:14;;24532:185;;;;:::o;24723:220::-;24863:34;24859:1;24851:6;24847:14;24840:58;24932:3;24927:2;24919:6;24915:15;24908:28;24723:220;:::o;24949:366::-;25091:3;25112:67;25176:2;25171:3;25112:67;:::i;:::-;25105:74;;25188:93;25277:3;25188:93;:::i;:::-;25306:2;25301:3;25297:12;25290:19;;24949:366;;;:::o;25321:419::-;25487:4;25525:2;25514:9;25510:18;25502:26;;25574:9;25568:4;25564:20;25560:1;25549:9;25545:17;25538:47;25602:131;25728:4;25602:131;:::i;:::-;25594:139;;25321:419;;;:::o;25746:807::-;25995:4;26033:3;26022:9;26018:19;26010:27;;26047:71;26115:1;26104:9;26100:17;26091:6;26047:71;:::i;:::-;26128:72;26196:2;26185:9;26181:18;26172:6;26128:72;:::i;:::-;26210:80;26286:2;26275:9;26271:18;26262:6;26210:80;:::i;:::-;26300;26376:2;26365:9;26361:18;26352:6;26300:80;:::i;:::-;26390:73;26458:3;26447:9;26443:19;26434:6;26390:73;:::i;:::-;26473;26541:3;26530:9;26526:19;26517:6;26473:73;:::i;:::-;25746:807;;;;;;;;;:::o;26559:143::-;26616:5;26647:6;26641:13;26632:22;;26663:33;26690:5;26663:33;:::i;:::-;26559:143;;;;:::o;26708:663::-;26796:6;26804;26812;26861:2;26849:9;26840:7;26836:23;26832:32;26829:119;;;26867:79;;:::i;:::-;26829:119;26987:1;27012:64;27068:7;27059:6;27048:9;27044:22;27012:64;:::i;:::-;27002:74;;26958:128;27125:2;27151:64;27207:7;27198:6;27187:9;27183:22;27151:64;:::i;:::-;27141:74;;27096:129;27264:2;27290:64;27346:7;27337:6;27326:9;27322:22;27290:64;:::i;:::-;27280:74;;27235:129;26708:663;;;;;:::o

Swarm Source

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