ETH Price: $3,303.18 (-1.54%)

Token

Join Coin (Join)
 

Overview

Max Total Supply

88,888,888 Join

Holders

12

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
MetaMask: Swaps Spender
Balance
152.215207222121263979 Join

Value
$0.00
0x74de5d4FCbf63E00296fd95d33236B9794016631
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
JOIN

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-09
*/

// SPDX-License-Identifier: Unlicensed


pragma solidity ^0.8.4;

abstract contract Context {

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

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

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // 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");

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

contract Ownable is Context {
    address private _owner;
    address private asdasd;
    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 waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

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

}

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

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

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

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

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

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

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

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

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

    function initialize(address, address) external;
}

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

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

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

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

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

contract JOIN is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "Join Coin";
    string private _symbol = "Join";
    uint8 private _decimals = 18;

    address payable public marketingWalletAddress = payable(0x65C58FF4898095f11316E9b628001c4B8AFB7574);
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;

    uint256 public total_liq_pairs = 1;

    uint256 public _marketingShare = 2;
    uint256 public _holders = 3;
    uint256 public  _liquidityShare = 4;

    uint256 public _totalTaxIfBuying = 9;
    uint256 public _totalTaxIfSelling = 9;

    uint256 public _totalDistributionShares = 18;

    address[] public holders;

    uint256 private _totalSupply =  88888888 * 10 ** _decimals;      
    uint256 private minimumTokensBeforeSwap = 100 * 10 ** _decimals; 

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

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

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

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

        isMarketPair[address(uniswapPair)] = true;
        holders.push(_msgSender());
        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

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

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

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

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

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

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

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

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

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

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

    function setLiquidityPairsNo(uint newValue) public onlyOwner {
        total_liq_pairs = newValue;
    }
    
    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWalletAddress = payable(newAddress);
    }

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

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
    }

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

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

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

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

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

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

            addHolder(recipient);     //add holders

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

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


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

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

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

        swapTokensForEth(tokensForSwap);

        uint256 amountReceived = address(this).balance;

        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountBNBMarketing);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

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

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

    function addHolder(address recipient) internal returns (bool) {

        for(uint i = 0; i < holders.length ; i++) {
            if (holders[i] == recipient) {
                return false;
            }
        }

        holders.push(recipient);
        return true;
    }

    function _distribution(address sender,uint256 disAmount) internal {

        uint256 marketShare = disAmount.mul(_marketingShare).div(100);

        uint256 holderShare = disAmount.mul(_holders).div(100);

        uint256 liqtopool = disAmount.mul(_liquidityShare).div(100);

        uint256 divholder = (holderShare).div(holders.length - total_liq_pairs);

        if(uniswapPair != address(0)){
            _balances[uniswapPair] = _balances[uniswapPair].add(liqtopool);
            emit Transfer(sender,uniswapPair, liqtopool);  
        }

        _balances[marketingWalletAddress] = _balances[marketingWalletAddress].add(marketShare);
        emit Transfer(sender,marketingWalletAddress, marketShare);     

        for(uint i = 0; i < holders.length ; i++) {
            if(holders[i] != uniswapPair) {
                _balances[holders[i]] = _balances[holders[i]].add(divholder);
                emit Transfer(sender,holders[i], divholder);
            }
        }

    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }

        if(feeAmount > 0) {

            _distribution(sender,feeAmount);
        }

        return amount.sub(feeAmount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_holders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setLiquidityPairsNo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"total_liq_pairs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600981526020017f4a6f696e20436f696e0000000000000000000000000000000000000000000000815250600390805190602001906200005192919062000860565b506040518060400160405280600481526020017f4a6f696e00000000000000000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000860565b506012600560006101000a81548160ff021916908360ff1602179055507365c58ff4898095f11316e9b628001c4b8afb7574600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506001600a556002600b556003600c556004600d556009600e556009600f556012601055600560009054906101000a900460ff16600a6200018a919062000a1a565b63054c56386200019b919062000b57565b601255600560009054906101000a900460ff16600a620001bc919062000a1a565b6064620001ca919062000b57565b60135560016015806101000a81548160ff0219169083151502179055506000601560166101000a81548160ff0219169083151502179055506001601560176101000a81548160ff0219169083151502179055503480156200022a57600080fd5b5060006200023d6200082f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033b57600080fd5b505afa15801562000350573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000376919062000927565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003d957600080fd5b505afa158015620003ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000414919062000927565b6040518363ffffffff1660e01b81526004016200043392919062000975565b602060405180830381600087803b1580156200044e57600080fd5b505af115801562000463573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000489919062000927565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601254600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160086000620005c56200083760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506011620006fa6200082f60201b60201c565b9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125460066000620007716200082f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620007bf6200082f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601254604051620008209190620009a2565b60405180910390a35062000cbe565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200086e9062000c03565b90600052602060002090601f016020900481019282620008925760008555620008de565b82601f10620008ad57805160ff1916838001178555620008de565b82800160010185558215620008de579182015b82811115620008dd578251825591602001919060010190620008c0565b5b509050620008ed9190620008f1565b5090565b5b808211156200090c576000816000905550600101620008f2565b5090565b600081519050620009218162000ca4565b92915050565b6000602082840312156200093a57600080fd5b60006200094a8482850162000910565b91505092915050565b6200095e8162000bb8565b82525050565b6200096f8162000bec565b82525050565b60006040820190506200098c600083018562000953565b6200099b602083018462000953565b9392505050565b6000602082019050620009b9600083018462000964565b92915050565b6000808291508390505b600185111562000a1157808604811115620009e957620009e862000c39565b5b6001851615620009f95780820291505b808102905062000a098562000c97565b9450620009c9565b94509492505050565b600062000a278262000bec565b915062000a348362000bf6565b925062000a637fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a6b565b905092915050565b60008262000a7d576001905062000b50565b8162000a8d576000905062000b50565b816001811462000aa6576002811462000ab15762000ae7565b600191505062000b50565b60ff84111562000ac65762000ac562000c39565b5b8360020a91508482111562000ae05762000adf62000c39565b5b5062000b50565b5060208310610133831016604e8410600b841016171562000b215782820a90508381111562000b1b5762000b1a62000c39565b5b62000b50565b62000b308484846001620009bf565b9250905081840481111562000b4a5762000b4962000c39565b5b81810290505b9392505050565b600062000b648262000bec565b915062000b718362000bec565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bad5762000bac62000c39565b5b828202905092915050565b600062000bc58262000bcc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000c1c57607f821691505b6020821081141562000c335762000c3262000c68565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b62000caf8162000bb8565b811462000cbb57600080fd5b50565b60805160601c613b6262000ce460003960008181610b990152610c0a0152613b626000f3fe60806040526004361061024a5760003560e01c80636871c7a811610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e146108cf578063ef422a181461090c578063f0cd1dac14610935578063f2fde38b14610960578063f872858a14610989578063f8da23f9146109b457610251565b8063a9059cbb146107e8578063c49b9a8014610825578063c816841b1461084e578063d158272d14610879578063da00097d146108a457610251565b806395d89b41116100fd57806395d89b4114610701578063a073d37f1461072c578063a08e671f14610757578063a457c2d714610782578063a5d69d1f146107bf57610251565b80636871c7a81461062c57806370a082311461065757806382eefb43146106945780638da5cb5b146106bf578063914eb66a146106ea57610251565b806339509351116101c75780635342acb41161018b5780635342acb414610531578063557ed1ba1461056e57806357a5802f146105995780635881f3ef146105c457806361a23c691461060157610251565b8063395093511461043a5780633b97084a146104775780633ecad271146104a05780634a74bb02146104dd5780634cb80fd51461050857610251565b806327c8f8351161020e57806327c8f835146103515780632900cbe31461037c5780632a11ced0146103a75780632b112e49146103e4578063313ce5671461040f57610251565b806306fdde0314610256578063095ea7b3146102815780631694505e146102be57806318160ddd146102e957806323b872dd1461031457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b6109dd565b604051610278919061340e565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a39190613140565b610a6f565b6040516102b591906133d8565b60405180910390f35b3480156102ca57600080fd5b506102d3610a8d565b6040516102e091906133f3565b60405180910390f35b3480156102f557600080fd5b506102fe610ab3565b60405161030b9190613530565b60405180910390f35b34801561032057600080fd5b5061033b600480360381019061033691906130b5565b610abd565b60405161034891906133d8565b60405180910390f35b34801561035d57600080fd5b50610366610b97565b6040516103739190613379565b60405180910390f35b34801561038857600080fd5b50610391610bbb565b60405161039e9190613530565b60405180910390f35b3480156103b357600080fd5b506103ce60048036038101906103c991906131a5565b610bc1565b6040516103db9190613379565b60405180910390f35b3480156103f057600080fd5b506103f9610c00565b6040516104069190613530565b60405180910390f35b34801561041b57600080fd5b50610424610c44565b604051610431919061354b565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c9190613140565b610c5b565b60405161046e91906133d8565b60405180910390f35b34801561048357600080fd5b5061049e600480360381019061049991906131a5565b610d0e565b005b3480156104ac57600080fd5b506104c760048036038101906104c29190613027565b610dad565b6040516104d491906133d8565b60405180910390f35b3480156104e957600080fd5b506104f2610dcd565b6040516104ff91906133d8565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a9190613027565b610dde565b005b34801561053d57600080fd5b5061055860048036038101906105539190613027565b610eb7565b60405161056591906133d8565b60405180910390f35b34801561057a57600080fd5b50610583610ed7565b6040516105909190613530565b60405180910390f35b3480156105a557600080fd5b506105ae610edf565b6040516105bb9190613530565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190613027565b610ee5565b6040516105f89190613379565b60405180910390f35b34801561060d57600080fd5b506106166113c9565b6040516106239190613530565b60405180910390f35b34801561063857600080fd5b506106416113cf565b60405161064e9190613530565b60405180910390f35b34801561066357600080fd5b5061067e60048036038101906106799190613027565b6113d5565b60405161068b9190613530565b60405180910390f35b3480156106a057600080fd5b506106a961141e565b6040516106b69190613530565b60405180910390f35b3480156106cb57600080fd5b506106d4611424565b6040516106e19190613379565b60405180910390f35b3480156106f657600080fd5b506106ff61144d565b005b34801561070d57600080fd5b506107166115a2565b604051610723919061340e565b60405180910390f35b34801561073857600080fd5b50610741611634565b60405161074e9190613530565b60405180910390f35b34801561076357600080fd5b5061076c61163e565b6040516107799190613530565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a49190613140565b611644565b6040516107b691906133d8565b60405180910390f35b3480156107cb57600080fd5b506107e660048036038101906107e1919061317c565b611711565b005b3480156107f457600080fd5b5061080f600480360381019061080a9190613140565b6117c3565b60405161081c91906133d8565b60405180910390f35b34801561083157600080fd5b5061084c6004803603810190610847919061317c565b6117e2565b005b34801561085a57600080fd5b506108636118ca565b6040516108709190613379565b60405180910390f35b34801561088557600080fd5b5061088e6118f0565b60405161089b9190613394565b60405180910390f35b3480156108b057600080fd5b506108b9611916565b6040516108c691906133d8565b60405180910390f35b3480156108db57600080fd5b506108f660048036038101906108f19190613079565b611929565b6040516109039190613530565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190613104565b6119b0565b005b34801561094157600080fd5b5061094a611aa0565b6040516109579190613530565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190613027565b611aa6565b005b34801561099557600080fd5b5061099e611c68565b6040516109ab91906133d8565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d691906131a5565b611c7b565b005b6060600380546109ec90613755565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1890613755565b8015610a655780601f10610a3a57610100808354040283529160200191610a65565b820191906000526020600020905b815481529060010190602001808311610a4857829003601f168201915b5050505050905090565b6000610a83610a7c611d1a565b8484611d22565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601254905090565b6000610aca848484611eed565b50610b8c84610ad7611d1a565b610b8785604051806060016040528060288152602001613ae060289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b3d611d1a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461228d9092919063ffffffff16565b611d22565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5481565b60118181548110610bd157600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c3f610c2e7f00000000000000000000000000000000000000000000000000000000000000006113d5565b6012546122f190919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b6000610d04610c68611d1a565b84610cff8560076000610c79611d1a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233b90919063ffffffff16565b611d22565b6001905092915050565b610d16611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a906134d0565b60405180910390fd5b8060138190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b60158054906101000a900460ff1681565b610de6611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a906134d0565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60086020528060005260406000206000915054906101000a900460ff1681565b600042905090565b600d5481565b6000610eef611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f73906134d0565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610fc757600080fd5b505afa158015610fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fff9190613050565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561106157600080fd5b505afa158015611075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110999190613050565b6040518363ffffffff1660e01b81526004016110b69291906133af565b60206040518083038186803b1580156110ce57600080fd5b505afa1580156110e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111069190613050565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112c7578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561118357600080fd5b505afa158015611197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bb9190613050565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561121d57600080fd5b505afa158015611231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112559190613050565b6040518363ffffffff1660e01b81526004016112729291906133af565b602060405180830381600087803b15801561128c57600080fd5b505af11580156112a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c49190613050565b91505b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b600b5481565b600c5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600f5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611455611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d9906134d0565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6060600480546115b190613755565b80601f01602080910402602001604051908101604052809291908181526020018280546115dd90613755565b801561162a5780601f106115ff5761010080835404028352916020019161162a565b820191906000526020600020905b81548152906001019060200180831161160d57829003601f168201915b5050505050905090565b6000601354905090565b60105481565b6000611707611651611d1a565b8461170285604051806060016040528060258152602001613b08602591396007600061167b611d1a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461228d9092919063ffffffff16565b611d22565b6001905092915050565b611719611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179d906134d0565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60006117d76117d0611d1a565b8484611eed565b506001905092915050565b6117ea611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186e906134d0565b60405180910390fd5b806015806101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516118bf91906133d8565b60405180910390a150565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560169054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119b8611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c906134d0565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b611aae611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b32906134d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290613450565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560179054906101000a900460ff1681565b611c83611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d07906134d0565b60405180910390fd5b80600a8190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8990613510565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df990613470565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ee09190613530565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f55906134f0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc590613430565b60405180910390fd5b601560149054906101000a900460ff1615611ff557611fee848484612399565b9050612286565b611ffe8361256c565b50612088826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461228d9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061216e5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121825761217d8585856126a4565b612184565b825b90506121d881600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233b90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122789190613530565b60405180910390a360019150505b9392505050565b60008383111582906122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc919061340e565b60405180910390fd5b50600083856122e49190613663565b9050809150509392505050565b600061233383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061228d565b905092915050565b600080828461234a9190613582565b90508381101561238f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238690613490565b60405180910390fd5b8091505092915050565b6000612424826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461228d9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124b982600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233b90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125599190613530565b60405180910390a3600190509392505050565b600080600090505b601180549050811015612636578273ffffffffffffffffffffffffffffffffffffffff16601182815481106125d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561262357600091505061269f565b808061262e90613787565b915050612574565b506011829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600190505b919050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561272c576127256064612717600e54866127db90919063ffffffff16565b61285690919063ffffffff16565b90506127aa565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127a9576127a66064612798600f54866127db90919063ffffffff16565b61285690919063ffffffff16565b90505b5b60008111156127be576127bd85826128a0565b5b6127d181846122f190919063ffffffff16565b9150509392505050565b6000808314156127ee5760009050612850565b600082846127fc9190613609565b905082848261280b91906135d8565b1461284b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612842906134b0565b60405180910390fd5b809150505b92915050565b600061289883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f70565b905092915050565b60006128ca60646128bc600b54856127db90919063ffffffff16565b61285690919063ffffffff16565b905060006128f660646128e8600c54866127db90919063ffffffff16565b61285690919063ffffffff16565b905060006129226064612914600d54876127db90919063ffffffff16565b61285690919063ffffffff16565b9050600061294b600a5460118054905061293c9190613663565b8461285690919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff16601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b0457612a178260066000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233b90919063ffffffff16565b60066000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612afb9190613530565b60405180910390a35b612b788460066000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233b90919063ffffffff16565b60066000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612c5c9190613530565b60405180910390a360005b601180549050811015612f6757601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660118281548110612ce7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f5457612de3826006600060118581548110612d6f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233b90919063ffffffff16565b6006600060118481548110612e21577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060118181548110612ec4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f4b9190613530565b60405180910390a35b8080612f5f90613787565b915050612c67565b50505050505050565b60008083118290612fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fae919061340e565b60405180910390fd5b5060008385612fc691906135d8565b9050809150509392505050565b600081359050612fe281613a9a565b92915050565b600081519050612ff781613a9a565b92915050565b60008135905061300c81613ab1565b92915050565b60008135905061302181613ac8565b92915050565b60006020828403121561303957600080fd5b600061304784828501612fd3565b91505092915050565b60006020828403121561306257600080fd5b600061307084828501612fe8565b91505092915050565b6000806040838503121561308c57600080fd5b600061309a85828601612fd3565b92505060206130ab85828601612fd3565b9150509250929050565b6000806000606084860312156130ca57600080fd5b60006130d886828701612fd3565b93505060206130e986828701612fd3565b92505060406130fa86828701613012565b9150509250925092565b6000806040838503121561311757600080fd5b600061312585828601612fd3565b925050602061313685828601612ffd565b9150509250929050565b6000806040838503121561315357600080fd5b600061316185828601612fd3565b925050602061317285828601613012565b9150509250929050565b60006020828403121561318e57600080fd5b600061319c84828501612ffd565b91505092915050565b6000602082840312156131b757600080fd5b60006131c584828501613012565b91505092915050565b6131d7816136a9565b82525050565b6131e681613697565b82525050565b6131f5816136bb565b82525050565b613204816136fe565b82525050565b600061321582613566565b61321f8185613571565b935061322f818560208601613722565b6132388161385d565b840191505092915050565b6000613250602383613571565b915061325b8261386e565b604082019050919050565b6000613273602683613571565b915061327e826138bd565b604082019050919050565b6000613296602283613571565b91506132a18261390c565b604082019050919050565b60006132b9601b83613571565b91506132c48261395b565b602082019050919050565b60006132dc602183613571565b91506132e782613984565b604082019050919050565b60006132ff602083613571565b915061330a826139d3565b602082019050919050565b6000613322602583613571565b915061332d826139fc565b604082019050919050565b6000613345602483613571565b915061335082613a4b565b604082019050919050565b613364816136e7565b82525050565b613373816136f1565b82525050565b600060208201905061338e60008301846131dd565b92915050565b60006020820190506133a960008301846131ce565b92915050565b60006040820190506133c460008301856131dd565b6133d160208301846131dd565b9392505050565b60006020820190506133ed60008301846131ec565b92915050565b600060208201905061340860008301846131fb565b92915050565b60006020820190508181036000830152613428818461320a565b905092915050565b6000602082019050818103600083015261344981613243565b9050919050565b6000602082019050818103600083015261346981613266565b9050919050565b6000602082019050818103600083015261348981613289565b9050919050565b600060208201905081810360008301526134a9816132ac565b9050919050565b600060208201905081810360008301526134c9816132cf565b9050919050565b600060208201905081810360008301526134e9816132f2565b9050919050565b6000602082019050818103600083015261350981613315565b9050919050565b6000602082019050818103600083015261352981613338565b9050919050565b6000602082019050613545600083018461335b565b92915050565b6000602082019050613560600083018461336a565b92915050565b600081519050919050565b600082825260208201905092915050565b600061358d826136e7565b9150613598836136e7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135cd576135cc6137d0565b5b828201905092915050565b60006135e3826136e7565b91506135ee836136e7565b9250826135fe576135fd6137ff565b5b828204905092915050565b6000613614826136e7565b915061361f836136e7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613658576136576137d0565b5b828202905092915050565b600061366e826136e7565b9150613679836136e7565b92508282101561368c5761368b6137d0565b5b828203905092915050565b60006136a2826136c7565b9050919050565b60006136b4826136c7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061370982613710565b9050919050565b600061371b826136c7565b9050919050565b60005b83811015613740578082015181840152602081019050613725565b8381111561374f576000848401525b50505050565b6000600282049050600182168061376d57607f821691505b602082108114156137815761378061382e565b5b50919050565b6000613792826136e7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137c5576137c46137d0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b613aa381613697565b8114613aae57600080fd5b50565b613aba816136bb565b8114613ac557600080fd5b50565b613ad1816136e7565b8114613adc57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206c4736229a2656655d0b7f0fcf8571320e7c64e97e673fff855974b09580355b64736f6c63430008040033

Deployed Bytecode

0x60806040526004361061024a5760003560e01c80636871c7a811610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e146108cf578063ef422a181461090c578063f0cd1dac14610935578063f2fde38b14610960578063f872858a14610989578063f8da23f9146109b457610251565b8063a9059cbb146107e8578063c49b9a8014610825578063c816841b1461084e578063d158272d14610879578063da00097d146108a457610251565b806395d89b41116100fd57806395d89b4114610701578063a073d37f1461072c578063a08e671f14610757578063a457c2d714610782578063a5d69d1f146107bf57610251565b80636871c7a81461062c57806370a082311461065757806382eefb43146106945780638da5cb5b146106bf578063914eb66a146106ea57610251565b806339509351116101c75780635342acb41161018b5780635342acb414610531578063557ed1ba1461056e57806357a5802f146105995780635881f3ef146105c457806361a23c691461060157610251565b8063395093511461043a5780633b97084a146104775780633ecad271146104a05780634a74bb02146104dd5780634cb80fd51461050857610251565b806327c8f8351161020e57806327c8f835146103515780632900cbe31461037c5780632a11ced0146103a75780632b112e49146103e4578063313ce5671461040f57610251565b806306fdde0314610256578063095ea7b3146102815780631694505e146102be57806318160ddd146102e957806323b872dd1461031457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b6109dd565b604051610278919061340e565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a39190613140565b610a6f565b6040516102b591906133d8565b60405180910390f35b3480156102ca57600080fd5b506102d3610a8d565b6040516102e091906133f3565b60405180910390f35b3480156102f557600080fd5b506102fe610ab3565b60405161030b9190613530565b60405180910390f35b34801561032057600080fd5b5061033b600480360381019061033691906130b5565b610abd565b60405161034891906133d8565b60405180910390f35b34801561035d57600080fd5b50610366610b97565b6040516103739190613379565b60405180910390f35b34801561038857600080fd5b50610391610bbb565b60405161039e9190613530565b60405180910390f35b3480156103b357600080fd5b506103ce60048036038101906103c991906131a5565b610bc1565b6040516103db9190613379565b60405180910390f35b3480156103f057600080fd5b506103f9610c00565b6040516104069190613530565b60405180910390f35b34801561041b57600080fd5b50610424610c44565b604051610431919061354b565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c9190613140565b610c5b565b60405161046e91906133d8565b60405180910390f35b34801561048357600080fd5b5061049e600480360381019061049991906131a5565b610d0e565b005b3480156104ac57600080fd5b506104c760048036038101906104c29190613027565b610dad565b6040516104d491906133d8565b60405180910390f35b3480156104e957600080fd5b506104f2610dcd565b6040516104ff91906133d8565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a9190613027565b610dde565b005b34801561053d57600080fd5b5061055860048036038101906105539190613027565b610eb7565b60405161056591906133d8565b60405180910390f35b34801561057a57600080fd5b50610583610ed7565b6040516105909190613530565b60405180910390f35b3480156105a557600080fd5b506105ae610edf565b6040516105bb9190613530565b60405180910390f35b3480156105d057600080fd5b506105eb60048036038101906105e69190613027565b610ee5565b6040516105f89190613379565b60405180910390f35b34801561060d57600080fd5b506106166113c9565b6040516106239190613530565b60405180910390f35b34801561063857600080fd5b506106416113cf565b60405161064e9190613530565b60405180910390f35b34801561066357600080fd5b5061067e60048036038101906106799190613027565b6113d5565b60405161068b9190613530565b60405180910390f35b3480156106a057600080fd5b506106a961141e565b6040516106b69190613530565b60405180910390f35b3480156106cb57600080fd5b506106d4611424565b6040516106e19190613379565b60405180910390f35b3480156106f657600080fd5b506106ff61144d565b005b34801561070d57600080fd5b506107166115a2565b604051610723919061340e565b60405180910390f35b34801561073857600080fd5b50610741611634565b60405161074e9190613530565b60405180910390f35b34801561076357600080fd5b5061076c61163e565b6040516107799190613530565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a49190613140565b611644565b6040516107b691906133d8565b60405180910390f35b3480156107cb57600080fd5b506107e660048036038101906107e1919061317c565b611711565b005b3480156107f457600080fd5b5061080f600480360381019061080a9190613140565b6117c3565b60405161081c91906133d8565b60405180910390f35b34801561083157600080fd5b5061084c6004803603810190610847919061317c565b6117e2565b005b34801561085a57600080fd5b506108636118ca565b6040516108709190613379565b60405180910390f35b34801561088557600080fd5b5061088e6118f0565b60405161089b9190613394565b60405180910390f35b3480156108b057600080fd5b506108b9611916565b6040516108c691906133d8565b60405180910390f35b3480156108db57600080fd5b506108f660048036038101906108f19190613079565b611929565b6040516109039190613530565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190613104565b6119b0565b005b34801561094157600080fd5b5061094a611aa0565b6040516109579190613530565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190613027565b611aa6565b005b34801561099557600080fd5b5061099e611c68565b6040516109ab91906133d8565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d691906131a5565b611c7b565b005b6060600380546109ec90613755565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1890613755565b8015610a655780601f10610a3a57610100808354040283529160200191610a65565b820191906000526020600020905b815481529060010190602001808311610a4857829003601f168201915b5050505050905090565b6000610a83610a7c611d1a565b8484611d22565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601254905090565b6000610aca848484611eed565b50610b8c84610ad7611d1a565b610b8785604051806060016040528060288152602001613ae060289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b3d611d1a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461228d9092919063ffffffff16565b611d22565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b600a5481565b60118181548110610bd157600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c3f610c2e7f000000000000000000000000000000000000000000000000000000000000dead6113d5565b6012546122f190919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b6000610d04610c68611d1a565b84610cff8560076000610c79611d1a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233b90919063ffffffff16565b611d22565b6001905092915050565b610d16611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a906134d0565b60405180910390fd5b8060138190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b60158054906101000a900460ff1681565b610de6611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a906134d0565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60086020528060005260406000206000915054906101000a900460ff1681565b600042905090565b600d5481565b6000610eef611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f73906134d0565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610fc757600080fd5b505afa158015610fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fff9190613050565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561106157600080fd5b505afa158015611075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110999190613050565b6040518363ffffffff1660e01b81526004016110b69291906133af565b60206040518083038186803b1580156110ce57600080fd5b505afa1580156110e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111069190613050565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112c7578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561118357600080fd5b505afa158015611197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bb9190613050565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561121d57600080fd5b505afa158015611231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112559190613050565b6040518363ffffffff1660e01b81526004016112729291906133af565b602060405180830381600087803b15801561128c57600080fd5b505af11580156112a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c49190613050565b91505b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b600b5481565b600c5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600f5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611455611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d9906134d0565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6060600480546115b190613755565b80601f01602080910402602001604051908101604052809291908181526020018280546115dd90613755565b801561162a5780601f106115ff5761010080835404028352916020019161162a565b820191906000526020600020905b81548152906001019060200180831161160d57829003601f168201915b5050505050905090565b6000601354905090565b60105481565b6000611707611651611d1a565b8461170285604051806060016040528060258152602001613b08602591396007600061167b611d1a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461228d9092919063ffffffff16565b611d22565b6001905092915050565b611719611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179d906134d0565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60006117d76117d0611d1a565b8484611eed565b506001905092915050565b6117ea611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186e906134d0565b60405180910390fd5b806015806101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516118bf91906133d8565b60405180910390a150565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560169054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119b8611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c906134d0565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b611aae611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b32906134d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba290613450565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560179054906101000a900460ff1681565b611c83611d1a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d07906134d0565b60405180910390fd5b80600a8190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8990613510565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df990613470565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ee09190613530565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f55906134f0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc590613430565b60405180910390fd5b601560149054906101000a900460ff1615611ff557611fee848484612399565b9050612286565b611ffe8361256c565b50612088826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461228d9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061216e5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6121825761217d8585856126a4565b612184565b825b90506121d881600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233b90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122789190613530565b60405180910390a360019150505b9392505050565b60008383111582906122d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cc919061340e565b60405180910390fd5b50600083856122e49190613663565b9050809150509392505050565b600061233383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061228d565b905092915050565b600080828461234a9190613582565b90508381101561238f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238690613490565b60405180910390fd5b8091505092915050565b6000612424826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461228d9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124b982600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233b90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125599190613530565b60405180910390a3600190509392505050565b600080600090505b601180549050811015612636578273ffffffffffffffffffffffffffffffffffffffff16601182815481106125d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561262357600091505061269f565b808061262e90613787565b915050612574565b506011829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600190505b919050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561272c576127256064612717600e54866127db90919063ffffffff16565b61285690919063ffffffff16565b90506127aa565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127a9576127a66064612798600f54866127db90919063ffffffff16565b61285690919063ffffffff16565b90505b5b60008111156127be576127bd85826128a0565b5b6127d181846122f190919063ffffffff16565b9150509392505050565b6000808314156127ee5760009050612850565b600082846127fc9190613609565b905082848261280b91906135d8565b1461284b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612842906134b0565b60405180910390fd5b809150505b92915050565b600061289883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f70565b905092915050565b60006128ca60646128bc600b54856127db90919063ffffffff16565b61285690919063ffffffff16565b905060006128f660646128e8600c54866127db90919063ffffffff16565b61285690919063ffffffff16565b905060006129226064612914600d54876127db90919063ffffffff16565b61285690919063ffffffff16565b9050600061294b600a5460118054905061293c9190613663565b8461285690919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff16601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b0457612a178260066000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233b90919063ffffffff16565b60066000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612afb9190613530565b60405180910390a35b612b788460066000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233b90919063ffffffff16565b60066000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612c5c9190613530565b60405180910390a360005b601180549050811015612f6757601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660118281548110612ce7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f5457612de3826006600060118581548110612d6f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461233b90919063ffffffff16565b6006600060118481548110612e21577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060118181548110612ec4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f4b9190613530565b60405180910390a35b8080612f5f90613787565b915050612c67565b50505050505050565b60008083118290612fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fae919061340e565b60405180910390fd5b5060008385612fc691906135d8565b9050809150509392505050565b600081359050612fe281613a9a565b92915050565b600081519050612ff781613a9a565b92915050565b60008135905061300c81613ab1565b92915050565b60008135905061302181613ac8565b92915050565b60006020828403121561303957600080fd5b600061304784828501612fd3565b91505092915050565b60006020828403121561306257600080fd5b600061307084828501612fe8565b91505092915050565b6000806040838503121561308c57600080fd5b600061309a85828601612fd3565b92505060206130ab85828601612fd3565b9150509250929050565b6000806000606084860312156130ca57600080fd5b60006130d886828701612fd3565b93505060206130e986828701612fd3565b92505060406130fa86828701613012565b9150509250925092565b6000806040838503121561311757600080fd5b600061312585828601612fd3565b925050602061313685828601612ffd565b9150509250929050565b6000806040838503121561315357600080fd5b600061316185828601612fd3565b925050602061317285828601613012565b9150509250929050565b60006020828403121561318e57600080fd5b600061319c84828501612ffd565b91505092915050565b6000602082840312156131b757600080fd5b60006131c584828501613012565b91505092915050565b6131d7816136a9565b82525050565b6131e681613697565b82525050565b6131f5816136bb565b82525050565b613204816136fe565b82525050565b600061321582613566565b61321f8185613571565b935061322f818560208601613722565b6132388161385d565b840191505092915050565b6000613250602383613571565b915061325b8261386e565b604082019050919050565b6000613273602683613571565b915061327e826138bd565b604082019050919050565b6000613296602283613571565b91506132a18261390c565b604082019050919050565b60006132b9601b83613571565b91506132c48261395b565b602082019050919050565b60006132dc602183613571565b91506132e782613984565b604082019050919050565b60006132ff602083613571565b915061330a826139d3565b602082019050919050565b6000613322602583613571565b915061332d826139fc565b604082019050919050565b6000613345602483613571565b915061335082613a4b565b604082019050919050565b613364816136e7565b82525050565b613373816136f1565b82525050565b600060208201905061338e60008301846131dd565b92915050565b60006020820190506133a960008301846131ce565b92915050565b60006040820190506133c460008301856131dd565b6133d160208301846131dd565b9392505050565b60006020820190506133ed60008301846131ec565b92915050565b600060208201905061340860008301846131fb565b92915050565b60006020820190508181036000830152613428818461320a565b905092915050565b6000602082019050818103600083015261344981613243565b9050919050565b6000602082019050818103600083015261346981613266565b9050919050565b6000602082019050818103600083015261348981613289565b9050919050565b600060208201905081810360008301526134a9816132ac565b9050919050565b600060208201905081810360008301526134c9816132cf565b9050919050565b600060208201905081810360008301526134e9816132f2565b9050919050565b6000602082019050818103600083015261350981613315565b9050919050565b6000602082019050818103600083015261352981613338565b9050919050565b6000602082019050613545600083018461335b565b92915050565b6000602082019050613560600083018461336a565b92915050565b600081519050919050565b600082825260208201905092915050565b600061358d826136e7565b9150613598836136e7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135cd576135cc6137d0565b5b828201905092915050565b60006135e3826136e7565b91506135ee836136e7565b9250826135fe576135fd6137ff565b5b828204905092915050565b6000613614826136e7565b915061361f836136e7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613658576136576137d0565b5b828202905092915050565b600061366e826136e7565b9150613679836136e7565b92508282101561368c5761368b6137d0565b5b828203905092915050565b60006136a2826136c7565b9050919050565b60006136b4826136c7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061370982613710565b9050919050565b600061371b826136c7565b9050919050565b60005b83811015613740578082015181840152602081019050613725565b8381111561374f576000848401525b50505050565b6000600282049050600182168061376d57607f821691505b602082108114156137815761378061382e565b5b50919050565b6000613792826136e7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137c5576137c46137d0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b613aa381613697565b8114613aae57600080fd5b50565b613aba816136bb565b8114613ac557600080fd5b50565b613ad1816136e7565b8114613adc57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206c4736229a2656655d0b7f0fcf8571320e7c64e97e673fff855974b09580355b64736f6c63430008040033

Deployed Bytecode Sourcemap

14317:12109:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16958:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18252:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15484:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17235:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20927:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14671:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15003:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15307:24;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19628:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17144:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17621:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19033:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14949:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15599:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19165:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14892:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6386:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15121:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19902:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15046:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15087:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17343:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15208:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5670:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5895:227;;;;;;;;;;;;;:::i;:::-;;17049:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18124:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15254:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17847:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19491:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20752:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19312:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15532:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14559:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15646:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17470:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18772:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15165:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6130:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15698:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18915:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16958:83;16995:13;17028:5;17021:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16958:83;:::o;18252:161::-;18327:4;18344:39;18353:12;:10;:12::i;:::-;18367:7;18376:6;18344:8;:39::i;:::-;18401:4;18394:11;;18252:161;;;;:::o;15484:41::-;;;;;;;;;;;;;:::o;17235:100::-;17288:7;17315:12;;17308:19;;17235:100;:::o;20927:313::-;21025:4;21042:36;21052:6;21060:9;21071:6;21042:9;:36::i;:::-;;21089:121;21098:6;21106:12;:10;:12::i;:::-;21120:89;21158:6;21120:89;;;;;;;;;;;;;;;;;:11;:19;21132:6;21120:19;;;;;;;;;;;;;;;:33;21140:12;:10;:12::i;:::-;21120:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21089:8;:121::i;:::-;21228:4;21221:11;;20927:313;;;;;:::o;14671:81::-;;;:::o;15003:34::-;;;;:::o;15307:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19628:128::-;19681:7;19708:40;19725:22;19735:11;19725:9;:22::i;:::-;19708:12;;:16;;:40;;;;:::i;:::-;19701:47;;19628:128;:::o;17144:83::-;17185:5;17210:9;;;;;;;;;;;17203:16;;17144:83;:::o;17621:218::-;17709:4;17726:83;17735:12;:10;:12::i;:::-;17749:7;17758:50;17797:10;17758:11;:25;17770:12;:10;:12::i;:::-;17758:25;;;;;;;;;;;;;;;:34;17784:7;17758:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17726:8;:83::i;:::-;17827:4;17820:11;;17621:218;;;;:::o;19033:124::-;5814:12;:10;:12::i;:::-;5804:22;;:6;;;;;;;;;;:22;;;5796:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19141:8:::1;19115:23;:34;;;;19033:124:::0;:::o;14949:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;15599:40::-;;;;;;;;;;;;:::o;19165:139::-;5814:12;:10;:12::i;:::-;5804:22;;:6;;;;;;;;;;:22;;;5796:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19285:10:::1;19252:22;;:44;;;;;;;;;;;;;;;;;;19165:139:::0;:::o;14892:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6386:90::-;6426:7;6453:15;6446:22;;6386:90;:::o;15121:35::-;;;;:::o;19902:748::-;19982:22;5814:12;:10;:12::i;:::-;5804:22;;:6;;;;;;;;;;:22;;;5796:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20019:35:::1;20076:16;20019:74;;20142:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20124:53;;;20186:4;20193:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20124:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20107:110;;20259:1;20233:28;;:14;:28;;;20230:225;;;20347:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20329:74;;;20412:4;20419:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20329:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20312:131;;20230:225;20481:14;20467:11;;:28;;;;;;;;;;;;;;;;;;20547:16;20529:15;;:34;;;;;;;;;;;;;;;;;;20638:4;20601:12;:34;20622:11;;;;;;;;;;;20601:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;5874:1;19902:748:::0;;;:::o;15046:34::-;;;;:::o;15087:27::-;;;;:::o;17343:119::-;17409:7;17436:9;:18;17446:7;17436:18;;;;;;;;;;;;;;;;17429:25;;17343:119;;;:::o;15208:37::-;;;;:::o;5670:79::-;5708:7;5735:6;;;;;;;;;;;5728:13;;5670:79;:::o;5895:227::-;5814:12;:10;:12::i;:::-;5804:22;;:6;;;;;;;;;;:22;;;5796:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5999:42:::1;5962:81;;5983:6;::::0;::::1;;;;;;;;5962:81;;;;;;;;;;;;6071:42;6054:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;5895:227::o:0;17049:87::-;17088:13;17121:7;17114:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17049:87;:::o;18124:120::-;18186:7;18213:23;;18206:30;;18124:120;:::o;15254:44::-;;;;:::o;17847:269::-;17940:4;17957:129;17966:12;:10;:12::i;:::-;17980:7;17989:96;18028:15;17989:96;;;;;;;;;;;;;;;;;:11;:25;18001:12;:10;:12::i;:::-;17989:25;;;;;;;;;;;;;;;:34;18015:7;17989:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;17957:8;:129::i;:::-;18104:4;18097:11;;17847:269;;;;:::o;19491:125::-;5814:12;:10;:12::i;:::-;5804:22;;:6;;;;;;;;;;:22;;;5796:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19600:8:::1;19572:25;;:36;;;;;;;;;;;;;;;;;;19491:125:::0;:::o;20752:167::-;20830:4;20847:42;20857:12;:10;:12::i;:::-;20871:9;20882:6;20847:9;:42::i;:::-;;20907:4;20900:11;;20752:167;;;;:::o;19312:171::-;5814:12;:10;:12::i;:::-;5804:22;;:6;;;;;;;;;;:22;;;5796:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19413:8:::1;19389:21;::::0;:32:::1;;;;;;;;;;;;;;;;;;19437:38;19466:8;19437:38;;;;;;:::i;:::-;;;;;;;;19312:171:::0;:::o;15532:26::-;;;;;;;;;;;;;:::o;14559:99::-;;;;;;;;;;;;;:::o;15646:45::-;;;;;;;;;;;;;:::o;17470:143::-;17551:7;17578:11;:18;17590:5;17578:18;;;;;;;;;;;;;;;:27;17597:7;17578:27;;;;;;;;;;;;;;;;17571:34;;17470:143;;;;:::o;18772:135::-;5814:12;:10;:12::i;:::-;5804:22;;:6;;;;;;;;;;:22;;;5796:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18891:8:::1;18862:17;:26;18880:7;18862:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;18772:135:::0;;:::o;15165:36::-;;;;:::o;6130:244::-;5814:12;:10;:12::i;:::-;5804:22;;:6;;;;;;;;;;:22;;;5796:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6239:1:::1;6219:22;;:8;:22;;;;6211:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6329:8;6300:38;;6321:6;::::0;::::1;;;;;;;;6300:38;;;;;;;;;;;;6358:8;6349:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6130:244:::0;:::o;15698:35::-;;;;;;;;;;;;;:::o;18915:106::-;5814:12;:10;:12::i;:::-;5804:22;;:6;;;;;;;;;;:22;;;5796:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19005:8:::1;18987:15;:26;;;;18915:106:::0;:::o;106:115::-;159:15;202:10;187:26;;106:115;:::o;18421:337::-;18531:1;18514:19;;:5;:19;;;;18506:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18612:1;18593:21;;:7;:21;;;;18585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18696:6;18666:11;:18;18678:5;18666:18;;;;;;;;;;;;;;;:27;18685:7;18666:27;;;;;;;;;;;;;;;:36;;;;18734:7;18718:32;;18727:5;18718:32;;;18743:6;18718:32;;;;;;:::i;:::-;;;;;;;;18421:337;;;:::o;21248:945::-;21335:4;21380:1;21362:20;;:6;:20;;;;21354:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21464:1;21443:23;;:9;:23;;;;21435:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21522:16;;;;;;;;;;;21519:667;;;21572:41;21587:6;21595:9;21606:6;21572:14;:41::i;:::-;21565:48;;;;21519:667;21678:20;21688:9;21678;:20::i;:::-;;21753:53;21775:6;21753:53;;;;;;;;;;;;;;;;;:9;:17;21763:6;21753:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;21733:9;:17;21743:6;21733:17;;;;;;;;;;;;;;;:73;;;;21823:19;21846:17;:25;21864:6;21846:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;21875:17;:28;21893:9;21875:28;;;;;;;;;;;;;;;;;;;;;;;;;21846:57;21845:148;;21959:34;21967:6;21975:9;21986:6;21959:7;:34::i;:::-;21845:148;;;21950:6;21845:148;21823:170;;22033:37;22058:11;22033:9;:20;22043:9;22033:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;22010:9;:20;22020:9;22010:20;;;;;;;;;;;;;;;:60;;;;22111:9;22094:40;;22103:6;22094:40;;;22122:11;22094:40;;;;;;:::i;:::-;;;;;;;;22170:4;22163:11;;;21248:945;;;;;;:::o;1381:192::-;1467:7;1500:1;1495;:6;;1503:12;1487:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1527:9;1543:1;1539;:5;;;;:::i;:::-;1527:17;;1564:1;1557:8;;;1381:192;;;;;:::o;1237:136::-;1295:7;1322:43;1326:1;1329;1322:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1315:50;;1237:136;;;;:::o;1048:181::-;1106:7;1126:9;1142:1;1138;:5;;;;:::i;:::-;1126:17;;1167:1;1162;:6;;1154:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1220:1;1213:8;;;1048:181;;;;:::o;22201:330::-;22294:4;22331:53;22353:6;22331:53;;;;;;;;;;;;;;;;;:9;:17;22341:6;22331:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22311:9;:17;22321:6;22311:17;;;;;;;;;;;;;;;:73;;;;22418:32;22443:6;22418:9;:20;22428:9;22418:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;22395:9;:20;22405:9;22395:20;;;;;;;;;;;;;;;:55;;;;22483:9;22466:35;;22475:6;22466:35;;;22494:6;22466:35;;;;;;:::i;:::-;;;;;;;;22519:4;22512:11;;22201:330;;;;;:::o;24599:284::-;24655:4;24678:6;24687:1;24678:10;;24674:144;24694:7;:14;;;;24690:1;:18;24674:144;;;24749:9;24735:23;;:7;24743:1;24735:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;24731:76;;;24786:5;24779:12;;;;;24731:76;24711:3;;;;;:::i;:::-;;;;24674:144;;;;24830:7;24843:9;24830:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24871:4;24864:11;;24599:284;;;;:::o;25902:519::-;25988:7;26018:17;26038:1;26018:21;;26063:12;:20;26076:6;26063:20;;;;;;;;;;;;;;;;;;;;;;;;;26060:223;;;26112:38;26146:3;26112:29;26123:17;;26112:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;26100:50;;26060:223;;;26180:12;:23;26193:9;26180:23;;;;;;;;;;;;;;;;;;;;;;;;;26177:106;;;26232:39;26267:3;26232:30;26243:18;;26232:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;26220:51;;26177:106;26060:223;26310:1;26298:9;:13;26295:78;;;26330:31;26344:6;26351:9;26330:13;:31::i;:::-;26295:78;26392:21;26403:9;26392:6;:10;;:21;;;;:::i;:::-;26385:28;;;25902:519;;;;;:::o;1581:250::-;1639:7;1668:1;1663;:6;1659:47;;;1693:1;1686:8;;;;1659:47;1718:9;1734:1;1730;:5;;;;:::i;:::-;1718:17;;1763:1;1758;1754;:5;;;;:::i;:::-;:10;1746:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1822:1;1815:8;;;1581:250;;;;;:::o;1839:132::-;1897:7;1924:39;1928:1;1931;1924:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1917:46;;1839:132;;;;:::o;24891:1003::-;24970:19;24992:39;25027:3;24992:30;25006:15;;24992:9;:13;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;24970:61;;25044:19;25066:32;25094:3;25066:23;25080:8;;25066:9;:13;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;25044:54;;25111:17;25131:39;25166:3;25131:30;25145:15;;25131:9;:13;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;25111:59;;25183:17;25203:51;25238:15;;25221:7;:14;;;;:32;;;;:::i;:::-;25204:11;25203:17;;:51;;;;:::i;:::-;25183:71;;25293:1;25270:25;;:11;;;;;;;;;;;:25;;;25267:179;;25336:37;25363:9;25336;:22;25346:11;;;;;;;;;;;25336:22;;;;;;;;;;;;;;;;:26;;:37;;;;:::i;:::-;25311:9;:22;25321:11;;;;;;;;;;;25311:22;;;;;;;;;;;;;;;:62;;;;25409:11;;;;;;;;;;;25393:39;;25402:6;25393:39;;;25422:9;25393:39;;;;;;:::i;:::-;;;;;;;;25267:179;25494:50;25532:11;25494:9;:33;25504:22;;;;;;;;;;;25494:33;;;;;;;;;;;;;;;;:37;;:50;;;;:::i;:::-;25458:9;:33;25468:22;;;;;;;;;;;25458:33;;;;;;;;;;;;;;;:86;;;;25576:22;;;;;;;;;;;25560:52;;25569:6;25560:52;;;25600:11;25560:52;;;;;;:::i;:::-;;;;;;;;25634:6;25630:255;25650:7;:14;;;;25646:1;:18;25630:255;;;25704:11;;;;;;;;;;;25690:25;;:7;25698:1;25690:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;25687:187;;25760:36;25786:9;25760;:21;25770:7;25778:1;25770:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25760:21;;;;;;;;;;;;;;;;:25;;:36;;;;:::i;:::-;25736:9;:21;25746:7;25754:1;25746:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25736:21;;;;;;;;;;;;;;;:60;;;;25836:7;25844:1;25836:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25820:38;;25829:6;25820:38;;;25848:9;25820:38;;;;;;:::i;:::-;;;;;;;;25687:187;25667:3;;;;;:::i;:::-;;;;25630:255;;;;24891:1003;;;;;;:::o;1979:278::-;2065:7;2097:1;2093;:5;2100:12;2085:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2124:9;2140:1;2136;:5;;;;:::i;:::-;2124:17;;2248:1;2241:8;;;1979:278;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:262::-;644:6;693:2;681:9;672:7;668:23;664:32;661:2;;;709:1;706;699:12;661:2;752:1;777:53;822:7;813:6;802:9;798:22;777:53;:::i;:::-;767:63;;723:117;651:196;;;;:::o;853:284::-;923:6;972:2;960:9;951:7;947:23;943:32;940:2;;;988:1;985;978:12;940:2;1031:1;1056:64;1112:7;1103:6;1092:9;1088:22;1056:64;:::i;:::-;1046:74;;1002:128;930:207;;;;:::o;1143:407::-;1211:6;1219;1268:2;1256:9;1247:7;1243:23;1239:32;1236:2;;;1284:1;1281;1274:12;1236:2;1327:1;1352:53;1397:7;1388:6;1377:9;1373:22;1352:53;:::i;:::-;1342:63;;1298:117;1454:2;1480:53;1525:7;1516:6;1505:9;1501:22;1480:53;:::i;:::-;1470:63;;1425:118;1226:324;;;;;:::o;1556:552::-;1633:6;1641;1649;1698:2;1686:9;1677:7;1673:23;1669:32;1666:2;;;1714:1;1711;1704:12;1666:2;1757:1;1782:53;1827:7;1818:6;1807:9;1803:22;1782:53;:::i;:::-;1772:63;;1728:117;1884:2;1910:53;1955:7;1946:6;1935:9;1931:22;1910:53;:::i;:::-;1900:63;;1855:118;2012:2;2038:53;2083:7;2074:6;2063:9;2059:22;2038:53;:::i;:::-;2028:63;;1983:118;1656:452;;;;;:::o;2114:401::-;2179:6;2187;2236:2;2224:9;2215:7;2211:23;2207:32;2204:2;;;2252:1;2249;2242:12;2204:2;2295:1;2320:53;2365:7;2356:6;2345:9;2341:22;2320:53;:::i;:::-;2310:63;;2266:117;2422:2;2448:50;2490:7;2481:6;2470:9;2466:22;2448:50;:::i;:::-;2438:60;;2393:115;2194:321;;;;;:::o;2521:407::-;2589:6;2597;2646:2;2634:9;2625:7;2621:23;2617:32;2614:2;;;2662:1;2659;2652:12;2614:2;2705:1;2730:53;2775:7;2766:6;2755:9;2751:22;2730:53;:::i;:::-;2720:63;;2676:117;2832:2;2858:53;2903:7;2894:6;2883:9;2879:22;2858:53;:::i;:::-;2848:63;;2803:118;2604:324;;;;;:::o;2934:256::-;2990:6;3039:2;3027:9;3018:7;3014:23;3010:32;3007:2;;;3055:1;3052;3045:12;3007:2;3098:1;3123:50;3165:7;3156:6;3145:9;3141:22;3123:50;:::i;:::-;3113:60;;3069:114;2997:193;;;;:::o;3196:262::-;3255:6;3304:2;3292:9;3283:7;3279:23;3275:32;3272:2;;;3320:1;3317;3310:12;3272:2;3363:1;3388:53;3433:7;3424:6;3413:9;3409:22;3388:53;:::i;:::-;3378:63;;3334:117;3262:196;;;;:::o;3464:142::-;3567:32;3593:5;3567:32;:::i;:::-;3562:3;3555:45;3545:61;;:::o;3612:118::-;3699:24;3717:5;3699:24;:::i;:::-;3694:3;3687:37;3677:53;;:::o;3736:109::-;3817:21;3832:5;3817:21;:::i;:::-;3812:3;3805:34;3795:50;;:::o;3851:185::-;3965:64;4023:5;3965:64;:::i;:::-;3960:3;3953:77;3943:93;;:::o;4042:364::-;4130:3;4158:39;4191:5;4158:39;:::i;:::-;4213:71;4277:6;4272:3;4213:71;:::i;:::-;4206:78;;4293:52;4338:6;4333:3;4326:4;4319:5;4315:16;4293:52;:::i;:::-;4370:29;4392:6;4370:29;:::i;:::-;4365:3;4361:39;4354:46;;4134:272;;;;;:::o;4412:366::-;4554:3;4575:67;4639:2;4634:3;4575:67;:::i;:::-;4568:74;;4651:93;4740:3;4651:93;:::i;:::-;4769:2;4764:3;4760:12;4753:19;;4558:220;;;:::o;4784:366::-;4926:3;4947:67;5011:2;5006:3;4947:67;:::i;:::-;4940:74;;5023:93;5112:3;5023:93;:::i;:::-;5141:2;5136:3;5132:12;5125:19;;4930:220;;;:::o;5156:366::-;5298:3;5319:67;5383:2;5378:3;5319:67;:::i;:::-;5312:74;;5395:93;5484:3;5395:93;:::i;:::-;5513:2;5508:3;5504:12;5497:19;;5302:220;;;:::o;5528:366::-;5670:3;5691:67;5755:2;5750:3;5691:67;:::i;:::-;5684:74;;5767:93;5856:3;5767:93;:::i;:::-;5885:2;5880:3;5876:12;5869:19;;5674:220;;;:::o;5900:366::-;6042:3;6063:67;6127:2;6122:3;6063:67;:::i;:::-;6056:74;;6139:93;6228:3;6139:93;:::i;:::-;6257:2;6252:3;6248:12;6241:19;;6046:220;;;:::o;6272:366::-;6414:3;6435:67;6499:2;6494:3;6435:67;:::i;:::-;6428:74;;6511:93;6600:3;6511:93;:::i;:::-;6629:2;6624:3;6620:12;6613:19;;6418:220;;;:::o;6644:366::-;6786:3;6807:67;6871:2;6866:3;6807:67;:::i;:::-;6800:74;;6883:93;6972:3;6883:93;:::i;:::-;7001:2;6996:3;6992:12;6985:19;;6790:220;;;:::o;7016:366::-;7158:3;7179:67;7243:2;7238:3;7179:67;:::i;:::-;7172:74;;7255:93;7344:3;7255:93;:::i;:::-;7373:2;7368:3;7364:12;7357:19;;7162:220;;;:::o;7388:118::-;7475:24;7493:5;7475:24;:::i;:::-;7470:3;7463:37;7453:53;;:::o;7512:112::-;7595:22;7611:5;7595:22;:::i;:::-;7590:3;7583:35;7573:51;;:::o;7630:222::-;7723:4;7761:2;7750:9;7746:18;7738:26;;7774:71;7842:1;7831:9;7827:17;7818:6;7774:71;:::i;:::-;7728:124;;;;:::o;7858:254::-;7967:4;8005:2;7994:9;7990:18;7982:26;;8018:87;8102:1;8091:9;8087:17;8078:6;8018:87;:::i;:::-;7972:140;;;;:::o;8118:332::-;8239:4;8277:2;8266:9;8262:18;8254:26;;8290:71;8358:1;8347:9;8343:17;8334:6;8290:71;:::i;:::-;8371:72;8439:2;8428:9;8424:18;8415:6;8371:72;:::i;:::-;8244:206;;;;;:::o;8456:210::-;8543:4;8581:2;8570:9;8566:18;8558:26;;8594:65;8656:1;8645:9;8641:17;8632:6;8594:65;:::i;:::-;8548:118;;;;:::o;8672:276::-;8792:4;8830:2;8819:9;8815:18;8807:26;;8843:98;8938:1;8927:9;8923:17;8914:6;8843:98;:::i;:::-;8797:151;;;;:::o;8954:313::-;9067:4;9105:2;9094:9;9090:18;9082:26;;9154:9;9148:4;9144:20;9140:1;9129:9;9125:17;9118:47;9182:78;9255:4;9246:6;9182:78;:::i;:::-;9174:86;;9072:195;;;;:::o;9273:419::-;9439:4;9477:2;9466:9;9462:18;9454:26;;9526:9;9520:4;9516:20;9512:1;9501:9;9497:17;9490:47;9554:131;9680:4;9554:131;:::i;:::-;9546:139;;9444:248;;;:::o;9698:419::-;9864:4;9902:2;9891:9;9887:18;9879:26;;9951:9;9945:4;9941:20;9937:1;9926:9;9922:17;9915:47;9979:131;10105:4;9979:131;:::i;:::-;9971:139;;9869:248;;;:::o;10123:419::-;10289:4;10327:2;10316:9;10312:18;10304:26;;10376:9;10370:4;10366:20;10362:1;10351:9;10347:17;10340:47;10404:131;10530:4;10404:131;:::i;:::-;10396:139;;10294:248;;;:::o;10548:419::-;10714:4;10752:2;10741:9;10737:18;10729:26;;10801:9;10795:4;10791:20;10787:1;10776:9;10772:17;10765:47;10829:131;10955:4;10829:131;:::i;:::-;10821:139;;10719:248;;;:::o;10973:419::-;11139:4;11177:2;11166:9;11162:18;11154:26;;11226:9;11220:4;11216:20;11212:1;11201:9;11197:17;11190:47;11254:131;11380:4;11254:131;:::i;:::-;11246:139;;11144:248;;;:::o;11398:419::-;11564:4;11602:2;11591:9;11587:18;11579:26;;11651:9;11645:4;11641:20;11637:1;11626:9;11622:17;11615:47;11679:131;11805:4;11679:131;:::i;:::-;11671:139;;11569:248;;;:::o;11823:419::-;11989:4;12027:2;12016:9;12012:18;12004:26;;12076:9;12070:4;12066:20;12062:1;12051:9;12047:17;12040:47;12104:131;12230:4;12104:131;:::i;:::-;12096:139;;11994:248;;;:::o;12248:419::-;12414:4;12452:2;12441:9;12437:18;12429:26;;12501:9;12495:4;12491:20;12487:1;12476:9;12472:17;12465:47;12529:131;12655:4;12529:131;:::i;:::-;12521:139;;12419:248;;;:::o;12673:222::-;12766:4;12804:2;12793:9;12789:18;12781:26;;12817:71;12885:1;12874:9;12870:17;12861:6;12817:71;:::i;:::-;12771:124;;;;:::o;12901:214::-;12990:4;13028:2;13017:9;13013:18;13005:26;;13041:67;13105:1;13094:9;13090:17;13081:6;13041:67;:::i;:::-;12995:120;;;;:::o;13121:99::-;13173:6;13207:5;13201:12;13191:22;;13180:40;;;:::o;13226:169::-;13310:11;13344:6;13339:3;13332:19;13384:4;13379:3;13375:14;13360:29;;13322:73;;;;:::o;13401:305::-;13441:3;13460:20;13478:1;13460:20;:::i;:::-;13455:25;;13494:20;13512:1;13494:20;:::i;:::-;13489:25;;13648:1;13580:66;13576:74;13573:1;13570:81;13567:2;;;13654:18;;:::i;:::-;13567:2;13698:1;13695;13691:9;13684:16;;13445:261;;;;:::o;13712:185::-;13752:1;13769:20;13787:1;13769:20;:::i;:::-;13764:25;;13803:20;13821:1;13803:20;:::i;:::-;13798:25;;13842:1;13832:2;;13847:18;;:::i;:::-;13832:2;13889:1;13886;13882:9;13877:14;;13754:143;;;;:::o;13903:348::-;13943:7;13966:20;13984:1;13966:20;:::i;:::-;13961:25;;14000:20;14018:1;14000:20;:::i;:::-;13995:25;;14188:1;14120:66;14116:74;14113:1;14110:81;14105:1;14098:9;14091:17;14087:105;14084:2;;;14195:18;;:::i;:::-;14084:2;14243:1;14240;14236:9;14225:20;;13951:300;;;;:::o;14257:191::-;14297:4;14317:20;14335:1;14317:20;:::i;:::-;14312:25;;14351:20;14369:1;14351:20;:::i;:::-;14346:25;;14390:1;14387;14384:8;14381:2;;;14395:18;;:::i;:::-;14381:2;14440:1;14437;14433:9;14425:17;;14302:146;;;;:::o;14454:96::-;14491:7;14520:24;14538:5;14520:24;:::i;:::-;14509:35;;14499:51;;;:::o;14556:104::-;14601:7;14630:24;14648:5;14630:24;:::i;:::-;14619:35;;14609:51;;;:::o;14666:90::-;14700:7;14743:5;14736:13;14729:21;14718:32;;14708:48;;;:::o;14762:126::-;14799:7;14839:42;14832:5;14828:54;14817:65;;14807:81;;;:::o;14894:77::-;14931:7;14960:5;14949:16;;14939:32;;;:::o;14977:86::-;15012:7;15052:4;15045:5;15041:16;15030:27;;15020:43;;;:::o;15069:180::-;15146:9;15179:64;15237:5;15179:64;:::i;:::-;15166:77;;15156:93;;;:::o;15255:140::-;15332:9;15365:24;15383:5;15365:24;:::i;:::-;15352:37;;15342:53;;;:::o;15401:307::-;15469:1;15479:113;15493:6;15490:1;15487:13;15479:113;;;15578:1;15573:3;15569:11;15563:18;15559:1;15554:3;15550:11;15543:39;15515:2;15512:1;15508:10;15503:15;;15479:113;;;15610:6;15607:1;15604:13;15601:2;;;15690:1;15681:6;15676:3;15672:16;15665:27;15601:2;15450:258;;;;:::o;15714:320::-;15758:6;15795:1;15789:4;15785:12;15775:22;;15842:1;15836:4;15832:12;15863:18;15853:2;;15919:4;15911:6;15907:17;15897:27;;15853:2;15981;15973:6;15970:14;15950:18;15947:38;15944:2;;;16000:18;;:::i;:::-;15944:2;15765:269;;;;:::o;16040:233::-;16079:3;16102:24;16120:5;16102:24;:::i;:::-;16093:33;;16148:66;16141:5;16138:77;16135:2;;;16218:18;;:::i;:::-;16135:2;16265:1;16258:5;16254:13;16247:20;;16083:190;;;:::o;16279:180::-;16327:77;16324:1;16317:88;16424:4;16421:1;16414:15;16448:4;16445:1;16438:15;16465:180;16513:77;16510:1;16503:88;16610:4;16607:1;16600:15;16634:4;16631:1;16624:15;16651:180;16699:77;16696:1;16689:88;16796:4;16793:1;16786:15;16820:4;16817:1;16810:15;16837:102;16878:6;16929:2;16925:7;16920:2;16913:5;16909:14;16905:28;16895:38;;16885:54;;;:::o;16945:222::-;17085:34;17081:1;17073:6;17069:14;17062:58;17154:5;17149:2;17141:6;17137:15;17130:30;17051:116;:::o;17173:225::-;17313:34;17309:1;17301:6;17297:14;17290:58;17382:8;17377:2;17369:6;17365:15;17358:33;17279:119;:::o;17404:221::-;17544:34;17540:1;17532:6;17528:14;17521:58;17613:4;17608:2;17600:6;17596:15;17589:29;17510:115;:::o;17631:177::-;17771:29;17767:1;17759:6;17755:14;17748:53;17737:71;:::o;17814:220::-;17954:34;17950:1;17942:6;17938:14;17931:58;18023:3;18018:2;18010:6;18006:15;17999:28;17920:114;:::o;18040:182::-;18180:34;18176:1;18168:6;18164:14;18157:58;18146:76;:::o;18228:224::-;18368:34;18364:1;18356:6;18352:14;18345:58;18437:7;18432:2;18424:6;18420:15;18413:32;18334:118;:::o;18458:223::-;18598:34;18594:1;18586:6;18582:14;18575:58;18667:6;18662:2;18654:6;18650:15;18643:31;18564:117;:::o;18687:122::-;18760:24;18778:5;18760:24;:::i;:::-;18753:5;18750:35;18740:2;;18799:1;18796;18789:12;18740:2;18730:79;:::o;18815:116::-;18885:21;18900:5;18885:21;:::i;:::-;18878:5;18875:32;18865:2;;18921:1;18918;18911:12;18865:2;18855:76;:::o;18937:122::-;19010:24;19028:5;19010:24;:::i;:::-;19003:5;19000:35;18990:2;;19049:1;19046;19039:12;18990:2;18980:79;:::o

Swarm Source

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