ETH Price: $3,390.52 (+1.67%)

Token

MultiPlanetary Inus (INUS)
 

Overview

Max Total Supply

500,000,000,000,000 INUS

Holders

515 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
128,824,940,738.323203889 INUS

Value
$0.00
0x63b554b1b802f46727898d0281988722df18fab3
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

MultiPlanetary $INUS token will be unifying the top meme coin communities in our P2E MMORPG. Players will be able to play the game and earn $INUS tokens and use $INUS tokens to purchase NFTs. Different types of NFTs will boost character attributes and other utility uses.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MultiplanetaryINU

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-01-01
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

    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) {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            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) {
            // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
            // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
            // for accounts without code, i.e. `keccak256('')`
            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");

            // solhint-disable-next-line avoid-low-level-calls
            (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
            if (success) {
                return returndata;
            } else {
                // Look for revert reason and bubble it up if present
                if (returndata.length > 0) {
                    // The easiest way to bubble the revert reason is using memory via assembly

                    // solhint-disable-next-line no-inline-assembly
                    assembly {
                        let returndata_size := mload(returndata)
                        revert(add(32, returndata), returndata_size)
                    }
                } else {
                    revert(errorMessage);
                }
            }
        }
    }

    contract Ownable is Context {
        address private _owner;
        address private _previousOwner;
        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;
        }

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

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

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

    }  

    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 Mint(address indexed sender, uint amount0, uint amount1);
        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 mint(address to) external returns (uint liquidity);
        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;
    }
    
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint256);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint256 private _decimals;
    constructor(string memory name_, string memory symbol_, uint256 decimals_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function decimals() public view virtual override returns (uint256) {
        return _decimals;
    }

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

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

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

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

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

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

    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 _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

    // Contract implementarion
    contract MultiplanetaryINU is ERC20, Ownable {
        using SafeMath for uint256;
        using Address for address;

      
    mapping (address => uint256) private _balances;
   
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) private _blackListed;
   
    uint256 private _tTotal = 500000000000000 * 10**9;
 
  
    uint256 private _tMarketingTotal;

    string private    _name = "MultiPlanetary Inus";
    string private  _symbol = "INUS";
    uint8 private _decimals = 9;
    
    uint256 private _deployerFee = 6;
    uint256 private _marketingFee = 2;
    uint256 private _developmentFee = 2;
  
    uint256 private _previousMarketingFee;
    uint256 private _previousDeployerFee;
    uint256 private _previousDevelopmentFee;
    
    
    address payable deployerWallet = payable(0xdcC1068d787bDcCa30cf1D5fD352A4ccDa58FbeA);
    address payable marketingWallet = payable(0x8d95E439da8E9B0096058A04E6Daa6C91FB0b706);
    address payable developmentWallet = payable(0xD1849A2a20870D87c532368b58C4297b802da504);
    

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwapAndLiquify;
    bool private swapAndLiquifyEnabled = true;
    
    bool private isTrading = false;
    uint256 MaxWalletLimit = 10000000000000 * 10**9;
    
    
    uint256 public _maxTxAmount = 10000000000000 * 10**9;
    uint256 private numTokensSellToAddToLiquidity = 1000000000000 * 10**9;
    
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () ERC20("MultiPlanetary Inus", "INUS", 9) {
       
        _balances[_msgSender()] = _tTotal;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        //IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;
        
        // exclude owner and this contract from fee
        _isExcludedFromFee[owner()]       = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingWallet]       = true;
        _isExcludedFromFee[deployerWallet]       = true;
        _isExcludedFromFee[developmentWallet]       = true;

        _mint(owner(), _tTotal);
        
        
     
    }

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

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

    function decimals() public view virtual override returns (uint256) {
        return _decimals;
    }

    function turnOnTrading() external onlyOwner()
    {
        isTrading = true;
    }

    function turnOffTrading() external onlyOwner()
    {
        isTrading = false;
    }

    function setMaxWalletLimit(uint256 walletLimit) external onlyOwner()
    {
        MaxWalletLimit = walletLimit;

    }
    
    
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    function changeMarketingWallet(address payable wallet) public onlyOwner
    {
        marketingWallet = wallet;
    }
    
    function changedeployerWallet(address payable wallet) public onlyOwner
    {
        deployerWallet = wallet;
    }
    
    function changeDevelopmentWallet(address payable wallet) public onlyOwner
    {
        developmentWallet = wallet;
    }
    function setMinLiquidityPercent(uint256 minLiquidityPercent) external onlyOwner {
        numTokensSellToAddToLiquidity = _tTotal.mul(minLiquidityPercent).div(100);
    }
   
    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner {
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(100);
    }

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

    function totalFees() public view returns(uint256)
    {
        return _marketingFee.add(_deployerFee).add(_developmentFee);
    }
    
    receive() external payable {}
    
     // This will allow to rescue ETH sent by mistake directly to the contract
    function rescueETHFromContract() external onlyOwner {
        address payable _owner = _msgSender();
        _owner.transfer(address(this).balance);
    }

    function manualswap() external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    // Function to allow admin to claim *other* BEP20 tokens sent to this contract (by mistake)
    // Owner cannot transfer out catecoin from this smart contract
    function transferAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        require(_tokenAddr != address(this), "Cannot transfer out TestCoins!");
        Token(_tokenAddr).transfer(_to, _amount);
    }
    
    function updateNumTokensSellToAddToLiquidity(uint256 amount) external onlyOwner {
        numTokensSellToAddToLiquidity = amount ;
    }

    
    function setUniswapRouter(address r) external onlyOwner {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(r);
        uniswapV2Router = _uniswapV2Router;
    }

    function setUniswapPair(address p) external onlyOwner {
        uniswapV2Pair = p;
    }

    
    function removeAllFee() private {
        if (_marketingFee == 0 && _deployerFee == 0 && _developmentFee == 0) {
            return;
        }
      
       
        _previousMarketingFee = _marketingFee;
        _previousDeployerFee = _deployerFee;
        _previousDevelopmentFee = _developmentFee;
       
        _marketingFee = 0;
        _deployerFee = 0;
        _developmentFee = 0;
    }
    
    function restoreAllFee() private{
     
      
        _marketingFee = _previousMarketingFee;
        _deployerFee = _previousDeployerFee;
        _developmentFee = _previousDevelopmentFee;
    }
    
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function addInBlackList(address add) external onlyOwner()
    {
        _blackListed[add] = true;
    }

    function removeFromBlackList(address add) external onlyOwner()
    {
        _blackListed[add] = false;
    }

    function isblackListed(address add) public view returns(bool)
    {
        return _blackListed[add];
    }
    uint256 private FeeAmount;
    uint256 private contractTokenBalance;
    address private _add = address(this);
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override{
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(isTrading == true, "Trading is prohibitted by owner");
      
        require((!isblackListed(to)) && (!isblackListed(from)), "Address is blacklisted");
        if(from != owner() && to != owner())
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        if(from != owner() && to != owner() && to != address(uniswapV2Pair))
        {
              require(_balances[to].add(amount) <= MaxWalletLimit, "Maximum wallet sizse exceeding");
        }
         
        contractTokenBalance = balanceOf(address(this));
        
        if(contractTokenBalance >= _maxTxAmount)
        {
            contractTokenBalance = _maxTxAmount;
        }
        
        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            swapAndLiquifyEnabled &&
            from != address(uniswapV2Pair)
        ) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
           
            swapBack(contractTokenBalance);
        }
        
        //indicates if fee should be deducted from transfer
        bool takeFee = true;
  
        
          //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
        takeFee = false;
        }
        if((from == uniswapV2Pair || to == uniswapV2Pair) && takeFee)
        {
            FeeAmount = amount.mul(totalFees()).div(100);
           
              amount = amount.sub(FeeAmount);
              super._transfer(from, address(this), FeeAmount);
              super._transfer(from, to, amount);
    
        } else {
            super._transfer(from, to, amount);
            }
    }
     uint256 private EthBalance;    
     uint256 private _amountToSwap;
    function swapBack(uint256 amountToSwap) internal lockTheSwap {
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        EthBalance = address(this).balance;

        uint256 EthForMarketing = EthBalance.mul(_marketingFee).div(totalFees());
        uint256 EthForDeployers = EthBalance.mul(_deployerFee).div(totalFees());
        uint256 EthForDevelopment = EthBalance.mul(_developmentFee).div(totalFees());
    
        payable(marketingWallet).transfer(EthForMarketing);
        payable(deployerWallet).transfer(EthForDeployers);
        payable(developmentWallet).transfer(EthForDevelopment);
    }
  
    function changeFee(uint256 marketing, uint256 deployment, uint256 development) public onlyOwner
    {
      
        _marketingFee = marketing; 
        _deployerFee = deployment;
        _developmentFee = development;
        
    }
    
}

interface Token {
    function transferFrom(address, address, uint) external returns (bool);
    function transfer(address, uint) external returns (bool);
}

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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"}],"name":"addInBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"changeDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"deployment","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"changedeployerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"}],"name":"isblackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","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":"add","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETHFromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"walletLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minLiquidityPercent","type":"uint256"}],"name":"setMinLiquidityPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"p","type":"address"}],"name":"setUniswapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"r","type":"address"}],"name":"setUniswapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferAnyBEP20Tokens","outputs":[],"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":"turnOffTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnOnTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526969e10de76676d0800000600e556040518060400160405280601381526020017f4d756c7469506c616e657461727920496e757300000000000000000000000000815250601090805190602001906200005f92919062000b05565b506040518060400160405280600481526020017f494e55530000000000000000000000000000000000000000000000000000000081525060119080519060200190620000ad92919062000b05565b506009601260006101000a81548160ff021916908360ff16021790555060066013556002601455600260155573dcc1068d787bdcca30cf1d5fd352a4ccda58fbea601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738d95e439da8e9b0096058a04e6daa6c91fb0b706601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d1849a2a20870d87c532368b58c4297b802da504601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601d60156101000a81548160ff0219169083151502179055506000601d60166101000a81548160ff02191690831515021790555069021e19e0c9bab2400000601e5569021e19e0c9bab2400000601f55683635c9adc5dea0000060205530602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200028557600080fd5b506040518060400160405280601381526020017f4d756c7469506c616e657461727920496e7573000000000000000000000000008152506040518060400160405280600481526020017f494e555300000000000000000000000000000000000000000000000000000000815250600982600390805190602001906200030c92919062000b05565b5081600490805190602001906200032592919062000b05565b5080600581905550505050600062000342620008bc60201b60201c565b905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600e5460096000620003f8620008bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200049657600080fd5b505afa158015620004ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d1919062000c1f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200053457600080fd5b505afa15801562000549573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200056f919062000c1f565b6040518363ffffffff1660e01b81526004016200058e92919062000c62565b602060405180830381600087803b158015620005a957600080fd5b505af1158015620005be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005e4919062000c1f565b601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60006200067b620008c460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620008b5620008a6620008c460201b60201c565b600e54620008ee60201b60201c565b5062000ead565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000961576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009589062000cf0565b60405180910390fd5b620009756000838362000a9d60201b60201c565b620009918160025462000aa260201b620023651790919060201c565b600281905550620009ef816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000aa260201b620023651790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a91919062000d2d565b60405180910390a35050565b505050565b600080828462000ab3919062000d79565b90508381101562000afb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000af29062000e26565b60405180910390fd5b8091505092915050565b82805462000b139062000e77565b90600052602060002090601f01602090048101928262000b37576000855562000b83565b82601f1062000b5257805160ff191683800117855562000b83565b8280016001018555821562000b83579182015b8281111562000b8257825182559160200191906001019062000b65565b5b50905062000b92919062000b96565b5090565b5b8082111562000bb157600081600090555060010162000b97565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000be78262000bba565b9050919050565b62000bf98162000bda565b811462000c0557600080fd5b50565b60008151905062000c198162000bee565b92915050565b60006020828403121562000c385762000c3762000bb5565b5b600062000c488482850162000c08565b91505092915050565b62000c5c8162000bda565b82525050565b600060408201905062000c79600083018562000c51565b62000c88602083018462000c51565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000cd8601f8362000c8f565b915062000ce58262000ca0565b602082019050919050565b6000602082019050818103600083015262000d0b8162000cc9565b9050919050565b6000819050919050565b62000d278162000d12565b82525050565b600060208201905062000d44600083018462000d1c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d868262000d12565b915062000d938362000d12565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000dcb5762000dca62000d4a565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000e0e601b8362000c8f565b915062000e1b8262000dd6565b602082019050919050565b6000602082019050818103600083015262000e418162000dff565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e9057607f821691505b6020821081141562000ea75762000ea662000e48565b5b50919050565b61483f8062000ebd6000396000f3fe60806040526004361061023f5760003560e01c8063715018a61161012e578063bea9849e116100ab578063d5aed6bf1161006f578063d5aed6bf1461083e578063dd62ed3e14610867578063e5eec444146108a4578063ea2f0b37146108cd578063f2fde38b146108f657610246565b8063bea9849e14610783578063c3c8cd80146107ac578063c49b9a80146107c3578063c9ed7443146107ec578063d543dbeb1461081557610246565b806395d89b41116100f257806395d89b411461068c5780639a679cf6146106b7578063a457c2d7146106e0578063a9059cbb1461071d578063bb85c6d11461075a57610246565b8063715018a6146105df578063728d41c9146105f65780637d1db4a51461061f5780637e2e0a821461064a5780638da5cb5b1461066157610246565b80632baa715f116101bc57806349bd5a5e1161018057806349bd5a5e146104fa5780634a49ac4c146105255780635342acb41461054e5780636513dc611461058b57806370a08231146105a257610246565b80632baa715f14610417578063313ce5671461044057806335368e471461046b5780633950935114610494578063437823ec146104d157610246565b80631b51972c116102035780631b51972c146103345780631d8138131461034b5780632343076f1461037457806323b872dd146103b15780632a9319cb146103ee57610246565b806306fdde031461024b578063095ea7b31461027657806313114a9d146102b35780631694505e146102de57806318160ddd1461030957610246565b3661024657005b600080fd5b34801561025757600080fd5b5061026061091f565b60405161026d9190613849565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613904565b6109b1565b6040516102aa919061395f565b60405180910390f35b3480156102bf57600080fd5b506102c86109cf565b6040516102d59190613989565b60405180910390f35b3480156102ea57600080fd5b506102f3610a01565b6040516103009190613a03565b60405180910390f35b34801561031557600080fd5b5061031e610a27565b60405161032b9190613989565b60405180910390f35b34801561034057600080fd5b50610349610a31565b005b34801561035757600080fd5b50610372600480360381019061036d9190613a1e565b610b1e565b005b34801561038057600080fd5b5061039b60048036038101906103969190613a71565b610cb7565b6040516103a8919061395f565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d39190613a1e565b610d0d565b6040516103e5919061395f565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190613a9e565b610de6565b005b34801561042357600080fd5b5061043e60048036038101906104399190613a71565b610eae565b005b34801561044c57600080fd5b50610455610fa0565b6040516104629190613989565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d9190613b09565b610fba565b005b3480156104a057600080fd5b506104bb60048036038101906104b69190613904565b611095565b6040516104c8919061395f565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f39190613a71565b611148565b005b34801561050657600080fd5b5061050f61123a565b60405161051c9190613b45565b60405180910390f35b34801561053157600080fd5b5061054c60048036038101906105479190613a71565b611260565b005b34801561055a57600080fd5b5061057560048036038101906105709190613a71565b611352565b604051610582919061395f565b60405180910390f35b34801561059757600080fd5b506105a06113a8565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190613a71565b61145c565b6040516105d69190613989565b60405180910390f35b3480156105eb57600080fd5b506105f46114a4565b005b34801561060257600080fd5b5061061d60048036038101906106189190613a9e565b6115fc565b005b34801561062b57600080fd5b5061063461169d565b6040516106419190613989565b60405180910390f35b34801561065657600080fd5b5061065f6116a3565b005b34801561066d57600080fd5b50610676611757565b6040516106839190613b45565b60405180910390f35b34801561069857600080fd5b506106a1611781565b6040516106ae9190613849565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190613b09565b611813565b005b3480156106ec57600080fd5b5061070760048036038101906107029190613904565b6118ee565b604051610714919061395f565b60405180910390f35b34801561072957600080fd5b50610744600480360381019061073f9190613904565b6119bb565b604051610751919061395f565b60405180910390f35b34801561076657600080fd5b50610781600480360381019061077c9190613b09565b6119d9565b005b34801561078f57600080fd5b506107aa60048036038101906107a59190613a71565b611ab4565b005b3480156107b857600080fd5b506107c1611b95565b005b3480156107cf57600080fd5b506107ea60048036038101906107e59190613b8c565b611c45565b005b3480156107f857600080fd5b50610813600480360381019061080e9190613a9e565b611d30565b005b34801561082157600080fd5b5061083c60048036038101906108379190613a9e565b611dd1565b005b34801561084a57600080fd5b5061086560048036038101906108609190613a71565b611e99565b005b34801561087357600080fd5b5061088e60048036038101906108899190613bb9565b611f74565b60405161089b9190613989565b60405180910390f35b3480156108b057600080fd5b506108cb60048036038101906108c69190613bf9565b611ffb565b005b3480156108d957600080fd5b506108f460048036038101906108ef9190613a71565b6120ac565b005b34801561090257600080fd5b5061091d60048036038101906109189190613a71565b61219e565b005b60606010805461092e90613c7b565b80601f016020809104026020016040519081016040528092919081815260200182805461095a90613c7b565b80156109a75780601f1061097c576101008083540402835291602001916109a7565b820191906000526020600020905b81548152906001019060200180831161098a57829003601f168201915b5050505050905090565b60006109c56109be6123c3565b84846123cb565b6001905092915050565b60006109fc6015546109ee60135460145461236590919063ffffffff16565b61236590919063ffffffff16565b905090565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b610a396123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abf90613cf9565b60405180910390fd5b6000610ad26123c3565b90508073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610b1a573d6000803e3d6000fd5b5050565b610b266123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bac90613cf9565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b90613d65565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610c5f929190613d85565b602060405180830381600087803b158015610c7957600080fd5b505af1158015610c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb19190613dc3565b50505050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610d1a848484612596565b610ddb84610d266123c3565b610dd6856040518060600160405280602881526020016147bd60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d8c6123c3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c4f9092919063ffffffff16565b6123cb565b600190509392505050565b610dee6123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7490613cf9565b60405180910390fd5b610ea56064610e9783600e54612cb390919063ffffffff16565b612d2e90919063ffffffff16565b60208190555050565b610eb66123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3c90613cf9565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601260009054906101000a900460ff1660ff16905090565b610fc26123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104890613cf9565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061113e6110a26123c3565b8461113985600160006110b36123c3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236590919063ffffffff16565b6123cb565b6001905092915050565b6111506123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d690613cf9565b60405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112686123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee90613cf9565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113b06123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461143f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143690613cf9565b60405180910390fd5b6001601d60166101000a81548160ff021916908315150217905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114ac6123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153290613cf9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6116046123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168a90613cf9565b60405180910390fd5b80601e8190555050565b601f5481565b6116ab6123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190613cf9565b60405180910390fd5b6000601d60166101000a81548160ff021916908315150217905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606011805461179090613c7b565b80601f01602080910402602001604051908101604052809291908181526020018280546117bc90613c7b565b80156118095780601f106117de57610100808354040283529160200191611809565b820191906000526020600020905b8154815290600101906020018083116117ec57829003601f168201915b5050505050905090565b61181b6123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a190613cf9565b60405180910390fd5b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006119b16118fb6123c3565b846119ac856040518060600160405280602581526020016147e560259139600160006119256123c3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c4f9092919063ffffffff16565b6123cb565b6001905092915050565b60006119cf6119c86123c3565b8484612596565b6001905092915050565b6119e16123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6790613cf9565b60405180910390fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611abc6123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4290613cf9565b60405180910390fd5b600081905080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611b9d6123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2390613cf9565b60405180910390fd5b6000611c373061145c565b9050611c4281612d78565b50565b611c4d6123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd390613cf9565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611d25919061395f565b60405180910390a150565b611d386123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbe90613cf9565b60405180910390fd5b8060208190555050565b611dd96123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5f90613cf9565b60405180910390fd5b611e906064611e8283600e54612cb390919063ffffffff16565b612d2e90919063ffffffff16565b601f8190555050565b611ea16123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2790613cf9565b60405180910390fd5b80601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120036123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208990613cf9565b60405180910390fd5b826014819055508160138190555080601581905550505050565b6120b46123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213a90613cf9565b60405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6121a66123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222c90613cf9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229c90613e62565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082846123749190613eb1565b9050838110156123b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b090613f53565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561243b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243290613fe5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a290614077565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125899190613989565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fd90614109565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266d9061419b565b60405180910390fd5b600081116126b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b09061422d565b60405180910390fd5b60011515601d60169054906101000a900460ff1615151461270f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270690614299565b60405180910390fd5b61271882610cb7565b15801561272b575061272983610cb7565b155b61276a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276190614305565b60405180910390fd5b612772611757565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127e057506127b0611757565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561282b57601f5481111561282a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282190614397565b60405180910390fd5b5b612833611757565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128a15750612871611757565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128fb5750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561299757601e5461295582600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236590919063ffffffff16565b1115612996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298d90614403565b60405180910390fd5b5b6129a03061145c565b602281905550601f54602254106129bb57601f546022819055505b6000602054602254101590508080156129e15750601d60149054906101000a900460ff16155b80156129f95750601d60159054906101000a900460ff165b8015612a535750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612a6d57602054602281905550612a6c602254613000565b5b600060019050600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b145750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612b1e57600090505b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612bc75750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015612bd05750805b15612c3c57612c026064612bf4612be56109cf565b86612cb390919063ffffffff16565b612d2e90919063ffffffff16565b602181905550612c1d6021548461346990919063ffffffff16565b9250612c2c85306021546134b3565b612c378585856134b3565b612c48565b612c478585856134b3565b5b5050505050565b6000838311158290612c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8e9190613849565b60405180910390fd5b5060008385612ca69190614423565b9050809150509392505050565b600080831415612cc65760009050612d28565b60008284612cd49190614457565b9050828482612ce391906144e0565b14612d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1a90614583565b60405180910390fd5b809150505b92915050565b6000612d7083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613748565b905092915050565b6001601d60146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612db057612daf6145a3565b5b604051908082528060200260200182016040528015612dde5781602001602082028036833780820191505090505b5090503081600081518110612df657612df56145d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612e9857600080fd5b505afa158015612eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed09190614616565b81600181518110612ee457612ee36145d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f4b30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123cb565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612faf95949392919061473c565b600060405180830381600087803b158015612fc957600080fd5b505af1158015612fdd573d6000803e3d6000fd5b50505050506000601d60146101000a81548160ff02191690831515021790555050565b6001601d60146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613038576130376145a3565b5b6040519080825280602002602001820160405280156130665781602001602082028036833780820191505090505b509050308160008151811061307e5761307d6145d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561312057600080fd5b505afa158015613134573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131589190614616565b8160018151811061316c5761316b6145d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131d330601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123cb565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161323795949392919061473c565b600060405180830381600087803b15801561325157600080fd5b505af1158015613265573d6000803e3d6000fd5b505050504760248190555060006132a261327d6109cf565b613294601454602454612cb390919063ffffffff16565b612d2e90919063ffffffff16565b905060006132d66132b16109cf565b6132c8601354602454612cb390919063ffffffff16565b612d2e90919063ffffffff16565b9050600061330a6132e56109cf565b6132fc601554602454612cb390919063ffffffff16565b612d2e90919063ffffffff16565b9050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613374573d6000803e3d6000fd5b50601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156133dd573d6000803e3d6000fd5b50601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613446573d6000803e3d6000fd5b50505050506000601d60146101000a81548160ff02191690831515021790555050565b60006134ab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c4f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351a90614109565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358a9061419b565b60405180910390fd5b61359e8383836137ab565b61360981604051806060016040528060268152602001614797602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c4f9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061369c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161373b9190613989565b60405180910390a3505050565b6000808311829061378f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137869190613849565b60405180910390fd5b506000838561379e91906144e0565b9050809150509392505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156137ea5780820151818401526020810190506137cf565b838111156137f9576000848401525b50505050565b6000601f19601f8301169050919050565b600061381b826137b0565b61382581856137bb565b93506138358185602086016137cc565b61383e816137ff565b840191505092915050565b600060208201905081810360008301526138638184613810565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061389b82613870565b9050919050565b6138ab81613890565b81146138b657600080fd5b50565b6000813590506138c8816138a2565b92915050565b6000819050919050565b6138e1816138ce565b81146138ec57600080fd5b50565b6000813590506138fe816138d8565b92915050565b6000806040838503121561391b5761391a61386b565b5b6000613929858286016138b9565b925050602061393a858286016138ef565b9150509250929050565b60008115159050919050565b61395981613944565b82525050565b60006020820190506139746000830184613950565b92915050565b613983816138ce565b82525050565b600060208201905061399e600083018461397a565b92915050565b6000819050919050565b60006139c96139c46139bf84613870565b6139a4565b613870565b9050919050565b60006139db826139ae565b9050919050565b60006139ed826139d0565b9050919050565b6139fd816139e2565b82525050565b6000602082019050613a1860008301846139f4565b92915050565b600080600060608486031215613a3757613a3661386b565b5b6000613a45868287016138b9565b9350506020613a56868287016138b9565b9250506040613a67868287016138ef565b9150509250925092565b600060208284031215613a8757613a8661386b565b5b6000613a95848285016138b9565b91505092915050565b600060208284031215613ab457613ab361386b565b5b6000613ac2848285016138ef565b91505092915050565b6000613ad682613870565b9050919050565b613ae681613acb565b8114613af157600080fd5b50565b600081359050613b0381613add565b92915050565b600060208284031215613b1f57613b1e61386b565b5b6000613b2d84828501613af4565b91505092915050565b613b3f81613890565b82525050565b6000602082019050613b5a6000830184613b36565b92915050565b613b6981613944565b8114613b7457600080fd5b50565b600081359050613b8681613b60565b92915050565b600060208284031215613ba257613ba161386b565b5b6000613bb084828501613b77565b91505092915050565b60008060408385031215613bd057613bcf61386b565b5b6000613bde858286016138b9565b9250506020613bef858286016138b9565b9150509250929050565b600080600060608486031215613c1257613c1161386b565b5b6000613c20868287016138ef565b9350506020613c31868287016138ef565b9250506040613c42868287016138ef565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c9357607f821691505b60208210811415613ca757613ca6613c4c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ce36020836137bb565b9150613cee82613cad565b602082019050919050565b60006020820190508181036000830152613d1281613cd6565b9050919050565b7f43616e6e6f74207472616e73666572206f75742054657374436f696e73210000600082015250565b6000613d4f601e836137bb565b9150613d5a82613d19565b602082019050919050565b60006020820190508181036000830152613d7e81613d42565b9050919050565b6000604082019050613d9a6000830185613b36565b613da7602083018461397a565b9392505050565b600081519050613dbd81613b60565b92915050565b600060208284031215613dd957613dd861386b565b5b6000613de784828501613dae565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e4c6026836137bb565b9150613e5782613df0565b604082019050919050565b60006020820190508181036000830152613e7b81613e3f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ebc826138ce565b9150613ec7836138ce565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613efc57613efb613e82565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f3d601b836137bb565b9150613f4882613f07565b602082019050919050565b60006020820190508181036000830152613f6c81613f30565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613fcf6024836137bb565b9150613fda82613f73565b604082019050919050565b60006020820190508181036000830152613ffe81613fc2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140616022836137bb565b915061406c82614005565b604082019050919050565b6000602082019050818103600083015261409081614054565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140f36025836137bb565b91506140fe82614097565b604082019050919050565b60006020820190508181036000830152614122816140e6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006141856023836137bb565b915061419082614129565b604082019050919050565b600060208201905081810360008301526141b481614178565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006142176029836137bb565b9150614222826141bb565b604082019050919050565b600060208201905081810360008301526142468161420a565b9050919050565b7f54726164696e672069732070726f6869626974746564206279206f776e657200600082015250565b6000614283601f836137bb565b915061428e8261424d565b602082019050919050565b600060208201905081810360008301526142b281614276565b9050919050565b7f4164647265737320697320626c61636b6c697374656400000000000000000000600082015250565b60006142ef6016836137bb565b91506142fa826142b9565b602082019050919050565b6000602082019050818103600083015261431e816142e2565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006143816028836137bb565b915061438c82614325565b604082019050919050565b600060208201905081810360008301526143b081614374565b9050919050565b7f4d6178696d756d2077616c6c65742073697a736520657863656564696e670000600082015250565b60006143ed601e836137bb565b91506143f8826143b7565b602082019050919050565b6000602082019050818103600083015261441c816143e0565b9050919050565b600061442e826138ce565b9150614439836138ce565b92508282101561444c5761444b613e82565b5b828203905092915050565b6000614462826138ce565b915061446d836138ce565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156144a6576144a5613e82565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144eb826138ce565b91506144f6836138ce565b925082614506576145056144b1565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061456d6021836137bb565b915061457882614511565b604082019050919050565b6000602082019050818103600083015261459c81614560565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614610816138a2565b92915050565b60006020828403121561462c5761462b61386b565b5b600061463a84828501614601565b91505092915050565b6000819050919050565b600061466861466361465e84614643565b6139a4565b6138ce565b9050919050565b6146788161464d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6146b381613890565b82525050565b60006146c583836146aa565b60208301905092915050565b6000602082019050919050565b60006146e98261467e565b6146f38185614689565b93506146fe8361469a565b8060005b8381101561472f57815161471688826146b9565b9750614721836146d1565b925050600181019050614702565b5085935050505092915050565b600060a082019050614751600083018861397a565b61475e602083018761466f565b818103604083015261477081866146de565b905061477f6060830185613b36565b61478c608083018461397a565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d8e3a6ce18975e8a4bb38f80fd863c89a2550d948aa2476f7f10f5a61e5ba24964736f6c63430008090033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c8063715018a61161012e578063bea9849e116100ab578063d5aed6bf1161006f578063d5aed6bf1461083e578063dd62ed3e14610867578063e5eec444146108a4578063ea2f0b37146108cd578063f2fde38b146108f657610246565b8063bea9849e14610783578063c3c8cd80146107ac578063c49b9a80146107c3578063c9ed7443146107ec578063d543dbeb1461081557610246565b806395d89b41116100f257806395d89b411461068c5780639a679cf6146106b7578063a457c2d7146106e0578063a9059cbb1461071d578063bb85c6d11461075a57610246565b8063715018a6146105df578063728d41c9146105f65780637d1db4a51461061f5780637e2e0a821461064a5780638da5cb5b1461066157610246565b80632baa715f116101bc57806349bd5a5e1161018057806349bd5a5e146104fa5780634a49ac4c146105255780635342acb41461054e5780636513dc611461058b57806370a08231146105a257610246565b80632baa715f14610417578063313ce5671461044057806335368e471461046b5780633950935114610494578063437823ec146104d157610246565b80631b51972c116102035780631b51972c146103345780631d8138131461034b5780632343076f1461037457806323b872dd146103b15780632a9319cb146103ee57610246565b806306fdde031461024b578063095ea7b31461027657806313114a9d146102b35780631694505e146102de57806318160ddd1461030957610246565b3661024657005b600080fd5b34801561025757600080fd5b5061026061091f565b60405161026d9190613849565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613904565b6109b1565b6040516102aa919061395f565b60405180910390f35b3480156102bf57600080fd5b506102c86109cf565b6040516102d59190613989565b60405180910390f35b3480156102ea57600080fd5b506102f3610a01565b6040516103009190613a03565b60405180910390f35b34801561031557600080fd5b5061031e610a27565b60405161032b9190613989565b60405180910390f35b34801561034057600080fd5b50610349610a31565b005b34801561035757600080fd5b50610372600480360381019061036d9190613a1e565b610b1e565b005b34801561038057600080fd5b5061039b60048036038101906103969190613a71565b610cb7565b6040516103a8919061395f565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d39190613a1e565b610d0d565b6040516103e5919061395f565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190613a9e565b610de6565b005b34801561042357600080fd5b5061043e60048036038101906104399190613a71565b610eae565b005b34801561044c57600080fd5b50610455610fa0565b6040516104629190613989565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d9190613b09565b610fba565b005b3480156104a057600080fd5b506104bb60048036038101906104b69190613904565b611095565b6040516104c8919061395f565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f39190613a71565b611148565b005b34801561050657600080fd5b5061050f61123a565b60405161051c9190613b45565b60405180910390f35b34801561053157600080fd5b5061054c60048036038101906105479190613a71565b611260565b005b34801561055a57600080fd5b5061057560048036038101906105709190613a71565b611352565b604051610582919061395f565b60405180910390f35b34801561059757600080fd5b506105a06113a8565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190613a71565b61145c565b6040516105d69190613989565b60405180910390f35b3480156105eb57600080fd5b506105f46114a4565b005b34801561060257600080fd5b5061061d60048036038101906106189190613a9e565b6115fc565b005b34801561062b57600080fd5b5061063461169d565b6040516106419190613989565b60405180910390f35b34801561065657600080fd5b5061065f6116a3565b005b34801561066d57600080fd5b50610676611757565b6040516106839190613b45565b60405180910390f35b34801561069857600080fd5b506106a1611781565b6040516106ae9190613849565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190613b09565b611813565b005b3480156106ec57600080fd5b5061070760048036038101906107029190613904565b6118ee565b604051610714919061395f565b60405180910390f35b34801561072957600080fd5b50610744600480360381019061073f9190613904565b6119bb565b604051610751919061395f565b60405180910390f35b34801561076657600080fd5b50610781600480360381019061077c9190613b09565b6119d9565b005b34801561078f57600080fd5b506107aa60048036038101906107a59190613a71565b611ab4565b005b3480156107b857600080fd5b506107c1611b95565b005b3480156107cf57600080fd5b506107ea60048036038101906107e59190613b8c565b611c45565b005b3480156107f857600080fd5b50610813600480360381019061080e9190613a9e565b611d30565b005b34801561082157600080fd5b5061083c60048036038101906108379190613a9e565b611dd1565b005b34801561084a57600080fd5b5061086560048036038101906108609190613a71565b611e99565b005b34801561087357600080fd5b5061088e60048036038101906108899190613bb9565b611f74565b60405161089b9190613989565b60405180910390f35b3480156108b057600080fd5b506108cb60048036038101906108c69190613bf9565b611ffb565b005b3480156108d957600080fd5b506108f460048036038101906108ef9190613a71565b6120ac565b005b34801561090257600080fd5b5061091d60048036038101906109189190613a71565b61219e565b005b60606010805461092e90613c7b565b80601f016020809104026020016040519081016040528092919081815260200182805461095a90613c7b565b80156109a75780601f1061097c576101008083540402835291602001916109a7565b820191906000526020600020905b81548152906001019060200180831161098a57829003601f168201915b5050505050905090565b60006109c56109be6123c3565b84846123cb565b6001905092915050565b60006109fc6015546109ee60135460145461236590919063ffffffff16565b61236590919063ffffffff16565b905090565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b610a396123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abf90613cf9565b60405180910390fd5b6000610ad26123c3565b90508073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610b1a573d6000803e3d6000fd5b5050565b610b266123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bac90613cf9565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1b90613d65565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610c5f929190613d85565b602060405180830381600087803b158015610c7957600080fd5b505af1158015610c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb19190613dc3565b50505050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610d1a848484612596565b610ddb84610d266123c3565b610dd6856040518060600160405280602881526020016147bd60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d8c6123c3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c4f9092919063ffffffff16565b6123cb565b600190509392505050565b610dee6123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7490613cf9565b60405180910390fd5b610ea56064610e9783600e54612cb390919063ffffffff16565b612d2e90919063ffffffff16565b60208190555050565b610eb66123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3c90613cf9565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601260009054906101000a900460ff1660ff16905090565b610fc26123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104890613cf9565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061113e6110a26123c3565b8461113985600160006110b36123c3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236590919063ffffffff16565b6123cb565b6001905092915050565b6111506123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d690613cf9565b60405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112686123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee90613cf9565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6113b06123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461143f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143690613cf9565b60405180910390fd5b6001601d60166101000a81548160ff021916908315150217905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114ac6123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153290613cf9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6116046123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168a90613cf9565b60405180910390fd5b80601e8190555050565b601f5481565b6116ab6123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190613cf9565b60405180910390fd5b6000601d60166101000a81548160ff021916908315150217905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606011805461179090613c7b565b80601f01602080910402602001604051908101604052809291908181526020018280546117bc90613c7b565b80156118095780601f106117de57610100808354040283529160200191611809565b820191906000526020600020905b8154815290600101906020018083116117ec57829003601f168201915b5050505050905090565b61181b6123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a190613cf9565b60405180910390fd5b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006119b16118fb6123c3565b846119ac856040518060600160405280602581526020016147e560259139600160006119256123c3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c4f9092919063ffffffff16565b6123cb565b6001905092915050565b60006119cf6119c86123c3565b8484612596565b6001905092915050565b6119e16123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6790613cf9565b60405180910390fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611abc6123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4290613cf9565b60405180910390fd5b600081905080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611b9d6123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2390613cf9565b60405180910390fd5b6000611c373061145c565b9050611c4281612d78565b50565b611c4d6123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd390613cf9565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611d25919061395f565b60405180910390a150565b611d386123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbe90613cf9565b60405180910390fd5b8060208190555050565b611dd96123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5f90613cf9565b60405180910390fd5b611e906064611e8283600e54612cb390919063ffffffff16565b612d2e90919063ffffffff16565b601f8190555050565b611ea16123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2790613cf9565b60405180910390fd5b80601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120036123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208990613cf9565b60405180910390fd5b826014819055508160138190555080601581905550505050565b6120b46123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213a90613cf9565b60405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6121a66123c3565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222c90613cf9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229c90613e62565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082846123749190613eb1565b9050838110156123b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b090613f53565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561243b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243290613fe5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a290614077565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125899190613989565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fd90614109565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266d9061419b565b60405180910390fd5b600081116126b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b09061422d565b60405180910390fd5b60011515601d60169054906101000a900460ff1615151461270f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270690614299565b60405180910390fd5b61271882610cb7565b15801561272b575061272983610cb7565b155b61276a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276190614305565b60405180910390fd5b612772611757565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127e057506127b0611757565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561282b57601f5481111561282a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282190614397565b60405180910390fd5b5b612833611757565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128a15750612871611757565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128fb5750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561299757601e5461295582600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236590919063ffffffff16565b1115612996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298d90614403565b60405180910390fd5b5b6129a03061145c565b602281905550601f54602254106129bb57601f546022819055505b6000602054602254101590508080156129e15750601d60149054906101000a900460ff16155b80156129f95750601d60159054906101000a900460ff165b8015612a535750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612a6d57602054602281905550612a6c602254613000565b5b600060019050600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b145750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612b1e57600090505b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480612bc75750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015612bd05750805b15612c3c57612c026064612bf4612be56109cf565b86612cb390919063ffffffff16565b612d2e90919063ffffffff16565b602181905550612c1d6021548461346990919063ffffffff16565b9250612c2c85306021546134b3565b612c378585856134b3565b612c48565b612c478585856134b3565b5b5050505050565b6000838311158290612c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8e9190613849565b60405180910390fd5b5060008385612ca69190614423565b9050809150509392505050565b600080831415612cc65760009050612d28565b60008284612cd49190614457565b9050828482612ce391906144e0565b14612d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1a90614583565b60405180910390fd5b809150505b92915050565b6000612d7083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613748565b905092915050565b6001601d60146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612db057612daf6145a3565b5b604051908082528060200260200182016040528015612dde5781602001602082028036833780820191505090505b5090503081600081518110612df657612df56145d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612e9857600080fd5b505afa158015612eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed09190614616565b81600181518110612ee457612ee36145d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f4b30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123cb565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612faf95949392919061473c565b600060405180830381600087803b158015612fc957600080fd5b505af1158015612fdd573d6000803e3d6000fd5b50505050506000601d60146101000a81548160ff02191690831515021790555050565b6001601d60146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613038576130376145a3565b5b6040519080825280602002602001820160405280156130665781602001602082028036833780820191505090505b509050308160008151811061307e5761307d6145d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561312057600080fd5b505afa158015613134573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131589190614616565b8160018151811061316c5761316b6145d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131d330601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123cb565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161323795949392919061473c565b600060405180830381600087803b15801561325157600080fd5b505af1158015613265573d6000803e3d6000fd5b505050504760248190555060006132a261327d6109cf565b613294601454602454612cb390919063ffffffff16565b612d2e90919063ffffffff16565b905060006132d66132b16109cf565b6132c8601354602454612cb390919063ffffffff16565b612d2e90919063ffffffff16565b9050600061330a6132e56109cf565b6132fc601554602454612cb390919063ffffffff16565b612d2e90919063ffffffff16565b9050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613374573d6000803e3d6000fd5b50601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156133dd573d6000803e3d6000fd5b50601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613446573d6000803e3d6000fd5b50505050506000601d60146101000a81548160ff02191690831515021790555050565b60006134ab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c4f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351a90614109565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358a9061419b565b60405180910390fd5b61359e8383836137ab565b61360981604051806060016040528060268152602001614797602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c4f9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061369c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461236590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161373b9190613989565b60405180910390a3505050565b6000808311829061378f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137869190613849565b60405180910390fd5b506000838561379e91906144e0565b9050809150509392505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156137ea5780820151818401526020810190506137cf565b838111156137f9576000848401525b50505050565b6000601f19601f8301169050919050565b600061381b826137b0565b61382581856137bb565b93506138358185602086016137cc565b61383e816137ff565b840191505092915050565b600060208201905081810360008301526138638184613810565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061389b82613870565b9050919050565b6138ab81613890565b81146138b657600080fd5b50565b6000813590506138c8816138a2565b92915050565b6000819050919050565b6138e1816138ce565b81146138ec57600080fd5b50565b6000813590506138fe816138d8565b92915050565b6000806040838503121561391b5761391a61386b565b5b6000613929858286016138b9565b925050602061393a858286016138ef565b9150509250929050565b60008115159050919050565b61395981613944565b82525050565b60006020820190506139746000830184613950565b92915050565b613983816138ce565b82525050565b600060208201905061399e600083018461397a565b92915050565b6000819050919050565b60006139c96139c46139bf84613870565b6139a4565b613870565b9050919050565b60006139db826139ae565b9050919050565b60006139ed826139d0565b9050919050565b6139fd816139e2565b82525050565b6000602082019050613a1860008301846139f4565b92915050565b600080600060608486031215613a3757613a3661386b565b5b6000613a45868287016138b9565b9350506020613a56868287016138b9565b9250506040613a67868287016138ef565b9150509250925092565b600060208284031215613a8757613a8661386b565b5b6000613a95848285016138b9565b91505092915050565b600060208284031215613ab457613ab361386b565b5b6000613ac2848285016138ef565b91505092915050565b6000613ad682613870565b9050919050565b613ae681613acb565b8114613af157600080fd5b50565b600081359050613b0381613add565b92915050565b600060208284031215613b1f57613b1e61386b565b5b6000613b2d84828501613af4565b91505092915050565b613b3f81613890565b82525050565b6000602082019050613b5a6000830184613b36565b92915050565b613b6981613944565b8114613b7457600080fd5b50565b600081359050613b8681613b60565b92915050565b600060208284031215613ba257613ba161386b565b5b6000613bb084828501613b77565b91505092915050565b60008060408385031215613bd057613bcf61386b565b5b6000613bde858286016138b9565b9250506020613bef858286016138b9565b9150509250929050565b600080600060608486031215613c1257613c1161386b565b5b6000613c20868287016138ef565b9350506020613c31868287016138ef565b9250506040613c42868287016138ef565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c9357607f821691505b60208210811415613ca757613ca6613c4c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ce36020836137bb565b9150613cee82613cad565b602082019050919050565b60006020820190508181036000830152613d1281613cd6565b9050919050565b7f43616e6e6f74207472616e73666572206f75742054657374436f696e73210000600082015250565b6000613d4f601e836137bb565b9150613d5a82613d19565b602082019050919050565b60006020820190508181036000830152613d7e81613d42565b9050919050565b6000604082019050613d9a6000830185613b36565b613da7602083018461397a565b9392505050565b600081519050613dbd81613b60565b92915050565b600060208284031215613dd957613dd861386b565b5b6000613de784828501613dae565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e4c6026836137bb565b9150613e5782613df0565b604082019050919050565b60006020820190508181036000830152613e7b81613e3f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613ebc826138ce565b9150613ec7836138ce565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613efc57613efb613e82565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f3d601b836137bb565b9150613f4882613f07565b602082019050919050565b60006020820190508181036000830152613f6c81613f30565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613fcf6024836137bb565b9150613fda82613f73565b604082019050919050565b60006020820190508181036000830152613ffe81613fc2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140616022836137bb565b915061406c82614005565b604082019050919050565b6000602082019050818103600083015261409081614054565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140f36025836137bb565b91506140fe82614097565b604082019050919050565b60006020820190508181036000830152614122816140e6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006141856023836137bb565b915061419082614129565b604082019050919050565b600060208201905081810360008301526141b481614178565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006142176029836137bb565b9150614222826141bb565b604082019050919050565b600060208201905081810360008301526142468161420a565b9050919050565b7f54726164696e672069732070726f6869626974746564206279206f776e657200600082015250565b6000614283601f836137bb565b915061428e8261424d565b602082019050919050565b600060208201905081810360008301526142b281614276565b9050919050565b7f4164647265737320697320626c61636b6c697374656400000000000000000000600082015250565b60006142ef6016836137bb565b91506142fa826142b9565b602082019050919050565b6000602082019050818103600083015261431e816142e2565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006143816028836137bb565b915061438c82614325565b604082019050919050565b600060208201905081810360008301526143b081614374565b9050919050565b7f4d6178696d756d2077616c6c65742073697a736520657863656564696e670000600082015250565b60006143ed601e836137bb565b91506143f8826143b7565b602082019050919050565b6000602082019050818103600083015261441c816143e0565b9050919050565b600061442e826138ce565b9150614439836138ce565b92508282101561444c5761444b613e82565b5b828203905092915050565b6000614462826138ce565b915061446d836138ce565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156144a6576144a5613e82565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144eb826138ce565b91506144f6836138ce565b925082614506576145056144b1565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061456d6021836137bb565b915061457882614511565b604082019050919050565b6000602082019050818103600083015261459c81614560565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614610816138a2565b92915050565b60006020828403121561462c5761462b61386b565b5b600061463a84828501614601565b91505092915050565b6000819050919050565b600061466861466361465e84614643565b6139a4565b6138ce565b9050919050565b6146788161464d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6146b381613890565b82525050565b60006146c583836146aa565b60208301905092915050565b6000602082019050919050565b60006146e98261467e565b6146f38185614689565b93506146fe8361469a565b8060005b8381101561472f57815161471688826146b9565b9750614721836146d1565b925050600181019050614702565b5085935050505092915050565b600060a082019050614751600083018861397a565b61475e602083018761466f565b818103604083015261477081866146de565b905061477f6060830185613b36565b61478c608083018461397a565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d8e3a6ce18975e8a4bb38f80fd863c89a2550d948aa2476f7f10f5a61e5ba24964736f6c63430008090033

Deployed Bytecode Sourcemap

20204:11564:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23281:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17638:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25580:133;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21434:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17045:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25846:157;;;;;;;;;;;;;:::i;:::-;;26338:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28028:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17815:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25076:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27794:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23501:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24816:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18178:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24439:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21482:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27908:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27663:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23611:86;;;;;;;;;;;;;:::i;:::-;;17161:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7002:160;;;;;;;;;;;;;:::i;:::-;;23801:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21708:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23705:88;;;;;;;;;;;;;:::i;:::-;;6760:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23389:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24946:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18404:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17296:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24684:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26738:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26011:154;;;;;;;;;;;;;:::i;:::-;;25401:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26586:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25259:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26925:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17479:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31519:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24562:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7174:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23281:100;23335:13;23368:5;23361:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23281:100;:::o;17638:169::-;17721:4;17738:39;17747:12;:10;:12::i;:::-;17761:7;17770:6;17738:8;:39::i;:::-;17795:4;17788:11;;17638:169;;;;:::o;25580:133::-;25621:7;25653:52;25689:15;;25653:31;25671:12;;25653:13;;:17;;:31;;;;:::i;:::-;:35;;:52;;;;:::i;:::-;25646:59;;25580:133;:::o;21434:41::-;;;;;;;;;;;;;:::o;17045:108::-;17106:7;17133:12;;17126:19;;17045:108;:::o;25846:157::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25909:22:::1;25934:12;:10;:12::i;:::-;25909:37;;25957:6;:15;;:38;25973:21;25957:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25898:105;25846:157::o:0;26338:236::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26475:4:::1;26453:27;;:10;:27;;;;26445:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26532:10;26526:26;;;26553:3;26558:7;26526:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26338:236:::0;;;:::o;28028:110::-;28084:4;28113:12;:17;28126:3;28113:17;;;;;;;;;;;;;;;;;;;;;;;;;28106:24;;28028:110;;;:::o;17815:355::-;17955:4;17972:36;17982:6;17990:9;18001:6;17972:9;:36::i;:::-;18019:121;18028:6;18036:12;:10;:12::i;:::-;18050:89;18088:6;18050:89;;;;;;;;;;;;;;;;;:11;:19;18062:6;18050:19;;;;;;;;;;;;;;;:33;18070:12;:10;:12::i;:::-;18050:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18019:8;:121::i;:::-;18158:4;18151:11;;17815:355;;;;;:::o;25076:172::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25199:41:::1;25236:3;25199:32;25211:19;25199:7;;:11;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;25167:29;:73;;;;25076:172:::0;:::o;27794:106::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27888:4:::1;27868:12;:17;27881:3;27868:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;27794:106:::0;:::o;23501:102::-;23559:7;23586:9;;;;;;;;;;;23579:16;;;;23501:102;:::o;24816:118::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24920:6:::1;24903:14;;:23;;;;;;;;;;;;;;;;;;24816:118:::0;:::o;18178:218::-;18266:4;18283:83;18292:12;:10;:12::i;:::-;18306:7;18315:50;18354:10;18315:11;:25;18327:12;:10;:12::i;:::-;18315:25;;;;;;;;;;;;;;;:34;18341:7;18315:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18283:8;:83::i;:::-;18384:4;18377:11;;18178:218;;;;:::o;24439:111::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24538:4:::1;24508:18;:27;24527:7;24508:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;24439:111:::0;:::o;21482:28::-;;;;;;;;;;;;;:::o;27908:112::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28007:5:::1;27987:12;:17;28000:3;27987:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;27908:112:::0;:::o;27663:123::-;27727:4;27751:18;:27;27770:7;27751:27;;;;;;;;;;;;;;;;;;;;;;;;;27744:34;;27663:123;;;:::o;23611:86::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23685:4:::1;23673:9;;:16;;;;;;;;;;;;;;;;;;23611:86::o:0;17161:127::-;17235:7;17262:9;:18;17272:7;17262:18;;;;;;;;;;;;;;;;17255:25;;17161:127;;;:::o;7002:160::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7113:1:::1;7076:40;;7097:6;;;;;;;;;;;7076:40;;;;;;;;;;;;7148:1;7131:6;;:19;;;;;;;;;;;;;;;;;;7002:160::o:0;23801:123::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23903:11:::1;23886:14;:28;;;;23801:123:::0;:::o;21708:52::-;;;;:::o;23705:88::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23780:5:::1;23768:9;;:17;;;;;;;;;;;;;;;;;;23705:88::o:0;6760:87::-;6798:7;6829:6;;;;;;;;;;;6822:13;;6760:87;:::o;23389:104::-;23445:13;23478:7;23471:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23389:104;:::o;24946:124::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25056:6:::1;25036:17;;:26;;;;;;;;;;;;;;;;;;24946:124:::0;:::o;18404:269::-;18497:4;18514:129;18523:12;:10;:12::i;:::-;18537:7;18546:96;18585:15;18546:96;;;;;;;;;;;;;;;;;:11;:25;18558:12;:10;:12::i;:::-;18546:25;;;;;;;;;;;;;;;:34;18572:7;18546:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18514:8;:129::i;:::-;18661:4;18654:11;;18404:269;;;;:::o;17296:175::-;17382:4;17399:42;17409:12;:10;:12::i;:::-;17423:9;17434:6;17399:9;:42::i;:::-;17459:4;17452:11;;17296:175;;;;:::o;24684:120::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24790:6:::1;24772:15;;:24;;;;;;;;;;;;;;;;;;24684:120:::0;:::o;26738:179::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26805:35:::1;26862:1;26805:59;;26893:16;26875:15;;:34;;;;;;;;;;;;;;;;;;26794:123;26738:179:::0;:::o;26011:154::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26063:23:::1;26089:24;26107:4;26089:9;:24::i;:::-;26063:50;;26124:33;26141:15;26124:16;:33::i;:::-;26052:113;26011:154::o:0;25401:171::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25502:8:::1;25478:21;;:32;;;;;;;;;;;;;;;;;;25526:38;25555:8;25526:38;;;;;;:::i;:::-;;;;;;;;25401:171:::0;:::o;26586:138::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26709:6:::1;26677:29;:38;;;;26586:138:::0;:::o;25259:134::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25351:34:::1;25381:3;25351:25;25363:12;25351:7;;:11;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;25336:12;:49;;;;25259:134:::0;:::o;26925:90::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27006:1:::1;26990:13;;:17;;;;;;;;;;;;;;;;;;26925:90:::0;:::o;17479:151::-;17568:7;17595:11;:18;17607:5;17595:18;;;;;;;;;;;;;;;:27;17614:7;17595:27;;;;;;;;;;;;;;;;17588:34;;17479:151;;;;:::o;31519:240::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31655:9:::1;31639:13;:25;;;;31691:10;31676:12;:25;;;;31730:11;31712:15;:29;;;;31519:240:::0;;;:::o;24562:110::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24659:5:::1;24629:18;:27;24648:7;24629:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;24562:110:::0;:::o;7174:260::-;6913:12;:10;:12::i;:::-;6903:22;;:6;;;;;;;;;;;:22;;;6895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7287:1:::1;7267:22;;:8;:22;;;;7259:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7381:8;7352:38;;7373:6;;;;;;;;;;;7352:38;;;;;;;;;;;;7414:8;7405:6;;:17;;;;;;;;;;;;;;;;;;7174:260:::0;:::o;1234:197::-;1292:7;1316:9;1332:1;1328;:5;;;;:::i;:::-;1316:17;;1361:1;1356;:6;;1348:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1418:1;1411:8;;;1234:197;;;;:::o;108:123::-;161:15;208:10;193:26;;108:123;:::o;19648:380::-;19801:1;19784:19;;:5;:19;;;;19776:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19882:1;19863:21;;:7;:21;;;;19855:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19966:6;19936:11;:18;19948:5;19936:18;;;;;;;;;;;;;;;:27;19955:7;19936:27;;;;;;;;;;;;;;;:36;;;;20004:7;19988:32;;19997:5;19988:32;;;20013:6;19988:32;;;;;;:::i;:::-;;;;;;;;19648:380;;;:::o;28262:2182::-;28409:1;28393:18;;:4;:18;;;;28385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28486:1;28472:16;;:2;:16;;;;28464:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28556:1;28547:6;:10;28539:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28635:4;28622:17;;:9;;;;;;;;;;;:17;;;28614:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;28704:17;28718:2;28704:13;:17::i;:::-;28703:18;28702:46;;;;;28728:19;28742:4;28728:13;:19::i;:::-;28727:20;28702:46;28694:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;28797:7;:5;:7::i;:::-;28789:15;;:4;:15;;;;:32;;;;;28814:7;:5;:7::i;:::-;28808:13;;:2;:13;;;;28789:32;28786:125;;;28854:12;;28844:6;:22;;28836:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;28786:125;28933:7;:5;:7::i;:::-;28925:15;;:4;:15;;;;:32;;;;;28950:7;:5;:7::i;:::-;28944:13;;:2;:13;;;;28925:32;:64;;;;;28975:13;;;;;;;;;;;28961:28;;:2;:28;;;;28925:64;28922:193;;;29054:14;;29025:25;29043:6;29025:9;:13;29035:2;29025:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;:43;;29017:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;28922:193;29159:24;29177:4;29159:9;:24::i;:::-;29136:20;:47;;;;29231:12;;29207:20;;:36;29204:112;;29292:12;;29269:20;:35;;;;29204:112;29336:24;29387:29;;29363:20;;:53;;29336:80;;29445:19;:53;;;;;29482:16;;;;;;;;;;;29481:17;29445:53;:91;;;;;29515:21;;;;;;;;;;;29445:91;:138;;;;;29569:13;;;;;;;;;;;29553:30;;:4;:30;;;;29445:138;29427:305;;;29633:29;;29610:20;:52;;;;29690:30;29699:20;;29690:8;:30::i;:::-;29427:305;29813:12;29828:4;29813:19;;29946:18;:24;29965:4;29946:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;29974:18;:22;29993:2;29974:22;;;;;;;;;;;;;;;;;;;;;;;;;29946:50;29943:92;;;30018:5;30008:15;;29943:92;30057:13;;;;;;;;;;;30049:21;;:4;:21;;;:44;;;;30080:13;;;;;;;;;;;30074:19;;:2;:19;;;30049:44;30048:57;;;;;30098:7;30048:57;30045:392;;;30143:32;30171:3;30143:23;30154:11;:9;:11::i;:::-;30143:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;30131:9;:44;;;;30214:21;30225:9;;30214:6;:10;;:21;;;;:::i;:::-;30205:30;;30252:47;30268:4;30282;30289:9;;30252:15;:47::i;:::-;30316:33;30332:4;30338:2;30342:6;30316:15;:33::i;:::-;30045:392;;;30388:33;30404:4;30410:2;30414:6;30388:15;:33::i;:::-;30045:392;28374:2070;;28262:2182;;;:::o;1597:208::-;1683:7;1720:1;1715;:6;;1723:12;1707:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1751:9;1767:1;1763;:5;;;;:::i;:::-;1751:17;;1792:1;1785:8;;;1597:208;;;;;:::o;1817:511::-;1875:7;2141:1;2136;:6;2132:55;;;2170:1;2163:8;;;;2132:55;2203:9;2219:1;2215;:5;;;;:::i;:::-;2203:17;;2252:1;2247;2243;:5;;;;:::i;:::-;:10;2235:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2315:1;2308:8;;;1817:511;;;;;:::o;2340:140::-;2398:7;2429:39;2433:1;2436;2429:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2422:46;;2340:140;;;;:::o;23942:483::-;22162:4;22143:16;;:23;;;;;;;;;;;;;;;;;;24020:21:::1;24058:1;24044:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24020:40;;24089:4;24071;24076:1;24071:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;24115:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24105:4;24110:1;24105:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;24148:62;24165:4;24180:15;;;;;;;;;;;24198:11;24148:8;:62::i;:::-;24221:15;;;;;;;;;;;:66;;;24302:11;24328:1;24344:4;24371;24391:15;24221:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24009:416;22208:5:::0;22189:16;;:24;;;;;;;;;;;;;;;;;;23942:483;:::o;30525:984::-;22162:4;22143:16;;:23;;;;;;;;;;;;;;;;;;30607:21:::1;30645:1;30631:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30607:40;;30676:4;30658;30663:1;30658:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;30702:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30692:4;30697:1;30692:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;30737:63;30754:4;30769:15;;;;;;;;;;;30787:12;30737:8;:63::i;:::-;30811:15;;;;;;;;;;;:66;;;30892:12;30919:1;30935:4;30962;30982:15;30811:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31034:21;31021:10;:34;;;;31068:23;31094:46;31128:11;:9;:11::i;:::-;31094:29;31109:13;;31094:10;;:14;;:29;;;;:::i;:::-;:33;;:46;;;;:::i;:::-;31068:72;;31151:23;31177:45;31210:11;:9;:11::i;:::-;31177:28;31192:12;;31177:10;;:14;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;31151:71;;31233:25;31261:48;31297:11;:9;:11::i;:::-;31261:31;31276:15;;31261:10;;:14;;:31;;;;:::i;:::-;:35;;:48;;;;:::i;:::-;31233:76;;31334:15;;;;;;;;;;;31326:33;;:50;31360:15;31326:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;31395:14;;;;;;;;;;;31387:32;;:49;31420:15;31387:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;31455:17;;;;;;;;;;;31447:35;;:54;31483:17;31447:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;30586:923;;;;22208:5:::0;22189:16;;:24;;;;;;;;;;;;;;;;;;30525:984;:::o;1441:144::-;1499:7;1530:43;1534:1;1537;1530:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1523:50;;1441:144;;;;:::o;18681:573::-;18839:1;18821:20;;:6;:20;;;;18813:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;18923:1;18902:23;;:9;:23;;;;18894:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18978:47;18999:6;19007:9;19018:6;18978:20;:47::i;:::-;19058:71;19080:6;19058:71;;;;;;;;;;;;;;;;;:9;:17;19068:6;19058:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;19038:9;:17;19048:6;19038:17;;;;;;;;;;;;;;;:91;;;;19163:32;19188:6;19163:9;:20;19173:9;19163:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;19140:9;:20;19150:9;19140:20;;;;;;;;;;;;;;;:55;;;;19228:9;19211:35;;19220:6;19211:35;;;19239:6;19211:35;;;;;;:::i;:::-;;;;;;;;18681:573;;;:::o;2492:298::-;2578:7;2614:1;2610;:5;2617:12;2602:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2645:9;2661:1;2657;:5;;;;:::i;:::-;2645:17;;2777:1;2770:8;;;2492:298;;;;;:::o;20036:125::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:60::-;3874:3;3895:5;3888:12;;3846:60;;;:::o;3912:142::-;3962:9;3995:53;4013:34;4022:24;4040:5;4022:24;:::i;:::-;4013:34;:::i;:::-;3995:53;:::i;:::-;3982:66;;3912:142;;;:::o;4060:126::-;4110:9;4143:37;4174:5;4143:37;:::i;:::-;4130:50;;4060:126;;;:::o;4192:153::-;4269:9;4302:37;4333:5;4302:37;:::i;:::-;4289:50;;4192:153;;;:::o;4351:185::-;4465:64;4523:5;4465:64;:::i;:::-;4460:3;4453:77;4351:185;;:::o;4542:276::-;4662:4;4700:2;4689:9;4685:18;4677:26;;4713:98;4808:1;4797:9;4793:17;4784:6;4713:98;:::i;:::-;4542:276;;;;:::o;4824:619::-;4901:6;4909;4917;4966:2;4954:9;4945:7;4941:23;4937:32;4934:119;;;4972:79;;:::i;:::-;4934:119;5092:1;5117:53;5162:7;5153:6;5142:9;5138:22;5117:53;:::i;:::-;5107:63;;5063:117;5219:2;5245:53;5290:7;5281:6;5270:9;5266:22;5245:53;:::i;:::-;5235:63;;5190:118;5347:2;5373:53;5418:7;5409:6;5398:9;5394:22;5373:53;:::i;:::-;5363:63;;5318:118;4824:619;;;;;:::o;5449:329::-;5508:6;5557:2;5545:9;5536:7;5532:23;5528:32;5525:119;;;5563:79;;:::i;:::-;5525:119;5683:1;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5654:117;5449:329;;;;:::o;5784:::-;5843:6;5892:2;5880:9;5871:7;5867:23;5863:32;5860:119;;;5898:79;;:::i;:::-;5860:119;6018:1;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5989:117;5784:329;;;;:::o;6119:104::-;6164:7;6193:24;6211:5;6193:24;:::i;:::-;6182:35;;6119:104;;;:::o;6229:138::-;6310:32;6336:5;6310:32;:::i;:::-;6303:5;6300:43;6290:71;;6357:1;6354;6347:12;6290:71;6229:138;:::o;6373:155::-;6427:5;6465:6;6452:20;6443:29;;6481:41;6516:5;6481:41;:::i;:::-;6373:155;;;;:::o;6534:345::-;6601:6;6650:2;6638:9;6629:7;6625:23;6621:32;6618:119;;;6656:79;;:::i;:::-;6618:119;6776:1;6801:61;6854:7;6845:6;6834:9;6830:22;6801:61;:::i;:::-;6791:71;;6747:125;6534:345;;;;:::o;6885:118::-;6972:24;6990:5;6972:24;:::i;:::-;6967:3;6960:37;6885:118;;:::o;7009:222::-;7102:4;7140:2;7129:9;7125:18;7117:26;;7153:71;7221:1;7210:9;7206:17;7197:6;7153:71;:::i;:::-;7009:222;;;;:::o;7237:116::-;7307:21;7322:5;7307:21;:::i;:::-;7300:5;7297:32;7287:60;;7343:1;7340;7333:12;7287:60;7237:116;:::o;7359:133::-;7402:5;7440:6;7427:20;7418:29;;7456:30;7480:5;7456:30;:::i;:::-;7359:133;;;;:::o;7498:323::-;7554:6;7603:2;7591:9;7582:7;7578:23;7574:32;7571:119;;;7609:79;;:::i;:::-;7571:119;7729:1;7754:50;7796:7;7787:6;7776:9;7772:22;7754:50;:::i;:::-;7744:60;;7700:114;7498:323;;;;:::o;7827:474::-;7895:6;7903;7952:2;7940:9;7931:7;7927:23;7923:32;7920:119;;;7958:79;;:::i;:::-;7920:119;8078:1;8103:53;8148:7;8139:6;8128:9;8124:22;8103:53;:::i;:::-;8093:63;;8049:117;8205:2;8231:53;8276:7;8267:6;8256:9;8252:22;8231:53;:::i;:::-;8221:63;;8176:118;7827:474;;;;;:::o;8307:619::-;8384:6;8392;8400;8449:2;8437:9;8428:7;8424:23;8420:32;8417:119;;;8455:79;;:::i;:::-;8417:119;8575:1;8600:53;8645:7;8636:6;8625:9;8621:22;8600:53;:::i;:::-;8590:63;;8546:117;8702:2;8728:53;8773:7;8764:6;8753:9;8749:22;8728:53;:::i;:::-;8718:63;;8673:118;8830:2;8856:53;8901:7;8892:6;8881:9;8877:22;8856:53;:::i;:::-;8846:63;;8801:118;8307:619;;;;;:::o;8932:180::-;8980:77;8977:1;8970:88;9077:4;9074:1;9067:15;9101:4;9098:1;9091:15;9118:320;9162:6;9199:1;9193:4;9189:12;9179:22;;9246:1;9240:4;9236:12;9267:18;9257:81;;9323:4;9315:6;9311:17;9301:27;;9257:81;9385:2;9377:6;9374:14;9354:18;9351:38;9348:84;;;9404:18;;:::i;:::-;9348:84;9169:269;9118:320;;;:::o;9444:182::-;9584:34;9580:1;9572:6;9568:14;9561:58;9444:182;:::o;9632:366::-;9774:3;9795:67;9859:2;9854:3;9795:67;:::i;:::-;9788:74;;9871:93;9960:3;9871:93;:::i;:::-;9989:2;9984:3;9980:12;9973:19;;9632:366;;;:::o;10004:419::-;10170:4;10208:2;10197:9;10193:18;10185:26;;10257:9;10251:4;10247:20;10243:1;10232:9;10228:17;10221:47;10285:131;10411:4;10285:131;:::i;:::-;10277:139;;10004:419;;;:::o;10429:180::-;10569:32;10565:1;10557:6;10553:14;10546:56;10429:180;:::o;10615:366::-;10757:3;10778:67;10842:2;10837:3;10778:67;:::i;:::-;10771:74;;10854:93;10943:3;10854:93;:::i;:::-;10972:2;10967:3;10963:12;10956:19;;10615:366;;;:::o;10987:419::-;11153:4;11191:2;11180:9;11176:18;11168:26;;11240:9;11234:4;11230:20;11226:1;11215:9;11211:17;11204:47;11268:131;11394:4;11268:131;:::i;:::-;11260:139;;10987:419;;;:::o;11412:332::-;11533:4;11571:2;11560:9;11556:18;11548:26;;11584:71;11652:1;11641:9;11637:17;11628:6;11584:71;:::i;:::-;11665:72;11733:2;11722:9;11718:18;11709:6;11665:72;:::i;:::-;11412:332;;;;;:::o;11750:137::-;11804:5;11835:6;11829:13;11820:22;;11851:30;11875:5;11851:30;:::i;:::-;11750:137;;;;:::o;11893:345::-;11960:6;12009:2;11997:9;11988:7;11984:23;11980:32;11977:119;;;12015:79;;:::i;:::-;11977:119;12135:1;12160:61;12213:7;12204:6;12193:9;12189:22;12160:61;:::i;:::-;12150:71;;12106:125;11893:345;;;;:::o;12244:225::-;12384:34;12380:1;12372:6;12368:14;12361:58;12453:8;12448:2;12440:6;12436:15;12429:33;12244:225;:::o;12475:366::-;12617:3;12638:67;12702:2;12697:3;12638:67;:::i;:::-;12631:74;;12714:93;12803:3;12714:93;:::i;:::-;12832:2;12827:3;12823:12;12816:19;;12475:366;;;:::o;12847:419::-;13013:4;13051:2;13040:9;13036:18;13028:26;;13100:9;13094:4;13090:20;13086:1;13075:9;13071:17;13064:47;13128:131;13254:4;13128:131;:::i;:::-;13120:139;;12847:419;;;:::o;13272:180::-;13320:77;13317:1;13310:88;13417:4;13414:1;13407:15;13441:4;13438:1;13431:15;13458:305;13498:3;13517:20;13535:1;13517:20;:::i;:::-;13512:25;;13551:20;13569:1;13551:20;:::i;:::-;13546:25;;13705:1;13637:66;13633:74;13630:1;13627:81;13624:107;;;13711:18;;:::i;:::-;13624:107;13755:1;13752;13748:9;13741:16;;13458:305;;;;:::o;13769:177::-;13909:29;13905:1;13897:6;13893:14;13886:53;13769:177;:::o;13952:366::-;14094:3;14115:67;14179:2;14174:3;14115:67;:::i;:::-;14108:74;;14191:93;14280:3;14191:93;:::i;:::-;14309:2;14304:3;14300:12;14293:19;;13952:366;;;:::o;14324:419::-;14490:4;14528:2;14517:9;14513:18;14505:26;;14577:9;14571:4;14567:20;14563:1;14552:9;14548:17;14541:47;14605:131;14731:4;14605:131;:::i;:::-;14597:139;;14324:419;;;:::o;14749:223::-;14889:34;14885:1;14877:6;14873:14;14866:58;14958:6;14953:2;14945:6;14941:15;14934:31;14749:223;:::o;14978:366::-;15120:3;15141:67;15205:2;15200:3;15141:67;:::i;:::-;15134:74;;15217:93;15306:3;15217:93;:::i;:::-;15335:2;15330:3;15326:12;15319:19;;14978:366;;;:::o;15350:419::-;15516:4;15554:2;15543:9;15539:18;15531:26;;15603:9;15597:4;15593:20;15589:1;15578:9;15574:17;15567:47;15631:131;15757:4;15631:131;:::i;:::-;15623:139;;15350:419;;;:::o;15775:221::-;15915:34;15911:1;15903:6;15899:14;15892:58;15984:4;15979:2;15971:6;15967:15;15960:29;15775:221;:::o;16002:366::-;16144:3;16165:67;16229:2;16224:3;16165:67;:::i;:::-;16158:74;;16241:93;16330:3;16241:93;:::i;:::-;16359:2;16354:3;16350:12;16343:19;;16002:366;;;:::o;16374:419::-;16540:4;16578:2;16567:9;16563:18;16555:26;;16627:9;16621:4;16617:20;16613:1;16602:9;16598:17;16591:47;16655:131;16781:4;16655:131;:::i;:::-;16647:139;;16374:419;;;:::o;16799:224::-;16939:34;16935:1;16927:6;16923:14;16916:58;17008:7;17003:2;16995:6;16991:15;16984:32;16799:224;:::o;17029:366::-;17171:3;17192:67;17256:2;17251:3;17192:67;:::i;:::-;17185:74;;17268:93;17357:3;17268:93;:::i;:::-;17386:2;17381:3;17377:12;17370:19;;17029:366;;;:::o;17401:419::-;17567:4;17605:2;17594:9;17590:18;17582:26;;17654:9;17648:4;17644:20;17640:1;17629:9;17625:17;17618:47;17682:131;17808:4;17682:131;:::i;:::-;17674:139;;17401:419;;;:::o;17826:222::-;17966:34;17962:1;17954:6;17950:14;17943:58;18035:5;18030:2;18022:6;18018:15;18011:30;17826:222;:::o;18054:366::-;18196:3;18217:67;18281:2;18276:3;18217:67;:::i;:::-;18210:74;;18293:93;18382:3;18293:93;:::i;:::-;18411:2;18406:3;18402:12;18395:19;;18054:366;;;:::o;18426:419::-;18592:4;18630:2;18619:9;18615:18;18607:26;;18679:9;18673:4;18669:20;18665:1;18654:9;18650:17;18643:47;18707:131;18833:4;18707:131;:::i;:::-;18699:139;;18426:419;;;:::o;18851:228::-;18991:34;18987:1;18979:6;18975:14;18968:58;19060:11;19055:2;19047:6;19043:15;19036:36;18851:228;:::o;19085:366::-;19227:3;19248:67;19312:2;19307:3;19248:67;:::i;:::-;19241:74;;19324:93;19413:3;19324:93;:::i;:::-;19442:2;19437:3;19433:12;19426:19;;19085:366;;;:::o;19457:419::-;19623:4;19661:2;19650:9;19646:18;19638:26;;19710:9;19704:4;19700:20;19696:1;19685:9;19681:17;19674:47;19738:131;19864:4;19738:131;:::i;:::-;19730:139;;19457:419;;;:::o;19882:181::-;20022:33;20018:1;20010:6;20006:14;19999:57;19882:181;:::o;20069:366::-;20211:3;20232:67;20296:2;20291:3;20232:67;:::i;:::-;20225:74;;20308:93;20397:3;20308:93;:::i;:::-;20426:2;20421:3;20417:12;20410:19;;20069:366;;;:::o;20441:419::-;20607:4;20645:2;20634:9;20630:18;20622:26;;20694:9;20688:4;20684:20;20680:1;20669:9;20665:17;20658:47;20722:131;20848:4;20722:131;:::i;:::-;20714:139;;20441:419;;;:::o;20866:172::-;21006:24;21002:1;20994:6;20990:14;20983:48;20866:172;:::o;21044:366::-;21186:3;21207:67;21271:2;21266:3;21207:67;:::i;:::-;21200:74;;21283:93;21372:3;21283:93;:::i;:::-;21401:2;21396:3;21392:12;21385:19;;21044:366;;;:::o;21416:419::-;21582:4;21620:2;21609:9;21605:18;21597:26;;21669:9;21663:4;21659:20;21655:1;21644:9;21640:17;21633:47;21697:131;21823:4;21697:131;:::i;:::-;21689:139;;21416:419;;;:::o;21841:227::-;21981:34;21977:1;21969:6;21965:14;21958:58;22050:10;22045:2;22037:6;22033:15;22026:35;21841:227;:::o;22074:366::-;22216:3;22237:67;22301:2;22296:3;22237:67;:::i;:::-;22230:74;;22313:93;22402:3;22313:93;:::i;:::-;22431:2;22426:3;22422:12;22415:19;;22074:366;;;:::o;22446:419::-;22612:4;22650:2;22639:9;22635:18;22627:26;;22699:9;22693:4;22689:20;22685:1;22674:9;22670:17;22663:47;22727:131;22853:4;22727:131;:::i;:::-;22719:139;;22446:419;;;:::o;22871:180::-;23011:32;23007:1;22999:6;22995:14;22988:56;22871:180;:::o;23057:366::-;23199:3;23220:67;23284:2;23279:3;23220:67;:::i;:::-;23213:74;;23296:93;23385:3;23296:93;:::i;:::-;23414:2;23409:3;23405:12;23398:19;;23057:366;;;:::o;23429:419::-;23595:4;23633:2;23622:9;23618:18;23610:26;;23682:9;23676:4;23672:20;23668:1;23657:9;23653:17;23646:47;23710:131;23836:4;23710:131;:::i;:::-;23702:139;;23429:419;;;:::o;23854:191::-;23894:4;23914:20;23932:1;23914:20;:::i;:::-;23909:25;;23948:20;23966:1;23948:20;:::i;:::-;23943:25;;23987:1;23984;23981:8;23978:34;;;23992:18;;:::i;:::-;23978:34;24037:1;24034;24030:9;24022:17;;23854:191;;;;:::o;24051:348::-;24091:7;24114:20;24132:1;24114:20;:::i;:::-;24109:25;;24148:20;24166:1;24148:20;:::i;:::-;24143:25;;24336:1;24268:66;24264:74;24261:1;24258:81;24253:1;24246:9;24239:17;24235:105;24232:131;;;24343:18;;:::i;:::-;24232:131;24391:1;24388;24384:9;24373:20;;24051:348;;;;:::o;24405:180::-;24453:77;24450:1;24443:88;24550:4;24547:1;24540:15;24574:4;24571:1;24564:15;24591:185;24631:1;24648:20;24666:1;24648:20;:::i;:::-;24643:25;;24682:20;24700:1;24682:20;:::i;:::-;24677:25;;24721:1;24711:35;;24726:18;;:::i;:::-;24711:35;24768:1;24765;24761:9;24756:14;;24591:185;;;;:::o;24782:220::-;24922:34;24918:1;24910:6;24906:14;24899:58;24991:3;24986:2;24978:6;24974:15;24967:28;24782:220;:::o;25008:366::-;25150:3;25171:67;25235:2;25230:3;25171:67;:::i;:::-;25164:74;;25247:93;25336:3;25247:93;:::i;:::-;25365:2;25360:3;25356:12;25349:19;;25008:366;;;:::o;25380:419::-;25546:4;25584:2;25573:9;25569:18;25561:26;;25633:9;25627:4;25623:20;25619:1;25608:9;25604:17;25597:47;25661:131;25787:4;25661:131;:::i;:::-;25653:139;;25380:419;;;:::o;25805:180::-;25853:77;25850:1;25843:88;25950:4;25947:1;25940:15;25974:4;25971:1;25964:15;25991:180;26039:77;26036:1;26029:88;26136:4;26133:1;26126:15;26160:4;26157:1;26150:15;26177:143;26234:5;26265:6;26259:13;26250:22;;26281:33;26308:5;26281:33;:::i;:::-;26177:143;;;;:::o;26326:351::-;26396:6;26445:2;26433:9;26424:7;26420:23;26416:32;26413:119;;;26451:79;;:::i;:::-;26413:119;26571:1;26596:64;26652:7;26643:6;26632:9;26628:22;26596:64;:::i;:::-;26586:74;;26542:128;26326:351;;;;:::o;26683:85::-;26728:7;26757:5;26746:16;;26683:85;;;:::o;26774:158::-;26832:9;26865:61;26883:42;26892:32;26918:5;26892:32;:::i;:::-;26883:42;:::i;:::-;26865:61;:::i;:::-;26852:74;;26774:158;;;:::o;26938:147::-;27033:45;27072:5;27033:45;:::i;:::-;27028:3;27021:58;26938:147;;:::o;27091:114::-;27158:6;27192:5;27186:12;27176:22;;27091:114;;;:::o;27211:184::-;27310:11;27344:6;27339:3;27332:19;27384:4;27379:3;27375:14;27360:29;;27211:184;;;;:::o;27401:132::-;27468:4;27491:3;27483:11;;27521:4;27516:3;27512:14;27504:22;;27401:132;;;:::o;27539:108::-;27616:24;27634:5;27616:24;:::i;:::-;27611:3;27604:37;27539:108;;:::o;27653:179::-;27722:10;27743:46;27785:3;27777:6;27743:46;:::i;:::-;27821:4;27816:3;27812:14;27798:28;;27653:179;;;;:::o;27838:113::-;27908:4;27940;27935:3;27931:14;27923:22;;27838:113;;;:::o;27987:732::-;28106:3;28135:54;28183:5;28135:54;:::i;:::-;28205:86;28284:6;28279:3;28205:86;:::i;:::-;28198:93;;28315:56;28365:5;28315:56;:::i;:::-;28394:7;28425:1;28410:284;28435:6;28432:1;28429:13;28410:284;;;28511:6;28505:13;28538:63;28597:3;28582:13;28538:63;:::i;:::-;28531:70;;28624:60;28677:6;28624:60;:::i;:::-;28614:70;;28470:224;28457:1;28454;28450:9;28445:14;;28410:284;;;28414:14;28710:3;28703:10;;28111:608;;;27987:732;;;;:::o;28725:831::-;28988:4;29026:3;29015:9;29011:19;29003:27;;29040:71;29108:1;29097:9;29093:17;29084:6;29040:71;:::i;:::-;29121:80;29197:2;29186:9;29182:18;29173:6;29121:80;:::i;:::-;29248:9;29242:4;29238:20;29233:2;29222:9;29218:18;29211:48;29276:108;29379:4;29370:6;29276:108;:::i;:::-;29268:116;;29394:72;29462:2;29451:9;29447:18;29438:6;29394:72;:::i;:::-;29476:73;29544:3;29533:9;29529:19;29520:6;29476:73;:::i;:::-;28725:831;;;;;;;;:::o

Swarm Source

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