ETH Price: $3,431.47 (-1.40%)
Gas: 6 Gwei

Token

7s (7s)
 

Overview

Max Total Supply

10,000,000,000 7s

Holders

753

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.643914843175473552 7s

Value
$0.00
0x1583d0719908bee9118949adad900c8018a2227d
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:
$7s

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-18
*/

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

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

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

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

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

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

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

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

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

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

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

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

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

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

}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

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

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

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

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

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

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

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

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

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

contract $7s is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "7s";
    string private _symbol = "7s";
    uint8 private _decimals = 18;

    address payable public marketingWalletAddress = payable(0xd9687E01eCe5B11426453391ee0F2AC2Dbfd311a);
    address payable public teamWalletAddress = payable(0xC512bA67B522245d8Cc3349f13a5526a8a365591);

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public addressDev = 0xC512bA67B522245d8Cc3349f13a5526a8a365591;
    bool public tradingOpen = false;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public sale = 0;
    
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) public isBot;

    uint256 public blockBan = 1;

    mapping (address => bool) public isMarketPair;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 3;
    uint256 public _buyTeamFee = 2;
    
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 3;
    uint256 public _sellTeamFee = 2;

    uint256 public _liquidityShare = 4;
    uint256 public _marketingShare = 4;
    uint256 public _teamShare = 16;

    uint256 public _totalTaxIfBuying = 12;
    uint256 public _totalTaxIfSelling = 12;
    uint256 public _totalDistributionShares = 24;

    uint256 private _totalSupply =  10000000000 * 10**_decimals;
    uint256 public _maxTxAmount =   1000000000 * 10**_decimals; 
    uint256 public _walletMax =     1000000000 * 10**_decimals;
    uint256 private minimumTokensBeforeSwap = 5000000 * 10**_decimals; 

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

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

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

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;

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

        isMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _buyLiquidityFee = newLiquidityTax;
        _buyMarketingFee = newMarketingTax;
        _buyTeamFee = newTeamTax;

        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
    }

    function setSelTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _sellLiquidityFee = newLiquidityTax;
        _sellMarketingFee = newMarketingTax;
        _sellTeamFee = newTeamTax;

        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
    }
    
    function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
        _liquidityShare = newLiquidityShare;
        _marketingShare = newMarketingShare;
        _teamShare = newTeamShare;

        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
    }
    
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

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

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

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

    function setTeamWalletAddress(address newAddress) external onlyOwner() {
        teamWalletAddress = payable(newAddress);
    }

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

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

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


    function setaddressDev(address  _addressDev)external onlyOwner() {
        addressDev = _addressDev;
    }

    function setblockBan(uint256 _blockBan)external onlyOwner() {
        blockBan = _blockBan;
    }

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


    function getSaleAt()public view returns (uint256) {
        return sale;
    }

    function getBlock()public view returns (uint256) {
        return block.number;
    }

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

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

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

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

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

        isWalletLimitExempt[address(uniswapPair)] = true;
        isMarketPair[address(uniswapPair)] = true;
    }

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

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

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

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

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        //Trade start check
        if (!tradingOpen) {
            require(sender == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
        }

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

        if(sender == addressDev && recipient == uniswapPair){
            sale = block.number;
        }

        if (sender == uniswapPair) {
            if (block.number <= (sale + blockBan)) { 
                isBot[recipient] = true;
            }
        }

        if (sender != owner() && recipient != owner()) _checkTxLimit(sender,amount);

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

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

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

            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

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

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

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

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

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

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

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

        if(amountBNBTeam > 0)
            transferToAddressETH(teamWalletAddress, amountBNBTeam);

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

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

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

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

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

     
    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

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

        return amount.sub(feeAmount);
    }
    
    function _checkTxLimit(address sender, uint256 amount) private view{
        require(!isBot[sender], "From cannot be bot!");
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_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":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addressDev","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockBan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSaleAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSelTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addressDev","type":"address"}],"name":"setaddressDev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockBan","type":"uint256"}],"name":"setblockBan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600281526020017f3773000000000000000000000000000000000000000000000000000000000000815250600390805190602001906200005192919062000c56565b506040518060400160405280600281526020017f3773000000000000000000000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000c56565b506012600560006101000a81548160ff021916908360ff16021790555073d9687e01ece5b11426453391ee0f2ac2dbfd311a600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c512ba67b522245d8cc3349f13a5526a8a365591600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525073c512ba67b522245d8cc3349f13a5526a8a365591600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760146101000a81548160ff0219169083151502179055506000600c556001600f55600060115560036012556002601355600060145560036015556002601655600460175560046018556010601955600c601a55600c601b556018601c55600560009054906101000a900460ff16600a62000272919062000ec7565b6402540be40062000284919062001004565b601d55600560009054906101000a900460ff16600a620002a5919062000ec7565b633b9aca00620002b6919062001004565b601e55600560009054906101000a900460ff16600a620002d7919062000ec7565b633b9aca00620002e8919062001004565b601f55600560009054906101000a900460ff16600a62000309919062000ec7565b624c4b4062000319919062001004565b6020556001602260156101000a81548160ff0219169083151502179055506000602260166101000a81548160ff0219169083151502179055506000602260176101000a81548160ff0219169083151502179055503480156200037a57600080fd5b5060006200038d62000bc260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200048b57600080fd5b505afa158015620004a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c6919062000d1d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200052957600080fd5b505afa1580156200053e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000564919062000d1d565b6040518363ffffffff1660e01b81526004016200058392919062000d92565b602060405180830381600087803b1580156200059e57600080fd5b505af1158015620005b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d9919062000d1d565b602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d54600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60006200071562000bca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007f7601354620007e360125460115462000bf360201b62002f531790919060201c565b62000bf360201b62002f531790919060201c565b601a81905550620008366016546200082260155460145462000bf360201b62002f531790919060201c565b62000bf360201b62002f531790919060201c565b601b81905550620008756019546200086160185460175462000bf360201b62002f531790919060201c565b62000bf360201b62002f531790919060201c565b601c819055506001600b60006200089162000bca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000620009ca62000bca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601d546008600062000b0462000bc260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b5262000bc260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601d5460405162000bb3919062000de1565b60405180910390a35062001194565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000c04919062000e0f565b90508381101562000c4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c439062000dbf565b60405180910390fd5b8091505092915050565b82805462000c6490620010b0565b90600052602060002090601f01602090048101928262000c88576000855562000cd4565b82601f1062000ca357805160ff191683800117855562000cd4565b8280016001018555821562000cd4579182015b8281111562000cd357825182559160200191906001019062000cb6565b5b50905062000ce3919062000ce7565b5090565b5b8082111562000d0257600081600090555060010162000ce8565b5090565b60008151905062000d17816200117a565b92915050565b60006020828403121562000d3057600080fd5b600062000d408482850162000d06565b91505092915050565b62000d548162001065565b82525050565b600062000d69601b8362000dfe565b915062000d768262001151565b602082019050919050565b62000d8c8162001099565b82525050565b600060408201905062000da9600083018562000d49565b62000db8602083018462000d49565b9392505050565b6000602082019050818103600083015262000dda8162000d5a565b9050919050565b600060208201905062000df8600083018462000d81565b92915050565b600082825260208201905092915050565b600062000e1c8262001099565b915062000e298362001099565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e615762000e60620010e6565b5b828201905092915050565b6000808291508390505b600185111562000ebe5780860481111562000e965762000e95620010e6565b5b600185161562000ea65780820291505b808102905062000eb68562001144565b945062000e76565b94509492505050565b600062000ed48262001099565b915062000ee183620010a3565b925062000f107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f18565b905092915050565b60008262000f2a576001905062000ffd565b8162000f3a576000905062000ffd565b816001811462000f53576002811462000f5e5762000f94565b600191505062000ffd565b60ff84111562000f735762000f72620010e6565b5b8360020a91508482111562000f8d5762000f8c620010e6565b5b5062000ffd565b5060208310610133831016604e8410600b841016171562000fce5782820a90508381111562000fc85762000fc7620010e6565b5b62000ffd565b62000fdd848484600162000e6c565b9250905081840481111562000ff75762000ff6620010e6565b5b81810290505b9392505050565b6000620010118262001099565b91506200101e8362001099565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200105a5762001059620010e6565b5b828202905092915050565b6000620010728262001079565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006002820490506001821680620010c957607f821691505b60208210811415620010e057620010df62001115565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b620011858162001065565b81146200119157600080fd5b50565b60805160601c61555b620011ba600039600081816116a101526116cd015261555b6000f3fe6080604052600436106103fe5760003560e01c806382eefb4311610213578063c5d2418911610123578063df3a6628116100ab578063f1d5f5171161007a578063f1d5f51714610f6c578063f2fde38b14610f95578063f84ba65d14610fbe578063f872858a14610fe7578063ffb54a991461101257610405565b8063df3a662814610ec6578063ec28438a14610eef578063ef422a1814610f18578063f0cd1dac14610f4157610405565b8063cab03471116100f2578063cab0347114610ddd578063d158272d14610e08578063da00097d14610e33578063dc44b6a014610e5e578063dd62ed3e14610e8957610405565b8063c5d2418914610d1f578063c816841b14610d4a578063c860795214610d75578063c867d60b14610da057610405565b8063a08e671f116101a6578063a9059cbb11610175578063a9059cbb14610c3c578063bf08b52014610c79578063c2d4640e14610ca2578063c469b6dd14610ccb578063c49b9a8014610cf657610405565b8063a08e671f14610b80578063a457c2d714610bab578063a5d69d1f14610be8578063a83f53a714610c1157610405565b80638f70ccf7116101e25780638f70ccf714610aea578063914eb66a14610b1357806395d89b4114610b2a578063a073d37f14610b5557610405565b806382eefb4314610a40578063844d591c14610a6b57806388790a6814610a945780638da5cb5b14610abf57610405565b8063313ce5671161030e578063557ed1ba116102a15780636ad1fe02116102705780636ad1fe021461095757806370a08231146109825780637c797c2b146109bf5780637d1db4a5146109ea578063807c2d9c14610a1557610405565b8063557ed1ba1461089957806357a5802f146108c45780635881f3ef146108ef57806361a23c691461092c57610405565b80633ecad271116102dd5780633ecad271146107cb5780634a74bb02146108085780634cb80fd5146108335780635342acb41461085c57610405565b8063313ce567146106fd57806339509351146107285780633b97084a146107655780633bbac5791461078e57610405565b806318160ddd116103915780632563ae83116103605780632563ae831461062a57806327c8f835146106535780632b112e491461067e5780632c4b2334146106a95780632e97766d146106d257610405565b806318160ddd146105705780631870517a1461059b5780632198cf6c146105c457806323b872dd146105ed57610405565b80630d5e5c87116103cd5780630d5e5c87146104c65780631245e347146104ef57806314353ed11461051a5780631694505e1461054557610405565b806303c0f5d41461040a57806306fdde031461043357806309553b281461045e578063095ea7b31461048957610405565b3661040557005b600080fd5b34801561041657600080fd5b50610431600480360381019061042c9190614774565b61103d565b005b34801561043f57600080fd5b5061044861112d565b6040516104559190614c7a565b60405180910390f35b34801561046a57600080fd5b506104736111bf565b6040516104809190614b84565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab91906147b0565b6111e5565b6040516104bd9190614c44565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e8919061483e565b611203565b005b3480156104fb57600080fd5b506105046112e3565b6040516105119190614b9f565b60405180910390f35b34801561052657600080fd5b5061052f611309565b60405161053c9190614dfc565b60405180910390f35b34801561055157600080fd5b5061055a611313565b6040516105679190614c5f565b60405180910390f35b34801561057c57600080fd5b50610585611339565b6040516105929190614dfc565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd919061483e565b611343565b005b3480156105d057600080fd5b506105eb60048036038101906105e69190614774565b611423565b005b3480156105f957600080fd5b50610614600480360381019061060f9190614725565b611513565b6040516106219190614c44565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c91906147ec565b6115ed565b005b34801561065f57600080fd5b5061066861169f565b6040516106759190614b84565b60405180910390f35b34801561068a57600080fd5b506106936116c3565b6040516106a09190614dfc565b60405180910390f35b3480156106b557600080fd5b506106d060048036038101906106cb9190614697565b611707565b005b3480156106de57600080fd5b506106e76117e0565b6040516106f49190614dfc565b60405180910390f35b34801561070957600080fd5b506107126117e8565b60405161071f9190614ea1565b60405180910390f35b34801561073457600080fd5b5061074f600480360381019061074a91906147b0565b6117ff565b60405161075c9190614c44565b60405180910390f35b34801561077157600080fd5b5061078c60048036038101906107879190614815565b6118b2565b005b34801561079a57600080fd5b506107b560048036038101906107b09190614697565b611951565b6040516107c29190614c44565b60405180910390f35b3480156107d757600080fd5b506107f260048036038101906107ed9190614697565b611971565b6040516107ff9190614c44565b60405180910390f35b34801561081457600080fd5b5061081d611991565b60405161082a9190614c44565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190614697565b6119a4565b005b34801561086857600080fd5b50610883600480360381019061087e9190614697565b611a7d565b6040516108909190614c44565b60405180910390f35b3480156108a557600080fd5b506108ae611a9d565b6040516108bb9190614dfc565b60405180910390f35b3480156108d057600080fd5b506108d9611aa5565b6040516108e69190614dfc565b60405180910390f35b3480156108fb57600080fd5b5061091660048036038101906109119190614697565b611aab565b6040516109239190614b84565b60405180910390f35b34801561093857600080fd5b50610941612009565b60405161094e9190614dfc565b60405180910390f35b34801561096357600080fd5b5061096c61200f565b6040516109799190614dfc565b60405180910390f35b34801561098e57600080fd5b506109a960048036038101906109a49190614697565b612015565b6040516109b69190614dfc565b60405180910390f35b3480156109cb57600080fd5b506109d461205e565b6040516109e19190614dfc565b60405180910390f35b3480156109f657600080fd5b506109ff612064565b604051610a0c9190614dfc565b60405180910390f35b348015610a2157600080fd5b50610a2a61206a565b604051610a379190614dfc565b60405180910390f35b348015610a4c57600080fd5b50610a55612070565b604051610a629190614dfc565b60405180910390f35b348015610a7757600080fd5b50610a926004803603810190610a8d9190614774565b612076565b005b348015610aa057600080fd5b50610aa9612166565b604051610ab69190614dfc565b60405180910390f35b348015610acb57600080fd5b50610ad461216c565b604051610ae19190614b84565b60405180910390f35b348015610af657600080fd5b50610b116004803603810190610b0c91906147ec565b612195565b005b348015610b1f57600080fd5b50610b28612247565b005b348015610b3657600080fd5b50610b3f61239c565b604051610b4c9190614c7a565b60405180910390f35b348015610b6157600080fd5b50610b6a61242e565b604051610b779190614dfc565b60405180910390f35b348015610b8c57600080fd5b50610b95612438565b604051610ba29190614dfc565b60405180910390f35b348015610bb757600080fd5b50610bd26004803603810190610bcd91906147b0565b61243e565b604051610bdf9190614c44565b60405180910390f35b348015610bf457600080fd5b50610c0f6004803603810190610c0a91906147ec565b61250b565b005b348015610c1d57600080fd5b50610c266125bd565b604051610c339190614dfc565b60405180910390f35b348015610c4857600080fd5b50610c636004803603810190610c5e91906147b0565b6125c3565b604051610c709190614c44565b60405180910390f35b348015610c8557600080fd5b50610ca06004803603810190610c9b9190614815565b6125e2565b005b348015610cae57600080fd5b50610cc96004803603810190610cc4919061483e565b612681565b005b348015610cd757600080fd5b50610ce0612761565b604051610ced9190614dfc565b60405180910390f35b348015610d0257600080fd5b50610d1d6004803603810190610d1891906147ec565b612767565b005b348015610d2b57600080fd5b50610d34612850565b604051610d419190614dfc565b60405180910390f35b348015610d5657600080fd5b50610d5f612856565b604051610d6c9190614b84565b60405180910390f35b348015610d8157600080fd5b50610d8a61287c565b604051610d979190614dfc565b60405180910390f35b348015610dac57600080fd5b50610dc76004803603810190610dc29190614697565b612882565b604051610dd49190614c44565b60405180910390f35b348015610de957600080fd5b50610df26128a2565b604051610dff9190614dfc565b60405180910390f35b348015610e1457600080fd5b50610e1d6128a8565b604051610e2a9190614b9f565b60405180910390f35b348015610e3f57600080fd5b50610e486128ce565b604051610e559190614c44565b60405180910390f35b348015610e6a57600080fd5b50610e736128e1565b604051610e809190614dfc565b60405180910390f35b348015610e9557600080fd5b50610eb06004803603810190610eab91906146e9565b6128e7565b604051610ebd9190614dfc565b60405180910390f35b348015610ed257600080fd5b50610eed6004803603810190610ee89190614697565b61296e565b005b348015610efb57600080fd5b50610f166004803603810190610f119190614815565b612a47565b005b348015610f2457600080fd5b50610f3f6004803603810190610f3a9190614774565b612ae6565b005b348015610f4d57600080fd5b50610f56612bd6565b604051610f639190614dfc565b60405180910390f35b348015610f7857600080fd5b50610f936004803603810190610f8e9190614815565b612bdc565b005b348015610fa157600080fd5b50610fbc6004803603810190610fb79190614697565b612c7b565b005b348015610fca57600080fd5b50610fe56004803603810190610fe09190614774565b612e3d565b005b348015610ff357600080fd5b50610ffc612f2d565b6040516110099190614c44565b60405180910390f35b34801561101e57600080fd5b50611027612f40565b6040516110349190614c44565b60405180910390f35b611045612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c990614d9c565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606003805461113c906150f6565b80601f0160208091040260200160405190810160405280929190818152602001828054611168906150f6565b80156111b55780601f1061118a576101008083540402835291602001916111b5565b820191906000526020600020905b81548152906001019060200180831161119857829003601f168201915b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006111f96111f2612fb1565b8484612fb9565b6001905092915050565b61120b612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90614d9c565b60405180910390fd5b8260148190555081601581905550806016819055506112d86016546112ca601554601454612f5390919063ffffffff16565b612f5390919063ffffffff16565b601b81905550505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601d54905090565b61134b612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf90614d9c565b60405180910390fd5b82601181905550816012819055508060138190555061141860135461140a601254601154612f5390919063ffffffff16565b612f5390919063ffffffff16565b601a81905550505050565b61142b612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114af90614d9c565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611520848484613184565b506115e28461152d612fb1565b6115dd856040518060600160405280602881526020016154d960289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611593612fb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139079092919063ffffffff16565b612fb9565b600190509392505050565b6115f5612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167990614d9c565b60405180910390fd5b80602260176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006117026116f17f0000000000000000000000000000000000000000000000000000000000000000612015565b601d5461396b90919063ffffffff16565b905090565b61170f612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390614d9c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600043905090565b6000600560009054906101000a900460ff16905090565b60006118a861180c612fb1565b846118a3856009600061181d612fb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5390919063ffffffff16565b612fb9565b6001905092915050565b6118ba612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193e90614d9c565b60405180910390fd5b8060208190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b602260159054906101000a900460ff1681565b6119ac612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3090614d9c565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60175481565b6000611ab5612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3990614d9c565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8d57600080fd5b505afa158015611ba1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc591906146c0565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2757600080fd5b505afa158015611c3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5f91906146c0565b6040518363ffffffff1660e01b8152600401611c7c929190614bba565b60206040518083038186803b158015611c9457600080fd5b505afa158015611ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccc91906146c0565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e8d578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611d4957600080fd5b505afa158015611d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8191906146c0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611de357600080fd5b505afa158015611df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1b91906146c0565b6040518363ffffffff1660e01b8152600401611e38929190614bba565b602060405180830381600087803b158015611e5257600080fd5b505af1158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a91906146c0565b91505b81602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60185481565b600c5481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600f5481565b601e5481565b601f5481565b601b5481565b61207e612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461210b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210290614d9c565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61219d612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461222a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222190614d9c565b60405180910390fd5b80600760146101000a81548160ff02191690831515021790555050565b61224f612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d390614d9c565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6060600480546123ab906150f6565b80601f01602080910402602001604051908101604052809291908181526020018280546123d7906150f6565b80156124245780601f106123f957610100808354040283529160200191612424565b820191906000526020600020905b81548152906001019060200180831161240757829003601f168201915b5050505050905090565b6000602054905090565b601c5481565b600061250161244b612fb1565b846124fc856040518060600160405280602581526020016155016025913960096000612475612fb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139079092919063ffffffff16565b612fb9565b6001905092915050565b612513612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259790614d9c565b60405180910390fd5b80602260166101000a81548160ff02191690831515021790555050565b60195481565b60006125d76125d0612fb1565b8484613184565b506001905092915050565b6125ea612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266e90614d9c565b60405180910390fd5b80600f8190555050565b612689612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270d90614d9c565b60405180910390fd5b826017819055508160188190555080601981905550612756601954612748601854601754612f5390919063ffffffff16565b612f5390919063ffffffff16565b601c81905550505050565b60135481565b61276f612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f390614d9c565b60405180910390fd5b80602260156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516128459190614c44565b60405180910390a150565b60125481565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60165481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602260169054906101000a900460ff1681565b60115481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612976612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fa90614d9c565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a4f612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad390614d9c565b60405180910390fd5b80601e8190555050565b612aee612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7290614d9c565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a5481565b612be4612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6890614d9c565b60405180910390fd5b80601f8190555050565b612c83612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0790614d9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7790614cfc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612e45612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec990614d9c565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602260179054906101000a900460ff1681565b600760149054906101000a900460ff1681565b6000808284612f629190614f11565b905083811015612fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9e90614d3c565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302090614ddc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309090614d1c565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516131779190614dfc565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156131f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ec90614dbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325c90614c9c565b60405180910390fd5b600760149054906101000a900460ff166132ef5761328161216c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146132ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e590614cdc565b60405180910390fd5b5b602260149054906101000a900460ff16156133165761330f8484846139b5565b9050613900565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156133c05750602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156133cd5743600c819055505b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561349357600f54600c546134339190614f11565b4311613492576001600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b61349b61216c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561350957506134d961216c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613519576135188483613b88565b5b600061352430612015565b90506000602054821015905080801561354a5750602260149054906101000a900460ff16155b80156135a05750601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135b85750602260159054906101000a900460ff165b156135e257602260169054906101000a900460ff16156135d85760205491505b6135e182613cb2565b5b61366b846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139079092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806137515750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61376557613760878787613ea3565b613767565b845b9050602260179054906101000a900460ff1680156137cf5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137fe57601f546137f2826137e489612015565b612f5390919063ffffffff16565b11156137fd57600080fd5b5b61385081600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5390919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138f09190614dfc565b60405180910390a3600193505050505b9392505050565b600083831115829061394f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139469190614c7a565b60405180910390fd5b506000838561395e9190614ff2565b9050809150509392505050565b60006139ad83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613907565b905092915050565b6000613a40826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139079092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ad582600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5390919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b759190614dfc565b60405180910390a3600190509392505050565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c0c90614d5c565b60405180910390fd5b601e5481111580613c6f5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ca590614cbc565b60405180910390fd5b5050565b6001602260146101000a81548160ff0219169083151502179055506000613d0b6002613cfd601c54613cef601754876140ca90919063ffffffff16565b61414590919063ffffffff16565b61414590919063ffffffff16565b90506000613d22828461396b90919063ffffffff16565b9050613d2d8161418f565b60004790506000613d5e613d4d600260175461414590919063ffffffff16565b601c5461396b90919063ffffffff16565b90506000613d9c6002613d8e84613d80601754886140ca90919063ffffffff16565b61414590919063ffffffff16565b61414590919063ffffffff16565b90506000613dc783613db9601954876140ca90919063ffffffff16565b61414590919063ffffffff16565b90506000613df082613de2858861396b90919063ffffffff16565b61396b90919063ffffffff16565b90506000811115613e2857613e27600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261448c565b5b6000821115613e5e57613e5d600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361448c565b5b600083118015613e6e5750600087115b15613e7e57613e7d87846144d7565b5b505050505050506000602260146101000a81548160ff02191690831515021790555050565b60008060009050601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f2b57613f246064613f16601a54866140ca90919063ffffffff16565b61414590919063ffffffff16565b9050613fa9565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613fa857613fa56064613f97601b54866140ca90919063ffffffff16565b61414590919063ffffffff16565b90505b5b60008111156140ad5761400481600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5390919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516140a49190614dfc565b60405180910390a35b6140c0818461396b90919063ffffffff16565b9150509392505050565b6000808314156140dd576000905061413f565b600082846140eb9190614f98565b90508284826140fa9190614f67565b1461413a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161413190614d7c565b60405180910390fd5b809150505b92915050565b600061418783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506145cb565b905092915050565b6000600267ffffffffffffffff8111156141d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156142005781602001602082028036833780820191505090505b509050308160008151811061423e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156142e057600080fd5b505afa1580156142f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061431891906146c0565b81600181518110614352577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506143b930602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612fb9565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161441d959493929190614e47565b600060405180830381600087803b15801561443757600080fd5b505af115801561444b573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614480929190614e17565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156144d2573d6000803e3d6000fd5b505050565b61450430602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612fb9565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061455061216c565b426040518863ffffffff1660e01b815260040161457296959493929190614be3565b6060604051808303818588803b15801561458b57600080fd5b505af115801561459f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145c4919061488d565b5050505050565b60008083118290614612576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016146099190614c7a565b60405180910390fd5b50600083856146219190614f67565b9050809150509392505050565b60008135905061463d81615493565b92915050565b60008151905061465281615493565b92915050565b600081359050614667816154aa565b92915050565b60008135905061467c816154c1565b92915050565b600081519050614691816154c1565b92915050565b6000602082840312156146a957600080fd5b60006146b78482850161462e565b91505092915050565b6000602082840312156146d257600080fd5b60006146e084828501614643565b91505092915050565b600080604083850312156146fc57600080fd5b600061470a8582860161462e565b925050602061471b8582860161462e565b9150509250929050565b60008060006060848603121561473a57600080fd5b60006147488682870161462e565b93505060206147598682870161462e565b925050604061476a8682870161466d565b9150509250925092565b6000806040838503121561478757600080fd5b60006147958582860161462e565b92505060206147a685828601614658565b9150509250929050565b600080604083850312156147c357600080fd5b60006147d18582860161462e565b92505060206147e28582860161466d565b9150509250929050565b6000602082840312156147fe57600080fd5b600061480c84828501614658565b91505092915050565b60006020828403121561482757600080fd5b60006148358482850161466d565b91505092915050565b60008060006060848603121561485357600080fd5b60006148618682870161466d565b93505060206148728682870161466d565b92505060406148838682870161466d565b9150509250925092565b6000806000606084860312156148a257600080fd5b60006148b086828701614682565b93505060206148c186828701614682565b92505060406148d286828701614682565b9150509250925092565b60006148e88383614903565b60208301905092915050565b6148fd81615038565b82525050565b61490c81615026565b82525050565b61491b81615026565b82525050565b600061492c82614ecc565b6149368185614eef565b935061494183614ebc565b8060005b8381101561497257815161495988826148dc565b975061496483614ee2565b925050600181019050614945565b5085935050505092915050565b6149888161504a565b82525050565b6149978161508d565b82525050565b6149a6816150b1565b82525050565b60006149b782614ed7565b6149c18185614f00565b93506149d18185602086016150c3565b6149da816151b5565b840191505092915050565b60006149f2602383614f00565b91506149fd826151c6565b604082019050919050565b6000614a15601183614f00565b9150614a2082615215565b602082019050919050565b6000614a38603f83614f00565b9150614a438261523e565b604082019050919050565b6000614a5b602683614f00565b9150614a668261528d565b604082019050919050565b6000614a7e602283614f00565b9150614a89826152dc565b604082019050919050565b6000614aa1601b83614f00565b9150614aac8261532b565b602082019050919050565b6000614ac4601383614f00565b9150614acf82615354565b602082019050919050565b6000614ae7602183614f00565b9150614af28261537d565b604082019050919050565b6000614b0a602083614f00565b9150614b15826153cc565b602082019050919050565b6000614b2d602583614f00565b9150614b38826153f5565b604082019050919050565b6000614b50602483614f00565b9150614b5b82615444565b604082019050919050565b614b6f81615076565b82525050565b614b7e81615080565b82525050565b6000602082019050614b996000830184614912565b92915050565b6000602082019050614bb460008301846148f4565b92915050565b6000604082019050614bcf6000830185614912565b614bdc6020830184614912565b9392505050565b600060c082019050614bf86000830189614912565b614c056020830188614b66565b614c12604083018761499d565b614c1f606083018661499d565b614c2c6080830185614912565b614c3960a0830184614b66565b979650505050505050565b6000602082019050614c59600083018461497f565b92915050565b6000602082019050614c74600083018461498e565b92915050565b60006020820190508181036000830152614c9481846149ac565b905092915050565b60006020820190508181036000830152614cb5816149e5565b9050919050565b60006020820190508181036000830152614cd581614a08565b9050919050565b60006020820190508181036000830152614cf581614a2b565b9050919050565b60006020820190508181036000830152614d1581614a4e565b9050919050565b60006020820190508181036000830152614d3581614a71565b9050919050565b60006020820190508181036000830152614d5581614a94565b9050919050565b60006020820190508181036000830152614d7581614ab7565b9050919050565b60006020820190508181036000830152614d9581614ada565b9050919050565b60006020820190508181036000830152614db581614afd565b9050919050565b60006020820190508181036000830152614dd581614b20565b9050919050565b60006020820190508181036000830152614df581614b43565b9050919050565b6000602082019050614e116000830184614b66565b92915050565b6000604082019050614e2c6000830185614b66565b8181036020830152614e3e8184614921565b90509392505050565b600060a082019050614e5c6000830188614b66565b614e69602083018761499d565b8181036040830152614e7b8186614921565b9050614e8a6060830185614912565b614e976080830184614b66565b9695505050505050565b6000602082019050614eb66000830184614b75565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614f1c82615076565b9150614f2783615076565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f5c57614f5b615128565b5b828201905092915050565b6000614f7282615076565b9150614f7d83615076565b925082614f8d57614f8c615157565b5b828204905092915050565b6000614fa382615076565b9150614fae83615076565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614fe757614fe6615128565b5b828202905092915050565b6000614ffd82615076565b915061500883615076565b92508282101561501b5761501a615128565b5b828203905092915050565b600061503182615056565b9050919050565b600061504382615056565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006150988261509f565b9050919050565b60006150aa82615056565b9050919050565b60006150bc82615076565b9050919050565b60005b838110156150e15780820151818401526020810190506150c6565b838111156150f0576000848401525b50505050565b6000600282049050600182168061510e57607f821691505b6020821081141561512257615121615186565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f46726f6d2063616e6e6f7420626520626f742100000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61549c81615026565b81146154a757600080fd5b50565b6154b38161504a565b81146154be57600080fd5b50565b6154ca81615076565b81146154d557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220405438d2b573ca6dbae708942ee9c852dcbfbccba09cfe1b33a72a318c2afc7064736f6c63430008040033

Deployed Bytecode

0x6080604052600436106103fe5760003560e01c806382eefb4311610213578063c5d2418911610123578063df3a6628116100ab578063f1d5f5171161007a578063f1d5f51714610f6c578063f2fde38b14610f95578063f84ba65d14610fbe578063f872858a14610fe7578063ffb54a991461101257610405565b8063df3a662814610ec6578063ec28438a14610eef578063ef422a1814610f18578063f0cd1dac14610f4157610405565b8063cab03471116100f2578063cab0347114610ddd578063d158272d14610e08578063da00097d14610e33578063dc44b6a014610e5e578063dd62ed3e14610e8957610405565b8063c5d2418914610d1f578063c816841b14610d4a578063c860795214610d75578063c867d60b14610da057610405565b8063a08e671f116101a6578063a9059cbb11610175578063a9059cbb14610c3c578063bf08b52014610c79578063c2d4640e14610ca2578063c469b6dd14610ccb578063c49b9a8014610cf657610405565b8063a08e671f14610b80578063a457c2d714610bab578063a5d69d1f14610be8578063a83f53a714610c1157610405565b80638f70ccf7116101e25780638f70ccf714610aea578063914eb66a14610b1357806395d89b4114610b2a578063a073d37f14610b5557610405565b806382eefb4314610a40578063844d591c14610a6b57806388790a6814610a945780638da5cb5b14610abf57610405565b8063313ce5671161030e578063557ed1ba116102a15780636ad1fe02116102705780636ad1fe021461095757806370a08231146109825780637c797c2b146109bf5780637d1db4a5146109ea578063807c2d9c14610a1557610405565b8063557ed1ba1461089957806357a5802f146108c45780635881f3ef146108ef57806361a23c691461092c57610405565b80633ecad271116102dd5780633ecad271146107cb5780634a74bb02146108085780634cb80fd5146108335780635342acb41461085c57610405565b8063313ce567146106fd57806339509351146107285780633b97084a146107655780633bbac5791461078e57610405565b806318160ddd116103915780632563ae83116103605780632563ae831461062a57806327c8f835146106535780632b112e491461067e5780632c4b2334146106a95780632e97766d146106d257610405565b806318160ddd146105705780631870517a1461059b5780632198cf6c146105c457806323b872dd146105ed57610405565b80630d5e5c87116103cd5780630d5e5c87146104c65780631245e347146104ef57806314353ed11461051a5780631694505e1461054557610405565b806303c0f5d41461040a57806306fdde031461043357806309553b281461045e578063095ea7b31461048957610405565b3661040557005b600080fd5b34801561041657600080fd5b50610431600480360381019061042c9190614774565b61103d565b005b34801561043f57600080fd5b5061044861112d565b6040516104559190614c7a565b60405180910390f35b34801561046a57600080fd5b506104736111bf565b6040516104809190614b84565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab91906147b0565b6111e5565b6040516104bd9190614c44565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e8919061483e565b611203565b005b3480156104fb57600080fd5b506105046112e3565b6040516105119190614b9f565b60405180910390f35b34801561052657600080fd5b5061052f611309565b60405161053c9190614dfc565b60405180910390f35b34801561055157600080fd5b5061055a611313565b6040516105679190614c5f565b60405180910390f35b34801561057c57600080fd5b50610585611339565b6040516105929190614dfc565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd919061483e565b611343565b005b3480156105d057600080fd5b506105eb60048036038101906105e69190614774565b611423565b005b3480156105f957600080fd5b50610614600480360381019061060f9190614725565b611513565b6040516106219190614c44565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c91906147ec565b6115ed565b005b34801561065f57600080fd5b5061066861169f565b6040516106759190614b84565b60405180910390f35b34801561068a57600080fd5b506106936116c3565b6040516106a09190614dfc565b60405180910390f35b3480156106b557600080fd5b506106d060048036038101906106cb9190614697565b611707565b005b3480156106de57600080fd5b506106e76117e0565b6040516106f49190614dfc565b60405180910390f35b34801561070957600080fd5b506107126117e8565b60405161071f9190614ea1565b60405180910390f35b34801561073457600080fd5b5061074f600480360381019061074a91906147b0565b6117ff565b60405161075c9190614c44565b60405180910390f35b34801561077157600080fd5b5061078c60048036038101906107879190614815565b6118b2565b005b34801561079a57600080fd5b506107b560048036038101906107b09190614697565b611951565b6040516107c29190614c44565b60405180910390f35b3480156107d757600080fd5b506107f260048036038101906107ed9190614697565b611971565b6040516107ff9190614c44565b60405180910390f35b34801561081457600080fd5b5061081d611991565b60405161082a9190614c44565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190614697565b6119a4565b005b34801561086857600080fd5b50610883600480360381019061087e9190614697565b611a7d565b6040516108909190614c44565b60405180910390f35b3480156108a557600080fd5b506108ae611a9d565b6040516108bb9190614dfc565b60405180910390f35b3480156108d057600080fd5b506108d9611aa5565b6040516108e69190614dfc565b60405180910390f35b3480156108fb57600080fd5b5061091660048036038101906109119190614697565b611aab565b6040516109239190614b84565b60405180910390f35b34801561093857600080fd5b50610941612009565b60405161094e9190614dfc565b60405180910390f35b34801561096357600080fd5b5061096c61200f565b6040516109799190614dfc565b60405180910390f35b34801561098e57600080fd5b506109a960048036038101906109a49190614697565b612015565b6040516109b69190614dfc565b60405180910390f35b3480156109cb57600080fd5b506109d461205e565b6040516109e19190614dfc565b60405180910390f35b3480156109f657600080fd5b506109ff612064565b604051610a0c9190614dfc565b60405180910390f35b348015610a2157600080fd5b50610a2a61206a565b604051610a379190614dfc565b60405180910390f35b348015610a4c57600080fd5b50610a55612070565b604051610a629190614dfc565b60405180910390f35b348015610a7757600080fd5b50610a926004803603810190610a8d9190614774565b612076565b005b348015610aa057600080fd5b50610aa9612166565b604051610ab69190614dfc565b60405180910390f35b348015610acb57600080fd5b50610ad461216c565b604051610ae19190614b84565b60405180910390f35b348015610af657600080fd5b50610b116004803603810190610b0c91906147ec565b612195565b005b348015610b1f57600080fd5b50610b28612247565b005b348015610b3657600080fd5b50610b3f61239c565b604051610b4c9190614c7a565b60405180910390f35b348015610b6157600080fd5b50610b6a61242e565b604051610b779190614dfc565b60405180910390f35b348015610b8c57600080fd5b50610b95612438565b604051610ba29190614dfc565b60405180910390f35b348015610bb757600080fd5b50610bd26004803603810190610bcd91906147b0565b61243e565b604051610bdf9190614c44565b60405180910390f35b348015610bf457600080fd5b50610c0f6004803603810190610c0a91906147ec565b61250b565b005b348015610c1d57600080fd5b50610c266125bd565b604051610c339190614dfc565b60405180910390f35b348015610c4857600080fd5b50610c636004803603810190610c5e91906147b0565b6125c3565b604051610c709190614c44565b60405180910390f35b348015610c8557600080fd5b50610ca06004803603810190610c9b9190614815565b6125e2565b005b348015610cae57600080fd5b50610cc96004803603810190610cc4919061483e565b612681565b005b348015610cd757600080fd5b50610ce0612761565b604051610ced9190614dfc565b60405180910390f35b348015610d0257600080fd5b50610d1d6004803603810190610d1891906147ec565b612767565b005b348015610d2b57600080fd5b50610d34612850565b604051610d419190614dfc565b60405180910390f35b348015610d5657600080fd5b50610d5f612856565b604051610d6c9190614b84565b60405180910390f35b348015610d8157600080fd5b50610d8a61287c565b604051610d979190614dfc565b60405180910390f35b348015610dac57600080fd5b50610dc76004803603810190610dc29190614697565b612882565b604051610dd49190614c44565b60405180910390f35b348015610de957600080fd5b50610df26128a2565b604051610dff9190614dfc565b60405180910390f35b348015610e1457600080fd5b50610e1d6128a8565b604051610e2a9190614b9f565b60405180910390f35b348015610e3f57600080fd5b50610e486128ce565b604051610e559190614c44565b60405180910390f35b348015610e6a57600080fd5b50610e736128e1565b604051610e809190614dfc565b60405180910390f35b348015610e9557600080fd5b50610eb06004803603810190610eab91906146e9565b6128e7565b604051610ebd9190614dfc565b60405180910390f35b348015610ed257600080fd5b50610eed6004803603810190610ee89190614697565b61296e565b005b348015610efb57600080fd5b50610f166004803603810190610f119190614815565b612a47565b005b348015610f2457600080fd5b50610f3f6004803603810190610f3a9190614774565b612ae6565b005b348015610f4d57600080fd5b50610f56612bd6565b604051610f639190614dfc565b60405180910390f35b348015610f7857600080fd5b50610f936004803603810190610f8e9190614815565b612bdc565b005b348015610fa157600080fd5b50610fbc6004803603810190610fb79190614697565b612c7b565b005b348015610fca57600080fd5b50610fe56004803603810190610fe09190614774565b612e3d565b005b348015610ff357600080fd5b50610ffc612f2d565b6040516110099190614c44565b60405180910390f35b34801561101e57600080fd5b50611027612f40565b6040516110349190614c44565b60405180910390f35b611045612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c990614d9c565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606003805461113c906150f6565b80601f0160208091040260200160405190810160405280929190818152602001828054611168906150f6565b80156111b55780601f1061118a576101008083540402835291602001916111b5565b820191906000526020600020905b81548152906001019060200180831161119857829003601f168201915b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006111f96111f2612fb1565b8484612fb9565b6001905092915050565b61120b612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90614d9c565b60405180910390fd5b8260148190555081601581905550806016819055506112d86016546112ca601554601454612f5390919063ffffffff16565b612f5390919063ffffffff16565b601b81905550505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601d54905090565b61134b612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf90614d9c565b60405180910390fd5b82601181905550816012819055508060138190555061141860135461140a601254601154612f5390919063ffffffff16565b612f5390919063ffffffff16565b601a81905550505050565b61142b612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114af90614d9c565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611520848484613184565b506115e28461152d612fb1565b6115dd856040518060600160405280602881526020016154d960289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611593612fb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139079092919063ffffffff16565b612fb9565b600190509392505050565b6115f5612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167990614d9c565b60405180910390fd5b80602260176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006117026116f17f000000000000000000000000000000000000000000000000000000000000dead612015565b601d5461396b90919063ffffffff16565b905090565b61170f612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390614d9c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600043905090565b6000600560009054906101000a900460ff16905090565b60006118a861180c612fb1565b846118a3856009600061181d612fb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5390919063ffffffff16565b612fb9565b6001905092915050565b6118ba612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193e90614d9c565b60405180910390fd5b8060208190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b602260159054906101000a900460ff1681565b6119ac612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3090614d9c565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60175481565b6000611ab5612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3990614d9c565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8d57600080fd5b505afa158015611ba1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc591906146c0565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2757600080fd5b505afa158015611c3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5f91906146c0565b6040518363ffffffff1660e01b8152600401611c7c929190614bba565b60206040518083038186803b158015611c9457600080fd5b505afa158015611ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccc91906146c0565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e8d578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611d4957600080fd5b505afa158015611d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8191906146c0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611de357600080fd5b505afa158015611df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1b91906146c0565b6040518363ffffffff1660e01b8152600401611e38929190614bba565b602060405180830381600087803b158015611e5257600080fd5b505af1158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a91906146c0565b91505b81602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60185481565b600c5481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600f5481565b601e5481565b601f5481565b601b5481565b61207e612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461210b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210290614d9c565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61219d612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461222a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222190614d9c565b60405180910390fd5b80600760146101000a81548160ff02191690831515021790555050565b61224f612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d390614d9c565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6060600480546123ab906150f6565b80601f01602080910402602001604051908101604052809291908181526020018280546123d7906150f6565b80156124245780601f106123f957610100808354040283529160200191612424565b820191906000526020600020905b81548152906001019060200180831161240757829003601f168201915b5050505050905090565b6000602054905090565b601c5481565b600061250161244b612fb1565b846124fc856040518060600160405280602581526020016155016025913960096000612475612fb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139079092919063ffffffff16565b612fb9565b6001905092915050565b612513612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259790614d9c565b60405180910390fd5b80602260166101000a81548160ff02191690831515021790555050565b60195481565b60006125d76125d0612fb1565b8484613184565b506001905092915050565b6125ea612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266e90614d9c565b60405180910390fd5b80600f8190555050565b612689612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270d90614d9c565b60405180910390fd5b826017819055508160188190555080601981905550612756601954612748601854601754612f5390919063ffffffff16565b612f5390919063ffffffff16565b601c81905550505050565b60135481565b61276f612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f390614d9c565b60405180910390fd5b80602260156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516128459190614c44565b60405180910390a150565b60125481565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60165481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602260169054906101000a900460ff1681565b60115481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612976612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fa90614d9c565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a4f612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad390614d9c565b60405180910390fd5b80601e8190555050565b612aee612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7290614d9c565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a5481565b612be4612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6890614d9c565b60405180910390fd5b80601f8190555050565b612c83612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0790614d9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7790614cfc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612e45612fb1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec990614d9c565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602260179054906101000a900460ff1681565b600760149054906101000a900460ff1681565b6000808284612f629190614f11565b905083811015612fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9e90614d3c565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302090614ddc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309090614d1c565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516131779190614dfc565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156131f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ec90614dbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325c90614c9c565b60405180910390fd5b600760149054906101000a900460ff166132ef5761328161216c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146132ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e590614cdc565b60405180910390fd5b5b602260149054906101000a900460ff16156133165761330f8484846139b5565b9050613900565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156133c05750602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156133cd5743600c819055505b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561349357600f54600c546134339190614f11565b4311613492576001600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b61349b61216c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561350957506134d961216c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613519576135188483613b88565b5b600061352430612015565b90506000602054821015905080801561354a5750602260149054906101000a900460ff16155b80156135a05750601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135b85750602260159054906101000a900460ff165b156135e257602260169054906101000a900460ff16156135d85760205491505b6135e182613cb2565b5b61366b846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139079092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806137515750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61376557613760878787613ea3565b613767565b845b9050602260179054906101000a900460ff1680156137cf5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137fe57601f546137f2826137e489612015565b612f5390919063ffffffff16565b11156137fd57600080fd5b5b61385081600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5390919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138f09190614dfc565b60405180910390a3600193505050505b9392505050565b600083831115829061394f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139469190614c7a565b60405180910390fd5b506000838561395e9190614ff2565b9050809150509392505050565b60006139ad83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613907565b905092915050565b6000613a40826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139079092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ad582600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5390919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613b759190614dfc565b60405180910390a3600190509392505050565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c0c90614d5c565b60405180910390fd5b601e5481111580613c6f5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ca590614cbc565b60405180910390fd5b5050565b6001602260146101000a81548160ff0219169083151502179055506000613d0b6002613cfd601c54613cef601754876140ca90919063ffffffff16565b61414590919063ffffffff16565b61414590919063ffffffff16565b90506000613d22828461396b90919063ffffffff16565b9050613d2d8161418f565b60004790506000613d5e613d4d600260175461414590919063ffffffff16565b601c5461396b90919063ffffffff16565b90506000613d9c6002613d8e84613d80601754886140ca90919063ffffffff16565b61414590919063ffffffff16565b61414590919063ffffffff16565b90506000613dc783613db9601954876140ca90919063ffffffff16565b61414590919063ffffffff16565b90506000613df082613de2858861396b90919063ffffffff16565b61396b90919063ffffffff16565b90506000811115613e2857613e27600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261448c565b5b6000821115613e5e57613e5d600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361448c565b5b600083118015613e6e5750600087115b15613e7e57613e7d87846144d7565b5b505050505050506000602260146101000a81548160ff02191690831515021790555050565b60008060009050601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f2b57613f246064613f16601a54866140ca90919063ffffffff16565b61414590919063ffffffff16565b9050613fa9565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613fa857613fa56064613f97601b54866140ca90919063ffffffff16565b61414590919063ffffffff16565b90505b5b60008111156140ad5761400481600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5390919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516140a49190614dfc565b60405180910390a35b6140c0818461396b90919063ffffffff16565b9150509392505050565b6000808314156140dd576000905061413f565b600082846140eb9190614f98565b90508284826140fa9190614f67565b1461413a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161413190614d7c565b60405180910390fd5b809150505b92915050565b600061418783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506145cb565b905092915050565b6000600267ffffffffffffffff8111156141d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156142005781602001602082028036833780820191505090505b509050308160008151811061423e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156142e057600080fd5b505afa1580156142f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061431891906146c0565b81600181518110614352577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506143b930602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612fb9565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161441d959493929190614e47565b600060405180830381600087803b15801561443757600080fd5b505af115801561444b573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614480929190614e17565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156144d2573d6000803e3d6000fd5b505050565b61450430602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612fb9565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061455061216c565b426040518863ffffffff1660e01b815260040161457296959493929190614be3565b6060604051808303818588803b15801561458b57600080fd5b505af115801561459f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906145c4919061488d565b5050505050565b60008083118290614612576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016146099190614c7a565b60405180910390fd5b50600083856146219190614f67565b9050809150509392505050565b60008135905061463d81615493565b92915050565b60008151905061465281615493565b92915050565b600081359050614667816154aa565b92915050565b60008135905061467c816154c1565b92915050565b600081519050614691816154c1565b92915050565b6000602082840312156146a957600080fd5b60006146b78482850161462e565b91505092915050565b6000602082840312156146d257600080fd5b60006146e084828501614643565b91505092915050565b600080604083850312156146fc57600080fd5b600061470a8582860161462e565b925050602061471b8582860161462e565b9150509250929050565b60008060006060848603121561473a57600080fd5b60006147488682870161462e565b93505060206147598682870161462e565b925050604061476a8682870161466d565b9150509250925092565b6000806040838503121561478757600080fd5b60006147958582860161462e565b92505060206147a685828601614658565b9150509250929050565b600080604083850312156147c357600080fd5b60006147d18582860161462e565b92505060206147e28582860161466d565b9150509250929050565b6000602082840312156147fe57600080fd5b600061480c84828501614658565b91505092915050565b60006020828403121561482757600080fd5b60006148358482850161466d565b91505092915050565b60008060006060848603121561485357600080fd5b60006148618682870161466d565b93505060206148728682870161466d565b92505060406148838682870161466d565b9150509250925092565b6000806000606084860312156148a257600080fd5b60006148b086828701614682565b93505060206148c186828701614682565b92505060406148d286828701614682565b9150509250925092565b60006148e88383614903565b60208301905092915050565b6148fd81615038565b82525050565b61490c81615026565b82525050565b61491b81615026565b82525050565b600061492c82614ecc565b6149368185614eef565b935061494183614ebc565b8060005b8381101561497257815161495988826148dc565b975061496483614ee2565b925050600181019050614945565b5085935050505092915050565b6149888161504a565b82525050565b6149978161508d565b82525050565b6149a6816150b1565b82525050565b60006149b782614ed7565b6149c18185614f00565b93506149d18185602086016150c3565b6149da816151b5565b840191505092915050565b60006149f2602383614f00565b91506149fd826151c6565b604082019050919050565b6000614a15601183614f00565b9150614a2082615215565b602082019050919050565b6000614a38603f83614f00565b9150614a438261523e565b604082019050919050565b6000614a5b602683614f00565b9150614a668261528d565b604082019050919050565b6000614a7e602283614f00565b9150614a89826152dc565b604082019050919050565b6000614aa1601b83614f00565b9150614aac8261532b565b602082019050919050565b6000614ac4601383614f00565b9150614acf82615354565b602082019050919050565b6000614ae7602183614f00565b9150614af28261537d565b604082019050919050565b6000614b0a602083614f00565b9150614b15826153cc565b602082019050919050565b6000614b2d602583614f00565b9150614b38826153f5565b604082019050919050565b6000614b50602483614f00565b9150614b5b82615444565b604082019050919050565b614b6f81615076565b82525050565b614b7e81615080565b82525050565b6000602082019050614b996000830184614912565b92915050565b6000602082019050614bb460008301846148f4565b92915050565b6000604082019050614bcf6000830185614912565b614bdc6020830184614912565b9392505050565b600060c082019050614bf86000830189614912565b614c056020830188614b66565b614c12604083018761499d565b614c1f606083018661499d565b614c2c6080830185614912565b614c3960a0830184614b66565b979650505050505050565b6000602082019050614c59600083018461497f565b92915050565b6000602082019050614c74600083018461498e565b92915050565b60006020820190508181036000830152614c9481846149ac565b905092915050565b60006020820190508181036000830152614cb5816149e5565b9050919050565b60006020820190508181036000830152614cd581614a08565b9050919050565b60006020820190508181036000830152614cf581614a2b565b9050919050565b60006020820190508181036000830152614d1581614a4e565b9050919050565b60006020820190508181036000830152614d3581614a71565b9050919050565b60006020820190508181036000830152614d5581614a94565b9050919050565b60006020820190508181036000830152614d7581614ab7565b9050919050565b60006020820190508181036000830152614d9581614ada565b9050919050565b60006020820190508181036000830152614db581614afd565b9050919050565b60006020820190508181036000830152614dd581614b20565b9050919050565b60006020820190508181036000830152614df581614b43565b9050919050565b6000602082019050614e116000830184614b66565b92915050565b6000604082019050614e2c6000830185614b66565b8181036020830152614e3e8184614921565b90509392505050565b600060a082019050614e5c6000830188614b66565b614e69602083018761499d565b8181036040830152614e7b8186614921565b9050614e8a6060830185614912565b614e976080830184614b66565b9695505050505050565b6000602082019050614eb66000830184614b75565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614f1c82615076565b9150614f2783615076565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f5c57614f5b615128565b5b828201905092915050565b6000614f7282615076565b9150614f7d83615076565b925082614f8d57614f8c615157565b5b828204905092915050565b6000614fa382615076565b9150614fae83615076565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614fe757614fe6615128565b5b828202905092915050565b6000614ffd82615076565b915061500883615076565b92508282101561501b5761501a615128565b5b828203905092915050565b600061503182615056565b9050919050565b600061504382615056565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006150988261509f565b9050919050565b60006150aa82615056565b9050919050565b60006150bc82615076565b9050919050565b60005b838110156150e15780820151818401526020810190506150c6565b838111156150f0576000848401525b50505050565b6000600282049050600182168061510e57607f821691505b6020821081141561512257615121615186565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f46726f6d2063616e6e6f7420626520626f742100000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61549c81615026565b81146154a757600080fd5b50565b6154b38161504a565b81146154be57600080fd5b50565b6154ca81615076565b81146154d557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220405438d2b573ca6dbae708942ee9c852dcbfbccba09cfe1b33a72a318c2afc7064736f6c63430008040033

Deployed Bytecode Sourcemap

19998:16216:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28742:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23866:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20527:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25160:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26434:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20336:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28861:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21898:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24143:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26093:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27396:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30266:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27275:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20439:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28381:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27781:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28949:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24052:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24529:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27649:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20973:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21056:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22013:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27918:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20771:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6508:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21363:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29182:807;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21404:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20889:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24251:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21020:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21692:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21758;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21528:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25674:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21237:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5792:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35244:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6017:227;;;;;;;;;;;;;:::i;:::-;;23957:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25032:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21573:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24755:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28244:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21445:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30091:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28635:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26786:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21194:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28065:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21152:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21946:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21280:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20828:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21323:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20230:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22060:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21110:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24378:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28519:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27156:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25950:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21484:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27539:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6252:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25811:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22112:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20604:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28742:109;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28837:6:::1;28821:5;:13;28827:6;28821:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;28742:109:::0;;:::o;23866:83::-;23903:13;23936:5;23929:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23866:83;:::o;20527:70::-;;;;;;;;;;;;;:::o;25160:161::-;25235:4;25252:39;25261:12;:10;:12::i;:::-;25275:7;25284:6;25252:8;:39::i;:::-;25309:4;25302:11;;25160:161;;;;:::o;26434:340::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26577:15:::1;26557:17;:35;;;;26623:15;26603:17;:35;;;;26664:10;26649:12;:25;;;;26708:58;26753:12;;26708:40;26730:17;;26708;;:21;;:40;;;;:::i;:::-;:44;;:58;;;;:::i;:::-;26687:18;:79;;;;26434:340:::0;;;:::o;20336:94::-;;;;;;;;;;;;;:::o;28861:80::-;28902:7;28929:4;;28922:11;;28861:80;:::o;21898:41::-;;;;;;;;;;;;;:::o;24143:100::-;24196:7;24223:12;;24216:19;;24143:100;:::o;26093:333::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26235:15:::1;26216:16;:34;;;;26280:15;26261:16;:34;;;;26320:10;26306:11;:24;;;;26363:55;26406:11;;26363:38;26384:16;;26363;;:20;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;26343:17;:75;;;;26093:333:::0;;;:::o;27396:135::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27517:6:::1;27487:19;:27;27507:6;27487:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;27396:135:::0;;:::o;30266:313::-;30364:4;30381:36;30391:6;30399:9;30410:6;30381:9;:36::i;:::-;;30428:121;30437:6;30445:12;:10;:12::i;:::-;30459:89;30497:6;30459:89;;;;;;;;;;;;;;;;;:11;:19;30471:6;30459:19;;;;;;;;;;;;;;;:33;30479:12;:10;:12::i;:::-;30459:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;30428:8;:121::i;:::-;30567:4;30560:11;;30266:313;;;;;:::o;27275:113::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27372:8:::1;27353:16;;:27;;;;;;;;;;;;;;;;;;27275:113:::0;:::o;20439:81::-;;;:::o;28381:128::-;28434:7;28461:40;28478:22;28488:11;28478:9;:22::i;:::-;28461:12;;:16;;:40;;;;:::i;:::-;28454:47;;28381:128;:::o;27781:129::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27891:10:::1;27863:17;;:39;;;;;;;;;;;;;;;;;;27781:129:::0;:::o;28949:87::-;28989:7;29016:12;29009:19;;28949:87;:::o;24052:83::-;24093:5;24118:9;;;;;;;;;;;24111:16;;24052:83;:::o;24529:218::-;24617:4;24634:83;24643:12;:10;:12::i;:::-;24657:7;24666:50;24705:10;24666:11;:25;24678:12;:10;:12::i;:::-;24666:25;;;;;;;;;;;;;;;:34;24692:7;24666:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;24634:8;:83::i;:::-;24735:4;24728:11;;24529:218;;;;:::o;27649:124::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27757:8:::1;27731:23;:34;;;;27649:124:::0;:::o;20973:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;21056:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;22013:40::-;;;;;;;;;;;;;:::o;27918:139::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28038:10:::1;28005:22;;:44;;;;;;;;;;;;;;;;;;27918:139:::0;:::o;20771:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6508:90::-;6548:7;6575:15;6568:22;;6508:90;:::o;21363:34::-;;;;:::o;29182:807::-;29262:22;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29299:35:::1;29356:16;29299:74;;29422:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29404:53;;;29466:4;29473:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29404:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29387:110;;29539:1;29513:28;;:14;:28;;;29510:225;;;29627:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29609:74;;;29692:4;29699:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29609:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29592:131;;29510:225;29761:14;29747:11;;:28;;;;;;;;;;;;;;;;;;29827:16;29809:15;;:34;;;;;;;;;;;;;;;;;;29925:4;29881:19;:41;29909:11;;;;;;;;;;;29881:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;29977:4;29940:12;:34;29961:11;;;;;;;;;;;29940:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;5996:1;29182:807:::0;;;:::o;21404:34::-;;;;:::o;20889:23::-;;;;:::o;24251:119::-;24317:7;24344:9;:18;24354:7;24344:18;;;;;;;;;;;;;;;;24337:25;;24251:119;;;:::o;21020:27::-;;;;:::o;21692:58::-;;;;:::o;21758:::-;;;;:::o;21528:38::-;;;;:::o;25674:129::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25787:8:::1;25763:12;:21;25776:7;25763:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;25674:129:::0;;:::o;21237:36::-;;;;:::o;5792:79::-;5830:7;5857:6;;;;;;;;;;;5850:13;;5792:79;:::o;35244:101::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35325:12:::1;35311:11;;:26;;;;;;;;;;;;;;;;;;35244:101:::0;:::o;6017:227::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6121:42:::1;6084:81;;6105:6;::::0;::::1;;;;;;;;6084:81;;;;;;;;;;;;6193:42;6176:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;6017:227::o:0;23957:87::-;23996:13;24029:7;24022:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23957:87;:::o;25032:120::-;25094:7;25121:23;;25114:30;;25032:120;:::o;21573:44::-;;;;:::o;24755:269::-;24848:4;24865:129;24874:12;:10;:12::i;:::-;24888:7;24897:96;24936:15;24897:96;;;;;;;;;;;;;;;;;:11;:25;24909:12;:10;:12::i;:::-;24897:25;;;;;;;;;;;;;;;:34;24923:7;24897:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;24865:8;:129::i;:::-;25012:4;25005:11;;24755:269;;;;:::o;28244:125::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28353:8:::1;28325:25;;:36;;;;;;;;;;;;;;;;;;28244:125:::0;:::o;21445:30::-;;;;:::o;30091:167::-;30169:4;30186:42;30196:12;:10;:12::i;:::-;30210:9;30221:6;30186:9;:42::i;:::-;;30246:4;30239:11;;30091:167;;;;:::o;28635:99::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28717:9:::1;28706:8;:20;;;;28635:99:::0;:::o;26786:358::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26945:17:::1;26927:15;:35;;;;26991:17;26973:15;:35;;;;27032:12;27019:10;:25;;;;27084:52;27125:10;;27084:36;27104:15;;27084;;:19;;:36;;;;:::i;:::-;:40;;:52;;;;:::i;:::-;27057:24;:79;;;;26786:358:::0;;;:::o;21194:30::-;;;;:::o;28065:171::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28166:8:::1;28142:21;;:32;;;;;;;;;;;;;;;;;;28190:38;28219:8;28190:38;;;;;;:::i;:::-;;;;;;;;28065:171:::0;:::o;21152:35::-;;;;:::o;21946:26::-;;;;;;;;;;;;;:::o;21280:36::-;;;;:::o;20828:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;21323:31::-;;;;:::o;20230:99::-;;;;;;;;;;;;;:::o;22060:45::-;;;;;;;;;;;;;:::o;21110:35::-;;;;:::o;24378:143::-;24459:7;24486:11;:18;24498:5;24486:18;;;;;;;;;;;;;;;:27;24505:7;24486:27;;;;;;;;;;;;;;;;24479:34;;24378:143;;;;:::o;28519:108::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28608:11:::1;28595:10;;:24;;;;;;;;;;;;;;;;;;28519:108:::0;:::o;27156:111::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27248:11:::1;27233:12;:26;;;;27156:111:::0;:::o;25950:135::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26069:8:::1;26040:17;:26;26058:7;26040:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;25950:135:::0;;:::o;21484:37::-;;;;:::o;27539:102::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27625:8:::1;27611:10;:22;;;;27539:102:::0;:::o;6252:244::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6361:1:::1;6341:22;;:8;:22;;;;6333:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6451:8;6422:38;;6443:6;::::0;::::1;;;;;;;;6422:38;;;;;;;;;;;;6480:8;6471:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6252:244:::0;:::o;25811:127::-;5936:12;:10;:12::i;:::-;5926:22;;:6;;;;;;;;;;:22;;;5918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25924:6:::1;25898:15;:23;25914:6;25898:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;25811:127:::0;;:::o;22112:36::-;;;;;;;;;;;;;:::o;20604:31::-;;;;;;;;;;;;;:::o;1170:181::-;1228:7;1248:9;1264:1;1260;:5;;;;:::i;:::-;1248:17;;1289:1;1284;:6;;1276:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1342:1;1335:8;;;1170:181;;;;:::o;102:115::-;155:15;198:10;183:26;;102:115;:::o;25329:337::-;25439:1;25422:19;;:5;:19;;;;25414:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25520:1;25501:21;;:7;:21;;;;25493:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25604:6;25574:11;:18;25586:5;25574:18;;;;;;;;;;;;;;;:27;25593:7;25574:27;;;;;;;;;;;;;;;:36;;;;25642:7;25626:32;;25635:5;25626:32;;;25651:6;25626:32;;;;;;:::i;:::-;;;;;;;;25329:337;;;:::o;30587:2049::-;30674:4;30719:1;30701:20;;:6;:20;;;;30693:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;30803:1;30782:23;;:9;:23;;;;30774:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;30890:11;;;;;;;;;;;30885:138;;30936:7;:5;:7::i;:::-;30926:17;;:6;:17;;;30918:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;30885:138;31038:16;;;;;;;;;;;31035:1594;;;31088:41;31103:6;31111:9;31122:6;31088:14;:41::i;:::-;31081:48;;;;31035:1594;31192:10;;;;;;;;;;;31182:20;;:6;:20;;;:48;;;;;31219:11;;;;;;;;;;;31206:24;;:9;:24;;;31182:48;31179:98;;;31253:12;31246:4;:19;;;;31179:98;31303:11;;;;;;;;;;;31293:21;;:6;:21;;;31289:151;;;31359:8;;31352:4;;:15;;;;:::i;:::-;31335:12;:33;31331:98;;31409:4;31390:5;:16;31396:9;31390:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;31331:98;31289:151;31466:7;:5;:7::i;:::-;31456:17;;:6;:17;;;;:41;;;;;31490:7;:5;:7::i;:::-;31477:20;;:9;:20;;;;31456:41;31452:75;;;31499:28;31513:6;31520;31499:13;:28::i;:::-;31452:75;31544:28;31575:24;31593:4;31575:9;:24::i;:::-;31544:55;;31614:28;31669:23;;31645:20;:47;;31614:78;;31725:23;:44;;;;;31753:16;;;;;;;;;;;31752:17;31725:44;:69;;;;;31774:12;:20;31787:6;31774:20;;;;;;;;;;;;;;;;;;;;;;;;;31773:21;31725:69;:94;;;;;31798:21;;;;;;;;;;;31725:94;31721:305;;;31857:25;;;;;;;;;;;31854:97;;;31928:23;;31905:46;;31854:97;31970:36;31985:20;31970:14;:36::i;:::-;31721:305;32062:53;32084:6;32062:53;;;;;;;;;;;;;;;;;:9;:17;32072:6;32062:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;32042:9;:17;32052:6;32042:17;;;;;;;;;;;;;;;:73;;;;32132:19;32155:17;:25;32173:6;32155:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;32184:17;:28;32202:9;32184:28;;;;;;;;;;;;;;;;;;;;;;;;;32155:57;32154:148;;32268:34;32276:6;32284:9;32295:6;32268:7;:34::i;:::-;32154:148;;;32259:6;32154:148;32132:170;;32322:16;;;;;;;;;;;:51;;;;;32343:19;:30;32363:9;32343:30;;;;;;;;;;;;;;;;;;;;;;;;;32342:31;32322:51;32319:133;;;32441:10;;32400:37;32425:11;32400:20;32410:9;32400;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;32392:60;;;;;;32319:133;32492:37;32517:11;32492:9;:20;32502:9;32492:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;32469:9;:20;32479:9;32469:20;;;;;;;;;;;;;;;:60;;;;32568:9;32551:40;;32560:6;32551:40;;;32579:11;32551:40;;;;;;:::i;:::-;;;;;;;;32613:4;32606:11;;;;;30587:2049;;;;;;:::o;1503:192::-;1589:7;1622:1;1617;:6;;1625:12;1609:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1649:9;1665:1;1661;:5;;;;:::i;:::-;1649:17;;1686:1;1679:8;;;1503:192;;;;;:::o;1359:136::-;1417:7;1444:43;1448:1;1451;1444:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1437:50;;1359:136;;;;:::o;32644:330::-;32737:4;32774:53;32796:6;32774:53;;;;;;;;;;;;;;;;;:9;:17;32784:6;32774:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;32754:9;:17;32764:6;32754:17;;;;;;;;;;;;;;;:73;;;;32861:32;32886:6;32861:9;:20;32871:9;32861:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;32838:9;:20;32848:9;32838:20;;;;;;;;;;;;;;;:55;;;;32926:9;32909:35;;32918:6;32909:35;;;32937:6;32909:35;;;;;;:::i;:::-;;;;;;;;32962:4;32955:11;;32644:330;;;;;:::o;35987:222::-;36074:5;:13;36080:6;36074:13;;;;;;;;;;;;;;;;;;;;;;;;;36073:14;36065:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;36140:12;;36130:6;:22;;:49;;;;36156:15;:23;36172:6;36156:23;;;;;;;;;;;;;;;;;;;;;;;;;36130:49;36122:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;35987:222;;:::o;32982:1048::-;22590:4;22571:16;;:23;;;;;;;;;;;;;;;;;;33064:19:::1;33086:65;33149:1;33086:58;33119:24;;33086:28;33098:15;;33086:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;33064:87;;33162:21;33186:24;33198:11;33186:7;:11;;:24;;;;:::i;:::-;33162:48;;33223:31;33240:13;33223:16;:31::i;:::-;33265:22;33290:21;33265:46;;33324:19;33346:52;33375:22;33395:1;33375:15;;:19;;:22;;;;:::i;:::-;33346:24;;:28;;:52;;;;:::i;:::-;33324:74;;33419:26;33448:59;33505:1;33448:52;33488:11;33448:35;33467:15;;33448:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;33419:88;;33518:21;33542:47;33577:11;33542:30;33561:10;;33542:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;33518:71;;33600:26;33629:57;33672:13;33629:38;33648:18;33629:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;33600:86;;33723:1;33702:18;:22;33699:104;;;33739:64;33760:22;;;;;;;;;;;33784:18;33739:20;:64::i;:::-;33699:104;33835:1;33819:13;:17;33816:89;;;33851:54;33872:17;;;;;;;;;;;33891:13;33851:20;:54::i;:::-;33816:89;33942:1;33921:18;:22;:41;;;;;33961:1;33947:11;:15;33921:41;33918:104;;;33977:45;33990:11;34003:18;33977:12;:45::i;:::-;33918:104;22605:1;;;;;;;22636:5:::0;22617:16;;:24;;;;;;;;;;;;;;;;;;32982:1048;:::o;35353:622::-;35439:7;35469:17;35489:1;35469:21;;35514:12;:20;35527:6;35514:20;;;;;;;;;;;;;;;;;;;;;;;;;35511:223;;;35563:38;35597:3;35563:29;35574:17;;35563:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;35551:50;;35511:223;;;35631:12;:23;35644:9;35631:23;;;;;;;;;;;;;;;;;;;;;;;;;35628:106;;;35683:39;35718:3;35683:30;35694:18;;35683:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;35671:51;;35628:106;35511:223;35769:1;35757:9;:13;35754:173;;;35814:39;35843:9;35814;:24;35832:4;35814:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;35787:9;:24;35805:4;35787:24;;;;;;;;;;;;;;;:66;;;;35898:4;35873:42;;35882:6;35873:42;;;35905:9;35873:42;;;;;;:::i;:::-;;;;;;;;35754:173;35946:21;35957:9;35946:6;:10;;:21;;;;:::i;:::-;35939:28;;;35353:622;;;;;:::o;1703:250::-;1761:7;1790:1;1785;:6;1781:47;;;1815:1;1808:8;;;;1781:47;1840:9;1856:1;1852;:5;;;;:::i;:::-;1840:17;;1885:1;1880;1876;:5;;;;:::i;:::-;:10;1868:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1944:1;1937:8;;;1703:250;;;;;:::o;1961:132::-;2019:7;2046:39;2050:1;2053;2046:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2039:46;;1961:132;;;;:::o;34042:666::-;34168:21;34206:1;34192:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34168:40;;34237:4;34219;34224:1;34219:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;34263:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34253:4;34258:1;34253:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;34298:62;34315:4;34330:15;;;;;;;;;;;34348:11;34298:8;:62::i;:::-;34399:15;;;;;;;;;;;:66;;;34480:11;34506:1;34550:4;34577;34613:15;34399:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34665:35;34682:11;34695:4;34665:35;;;;;;;:::i;:::-;;;;;;;;34042:666;;:::o;29044:126::-;29136:9;:18;;:26;29155:6;29136:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29044:126;;:::o;34716:513::-;34864:62;34881:4;34896:15;;;;;;;;;;;34914:11;34864:8;:62::i;:::-;34969:15;;;;;;;;;;;:31;;;35008:9;35041:4;35061:11;35087:1;35130;35173:7;:5;:7::i;:::-;35195:15;34969:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;34716:513;;:::o;2101:278::-;2187:7;2219:1;2215;:5;2222:12;2207:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2246:9;2262:1;2258;:5;;;;:::i;:::-;2246:17;;2370:1;2363:8;;;2101:278;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;793:6;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;1072:6;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;1360:6;1368;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;1782:6;1790;1798;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:401::-;2328:6;2336;2385:2;2373:9;2364:7;2360:23;2356:32;2353:2;;;2401:1;2398;2391:12;2353:2;2444:1;2469:53;2514:7;2505:6;2494:9;2490:22;2469:53;:::i;:::-;2459:63;;2415:117;2571:2;2597:50;2639:7;2630:6;2619:9;2615:22;2597:50;:::i;:::-;2587:60;;2542:115;2343:321;;;;;:::o;2670:407::-;2738:6;2746;2795:2;2783:9;2774:7;2770:23;2766:32;2763:2;;;2811:1;2808;2801:12;2763:2;2854:1;2879:53;2924:7;2915:6;2904:9;2900:22;2879:53;:::i;:::-;2869:63;;2825:117;2981:2;3007:53;3052:7;3043:6;3032:9;3028:22;3007:53;:::i;:::-;2997:63;;2952:118;2753:324;;;;;:::o;3083:256::-;3139:6;3188:2;3176:9;3167:7;3163:23;3159:32;3156:2;;;3204:1;3201;3194:12;3156:2;3247:1;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3218:114;3146:193;;;;:::o;3345:262::-;3404:6;3453:2;3441:9;3432:7;3428:23;3424:32;3421:2;;;3469:1;3466;3459:12;3421:2;3512:1;3537:53;3582:7;3573:6;3562:9;3558:22;3537:53;:::i;:::-;3527:63;;3483:117;3411:196;;;;:::o;3613:552::-;3690:6;3698;3706;3755:2;3743:9;3734:7;3730:23;3726:32;3723:2;;;3771:1;3768;3761:12;3723:2;3814:1;3839:53;3884:7;3875:6;3864:9;3860:22;3839:53;:::i;:::-;3829:63;;3785:117;3941:2;3967:53;4012:7;4003:6;3992:9;3988:22;3967:53;:::i;:::-;3957:63;;3912:118;4069:2;4095:53;4140:7;4131:6;4120:9;4116:22;4095:53;:::i;:::-;4085:63;;4040:118;3713:452;;;;;:::o;4171:596::-;4259:6;4267;4275;4324:2;4312:9;4303:7;4299:23;4295:32;4292:2;;;4340:1;4337;4330:12;4292:2;4383:1;4408:64;4464:7;4455:6;4444:9;4440:22;4408:64;:::i;:::-;4398:74;;4354:128;4521:2;4547:64;4603:7;4594:6;4583:9;4579:22;4547:64;:::i;:::-;4537:74;;4492:129;4660:2;4686:64;4742:7;4733:6;4722:9;4718:22;4686:64;:::i;:::-;4676:74;;4631:129;4282:485;;;;;:::o;4773:179::-;4842:10;4863:46;4905:3;4897:6;4863:46;:::i;:::-;4941:4;4936:3;4932:14;4918:28;;4853:99;;;;:::o;4958:142::-;5061:32;5087:5;5061:32;:::i;:::-;5056:3;5049:45;5039:61;;:::o;5106:108::-;5183:24;5201:5;5183:24;:::i;:::-;5178:3;5171:37;5161:53;;:::o;5220:118::-;5307:24;5325:5;5307:24;:::i;:::-;5302:3;5295:37;5285:53;;:::o;5374:732::-;5493:3;5522:54;5570:5;5522:54;:::i;:::-;5592:86;5671:6;5666:3;5592:86;:::i;:::-;5585:93;;5702:56;5752:5;5702:56;:::i;:::-;5781:7;5812:1;5797:284;5822:6;5819:1;5816:13;5797:284;;;5898:6;5892:13;5925:63;5984:3;5969:13;5925:63;:::i;:::-;5918:70;;6011:60;6064:6;6011:60;:::i;:::-;6001:70;;5857:224;5844:1;5841;5837:9;5832:14;;5797:284;;;5801:14;6097:3;6090:10;;5498:608;;;;;;;:::o;6112:109::-;6193:21;6208:5;6193:21;:::i;:::-;6188:3;6181:34;6171:50;;:::o;6227:185::-;6341:64;6399:5;6341:64;:::i;:::-;6336:3;6329:77;6319:93;;:::o;6418:147::-;6513:45;6552:5;6513:45;:::i;:::-;6508:3;6501:58;6491:74;;:::o;6571:364::-;6659:3;6687:39;6720:5;6687:39;:::i;:::-;6742:71;6806:6;6801:3;6742:71;:::i;:::-;6735:78;;6822:52;6867:6;6862:3;6855:4;6848:5;6844:16;6822:52;:::i;:::-;6899:29;6921:6;6899:29;:::i;:::-;6894:3;6890:39;6883:46;;6663:272;;;;;:::o;6941:366::-;7083:3;7104:67;7168:2;7163:3;7104:67;:::i;:::-;7097:74;;7180:93;7269:3;7180:93;:::i;:::-;7298:2;7293:3;7289:12;7282:19;;7087:220;;;:::o;7313:366::-;7455:3;7476:67;7540:2;7535:3;7476:67;:::i;:::-;7469:74;;7552:93;7641:3;7552:93;:::i;:::-;7670:2;7665:3;7661:12;7654:19;;7459:220;;;:::o;7685:366::-;7827:3;7848:67;7912:2;7907:3;7848:67;:::i;:::-;7841:74;;7924:93;8013:3;7924:93;:::i;:::-;8042:2;8037:3;8033:12;8026:19;;7831:220;;;:::o;8057:366::-;8199:3;8220:67;8284:2;8279:3;8220:67;:::i;:::-;8213:74;;8296:93;8385:3;8296:93;:::i;:::-;8414:2;8409:3;8405:12;8398:19;;8203:220;;;:::o;8429:366::-;8571:3;8592:67;8656:2;8651:3;8592:67;:::i;:::-;8585:74;;8668:93;8757:3;8668:93;:::i;:::-;8786:2;8781:3;8777:12;8770:19;;8575:220;;;:::o;8801:366::-;8943:3;8964:67;9028:2;9023:3;8964:67;:::i;:::-;8957:74;;9040:93;9129:3;9040:93;:::i;:::-;9158:2;9153:3;9149:12;9142:19;;8947:220;;;:::o;9173:366::-;9315:3;9336:67;9400:2;9395:3;9336:67;:::i;:::-;9329:74;;9412:93;9501:3;9412:93;:::i;:::-;9530:2;9525:3;9521:12;9514:19;;9319:220;;;:::o;9545:366::-;9687:3;9708:67;9772:2;9767:3;9708:67;:::i;:::-;9701:74;;9784:93;9873:3;9784:93;:::i;:::-;9902:2;9897:3;9893:12;9886:19;;9691:220;;;:::o;9917:366::-;10059:3;10080:67;10144:2;10139:3;10080:67;:::i;:::-;10073:74;;10156:93;10245:3;10156:93;:::i;:::-;10274:2;10269:3;10265:12;10258:19;;10063:220;;;:::o;10289:366::-;10431:3;10452:67;10516:2;10511:3;10452:67;:::i;:::-;10445:74;;10528:93;10617:3;10528:93;:::i;:::-;10646:2;10641:3;10637:12;10630:19;;10435:220;;;:::o;10661:366::-;10803:3;10824:67;10888:2;10883:3;10824:67;:::i;:::-;10817:74;;10900:93;10989:3;10900:93;:::i;:::-;11018:2;11013:3;11009:12;11002:19;;10807:220;;;:::o;11033:118::-;11120:24;11138:5;11120:24;:::i;:::-;11115:3;11108:37;11098:53;;:::o;11157:112::-;11240:22;11256:5;11240:22;:::i;:::-;11235:3;11228:35;11218:51;;:::o;11275:222::-;11368:4;11406:2;11395:9;11391:18;11383:26;;11419:71;11487:1;11476:9;11472:17;11463:6;11419:71;:::i;:::-;11373:124;;;;:::o;11503:254::-;11612:4;11650:2;11639:9;11635:18;11627:26;;11663:87;11747:1;11736:9;11732:17;11723:6;11663:87;:::i;:::-;11617:140;;;;:::o;11763:332::-;11884:4;11922:2;11911:9;11907:18;11899:26;;11935:71;12003:1;11992:9;11988:17;11979:6;11935:71;:::i;:::-;12016:72;12084:2;12073:9;12069:18;12060:6;12016:72;:::i;:::-;11889:206;;;;;:::o;12101:807::-;12350:4;12388:3;12377:9;12373:19;12365:27;;12402:71;12470:1;12459:9;12455:17;12446:6;12402:71;:::i;:::-;12483:72;12551:2;12540:9;12536:18;12527:6;12483:72;:::i;:::-;12565:80;12641:2;12630:9;12626:18;12617:6;12565:80;:::i;:::-;12655;12731:2;12720:9;12716:18;12707:6;12655:80;:::i;:::-;12745:73;12813:3;12802:9;12798:19;12789:6;12745:73;:::i;:::-;12828;12896:3;12885:9;12881:19;12872:6;12828:73;:::i;:::-;12355:553;;;;;;;;;:::o;12914:210::-;13001:4;13039:2;13028:9;13024:18;13016:26;;13052:65;13114:1;13103:9;13099:17;13090:6;13052:65;:::i;:::-;13006:118;;;;:::o;13130:276::-;13250:4;13288:2;13277:9;13273:18;13265:26;;13301:98;13396:1;13385:9;13381:17;13372:6;13301:98;:::i;:::-;13255:151;;;;:::o;13412:313::-;13525:4;13563:2;13552:9;13548:18;13540:26;;13612:9;13606:4;13602:20;13598:1;13587:9;13583:17;13576:47;13640:78;13713:4;13704:6;13640:78;:::i;:::-;13632:86;;13530:195;;;;:::o;13731:419::-;13897:4;13935:2;13924:9;13920:18;13912:26;;13984:9;13978:4;13974:20;13970:1;13959:9;13955:17;13948:47;14012:131;14138:4;14012:131;:::i;:::-;14004:139;;13902:248;;;:::o;14156:419::-;14322:4;14360:2;14349:9;14345:18;14337:26;;14409:9;14403:4;14399:20;14395:1;14384:9;14380:17;14373:47;14437:131;14563:4;14437:131;:::i;:::-;14429:139;;14327:248;;;:::o;14581:419::-;14747:4;14785:2;14774:9;14770:18;14762:26;;14834:9;14828:4;14824:20;14820:1;14809:9;14805:17;14798:47;14862:131;14988:4;14862:131;:::i;:::-;14854:139;;14752:248;;;:::o;15006:419::-;15172:4;15210:2;15199:9;15195:18;15187:26;;15259:9;15253:4;15249:20;15245:1;15234:9;15230:17;15223:47;15287:131;15413:4;15287:131;:::i;:::-;15279:139;;15177:248;;;:::o;15431:419::-;15597:4;15635:2;15624:9;15620:18;15612:26;;15684:9;15678:4;15674:20;15670:1;15659:9;15655:17;15648:47;15712:131;15838:4;15712:131;:::i;:::-;15704:139;;15602:248;;;:::o;15856:419::-;16022:4;16060:2;16049:9;16045:18;16037:26;;16109:9;16103:4;16099:20;16095:1;16084:9;16080:17;16073:47;16137:131;16263:4;16137:131;:::i;:::-;16129:139;;16027:248;;;:::o;16281:419::-;16447:4;16485:2;16474:9;16470:18;16462:26;;16534:9;16528:4;16524:20;16520:1;16509:9;16505:17;16498:47;16562:131;16688:4;16562:131;:::i;:::-;16554:139;;16452:248;;;:::o;16706:419::-;16872:4;16910:2;16899:9;16895:18;16887:26;;16959:9;16953:4;16949:20;16945:1;16934:9;16930:17;16923:47;16987:131;17113:4;16987:131;:::i;:::-;16979:139;;16877:248;;;:::o;17131:419::-;17297:4;17335:2;17324:9;17320:18;17312:26;;17384:9;17378:4;17374:20;17370:1;17359:9;17355:17;17348:47;17412:131;17538:4;17412:131;:::i;:::-;17404:139;;17302:248;;;:::o;17556:419::-;17722:4;17760:2;17749:9;17745:18;17737:26;;17809:9;17803:4;17799:20;17795:1;17784:9;17780:17;17773:47;17837:131;17963:4;17837:131;:::i;:::-;17829:139;;17727:248;;;:::o;17981:419::-;18147:4;18185:2;18174:9;18170:18;18162:26;;18234:9;18228:4;18224:20;18220:1;18209:9;18205:17;18198:47;18262:131;18388:4;18262:131;:::i;:::-;18254:139;;18152:248;;;:::o;18406:222::-;18499:4;18537:2;18526:9;18522:18;18514:26;;18550:71;18618:1;18607:9;18603:17;18594:6;18550:71;:::i;:::-;18504:124;;;;:::o;18634:483::-;18805:4;18843:2;18832:9;18828:18;18820:26;;18856:71;18924:1;18913:9;18909:17;18900:6;18856:71;:::i;:::-;18974:9;18968:4;18964:20;18959:2;18948:9;18944:18;18937:48;19002:108;19105:4;19096:6;19002:108;:::i;:::-;18994:116;;18810:307;;;;;:::o;19123:831::-;19386:4;19424:3;19413:9;19409:19;19401:27;;19438:71;19506:1;19495:9;19491:17;19482:6;19438:71;:::i;:::-;19519:80;19595:2;19584:9;19580:18;19571:6;19519:80;:::i;:::-;19646:9;19640:4;19636:20;19631:2;19620:9;19616:18;19609:48;19674:108;19777:4;19768:6;19674:108;:::i;:::-;19666:116;;19792:72;19860:2;19849:9;19845:18;19836:6;19792:72;:::i;:::-;19874:73;19942:3;19931:9;19927:19;19918:6;19874:73;:::i;:::-;19391:563;;;;;;;;:::o;19960:214::-;20049:4;20087:2;20076:9;20072:18;20064:26;;20100:67;20164:1;20153:9;20149:17;20140:6;20100:67;:::i;:::-;20054:120;;;;:::o;20180:132::-;20247:4;20270:3;20262:11;;20300:4;20295:3;20291:14;20283:22;;20252:60;;;:::o;20318:114::-;20385:6;20419:5;20413:12;20403:22;;20392:40;;;:::o;20438:99::-;20490:6;20524:5;20518:12;20508:22;;20497:40;;;:::o;20543:113::-;20613:4;20645;20640:3;20636:14;20628:22;;20618:38;;;:::o;20662:184::-;20761:11;20795:6;20790:3;20783:19;20835:4;20830:3;20826:14;20811:29;;20773:73;;;;:::o;20852:169::-;20936:11;20970:6;20965:3;20958:19;21010:4;21005:3;21001:14;20986:29;;20948:73;;;;:::o;21027:305::-;21067:3;21086:20;21104:1;21086:20;:::i;:::-;21081:25;;21120:20;21138:1;21120:20;:::i;:::-;21115:25;;21274:1;21206:66;21202:74;21199:1;21196:81;21193:2;;;21280:18;;:::i;:::-;21193:2;21324:1;21321;21317:9;21310:16;;21071:261;;;;:::o;21338:185::-;21378:1;21395:20;21413:1;21395:20;:::i;:::-;21390:25;;21429:20;21447:1;21429:20;:::i;:::-;21424:25;;21468:1;21458:2;;21473:18;;:::i;:::-;21458:2;21515:1;21512;21508:9;21503:14;;21380:143;;;;:::o;21529:348::-;21569:7;21592:20;21610:1;21592:20;:::i;:::-;21587:25;;21626:20;21644:1;21626:20;:::i;:::-;21621:25;;21814:1;21746:66;21742:74;21739:1;21736:81;21731:1;21724:9;21717:17;21713:105;21710:2;;;21821:18;;:::i;:::-;21710:2;21869:1;21866;21862:9;21851:20;;21577:300;;;;:::o;21883:191::-;21923:4;21943:20;21961:1;21943:20;:::i;:::-;21938:25;;21977:20;21995:1;21977:20;:::i;:::-;21972:25;;22016:1;22013;22010:8;22007:2;;;22021:18;;:::i;:::-;22007:2;22066:1;22063;22059:9;22051:17;;21928:146;;;;:::o;22080:96::-;22117:7;22146:24;22164:5;22146:24;:::i;:::-;22135:35;;22125:51;;;:::o;22182:104::-;22227:7;22256:24;22274:5;22256:24;:::i;:::-;22245:35;;22235:51;;;:::o;22292:90::-;22326:7;22369:5;22362:13;22355:21;22344:32;;22334:48;;;:::o;22388:126::-;22425:7;22465:42;22458:5;22454:54;22443:65;;22433:81;;;:::o;22520:77::-;22557:7;22586:5;22575:16;;22565:32;;;:::o;22603:86::-;22638:7;22678:4;22671:5;22667:16;22656:27;;22646:43;;;:::o;22695:180::-;22772:9;22805:64;22863:5;22805:64;:::i;:::-;22792:77;;22782:93;;;:::o;22881:140::-;22958:9;22991:24;23009:5;22991:24;:::i;:::-;22978:37;;22968:53;;;:::o;23027:121::-;23085:9;23118:24;23136:5;23118:24;:::i;:::-;23105:37;;23095:53;;;:::o;23154:307::-;23222:1;23232:113;23246:6;23243:1;23240:13;23232:113;;;23331:1;23326:3;23322:11;23316:18;23312:1;23307:3;23303:11;23296:39;23268:2;23265:1;23261:10;23256:15;;23232:113;;;23363:6;23360:1;23357:13;23354:2;;;23443:1;23434:6;23429:3;23425:16;23418:27;23354:2;23203:258;;;;:::o;23467:320::-;23511:6;23548:1;23542:4;23538:12;23528:22;;23595:1;23589:4;23585:12;23616:18;23606:2;;23672:4;23664:6;23660:17;23650:27;;23606:2;23734;23726:6;23723:14;23703:18;23700:38;23697:2;;;23753:18;;:::i;:::-;23697:2;23518:269;;;;:::o;23793:180::-;23841:77;23838:1;23831:88;23938:4;23935:1;23928:15;23962:4;23959:1;23952:15;23979:180;24027:77;24024:1;24017:88;24124:4;24121:1;24114:15;24148:4;24145:1;24138:15;24165:180;24213:77;24210:1;24203:88;24310:4;24307:1;24300:15;24334:4;24331:1;24324:15;24351:102;24392:6;24443:2;24439:7;24434:2;24427:5;24423:14;24419:28;24409:38;;24399:54;;;:::o;24459:222::-;24599:34;24595:1;24587:6;24583:14;24576:58;24668:5;24663:2;24655:6;24651:15;24644:30;24565:116;:::o;24687:167::-;24827:19;24823:1;24815:6;24811:14;24804:43;24793:61;:::o;24860:250::-;25000:34;24996:1;24988:6;24984:14;24977:58;25069:33;25064:2;25056:6;25052:15;25045:58;24966:144;:::o;25116:225::-;25256:34;25252:1;25244:6;25240:14;25233:58;25325:8;25320:2;25312:6;25308:15;25301:33;25222:119;:::o;25347:221::-;25487:34;25483:1;25475:6;25471:14;25464:58;25556:4;25551:2;25543:6;25539:15;25532:29;25453:115;:::o;25574:177::-;25714:29;25710:1;25702:6;25698:14;25691:53;25680:71;:::o;25757:169::-;25897:21;25893:1;25885:6;25881:14;25874:45;25863:63;:::o;25932:220::-;26072:34;26068:1;26060:6;26056:14;26049:58;26141:3;26136:2;26128:6;26124:15;26117:28;26038:114;:::o;26158:182::-;26298:34;26294:1;26286:6;26282:14;26275:58;26264:76;:::o;26346:224::-;26486:34;26482:1;26474:6;26470:14;26463:58;26555:7;26550:2;26542:6;26538:15;26531:32;26452:118;:::o;26576:223::-;26716:34;26712:1;26704:6;26700:14;26693:58;26785:6;26780:2;26772:6;26768:15;26761:31;26682:117;:::o;26805:122::-;26878:24;26896:5;26878:24;:::i;:::-;26871:5;26868:35;26858:2;;26917:1;26914;26907:12;26858:2;26848:79;:::o;26933:116::-;27003:21;27018:5;27003:21;:::i;:::-;26996:5;26993:32;26983:2;;27039:1;27036;27029:12;26983:2;26973:76;:::o;27055:122::-;27128:24;27146:5;27128:24;:::i;:::-;27121:5;27118:35;27108:2;;27167:1;27164;27157:12;27108:2;27098:79;:::o

Swarm Source

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