ETH Price: $3,332.60 (-0.71%)

Token

The Current Thing (The Current Thing)
 

Overview

Max Total Supply

1,000,000,000,000 The Current Thing

Holders

6

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
100,000,000,000 The Current Thing

Value
$0.00
0xf58700882dcbb5affe2d0435d7d42a893d555bdc
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:
V

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

/**
 *Submitted for verification at BscScan.com on 2021-12-22
*/

// 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 _previousOwner;
    uint256 private _lockTime;

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

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

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

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

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

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  V is Context,IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "The Current Thing";
    string private _symbol = "The Current Thing";
    uint8 private _decimals = 0;

    address payable public marketingWalletAddress = payable(0x3645Fed63Bb8440995f6eBC187BDbd438615f7fb); // Marketing Address
    address payable public teamWalletAddress = payable(0x3645Fed63Bb8440995f6eBC187BDbd438615f7fb); // Team Address
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isMarketPair;

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

    uint256 public _liquidityShare = 0;
    uint256 public _marketingShare = 8;
    uint256 public _teamShare = 0;

    uint256 public _totalTaxIfBuying = 3;
    uint256 public _totalTaxIfSelling = 4;
    uint256 public _totalDistributionShares = 7;

    uint256 private _totalSupply = 1000000000000 * 10**0* 10**0 * 10**_decimals;
    uint256 public _maxTxAmount = 500000000000 * 10**0 * 10**0* 10**_decimals; 
    uint256 public _walletMax = 1000000000000 * 10**0 * 10**0* 10**_decimals;
    uint256 private minimumTokensBeforeSwap = 100000000 * 10**0* 10**_decimals; 

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

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

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

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

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        
        _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 setSellTaxes(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 setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWalletAddress = payable(newAddress);
    }

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

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

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

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

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

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

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

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

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

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }            

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

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

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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","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":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"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":"setSellTaxes","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":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","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":[{"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":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280601181526020017f5468652043757272656e74205468696e67000000000000000000000000000000815250600390805190602001906200005192919062000bdf565b506040518060400160405280601181526020017f5468652043757272656e74205468696e67000000000000000000000000000000815250600490805190602001906200009f92919062000bdf565b506000600560006101000a81548160ff021916908360ff160217905550733645fed63bb8440995f6ebc187bdbd438615f7fb600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733645fed63bb8440995f6ebc187bdbd438615f7fb600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506000600d556000600e556000600f55600060105560006011556000601255600060135560086014556000601555600360165560046017556007601855600560009054906101000a900460ff16600a620001f8919062000e50565b64e8d4a510006200020a919062000f8d565b601955600560009054906101000a900460ff16600a6200022b919062000e50565b64746a5288006200023d919062000f8d565b601a55600560009054906101000a900460ff16600a6200025e919062000e50565b64e8d4a5100062000270919062000f8d565b601b55600560009054906101000a900460ff16600a62000291919062000e50565b6305f5e100620002a2919062000f8d565b601c556001601e60156101000a81548160ff0219169083151502179055506000601e60166101000a81548160ff0219169083151502179055506001601e60176101000a81548160ff0219169083151502179055503480156200030357600080fd5b5060006200031662000b4b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041457600080fd5b505afa15801562000429573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044f919062000ca6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004b257600080fd5b505afa158015620004c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ed919062000ca6565b6040518363ffffffff1660e01b81526004016200050c92919062000d1b565b602060405180830381600087803b1580156200052757600080fd5b505af11580156200053c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000562919062000ca6565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601954600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600960006200069e62000b5360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000780600f546200076c600e54600d5462000b7c60201b62002dfd1790919060201c565b62000b7c60201b62002dfd1790919060201c565b601681905550620007bf601254620007ab60115460105462000b7c60201b62002dfd1790919060201c565b62000b7c60201b62002dfd1790919060201c565b601781905550620007fe601554620007ea60145460135462000b7c60201b62002dfd1790919060201c565b62000b7c60201b62002dfd1790919060201c565b6018819055506001600a60006200081a62000b5360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200095362000b5360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506019546007600062000a8d62000b4b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000adb62000b4b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60195460405162000b3c919062000d6a565b60405180910390a3506200111d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000b8d919062000d98565b90508381101562000bd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bcc9062000d48565b60405180910390fd5b8091505092915050565b82805462000bed9062001039565b90600052602060002090601f01602090048101928262000c11576000855562000c5d565b82601f1062000c2c57805160ff191683800117855562000c5d565b8280016001018555821562000c5d579182015b8281111562000c5c57825182559160200191906001019062000c3f565b5b50905062000c6c919062000c70565b5090565b5b8082111562000c8b57600081600090555060010162000c71565b5090565b60008151905062000ca08162001103565b92915050565b60006020828403121562000cb957600080fd5b600062000cc98482850162000c8f565b91505092915050565b62000cdd8162000fee565b82525050565b600062000cf2601b8362000d87565b915062000cff82620010da565b602082019050919050565b62000d158162001022565b82525050565b600060408201905062000d32600083018562000cd2565b62000d41602083018462000cd2565b9392505050565b6000602082019050818103600083015262000d638162000ce3565b9050919050565b600060208201905062000d81600083018462000d0a565b92915050565b600082825260208201905092915050565b600062000da58262001022565b915062000db28362001022565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000dea5762000de96200106f565b5b828201905092915050565b6000808291508390505b600185111562000e475780860481111562000e1f5762000e1e6200106f565b5b600185161562000e2f5780820291505b808102905062000e3f85620010cd565b945062000dff565b94509492505050565b600062000e5d8262001022565b915062000e6a836200102c565b925062000e997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ea1565b905092915050565b60008262000eb3576001905062000f86565b8162000ec3576000905062000f86565b816001811462000edc576002811462000ee75762000f1d565b600191505062000f86565b60ff84111562000efc5762000efb6200106f565b5b8360020a91508482111562000f165762000f156200106f565b5b5062000f86565b5060208310610133831016604e8410600b841016171562000f575782820a90508381111562000f515762000f506200106f565b5b62000f86565b62000f66848484600162000df5565b9250905081840481111562000f805762000f7f6200106f565b5b81810290505b9392505050565b600062000f9a8262001022565b915062000fa78362001022565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000fe35762000fe26200106f565b5b828202905092915050565b600062000ffb8262001002565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200105257607f821691505b602082108114156200106957620010686200109e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6200110e8162000fee565b81146200111a57600080fd5b50565b60805160601c61516362001143600039600081816113f9015261142501526151636000f3fe6080604052600436106103b15760003560e01c80638b42507f116101e7578063c816841b1161010d578063dd62ed3e116100a0578063f1d5f5171161006f578063f1d5f51714610e0f578063f2fde38b14610e38578063f84ba65d14610e61578063f872858a14610e8a576103b8565b8063dd62ed3e14610d55578063ec28438a14610d92578063ef422a1814610dbb578063f0cd1dac14610de4576103b8565b8063d158272d116100dc578063d158272d14610cab578063da00097d14610cd6578063dc44b6a014610d01578063dd46706414610d2c576103b8565b8063c816841b14610bed578063c860795214610c18578063c867d60b14610c43578063cab0347114610c80576103b8565b8063a5d69d1f11610185578063c2d4640e11610154578063c2d4640e14610b45578063c469b6dd14610b6e578063c49b9a8014610b99578063c5d2418914610bc2576103b8565b8063a5d69d1f14610a9d578063a69df4b514610ac6578063a83f53a714610add578063a9059cbb14610b08576103b8565b806395d89b41116101c157806395d89b41146109df578063a073d37f14610a0a578063a08e671f14610a35578063a457c2d714610a60576103b8565b80638b42507f146109605780638da5cb5b1461099d578063914eb66a146109c8576103b8565b80633b97084a116102d7578063602bc62b1161026a578063807c2d9c11610239578063807c2d9c146108b657806382eefb43146108e1578063844d591c1461090c57806388790a6814610935576103b8565b8063602bc62b146107f857806361a23c691461082357806370a082311461084e5780637d1db4a51461088b576103b8565b80635342acb4116102a65780635342acb414610728578063557ed1ba1461076557806357a5802f146107905780635881f3ef146107bb576103b8565b80633b97084a1461066e5780633ecad271146106975780634a74bb02146106d45780634cb80fd5146106ff576103b8565b80632198cf6c1161034f5780632b112e491161031e5780632b112e49146105b25780632c4b2334146105dd578063313ce567146106065780633950935114610631576103b8565b80632198cf6c146104f857806323b872dd146105215780632563ae831461055e57806327c8f83514610587576103b8565b80631245e3471161038b5780631245e3471461044e5780631694505e1461047957806318160ddd146104a45780631870517a146104cf576103b8565b806306fdde03146103bd57806308733214146103e8578063095ea7b314610411576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610eb5565b6040516103df919061485c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190614420565b610f47565b005b34801561041d57600080fd5b5061043860048036038101906104339190614392565b611027565b6040516104459190614826565b60405180910390f35b34801561045a57600080fd5b50610463611045565b6040516104709190614781565b60405180910390f35b34801561048557600080fd5b5061048e61106b565b60405161049b9190614841565b60405180910390f35b3480156104b057600080fd5b506104b9611091565b6040516104c691906149de565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190614420565b61109b565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614356565b61117b565b005b34801561052d57600080fd5b5061054860048036038101906105439190614307565b61126b565b6040516105559190614826565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906143ce565b611345565b005b34801561059357600080fd5b5061059c6113f7565b6040516105a99190614766565b60405180910390f35b3480156105be57600080fd5b506105c761141b565b6040516105d491906149de565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190614279565b61145f565b005b34801561061257600080fd5b5061061b611538565b6040516106289190614a83565b60405180910390f35b34801561063d57600080fd5b5061065860048036038101906106539190614392565b61154f565b6040516106659190614826565b60405180910390f35b34801561067a57600080fd5b50610695600480360381019061069091906143f7565b611602565b005b3480156106a357600080fd5b506106be60048036038101906106b99190614279565b6116a1565b6040516106cb9190614826565b60405180910390f35b3480156106e057600080fd5b506106e96116c1565b6040516106f69190614826565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614279565b6116d4565b005b34801561073457600080fd5b5061074f600480360381019061074a9190614279565b6117ad565b60405161075c9190614826565b60405180910390f35b34801561077157600080fd5b5061077a6117cd565b60405161078791906149de565b60405180910390f35b34801561079c57600080fd5b506107a56117d5565b6040516107b291906149de565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190614279565b6117db565b6040516107ef9190614766565b60405180910390f35b34801561080457600080fd5b5061080d611d39565b60405161081a91906149de565b60405180910390f35b34801561082f57600080fd5b50610838611d43565b60405161084591906149de565b60405180910390f35b34801561085a57600080fd5b5061087560048036038101906108709190614279565b611d49565b60405161088291906149de565b60405180910390f35b34801561089757600080fd5b506108a0611d92565b6040516108ad91906149de565b60405180910390f35b3480156108c257600080fd5b506108cb611d98565b6040516108d891906149de565b60405180910390f35b3480156108ed57600080fd5b506108f6611d9e565b60405161090391906149de565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190614356565b611da4565b005b34801561094157600080fd5b5061094a611e94565b60405161095791906149de565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190614279565b611e9a565b6040516109949190614826565b60405180910390f35b3480156109a957600080fd5b506109b2611eba565b6040516109bf9190614766565b60405180910390f35b3480156109d457600080fd5b506109dd611ee3565b005b3480156109eb57600080fd5b506109f4612036565b604051610a01919061485c565b60405180910390f35b348015610a1657600080fd5b50610a1f6120c8565b604051610a2c91906149de565b60405180910390f35b348015610a4157600080fd5b50610a4a6120d2565b604051610a5791906149de565b60405180910390f35b348015610a6c57600080fd5b50610a876004803603810190610a829190614392565b6120d8565b604051610a949190614826565b60405180910390f35b348015610aa957600080fd5b50610ac46004803603810190610abf91906143ce565b6121a5565b005b348015610ad257600080fd5b50610adb612257565b005b348015610ae957600080fd5b50610af261242b565b604051610aff91906149de565b60405180910390f35b348015610b1457600080fd5b50610b2f6004803603810190610b2a9190614392565b612431565b604051610b3c9190614826565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b679190614420565b612450565b005b348015610b7a57600080fd5b50610b83612530565b604051610b9091906149de565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb91906143ce565b612536565b005b348015610bce57600080fd5b50610bd761261f565b604051610be491906149de565b60405180910390f35b348015610bf957600080fd5b50610c02612625565b604051610c0f9190614766565b60405180910390f35b348015610c2457600080fd5b50610c2d61264b565b604051610c3a91906149de565b60405180910390f35b348015610c4f57600080fd5b50610c6a6004803603810190610c659190614279565b612651565b604051610c779190614826565b60405180910390f35b348015610c8c57600080fd5b50610c95612671565b604051610ca291906149de565b60405180910390f35b348015610cb757600080fd5b50610cc0612677565b604051610ccd9190614781565b60405180910390f35b348015610ce257600080fd5b50610ceb61269d565b604051610cf89190614826565b60405180910390f35b348015610d0d57600080fd5b50610d166126b0565b604051610d2391906149de565b60405180910390f35b348015610d3857600080fd5b50610d536004803603810190610d4e91906143f7565b6126b6565b005b348015610d6157600080fd5b50610d7c6004803603810190610d7791906142cb565b61287d565b604051610d8991906149de565b60405180910390f35b348015610d9e57600080fd5b50610db96004803603810190610db491906143f7565b612904565b005b348015610dc757600080fd5b50610de26004803603810190610ddd9190614356565b6129a3565b005b348015610df057600080fd5b50610df9612a93565b604051610e0691906149de565b60405180910390f35b348015610e1b57600080fd5b50610e366004803603810190610e3191906143f7565b612a99565b005b348015610e4457600080fd5b50610e5f6004803603810190610e5a9190614279565b612b38565b005b348015610e6d57600080fd5b50610e886004803603810190610e839190614356565b612cfa565b005b348015610e9657600080fd5b50610e9f612dea565b604051610eac9190614826565b60405180910390f35b606060038054610ec490614cd8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef090614cd8565b8015610f3d5780601f10610f1257610100808354040283529160200191610f3d565b820191906000526020600020905b815481529060010190602001808311610f2057829003601f168201915b5050505050905090565b610f4f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd39061493e565b60405180910390fd5b82601081905550816011819055508060128190555061101c60125461100e601154601054612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601781905550505050565b600061103b611034612e5b565b8484612e63565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601954905090565b6110a3612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611130576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111279061493e565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611170600f54611162600e54600d54612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601681905550505050565b611183612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112079061493e565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061127884848461302e565b5061133a84611285612e5b565b611335856040518060600160405280602881526020016150e160289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112eb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b600190509392505050565b61134d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d19061493e565b60405180910390fd5b80601e60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061145a6114497f0000000000000000000000000000000000000000000000000000000000000000611d49565b60195461367790919063ffffffff16565b905090565b611467612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb9061493e565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b60006115f861155c612e5b565b846115f3856008600061156d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b612e63565b6001905092915050565b61160a612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e9061493e565b60405180910390fd5b80601c8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b601e60159054906101000a900460ff1681565b6116dc612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611769576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117609061493e565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60135481565b60006117e5612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118699061493e565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118bd57600080fd5b505afa1580156118d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f591906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561195757600080fd5b505afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f91906142a2565b6040518363ffffffff1660e01b81526004016119ac92919061479c565b60206040518083038186803b1580156119c457600080fd5b505afa1580156119d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fc91906142a2565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbd578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7957600080fd5b505afa158015611a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab191906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1357600080fd5b505afa158015611b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4b91906142a2565b6040518363ffffffff1660e01b8152600401611b6892919061479c565b602060405180830381600087803b158015611b8257600080fd5b505af1158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba91906142a2565b91505b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600254905090565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b601b5481565b60175481565b611dac612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e309061493e565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611eeb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f9061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606004805461204590614cd8565b80601f016020809104026020016040519081016040528092919081815260200182805461207190614cd8565b80156120be5780601f10612093576101008083540402835291602001916120be565b820191906000526020600020905b8154815290600101906020018083116120a157829003601f168201915b5050505050905090565b6000601c54905090565b60185481565b600061219b6120e5612e5b565b8461219685604051806060016040528060258152602001615109602591396008600061210f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b6001905092915050565b6121ad612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461223a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122319061493e565b60405180910390fd5b80601e60166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122de906149be565b60405180910390fd5b600254421161232b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123229061499e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b600061244561243e612e5b565b848461302e565b506001905092915050565b612458612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc9061493e565b60405180910390fd5b826013819055508160148190555080601581905550612525601554612517601454601354612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601881905550505050565b600f5481565b61253e612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c29061493e565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126149190614826565b60405180910390a150565b600e5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60125481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60169054906101000a900460ff1681565b600d5481565b6126be612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461274b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127429061493e565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426127f99190614af3565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61290c612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612999576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129909061493e565b60405180910390fd5b80601a8190555050565b6129ab612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2f9061493e565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b612aa1612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b259061493e565b60405180910390fd5b80601b8190555050565b612b40612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc49061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c349061489e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d02612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d869061493e565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60179054906101000a900460ff1681565b6000808284612e0c9190614af3565b905083811015612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e48906148de565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eca9061497e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3a906148be565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161302191906149de565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561309f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130969061495e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561310f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131069061487e565b60405180910390fd5b601e60149054906101000a900460ff16156131365761312f8484846136c1565b905061360c565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131da5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561322557601a54821115613224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321b906148fe565b60405180910390fd5b5b600061323030611d49565b90506000601c5482101590508080156132565750601e60149054906101000a900460ff16155b80156132ac5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132c45750601e60159054906101000a900460ff165b156132ee57601e60169054906101000a900460ff16156132e457601c5491505b6132ed82613894565b5b613377846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061345d5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6134715761346c878787613a85565b613473565b845b9050601e60179054906101000a900460ff1680156134db5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561350a57601b546134fe826134f089611d49565b612dfd90919063ffffffff16565b111561350957600080fd5b5b61355c81600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135fc91906149de565b60405180910390a3600193505050505b9392505050565b600083831115829061365b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613652919061485c565b60405180910390fd5b506000838561366a9190614bd4565b9050809150509392505050565b60006136b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613613565b905092915050565b600061374c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137e182600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161388191906149de565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff02191690831515021790555060006138ed60026138df6018546138d160135487613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b90506000613904828461367790919063ffffffff16565b905061390f81613d71565b6000479050600061394061392f6002601354613d2790919063ffffffff16565b60185461367790919063ffffffff16565b9050600061397e60026139708461396260135488613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b905060006139a98361399b60155487613cac90919063ffffffff16565b613d2790919063ffffffff16565b905060006139d2826139c4858861367790919063ffffffff16565b61367790919063ffffffff16565b90506000811115613a0a57613a09600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261406e565b5b6000821115613a4057613a3f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361406e565b5b600083118015613a505750600087115b15613a6057613a5f87846140b9565b5b505050505050506000601e60146101000a81548160ff02191690831515021790555050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b0d57613b066064613af860165486613cac90919063ffffffff16565b613d2790919063ffffffff16565b9050613b8b565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b8a57613b876064613b7960175486613cac90919063ffffffff16565b613d2790919063ffffffff16565b90505b5b6000811115613c8f57613be681600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c8691906149de565b60405180910390a35b613ca2818461367790919063ffffffff16565b9150509392505050565b600080831415613cbf5760009050613d21565b60008284613ccd9190614b7a565b9050828482613cdc9190614b49565b14613d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d139061491e565b60405180910390fd5b809150505b92915050565b6000613d6983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506141ad565b905092915050565b6000600267ffffffffffffffff811115613db4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613de25781602001602082028036833780820191505090505b5090503081600081518110613e20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ec257600080fd5b505afa158015613ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efa91906142a2565b81600181518110613f34577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f9b30601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fff959493929190614a29565b600060405180830381600087803b15801561401957600080fd5b505af115801561402d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516140629291906149f9565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156140b4573d6000803e3d6000fd5b505050565b6140e630601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614132611eba565b426040518863ffffffff1660e01b8152600401614154969594939291906147c5565b6060604051808303818588803b15801561416d57600080fd5b505af1158015614181573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141a6919061446f565b5050505050565b600080831182906141f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141eb919061485c565b60405180910390fd5b50600083856142039190614b49565b9050809150509392505050565b60008135905061421f8161509b565b92915050565b6000815190506142348161509b565b92915050565b600081359050614249816150b2565b92915050565b60008135905061425e816150c9565b92915050565b600081519050614273816150c9565b92915050565b60006020828403121561428b57600080fd5b600061429984828501614210565b91505092915050565b6000602082840312156142b457600080fd5b60006142c284828501614225565b91505092915050565b600080604083850312156142de57600080fd5b60006142ec85828601614210565b92505060206142fd85828601614210565b9150509250929050565b60008060006060848603121561431c57600080fd5b600061432a86828701614210565b935050602061433b86828701614210565b925050604061434c8682870161424f565b9150509250925092565b6000806040838503121561436957600080fd5b600061437785828601614210565b92505060206143888582860161423a565b9150509250929050565b600080604083850312156143a557600080fd5b60006143b385828601614210565b92505060206143c48582860161424f565b9150509250929050565b6000602082840312156143e057600080fd5b60006143ee8482850161423a565b91505092915050565b60006020828403121561440957600080fd5b60006144178482850161424f565b91505092915050565b60008060006060848603121561443557600080fd5b60006144438682870161424f565b93505060206144548682870161424f565b92505060406144658682870161424f565b9150509250925092565b60008060006060848603121561448457600080fd5b600061449286828701614264565b93505060206144a386828701614264565b92505060406144b486828701614264565b9150509250925092565b60006144ca83836144e5565b60208301905092915050565b6144df81614c1a565b82525050565b6144ee81614c08565b82525050565b6144fd81614c08565b82525050565b600061450e82614aae565b6145188185614ad1565b935061452383614a9e565b8060005b8381101561455457815161453b88826144be565b975061454683614ac4565b925050600181019050614527565b5085935050505092915050565b61456a81614c2c565b82525050565b61457981614c6f565b82525050565b61458881614c93565b82525050565b600061459982614ab9565b6145a38185614ae2565b93506145b3818560208601614ca5565b6145bc81614d97565b840191505092915050565b60006145d4602383614ae2565b91506145df82614da8565b604082019050919050565b60006145f7602683614ae2565b915061460282614df7565b604082019050919050565b600061461a602283614ae2565b915061462582614e46565b604082019050919050565b600061463d601b83614ae2565b915061464882614e95565b602082019050919050565b6000614660602883614ae2565b915061466b82614ebe565b604082019050919050565b6000614683602183614ae2565b915061468e82614f0d565b604082019050919050565b60006146a6602083614ae2565b91506146b182614f5c565b602082019050919050565b60006146c9602583614ae2565b91506146d482614f85565b604082019050919050565b60006146ec602483614ae2565b91506146f782614fd4565b604082019050919050565b600061470f601f83614ae2565b915061471a82615023565b602082019050919050565b6000614732602383614ae2565b915061473d8261504c565b604082019050919050565b61475181614c58565b82525050565b61476081614c62565b82525050565b600060208201905061477b60008301846144f4565b92915050565b600060208201905061479660008301846144d6565b92915050565b60006040820190506147b160008301856144f4565b6147be60208301846144f4565b9392505050565b600060c0820190506147da60008301896144f4565b6147e76020830188614748565b6147f4604083018761457f565b614801606083018661457f565b61480e60808301856144f4565b61481b60a0830184614748565b979650505050505050565b600060208201905061483b6000830184614561565b92915050565b60006020820190506148566000830184614570565b92915050565b60006020820190508181036000830152614876818461458e565b905092915050565b60006020820190508181036000830152614897816145c7565b9050919050565b600060208201905081810360008301526148b7816145ea565b9050919050565b600060208201905081810360008301526148d78161460d565b9050919050565b600060208201905081810360008301526148f781614630565b9050919050565b6000602082019050818103600083015261491781614653565b9050919050565b6000602082019050818103600083015261493781614676565b9050919050565b6000602082019050818103600083015261495781614699565b9050919050565b60006020820190508181036000830152614977816146bc565b9050919050565b60006020820190508181036000830152614997816146df565b9050919050565b600060208201905081810360008301526149b781614702565b9050919050565b600060208201905081810360008301526149d781614725565b9050919050565b60006020820190506149f36000830184614748565b92915050565b6000604082019050614a0e6000830185614748565b8181036020830152614a208184614503565b90509392505050565b600060a082019050614a3e6000830188614748565b614a4b602083018761457f565b8181036040830152614a5d8186614503565b9050614a6c60608301856144f4565b614a796080830184614748565b9695505050505050565b6000602082019050614a986000830184614757565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614afe82614c58565b9150614b0983614c58565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b3e57614b3d614d0a565b5b828201905092915050565b6000614b5482614c58565b9150614b5f83614c58565b925082614b6f57614b6e614d39565b5b828204905092915050565b6000614b8582614c58565b9150614b9083614c58565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bc957614bc8614d0a565b5b828202905092915050565b6000614bdf82614c58565b9150614bea83614c58565b925082821015614bfd57614bfc614d0a565b5b828203905092915050565b6000614c1382614c38565b9050919050565b6000614c2582614c38565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c7a82614c81565b9050919050565b6000614c8c82614c38565b9050919050565b6000614c9e82614c58565b9050919050565b60005b83811015614cc3578082015181840152602081019050614ca8565b83811115614cd2576000848401525b50505050565b60006002820490506001821680614cf057607f821691505b60208210811415614d0457614d03614d68565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b6150a481614c08565b81146150af57600080fd5b50565b6150bb81614c2c565b81146150c657600080fd5b50565b6150d281614c58565b81146150dd57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122020375c7aad6c19c04cacd7a4cac537770c8ae4ce97e9f6865e0b9752863125aa64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106103b15760003560e01c80638b42507f116101e7578063c816841b1161010d578063dd62ed3e116100a0578063f1d5f5171161006f578063f1d5f51714610e0f578063f2fde38b14610e38578063f84ba65d14610e61578063f872858a14610e8a576103b8565b8063dd62ed3e14610d55578063ec28438a14610d92578063ef422a1814610dbb578063f0cd1dac14610de4576103b8565b8063d158272d116100dc578063d158272d14610cab578063da00097d14610cd6578063dc44b6a014610d01578063dd46706414610d2c576103b8565b8063c816841b14610bed578063c860795214610c18578063c867d60b14610c43578063cab0347114610c80576103b8565b8063a5d69d1f11610185578063c2d4640e11610154578063c2d4640e14610b45578063c469b6dd14610b6e578063c49b9a8014610b99578063c5d2418914610bc2576103b8565b8063a5d69d1f14610a9d578063a69df4b514610ac6578063a83f53a714610add578063a9059cbb14610b08576103b8565b806395d89b41116101c157806395d89b41146109df578063a073d37f14610a0a578063a08e671f14610a35578063a457c2d714610a60576103b8565b80638b42507f146109605780638da5cb5b1461099d578063914eb66a146109c8576103b8565b80633b97084a116102d7578063602bc62b1161026a578063807c2d9c11610239578063807c2d9c146108b657806382eefb43146108e1578063844d591c1461090c57806388790a6814610935576103b8565b8063602bc62b146107f857806361a23c691461082357806370a082311461084e5780637d1db4a51461088b576103b8565b80635342acb4116102a65780635342acb414610728578063557ed1ba1461076557806357a5802f146107905780635881f3ef146107bb576103b8565b80633b97084a1461066e5780633ecad271146106975780634a74bb02146106d45780634cb80fd5146106ff576103b8565b80632198cf6c1161034f5780632b112e491161031e5780632b112e49146105b25780632c4b2334146105dd578063313ce567146106065780633950935114610631576103b8565b80632198cf6c146104f857806323b872dd146105215780632563ae831461055e57806327c8f83514610587576103b8565b80631245e3471161038b5780631245e3471461044e5780631694505e1461047957806318160ddd146104a45780631870517a146104cf576103b8565b806306fdde03146103bd57806308733214146103e8578063095ea7b314610411576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610eb5565b6040516103df919061485c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190614420565b610f47565b005b34801561041d57600080fd5b5061043860048036038101906104339190614392565b611027565b6040516104459190614826565b60405180910390f35b34801561045a57600080fd5b50610463611045565b6040516104709190614781565b60405180910390f35b34801561048557600080fd5b5061048e61106b565b60405161049b9190614841565b60405180910390f35b3480156104b057600080fd5b506104b9611091565b6040516104c691906149de565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190614420565b61109b565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614356565b61117b565b005b34801561052d57600080fd5b5061054860048036038101906105439190614307565b61126b565b6040516105559190614826565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906143ce565b611345565b005b34801561059357600080fd5b5061059c6113f7565b6040516105a99190614766565b60405180910390f35b3480156105be57600080fd5b506105c761141b565b6040516105d491906149de565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190614279565b61145f565b005b34801561061257600080fd5b5061061b611538565b6040516106289190614a83565b60405180910390f35b34801561063d57600080fd5b5061065860048036038101906106539190614392565b61154f565b6040516106659190614826565b60405180910390f35b34801561067a57600080fd5b50610695600480360381019061069091906143f7565b611602565b005b3480156106a357600080fd5b506106be60048036038101906106b99190614279565b6116a1565b6040516106cb9190614826565b60405180910390f35b3480156106e057600080fd5b506106e96116c1565b6040516106f69190614826565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614279565b6116d4565b005b34801561073457600080fd5b5061074f600480360381019061074a9190614279565b6117ad565b60405161075c9190614826565b60405180910390f35b34801561077157600080fd5b5061077a6117cd565b60405161078791906149de565b60405180910390f35b34801561079c57600080fd5b506107a56117d5565b6040516107b291906149de565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190614279565b6117db565b6040516107ef9190614766565b60405180910390f35b34801561080457600080fd5b5061080d611d39565b60405161081a91906149de565b60405180910390f35b34801561082f57600080fd5b50610838611d43565b60405161084591906149de565b60405180910390f35b34801561085a57600080fd5b5061087560048036038101906108709190614279565b611d49565b60405161088291906149de565b60405180910390f35b34801561089757600080fd5b506108a0611d92565b6040516108ad91906149de565b60405180910390f35b3480156108c257600080fd5b506108cb611d98565b6040516108d891906149de565b60405180910390f35b3480156108ed57600080fd5b506108f6611d9e565b60405161090391906149de565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190614356565b611da4565b005b34801561094157600080fd5b5061094a611e94565b60405161095791906149de565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190614279565b611e9a565b6040516109949190614826565b60405180910390f35b3480156109a957600080fd5b506109b2611eba565b6040516109bf9190614766565b60405180910390f35b3480156109d457600080fd5b506109dd611ee3565b005b3480156109eb57600080fd5b506109f4612036565b604051610a01919061485c565b60405180910390f35b348015610a1657600080fd5b50610a1f6120c8565b604051610a2c91906149de565b60405180910390f35b348015610a4157600080fd5b50610a4a6120d2565b604051610a5791906149de565b60405180910390f35b348015610a6c57600080fd5b50610a876004803603810190610a829190614392565b6120d8565b604051610a949190614826565b60405180910390f35b348015610aa957600080fd5b50610ac46004803603810190610abf91906143ce565b6121a5565b005b348015610ad257600080fd5b50610adb612257565b005b348015610ae957600080fd5b50610af261242b565b604051610aff91906149de565b60405180910390f35b348015610b1457600080fd5b50610b2f6004803603810190610b2a9190614392565b612431565b604051610b3c9190614826565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b679190614420565b612450565b005b348015610b7a57600080fd5b50610b83612530565b604051610b9091906149de565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb91906143ce565b612536565b005b348015610bce57600080fd5b50610bd761261f565b604051610be491906149de565b60405180910390f35b348015610bf957600080fd5b50610c02612625565b604051610c0f9190614766565b60405180910390f35b348015610c2457600080fd5b50610c2d61264b565b604051610c3a91906149de565b60405180910390f35b348015610c4f57600080fd5b50610c6a6004803603810190610c659190614279565b612651565b604051610c779190614826565b60405180910390f35b348015610c8c57600080fd5b50610c95612671565b604051610ca291906149de565b60405180910390f35b348015610cb757600080fd5b50610cc0612677565b604051610ccd9190614781565b60405180910390f35b348015610ce257600080fd5b50610ceb61269d565b604051610cf89190614826565b60405180910390f35b348015610d0d57600080fd5b50610d166126b0565b604051610d2391906149de565b60405180910390f35b348015610d3857600080fd5b50610d536004803603810190610d4e91906143f7565b6126b6565b005b348015610d6157600080fd5b50610d7c6004803603810190610d7791906142cb565b61287d565b604051610d8991906149de565b60405180910390f35b348015610d9e57600080fd5b50610db96004803603810190610db491906143f7565b612904565b005b348015610dc757600080fd5b50610de26004803603810190610ddd9190614356565b6129a3565b005b348015610df057600080fd5b50610df9612a93565b604051610e0691906149de565b60405180910390f35b348015610e1b57600080fd5b50610e366004803603810190610e3191906143f7565b612a99565b005b348015610e4457600080fd5b50610e5f6004803603810190610e5a9190614279565b612b38565b005b348015610e6d57600080fd5b50610e886004803603810190610e839190614356565b612cfa565b005b348015610e9657600080fd5b50610e9f612dea565b604051610eac9190614826565b60405180910390f35b606060038054610ec490614cd8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef090614cd8565b8015610f3d5780601f10610f1257610100808354040283529160200191610f3d565b820191906000526020600020905b815481529060010190602001808311610f2057829003601f168201915b5050505050905090565b610f4f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd39061493e565b60405180910390fd5b82601081905550816011819055508060128190555061101c60125461100e601154601054612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601781905550505050565b600061103b611034612e5b565b8484612e63565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601954905090565b6110a3612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611130576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111279061493e565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611170600f54611162600e54600d54612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601681905550505050565b611183612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112079061493e565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061127884848461302e565b5061133a84611285612e5b565b611335856040518060600160405280602881526020016150e160289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112eb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b600190509392505050565b61134d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d19061493e565b60405180910390fd5b80601e60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b600061145a6114497f000000000000000000000000000000000000000000000000000000000000dead611d49565b60195461367790919063ffffffff16565b905090565b611467612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb9061493e565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b60006115f861155c612e5b565b846115f3856008600061156d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b612e63565b6001905092915050565b61160a612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e9061493e565b60405180910390fd5b80601c8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b601e60159054906101000a900460ff1681565b6116dc612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611769576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117609061493e565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60135481565b60006117e5612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118699061493e565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118bd57600080fd5b505afa1580156118d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f591906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561195757600080fd5b505afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f91906142a2565b6040518363ffffffff1660e01b81526004016119ac92919061479c565b60206040518083038186803b1580156119c457600080fd5b505afa1580156119d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fc91906142a2565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbd578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7957600080fd5b505afa158015611a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab191906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1357600080fd5b505afa158015611b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4b91906142a2565b6040518363ffffffff1660e01b8152600401611b6892919061479c565b602060405180830381600087803b158015611b8257600080fd5b505af1158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba91906142a2565b91505b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600254905090565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b601b5481565b60175481565b611dac612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e309061493e565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611eeb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f9061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606004805461204590614cd8565b80601f016020809104026020016040519081016040528092919081815260200182805461207190614cd8565b80156120be5780601f10612093576101008083540402835291602001916120be565b820191906000526020600020905b8154815290600101906020018083116120a157829003601f168201915b5050505050905090565b6000601c54905090565b60185481565b600061219b6120e5612e5b565b8461219685604051806060016040528060258152602001615109602591396008600061210f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b6001905092915050565b6121ad612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461223a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122319061493e565b60405180910390fd5b80601e60166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122de906149be565b60405180910390fd5b600254421161232b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123229061499e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b600061244561243e612e5b565b848461302e565b506001905092915050565b612458612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc9061493e565b60405180910390fd5b826013819055508160148190555080601581905550612525601554612517601454601354612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601881905550505050565b600f5481565b61253e612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c29061493e565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126149190614826565b60405180910390a150565b600e5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60125481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60169054906101000a900460ff1681565b600d5481565b6126be612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461274b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127429061493e565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426127f99190614af3565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61290c612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612999576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129909061493e565b60405180910390fd5b80601a8190555050565b6129ab612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2f9061493e565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b612aa1612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b259061493e565b60405180910390fd5b80601b8190555050565b612b40612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc49061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c349061489e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d02612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d869061493e565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60179054906101000a900460ff1681565b6000808284612e0c9190614af3565b905083811015612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e48906148de565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eca9061497e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3a906148be565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161302191906149de565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561309f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130969061495e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561310f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131069061487e565b60405180910390fd5b601e60149054906101000a900460ff16156131365761312f8484846136c1565b905061360c565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131da5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561322557601a54821115613224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321b906148fe565b60405180910390fd5b5b600061323030611d49565b90506000601c5482101590508080156132565750601e60149054906101000a900460ff16155b80156132ac5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132c45750601e60159054906101000a900460ff165b156132ee57601e60169054906101000a900460ff16156132e457601c5491505b6132ed82613894565b5b613377846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061345d5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6134715761346c878787613a85565b613473565b845b9050601e60179054906101000a900460ff1680156134db5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561350a57601b546134fe826134f089611d49565b612dfd90919063ffffffff16565b111561350957600080fd5b5b61355c81600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135fc91906149de565b60405180910390a3600193505050505b9392505050565b600083831115829061365b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613652919061485c565b60405180910390fd5b506000838561366a9190614bd4565b9050809150509392505050565b60006136b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613613565b905092915050565b600061374c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137e182600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161388191906149de565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff02191690831515021790555060006138ed60026138df6018546138d160135487613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b90506000613904828461367790919063ffffffff16565b905061390f81613d71565b6000479050600061394061392f6002601354613d2790919063ffffffff16565b60185461367790919063ffffffff16565b9050600061397e60026139708461396260135488613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b905060006139a98361399b60155487613cac90919063ffffffff16565b613d2790919063ffffffff16565b905060006139d2826139c4858861367790919063ffffffff16565b61367790919063ffffffff16565b90506000811115613a0a57613a09600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261406e565b5b6000821115613a4057613a3f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361406e565b5b600083118015613a505750600087115b15613a6057613a5f87846140b9565b5b505050505050506000601e60146101000a81548160ff02191690831515021790555050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b0d57613b066064613af860165486613cac90919063ffffffff16565b613d2790919063ffffffff16565b9050613b8b565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b8a57613b876064613b7960175486613cac90919063ffffffff16565b613d2790919063ffffffff16565b90505b5b6000811115613c8f57613be681600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c8691906149de565b60405180910390a35b613ca2818461367790919063ffffffff16565b9150509392505050565b600080831415613cbf5760009050613d21565b60008284613ccd9190614b7a565b9050828482613cdc9190614b49565b14613d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d139061491e565b60405180910390fd5b809150505b92915050565b6000613d6983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506141ad565b905092915050565b6000600267ffffffffffffffff811115613db4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613de25781602001602082028036833780820191505090505b5090503081600081518110613e20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ec257600080fd5b505afa158015613ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efa91906142a2565b81600181518110613f34577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f9b30601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fff959493929190614a29565b600060405180830381600087803b15801561401957600080fd5b505af115801561402d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516140629291906149f9565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156140b4573d6000803e3d6000fd5b505050565b6140e630601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614132611eba565b426040518863ffffffff1660e01b8152600401614154969594939291906147c5565b6060604051808303818588803b15801561416d57600080fd5b505af1158015614181573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141a6919061446f565b5050505050565b600080831182906141f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141eb919061485c565b60405180910390fd5b50600083856142039190614b49565b9050809150509392505050565b60008135905061421f8161509b565b92915050565b6000815190506142348161509b565b92915050565b600081359050614249816150b2565b92915050565b60008135905061425e816150c9565b92915050565b600081519050614273816150c9565b92915050565b60006020828403121561428b57600080fd5b600061429984828501614210565b91505092915050565b6000602082840312156142b457600080fd5b60006142c284828501614225565b91505092915050565b600080604083850312156142de57600080fd5b60006142ec85828601614210565b92505060206142fd85828601614210565b9150509250929050565b60008060006060848603121561431c57600080fd5b600061432a86828701614210565b935050602061433b86828701614210565b925050604061434c8682870161424f565b9150509250925092565b6000806040838503121561436957600080fd5b600061437785828601614210565b92505060206143888582860161423a565b9150509250929050565b600080604083850312156143a557600080fd5b60006143b385828601614210565b92505060206143c48582860161424f565b9150509250929050565b6000602082840312156143e057600080fd5b60006143ee8482850161423a565b91505092915050565b60006020828403121561440957600080fd5b60006144178482850161424f565b91505092915050565b60008060006060848603121561443557600080fd5b60006144438682870161424f565b93505060206144548682870161424f565b92505060406144658682870161424f565b9150509250925092565b60008060006060848603121561448457600080fd5b600061449286828701614264565b93505060206144a386828701614264565b92505060406144b486828701614264565b9150509250925092565b60006144ca83836144e5565b60208301905092915050565b6144df81614c1a565b82525050565b6144ee81614c08565b82525050565b6144fd81614c08565b82525050565b600061450e82614aae565b6145188185614ad1565b935061452383614a9e565b8060005b8381101561455457815161453b88826144be565b975061454683614ac4565b925050600181019050614527565b5085935050505092915050565b61456a81614c2c565b82525050565b61457981614c6f565b82525050565b61458881614c93565b82525050565b600061459982614ab9565b6145a38185614ae2565b93506145b3818560208601614ca5565b6145bc81614d97565b840191505092915050565b60006145d4602383614ae2565b91506145df82614da8565b604082019050919050565b60006145f7602683614ae2565b915061460282614df7565b604082019050919050565b600061461a602283614ae2565b915061462582614e46565b604082019050919050565b600061463d601b83614ae2565b915061464882614e95565b602082019050919050565b6000614660602883614ae2565b915061466b82614ebe565b604082019050919050565b6000614683602183614ae2565b915061468e82614f0d565b604082019050919050565b60006146a6602083614ae2565b91506146b182614f5c565b602082019050919050565b60006146c9602583614ae2565b91506146d482614f85565b604082019050919050565b60006146ec602483614ae2565b91506146f782614fd4565b604082019050919050565b600061470f601f83614ae2565b915061471a82615023565b602082019050919050565b6000614732602383614ae2565b915061473d8261504c565b604082019050919050565b61475181614c58565b82525050565b61476081614c62565b82525050565b600060208201905061477b60008301846144f4565b92915050565b600060208201905061479660008301846144d6565b92915050565b60006040820190506147b160008301856144f4565b6147be60208301846144f4565b9392505050565b600060c0820190506147da60008301896144f4565b6147e76020830188614748565b6147f4604083018761457f565b614801606083018661457f565b61480e60808301856144f4565b61481b60a0830184614748565b979650505050505050565b600060208201905061483b6000830184614561565b92915050565b60006020820190506148566000830184614570565b92915050565b60006020820190508181036000830152614876818461458e565b905092915050565b60006020820190508181036000830152614897816145c7565b9050919050565b600060208201905081810360008301526148b7816145ea565b9050919050565b600060208201905081810360008301526148d78161460d565b9050919050565b600060208201905081810360008301526148f781614630565b9050919050565b6000602082019050818103600083015261491781614653565b9050919050565b6000602082019050818103600083015261493781614676565b9050919050565b6000602082019050818103600083015261495781614699565b9050919050565b60006020820190508181036000830152614977816146bc565b9050919050565b60006020820190508181036000830152614997816146df565b9050919050565b600060208201905081810360008301526149b781614702565b9050919050565b600060208201905081810360008301526149d781614725565b9050919050565b60006020820190506149f36000830184614748565b92915050565b6000604082019050614a0e6000830185614748565b8181036020830152614a208184614503565b90509392505050565b600060a082019050614a3e6000830188614748565b614a4b602083018761457f565b8181036040830152614a5d8186614503565b9050614a6c60608301856144f4565b614a796080830184614748565b9695505050505050565b6000602082019050614a986000830184614757565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614afe82614c58565b9150614b0983614c58565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b3e57614b3d614d0a565b5b828201905092915050565b6000614b5482614c58565b9150614b5f83614c58565b925082614b6f57614b6e614d39565b5b828204905092915050565b6000614b8582614c58565b9150614b9083614c58565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bc957614bc8614d0a565b5b828202905092915050565b6000614bdf82614c58565b9150614bea83614c58565b925082821015614bfd57614bfc614d0a565b5b828203905092915050565b6000614c1382614c38565b9050919050565b6000614c2582614c38565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c7a82614c81565b9050919050565b6000614c8c82614c38565b9050919050565b6000614c9e82614c58565b9050919050565b60005b83811015614cc3578082015181840152602081019050614ca8565b83811115614cd2576000848401525b50505050565b60006002820490506001821680614cf057607f821691505b60208210811415614d0457614d03614d68565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b6150a481614c08565b81146150af57600080fd5b50565b6150bb81614c2c565b81146150c657600080fd5b50565b6150d281614c58565b81146150dd57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122020375c7aad6c19c04cacd7a4cac537770c8ae4ce97e9f6865e0b9752863125aa64736f6c63430008040033

Deployed Bytecode Sourcemap

15082:14899:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18847:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21415:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20141:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15468:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16870:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19124:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21074:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22378:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24721:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22257:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15585:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23363:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22910:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19033:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19510:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22631:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15977:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16985:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22763:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15806:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6602:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16285:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23637:807;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6500:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16326:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19232:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16626:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16707:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16448:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20655:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16158:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15922:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5870:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6095:145;;;;;;;;;;;;;:::i;:::-;;18938:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20013:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16492:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19736:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23226:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6938:305;;;;;;;;;;;;;:::i;:::-;;16367:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24546:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21768:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16115:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23047:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16073:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16918:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16201:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15863:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16244:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15341:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17032:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16031:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6700:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19359:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22138:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20931:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16405:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22521:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6248:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20792:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17084:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18847:83;18884:13;18917:5;18910:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18847:83;:::o;21415:341::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21559:15:::1;21539:17;:35;;;;21605:15;21585:17;:35;;;;21646:10;21631:12;:25;;;;21690:58;21735:12;;21690:40;21712:17;;21690;;:21;;:40;;;;:::i;:::-;:44;;:58;;;;:::i;:::-;21669:18;:79;;;;21415:341:::0;;;:::o;20141:161::-;20216:4;20233:39;20242:12;:10;:12::i;:::-;20256:7;20265:6;20233:8;:39::i;:::-;20290:4;20283:11;;20141:161;;;;:::o;15468:94::-;;;;;;;;;;;;;:::o;16870:41::-;;;;;;;;;;;;;:::o;19124:100::-;19177:7;19204:12;;19197:19;;19124:100;:::o;21074:333::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21216:15:::1;21197:16;:34;;;;21261:15;21242:16;:34;;;;21301:10;21287:11;:24;;;;21344:55;21387:11;;21344:38;21365:16;;21344;;:20;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;21324:17;:75;;;;21074:333:::0;;;:::o;22378:135::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22499:6:::1;22469:19;:27;22489:6;22469:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22378:135:::0;;:::o;24721:313::-;24819:4;24836:36;24846:6;24854:9;24865:6;24836:9;:36::i;:::-;;24883:121;24892:6;24900:12;:10;:12::i;:::-;24914:89;24952:6;24914:89;;;;;;;;;;;;;;;;;:11;:19;24926:6;24914:19;;;;;;;;;;;;;;;:33;24934:12;:10;:12::i;:::-;24914:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;24883:8;:121::i;:::-;25022:4;25015:11;;24721:313;;;;;:::o;22257:113::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22354:8:::1;22335:16;;:27;;;;;;;;;;;;;;;;;;22257:113:::0;:::o;15585:81::-;;;:::o;23363:128::-;23416:7;23443:40;23460:22;23470:11;23460:9;:22::i;:::-;23443:12;;:16;;:40;;;;:::i;:::-;23436:47;;23363:128;:::o;22910:129::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23020:10:::1;22992:17;;:39;;;;;;;;;;;;;;;;;;22910:129:::0;:::o;19033:83::-;19074:5;19099:9;;;;;;;;;;;19092:16;;19033:83;:::o;19510:218::-;19598:4;19615:83;19624:12;:10;:12::i;:::-;19638:7;19647:50;19686:10;19647:11;:25;19659:12;:10;:12::i;:::-;19647:25;;;;;;;;;;;;;;;:34;19673:7;19647:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19615:8;:83::i;:::-;19716:4;19709:11;;19510:218;;;;:::o;22631:124::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22739:8:::1;22713:23;:34;;;;22631:124:::0;:::o;15977:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;16985:40::-;;;;;;;;;;;;;:::o;22763:139::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22883:10:::1;22850:22;;:44;;;;;;;;;;;;;;;;;;22763:139:::0;:::o;15806:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6602:90::-;6642:7;6669:15;6662:22;;6602:90;:::o;16285:34::-;;;;:::o;23637:807::-;23717:22;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23754:35:::1;23811:16;23754:74;;23877:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23859:53;;;23921:4;23928:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23859:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23842:110;;23994:1;23968:28;;:14;:28;;;23965:225;;;24082:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24064:74;;;24147:4;24154:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24064:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24047:131;;23965:225;24216:14;24202:11;;:28;;;;;;;;;;;;;;;;;;24282:16;24264:15;;:34;;;;;;;;;;;;;;;;;;24380:4;24336:19;:41;24364:11;;;;;;;;;;;24336:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;24432:4;24395:12;:34;24416:11;;;;;;;;;;;24395:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;6074:1;23637:807:::0;;;:::o;6500:90::-;6546:7;6573:9;;6566:16;;6500:90;:::o;16326:34::-;;;;:::o;19232:119::-;19298:7;19325:9;:18;19335:7;19325:18;;;;;;;;;;;;;;;;19318:25;;19232:119;;;:::o;16626:73::-;;;;:::o;16707:72::-;;;;:::o;16448:37::-;;;;:::o;20655:129::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20768:8:::1;20744:12;:21;20757:7;20744:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20655:129:::0;;:::o;16158:36::-;;;;:::o;15922:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;5870:79::-;5908:7;5935:6;;;;;;;;;;;5928:13;;5870:79;:::o;6095:145::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6199:1:::1;6162:40;;6183:6;::::0;::::1;;;;;;;;6162:40;;;;;;;;;;;;6230:1;6213:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6095:145::o:0;18938:87::-;18977:13;19010:7;19003:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18938:87;:::o;20013:120::-;20075:7;20102:23;;20095:30;;20013:120;:::o;16492:43::-;;;;:::o;19736:269::-;19829:4;19846:129;19855:12;:10;:12::i;:::-;19869:7;19878:96;19917:15;19878:96;;;;;;;;;;;;;;;;;:11;:25;19890:12;:10;:12::i;:::-;19878:25;;;;;;;;;;;;;;;:34;19904:7;19878:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19846:8;:129::i;:::-;19993:4;19986:11;;19736:269;;;;:::o;23226:125::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23335:8:::1;23307:25;;:36;;;;;;;;;;;;;;;;;;23226:125:::0;:::o;6938:305::-;7008:10;6990:28;;:14;;;;;;;;;;;:28;;;6982:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7095:9;;7077:15;:27;7069:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7186:14;;;;;;;;;;;7157:44;;7178:6;;;;;;;;;;7157:44;;;;;;;;;;;;7221:14;;;;;;;;;;;7212:6;;:23;;;;;;;;;;;;;;;;;;6938:305::o;16367:29::-;;;;:::o;24546:167::-;24624:4;24641:42;24651:12;:10;:12::i;:::-;24665:9;24676:6;24641:9;:42::i;:::-;;24701:4;24694:11;;24546:167;;;;:::o;21768:358::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21927:17:::1;21909:15;:35;;;;21973:17;21955:15;:35;;;;22014:12;22001:10;:25;;;;22066:52;22107:10;;22066:36;22086:15;;22066;;:19;;:36;;;;:::i;:::-;:40;;:52;;;;:::i;:::-;22039:24;:79;;;;21768:358:::0;;;:::o;16115:30::-;;;;:::o;23047:171::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23148:8:::1;23124:21;;:32;;;;;;;;;;;;;;;;;;23172:38;23201:8;23172:38;;;;;;:::i;:::-;;;;;;;;23047:171:::0;:::o;16073:35::-;;;;:::o;16918:26::-;;;;;;;;;;;;;:::o;16201:36::-;;;;:::o;15863:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;16244:31::-;;;;:::o;15341:99::-;;;;;;;;;;;;;:::o;17032:45::-;;;;;;;;;;;;;:::o;16031:35::-;;;;:::o;6700:226::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6781:6:::1;::::0;::::1;;;;;;;;6764:14;;:23;;;;;;;;;;;;;;;;;;6815:1;6798:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6858:4;6840:15;:22;;;;:::i;:::-;6828:9;:34;;;;6915:1;6878:40;;6899:6;::::0;::::1;;;;;;;;6878:40;;;;;;;;;;;;6700:226:::0;:::o;19359:143::-;19440:7;19467:11;:18;19479:5;19467:18;;;;;;;;;;;;;;;:27;19486:7;19467:27;;;;;;;;;;;;;;;;19460:34;;19359:143;;;;:::o;22138:111::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22230:11:::1;22215:12;:26;;;;22138:111:::0;:::o;20931:135::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21050:8:::1;21021:17;:26;21039:7;21021:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;20931:135:::0;;:::o;16405:36::-;;;;:::o;22521:102::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22607:8:::1;22593:10;:22;;;;22521:102:::0;:::o;6248:244::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6357:1:::1;6337:22;;:8;:22;;;;6329:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6447:8;6418:38;;6439:6;::::0;::::1;;;;;;;;6418:38;;;;;;;;;;;;6476:8;6467:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6248:244:::0;:::o;20792:127::-;6014:12;:10;:12::i;:::-;6004:22;;:6;;;;;;;;;;:22;;;5996:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20905:6:::1;20879:15;:23;20895:6;20879:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20792:127:::0;;:::o;17084:35::-;;;;;;;;;;;;;:::o;1240:181::-;1298:7;1318:9;1334:1;1330;:5;;;;:::i;:::-;1318:17;;1359:1;1354;:6;;1346:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1412:1;1405:8;;;1240:181;;;;:::o;172:115::-;225:15;268:10;253:26;;172:115;:::o;20310:337::-;20420:1;20403:19;;:5;:19;;;;20395:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20501:1;20482:21;;:7;:21;;;;20474:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20585:6;20555:11;:18;20567:5;20555:18;;;;;;;;;;;;;;;:27;20574:7;20555:27;;;;;;;;;;;;;;;:36;;;;20623:7;20607:32;;20616:5;20607:32;;;20632:6;20607:32;;;;;;:::i;:::-;;;;;;;;20310:337;;;:::o;25042:1707::-;25129:4;25174:1;25156:20;;:6;:20;;;;25148:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25258:1;25237:23;;:9;:23;;;;25229:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25316:16;;;;;;;;;;;25313:1429;;;25366:41;25381:6;25389:9;25400:6;25366:14;:41::i;:::-;25359:48;;;;25313:1429;25463:15;:23;25479:6;25463:23;;;;;;;;;;;;;;;;;;;;;;;;;25462:24;:55;;;;;25491:15;:26;25507:9;25491:26;;;;;;;;;;;;;;;;;;;;;;;;;25490:27;25462:55;25459:170;;;25556:12;;25546:6;:22;;25538:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;25459:170;25657:28;25688:24;25706:4;25688:9;:24::i;:::-;25657:55;;25727:28;25782:23;;25758:20;:47;;25727:78;;25838:23;:44;;;;;25866:16;;;;;;;;;;;25865:17;25838:44;:69;;;;;25887:12;:20;25900:6;25887:20;;;;;;;;;;;;;;;;;;;;;;;;;25886:21;25838:69;:94;;;;;25911:21;;;;;;;;;;;25838:94;25834:305;;;25970:25;;;;;;;;;;;25967:97;;;26041:23;;26018:46;;25967:97;26083:36;26098:20;26083:14;:36::i;:::-;25834:305;26175:53;26197:6;26175:53;;;;;;;;;;;;;;;;;:9;:17;26185:6;26175:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;26155:9;:17;26165:6;26155:17;;;;;;;;;;;;;;;:73;;;;26245:19;26268:17;:25;26286:6;26268:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;26297:17;:28;26315:9;26297:28;;;;;;;;;;;;;;;;;;;;;;;;;26268:57;26267:148;;26381:34;26389:6;26397:9;26408:6;26381:7;:34::i;:::-;26267:148;;;26372:6;26267:148;26245:170;;26435:16;;;;;;;;;;;:51;;;;;26456:19;:30;26476:9;26456:30;;;;;;;;;;;;;;;;;;;;;;;;;26455:31;26435:51;26432:133;;;26554:10;;26513:37;26538:11;26513:20;26523:9;26513;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;26505:60;;;;;;26432:133;26605:37;26630:11;26605:9;:20;26615:9;26605:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;26582:9;:20;26592:9;26582:20;;;;;;;;;;;;;;;:60;;;;26681:9;26664:40;;26673:6;26664:40;;;26692:11;26664:40;;;;;;:::i;:::-;;;;;;;;26726:4;26719:11;;;;;25042:1707;;;;;;:::o;1573:192::-;1659:7;1692:1;1687;:6;;1695:12;1679:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1719:9;1735:1;1731;:5;;;;:::i;:::-;1719:17;;1756:1;1749:8;;;1573:192;;;;;:::o;1429:136::-;1487:7;1514:43;1518:1;1521;1514:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1507:50;;1429:136;;;;:::o;26757:330::-;26850:4;26887:53;26909:6;26887:53;;;;;;;;;;;;;;;;;:9;:17;26897:6;26887:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;26867:9;:17;26877:6;26867:17;;;;;;;;;;;;;;;:73;;;;26974:32;26999:6;26974:9;:20;26984:9;26974:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;26951:9;:20;26961:9;26951:20;;;;;;;;;;;;;;;:55;;;;27039:9;27022:35;;27031:6;27022:35;;;27050:6;27022:35;;;;;;:::i;:::-;;;;;;;;27075:4;27068:11;;26757:330;;;;;:::o;27095:1048::-;17561:4;17542:16;;:23;;;;;;;;;;;;;;;;;;27177:19:::1;27199:65;27262:1;27199:58;27232:24;;27199:28;27211:15;;27199:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;27177:87;;27275:21;27299:24;27311:11;27299:7;:11;;:24;;;;:::i;:::-;27275:48;;27336:31;27353:13;27336:16;:31::i;:::-;27378:22;27403:21;27378:46;;27437:19;27459:52;27488:22;27508:1;27488:15;;:19;;:22;;;;:::i;:::-;27459:24;;:28;;:52;;;;:::i;:::-;27437:74;;27532:26;27561:59;27618:1;27561:52;27601:11;27561:35;27580:15;;27561:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;27532:88;;27631:21;27655:47;27690:11;27655:30;27674:10;;27655:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;27631:71;;27713:26;27742:57;27785:13;27742:38;27761:18;27742:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;27713:86;;27836:1;27815:18;:22;27812:104;;;27852:64;27873:22;;;;;;;;;;;27897:18;27852:20;:64::i;:::-;27812:104;27948:1;27932:13;:17;27929:89;;;27964:54;27985:17;;;;;;;;;;;28004:13;27964:20;:54::i;:::-;27929:89;28055:1;28034:18;:22;:41;;;;;28074:1;28060:11;:15;28034:41;28031:104;;;28090:45;28103:11;28116:18;28090:12;:45::i;:::-;28031:104;17576:1;;;;;;;17607:5:::0;17588:16;;:24;;;;;;;;;;;;;;;;;;27095:1048;:::o;29350:622::-;29436:7;29466:17;29486:1;29466:21;;29511:12;:20;29524:6;29511:20;;;;;;;;;;;;;;;;;;;;;;;;;29508:223;;;29560:38;29594:3;29560:29;29571:17;;29560:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;29548:50;;29508:223;;;29628:12;:23;29641:9;29628:23;;;;;;;;;;;;;;;;;;;;;;;;;29625:106;;;29680:39;29715:3;29680:30;29691:18;;29680:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;29668:51;;29625:106;29508:223;29766:1;29754:9;:13;29751:173;;;29811:39;29840:9;29811;:24;29829:4;29811:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;29784:9;:24;29802:4;29784:24;;;;;;;;;;;;;;;:66;;;;29895:4;29870:42;;29879:6;29870:42;;;29902:9;29870:42;;;;;;:::i;:::-;;;;;;;;29751:173;29943:21;29954:9;29943:6;:10;;:21;;;;:::i;:::-;29936:28;;;29350:622;;;;;:::o;1773:250::-;1831:7;1860:1;1855;:6;1851:47;;;1885:1;1878:8;;;;1851:47;1910:9;1926:1;1922;:5;;;;:::i;:::-;1910:17;;1955:1;1950;1946;:5;;;;:::i;:::-;:10;1938:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2014:1;2007:8;;;1773:250;;;;;:::o;2031:132::-;2089:7;2116:39;2120:1;2123;2116:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2109:46;;2031:132;;;;:::o;28155:666::-;28281:21;28319:1;28305:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28281:40;;28350:4;28332;28337:1;28332:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;28376:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28366:4;28371:1;28366:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;28411:62;28428:4;28443:15;;;;;;;;;;;28461:11;28411:8;:62::i;:::-;28512:15;;;;;;;;;;;:66;;;28593:11;28619:1;28663:4;28690;28726:15;28512:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28778:35;28795:11;28808:4;28778:35;;;;;;;:::i;:::-;;;;;;;;28155:666;;:::o;23499:126::-;23591:9;:18;;:26;23610:6;23591:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23499:126;;:::o;28829:513::-;28977:62;28994:4;29009:15;;;;;;;;;;;29027:11;28977:8;:62::i;:::-;29082:15;;;;;;;;;;;:31;;;29121:9;29154:4;29174:11;29200:1;29243;29286:7;:5;:7::i;:::-;29308:15;29082:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28829:513;;:::o;2171:278::-;2257:7;2289:1;2285;:5;2292:12;2277:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2316:9;2332:1;2328;:5;;;;:::i;:::-;2316:17;;2440:1;2433:8;;;2171: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:225::-;24827:34;24823:1;24815:6;24811:14;24804:58;24896:8;24891:2;24883:6;24879:15;24872:33;24793:119;:::o;24918:221::-;25058:34;25054:1;25046:6;25042:14;25035:58;25127:4;25122:2;25114:6;25110:15;25103:29;25024:115;:::o;25145:177::-;25285:29;25281:1;25273:6;25269:14;25262:53;25251:71;:::o;25328:227::-;25468:34;25464:1;25456:6;25452:14;25445:58;25537:10;25532:2;25524:6;25520:15;25513:35;25434:121;:::o;25561:220::-;25701:34;25697:1;25689:6;25685:14;25678:58;25770:3;25765:2;25757:6;25753:15;25746:28;25667:114;:::o;25787:182::-;25927:34;25923:1;25915:6;25911:14;25904:58;25893:76;:::o;25975:224::-;26115:34;26111:1;26103:6;26099:14;26092:58;26184:7;26179:2;26171:6;26167:15;26160:32;26081:118;:::o;26205:223::-;26345:34;26341:1;26333:6;26329:14;26322:58;26414:6;26409:2;26401:6;26397:15;26390:31;26311:117;:::o;26434:181::-;26574:33;26570:1;26562:6;26558:14;26551:57;26540:75;:::o;26621:222::-;26761:34;26757:1;26749:6;26745:14;26738:58;26830:5;26825:2;26817:6;26813:15;26806:30;26727:116;:::o;26849:122::-;26922:24;26940:5;26922:24;:::i;:::-;26915:5;26912:35;26902:2;;26961:1;26958;26951:12;26902:2;26892:79;:::o;26977:116::-;27047:21;27062:5;27047:21;:::i;:::-;27040:5;27037:32;27027:2;;27083:1;27080;27073:12;27027:2;27017:76;:::o;27099:122::-;27172:24;27190:5;27172:24;:::i;:::-;27165:5;27162:35;27152:2;;27211:1;27208;27201:12;27152:2;27142:79;:::o

Swarm Source

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