ETH Price: $3,669.71 (+1.91%)

Token

ERC-20: CHASING NIGHTMARES (KANASHIBARI)
 

Overview

Max Total Supply

1,000,000,000 KANASHIBARI

Holders

31

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000002 KANASHIBARI

Value
$0.00
0x058eb53b19316d56f46550955b73b489d6b1c236
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:
KANASHIBARI

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-14
*/

/*
"A clear conscience never fears midnight knocking.”
*/

//TWITTER:  https://twitter.com/KanashibariERC
//TELEGRAM: https://t.me/ChasingNightmaresERC20

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.1;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        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 _previousOwner;
    uint256 private _lockTime;

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

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

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

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

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

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

// pragma solidity >=0.5.0;

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

// pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

// pragma solidity >=0.6.2;

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

    function WETH() external pure returns (address);

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

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

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

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

// pragma solidity >=0.6.2;

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

contract KANASHIBARI is Context, IERC20, Ownable {
    using Address for address;

    string private _name = "CHASING NIGHTMARES";
    string private _symbol = "KANASHIBARI";
    uint8 private _decimals = 9;
    uint256 private initialsupply = 1_000_000_000;
    uint256 private _tTotal = initialsupply * 10**_decimals;

    address payable public _marketingWallet;
    address public _liquidityWallet;

    mapping(address => uint256) private _tOwned;
    mapping(address => uint256) private buycooldown;
    mapping(address => uint256) private sellcooldown;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public _isExcludedFromFee;
    mapping(address => bool) public _isBlacklisted;

    struct Icooldown {
        bool buycooldownEnabled;
        bool sellcooldownEnabled;
        uint256 cooldown;
        uint256 cooldownLimit;
    }
    Icooldown public cooldownInfo =
        Icooldown({
            buycooldownEnabled: true,
            sellcooldownEnabled: true,
            cooldown: 30 seconds,
            cooldownLimit: 60 seconds
        });
    struct ILaunch {
        uint256 launchedAt;
        bool launched;
        bool launchProtection;
    }
    ILaunch public wenLaunch =
        ILaunch({
            launchedAt: 0, 
            launched: false, 
            launchProtection: true
        });

    struct ItxSettings {
        uint256 maxTxAmount;
        uint256 maxWalletAmount;
        uint256 numTokensToSwap;
        bool limited;
    }

    ItxSettings public txSettings;

    uint256 public _liquidityFee;
    uint256 public _marketingFee;
    uint256 public _buyLiquidityFee;
    uint256 public _buyMarketingFee;
    uint256 public _sellLiquidityFee;
    uint256 public _sellMarketingFee;

    uint256 public _lpFeeAccumulated;
    uint256 public _marketingFeeAccumulated;

    uint256 public _antiBlocks = 3;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled;

    bool public tradeEnabled;
    mapping(address => bool) public tradeAllowedList;

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

    event SniperStatus(address account, bool blacklisted);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event ToMarketing(uint256 marketingBalance);
    event SwapAndLiquify(uint256 liquidityTokens, uint256 liquidityFees);
    event Launch();

    constructor(address marketingWallet) {        
        _marketingWallet = payable(marketingWallet);
        // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E); // bsc pancake router 
        // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3); //bsc test net router kiem
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //eth unisawp router

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;

        _approve(_msgSender(), address(_uniswapV2Router), type(uint256).max);
        _approve(address(this), address(_uniswapV2Router), type(uint256).max);

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

        setSellFee(10,50);
        setBuyFee(10,50);
        setTransferFee(10,30);
        setTxSettings(1,100,2,100,1,10000,true);

        _tOwned[_msgSender()] = _tTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);

        tradeEnabled = false;
        tradeAllowedList[owner()] = true;
        tradeAllowedList[address(this)] = true;

        _liquidityWallet = _msgSender();
    }

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

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

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

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

    function setSellFee(uint256 liquidityFee, uint256 marketingFee) public onlyOwner {
        require(liquidityFee + marketingFee <= 250);
        _sellLiquidityFee = liquidityFee;
        _sellMarketingFee = marketingFee;
    }

    function setBuyFee(uint256 liquidityFee, uint256 marketingFee) public onlyOwner {
        require(liquidityFee + marketingFee <= 250);
        _buyMarketingFee = marketingFee;
        _buyLiquidityFee = liquidityFee;
    }

    function setTransferFee(uint256 liquidityFee, uint256 marketingFee) public onlyOwner {
        require(liquidityFee + marketingFee <= 250);
        _liquidityFee = liquidityFee;
        _marketingFee = marketingFee;
    }

    function setCooldown(uint256 amount) external onlyOwner {
        require(amount <= cooldownInfo.cooldownLimit);
        cooldownInfo.cooldown = amount;
    }

    function setMarketingWallet(address payable newMarketingWallet) external onlyOwner {
        _marketingWallet = payable(newMarketingWallet);
    }

    function setLiquidityWallet(address newLpWallet) external onlyOwner {
        _liquidityWallet = newLpWallet;
    }

    function setTxSettings(uint256 txp, uint256 txd, uint256 mwp, uint256 mwd, uint256 sp, uint256 sd, bool limiter) public onlyOwner {
        require((_tTotal * txp) / txd >= (_tTotal / 1000), "Max Transaction must be above 0.1% of total supply.");
        require((_tTotal * mwp) / mwd >= (_tTotal / 1000), "Max Wallet must be above 0.1% of total supply.");
        uint256 newTx = (_tTotal * txp) / (txd);
        uint256 newMw = (_tTotal * mwp) / mwd;
        uint256 swapAmount = (_tTotal * sp) / (sd);
        txSettings = ItxSettings ({
            numTokensToSwap: swapAmount,
            maxTxAmount: newTx,
            maxWalletAmount: newMw,
            limited: limiter
        });
    }

    function setTradeEnabled(bool onoff) external onlyOwner {
        if (!wenLaunch.launched) {
            wenLaunch.launchedAt = block.number;
            wenLaunch.launched = true;
            swapAndLiquifyEnabled = true;
            emit Launch();
        }

        tradeEnabled = onoff;
    }

    function setAntiBlocks(uint256 _block) external onlyOwner {
        _antiBlocks = _block;
    }

    function setTradeAllowedAddress(address who, bool status) external onlyOwner {
        tradeAllowedList[who] = status;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - (subtractedValue)
        );
        return true;
    }

    function setBlacklistStatus(address account, bool blacklisted) external onlyOwner {
        if(account == uniswapV2Pair || account == address(this) || account == address(uniswapV2Router)) {revert();}
        if (blacklisted == true) {
            _isBlacklisted[account] = true;
        } else if (blacklisted == false) {
            _isBlacklisted[account] = false;
        }
    }

    function unblacklist(address account) external onlyOwner {
        _isBlacklisted[account] = false;
    }
    
    function setSniperStatus(address account, bool blacklisted) private{
        if(account == uniswapV2Pair || account == address(this) || account == address(uniswapV2Router)) {revert();}
        
        if (blacklisted == true) {
            _isBlacklisted[account] = true;
            emit SniperStatus(account, blacklisted);
        } 
    }

    function limits(bool onoff) public onlyOwner {
        txSettings.limited = onoff;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

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

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

    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 swapAndLiquify(uint256 tokenBalance) private lockTheSwap {
        uint256 initialBalance = address(this).balance;
        uint256 tokensToSwap = tokenBalance / 2;
        uint256 liquidityTokens = tokenBalance - tokensToSwap;

        if (tokensToSwap > 0) {
            swapTokensForEth(tokensToSwap);
        }

        uint256 newBalance = address(this).balance;
        uint256 liquidityBalance = uint256(newBalance - initialBalance);

        if (liquidityTokens > 0 && liquidityBalance > 0) {
            addLiquidity(liquidityTokens, liquidityBalance);
            emit SwapAndLiquify(liquidityTokens, liquidityBalance);
        }

        _lpFeeAccumulated -= tokenBalance;
    }

    function swapAndMarketing(uint256 tokenBalance) private lockTheSwap {
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }

        uint256 marketingBalance = address(this).balance;
        if (marketingBalance > 0) {
            _marketingWallet.transfer(marketingBalance);
            emit ToMarketing(marketingBalance);
        }

        _marketingFeeAccumulated -= tokenBalance;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        require(amountPercentage <= 100);
        uint256 amountETH = address(this).balance;
        payable(_marketingWallet).transfer(
            (amountETH * (amountPercentage)) / (100)
        );
    }

    function clearStuckToken(address to) external onlyOwner {
        uint256 _balance = balanceOf(address(this));
        _transfer(address(this), to, _balance);
    }

    function clearStuckTokens(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0));
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
    }

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

        if(_allowances[address(this)][address(uniswapV2Router)] < tokenAmount) {
            _approve(address(this), address(uniswapV2Router), type(uint256).max);
        }

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

        if(_allowances[address(this)][address(uniswapV2Router)] < tokenAmount) {
            _approve(address(this), address(uniswapV2Router), type(uint256).max);
        }

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

    function transferFrom(address sender,address recipient,uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - (
                amount
            )
        );
        return true;
    }    

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(_isBlacklisted[from] == false, "Hehe");
        require(_isBlacklisted[to] == false, "Hehe");

        if (!tradeEnabled) {
            require(tradeAllowedList[from] || tradeAllowedList[to], "Transfer: not allowed");
            require(balanceOf(uniswapV2Pair) == 0 || to != uniswapV2Pair, "Transfer: no body can sell now");
        }

        if (txSettings.limited) {
            if(from != owner() && to != owner() || to != address(0xdead) && to != address(0)) 
            {
                if (from == uniswapV2Pair || to == uniswapV2Pair
                ) {
                    if(!_isExcludedFromFee[to] && !_isExcludedFromFee[from]) {
                        require(amount <= txSettings.maxTxAmount);
                    }
                }
                if(to != address(uniswapV2Router) && to != uniswapV2Pair) {
                    if(!_isExcludedFromFee[to]) {
                        require(balanceOf(to) + amount <= txSettings.maxWalletAmount);
                    }
                }
            }
        }

        if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]
            ) {
                if (cooldownInfo.buycooldownEnabled) {
                    require(buycooldown[to] < block.timestamp);
                    buycooldown[to] = block.timestamp + (cooldownInfo.cooldown);
                }
            } else if (from != uniswapV2Pair && !_isExcludedFromFee[from]){
                if (cooldownInfo.sellcooldownEnabled) {
                    require(sellcooldown[from] <= block.timestamp);
                    sellcooldown[from] = block.timestamp + (cooldownInfo.cooldown);
                }
            }

        if (
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            uint256 contractTokenBalance = balanceOf(address(this));
            if (contractTokenBalance >= _lpFeeAccumulated && _lpFeeAccumulated >= txSettings.numTokensToSwap) {
                swapAndLiquify(txSettings.numTokensToSwap);
            } else if (contractTokenBalance >= _marketingFeeAccumulated && _marketingFeeAccumulated >= txSettings.numTokensToSwap) {
                swapAndMarketing(txSettings.numTokensToSwap);
            }
        }

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        //transfer amount, it will take tax, marketing, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

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

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private {
        uint256 feeAmount = 0;
        uint256 liquidityFeeValue;
        uint256 marketingFeeValue;
        bool highFee = false;

        if (wenLaunch.launchProtection) {
            if (wenLaunch.launched && wenLaunch.launchedAt > 0 && block.number > (wenLaunch.launchedAt + _antiBlocks)) {
                wenLaunch.launchProtection = false;
            } else {
                if (
                    sender == uniswapV2Pair &&
                    recipient != address(uniswapV2Router) &&
                    !_isExcludedFromFee[recipient]
                ) {
                    setSniperStatus(recipient, true); 
                    highFee = true;
                }
            }
        }

        if (takeFee) {
            if (sender == uniswapV2Pair) {
                liquidityFeeValue = _buyLiquidityFee;
                marketingFeeValue = _buyMarketingFee;
            } else if (recipient == uniswapV2Pair) {
                liquidityFeeValue = _sellLiquidityFee;
                marketingFeeValue = _sellMarketingFee;
            } else {
                liquidityFeeValue = _liquidityFee;
                marketingFeeValue = _marketingFee;
            }

            if (highFee) {
                liquidityFeeValue = 450;
                marketingFeeValue = 450;   
            }

            feeAmount = (amount * (liquidityFeeValue + marketingFeeValue)) / (1000);

            if ((liquidityFeeValue + marketingFeeValue) > 0) {
                uint256 _liquidityFeeAmount = (feeAmount * liquidityFeeValue / (liquidityFeeValue + marketingFeeValue));
                _lpFeeAccumulated += _liquidityFeeAmount;
                _marketingFeeAccumulated += (feeAmount - _liquidityFeeAmount);
            }
        }
        
        uint256 tAmount = amount - feeAmount;
        _tOwned[sender] -= amount;
        _tOwned[address(this)] += feeAmount;
        emit Transfer(sender, address(this), feeAmount);
        _tOwned[recipient] += tAmount;
        emit Transfer(sender, recipient, tAmount);
    }

    function setCooldownEnabled(bool onoff, bool offon) external onlyOwner {
        cooldownInfo.buycooldownEnabled = onoff;
        cooldownInfo.sellcooldownEnabled = offon;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"marketingWallet","type":"address"}],"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":[],"name":"Launch","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":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"SniperStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityFees","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":"marketingBalance","type":"uint256"}],"name":"ToMarketing","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":"_antiBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lpFeeAccumulated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeAccumulated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","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":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"clearStuckTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownInfo","outputs":[{"internalType":"bool","name":"buycooldownEnabled","type":"bool"},{"internalType":"bool","name":"sellcooldownEnabled","type":"bool"},{"internalType":"uint256","name":"cooldown","type":"uint256"},{"internalType":"uint256","name":"cooldownLimit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"limits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_block","type":"uint256"}],"name":"setAntiBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"setBlacklistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"},{"internalType":"bool","name":"offon","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLpWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setTradeAllowedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setTradeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"txp","type":"uint256"},{"internalType":"uint256","name":"txd","type":"uint256"},{"internalType":"uint256","name":"mwp","type":"uint256"},{"internalType":"uint256","name":"mwd","type":"uint256"},{"internalType":"uint256","name":"sp","type":"uint256"},{"internalType":"uint256","name":"sd","type":"uint256"},{"internalType":"bool","name":"limiter","type":"bool"}],"name":"setTxSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tradeAllowedList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"txSettings","outputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"},{"internalType":"uint256","name":"numTokensToSwap","type":"uint256"},{"internalType":"bool","name":"limited","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wenLaunch","outputs":[{"internalType":"uint256","name":"launchedAt","type":"uint256"},{"internalType":"bool","name":"launched","type":"bool"},{"internalType":"bool","name":"launchProtection","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280601281526020017f43484153494e47204e494748544d415245530000000000000000000000000000815250600390805190602001906200005192919062000f81565b506040518060400160405280600b81526020017f4b414e4153484942415249000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000f81565b506009600560006101000a81548160ff021916908360ff160217905550633b9aca00600655600560009054906101000a900460ff16600a620000e2919062001354565b600654620000f1919062001491565b6007556040518060800160405280600115158152602001600115158152602001601e8152602001603c815250601060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550604082015181600101556060820151816002015550506040518060600160405280600081526020016000151581526020016001151581525060136000820151816000015560208201518160010160006101000a81548160ff02191690831515021790555060408201518160010160016101000a81548160ff02191690831515021790555050506003602155348015620001f757600080fd5b50604051620072723803806200727283398181016040528101906200021d919062001048565b60006200022f620008b860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036e57600080fd5b505afa15801562000383573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a9919062001048565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040c57600080fd5b505afa15801562000421573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000447919062001048565b6040518363ffffffff1660e01b8152600401620004669291906200115f565b602060405180830381600087803b1580156200048157600080fd5b505af115801562000496573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bc919062001048565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506200056b6200053d620008b860201b60201c565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620008c060201b60201c565b6200059e30827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620008c060201b60201c565b6001600e6000620005b462000a9360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000671600a603262000abc60201b60201c565b62000685600a603262000b8a60201b60201c565b62000699600a601e62000c5860201b60201c565b620006b860016064600260646001612710600162000d2660201b60201c565b600754600a6000620006cf620008b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200071d620008b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040516200077e919062001236565b60405180910390a36000602260026101000a81548160ff021916908315150217905550600160236000620007b762000a9360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000870620008b860201b60201c565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062001791565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000933576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092a9062001214565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620009a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200099d906200118c565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000a86919062001236565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000acc620008b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000b5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b5390620011d0565b60405180910390fd5b60fa818362000b6c919062001264565b111562000b7857600080fd5b81601d8190555080601e819055505050565b62000b9a620008b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000c2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c2190620011d0565b60405180910390fd5b60fa818362000c3a919062001264565b111562000c4657600080fd5b80601c8190555081601b819055505050565b62000c68620008b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000cf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cef90620011d0565b60405180910390fd5b60fa818362000d08919062001264565b111562000d1457600080fd5b8160198190555080601a819055505050565b62000d36620008b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000dc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000dbd90620011d0565b60405180910390fd5b6103e860075462000dd89190620012c1565b868860075462000de9919062001491565b62000df59190620012c1565b101562000e39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e3090620011f2565b60405180910390fd5b6103e860075462000e4b9190620012c1565b848660075462000e5c919062001491565b62000e689190620012c1565b101562000eac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ea390620011ae565b60405180910390fd5b6000868860075462000ebf919062001491565b62000ecb9190620012c1565b90506000858760075462000ee0919062001491565b62000eec9190620012c1565b90506000848660075462000f01919062001491565b62000f0d9190620012c1565b90506040518060800160405280848152602001838152602001828152602001851515815250601560008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555090505050505050505050505050565b82805462000f8f906200153d565b90600052602060002090601f01602090048101928262000fb3576000855562000fff565b82601f1062000fce57805160ff191683800117855562000fff565b8280016001018555821562000fff579182015b8281111562000ffe57825182559160200191906001019062000fe1565b5b5090506200100e919062001012565b5090565b5b808211156200102d57600081600090555060010162001013565b5090565b600081519050620010428162001777565b92915050565b60006020828403121562001061576200106062001600565b5b6000620010718482850162001031565b91505092915050565b6200108581620014f2565b82525050565b60006200109a60228362001253565b9150620010a78262001612565b604082019050919050565b6000620010c1602e8362001253565b9150620010ce8262001661565b604082019050919050565b6000620010e860208362001253565b9150620010f582620016b0565b602082019050919050565b60006200110f60338362001253565b91506200111c82620016d9565b604082019050919050565b60006200113660248362001253565b9150620011438262001728565b604082019050919050565b620011598162001526565b82525050565b60006040820190506200117660008301856200107a565b6200118560208301846200107a565b9392505050565b60006020820190508181036000830152620011a7816200108b565b9050919050565b60006020820190508181036000830152620011c981620010b2565b9050919050565b60006020820190508181036000830152620011eb81620010d9565b9050919050565b600060208201905081810360008301526200120d8162001100565b9050919050565b600060208201905081810360008301526200122f8162001127565b9050919050565b60006020820190506200124d60008301846200114e565b92915050565b600082825260208201905092915050565b6000620012718262001526565b91506200127e8362001526565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620012b657620012b562001573565b5b828201905092915050565b6000620012ce8262001526565b9150620012db8362001526565b925082620012ee57620012ed620015a2565b5b828204905092915050565b6000808291508390505b60018511156200134b5780860481111562001323576200132262001573565b5b6001851615620013335780820291505b8081029050620013438562001605565b945062001303565b94509492505050565b6000620013618262001526565b91506200136e8362001530565b92506200139d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013a5565b905092915050565b600082620013b757600190506200148a565b81620013c757600090506200148a565b8160018114620013e05760028114620013eb5762001421565b60019150506200148a565b60ff8411156200140057620013ff62001573565b5b8360020a9150848211156200141a576200141962001573565b5b506200148a565b5060208310610133831016604e8410600b84101617156200145b5782820a90508381111562001455576200145462001573565b5b6200148a565b6200146a8484846001620012f9565b9250905081840481111562001484576200148362001573565b5b81810290505b9392505050565b60006200149e8262001526565b9150620014ab8362001526565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620014e757620014e662001573565b5b828202905092915050565b6000620014ff8262001506565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200155657607f821691505b602082108114156200156d576200156c620015d1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782057616c6c6574206d7573742062652061626f766520302e3125206f6660008201527f20746f74616c20737570706c792e000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d6178205472616e73616374696f6e206d7573742062652061626f766520302e60008201527f3125206f6620746f74616c20737570706c792e00000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6200178281620014f2565b81146200178e57600080fd5b50565b60805160601c60a05160601c615a066200186c60003960008181610dc601528181611679015281816130cb015281816130f80152818161328e015281816132e30152818161344c0152818161351c015281816136db0152818161385901528181613c9201528181613dac01528181613e0f01526145f7015260008181610e5101528181611030015281816133f50152818161357201528181613ce8015281816141b3015281816142e1015281816143470152818161438f01528181614469015281816144cf0152818161451701526146820152615a066000f3fe6080604052600436106103545760003560e01c8063715018a6116101c6578063b5ec1941116100f7578063d8913ae311610095578063ea2f0b371161006f578063ea2f0b3714610c8b578063f23175ff14610cb4578063f2fde38b14610cdd578063fb0ecfa414610d065761035b565b8063d8913ae314610bf5578063dc44b6a014610c23578063dd62ed3e14610c4e5761035b565b8063c5d24189116100d1578063c5d2418914610b49578063c61276b514610b74578063c860795214610b9f578063d621e81314610bca5761035b565b8063b5ec194114610aba578063c40fedc614610ae3578063c49b9a8014610b205761035b565b806395f93d4811610164578063a16df9d81161013e578063a16df9d8146109ee578063a457c2d714610a17578063a9059cbb14610a54578063b18e984014610a915761035b565b806395f93d481461096c578063962dfc751461099a5780639be953b3146109c55761035b565b806388790a68116101a057806388790a68146108c25780638da5cb5b146108ed578063934930a11461091857806395d89b41146109415761035b565b8063715018a61461084557806375e3661e1461085c578063768dc710146108855761035b565b8063382b2381116102a0578063514ec8031161023e5780635db44757116102185780635db44757146107875780636ac9a870146107b45780636bc87c3a146107dd57806370a08231146108085761035b565b8063514ec8031461070a5780635b8138f6146107355780635d098b381461075e5761035b565b8063437823ec1161027a578063437823ec1461066257806349bd5a5e1461068b5780634a74bb02146106b65780634fc3f41a146106e15761035b565b8063382b2381146105d157806339509351146105fc5780633bec2bf3146106395761035b565b80631cdd3be31161030d57806323b872dd116102e757806323b872dd14610515578063243a7e3114610552578063296f0a0c1461057d578063313ce567146105a65761035b565b80631cdd3be3146104845780631da1db5e146104c157806322976e0d146104ea5761035b565b806303d29d281461036057806306fdde0314610389578063095ea7b3146103b45780631694505e146103f157806318160ddd1461041c5780631c66cb6d146104475761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b506103876004803603810190610382919061492a565b610d2f565b005b34801561039557600080fd5b5061039e610f7e565b6040516103ab9190615002565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d6919061496a565b611010565b6040516103e89190614f87565b60405180910390f35b3480156103fd57600080fd5b5061040661102e565b6040516104139190614fe7565b60405180910390f35b34801561042857600080fd5b50610431611052565b60405161043e91906151a4565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190614810565b61105c565b60405161047b9190614f87565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190614810565b61107c565b6040516104b89190614f87565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e39190614a44565b61109c565b005b3480156104f657600080fd5b506104ff6111c8565b60405161050c91906151a4565b60405180910390f35b34801561052157600080fd5b5061053c600480360381019061053791906148d7565b6111ce565b6040516105499190614f87565b60405180910390f35b34801561055e57600080fd5b50610567611286565b6040516105749190614e9e565b60405180910390f35b34801561058957600080fd5b506105a4600480360381019061059f9190614810565b6112ac565b005b3480156105b257600080fd5b506105bb611385565b6040516105c891906152be565b60405180910390f35b3480156105dd57600080fd5b506105e661139c565b6040516105f391906151a4565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e919061496a565b6113a2565b6040516106309190614f87565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b91906149aa565b61144e565b005b34801561066e57600080fd5b5061068960048036038101906106849190614810565b611587565b005b34801561069757600080fd5b506106a0611677565b6040516106ad9190614e9e565b60405180910390f35b3480156106c257600080fd5b506106cb61169b565b6040516106d89190614f87565b60405180910390f35b3480156106ed57600080fd5b5061070860048036038101906107039190614a44565b6116ae565b005b34801561071657600080fd5b5061071f611762565b60405161072c91906151a4565b60405180910390f35b34801561074157600080fd5b5061075c6004803603810190610757919061492a565b611768565b005b34801561076a57600080fd5b506107856004803603810190610780919061486a565b611858565b005b34801561079357600080fd5b5061079c611931565b6040516107ab939291906151bf565b60405180910390f35b3480156107c057600080fd5b506107db60048036038101906107d69190614a9e565b611963565b005b3480156107e957600080fd5b506107f2611a23565b6040516107ff91906151a4565b60405180910390f35b34801561081457600080fd5b5061082f600480360381019061082a9190614810565b611a29565b60405161083c91906151a4565b60405180910390f35b34801561085157600080fd5b5061085a611a72565b005b34801561086857600080fd5b50610883600480360381019061087e9190614810565b611bc5565b005b34801561089157600080fd5b506108ac60048036038101906108a79190614810565b611cb5565b6040516108b99190614f87565b60405180910390f35b3480156108ce57600080fd5b506108d7611cd5565b6040516108e491906151a4565b60405180910390f35b3480156108f957600080fd5b50610902611cdb565b60405161090f9190614e9e565b60405180910390f35b34801561092457600080fd5b5061093f600480360381019061093a9190614a9e565b611d04565b005b34801561094d57600080fd5b50610956611dc4565b6040516109639190615002565b60405180910390f35b34801561097857600080fd5b50610981611e56565b6040516109919493929190614fa2565b60405180910390f35b3480156109a657600080fd5b506109af611e8e565b6040516109bc9190614eb9565b60405180910390f35b3480156109d157600080fd5b506109ec60048036038101906109e79190614810565b611eb4565b005b3480156109fa57600080fd5b50610a156004803603810190610a109190614b31565b611f65565b005b348015610a2357600080fd5b50610a3e6004803603810190610a39919061496a565b612197565b604051610a4b9190614f87565b60405180910390f35b348015610a6057600080fd5b50610a7b6004803603810190610a76919061496a565b612243565b604051610a889190614f87565b60405180910390f35b348015610a9d57600080fd5b50610ab86004803603810190610ab39190614a44565b612261565b005b348015610ac657600080fd5b50610ae16004803603810190610adc91906149aa565b612300565b005b348015610aef57600080fd5b50610b0a6004803603810190610b059190614897565b6123b5565b604051610b179190614f87565b60405180910390f35b348015610b2c57600080fd5b50610b476004803603810190610b4291906149aa565b6125a9565b005b348015610b5557600080fd5b50610b5e612692565b604051610b6b91906151a4565b60405180910390f35b348015610b8057600080fd5b50610b89612698565b604051610b9691906151a4565b60405180910390f35b348015610bab57600080fd5b50610bb461269e565b604051610bc191906151a4565b60405180910390f35b348015610bd657600080fd5b50610bdf6126a4565b604051610bec9190614f87565b60405180910390f35b348015610c0157600080fd5b50610c0a6126b7565b604051610c1a9493929190615279565b60405180910390f35b348015610c2f57600080fd5b50610c386126e2565b604051610c4591906151a4565b60405180910390f35b348015610c5a57600080fd5b50610c756004803603810190610c709190614897565b6126e8565b604051610c8291906151a4565b60405180910390f35b348015610c9757600080fd5b50610cb26004803603810190610cad9190614810565b61276f565b005b348015610cc057600080fd5b50610cdb6004803603810190610cd69190614a04565b61285f565b005b348015610ce957600080fd5b50610d046004803603810190610cff9190614810565b612932565b005b348015610d1257600080fd5b50610d2d6004803603810190610d289190614a9e565b612af4565b005b610d37612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb906150a4565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610e4957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80610e9f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ea957600080fd5b600115158115151415610f13576001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f7a565b600015158115151415610f79576000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5050565b606060038054610f8d90615525565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb990615525565b80156110065780601f10610fdb57610100808354040283529160200191611006565b820191906000526020600020905b815481529060010190602001808311610fe957829003601f168201915b5050505050905090565b600061102461101d612bb4565b8484612bbc565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600754905090565b60236020528060005260406000206000915054906101000a900460ff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b6110a4612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611131576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611128906150a4565b60405180910390fd5b606481111561113f57600080fd5b6000479050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461118e91906153b5565b6111989190615384565b9081150290604051600060405180830381858888f193505050501580156111c3573d6000803e3d6000fd5b505050565b601a5481565b60006111db848484612d87565b61127b846111e7612bb4565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611231612bb4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611276919061540f565b612bbc565b600190509392505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112b4612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611341576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611338906150a4565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b60215481565b60006114446113af612bb4565b8484600d60006113bd612bb4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143f919061532e565b612bbc565b6001905092915050565b611456612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da906150a4565b60405180910390fd5b601360010160009054906101000a900460ff1661156a57436013600001819055506001601360010160006101000a81548160ff0219169083151502179055506001602260016101000a81548160ff0219169083151502179055507f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266960405160405180910390a15b80602260026101000a81548160ff02191690831515021790555050565b61158f612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461161c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611613906150a4565b60405180910390fd5b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b602260019054906101000a900460ff1681565b6116b6612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a906150a4565b60405180910390fd5b60106002015481111561175557600080fd5b8060106001018190555050565b601f5481565b611770612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f4906150a4565b60405180910390fd5b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611860612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e4906150a4565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60138060000154908060010160009054906101000a900460ff16908060010160019054906101000a900460ff16905083565b61196b612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ef906150a4565b60405180910390fd5b60fa8183611a06919061532e565b1115611a1157600080fd5b81601d8190555080601e819055505050565b60195481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611a7a612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe906150a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611bcd612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c51906150a4565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b601d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611d0c612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d90906150a4565b60405180910390fd5b60fa8183611da7919061532e565b1115611db257600080fd5b8160198190555080601a819055505050565b606060048054611dd390615525565b80601f0160208091040260200160405190810160405280929190818152602001828054611dff90615525565b8015611e4c5780601f10611e2157610100808354040283529160200191611e4c565b820191906000526020600020905b815481529060010190602001808311611e2f57829003601f168201915b5050505050905090565b60108060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060010154908060020154905084565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ebc612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f40906150a4565b60405180910390fd5b6000611f5430611a29565b9050611f61308383612d87565b5050565b611f6d612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff1906150a4565b60405180910390fd5b6103e860075461200a9190615384565b868860075461201991906153b5565b6120239190615384565b1015612064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205b90615124565b60405180910390fd5b6103e86007546120749190615384565b848660075461208391906153b5565b61208d9190615384565b10156120ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c590615084565b60405180910390fd5b600086886007546120df91906153b5565b6120e99190615384565b9050600085876007546120fc91906153b5565b6121069190615384565b90506000848660075461211991906153b5565b6121239190615384565b90506040518060800160405280848152602001838152602001828152602001851515815250601560008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555090505050505050505050505050565b60006122396121a4612bb4565b8484600d60006121b2612bb4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612234919061540f565b612bbc565b6001905092915050565b6000612257612250612bb4565b8484612d87565b6001905092915050565b612269612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ed906150a4565b60405180910390fd5b8060218190555050565b612308612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c906150a4565b60405180910390fd5b80601560030160006101000a81548160ff02191690831515021790555050565b60006123bf612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461244c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612443906150a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561248657600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016124c19190614e9e565b60206040518083038186803b1580156124d957600080fd5b505afa1580156124ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125119190614a71565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b815260040161254e929190614efd565b602060405180830381600087803b15801561256857600080fd5b505af115801561257c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a091906149d7565b91505092915050565b6125b1612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461263e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612635906150a4565b60405180910390fd5b80602260016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126879190614f87565b60405180910390a150565b601c5481565b60205481565b601e5481565b602260029054906101000a900460ff1681565b60158060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b601b5481565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612777612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fb906150a4565b60405180910390fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612867612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128eb906150a4565b60405180910390fd5b81601060000160006101000a81548160ff02191690831515021790555080601060000160016101000a81548160ff0219169083151502179055505050565b61293a612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129be906150a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2e90615044565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612afc612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b80906150a4565b60405180910390fd5b60fa8183612b97919061532e565b1115612ba257600080fd5b80601c8190555081601b819055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2390615164565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9390615064565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d7a91906151a4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dee90615144565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5e90615024565b60405180910390fd5b60008111612eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea1906150e4565b60405180910390fd5b60001515600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3490615104565b60405180910390fd5b60001515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc790615104565b60405180910390fd5b602260029054906101000a900460ff1661318757602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130855750602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130bb906150c4565b60405180910390fd5b60006130ef7f0000000000000000000000000000000000000000000000000000000000000000611a29565b148061314757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b613186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317d90615184565b60405180910390fd5b5b601560030160009054906101000a900460ff161561351a576131a7611cdb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561321557506131e5611cdb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80613287575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156132865750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b5b15613519577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061333157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156133f357600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133da5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133f2576015600001548111156133f157600080fd5b5b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561349b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561351857600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613517576015600101548161350184611a29565b61350b919061532e565b111561351657600080fd5b5b5b5b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156135c157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156136175750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136d957601060000160009054906101000a900460ff16156136d45742600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061367f57600080fd5b60106001015442613690919061532e565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61383f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561377f5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561383e57601060000160019054906101000a900460ff161561383d5742600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156137e857600080fd5b601060010154426137f9919061532e565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b602260009054906101000a900460ff161580156138a857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156138c05750602260019054906101000a900460ff165b156139335760006138d030611a29565b9050601f5481101580156138eb5750601560020154601f5410155b15613903576138fe6015600201546139f6565b613931565b602054811015801561391c575060156002015460205410155b156139305761392f601560020154613af4565b5b5b505b600060019050600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139da5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139e457600090505b6139f084848484613c09565b50505050565b6001602260006101000a81548160ff02191690831515021790555060004790506000600283613a259190615384565b905060008184613a35919061540f565b90506000821115613a4a57613a4982614114565b5b600047905060008482613a5d919061540f565b9050600083118015613a6f5750600081115b15613ab857613a7e8382614425565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868382604051613aaf929190615250565b60405180910390a15b85601f6000828254613aca919061540f565b9250508190555050505050506000602260006101000a81548160ff02191690831515021790555050565b6001602260006101000a81548160ff0219169083151502179055506000811115613b2257613b2181614114565b5b60004790506000811115613bd157600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613b98573d6000803e3d6000fd5b507f4d5c7c4ddada689ed3a12644234d0a26ec361d8a6f55c9b05805a57bd636f14b81604051613bc891906151a4565b60405180910390a15b8160206000828254613be3919061540f565b92505081905550506000602260006101000a81548160ff02191690831515021790555050565b600080806000601360010160019054906101000a900460ff1615613da457601360010160009054906101000a900460ff168015613c4b57506000601360000154115b8015613c685750602154601360000154613c65919061532e565b43115b15613c90576000601360010160016101000a81548160ff021916908315150217905550613da3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16148015613d3757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015613d8d5750600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613da257613d9d8760016145f5565b600190505b5b5b8415613f2d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415613e0d57601b549250601c549150613e7c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415613e7057601d549250601e549150613e7b565b6019549250601a5491505b5b8015613e8d576101c292506101c291505b6103e88284613e9c919061532e565b87613ea791906153b5565b613eb19190615384565b935060008284613ec1919061532e565b1115613f2c5760008284613ed5919061532e565b8486613ee191906153b5565b613eeb9190615384565b905080601f6000828254613eff919061532e565b925050819055508085613f12919061540f565b60206000828254613f23919061532e565b92505081905550505b5b60008487613f3b919061540f565b905086600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f8c919061540f565b9250508190555084600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613fe2919061532e565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161404691906151a4565b60405180910390a380600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461409d919061532e565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161410191906151a4565b60405180910390a3505050505050505050565b6000600267ffffffffffffffff81111561413157614130615613565b5b60405190808252806020026020018201604052801561415f5781602001602082028036833780820191505090505b5090503081600081518110614177576141766155e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561421757600080fd5b505afa15801561422b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061424f919061483d565b81600181518110614263576142626155e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561438d5761438c307f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612bbc565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016143ef9594939291906151f6565b600060405180830381600087803b15801561440957600080fd5b505af115801561441d573d6000803e3d6000fd5b505050505050565b81600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561451557614514307f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612bbc565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161459c96959493929190614f26565b6060604051808303818588803b1580156145b557600080fd5b505af11580156145c9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145ee9190614ade565b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061467a57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806146d057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156146da57600080fd5b600115158115151415614779576001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2a435d5b7631d89e0f8a99c9c5b5cf1a1e49e467b6a14ab37d5891cdeabde6a58282604051614770929190614ed4565b60405180910390a15b5050565b60008135905061478c81615974565b92915050565b6000815190506147a181615974565b92915050565b6000813590506147b68161598b565b92915050565b6000813590506147cb816159a2565b92915050565b6000815190506147e0816159a2565b92915050565b6000813590506147f5816159b9565b92915050565b60008151905061480a816159b9565b92915050565b60006020828403121561482657614825615642565b5b60006148348482850161477d565b91505092915050565b60006020828403121561485357614852615642565b5b600061486184828501614792565b91505092915050565b6000602082840312156148805761487f615642565b5b600061488e848285016147a7565b91505092915050565b600080604083850312156148ae576148ad615642565b5b60006148bc8582860161477d565b92505060206148cd8582860161477d565b9150509250929050565b6000806000606084860312156148f0576148ef615642565b5b60006148fe8682870161477d565b935050602061490f8682870161477d565b9250506040614920868287016147e6565b9150509250925092565b6000806040838503121561494157614940615642565b5b600061494f8582860161477d565b9250506020614960858286016147bc565b9150509250929050565b6000806040838503121561498157614980615642565b5b600061498f8582860161477d565b92505060206149a0858286016147e6565b9150509250929050565b6000602082840312156149c0576149bf615642565b5b60006149ce848285016147bc565b91505092915050565b6000602082840312156149ed576149ec615642565b5b60006149fb848285016147d1565b91505092915050565b60008060408385031215614a1b57614a1a615642565b5b6000614a29858286016147bc565b9250506020614a3a858286016147bc565b9150509250929050565b600060208284031215614a5a57614a59615642565b5b6000614a68848285016147e6565b91505092915050565b600060208284031215614a8757614a86615642565b5b6000614a95848285016147fb565b91505092915050565b60008060408385031215614ab557614ab4615642565b5b6000614ac3858286016147e6565b9250506020614ad4858286016147e6565b9150509250929050565b600080600060608486031215614af757614af6615642565b5b6000614b05868287016147fb565b9350506020614b16868287016147fb565b9250506040614b27868287016147fb565b9150509250925092565b600080600080600080600060e0888a031215614b5057614b4f615642565b5b6000614b5e8a828b016147e6565b9750506020614b6f8a828b016147e6565b9650506040614b808a828b016147e6565b9550506060614b918a828b016147e6565b9450506080614ba28a828b016147e6565b93505060a0614bb38a828b016147e6565b92505060c0614bc48a828b016147bc565b91505092959891949750929550565b6000614bdf8383614bfa565b60208301905092915050565b614bf481615455565b82525050565b614c0381615443565b82525050565b614c1281615443565b82525050565b6000614c23826152e9565b614c2d818561530c565b9350614c38836152d9565b8060005b83811015614c69578151614c508882614bd3565b9750614c5b836152ff565b925050600181019050614c3c565b5085935050505092915050565b614c7f81615467565b82525050565b614c8e816154aa565b82525050565b614c9d816154bc565b82525050565b6000614cae826152f4565b614cb8818561531d565b9350614cc88185602086016154f2565b614cd181615647565b840191505092915050565b6000614ce960238361531d565b9150614cf482615658565b604082019050919050565b6000614d0c60268361531d565b9150614d17826156a7565b604082019050919050565b6000614d2f60228361531d565b9150614d3a826156f6565b604082019050919050565b6000614d52602e8361531d565b9150614d5d82615745565b604082019050919050565b6000614d7560208361531d565b9150614d8082615794565b602082019050919050565b6000614d9860158361531d565b9150614da3826157bd565b602082019050919050565b6000614dbb60298361531d565b9150614dc6826157e6565b604082019050919050565b6000614dde60048361531d565b9150614de982615835565b602082019050919050565b6000614e0160338361531d565b9150614e0c8261585e565b604082019050919050565b6000614e2460258361531d565b9150614e2f826158ad565b604082019050919050565b6000614e4760248361531d565b9150614e52826158fc565b604082019050919050565b6000614e6a601e8361531d565b9150614e758261594b565b602082019050919050565b614e8981615493565b82525050565b614e988161549d565b82525050565b6000602082019050614eb36000830184614c09565b92915050565b6000602082019050614ece6000830184614beb565b92915050565b6000604082019050614ee96000830185614c09565b614ef66020830184614c76565b9392505050565b6000604082019050614f126000830185614c09565b614f1f6020830184614e80565b9392505050565b600060c082019050614f3b6000830189614c09565b614f486020830188614e80565b614f556040830187614c94565b614f626060830186614c94565b614f6f6080830185614c09565b614f7c60a0830184614e80565b979650505050505050565b6000602082019050614f9c6000830184614c76565b92915050565b6000608082019050614fb76000830187614c76565b614fc46020830186614c76565b614fd16040830185614e80565b614fde6060830184614e80565b95945050505050565b6000602082019050614ffc6000830184614c85565b92915050565b6000602082019050818103600083015261501c8184614ca3565b905092915050565b6000602082019050818103600083015261503d81614cdc565b9050919050565b6000602082019050818103600083015261505d81614cff565b9050919050565b6000602082019050818103600083015261507d81614d22565b9050919050565b6000602082019050818103600083015261509d81614d45565b9050919050565b600060208201905081810360008301526150bd81614d68565b9050919050565b600060208201905081810360008301526150dd81614d8b565b9050919050565b600060208201905081810360008301526150fd81614dae565b9050919050565b6000602082019050818103600083015261511d81614dd1565b9050919050565b6000602082019050818103600083015261513d81614df4565b9050919050565b6000602082019050818103600083015261515d81614e17565b9050919050565b6000602082019050818103600083015261517d81614e3a565b9050919050565b6000602082019050818103600083015261519d81614e5d565b9050919050565b60006020820190506151b96000830184614e80565b92915050565b60006060820190506151d46000830186614e80565b6151e16020830185614c76565b6151ee6040830184614c76565b949350505050565b600060a08201905061520b6000830188614e80565b6152186020830187614c94565b818103604083015261522a8186614c18565b90506152396060830185614c09565b6152466080830184614e80565b9695505050505050565b60006040820190506152656000830185614e80565b6152726020830184614e80565b9392505050565b600060808201905061528e6000830187614e80565b61529b6020830186614e80565b6152a86040830185614e80565b6152b56060830184614c76565b95945050505050565b60006020820190506152d36000830184614e8f565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061533982615493565b915061534483615493565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561537957615378615557565b5b828201905092915050565b600061538f82615493565b915061539a83615493565b9250826153aa576153a9615586565b5b828204905092915050565b60006153c082615493565b91506153cb83615493565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561540457615403615557565b5b828202905092915050565b600061541a82615493565b915061542583615493565b92508282101561543857615437615557565b5b828203905092915050565b600061544e82615473565b9050919050565b600061546082615473565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006154b5826154ce565b9050919050565b60006154c782615493565b9050919050565b60006154d9826154e0565b9050919050565b60006154eb82615473565b9050919050565b60005b838110156155105780820151818401526020810190506154f5565b8381111561551f576000848401525b50505050565b6000600282049050600182168061553d57607f821691505b60208210811415615551576155506155b5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782057616c6c6574206d7573742062652061626f766520302e3125206f6660008201527f20746f74616c20737570706c792e000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e736665723a206e6f7420616c6c6f7765640000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4865686500000000000000000000000000000000000000000000000000000000600082015250565b7f4d6178205472616e73616374696f6e206d7573742062652061626f766520302e60008201527f3125206f6620746f74616c20737570706c792e00000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e736665723a206e6f20626f64792063616e2073656c6c206e6f770000600082015250565b61597d81615443565b811461598857600080fd5b50565b61599481615455565b811461599f57600080fd5b50565b6159ab81615467565b81146159b657600080fd5b50565b6159c281615493565b81146159cd57600080fd5b5056fea2646970667358221220c7f180994fb081bd46ffea785616346cc7cba840224dbcfc551a13db1fee7e3064736f6c63430008070033000000000000000000000000c8088b682bcd7cfa6fc442eeb7e4cb18b8206438

Deployed Bytecode

0x6080604052600436106103545760003560e01c8063715018a6116101c6578063b5ec1941116100f7578063d8913ae311610095578063ea2f0b371161006f578063ea2f0b3714610c8b578063f23175ff14610cb4578063f2fde38b14610cdd578063fb0ecfa414610d065761035b565b8063d8913ae314610bf5578063dc44b6a014610c23578063dd62ed3e14610c4e5761035b565b8063c5d24189116100d1578063c5d2418914610b49578063c61276b514610b74578063c860795214610b9f578063d621e81314610bca5761035b565b8063b5ec194114610aba578063c40fedc614610ae3578063c49b9a8014610b205761035b565b806395f93d4811610164578063a16df9d81161013e578063a16df9d8146109ee578063a457c2d714610a17578063a9059cbb14610a54578063b18e984014610a915761035b565b806395f93d481461096c578063962dfc751461099a5780639be953b3146109c55761035b565b806388790a68116101a057806388790a68146108c25780638da5cb5b146108ed578063934930a11461091857806395d89b41146109415761035b565b8063715018a61461084557806375e3661e1461085c578063768dc710146108855761035b565b8063382b2381116102a0578063514ec8031161023e5780635db44757116102185780635db44757146107875780636ac9a870146107b45780636bc87c3a146107dd57806370a08231146108085761035b565b8063514ec8031461070a5780635b8138f6146107355780635d098b381461075e5761035b565b8063437823ec1161027a578063437823ec1461066257806349bd5a5e1461068b5780634a74bb02146106b65780634fc3f41a146106e15761035b565b8063382b2381146105d157806339509351146105fc5780633bec2bf3146106395761035b565b80631cdd3be31161030d57806323b872dd116102e757806323b872dd14610515578063243a7e3114610552578063296f0a0c1461057d578063313ce567146105a65761035b565b80631cdd3be3146104845780631da1db5e146104c157806322976e0d146104ea5761035b565b806303d29d281461036057806306fdde0314610389578063095ea7b3146103b45780631694505e146103f157806318160ddd1461041c5780631c66cb6d146104475761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b506103876004803603810190610382919061492a565b610d2f565b005b34801561039557600080fd5b5061039e610f7e565b6040516103ab9190615002565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d6919061496a565b611010565b6040516103e89190614f87565b60405180910390f35b3480156103fd57600080fd5b5061040661102e565b6040516104139190614fe7565b60405180910390f35b34801561042857600080fd5b50610431611052565b60405161043e91906151a4565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190614810565b61105c565b60405161047b9190614f87565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190614810565b61107c565b6040516104b89190614f87565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e39190614a44565b61109c565b005b3480156104f657600080fd5b506104ff6111c8565b60405161050c91906151a4565b60405180910390f35b34801561052157600080fd5b5061053c600480360381019061053791906148d7565b6111ce565b6040516105499190614f87565b60405180910390f35b34801561055e57600080fd5b50610567611286565b6040516105749190614e9e565b60405180910390f35b34801561058957600080fd5b506105a4600480360381019061059f9190614810565b6112ac565b005b3480156105b257600080fd5b506105bb611385565b6040516105c891906152be565b60405180910390f35b3480156105dd57600080fd5b506105e661139c565b6040516105f391906151a4565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e919061496a565b6113a2565b6040516106309190614f87565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b91906149aa565b61144e565b005b34801561066e57600080fd5b5061068960048036038101906106849190614810565b611587565b005b34801561069757600080fd5b506106a0611677565b6040516106ad9190614e9e565b60405180910390f35b3480156106c257600080fd5b506106cb61169b565b6040516106d89190614f87565b60405180910390f35b3480156106ed57600080fd5b5061070860048036038101906107039190614a44565b6116ae565b005b34801561071657600080fd5b5061071f611762565b60405161072c91906151a4565b60405180910390f35b34801561074157600080fd5b5061075c6004803603810190610757919061492a565b611768565b005b34801561076a57600080fd5b506107856004803603810190610780919061486a565b611858565b005b34801561079357600080fd5b5061079c611931565b6040516107ab939291906151bf565b60405180910390f35b3480156107c057600080fd5b506107db60048036038101906107d69190614a9e565b611963565b005b3480156107e957600080fd5b506107f2611a23565b6040516107ff91906151a4565b60405180910390f35b34801561081457600080fd5b5061082f600480360381019061082a9190614810565b611a29565b60405161083c91906151a4565b60405180910390f35b34801561085157600080fd5b5061085a611a72565b005b34801561086857600080fd5b50610883600480360381019061087e9190614810565b611bc5565b005b34801561089157600080fd5b506108ac60048036038101906108a79190614810565b611cb5565b6040516108b99190614f87565b60405180910390f35b3480156108ce57600080fd5b506108d7611cd5565b6040516108e491906151a4565b60405180910390f35b3480156108f957600080fd5b50610902611cdb565b60405161090f9190614e9e565b60405180910390f35b34801561092457600080fd5b5061093f600480360381019061093a9190614a9e565b611d04565b005b34801561094d57600080fd5b50610956611dc4565b6040516109639190615002565b60405180910390f35b34801561097857600080fd5b50610981611e56565b6040516109919493929190614fa2565b60405180910390f35b3480156109a657600080fd5b506109af611e8e565b6040516109bc9190614eb9565b60405180910390f35b3480156109d157600080fd5b506109ec60048036038101906109e79190614810565b611eb4565b005b3480156109fa57600080fd5b50610a156004803603810190610a109190614b31565b611f65565b005b348015610a2357600080fd5b50610a3e6004803603810190610a39919061496a565b612197565b604051610a4b9190614f87565b60405180910390f35b348015610a6057600080fd5b50610a7b6004803603810190610a76919061496a565b612243565b604051610a889190614f87565b60405180910390f35b348015610a9d57600080fd5b50610ab86004803603810190610ab39190614a44565b612261565b005b348015610ac657600080fd5b50610ae16004803603810190610adc91906149aa565b612300565b005b348015610aef57600080fd5b50610b0a6004803603810190610b059190614897565b6123b5565b604051610b179190614f87565b60405180910390f35b348015610b2c57600080fd5b50610b476004803603810190610b4291906149aa565b6125a9565b005b348015610b5557600080fd5b50610b5e612692565b604051610b6b91906151a4565b60405180910390f35b348015610b8057600080fd5b50610b89612698565b604051610b9691906151a4565b60405180910390f35b348015610bab57600080fd5b50610bb461269e565b604051610bc191906151a4565b60405180910390f35b348015610bd657600080fd5b50610bdf6126a4565b604051610bec9190614f87565b60405180910390f35b348015610c0157600080fd5b50610c0a6126b7565b604051610c1a9493929190615279565b60405180910390f35b348015610c2f57600080fd5b50610c386126e2565b604051610c4591906151a4565b60405180910390f35b348015610c5a57600080fd5b50610c756004803603810190610c709190614897565b6126e8565b604051610c8291906151a4565b60405180910390f35b348015610c9757600080fd5b50610cb26004803603810190610cad9190614810565b61276f565b005b348015610cc057600080fd5b50610cdb6004803603810190610cd69190614a04565b61285f565b005b348015610ce957600080fd5b50610d046004803603810190610cff9190614810565b612932565b005b348015610d1257600080fd5b50610d2d6004803603810190610d289190614a9e565b612af4565b005b610d37612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb906150a4565b60405180910390fd5b7f0000000000000000000000000b1a9fb30b0482e7df6ecea5be6eb2f69768ced873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610e4957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80610e9f57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610ea957600080fd5b600115158115151415610f13576001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f7a565b600015158115151415610f79576000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5050565b606060038054610f8d90615525565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb990615525565b80156110065780601f10610fdb57610100808354040283529160200191611006565b820191906000526020600020905b815481529060010190602001808311610fe957829003601f168201915b5050505050905090565b600061102461101d612bb4565b8484612bbc565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600754905090565b60236020528060005260406000206000915054906101000a900460ff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b6110a4612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611131576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611128906150a4565b60405180910390fd5b606481111561113f57600080fd5b6000479050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461118e91906153b5565b6111989190615384565b9081150290604051600060405180830381858888f193505050501580156111c3573d6000803e3d6000fd5b505050565b601a5481565b60006111db848484612d87565b61127b846111e7612bb4565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611231612bb4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611276919061540f565b612bbc565b600190509392505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112b4612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611341576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611338906150a4565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b60215481565b60006114446113af612bb4565b8484600d60006113bd612bb4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143f919061532e565b612bbc565b6001905092915050565b611456612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da906150a4565b60405180910390fd5b601360010160009054906101000a900460ff1661156a57436013600001819055506001601360010160006101000a81548160ff0219169083151502179055506001602260016101000a81548160ff0219169083151502179055507f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266960405160405180910390a15b80602260026101000a81548160ff02191690831515021790555050565b61158f612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461161c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611613906150a4565b60405180910390fd5b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b7f0000000000000000000000000b1a9fb30b0482e7df6ecea5be6eb2f69768ced881565b602260019054906101000a900460ff1681565b6116b6612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173a906150a4565b60405180910390fd5b60106002015481111561175557600080fd5b8060106001018190555050565b601f5481565b611770612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f4906150a4565b60405180910390fd5b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611860612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e4906150a4565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60138060000154908060010160009054906101000a900460ff16908060010160019054906101000a900460ff16905083565b61196b612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ef906150a4565b60405180910390fd5b60fa8183611a06919061532e565b1115611a1157600080fd5b81601d8190555080601e819055505050565b60195481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611a7a612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe906150a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611bcd612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c51906150a4565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b601d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611d0c612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d90906150a4565b60405180910390fd5b60fa8183611da7919061532e565b1115611db257600080fd5b8160198190555080601a819055505050565b606060048054611dd390615525565b80601f0160208091040260200160405190810160405280929190818152602001828054611dff90615525565b8015611e4c5780601f10611e2157610100808354040283529160200191611e4c565b820191906000526020600020905b815481529060010190602001808311611e2f57829003601f168201915b5050505050905090565b60108060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060010154908060020154905084565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ebc612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f40906150a4565b60405180910390fd5b6000611f5430611a29565b9050611f61308383612d87565b5050565b611f6d612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff1906150a4565b60405180910390fd5b6103e860075461200a9190615384565b868860075461201991906153b5565b6120239190615384565b1015612064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205b90615124565b60405180910390fd5b6103e86007546120749190615384565b848660075461208391906153b5565b61208d9190615384565b10156120ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c590615084565b60405180910390fd5b600086886007546120df91906153b5565b6120e99190615384565b9050600085876007546120fc91906153b5565b6121069190615384565b90506000848660075461211991906153b5565b6121239190615384565b90506040518060800160405280848152602001838152602001828152602001851515815250601560008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555090505050505050505050505050565b60006122396121a4612bb4565b8484600d60006121b2612bb4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612234919061540f565b612bbc565b6001905092915050565b6000612257612250612bb4565b8484612d87565b6001905092915050565b612269612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ed906150a4565b60405180910390fd5b8060218190555050565b612308612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c906150a4565b60405180910390fd5b80601560030160006101000a81548160ff02191690831515021790555050565b60006123bf612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461244c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612443906150a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561248657600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016124c19190614e9e565b60206040518083038186803b1580156124d957600080fd5b505afa1580156124ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125119190614a71565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b815260040161254e929190614efd565b602060405180830381600087803b15801561256857600080fd5b505af115801561257c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a091906149d7565b91505092915050565b6125b1612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461263e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612635906150a4565b60405180910390fd5b80602260016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126879190614f87565b60405180910390a150565b601c5481565b60205481565b601e5481565b602260029054906101000a900460ff1681565b60158060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b601b5481565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612777612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fb906150a4565b60405180910390fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612867612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128eb906150a4565b60405180910390fd5b81601060000160006101000a81548160ff02191690831515021790555080601060000160016101000a81548160ff0219169083151502179055505050565b61293a612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129be906150a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2e90615044565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612afc612bb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b80906150a4565b60405180910390fd5b60fa8183612b97919061532e565b1115612ba257600080fd5b80601c8190555081601b819055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2390615164565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9390615064565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d7a91906151a4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dee90615144565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5e90615024565b60405180910390fd5b60008111612eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea1906150e4565b60405180910390fd5b60001515600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3490615104565b60405180910390fd5b60001515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc790615104565b60405180910390fd5b602260029054906101000a900460ff1661318757602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130855750602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130bb906150c4565b60405180910390fd5b60006130ef7f0000000000000000000000000b1a9fb30b0482e7df6ecea5be6eb2f69768ced8611a29565b148061314757507f0000000000000000000000000b1a9fb30b0482e7df6ecea5be6eb2f69768ced873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b613186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317d90615184565b60405180910390fd5b5b601560030160009054906101000a900460ff161561351a576131a7611cdb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561321557506131e5611cdb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80613287575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156132865750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b5b15613519577f0000000000000000000000000b1a9fb30b0482e7df6ecea5be6eb2f69768ced873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061333157507f0000000000000000000000000b1a9fb30b0482e7df6ecea5be6eb2f69768ced873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156133f357600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133da5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133f2576015600001548111156133f157600080fd5b5b5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561349b57507f0000000000000000000000000b1a9fb30b0482e7df6ecea5be6eb2f69768ced873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561351857600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613517576015600101548161350184611a29565b61350b919061532e565b111561351657600080fd5b5b5b5b5b7f0000000000000000000000000b1a9fb30b0482e7df6ecea5be6eb2f69768ced873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156135c157507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156136175750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136d957601060000160009054906101000a900460ff16156136d45742600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061367f57600080fd5b60106001015442613690919061532e565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61383f565b7f0000000000000000000000000b1a9fb30b0482e7df6ecea5be6eb2f69768ced873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561377f5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561383e57601060000160019054906101000a900460ff161561383d5742600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156137e857600080fd5b601060010154426137f9919061532e565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b602260009054906101000a900460ff161580156138a857507f0000000000000000000000000b1a9fb30b0482e7df6ecea5be6eb2f69768ced873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156138c05750602260019054906101000a900460ff165b156139335760006138d030611a29565b9050601f5481101580156138eb5750601560020154601f5410155b15613903576138fe6015600201546139f6565b613931565b602054811015801561391c575060156002015460205410155b156139305761392f601560020154613af4565b5b5b505b600060019050600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139da5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139e457600090505b6139f084848484613c09565b50505050565b6001602260006101000a81548160ff02191690831515021790555060004790506000600283613a259190615384565b905060008184613a35919061540f565b90506000821115613a4a57613a4982614114565b5b600047905060008482613a5d919061540f565b9050600083118015613a6f5750600081115b15613ab857613a7e8382614425565b7f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f83814868382604051613aaf929190615250565b60405180910390a15b85601f6000828254613aca919061540f565b9250508190555050505050506000602260006101000a81548160ff02191690831515021790555050565b6001602260006101000a81548160ff0219169083151502179055506000811115613b2257613b2181614114565b5b60004790506000811115613bd157600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613b98573d6000803e3d6000fd5b507f4d5c7c4ddada689ed3a12644234d0a26ec361d8a6f55c9b05805a57bd636f14b81604051613bc891906151a4565b60405180910390a15b8160206000828254613be3919061540f565b92505081905550506000602260006101000a81548160ff02191690831515021790555050565b600080806000601360010160019054906101000a900460ff1615613da457601360010160009054906101000a900460ff168015613c4b57506000601360000154115b8015613c685750602154601360000154613c65919061532e565b43115b15613c90576000601360010160016101000a81548160ff021916908315150217905550613da3565b7f0000000000000000000000000b1a9fb30b0482e7df6ecea5be6eb2f69768ced873ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16148015613d3757507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015613d8d5750600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613da257613d9d8760016145f5565b600190505b5b5b8415613f2d577f0000000000000000000000000b1a9fb30b0482e7df6ecea5be6eb2f69768ced873ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415613e0d57601b549250601c549150613e7c565b7f0000000000000000000000000b1a9fb30b0482e7df6ecea5be6eb2f69768ced873ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415613e7057601d549250601e549150613e7b565b6019549250601a5491505b5b8015613e8d576101c292506101c291505b6103e88284613e9c919061532e565b87613ea791906153b5565b613eb19190615384565b935060008284613ec1919061532e565b1115613f2c5760008284613ed5919061532e565b8486613ee191906153b5565b613eeb9190615384565b905080601f6000828254613eff919061532e565b925050819055508085613f12919061540f565b60206000828254613f23919061532e565b92505081905550505b5b60008487613f3b919061540f565b905086600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f8c919061540f565b9250508190555084600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613fe2919061532e565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161404691906151a4565b60405180910390a380600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461409d919061532e565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161410191906151a4565b60405180910390a3505050505050505050565b6000600267ffffffffffffffff81111561413157614130615613565b5b60405190808252806020026020018201604052801561415f5781602001602082028036833780820191505090505b5090503081600081518110614177576141766155e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561421757600080fd5b505afa15801561422b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061424f919061483d565b81600181518110614263576142626155e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561438d5761438c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612bbc565b5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016143ef9594939291906151f6565b600060405180830381600087803b15801561440957600080fd5b505af115801561441d573d6000803e3d6000fd5b505050505050565b81600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060007f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561451557614514307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612bbc565b5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161459c96959493929190614f26565b6060604051808303818588803b1580156145b557600080fd5b505af11580156145c9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145ee9190614ade565b5050505050565b7f0000000000000000000000000b1a9fb30b0482e7df6ecea5be6eb2f69768ced873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061467a57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806146d057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156146da57600080fd5b600115158115151415614779576001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2a435d5b7631d89e0f8a99c9c5b5cf1a1e49e467b6a14ab37d5891cdeabde6a58282604051614770929190614ed4565b60405180910390a15b5050565b60008135905061478c81615974565b92915050565b6000815190506147a181615974565b92915050565b6000813590506147b68161598b565b92915050565b6000813590506147cb816159a2565b92915050565b6000815190506147e0816159a2565b92915050565b6000813590506147f5816159b9565b92915050565b60008151905061480a816159b9565b92915050565b60006020828403121561482657614825615642565b5b60006148348482850161477d565b91505092915050565b60006020828403121561485357614852615642565b5b600061486184828501614792565b91505092915050565b6000602082840312156148805761487f615642565b5b600061488e848285016147a7565b91505092915050565b600080604083850312156148ae576148ad615642565b5b60006148bc8582860161477d565b92505060206148cd8582860161477d565b9150509250929050565b6000806000606084860312156148f0576148ef615642565b5b60006148fe8682870161477d565b935050602061490f8682870161477d565b9250506040614920868287016147e6565b9150509250925092565b6000806040838503121561494157614940615642565b5b600061494f8582860161477d565b9250506020614960858286016147bc565b9150509250929050565b6000806040838503121561498157614980615642565b5b600061498f8582860161477d565b92505060206149a0858286016147e6565b9150509250929050565b6000602082840312156149c0576149bf615642565b5b60006149ce848285016147bc565b91505092915050565b6000602082840312156149ed576149ec615642565b5b60006149fb848285016147d1565b91505092915050565b60008060408385031215614a1b57614a1a615642565b5b6000614a29858286016147bc565b9250506020614a3a858286016147bc565b9150509250929050565b600060208284031215614a5a57614a59615642565b5b6000614a68848285016147e6565b91505092915050565b600060208284031215614a8757614a86615642565b5b6000614a95848285016147fb565b91505092915050565b60008060408385031215614ab557614ab4615642565b5b6000614ac3858286016147e6565b9250506020614ad4858286016147e6565b9150509250929050565b600080600060608486031215614af757614af6615642565b5b6000614b05868287016147fb565b9350506020614b16868287016147fb565b9250506040614b27868287016147fb565b9150509250925092565b600080600080600080600060e0888a031215614b5057614b4f615642565b5b6000614b5e8a828b016147e6565b9750506020614b6f8a828b016147e6565b9650506040614b808a828b016147e6565b9550506060614b918a828b016147e6565b9450506080614ba28a828b016147e6565b93505060a0614bb38a828b016147e6565b92505060c0614bc48a828b016147bc565b91505092959891949750929550565b6000614bdf8383614bfa565b60208301905092915050565b614bf481615455565b82525050565b614c0381615443565b82525050565b614c1281615443565b82525050565b6000614c23826152e9565b614c2d818561530c565b9350614c38836152d9565b8060005b83811015614c69578151614c508882614bd3565b9750614c5b836152ff565b925050600181019050614c3c565b5085935050505092915050565b614c7f81615467565b82525050565b614c8e816154aa565b82525050565b614c9d816154bc565b82525050565b6000614cae826152f4565b614cb8818561531d565b9350614cc88185602086016154f2565b614cd181615647565b840191505092915050565b6000614ce960238361531d565b9150614cf482615658565b604082019050919050565b6000614d0c60268361531d565b9150614d17826156a7565b604082019050919050565b6000614d2f60228361531d565b9150614d3a826156f6565b604082019050919050565b6000614d52602e8361531d565b9150614d5d82615745565b604082019050919050565b6000614d7560208361531d565b9150614d8082615794565b602082019050919050565b6000614d9860158361531d565b9150614da3826157bd565b602082019050919050565b6000614dbb60298361531d565b9150614dc6826157e6565b604082019050919050565b6000614dde60048361531d565b9150614de982615835565b602082019050919050565b6000614e0160338361531d565b9150614e0c8261585e565b604082019050919050565b6000614e2460258361531d565b9150614e2f826158ad565b604082019050919050565b6000614e4760248361531d565b9150614e52826158fc565b604082019050919050565b6000614e6a601e8361531d565b9150614e758261594b565b602082019050919050565b614e8981615493565b82525050565b614e988161549d565b82525050565b6000602082019050614eb36000830184614c09565b92915050565b6000602082019050614ece6000830184614beb565b92915050565b6000604082019050614ee96000830185614c09565b614ef66020830184614c76565b9392505050565b6000604082019050614f126000830185614c09565b614f1f6020830184614e80565b9392505050565b600060c082019050614f3b6000830189614c09565b614f486020830188614e80565b614f556040830187614c94565b614f626060830186614c94565b614f6f6080830185614c09565b614f7c60a0830184614e80565b979650505050505050565b6000602082019050614f9c6000830184614c76565b92915050565b6000608082019050614fb76000830187614c76565b614fc46020830186614c76565b614fd16040830185614e80565b614fde6060830184614e80565b95945050505050565b6000602082019050614ffc6000830184614c85565b92915050565b6000602082019050818103600083015261501c8184614ca3565b905092915050565b6000602082019050818103600083015261503d81614cdc565b9050919050565b6000602082019050818103600083015261505d81614cff565b9050919050565b6000602082019050818103600083015261507d81614d22565b9050919050565b6000602082019050818103600083015261509d81614d45565b9050919050565b600060208201905081810360008301526150bd81614d68565b9050919050565b600060208201905081810360008301526150dd81614d8b565b9050919050565b600060208201905081810360008301526150fd81614dae565b9050919050565b6000602082019050818103600083015261511d81614dd1565b9050919050565b6000602082019050818103600083015261513d81614df4565b9050919050565b6000602082019050818103600083015261515d81614e17565b9050919050565b6000602082019050818103600083015261517d81614e3a565b9050919050565b6000602082019050818103600083015261519d81614e5d565b9050919050565b60006020820190506151b96000830184614e80565b92915050565b60006060820190506151d46000830186614e80565b6151e16020830185614c76565b6151ee6040830184614c76565b949350505050565b600060a08201905061520b6000830188614e80565b6152186020830187614c94565b818103604083015261522a8186614c18565b90506152396060830185614c09565b6152466080830184614e80565b9695505050505050565b60006040820190506152656000830185614e80565b6152726020830184614e80565b9392505050565b600060808201905061528e6000830187614e80565b61529b6020830186614e80565b6152a86040830185614e80565b6152b56060830184614c76565b95945050505050565b60006020820190506152d36000830184614e8f565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061533982615493565b915061534483615493565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561537957615378615557565b5b828201905092915050565b600061538f82615493565b915061539a83615493565b9250826153aa576153a9615586565b5b828204905092915050565b60006153c082615493565b91506153cb83615493565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561540457615403615557565b5b828202905092915050565b600061541a82615493565b915061542583615493565b92508282101561543857615437615557565b5b828203905092915050565b600061544e82615473565b9050919050565b600061546082615473565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006154b5826154ce565b9050919050565b60006154c782615493565b9050919050565b60006154d9826154e0565b9050919050565b60006154eb82615473565b9050919050565b60005b838110156155105780820151818401526020810190506154f5565b8381111561551f576000848401525b50505050565b6000600282049050600182168061553d57607f821691505b60208210811415615551576155506155b5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782057616c6c6574206d7573742062652061626f766520302e3125206f6660008201527f20746f74616c20737570706c792e000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e736665723a206e6f7420616c6c6f7765640000000000000000000000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4865686500000000000000000000000000000000000000000000000000000000600082015250565b7f4d6178205472616e73616374696f6e206d7573742062652061626f766520302e60008201527f3125206f6620746f74616c20737570706c792e00000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e736665723a206e6f20626f64792063616e2073656c6c206e6f770000600082015250565b61597d81615443565b811461598857600080fd5b50565b61599481615455565b811461599f57600080fd5b50565b6159ab81615467565b81146159b657600080fd5b50565b6159c281615493565b81146159cd57600080fd5b5056fea2646970667358221220c7f180994fb081bd46ffea785616346cc7cba840224dbcfc551a13db1fee7e3064736f6c63430008070033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000c8088b682bcd7cfa6fc442eeb7e4cb18b8206438

-----Decoded View---------------
Arg [0] : marketingWallet (address): 0xC8088B682BcD7CfA6Fc442eEB7E4cB18B8206438

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c8088b682bcd7cfa6fc442eeb7e4cb18b8206438


Deployed Bytecode Sourcemap

14651:18846:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22451:389;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18645:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19301:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16622:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18922:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16826:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15362:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25440:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16305:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27470:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15032:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20499:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18831:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16583:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21892:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21340:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23422:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16680:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16753:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20174:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16496:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21758:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20343:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15914:153;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;19470:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16270:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19176:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4740:148;;;;;;;;;;;;;:::i;:::-;;22848:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15305:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16416:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4526:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19941:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18736:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15576:217;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;14986:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25734:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20624:708;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22166:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30887:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21653:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23324:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25909:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23659:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16378:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16535:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16455:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16795:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16232:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16340:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19025:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23541:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33314:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4896:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19707:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22451:389;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22558:13:::1;22547:24;;:7;:24;;;:52;;;;22594:4;22575:24;;:7;:24;;;22547:52;:91;;;;22622:15;22603:35;;:7;:35;;;22547:91;22544:107;;;22641:8;::::0;::::1;22544:107;22680:4;22665:19;;:11;:19;;;22661:172;;;22727:4;22701:14;:23;22716:7;22701:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;22661:172;;;22768:5;22753:20;;:11;:20;;;22749:84;;;22816:5;22790:14;:23;22805:7;22790:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;22749:84;22661:172;22451:389:::0;;:::o;18645:83::-;18682:13;18715:5;18708:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18645:83;:::o;19301:161::-;19376:4;19393:39;19402:12;:10;:12::i;:::-;19416:7;19425:6;19393:8;:39::i;:::-;19450:4;19443:11;;19301:161;;;;:::o;16622:51::-;;;:::o;18922:95::-;18975:7;19002;;18995:14;;18922:95;:::o;16826:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;15362:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;25440:286::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25551:3:::1;25531:16;:23;;25523:32;;;::::0;::::1;;25566:17;25586:21;25566:41;;25626:16;;;;;;;;;;;25618:34;;:100;25703:3;25681:16;25668:9;:30;;;;:::i;:::-;25667:40;;;;:::i;:::-;25618:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25512:214;25440:286:::0;:::o;16305:28::-;;;;:::o;27470:348::-;27566:4;27583:36;27593:6;27601:9;27612:6;27583:9;:36::i;:::-;27630:158;27653:6;27674:12;:10;:12::i;:::-;27756:6;27701:11;:19;27713:6;27701:19;;;;;;;;;;;;;;;:33;27721:12;:10;:12::i;:::-;27701:33;;;;;;;;;;;;;;;;:76;;;;:::i;:::-;27630:8;:158::i;:::-;27806:4;27799:11;;27470:348;;;;;:::o;15032:31::-;;;;;;;;;;;;;:::o;20499:117::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20597:11:::1;20578:16;;:30;;;;;;;;;;;;;;;;;;20499:117:::0;:::o;18831:83::-;18872:5;18897:9;;;;;;;;;;;18890:16;;18831:83;:::o;16583:30::-;;;;:::o;21892:266::-;21980:4;21996:132;22019:12;:10;:12::i;:::-;22046:7;22106:10;22068:11;:25;22080:12;:10;:12::i;:::-;22068:25;;;;;;;;;;;;;;;:34;22094:7;22068:34;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;21996:8;:132::i;:::-;22146:4;22139:11;;21892:266;;;;:::o;21340:305::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21412:9:::1;:18;;;;;;;;;;;;21407:198;;21470:12;21447:9;:20;;:35;;;;21518:4;21497:9;:18;;;:25;;;;;;;;;;;;;;;;;;21561:4;21537:21;;:28;;;;;;;;;;;;;;;;;;21585:8;;;;;;;;;;21407:198;21632:5;21617:12;;:20;;;;;;;;;;;;;;;;;;21340:305:::0;:::o;23422:111::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23521:4:::1;23491:18;:27;23510:7;23491:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;23422:111:::0;:::o;16680:38::-;;;:::o;16753:33::-;;;;;;;;;;;;;:::o;20174:161::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20259:12:::1;:26;;;20249:6;:36;;20241:45;;;::::0;::::1;;20321:6;20297:12;:21;;:30;;;;20174:161:::0;:::o;16496:32::-;;;;:::o;21758:126::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21870:6:::1;21846:16;:21;21863:3;21846:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;21758:126:::0;;:::o;20343:148::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20464:18:::1;20437:16;;:46;;;;;;;;;;;;;;;;;;20343:148:::0;:::o;15914:153::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19470:229::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19601:3:::1;19585:12;19570;:27;;;;:::i;:::-;:34;;19562:43;;;::::0;::::1;;19636:12;19616:17;:32;;;;19679:12;19659:17;:32;;;;19470:229:::0;;:::o;16270:28::-;;;;:::o;19176:117::-;19242:7;19269;:16;19277:7;19269:16;;;;;;;;;;;;;;;;19262:23;;19176:117;;;:::o;4740:148::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4847:1:::1;4810:40;;4831:6;::::0;::::1;;;;;;;;4810:40;;;;;;;;;;;;4878:1;4861:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4740:148::o:0;22848:107::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22942:5:::1;22916:14;:23;22931:7;22916:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;22848:107:::0;:::o;15305:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;16416:32::-;;;;:::o;4526:79::-;4564:7;4591:6;;;;;;;;;;;4584:13;;4526:79;:::o;19941:225::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20076:3:::1;20060:12;20045;:27;;;;:::i;:::-;:34;;20037:43;;;::::0;::::1;;20107:12;20091:13;:28;;;;20146:12;20130:13;:28;;;;19941:225:::0;;:::o;18736:87::-;18775:13;18808:7;18801:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18736:87;:::o;15576:217::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14986:39::-;;;;;;;;;;;;;:::o;25734:167::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25801:16:::1;25820:24;25838:4;25820:9;:24::i;:::-;25801:43;;25855:38;25873:4;25880:2;25884:8;25855:9;:38::i;:::-;25790:111;25734:167:::0;:::o;20624:708::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20809:4:::1;20799:7;;:14;;;;:::i;:::-;20791:3;20784;20774:7;;:13;;;;:::i;:::-;20773:21;;;;:::i;:::-;:41;;20765:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;20925:4;20915:7;;:14;;;;:::i;:::-;20907:3;20900;20890:7;;:13;;;;:::i;:::-;20889:21;;;;:::i;:::-;:41;;20881:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;20992:13;21027:3;21019;21009:7;;:13;;;;:::i;:::-;21008:23;;;;:::i;:::-;20992:39;;21042:13;21076:3;21069;21059:7;;:13;;;;:::i;:::-;21058:21;;;;:::i;:::-;21042:37;;21090:18;21129:2;21122;21112:7;;:12;;;;:::i;:::-;21111:21;;;;:::i;:::-;21090:42;;21156:168;;;;;;;;21239:5;21156:168;;;;21276:5;21156:168;;;;21201:10;21156:168;;;;21305:7;21156:168;;;;::::0;21143:10:::1;:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20754:578;;;20624:708:::0;;;;;;;:::o;22166:277::-;22259:4;22276:137;22299:12;:10;:12::i;:::-;22326:7;22386:15;22348:11;:25;22360:12;:10;:12::i;:::-;22348:25;;;;;;;;;;;;;;;:34;22374:7;22348:34;;;;;;;;;;;;;;;;:54;;;;:::i;:::-;22276:8;:137::i;:::-;22431:4;22424:11;;22166:277;;;;:::o;30887:167::-;30965:4;30982:42;30992:12;:10;:12::i;:::-;31006:9;31017:6;30982:9;:42::i;:::-;31042:4;31035:11;;30887:167;;;;:::o;21653:97::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21736:6:::1;21722:11;:20;;;;21653:97:::0;:::o;23324:90::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23401:5:::1;23380:10;:18;;;:26;;;;;;;;;;;;;;;;;;23324:90:::0;:::o;25909:285::-;25992:10;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26041:1:::1;26023:20;;:6;:20;;;;26015:29;;;::::0;::::1;;26055:24;26089:6;26082:24;;;26115:4;26082:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26055:66;;26147:6;26140:23;;;26164:3;26169:16;26140:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26132:54;;26004:190;25909:285:::0;;;;:::o;23659:171::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23760:8:::1;23736:21;;:32;;;;;;;;;;;;;;;;;;23784:38;23813:8;23784:38;;;;;;:::i;:::-;;;;;;;;23659:171:::0;:::o;16378:31::-;;;;:::o;16535:39::-;;;;:::o;16455:32::-;;;;:::o;16795:24::-;;;;;;;;;;;;;:::o;16232:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16340:31::-;;;;:::o;19025:143::-;19106:7;19133:11;:18;19145:5;19133:18;;;;;;;;;;;;;;;:27;19152:7;19133:27;;;;;;;;;;;;;;;;19126:34;;19025:143;;;;:::o;23541:110::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23638:5:::1;23608:18;:27;23627:7;23608:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;23541:110:::0;:::o;33314:180::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33430:5:::1;33396:12;:31;;;:39;;;;;;;;;;;;;;;;;;33481:5;33446:12;:32;;;:40;;;;;;;;;;;;;;;;;;33314:180:::0;;:::o;4896:281::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5019:1:::1;4999:22;;:8;:22;;;;4977:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;5132:8;5103:38;;5124:6;::::0;::::1;;;;;;;;5103:38;;;;;;;;;;;;5161:8;5152:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4896:281:::0;:::o;19707:226::-;4663:12;:10;:12::i;:::-;4653:22;;:6;;;;;;;;;;:22;;;4645:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19837:3:::1;19821:12;19806;:27;;;;:::i;:::-;:34;;19798:43;;;::::0;::::1;;19871:12;19852:16;:31;;;;19913:12;19894:16;:31;;;;19707:226:::0;;:::o;1063:98::-;1116:7;1143:10;1136:17;;1063:98;:::o;23932:335::-;24040:1;24023:19;;:5;:19;;;;24015:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24121:1;24102:21;;:7;:21;;;;24094:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24205:6;24175:11;:18;24187:5;24175:18;;;;;;;;;;;;;;;:27;24194:7;24175:27;;;;;;;;;;;;;;;:36;;;;24243:7;24227:32;;24236:5;24227:32;;;24252:6;24227:32;;;;;;:::i;:::-;;;;;;;;23932:335;;;:::o;27830:3049::-;27934:1;27918:18;;:4;:18;;;;27910:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28011:1;27997:16;;:2;:16;;;;27989:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28081:1;28072:6;:10;28064:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28171:5;28147:29;;:14;:20;28162:4;28147:20;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;28139:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;28226:5;28204:27;;:14;:18;28219:2;28204:18;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;28196:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;28258:12;;;;;;;;;;;28253:236;;28295:16;:22;28312:4;28295:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;28321:16;:20;28338:2;28321:20;;;;;;;;;;;;;;;;;;;;;;;;;28295:46;28287:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;28418:1;28390:24;28400:13;28390:9;:24::i;:::-;:29;:52;;;;28429:13;28423:19;;:2;:19;;;;28390:52;28382:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;28253:236;28505:10;:18;;;;;;;;;;;;28501:697;;;28551:7;:5;:7::i;:::-;28543:15;;:4;:15;;;;:32;;;;;28568:7;:5;:7::i;:::-;28562:13;;:2;:13;;;;28543:32;:77;;;;28593:6;28579:21;;:2;:21;;;;:41;;;;;28618:1;28604:16;;:2;:16;;;;28579:41;28543:77;28540:647;;;28667:13;28659:21;;:4;:21;;;:44;;;;28690:13;28684:19;;:2;:19;;;28659:44;28655:259;;;28750:18;:22;28769:2;28750:22;;;;;;;;;;;;;;;;;;;;;;;;;28749:23;:52;;;;;28777:18;:24;28796:4;28777:24;;;;;;;;;;;;;;;;;;;;;;;;;28776:25;28749:52;28746:149;;;28848:10;:22;;;28838:6;:32;;28830:41;;;;;;28746:149;28655:259;28949:15;28935:30;;:2;:30;;;;:53;;;;;28975:13;28969:19;;:2;:19;;;;28935:53;28932:240;;;29017:18;:22;29036:2;29017:22;;;;;;;;;;;;;;;;;;;;;;;;;29013:140;;29102:10;:26;;;29092:6;29076:13;29086:2;29076:9;:13::i;:::-;:22;;;;:::i;:::-;:52;;29068:61;;;;;;29013:140;28932:240;28540:647;28501:697;29222:13;29214:21;;:4;:21;;;:55;;;;;29253:15;29239:30;;:2;:30;;;;29214:55;:82;;;;;29274:18;:22;29293:2;29274:22;;;;;;;;;;;;;;;;;;;;;;;;;29273:23;29214:82;29210:647;;;29335:12;:31;;;;;;;;;;;;29331:204;;;29417:15;29399:11;:15;29411:2;29399:15;;;;;;;;;;;;;;;;:33;29391:42;;;;;;29493:12;:21;;;29474:15;:41;;;;:::i;:::-;29456:11;:15;29468:2;29456:15;;;;;;;;;;;;;;;:59;;;;29331:204;29210:647;;;29568:13;29560:21;;:4;:21;;;;:50;;;;;29586:18;:24;29605:4;29586:24;;;;;;;;;;;;;;;;;;;;;;;;;29585:25;29560:50;29556:301;;;29634:12;:32;;;;;;;;;;;;29630:212;;;29721:15;29699:12;:18;29712:4;29699:18;;;;;;;;;;;;;;;;:37;;29691:46;;;;;;29800:12;:21;;;29781:15;:41;;;;:::i;:::-;29760:12;:18;29773:4;29760:18;;;;;;;;;;;;;;;:62;;;;29630:212;29556:301;29210:647;29888:16;;;;;;;;;;;29887:17;:55;;;;;29929:13;29921:21;;:4;:21;;;;29887:55;:93;;;;;29959:21;;;;;;;;;;;29887:93;29869:591;;;30007:28;30038:24;30056:4;30038:9;:24::i;:::-;30007:55;;30105:17;;30081:20;:41;;:92;;;;;30147:10;:26;;;30126:17;;:47;;30081:92;30077:372;;;30194:42;30209:10;:26;;;30194:14;:42::i;:::-;30077:372;;;30286:24;;30262:20;:48;;:106;;;;;30342:10;:26;;;30314:24;;:54;;30262:106;30258:191;;;30389:44;30406:10;:26;;;30389:16;:44::i;:::-;30258:191;30077:372;29992:468;29869:591;30533:12;30548:4;30533:19;;30653:18;:24;30672:4;30653:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;30681:18;:22;30700:2;30681:22;;;;;;;;;;;;;;;;;;;;;;;;;30653:50;30649:98;;;30730:5;30720:15;;30649:98;30830:41;30845:4;30851:2;30855:6;30863:7;30830:14;:41::i;:::-;27899:2980;27830:3049;;;:::o;24275:715::-;16936:4;16917:16;;:23;;;;;;;;;;;;;;;;;;24352:22:::1;24377:21;24352:46;;24409:20;24447:1;24432:12;:16;;;;:::i;:::-;24409:39;;24459:23;24500:12;24485;:27;;;;:::i;:::-;24459:53;;24544:1;24529:12;:16;24525:79;;;24562:30;24579:12;24562:16;:30::i;:::-;24525:79;24616:18;24637:21;24616:42;;24669:24;24717:14;24704:10;:27;;;;:::i;:::-;24669:63;;24767:1;24749:15;:19;:43;;;;;24791:1;24772:16;:20;24749:43;24745:192;;;24809:47;24822:15;24839:16;24809:12;:47::i;:::-;24876:49;24891:15;24908:16;24876:49;;;;;;;:::i;:::-;;;;;;;;24745:192;24970:12;24949:17;;:33;;;;;;;:::i;:::-;;;;;;;;24341:649;;;;;16982:5:::0;16963:16;;:24;;;;;;;;;;;;;;;;;;24275:715;:::o;24998:434::-;16936:4;16917:16;;:23;;;;;;;;;;;;;;;;;;25096:1:::1;25081:12;:16;25077:79;;;25114:30;25131:12;25114:16;:30::i;:::-;25077:79;25168:24;25195:21;25168:48;;25250:1;25231:16;:20;25227:145;;;25268:16;;;;;;;;;;;:25;;:43;25294:16;25268:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25331:29;25343:16;25331:29;;;;;;:::i;:::-;;;;;;;;25227:145;25412:12;25384:24;;:40;;;;;;;:::i;:::-;;;;;;;;25066:366;16982:5:::0;16963:16;;:24;;;;;;;;;;;;;;;;;;24998:434;:::o;31135:2171::-;31240:17;31272:25;31308;31344:12;31381:9;:26;;;;;;;;;;;;31377:573;;;31428:9;:18;;;;;;;;;;;;:46;;;;;31473:1;31450:9;:20;;;:24;31428:46;:101;;;;;31517:11;;31494:9;:20;;;:34;;;;:::i;:::-;31478:12;:51;31428:101;31424:515;;;31579:5;31550:9;:26;;;:34;;;;;;;;;;;;;;;;;;31424:515;;;31661:13;31651:23;;:6;:23;;;:85;;;;;31720:15;31699:37;;:9;:37;;;;31651:85;:140;;;;;31762:18;:29;31781:9;31762:29;;;;;;;;;;;;;;;;;;;;;;;;;31761:30;31651:140;31625:299;;;31834:32;31850:9;31861:4;31834:15;:32::i;:::-;31900:4;31890:14;;31625:299;31424:515;31377:573;31966:7;31962:1048;;;32004:13;31994:23;;:6;:23;;;31990:447;;;32058:16;;32038:36;;32113:16;;32093:36;;31990:447;;;32168:13;32155:26;;:9;:26;;;32151:286;;;32222:17;;32202:37;;32278:17;;32258:37;;32151:286;;;32356:13;;32336:33;;32408:13;;32388:33;;32151:286;31990:447;32457:7;32453:116;;;32505:3;32485:23;;32547:3;32527:23;;32453:116;32651:4;32628:17;32608;:37;;;;:::i;:::-;32598:6;:48;;;;:::i;:::-;32597:59;;;;:::i;:::-;32585:71;;32719:1;32698:17;32678;:37;;;;:::i;:::-;32677:43;32673:326;;;32741:27;32825:17;32805;:37;;;;:::i;:::-;32784:17;32772:9;:29;;;;:::i;:::-;:71;;;;:::i;:::-;32741:103;;32884:19;32863:17;;:40;;;;;;;:::i;:::-;;;;;;;;32963:19;32951:9;:31;;;;:::i;:::-;32922:24;;:61;;;;;;;:::i;:::-;;;;;;;;32722:277;32673:326;31962:1048;33030:15;33057:9;33048:6;:18;;;;:::i;:::-;33030:36;;33096:6;33077:7;:15;33085:6;33077:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;33139:9;33113:7;:22;33129:4;33113:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;33189:4;33164:42;;33173:6;33164:42;;;33196:9;33164:42;;;;;;:::i;:::-;;;;;;;;33239:7;33217;:18;33225:9;33217:18;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;33279:9;33262:36;;33271:6;33262:36;;;33290:7;33262:36;;;;;;:::i;:::-;;;;;;;;31229:2077;;;;;31135:2171;;;;:::o;26202:692::-;26328:21;26366:1;26352:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26328:40;;26397:4;26379;26384:1;26379:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26423:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26413:4;26418:1;26413:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26516:11;26461;:26;26481:4;26461:26;;;;;;;;;;;;;;;:52;26496:15;26461:52;;;;;;;;;;;;;;;;:66;26458:166;;;26544:68;26561:4;26576:15;26594:17;26544:8;:68::i;:::-;26458:166;26662:15;:66;;;26743:11;26769:1;26813:4;26840;26860:15;26662:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26257:637;26202:692;:::o;26902:560::-;27043:11;26988;:26;27008:4;26988:26;;;;;;;;;;;;;;;:52;27023:15;26988:52;;;;;;;;;;;;;;;;:66;26985:166;;;27071:68;27088:4;27103:15;27121:17;27071:8;:68::i;:::-;26985:166;27193:15;:31;;;27232:9;27265:4;27285:11;27311:1;27354;27397:16;;;;;;;;;;;27428:15;27193:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26902:560;;:::o;22967:349::-;23059:13;23048:24;;:7;:24;;;:52;;;;23095:4;23076:24;;:7;:24;;;23048:52;:91;;;;23123:15;23104:35;;:7;:35;;;23048:91;23045:107;;;23142:8;;;23045:107;23191:4;23176:19;;:11;:19;;;23172:136;;;23238:4;23212:14;:23;23227:7;23212:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;23262:34;23275:7;23284:11;23262:34;;;;;;;:::i;:::-;;;;;;;;23172:136;22967:349;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:137::-;655:5;686:6;680:13;671:22;;702:30;726:5;702:30;:::i;:::-;601:137;;;;:::o;744:139::-;790:5;828:6;815:20;806:29;;844:33;871:5;844:33;:::i;:::-;744:139;;;;:::o;889:143::-;946:5;977:6;971:13;962:22;;993:33;1020:5;993:33;:::i;:::-;889:143;;;;:::o;1038:329::-;1097:6;1146:2;1134:9;1125:7;1121:23;1117:32;1114:119;;;1152:79;;:::i;:::-;1114:119;1272:1;1297:53;1342:7;1333:6;1322:9;1318:22;1297:53;:::i;:::-;1287:63;;1243:117;1038:329;;;;:::o;1373:351::-;1443:6;1492:2;1480:9;1471:7;1467:23;1463:32;1460:119;;;1498:79;;:::i;:::-;1460:119;1618:1;1643:64;1699:7;1690:6;1679:9;1675:22;1643:64;:::i;:::-;1633:74;;1589:128;1373:351;;;;:::o;1730:345::-;1797:6;1846:2;1834:9;1825:7;1821:23;1817:32;1814:119;;;1852:79;;:::i;:::-;1814:119;1972:1;1997:61;2050:7;2041:6;2030:9;2026:22;1997:61;:::i;:::-;1987:71;;1943:125;1730:345;;;;:::o;2081:474::-;2149:6;2157;2206:2;2194:9;2185:7;2181:23;2177:32;2174:119;;;2212:79;;:::i;:::-;2174:119;2332:1;2357:53;2402:7;2393:6;2382:9;2378:22;2357:53;:::i;:::-;2347:63;;2303:117;2459:2;2485:53;2530:7;2521:6;2510:9;2506:22;2485:53;:::i;:::-;2475:63;;2430:118;2081:474;;;;;:::o;2561:619::-;2638:6;2646;2654;2703:2;2691:9;2682:7;2678:23;2674:32;2671:119;;;2709:79;;:::i;:::-;2671:119;2829:1;2854:53;2899:7;2890:6;2879:9;2875:22;2854:53;:::i;:::-;2844:63;;2800:117;2956:2;2982:53;3027:7;3018:6;3007:9;3003:22;2982:53;:::i;:::-;2972:63;;2927:118;3084:2;3110:53;3155:7;3146:6;3135:9;3131:22;3110:53;:::i;:::-;3100:63;;3055:118;2561:619;;;;;:::o;3186:468::-;3251:6;3259;3308:2;3296:9;3287:7;3283:23;3279:32;3276:119;;;3314:79;;:::i;:::-;3276:119;3434:1;3459:53;3504:7;3495:6;3484:9;3480:22;3459:53;:::i;:::-;3449:63;;3405:117;3561:2;3587:50;3629:7;3620:6;3609:9;3605:22;3587:50;:::i;:::-;3577:60;;3532:115;3186:468;;;;;:::o;3660:474::-;3728:6;3736;3785:2;3773:9;3764:7;3760:23;3756:32;3753:119;;;3791:79;;:::i;:::-;3753:119;3911:1;3936:53;3981:7;3972:6;3961:9;3957:22;3936:53;:::i;:::-;3926:63;;3882:117;4038:2;4064:53;4109:7;4100:6;4089:9;4085:22;4064:53;:::i;:::-;4054:63;;4009:118;3660:474;;;;;:::o;4140:323::-;4196:6;4245:2;4233:9;4224:7;4220:23;4216:32;4213:119;;;4251:79;;:::i;:::-;4213:119;4371:1;4396:50;4438:7;4429:6;4418:9;4414:22;4396:50;:::i;:::-;4386:60;;4342:114;4140:323;;;;:::o;4469:345::-;4536:6;4585:2;4573:9;4564:7;4560:23;4556:32;4553:119;;;4591:79;;:::i;:::-;4553:119;4711:1;4736:61;4789:7;4780:6;4769:9;4765:22;4736:61;:::i;:::-;4726:71;;4682:125;4469:345;;;;:::o;4820:462::-;4882:6;4890;4939:2;4927:9;4918:7;4914:23;4910:32;4907:119;;;4945:79;;:::i;:::-;4907:119;5065:1;5090:50;5132:7;5123:6;5112:9;5108:22;5090:50;:::i;:::-;5080:60;;5036:114;5189:2;5215:50;5257:7;5248:6;5237:9;5233:22;5215:50;:::i;:::-;5205:60;;5160:115;4820:462;;;;;:::o;5288:329::-;5347:6;5396:2;5384:9;5375:7;5371:23;5367:32;5364:119;;;5402:79;;:::i;:::-;5364:119;5522:1;5547:53;5592:7;5583:6;5572:9;5568:22;5547:53;:::i;:::-;5537:63;;5493:117;5288:329;;;;:::o;5623:351::-;5693:6;5742:2;5730:9;5721:7;5717:23;5713:32;5710:119;;;5748:79;;:::i;:::-;5710:119;5868:1;5893:64;5949:7;5940:6;5929:9;5925:22;5893:64;:::i;:::-;5883:74;;5839:128;5623:351;;;;:::o;5980:474::-;6048:6;6056;6105:2;6093:9;6084:7;6080:23;6076:32;6073:119;;;6111:79;;:::i;:::-;6073:119;6231:1;6256:53;6301:7;6292:6;6281:9;6277:22;6256:53;:::i;:::-;6246:63;;6202:117;6358:2;6384:53;6429:7;6420:6;6409:9;6405:22;6384:53;:::i;:::-;6374:63;;6329:118;5980:474;;;;;:::o;6460:663::-;6548:6;6556;6564;6613:2;6601:9;6592:7;6588:23;6584:32;6581:119;;;6619:79;;:::i;:::-;6581:119;6739:1;6764:64;6820:7;6811:6;6800:9;6796:22;6764:64;:::i;:::-;6754:74;;6710:128;6877:2;6903:64;6959:7;6950:6;6939:9;6935:22;6903:64;:::i;:::-;6893:74;;6848:129;7016:2;7042:64;7098:7;7089:6;7078:9;7074:22;7042:64;:::i;:::-;7032:74;;6987:129;6460:663;;;;;:::o;7129:1197::-;7239:6;7247;7255;7263;7271;7279;7287;7336:3;7324:9;7315:7;7311:23;7307:33;7304:120;;;7343:79;;:::i;:::-;7304:120;7463:1;7488:53;7533:7;7524:6;7513:9;7509:22;7488:53;:::i;:::-;7478:63;;7434:117;7590:2;7616:53;7661:7;7652:6;7641:9;7637:22;7616:53;:::i;:::-;7606:63;;7561:118;7718:2;7744:53;7789:7;7780:6;7769:9;7765:22;7744:53;:::i;:::-;7734:63;;7689:118;7846:2;7872:53;7917:7;7908:6;7897:9;7893:22;7872:53;:::i;:::-;7862:63;;7817:118;7974:3;8001:53;8046:7;8037:6;8026:9;8022:22;8001:53;:::i;:::-;7991:63;;7945:119;8103:3;8130:53;8175:7;8166:6;8155:9;8151:22;8130:53;:::i;:::-;8120:63;;8074:119;8232:3;8259:50;8301:7;8292:6;8281:9;8277:22;8259:50;:::i;:::-;8249:60;;8203:116;7129:1197;;;;;;;;;;:::o;8332:179::-;8401:10;8422:46;8464:3;8456:6;8422:46;:::i;:::-;8500:4;8495:3;8491:14;8477:28;;8332:179;;;;:::o;8517:142::-;8620:32;8646:5;8620:32;:::i;:::-;8615:3;8608:45;8517:142;;:::o;8665:108::-;8742:24;8760:5;8742:24;:::i;:::-;8737:3;8730:37;8665:108;;:::o;8779:118::-;8866:24;8884:5;8866:24;:::i;:::-;8861:3;8854:37;8779:118;;:::o;8933:732::-;9052:3;9081:54;9129:5;9081:54;:::i;:::-;9151:86;9230:6;9225:3;9151:86;:::i;:::-;9144:93;;9261:56;9311:5;9261:56;:::i;:::-;9340:7;9371:1;9356:284;9381:6;9378:1;9375:13;9356:284;;;9457:6;9451:13;9484:63;9543:3;9528:13;9484:63;:::i;:::-;9477:70;;9570:60;9623:6;9570:60;:::i;:::-;9560:70;;9416:224;9403:1;9400;9396:9;9391:14;;9356:284;;;9360:14;9656:3;9649:10;;9057:608;;;8933:732;;;;:::o;9671:109::-;9752:21;9767:5;9752:21;:::i;:::-;9747:3;9740:34;9671:109;;:::o;9786:185::-;9900:64;9958:5;9900:64;:::i;:::-;9895:3;9888:77;9786:185;;:::o;9977:147::-;10072:45;10111:5;10072:45;:::i;:::-;10067:3;10060:58;9977:147;;:::o;10130:364::-;10218:3;10246:39;10279:5;10246:39;:::i;:::-;10301:71;10365:6;10360:3;10301:71;:::i;:::-;10294:78;;10381:52;10426:6;10421:3;10414:4;10407:5;10403:16;10381:52;:::i;:::-;10458:29;10480:6;10458:29;:::i;:::-;10453:3;10449:39;10442:46;;10222:272;10130:364;;;;:::o;10500:366::-;10642:3;10663:67;10727:2;10722:3;10663:67;:::i;:::-;10656:74;;10739:93;10828:3;10739:93;:::i;:::-;10857:2;10852:3;10848:12;10841:19;;10500:366;;;:::o;10872:::-;11014:3;11035:67;11099:2;11094:3;11035:67;:::i;:::-;11028:74;;11111:93;11200:3;11111:93;:::i;:::-;11229:2;11224:3;11220:12;11213:19;;10872:366;;;:::o;11244:::-;11386:3;11407:67;11471:2;11466:3;11407:67;:::i;:::-;11400:74;;11483:93;11572:3;11483:93;:::i;:::-;11601:2;11596:3;11592:12;11585:19;;11244:366;;;:::o;11616:::-;11758:3;11779:67;11843:2;11838:3;11779:67;:::i;:::-;11772:74;;11855:93;11944:3;11855:93;:::i;:::-;11973:2;11968:3;11964:12;11957:19;;11616:366;;;:::o;11988:::-;12130:3;12151:67;12215:2;12210:3;12151:67;:::i;:::-;12144:74;;12227:93;12316:3;12227:93;:::i;:::-;12345:2;12340:3;12336:12;12329:19;;11988:366;;;:::o;12360:::-;12502:3;12523:67;12587:2;12582:3;12523:67;:::i;:::-;12516:74;;12599:93;12688:3;12599:93;:::i;:::-;12717:2;12712:3;12708:12;12701:19;;12360:366;;;:::o;12732:::-;12874:3;12895:67;12959:2;12954:3;12895:67;:::i;:::-;12888:74;;12971:93;13060:3;12971:93;:::i;:::-;13089:2;13084:3;13080:12;13073:19;;12732:366;;;:::o;13104:365::-;13246:3;13267:66;13331:1;13326:3;13267:66;:::i;:::-;13260:73;;13342:93;13431:3;13342:93;:::i;:::-;13460:2;13455:3;13451:12;13444:19;;13104:365;;;:::o;13475:366::-;13617:3;13638:67;13702:2;13697:3;13638:67;:::i;:::-;13631:74;;13714:93;13803:3;13714:93;:::i;:::-;13832:2;13827:3;13823:12;13816:19;;13475:366;;;:::o;13847:::-;13989:3;14010:67;14074:2;14069:3;14010:67;:::i;:::-;14003:74;;14086:93;14175:3;14086:93;:::i;:::-;14204:2;14199:3;14195:12;14188:19;;13847:366;;;:::o;14219:::-;14361:3;14382:67;14446:2;14441:3;14382:67;:::i;:::-;14375:74;;14458:93;14547:3;14458:93;:::i;:::-;14576:2;14571:3;14567:12;14560:19;;14219:366;;;:::o;14591:::-;14733:3;14754:67;14818:2;14813:3;14754:67;:::i;:::-;14747:74;;14830:93;14919:3;14830:93;:::i;:::-;14948:2;14943:3;14939:12;14932:19;;14591:366;;;:::o;14963:118::-;15050:24;15068:5;15050:24;:::i;:::-;15045:3;15038:37;14963:118;;:::o;15087:112::-;15170:22;15186:5;15170:22;:::i;:::-;15165:3;15158:35;15087:112;;:::o;15205:222::-;15298:4;15336:2;15325:9;15321:18;15313:26;;15349:71;15417:1;15406:9;15402:17;15393:6;15349:71;:::i;:::-;15205:222;;;;:::o;15433:254::-;15542:4;15580:2;15569:9;15565:18;15557:26;;15593:87;15677:1;15666:9;15662:17;15653:6;15593:87;:::i;:::-;15433:254;;;;:::o;15693:320::-;15808:4;15846:2;15835:9;15831:18;15823:26;;15859:71;15927:1;15916:9;15912:17;15903:6;15859:71;:::i;:::-;15940:66;16002:2;15991:9;15987:18;15978:6;15940:66;:::i;:::-;15693:320;;;;;:::o;16019:332::-;16140:4;16178:2;16167:9;16163:18;16155:26;;16191:71;16259:1;16248:9;16244:17;16235:6;16191:71;:::i;:::-;16272:72;16340:2;16329:9;16325:18;16316:6;16272:72;:::i;:::-;16019:332;;;;;:::o;16357:807::-;16606:4;16644:3;16633:9;16629:19;16621:27;;16658:71;16726:1;16715:9;16711:17;16702:6;16658:71;:::i;:::-;16739:72;16807:2;16796:9;16792:18;16783:6;16739:72;:::i;:::-;16821:80;16897:2;16886:9;16882:18;16873:6;16821:80;:::i;:::-;16911;16987:2;16976:9;16972:18;16963:6;16911:80;:::i;:::-;17001:73;17069:3;17058:9;17054:19;17045:6;17001:73;:::i;:::-;17084;17152:3;17141:9;17137:19;17128:6;17084:73;:::i;:::-;16357:807;;;;;;;;;:::o;17170:210::-;17257:4;17295:2;17284:9;17280:18;17272:26;;17308:65;17370:1;17359:9;17355:17;17346:6;17308:65;:::i;:::-;17170:210;;;;:::o;17386:529::-;17551:4;17589:3;17578:9;17574:19;17566:27;;17603:65;17665:1;17654:9;17650:17;17641:6;17603:65;:::i;:::-;17678:66;17740:2;17729:9;17725:18;17716:6;17678:66;:::i;:::-;17754:72;17822:2;17811:9;17807:18;17798:6;17754:72;:::i;:::-;17836;17904:2;17893:9;17889:18;17880:6;17836:72;:::i;:::-;17386:529;;;;;;;:::o;17921:276::-;18041:4;18079:2;18068:9;18064:18;18056:26;;18092:98;18187:1;18176:9;18172:17;18163:6;18092:98;:::i;:::-;17921:276;;;;:::o;18203:313::-;18316:4;18354:2;18343:9;18339:18;18331:26;;18403:9;18397:4;18393:20;18389:1;18378:9;18374:17;18367:47;18431:78;18504:4;18495:6;18431:78;:::i;:::-;18423:86;;18203:313;;;;:::o;18522:419::-;18688:4;18726:2;18715:9;18711:18;18703:26;;18775:9;18769:4;18765:20;18761:1;18750:9;18746:17;18739:47;18803:131;18929:4;18803:131;:::i;:::-;18795:139;;18522:419;;;:::o;18947:::-;19113:4;19151:2;19140:9;19136:18;19128:26;;19200:9;19194:4;19190:20;19186:1;19175:9;19171:17;19164:47;19228:131;19354:4;19228:131;:::i;:::-;19220:139;;18947:419;;;:::o;19372:::-;19538:4;19576:2;19565:9;19561:18;19553:26;;19625:9;19619:4;19615:20;19611:1;19600:9;19596:17;19589:47;19653:131;19779:4;19653:131;:::i;:::-;19645:139;;19372:419;;;:::o;19797:::-;19963:4;20001:2;19990:9;19986:18;19978:26;;20050:9;20044:4;20040:20;20036:1;20025:9;20021:17;20014:47;20078:131;20204:4;20078:131;:::i;:::-;20070:139;;19797:419;;;:::o;20222:::-;20388:4;20426:2;20415:9;20411:18;20403:26;;20475:9;20469:4;20465:20;20461:1;20450:9;20446:17;20439:47;20503:131;20629:4;20503:131;:::i;:::-;20495:139;;20222:419;;;:::o;20647:::-;20813:4;20851:2;20840:9;20836:18;20828:26;;20900:9;20894:4;20890:20;20886:1;20875:9;20871:17;20864:47;20928:131;21054:4;20928:131;:::i;:::-;20920:139;;20647:419;;;:::o;21072:::-;21238:4;21276:2;21265:9;21261:18;21253:26;;21325:9;21319:4;21315:20;21311:1;21300:9;21296:17;21289:47;21353:131;21479:4;21353:131;:::i;:::-;21345:139;;21072:419;;;:::o;21497:::-;21663:4;21701:2;21690:9;21686:18;21678:26;;21750:9;21744:4;21740:20;21736:1;21725:9;21721:17;21714:47;21778:131;21904:4;21778:131;:::i;:::-;21770:139;;21497:419;;;:::o;21922:::-;22088:4;22126:2;22115:9;22111:18;22103:26;;22175:9;22169:4;22165:20;22161:1;22150:9;22146:17;22139:47;22203:131;22329:4;22203:131;:::i;:::-;22195:139;;21922:419;;;:::o;22347:::-;22513:4;22551:2;22540:9;22536:18;22528:26;;22600:9;22594:4;22590:20;22586:1;22575:9;22571:17;22564:47;22628:131;22754:4;22628:131;:::i;:::-;22620:139;;22347:419;;;:::o;22772:::-;22938:4;22976:2;22965:9;22961:18;22953:26;;23025:9;23019:4;23015:20;23011:1;23000:9;22996:17;22989:47;23053:131;23179:4;23053:131;:::i;:::-;23045:139;;22772:419;;;:::o;23197:::-;23363:4;23401:2;23390:9;23386:18;23378:26;;23450:9;23444:4;23440:20;23436:1;23425:9;23421:17;23414:47;23478:131;23604:4;23478:131;:::i;:::-;23470:139;;23197:419;;;:::o;23622:222::-;23715:4;23753:2;23742:9;23738:18;23730:26;;23766:71;23834:1;23823:9;23819:17;23810:6;23766:71;:::i;:::-;23622:222;;;;:::o;23850:418::-;23987:4;24025:2;24014:9;24010:18;24002:26;;24038:71;24106:1;24095:9;24091:17;24082:6;24038:71;:::i;:::-;24119:66;24181:2;24170:9;24166:18;24157:6;24119:66;:::i;:::-;24195;24257:2;24246:9;24242:18;24233:6;24195:66;:::i;:::-;23850:418;;;;;;:::o;24274:831::-;24537:4;24575:3;24564:9;24560:19;24552:27;;24589:71;24657:1;24646:9;24642:17;24633:6;24589:71;:::i;:::-;24670:80;24746:2;24735:9;24731:18;24722:6;24670:80;:::i;:::-;24797:9;24791:4;24787:20;24782:2;24771:9;24767:18;24760:48;24825:108;24928:4;24919:6;24825:108;:::i;:::-;24817:116;;24943:72;25011:2;25000:9;24996:18;24987:6;24943:72;:::i;:::-;25025:73;25093:3;25082:9;25078:19;25069:6;25025:73;:::i;:::-;24274:831;;;;;;;;:::o;25111:332::-;25232:4;25270:2;25259:9;25255:18;25247:26;;25283:71;25351:1;25340:9;25336:17;25327:6;25283:71;:::i;:::-;25364:72;25432:2;25421:9;25417:18;25408:6;25364:72;:::i;:::-;25111:332;;;;;:::o;25449:541::-;25620:4;25658:3;25647:9;25643:19;25635:27;;25672:71;25740:1;25729:9;25725:17;25716:6;25672:71;:::i;:::-;25753:72;25821:2;25810:9;25806:18;25797:6;25753:72;:::i;:::-;25835;25903:2;25892:9;25888:18;25879:6;25835:72;:::i;:::-;25917:66;25979:2;25968:9;25964:18;25955:6;25917:66;:::i;:::-;25449:541;;;;;;;:::o;25996:214::-;26085:4;26123:2;26112:9;26108:18;26100:26;;26136:67;26200:1;26189:9;26185:17;26176:6;26136:67;:::i;:::-;25996:214;;;;:::o;26297:132::-;26364:4;26387:3;26379:11;;26417:4;26412:3;26408:14;26400:22;;26297:132;;;:::o;26435:114::-;26502:6;26536:5;26530:12;26520:22;;26435:114;;;:::o;26555:99::-;26607:6;26641:5;26635:12;26625:22;;26555:99;;;:::o;26660:113::-;26730:4;26762;26757:3;26753:14;26745:22;;26660:113;;;:::o;26779:184::-;26878:11;26912:6;26907:3;26900:19;26952:4;26947:3;26943:14;26928:29;;26779:184;;;;:::o;26969:169::-;27053:11;27087:6;27082:3;27075:19;27127:4;27122:3;27118:14;27103:29;;26969:169;;;;:::o;27144:305::-;27184:3;27203:20;27221:1;27203:20;:::i;:::-;27198:25;;27237:20;27255:1;27237:20;:::i;:::-;27232:25;;27391:1;27323:66;27319:74;27316:1;27313:81;27310:107;;;27397:18;;:::i;:::-;27310:107;27441:1;27438;27434:9;27427:16;;27144:305;;;;:::o;27455:185::-;27495:1;27512:20;27530:1;27512:20;:::i;:::-;27507:25;;27546:20;27564:1;27546:20;:::i;:::-;27541:25;;27585:1;27575:35;;27590:18;;:::i;:::-;27575:35;27632:1;27629;27625:9;27620:14;;27455:185;;;;:::o;27646:348::-;27686:7;27709:20;27727:1;27709:20;:::i;:::-;27704:25;;27743:20;27761:1;27743:20;:::i;:::-;27738:25;;27931:1;27863:66;27859:74;27856:1;27853:81;27848:1;27841:9;27834:17;27830:105;27827:131;;;27938:18;;:::i;:::-;27827:131;27986:1;27983;27979:9;27968:20;;27646:348;;;;:::o;28000:191::-;28040:4;28060:20;28078:1;28060:20;:::i;:::-;28055:25;;28094:20;28112:1;28094:20;:::i;:::-;28089:25;;28133:1;28130;28127:8;28124:34;;;28138:18;;:::i;:::-;28124:34;28183:1;28180;28176:9;28168:17;;28000:191;;;;:::o;28197:96::-;28234:7;28263:24;28281:5;28263:24;:::i;:::-;28252:35;;28197:96;;;:::o;28299:104::-;28344:7;28373:24;28391:5;28373:24;:::i;:::-;28362:35;;28299:104;;;:::o;28409:90::-;28443:7;28486:5;28479:13;28472:21;28461:32;;28409:90;;;:::o;28505:126::-;28542:7;28582:42;28575:5;28571:54;28560:65;;28505:126;;;:::o;28637:77::-;28674:7;28703:5;28692:16;;28637:77;;;:::o;28720:86::-;28755:7;28795:4;28788:5;28784:16;28773:27;;28720:86;;;:::o;28812:153::-;28889:9;28922:37;28953:5;28922:37;:::i;:::-;28909:50;;28812:153;;;:::o;28971:121::-;29029:9;29062:24;29080:5;29062:24;:::i;:::-;29049:37;;28971:121;;;:::o;29098:126::-;29148:9;29181:37;29212:5;29181:37;:::i;:::-;29168:50;;29098:126;;;:::o;29230:113::-;29280:9;29313:24;29331:5;29313:24;:::i;:::-;29300:37;;29230:113;;;:::o;29349:307::-;29417:1;29427:113;29441:6;29438:1;29435:13;29427:113;;;29526:1;29521:3;29517:11;29511:18;29507:1;29502:3;29498:11;29491:39;29463:2;29460:1;29456:10;29451:15;;29427:113;;;29558:6;29555:1;29552:13;29549:101;;;29638:1;29629:6;29624:3;29620:16;29613:27;29549:101;29398:258;29349:307;;;:::o;29662:320::-;29706:6;29743:1;29737:4;29733:12;29723:22;;29790:1;29784:4;29780:12;29811:18;29801:81;;29867:4;29859:6;29855:17;29845:27;;29801:81;29929:2;29921:6;29918:14;29898:18;29895:38;29892:84;;;29948:18;;:::i;:::-;29892:84;29713:269;29662:320;;;:::o;29988:180::-;30036:77;30033:1;30026:88;30133:4;30130:1;30123:15;30157:4;30154:1;30147:15;30174:180;30222:77;30219:1;30212:88;30319:4;30316:1;30309:15;30343:4;30340:1;30333:15;30360:180;30408:77;30405:1;30398:88;30505:4;30502:1;30495:15;30529:4;30526:1;30519:15;30546:180;30594:77;30591:1;30584:88;30691:4;30688:1;30681:15;30715:4;30712:1;30705:15;30732:180;30780:77;30777:1;30770:88;30877:4;30874:1;30867:15;30901:4;30898:1;30891:15;31041:117;31150:1;31147;31140:12;31164:102;31205:6;31256:2;31252:7;31247:2;31240:5;31236:14;31232:28;31222:38;;31164:102;;;:::o;31272:222::-;31412:34;31408:1;31400:6;31396:14;31389:58;31481:5;31476:2;31468:6;31464:15;31457:30;31272:222;:::o;31500:225::-;31640:34;31636:1;31628:6;31624:14;31617:58;31709:8;31704:2;31696:6;31692:15;31685:33;31500:225;:::o;31731:221::-;31871:34;31867:1;31859:6;31855:14;31848:58;31940:4;31935:2;31927:6;31923:15;31916:29;31731:221;:::o;31958:233::-;32098:34;32094:1;32086:6;32082:14;32075:58;32167:16;32162:2;32154:6;32150:15;32143:41;31958:233;:::o;32197:182::-;32337:34;32333:1;32325:6;32321:14;32314:58;32197:182;:::o;32385:171::-;32525:23;32521:1;32513:6;32509:14;32502:47;32385:171;:::o;32562:228::-;32702:34;32698:1;32690:6;32686:14;32679:58;32771:11;32766:2;32758:6;32754:15;32747:36;32562:228;:::o;32796:154::-;32936:6;32932:1;32924:6;32920:14;32913:30;32796:154;:::o;32956:238::-;33096:34;33092:1;33084:6;33080:14;33073:58;33165:21;33160:2;33152:6;33148:15;33141:46;32956:238;:::o;33200:224::-;33340:34;33336:1;33328:6;33324:14;33317:58;33409:7;33404:2;33396:6;33392:15;33385:32;33200:224;:::o;33430:223::-;33570:34;33566:1;33558:6;33554:14;33547:58;33639:6;33634:2;33626:6;33622:15;33615:31;33430:223;:::o;33659:180::-;33799:32;33795:1;33787:6;33783:14;33776:56;33659:180;:::o;33845:122::-;33918:24;33936:5;33918:24;:::i;:::-;33911:5;33908:35;33898:63;;33957:1;33954;33947:12;33898:63;33845:122;:::o;33973:138::-;34054:32;34080:5;34054:32;:::i;:::-;34047:5;34044:43;34034:71;;34101:1;34098;34091:12;34034:71;33973:138;:::o;34117:116::-;34187:21;34202:5;34187:21;:::i;:::-;34180:5;34177:32;34167:60;;34223:1;34220;34213:12;34167:60;34117:116;:::o;34239:122::-;34312:24;34330:5;34312:24;:::i;:::-;34305:5;34302:35;34292:63;;34351:1;34348;34341:12;34292:63;34239:122;:::o

Swarm Source

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