ETH Price: $2,452.02 (-8.50%)
Gas: 1.03 Gwei

Token

Shethereum ($ShEth)
 

Overview

Max Total Supply

70,431,981.85728324 $ShEth

Holders

95

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
104,053.549206138 $ShEth

Value
$0.00
0x0b44CF0cdeF875D477Be5bad0f83dA9457bDd8bC
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:
Shethereum

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-10
*/

// SPDX-License-Identifier: MIT

//*************************************************************************************************//

// Provided by EarthWalkers Dev team
// TG : https://t.me/shethereumtoken

//*************************************************************************************************//

pragma solidity ^0.8.17;
 
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);
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
 
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
 
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
 
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
 
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
 
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
 
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
 
    event Mint(address indexed sender, uint amount0, uint amount1);
    event 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 mint(address to) external returns (uint liquidity);
    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; 
}

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }
 
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }
 
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }
 
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }
 
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }
 
    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) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }
 
    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) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }
 
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }
 
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }
 
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }
 
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}
 
library SafeMathInt {
  function mul(int256 a, int256 b) internal pure returns (int256) {
    // Prevent overflow when multiplying INT256_MIN with -1
    // https://github.com/RequestNetwork/requestNetwork/issues/43
    require(!(a == - 2**255 && b == -1) && !(b == - 2**255 && a == -1));
 
    int256 c = a * b;
    require((b == 0) || (c / b == a));
    return c;
  }
 
  function div(int256 a, int256 b) internal pure returns (int256) {
    // Prevent overflow when dividing INT256_MIN by -1
    // https://github.com/RequestNetwork/requestNetwork/issues/43
    require(!(a == - 2**255 && b == -1) && (b > 0));
 
    return a / b;
  }
 
  function sub(int256 a, int256 b) internal pure returns (int256) {
    require((b >= 0 && a - b <= a) || (b < 0 && a - b > a));
 
    return a - b;
  }
 
  function add(int256 a, int256 b) internal pure returns (int256) {
    int256 c = a + b;
    require((b >= 0 && c >= a) || (b < 0 && c < a));
    return c;
  }
 
  function toUint256Safe(int256 a) internal pure returns (uint256) {
    require(a >= 0);
    return uint256(a);
  }
}
 
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}

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;
    }
}
 
abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view virtual returns (address) {return _owner;}
 
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;
 
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
 
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
 
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
 
    function name() public view virtual returns (string memory) {return _name;}
    function symbol() public view virtual returns (string memory) {return _symbol;}
    function totalSupply() public view virtual override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view virtual override returns (uint256) {return _balances[account];}

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender) public view virtual override returns (uint256) {return _allowances[owner][spender];}
 
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "transfer amount exceeds allowance"));
        return true;
    }
 
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
 
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "decreased allowance below zero"));
        return true;
    }
 
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "transfer from the zero address");
        require(recipient != address(0), "transfer to the zero address");
 
        _beforeTokenTransfer(sender, recipient, amount);
 
        _balances[sender] = _balances[sender].sub(amount, "transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
 
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "mint to the zero address");
 
        _beforeTokenTransfer(address(0), account, amount);
 
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
 
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "burn from the zero address");
 
        _beforeTokenTransfer(account, address(0), amount);
 
        _balances[account] = _balances[account].sub(amount, "burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
 
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "approve from the zero address");
        require(spender != address(0), "approve to the zero address");
 
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}
 
abstract contract SharedOwnable is Ownable {
    address private _creator;
    mapping(address => bool) private _sharedOwners;
    event SharedOwnershipAdded(address indexed sharedOwner);

    constructor() Ownable() {
        _creator = msg.sender;
        _setSharedOwner(msg.sender);
        renounceOwnership();
    }
    modifier onlySharedOwners() {require(_sharedOwners[msg.sender], "SharedOwnable: caller is not a shared owner"); _;}
    function getCreator() external view returns (address) {return _creator;}
    function isSharedOwner(address account) external view returns (bool) {return _sharedOwners[account];}
    function setSharedOwner(address account) internal onlySharedOwners {_setSharedOwner(account);}
    function _setSharedOwner(address account) private {_sharedOwners[account] = true; emit SharedOwnershipAdded(account);}
    function EraseSharedOwner(address account) internal onlySharedOwners {_eraseSharedOwner(account);}
    function _eraseSharedOwner(address account) private {_sharedOwners[account] = false;}
}

contract SafeToken is SharedOwnable {
    address payable safeManager;
    constructor() {safeManager = payable(msg.sender);}
    function setSafeManager(address payable _safeManager) public onlySharedOwners {safeManager = _safeManager;}
    function withdraw(address _token, uint256 _amount) external { require(msg.sender == safeManager); IERC20(_token).transfer(safeManager, _amount);}
    function withdrawETH(uint256 _amount) external {require(msg.sender == safeManager); safeManager.transfer(_amount);}
}

contract Main is ERC20, SharedOwnable, SafeToken {
    using SafeMath for uint256;
 
    IUniswapV2Router02 public uniswapV2Router;
    address private immutable uniswapV2Pair;
    address payable private MarketingWallet; 
    address payable private DevWallet; 
    address payable private OperationWallet;
    address payable private StakingWallet;
    address private DeadWallet;
    address private UniswapRouter;
    address [] List; 
        
    bool private swapping;
    bool private swapAndLiquifyEnabled = true;
    bool public tradingEnabled = false;
    bool private JeetsFee = true;
    bool private JeetsBurn = false;
    bool private JeetsStaking = false;
    bool private AutoDistribution = true;
    bool private DelayOption = false;

    uint256 private marketingETHPortion = 0;
    uint256 private devETHPortion = 0;
    uint256 private operationETHPortion = 0;
    uint256 private stakingPortion = 0;

    uint256 private MaxSell;
    uint256 private MaxWallet;
    uint256 private SwapMin;
    uint256 private MaxSwap;
    uint256 private MaxTaxes;
    uint256 private MaxTokenToSwap;
    uint256 private maxSellTransactionAmount;
    uint256 private maxWalletAmount;
    uint256 private swapTokensAtAmount;
    uint8 private decimal;
    uint256 private InitialSupply;
    uint256 private DispatchSupply;
    uint256 private _liquidityUnlockTime = 0;
    uint256 private counter;
    uint256 private MinTime = 0;
    
    // Tax Fees
    uint256 private _LiquidityFee = 2;
    uint256 private _BurnFee = 0;
    uint256 private _MarketingFee= 3;
    uint256 private _DevFee= 2;
    uint256 private _OperationFee= 1;
    uint256 private _StakingFee= 0;
    uint256 private _Wallet2WalletFee = 0; // no wallet to wallet fee
    uint256 private _BuyFee = 8;
    uint256 private _SellFee = 0;
    uint8 private VminDiv = 1;
    uint8 private VmaxDiv = 10;
    uint8 private MaxJeetsFee = 15;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isWhitelisted;
    mapping (address => bool) private _isExcludedFromMaxTx;
    mapping (address => bool) private _isBlacklisted; 
    mapping (address => uint256) private LastTimeSell; 
    mapping (address => bool) public automatedMarketMakerPairs;
 
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event LiquidityWalletUpdated(address indexed newLiquidityWallet, address indexed oldLiquidityWallet);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ETHReceived, uint256 tokensIntoLiqudity);
    event ExtendLiquidityLock(uint256 extendedLockTime);
    
    constructor(string memory name_, string memory symbol_, uint8 decimal_, address marketing_, address dev_, address operation_, uint256 supply_, uint256 dispatch_, uint8 maxtaxes_) ERC20(name_, symbol_) {
    	
        MarketingWallet = payable(marketing_);
        DevWallet = payable(dev_); 
        OperationWallet = payable(operation_);
        StakingWallet = payable(marketing_);
        DeadWallet = 0x000000000000000000000000000000000000dEaD;
        decimal = decimal_;
        InitialSupply = supply_*10**decimal;
        DispatchSupply = dispatch_*10**decimal;
        MaxSwap = supply_ * 1 / 100;
        MaxSell = supply_ * 1 / 100;
        MaxWallet = supply_ * 3 / 100;
        SwapMin = supply_ * 1 / 1000;
        MaxTokenToSwap = MaxSwap * 10**decimal;
        maxSellTransactionAmount = MaxSell * 10**decimal; // max sell 1% of supply
        maxWalletAmount = MaxWallet * 10**decimal; // max wallet amount 2%
        swapTokensAtAmount = SwapMin * 10**decimal;
        MaxTaxes = maxtaxes_;
              
	    UniswapRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

	    IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(UniswapRouter);
        // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
 
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);

        _SellFee = _LiquidityFee.add(_MarketingFee).add(_DevFee).add(_OperationFee).add(_StakingFee).add(_BurnFee);//YY%

        // exclude from paying fees or having max transaction amount
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DeadWallet] = true;
        _isExcludedFromFees[MarketingWallet] = true;
        _isExcludedFromFees[DevWallet] = true;
        _isExcludedFromFees[OperationWallet] = true;
        _isExcludedFromFees[StakingWallet] = true;
        _isExcludedFromFees[msg.sender] = true;
 
        // exclude from max tx
        _isExcludedFromMaxTx[address(this)] = true;
        _isExcludedFromMaxTx[DeadWallet] = true;
        _isExcludedFromMaxTx[MarketingWallet] = true;
        _isExcludedFromMaxTx[DevWallet] = true;
        _isExcludedFromMaxTx[OperationWallet] = true;
        _isExcludedFromMaxTx[StakingWallet] = true;
        _isExcludedFromMaxTx[msg.sender] = true;

        // Whitelist
        _isWhitelisted[address(this)] = true;
        _isWhitelisted[DeadWallet] = true;
        _isWhitelisted[MarketingWallet] = true;
        _isWhitelisted[DevWallet] = true;
        _isWhitelisted[OperationWallet] = true;
        _isWhitelisted[StakingWallet] = true;
        _isWhitelisted[msg.sender] = true;
        
        //  _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again
        if(DispatchSupply == 0) {_mint(address(this), InitialSupply);} 
        else if (DispatchSupply == InitialSupply) {_mint(msg.sender, DispatchSupply);}
        else {
            _mint(msg.sender, DispatchSupply);
            _mint(address(this), InitialSupply - DispatchSupply);
        }
    }
 
    receive() external payable {}
    //******************************************************************************************************
    // Public functions
    //******************************************************************************************************
    function decimals() public view returns (uint8) { return decimal; }
    function GetExclusions(address account) public view returns(bool MaxTx, bool Fees, bool Blacklist, bool Whitelist){return (_isExcludedFromMaxTx[account], _isExcludedFromFees[account], _isBlacklisted[account], _isWhitelisted[account]);}
    function GetFees() public view returns(uint Buy, uint Sell, uint Wallet2Wallet, uint Liquidity, uint Marketing, uint Dev, uint Operation, uint Staking, uint Burn){return (_BuyFee, _SellFee, _Wallet2WalletFee, _LiquidityFee, _MarketingFee, _DevFee, _OperationFee, _StakingFee, _BurnFee);}
    function GetLimits() public view returns(uint256 SellMax, uint256 WalletMax, uint256 TaxMax, uint256 MinSwap, uint256 SwapMax, bool SwapLiq, bool ENtrading, bool autodistribution){return (MaxSell, MaxWallet, MaxTaxes, SwapMin, MaxSwap, swapAndLiquifyEnabled, tradingEnabled, AutoDistribution);}
    function GetDelay() public view returns (bool delayoption, uint256 mintime) {return (DelayOption, MinTime);}
    function GetContractAddresses() public view returns(address marketing, address dev, address operation, address staking, address Dead, address LP){return (address(MarketingWallet), address(DevWallet), address(OperationWallet), address(StakingWallet), address(DeadWallet), address(uniswapV2Pair));}
    function GetJeetsTaxInfo() external view returns (bool jeetsfee, bool jeetsburn, bool jeetsstaking, uint vmaxdiv, uint vmindiv, uint maxjeetsfee) {return(JeetsFee, JeetsBurn, JeetsStaking, VmaxDiv, VminDiv, MaxJeetsFee);}
    function GetContractBalance() external view returns (uint256 stakingportion, uint256 marketingETH, uint256 devETH , uint256 operationETH) {return(stakingPortion, marketingETHPortion, devETHPortion , operationETHPortion);}
    
    function GetSupplyInfo() public view returns (uint256 initialSupply, uint256 circulatingSupply, uint256 burntTokens) {
        uint256 supply = totalSupply ();
        uint256 tokensBurnt = InitialSupply - supply;
        return (InitialSupply, supply, tokensBurnt);
    }
        
    function getLiquidityUnlockTime() public view returns (uint256 Days, uint256 Hours, uint256 Minutes, uint256 Seconds) {
        if (block.timestamp < _liquidityUnlockTime){
            Days = (_liquidityUnlockTime - block.timestamp) / 86400;
            Hours = (_liquidityUnlockTime - block.timestamp - Days * 86400) / 3600;
            Minutes = (_liquidityUnlockTime - block.timestamp - Days * 86400 - Hours * 3600 ) / 60;
            Seconds = _liquidityUnlockTime - block.timestamp - Days * 86400 - Hours * 3600 - Minutes * 60;
            return (Days, Hours, Minutes, Seconds);
        } 
        return (0, 0, 0, 0);
    }
    //******************************************************************************************************
    // Write OnlyOwners functions
    //******************************************************************************************************
    function AddSharedOwner(address account) public onlySharedOwners {
        setSharedOwner(account);
        _isExcludedFromFees[address(account)] = true;
        _isExcludedFromMaxTx[address(account)] = true;
        _isWhitelisted[address(account)] = true;
    }

    function RemoveharedOwner(address account) public onlySharedOwners {
        EraseSharedOwner(account);
        _isExcludedFromFees[address(account)] = false;
        _isExcludedFromMaxTx[address(account)] = false;
        _isWhitelisted[address(account)] = false;
    }
    
    function setProjectWallet (address payable _newMarketingWallet, address payable _newDevWallet, address payable _newOperationWallet, address payable _newStakingWallet) external onlySharedOwners {
        if (_newMarketingWallet != MarketingWallet) {
            _isExcludedFromFees[MarketingWallet] = false;
            _isExcludedFromMaxTx[MarketingWallet] = false;
            _isWhitelisted[MarketingWallet] = false;
               
            _isExcludedFromFees[_newMarketingWallet] = true;
            _isExcludedFromMaxTx[_newMarketingWallet] = true;
            _isWhitelisted[_newMarketingWallet] = true;
  	        MarketingWallet = _newMarketingWallet;
        }
        if (_newDevWallet != DevWallet) {
            _isExcludedFromFees[DevWallet] = false;
            _isExcludedFromMaxTx[DevWallet] = false;
            _isWhitelisted[DevWallet] = false;
                       
            _isExcludedFromFees[_newDevWallet] = true;
            _isExcludedFromMaxTx[_newDevWallet] = true;
            _isWhitelisted[_newDevWallet] = true;
            DevWallet = _newDevWallet;
        }
        if (_newOperationWallet != OperationWallet) {
            _isExcludedFromFees[OperationWallet] = false;
            _isExcludedFromMaxTx[OperationWallet] = false;
            _isWhitelisted[OperationWallet] = false;
                       
            _isExcludedFromFees[_newOperationWallet] = true;
            _isExcludedFromMaxTx[_newOperationWallet] = true;
            _isWhitelisted[_newOperationWallet] = true;
            OperationWallet = _newOperationWallet;
        }
        if (_newStakingWallet != StakingWallet) {
            _isExcludedFromFees[StakingWallet] = false;
            _isExcludedFromMaxTx[StakingWallet] = false;
            _isWhitelisted[StakingWallet] = false;
                       
            _isExcludedFromFees[_newStakingWallet] = true;
            _isExcludedFromMaxTx[_newStakingWallet] = true;
            _isWhitelisted[_newStakingWallet] = true;
            StakingWallet = _newStakingWallet;
        }
    }
        
    function SetDelay (bool delayoption, uint256 mintime) external onlySharedOwners {
        require(mintime <= 28800, "MinTime Can't be more than a Day" );
        MinTime = mintime;
        DelayOption = delayoption;
    }
    
    function SetLimits(uint256 _maxWallet, uint256 _maxSell, uint256 _minswap, uint256 _swapmax, uint256 claimWait, uint256 MaxTax, bool _swapAndLiquifyEnabled, bool autodistribution) external onlySharedOwners {
        uint256 supply = totalSupply ();
        require(_maxWallet * 10**decimal >= supply / 100 && _maxWallet * 10**decimal <= supply, "MawWallet must be between totalsupply and 1% of totalsupply");
        require(_maxSell * 10**decimal >= supply / 1000 && _maxSell * 10**decimal <= supply, "MawSell must be between totalsupply and 0.1% of totalsupply" );
        require(_minswap * 10**decimal >= supply / 10000 && _minswap <= _swapmax / 2, "MinSwap must be between maxswap/2 and 0.01% of totalsupply" );
        require(claimWait >= 3600 && claimWait <= 86400, "claimWait must be updated to between 1 and 24 hours");
        require(MaxTax >= 1 && MaxTax <= 25, "Max Tax must be updated to between 1 and 25 percent");
        require(_swapmax >= _minswap.mul(2) && _swapmax * 10**decimal <= supply, "MaxSwap must be between totalsupply and SwapMin x 2" );

        MaxSwap = _swapmax;
        MaxTokenToSwap = MaxSwap * 10**decimal;
        MaxWallet = _maxWallet;
        maxWalletAmount = MaxWallet * 10**decimal;
        MaxSell = _maxSell;
        maxSellTransactionAmount = MaxSell * 10**decimal;
        SwapMin = _minswap;
        swapTokensAtAmount = SwapMin * 10**decimal;
        MaxTaxes = MaxTax;
        AutoDistribution = autodistribution;   
        swapAndLiquifyEnabled = _swapAndLiquifyEnabled;
        emit SwapAndLiquifyEnabledUpdated(_swapAndLiquifyEnabled);
    }
  
    function SetTaxes(uint256 newBuyTax, uint256 wallet2walletfee, uint256 newLiquidityTax, uint256 newBurnTax, uint256 newMarketingTax, uint256 newDevTax, uint256 newOperationTax, uint256 newStakingTax) external onlySharedOwners() {
        require(newBuyTax <= MaxTaxes && newBuyTax >= newBurnTax, "Total Tax can't exceed MaxTaxes. or be lower than burn tax");
        uint256 TransferTax = newMarketingTax.add(newDevTax).add(newOperationTax).add(newStakingTax);
        require(TransferTax.add(newLiquidityTax).add(newBurnTax) <= MaxTaxes, "Total Tax can't exceed MaxTaxes.");
        require(newMarketingTax >= 0 && newDevTax >= 0 && newOperationTax >= 0 && newBuyTax >= 0 && newLiquidityTax >= 0 && newBurnTax >= 0,"No tax can be negative");
        if(wallet2walletfee != 0){require(wallet2walletfee >= _BurnFee && wallet2walletfee <= MaxTaxes, "Wallet 2 Wallet Tax must be updated to between burn tax and 25 percent");}
        
        _BuyFee = newBuyTax;
        _Wallet2WalletFee = wallet2walletfee;
        _BurnFee = newBurnTax;
        _LiquidityFee = newLiquidityTax;
        _MarketingFee = newMarketingTax;
        _DevFee = newDevTax;
        _OperationFee = newOperationTax;
        _StakingFee = newStakingTax;
        _SellFee = _LiquidityFee.add(_MarketingFee).add(_DevFee).add(_OperationFee).add(_StakingFee).add(_BurnFee);
    } 
    
    function updateUniswapV2Router(address newAddress) external onlySharedOwners {
        require(newAddress != address(uniswapV2Router), "The router already has that address");
        emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router));
        uniswapV2Router = IUniswapV2Router02(newAddress);
    }
 
    function SetExclusions (address account, bool Fee, bool MaxTx, bool BlackList, bool WhiteList) external onlySharedOwners {
        _isExcludedFromFees[account] = Fee;
        _isExcludedFromMaxTx[account] = MaxTx;
        _isBlacklisted[account] = BlackList;
        _isWhitelisted[account] = WhiteList;
    }    
    
    function setAutomatedMarketMakerPair(address pair, bool value) public onlySharedOwners {
        require(pair != uniswapV2Pair, "The Market pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }
 
	function ExtendLockTime(uint256 newdays, uint256 newhours) external onlySharedOwners {
        uint256 lockTimeInSeconds = newdays*86400 + newhours*3600;
        if (_liquidityUnlockTime < block.timestamp) _liquidityUnlockTime = block.timestamp;
	setUnlockTime(lockTimeInSeconds + _liquidityUnlockTime);
        emit ExtendLiquidityLock(lockTimeInSeconds);
    }

    function CreateLP (uint256 tokenAmount, uint256 ETHAmountnum, uint256 ETHAmountdiv, uint256 Blocks, uint256 lockTimeInDays, uint256 lockTimeInHours) public onlySharedOwners {
        require(Blocks <= 40, "Not more than 2mn");
        uint256 lockTimeInSeconds = lockTimeInDays*86400 + lockTimeInHours*3600;
        _liquidityUnlockTime = block.timestamp + lockTimeInSeconds;
        uint256 token = tokenAmount*10**decimal;
        uint256 ETH = (ETHAmountnum*10**18)/ETHAmountdiv;
        addLiquidity (token, ETH);
        tradingEnabled = true;
        counter = block.number + Blocks;
    }

    function ReleaseLP() external onlySharedOwners {
        require(block.timestamp >= _liquidityUnlockTime, "Not yet unlocked");
        IERC20 liquidityToken = IERC20(uniswapV2Pair);
        uint256 amount = liquidityToken.balanceOf(address(this));
            liquidityToken.transfer(msg.sender, amount);
    }

    function GetList() external view onlySharedOwners returns (uint number, address [] memory) {
        number = List.length;
        return (number, List);
    }

    function SetJeetsTax(bool jeetsfee, bool jeetsburn, bool jeetsstaking, uint8 vmaxdiv, uint8 vmindiv, uint8 maxjeetsfee)  external onlySharedOwners {
        require (vmaxdiv >= 10 && vmaxdiv <= 40, "cannot set Vmax outside 10%/40% ratio");
        require (vmindiv >= 1 && vmindiv <= 10, "cannot set Vmin outside 1%/10% ratio");
        require (maxjeetsfee >= 1 && maxjeetsfee <= 20, "max jeets fee must be betwwen 1% and 20%");
        JeetsFee = jeetsfee;
        JeetsBurn = jeetsburn;
        JeetsStaking = jeetsstaking;
        VmaxDiv = vmaxdiv;
        VminDiv = vmindiv;
        MaxJeetsFee = maxjeetsfee;
    }

    function ManualDistribution() external onlySharedOwners {
        if(stakingPortion != 0) {
            super._transfer(address(this), StakingWallet, stakingPortion);
            stakingPortion = 0;
        }
        if(marketingETHPortion != 0) {
            MarketingWallet.transfer(marketingETHPortion);
            marketingETHPortion = 0;
        }
        if(devETHPortion != 0) {
            DevWallet.transfer(devETHPortion);
            devETHPortion = 0;
        }
        if(operationETHPortion != 0) {
            OperationWallet.transfer(operationETHPortion);
            operationETHPortion = 0;
        }
    }

    function RAZStakingportion() public onlySharedOwners {stakingPortion = 0;}
    //******************************************************************************************************
    // Internal functions
    //******************************************************************************************************
    function _setAutomatedMarketMakerPair(address pair, bool value) private onlySharedOwners {
        require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }
    
    function takeFee(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 fees = 0; // no wallet to wallet tax
        uint256 burntaxamount = 0; // no wallet to wallet tax
        uint256 extraTax = 0;
        
        if(automatedMarketMakerPairs[from]) {                   // buy tax applied if buy
            if(_BuyFee != 0) {
                fees = amount.mul(_BuyFee).div(100);  // total fee amount
                burntaxamount=amount.mul(_BurnFee).div(100);    // burn amount aside
            }                   
        } else if(automatedMarketMakerPairs[to]) {          // sell tax applied if sell
            if (JeetsFee && !_isWhitelisted[from]){ // Jeets extra Fee against massive dumpers
                extraTax = JeetsSellTax(amount);
                if (extraTax > 0) {
                    if (JeetsBurn) {burntaxamount += extraTax;} 
		            else if (JeetsStaking) {stakingPortion += extraTax;}
                    fees += extraTax;
                }
            }
            if(_SellFee != 0) {
                fees += amount.mul(_SellFee).div(100); // total fee amount
                burntaxamount+=amount.mul(_BurnFee).div(100);    // burn amount aside
            }
        } else if(!automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && _Wallet2WalletFee != 0) {
            fees = amount.mul(_Wallet2WalletFee).div(100);
            burntaxamount=amount.mul(_BurnFee).div(100);    // burn amount aside      
        } 
        fees = fees.sub(burntaxamount);    // fee is total amount minus burn
        
        if (burntaxamount != 0) {super._burn(from, burntaxamount);}    // burn amount 
        if(fees > 0) {super._transfer(from, address(this), fees);}
        return amount.sub(fees).sub(burntaxamount);
    }

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

        if(amount == 0) {return;}
        if(to != address(this) && to != DeadWallet) require(!_isBlacklisted[from] && !_isBlacklisted[to] , "Blacklisted address"); //blacklist function
        
        // preparation of launch LP and token dispatch allowed even if trading not allowed
        if(!tradingEnabled) {require(_isWhitelisted[from], "Trading not allowed yet");}


        if(tradingEnabled && block.number < counter && !_isWhitelisted[to] && automatedMarketMakerPairs[from]) {
            _isBlacklisted[to] = true;
            List.push(to);  
        }
        // Max Wallet limitation to be reworked
        if(!_isWhitelisted[to] && automatedMarketMakerPairs[from]){
            if(to != address(this) && to != DeadWallet){
                uint256 heldTokens = balanceOf(to);
                require((heldTokens + amount) <= maxWalletAmount, "wallet amount exceed maxWalletAmount");
            }
        }

        if(amount == 0) {return;}
        // Max sell limitation
        if(automatedMarketMakerPairs[to] && (!_isExcludedFromMaxTx[from]) && (!_isExcludedFromMaxTx[to])){require(amount <= maxSellTransactionAmount, "Sell transfer amount exceeds the maxSellTransactionAmount.");}

        if (DelayOption && !_isWhitelisted[from] && automatedMarketMakerPairs[to]) {
            require( LastTimeSell[from] + MinTime <= block.number, "Trying to sell too often!");
            LastTimeSell[from] = block.number;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        if (stakingPortion != 0 && stakingPortion < contractTokenBalance) {contractTokenBalance = balanceOf(address(this)) - stakingPortion;}
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        uint256 TotalFees = _SellFee.sub(_BurnFee);
        if(contractTokenBalance >= MaxTokenToSwap){contractTokenBalance = MaxTokenToSwap;}
         // Can Swap on sell only
        if (swapAndLiquifyEnabled && canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isWhitelisted[from] && !_isWhitelisted[to] && TotalFees != 0 ) {
            swapping = true;
            swapAndLiquify(contractTokenBalance);
            swapping = false;
        }

        uint256 amountToSend = amount;
        if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {amountToSend = takeFee(from, to, amount);}
        if(to == DeadWallet) {super._burn(from,amountToSend);}    // if destination address is Deadwallet, burn amount 
        else if(to != DeadWallet) {super._transfer(from, to, amountToSend);}
    }

    function swapAndLiquify(uint256 contractTokenBalance) private {
        uint256 TotalFees = _SellFee.sub(_BurnFee);
        uint256 NoRewardFees = TotalFees.sub(_StakingFee);
        uint256 initialBalance = address(this).balance;
        
        uint256 half = contractTokenBalance * _LiquidityFee / 2 / TotalFees;
        stakingPortion += contractTokenBalance * _StakingFee / TotalFees;
        
        uint256 swapTokens = (contractTokenBalance * NoRewardFees / TotalFees) - half;
        swapTokensForETH(swapTokens);
        uint256 ETHBalance = address(this).balance - initialBalance;

        uint256 liquidityETHPortion = (ETHBalance * _LiquidityFee / 2) / (NoRewardFees - (_LiquidityFee / 2));
        marketingETHPortion += (ETHBalance * _MarketingFee) / (NoRewardFees - (_LiquidityFee / 2));
        devETHPortion += (ETHBalance * _DevFee) / (NoRewardFees - (_LiquidityFee / 2));
        operationETHPortion += (ETHBalance * _OperationFee) / (NoRewardFees - (_LiquidityFee / 2));
       
        if(_LiquidityFee != 0) {
            addLiquidity(half, liquidityETHPortion);
            emit SwapAndLiquify(half, liquidityETHPortion, half);
        }
        if (AutoDistribution){    
            if(stakingPortion != 0) {
                super._transfer(address(this), StakingWallet, stakingPortion);
                stakingPortion = 0;
            }
            if(marketingETHPortion != 0) {
                MarketingWallet.transfer(marketingETHPortion);
                marketingETHPortion = 0;
            }
            if(devETHPortion != 0) {
                DevWallet.transfer(devETHPortion);
                devETHPortion = 0;
            }
            if(operationETHPortion != 0) {
                OperationWallet.transfer(operationETHPortion);
                operationETHPortion = 0;
            }
        }
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ETHAmount}(address(this), tokenAmount, 0, 0, address(this), block.timestamp);
    }
 
    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }

    function setUnlockTime(uint256 newUnlockTime) private {
        // require new unlock time to be longer than old one
        require(newUnlockTime > _liquidityUnlockTime);
        _liquidityUnlockTime = newUnlockTime;
    }

    function JeetsSellTax (uint256 amount) internal view returns (uint256) {
        uint256 value = balanceOf(uniswapV2Pair);
        uint256 vMin = value * VminDiv / 100;
        uint256 vMax = value * VmaxDiv / 100;
        if (amount <= vMin) return amount = 0;
        if (amount > vMax) return amount * MaxJeetsFee / 100;
        return (((amount-vMin) * MaxJeetsFee * amount) / (vMax-vMin)) / 100;
    }
}

contract Shethereum is Main {

    constructor() Main(
        "Shethereum",       // Name
        "$ShEth",        // Symbol
        9,                  // Decimal
        0x27d107e3509eA43B0f6Ac141131882EC5952D327,     // Marketing address
        0xdACdFCc695b115B3d3929b293b98ffC3aBfa738C,     // Dev address
        0x563f1672C5Dd06A35Ab934b5700a23B2cA3977DB,     // Operation address
        72_000_000,      // Initial Supply
        36_000_000,       // Dispatch Supply
        15     // Max Tax
    ) {} 
}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"extendedLockTime","type":"uint256"}],"name":"ExtendLiquidityLock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newLiquidityWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldLiquidityWallet","type":"address"}],"name":"LiquidityWalletUpdated","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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sharedOwner","type":"address"}],"name":"SharedOwnershipAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ETHReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddSharedOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"ETHAmountnum","type":"uint256"},{"internalType":"uint256","name":"ETHAmountdiv","type":"uint256"},{"internalType":"uint256","name":"Blocks","type":"uint256"},{"internalType":"uint256","name":"lockTimeInDays","type":"uint256"},{"internalType":"uint256","name":"lockTimeInHours","type":"uint256"}],"name":"CreateLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newdays","type":"uint256"},{"internalType":"uint256","name":"newhours","type":"uint256"}],"name":"ExtendLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"GetContractAddresses","outputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"dev","type":"address"},{"internalType":"address","name":"operation","type":"address"},{"internalType":"address","name":"staking","type":"address"},{"internalType":"address","name":"Dead","type":"address"},{"internalType":"address","name":"LP","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetContractBalance","outputs":[{"internalType":"uint256","name":"stakingportion","type":"uint256"},{"internalType":"uint256","name":"marketingETH","type":"uint256"},{"internalType":"uint256","name":"devETH","type":"uint256"},{"internalType":"uint256","name":"operationETH","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetDelay","outputs":[{"internalType":"bool","name":"delayoption","type":"bool"},{"internalType":"uint256","name":"mintime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"GetExclusions","outputs":[{"internalType":"bool","name":"MaxTx","type":"bool"},{"internalType":"bool","name":"Fees","type":"bool"},{"internalType":"bool","name":"Blacklist","type":"bool"},{"internalType":"bool","name":"Whitelist","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetFees","outputs":[{"internalType":"uint256","name":"Buy","type":"uint256"},{"internalType":"uint256","name":"Sell","type":"uint256"},{"internalType":"uint256","name":"Wallet2Wallet","type":"uint256"},{"internalType":"uint256","name":"Liquidity","type":"uint256"},{"internalType":"uint256","name":"Marketing","type":"uint256"},{"internalType":"uint256","name":"Dev","type":"uint256"},{"internalType":"uint256","name":"Operation","type":"uint256"},{"internalType":"uint256","name":"Staking","type":"uint256"},{"internalType":"uint256","name":"Burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetJeetsTaxInfo","outputs":[{"internalType":"bool","name":"jeetsfee","type":"bool"},{"internalType":"bool","name":"jeetsburn","type":"bool"},{"internalType":"bool","name":"jeetsstaking","type":"bool"},{"internalType":"uint256","name":"vmaxdiv","type":"uint256"},{"internalType":"uint256","name":"vmindiv","type":"uint256"},{"internalType":"uint256","name":"maxjeetsfee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetLimits","outputs":[{"internalType":"uint256","name":"SellMax","type":"uint256"},{"internalType":"uint256","name":"WalletMax","type":"uint256"},{"internalType":"uint256","name":"TaxMax","type":"uint256"},{"internalType":"uint256","name":"MinSwap","type":"uint256"},{"internalType":"uint256","name":"SwapMax","type":"uint256"},{"internalType":"bool","name":"SwapLiq","type":"bool"},{"internalType":"bool","name":"ENtrading","type":"bool"},{"internalType":"bool","name":"autodistribution","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetList","outputs":[{"internalType":"uint256","name":"number","type":"uint256"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetSupplyInfo","outputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"uint256","name":"circulatingSupply","type":"uint256"},{"internalType":"uint256","name":"burntTokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ManualDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"RAZStakingportion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ReleaseLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"RemoveharedOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"delayoption","type":"bool"},{"internalType":"uint256","name":"mintime","type":"uint256"}],"name":"SetDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"Fee","type":"bool"},{"internalType":"bool","name":"MaxTx","type":"bool"},{"internalType":"bool","name":"BlackList","type":"bool"},{"internalType":"bool","name":"WhiteList","type":"bool"}],"name":"SetExclusions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"jeetsfee","type":"bool"},{"internalType":"bool","name":"jeetsburn","type":"bool"},{"internalType":"bool","name":"jeetsstaking","type":"bool"},{"internalType":"uint8","name":"vmaxdiv","type":"uint8"},{"internalType":"uint8","name":"vmindiv","type":"uint8"},{"internalType":"uint8","name":"maxjeetsfee","type":"uint8"}],"name":"SetJeetsTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWallet","type":"uint256"},{"internalType":"uint256","name":"_maxSell","type":"uint256"},{"internalType":"uint256","name":"_minswap","type":"uint256"},{"internalType":"uint256","name":"_swapmax","type":"uint256"},{"internalType":"uint256","name":"claimWait","type":"uint256"},{"internalType":"uint256","name":"MaxTax","type":"uint256"},{"internalType":"bool","name":"_swapAndLiquifyEnabled","type":"bool"},{"internalType":"bool","name":"autodistribution","type":"bool"}],"name":"SetLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"wallet2walletfee","type":"uint256"},{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newBurnTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevTax","type":"uint256"},{"internalType":"uint256","name":"newOperationTax","type":"uint256"},{"internalType":"uint256","name":"newStakingTax","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCreator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidityUnlockTime","outputs":[{"internalType":"uint256","name":"Days","type":"uint256"},{"internalType":"uint256","name":"Hours","type":"uint256"},{"internalType":"uint256","name":"Minutes","type":"uint256"},{"internalType":"uint256","name":"Seconds","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":"account","type":"address"}],"name":"isSharedOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newMarketingWallet","type":"address"},{"internalType":"address payable","name":"_newDevWallet","type":"address"},{"internalType":"address payable","name":"_newOperationWallet","type":"address"},{"internalType":"address payable","name":"_newStakingWallet","type":"address"}],"name":"setProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_safeManager","type":"address"}],"name":"setSafeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526011805467ffffffffffffff0019166601000001000100179055600060128190556013819055601481905560158190556022819055602481905560026025819055602682905560036027556028556001602955602a819055602b8190556008602c55602d55602e8054620f0a0162ffffff199091161790553480156200008957600080fd5b506040518060400160405280600a8152602001695368657468657265756d60b01b81525060405180604001604052806006815260200165048a6d08ae8d60d31b81525060097327d107e3509ea43b0f6ac141131882ec5952d32773dacdfcc695b115b3d3929b293b98ffc3abfa738c73563f1672c5dd06a35ab934b5700a23b2ca3977db63044aa2006302255100600f888881600390816200012c919062000bdd565b5060046200013b828262000bdd565b5050506000620001506200078260201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000906000805160206200542a833981519152908290a350600680546001600160a01b03191633908117909155620001ad9062000786565b620001b7620007d2565b60088054336001600160a01b031991821617909155600a805482166001600160a01b038981169182178355600b805485168a8316179055600c80548516918916919091179055600d805484169091179055600e805461dead931692909217909155601f805460ff191660ff8a16908117909155620002359162000dbc565b62000241908462000dd4565b602055601f54620002579060ff16600a62000dbc565b62000263908362000dd4565b60215560646200027584600162000dd4565b62000281919062000dee565b60195560646200029384600162000dd4565b6200029f919062000dee565b6016556064620002b184600362000dd4565b620002bd919062000dee565b6017556103e8620002d084600162000dd4565b620002dc919062000dee565b601855601f54620002f29060ff16600a62000dbc565b60195462000301919062000dd4565b601b55601f54620003179060ff16600a62000dbc565b60165462000326919062000dd4565b601c55601f546200033c9060ff16600a62000dbc565b6017546200034b919062000dd4565b601d55601f54620003619060ff16600a62000dbc565b60185462000370919062000dd4565b601e5560ff8116601a55600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051600091839163c45a0155916004818101926020929091908290030181865afa158015620003e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040a919062000e11565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000458573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047e919062000e11565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620004cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f2919062000e11565b600980546001600160a01b0319166001600160a01b038581169190911790915581166080529050620005268160016200086b565b6200057460265462000560602a54620005606029546200056060285462000560602754602554620009cc60201b6200263d1790919060201c565b620009cc60201b6200263d1790919060201c565b602d55306000818152602f602090815260408083208054600160ff199182168117909255600e80546001600160a01b0390811687528487208054841685179055600a8054821688528588208054851686179055600b8054831689528689208054861687179055600c805484168a52878a208054871688179055600d805485168b52888b20805488168917905533808c52898c20805489168a1790558c8c5260318b52898c20805489168a179055865486168c52898c20805489168a179055845486168c52898c20805489168a179055835486168c52898c20805489168a179055825486168c52898c20805489168a179055815486168c52898c20805489168a179055808c52898c20805489168a1790559b8b526030909952878a2080548716881790559354831689528689208054861687179055905482168852858820805485168617905554811687528487208054841685179055905481168652838620805483168417905593549093168452818420805484168217905593835282208054909116909217909155602154900362000720576200071a3060205462000a3860201b60201c565b62000771565b6020546021540362000740576200071a3360215462000a3860201b60201c565b620007543360215462000a3860201b60201c565b62000771306021546020546200076b919062000e3c565b62000a38565b505050505050505050505062000e68565b3390565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517ffa6d6e0e6066ffafeb8530b0afbb780c04b0d3d5e2fc471faa21ba5b93eb86229190a250565b6005546001600160a01b03163314620008325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6005546040516000916001600160a01b0316906000805160206200542a833981519152908390a3600580546001600160a01b0319169055565b3360009081526007602052604090205460ff16620008e05760405162461bcd60e51b815260206004820152602b60248201527f5368617265644f776e61626c653a2063616c6c6572206973206e6f742061207360448201526a3430b932b21037bbb732b960a91b606482015260840162000829565b6001600160a01b03821660009081526034602052604090205481151560ff909116151503620009785760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c75650000000000000000606482015260840162000829565b6001600160a01b038216600081815260346020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600080620009db838562000e52565b90508381101562000a2f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000829565b90505b92915050565b6001600160a01b03821662000a905760405162461bcd60e51b815260206004820152601860248201527f6d696e7420746f20746865207a65726f20616464726573730000000000000000604482015260640162000829565b62000aac81600254620009cc60201b6200263d1790919060201c565b6002556001600160a01b0382166000908152602081815260409091205462000adf9183906200263d620009cc821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000b6457607f821691505b60208210810362000b8557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000b3457600081815260208120601f850160051c8101602086101562000bb45750805b601f850160051c820191505b8181101562000bd55782815560010162000bc0565b505050505050565b81516001600160401b0381111562000bf95762000bf962000b39565b62000c118162000c0a845462000b4f565b8462000b8b565b602080601f83116001811462000c49576000841562000c305750858301515b600019600386901b1c1916600185901b17855562000bd5565b600085815260208120601f198616915b8281101562000c7a5788860151825594840194600190910190840162000c59565b508582101562000c995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000d0057816000190482111562000ce45762000ce462000ca9565b8085161562000cf257918102915b93841c939080029062000cc4565b509250929050565b60008262000d195750600162000a32565b8162000d285750600062000a32565b816001811462000d41576002811462000d4c5762000d6c565b600191505062000a32565b60ff84111562000d605762000d6062000ca9565b50506001821b62000a32565b5060208310610133831016604e8410600b841016171562000d91575081810a62000a32565b62000d9d838362000cbf565b806000190482111562000db45762000db462000ca9565b029392505050565b600062000dcd60ff84168362000d08565b9392505050565b808202811582820484141762000a325762000a3262000ca9565b60008262000e0c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121562000e2457600080fd5b81516001600160a01b038116811462000a2f57600080fd5b8181038181111562000a325762000a3262000ca9565b8082018082111562000a325762000a3262000ca9565b60805161459162000e996000396000818161081b015281816118f201528181611bcc0152613cf201526145916000f3fe60806040526004361061028b5760003560e01c8063715018a61161015a578063b62496f5116100c1578063e93d8bcb1161007a578063e93d8bcb146109f9578063eb2ea50314610a19578063f14210a614610a4f578063f2fde38b14610a6f578063f3fef3a314610a8f578063f6d0bf2f14610aaf57600080fd5b8063b62496f5146108aa578063b7a46757146108da578063cc4e0f50146108ef578063d935b6741461095b578063dac48a0814610990578063dd62ed3e146109b357600080fd5b806395d89b411161011357806395d89b41146107975780639a7a23d6146107ac578063a18715e0146107cc578063a457c2d71461084a578063a558a6891461086a578063a9059cbb1461088a57600080fd5b8063715018a61461067457806377596a011461068957806386867216146106c25780638da5cb5b1461073957806390b89ea31461075757806391b32b321461077757600080fd5b8063313ce567116101fe578063637586f6116101b7578063637586f6146105a957806365b8dbc0146105c9578063661ecc72146105e95780636a0a3d171461060957806370a08231146106295780637115d00e1461065f57600080fd5b8063313ce567146104f25780633155086f1461051457806339509351146105295780633fd06a2f146105495780634ada218b146105695780635073fe341461058957600080fd5b80630ee2cb10116102505780630ee2cb101461041f5780631341d95c146104515780631694505e1461047357806318160ddd1461049357806323b872dd146104b257806330b73c93146104d257600080fd5b80628a2141146102975780630330583a146102cc57806303cf071b1461035857806306fdde03146103cd578063095ea7b3146103ef57600080fd5b3661029257005b600080fd5b3480156102a357600080fd5b506102ac610acd565b604080519384526020840192909252908201526060015b60405180910390f35b3480156102d857600080fd5b5061032e6102e7366004613e0f565b6001600160a01b0316600090815260316020908152604080832054602f83528184205460328452828520546030909452919093205460ff9384169491841693928316921690565b604080519415158552921515602085015290151591830191909152151560608201526080016102c3565b34801561036457600080fd5b50601654601754601a54601854601954601154604080519687526020870195909552938501929092526060840152608083015260ff6101008083048216151560a08501526201000083048216151560c0850152600160301b90920416151560e0830152016102c3565b3480156103d957600080fd5b506103e2610afd565b6040516102c39190613e2c565b3480156103fb57600080fd5b5061040f61040a366004613e7a565b610b8f565b60405190151581526020016102c3565b34801561042b57600080fd5b506006546001600160a01b03165b6040516001600160a01b0390911681526020016102c3565b34801561045d57600080fd5b5061047161046c366004613eca565b610ba6565b005b34801561047f57600080fd5b50600954610439906001600160a01b031681565b34801561049f57600080fd5b506002545b6040519081526020016102c3565b3480156104be57600080fd5b5061040f6104cd366004613f44565b610dbb565b3480156104de57600080fd5b506104716104ed366004613f85565b610e24565b3480156104fe57600080fd5b50601f5460405160ff90911681526020016102c3565b34801561052057600080fd5b50610471611115565b34801561053557600080fd5b5061040f610544366004613e7a565b611252565b34801561055557600080fd5b50610471610564366004613fe1565b611288565b34801561057557600080fd5b5060115461040f9062010000900460ff1681565b34801561059557600080fd5b506104716105a4366004613fff565b61132e565b3480156105b557600080fd5b506104716105c4366004614042565b61144a565b3480156105d557600080fd5b506104716105e4366004613e0f565b61165c565b3480156105f557600080fd5b50610471610604366004614097565b611752565b34801561061557600080fd5b50610471610624366004613e0f565b6117ee565b34801561063557600080fd5b506104a4610644366004613e0f565b6001600160a01b031660009081526020819052604090205490565b34801561066b57600080fd5b50610471611869565b34801561068057600080fd5b506104716119e4565b34801561069557600080fd5b5061040f6106a4366004613e0f565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156106ce57600080fd5b50601154602e546040805160ff63010000008504811615158252640100000000850481161515602083015265010000000000909404841615159181019190915261010082048316606082015282821660808201526201000090910490911660a082015260c0016102c3565b34801561074557600080fd5b506005546001600160a01b0316610439565b34801561076357600080fd5b50610471610772366004614108565b611a88565b34801561078357600080fd5b50610471610792366004613e0f565b611b3b565b3480156107a357600080fd5b506103e2611b8c565b3480156107b857600080fd5b506104716107c736600461412a565b611b9b565b3480156107d857600080fd5b50600a54600b54600c54600d54600e54604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152821660808201527f000000000000000000000000000000000000000000000000000000000000000090911660a082015260c0016102c3565b34801561085657600080fd5b5061040f610865366004613e7a565b611c81565b34801561087657600080fd5b50610471610885366004614163565b611cfe565b34801561089657600080fd5b5061040f6108a5366004613e7a565b61220a565b3480156108b657600080fd5b5061040f6108c5366004613e0f565b60346020526000908152604090205460ff1681565b3480156108e657600080fd5b50610471612217565b3480156108fb57600080fd5b50602c54602d54602b54602554602754602854602954602a5460265460408051998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e0830152610100820152610120016102c3565b34801561096757600080fd5b5061097061224d565b6040805194855260208501939093529183015260608201526080016102c3565b34801561099c57600080fd5b506109a5612362565b6040516102c392919061421a565b3480156109bf57600080fd5b506104a46109ce366004614233565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a0557600080fd5b50610471610a14366004613e0f565b6123fe565b348015610a2557600080fd5b50601154602454600160381b90910460ff16906040805192151583526020830191909152016102c3565b348015610a5b57600080fd5b50610471610a6a366004614261565b612481565b348015610a7b57600080fd5b50610471610a8a366004613e0f565b6124d2565b348015610a9b57600080fd5b50610471610aaa366004613e7a565b6125ed565b348015610abb57600080fd5b50601554601254601354601454610970565b600080600080610adc60025490565b9050600081602054610aee9190614290565b60205496929550935090915050565b606060038054610b0c906142a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b38906142a3565b8015610b855780601f10610b5a57610100808354040283529160200191610b85565b820191906000526020600020905b815481529060010190602001808311610b6857829003601f168201915b5050505050905090565b6000610b9c3384846126a3565b5060015b92915050565b3360009081526007602052604090205460ff16610bde5760405162461bcd60e51b8152600401610bd5906142dd565b60405180910390fd5b600a8360ff1610158015610bf6575060288360ff1611155b610c505760405162461bcd60e51b815260206004820152602560248201527f63616e6e6f742073657420566d6178206f757473696465203130252f34302520604482015264726174696f60d81b6064820152608401610bd5565b60018260ff1610158015610c685750600a8260ff1611155b610cc05760405162461bcd60e51b8152602060048201526024808201527f63616e6e6f742073657420566d696e206f7574736964652031252f31302520726044820152636174696f60e01b6064820152608401610bd5565b60018160ff1610158015610cd8575060148160ff1611155b610d355760405162461bcd60e51b815260206004820152602860248201527f6d6178206a6565747320666565206d757374206265206265747777656e20312560448201526720616e642032302560c01b6064820152608401610bd5565b60118054941515650100000000000265ff0000000000199615156401000000000264ff00000000199815156301000000029890981664ffff0000001990961695909517969096179490941692909217909355602e805460ff938416620100000262ff00ff19958516610100029590951662ffffff19909116179190921617919091179055565b6000610dc88484846127b1565b610e1a8433610e158560405180606001604052806021815260200161453b602191396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612f0a565b6126a3565b5060019392505050565b3360009081526007602052604090205460ff16610e535760405162461bcd60e51b8152600401610bd5906142dd565b600a546001600160a01b03858116911614610f0257600a80546001600160a01b039081166000908152602f60208181526040808420805460ff1990811690915586548616855260318084528286208054831690558754871686526030808552838720805484169055968c168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b600b546001600160a01b03848116911614610fb157600b80546001600160a01b039081166000908152602f60208181526040808420805460ff1990811690915586548616855260318084528286208054831690558754871686526030808552838720805484169055968b168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b600c546001600160a01b0383811691161461106057600c80546001600160a01b039081166000908152602f60208181526040808420805460ff1990811690915586548616855260318084528286208054831690558754871686526030808552838720805484169055968a168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b600d546001600160a01b0382811691161461110f57600d80546001600160a01b039081166000908152602f60208181526040808420805460ff19908116909155865486168552603180845282862080548316905587548716865260308085528387208054841690559689168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b50505050565b3360009081526007602052604090205460ff166111445760405162461bcd60e51b8152600401610bd5906142dd565b6015541561116f57600d546015546111699130916001600160a01b0390911690612f41565b60006015555b601254156111ba57600a546012546040516001600160a01b039092169181156108fc0291906000818181858888f193505050501580156111b3573d6000803e3d6000fd5b5060006012555b6013541561120557600b546013546040516001600160a01b039092169181156108fc0291906000818181858888f193505050501580156111fe573d6000803e3d6000fd5b5060006013555b6014541561125057600c546014546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015611249573d6000803e3d6000fd5b5060006014555b565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b9c918590610e15908661263d565b3360009081526007602052604090205460ff166112b75760405162461bcd60e51b8152600401610bd5906142dd565b6170808111156113095760405162461bcd60e51b815260206004820181905260248201527f4d696e54696d652043616e2774206265206d6f7265207468616e2061204461796044820152606401610bd5565b60245560118054911515600160381b0267ff0000000000000019909216919091179055565b3360009081526007602052604090205460ff1661135d5760405162461bcd60e51b8152600401610bd5906142dd565b60288311156113a25760405162461bcd60e51b81526020600482015260116024820152702737ba1036b7b932903a3430b7101936b760791b6044820152606401610bd5565b60006113b082610e10614328565b6113bd8462015180614328565b6113c7919061433f565b90506113d3814261433f565b602255601f546000906113ea9060ff16600a614436565b6113f49089614328565b905060008661140b89670de0b6b3a7640000614328565b6114159190614445565b905061142182826130c7565b6011805462ff000019166201000017905561143c864361433f565b602355505050505050505050565b3360009081526007602052604090205460ff166114795760405162461bcd60e51b8152600401610bd5906142dd565b601a54881115801561148b5750848810155b6114fd5760405162461bcd60e51b815260206004820152603a60248201527f546f74616c205461782063616e277420657863656564204d617854617865732e60448201527f206f72206265206c6f776572207468616e206275726e207461780000000000006064820152608401610bd5565b60006115158261150f8581898961263d565b9061263d565b601a549091506115298761150f848b61263d565b11156115775760405162461bcd60e51b815260206004820181905260248201527f546f74616c205461782063616e277420657863656564204d617854617865732e6044820152606401610bd5565b87156116125760265488101580156115915750601a548811155b6116125760405162461bcd60e51b815260206004820152604660248201527f57616c6c657420322057616c6c657420546178206d757374206265207570646160448201527f74656420746f206265747765656e206275726e2074617820616e642032352070606482015265195c98d95b9d60d21b608482015260a401610bd5565b602c899055602b88905560268690556025879055602785905560288490556029839055602a82905561164e8661150f848187818a818f8e61263d565b602d55505050505050505050565b3360009081526007602052604090205460ff1661168b5760405162461bcd60e51b8152600401610bd5906142dd565b6009546001600160a01b03908116908216036116f55760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610bd5565b6009546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526007602052604090205460ff166117815760405162461bcd60e51b8152600401610bd5906142dd565b6001600160a01b039094166000908152602f60209081526040808320805496151560ff199788161790556031825280832080549515159587169590951790945560328152838220805493151593861693909317909255603090915220805492151592909116919091179055565b3360009081526007602052604090205460ff1661181d5760405162461bcd60e51b8152600401610bd5906142dd565b61182681613178565b6001600160a01b03166000908152602f60209081526040808320805460ff1990811690915560318352818420805482169055603090925290912080549091169055565b3360009081526007602052604090205460ff166118985760405162461bcd60e51b8152600401610bd5906142dd565b6022544210156118dd5760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b6044820152606401610bd5565b6040516370a0823160e01b81523060048201527f0000000000000000000000000000000000000000000000000000000000000000906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196a9190614467565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044015b6020604051808303816000875af11580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190614480565b505050565b6005546001600160a01b03163314611a3e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bd5565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b3360009081526007602052604090205460ff16611ab75760405162461bcd60e51b8152600401610bd5906142dd565b6000611ac582610e10614328565b611ad28462015180614328565b611adc919061433f565b9050426022541015611aed57426022555b611b0360225482611afe919061433f565b6131cf565b6040518181527fe9da15d4cb5bea133d9613a866c909df5594489b91a3f780d43720d560b3c94c9060200160405180910390a1505050565b3360009081526007602052604090205460ff16611b6a5760405162461bcd60e51b8152600401610bd5906142dd565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610b0c906142a3565b3360009081526007602052604090205460ff16611bca5760405162461bcd60e51b8152600401610bd5906142dd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611c73576040805162461bcd60e51b81526020600482015260248101919091527f546865204d61726b657420706169722063616e6e6f742062652072656d6f766560448201527f642066726f6d206175746f6d617465644d61726b65744d616b657250616972736064820152608401610bd5565b611c7d82826131e2565b5050565b6000610b9c3384610e15856040518060400160405280601e81526020017f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f000081525060016000611ccd3390565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612f0a565b3360009081526007602052604090205460ff16611d2d5760405162461bcd60e51b8152600401610bd5906142dd565b6000611d3860025490565b9050611d45606482614445565b601f54611d569060ff16600a614436565b611d60908b614328565b10158015611d895750601f548190611d7c9060ff16600a614436565b611d86908b614328565b11155b611dfb5760405162461bcd60e51b815260206004820152603b60248201527f4d617757616c6c6574206d757374206265206265747765656e20746f74616c7360448201527f7570706c7920616e64203125206f6620746f74616c737570706c7900000000006064820152608401610bd5565b611e076103e882614445565b601f54611e189060ff16600a614436565b611e22908a614328565b10158015611e4b5750601f548190611e3e9060ff16600a614436565b611e48908a614328565b11155b611ebd5760405162461bcd60e51b815260206004820152603b60248201527f4d617753656c6c206d757374206265206265747765656e20746f74616c73757060448201527f706c7920616e6420302e3125206f6620746f74616c737570706c7900000000006064820152608401610bd5565b611ec961271082614445565b601f54611eda9060ff16600a614436565b611ee49089614328565b10158015611efc5750611ef8600287614445565b8711155b611f6e5760405162461bcd60e51b815260206004820152603a60248201527f4d696e53776170206d757374206265206265747765656e206d6178737761702f60448201527f3220616e6420302e303125206f6620746f74616c737570706c790000000000006064820152608401610bd5565b610e108510158015611f835750620151808511155b611feb5760405162461bcd60e51b815260206004820152603360248201527f636c61696d57616974206d757374206265207570646174656420746f206265746044820152727765656e203120616e6420323420686f75727360681b6064820152608401610bd5565b60018410158015611ffd575060198411155b6120655760405162461bcd60e51b815260206004820152603360248201527f4d617820546178206d757374206265207570646174656420746f206265747765604482015272195b880c48185b99080c8d481c195c98d95b9d606a1b6064820152608401610bd5565b6120708760026132fb565b861015801561209a5750601f54819061208d9060ff16600a614436565b6120979088614328565b11155b6121025760405162461bcd60e51b815260206004820152603360248201527f4d617853776170206d757374206265206265747765656e20746f74616c73757060448201527238363c9030b7321029bbb0b826b4b7103c101960691b6064820152608401610bd5565b6019869055601f546121189060ff16600a614436565b6019546121259190614328565b601b556017899055601f5461213e9060ff16600a614436565b60175461214b9190614328565b601d556016889055601f546121649060ff16600a614436565b6016546121719190614328565b601c556018879055601f5461218a9060ff16600a614436565b6018546121979190614328565b601e55601a8490556011805466ff00000000ff001916600160301b8415150261ff00191617610100851515908102919091179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a1505050505050505050565b6000610b9c3384846127b1565b3360009081526007602052604090205460ff166122465760405162461bcd60e51b8152600401610bd5906142dd565b6000601555565b60008060008060225442101561234f57620151804260225461226f9190614290565b6122799190614445565b9350610e1061228b8562015180614328565b426022546122999190614290565b6122a39190614290565b6122ad9190614445565b9250603c6122bd84610e10614328565b6122ca8662015180614328565b426022546122d89190614290565b6122e29190614290565b6122ec9190614290565b6122f69190614445565b915061230382603c614328565b61230f84610e10614328565b61231c8662015180614328565b4260225461232a9190614290565b6123349190614290565b61233e9190614290565b6123489190614290565b905061235c565b5060009250829150819050805b90919293565b3360009081526007602052604081205460609060ff166123945760405162461bcd60e51b8152600401610bd5906142dd565b601080546040805160208084028201810190925282815291945084929190829084908301828280156123ef57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116123d1575b50505050509050915091509091565b3360009081526007602052604090205460ff1661242d5760405162461bcd60e51b8152600401610bd5906142dd565b6124368161337d565b6001600160a01b03166000908152602f602090815260408083208054600160ff1991821681179092556031845282852080548216831790556030909352922080549091169091179055565b6008546001600160a01b0316331461249857600080fd5b6008546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611c7d573d6000803e3d6000fd5b6005546001600160a01b0316331461252c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bd5565b6001600160a01b0381166125915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bd5565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b0316331461260457600080fd5b60085460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb9060440161199c565b60008061264a838561433f565b90508381101561269c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bd5565b9392505050565b6001600160a01b0383166126f95760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f20616464726573730000006044820152606401610bd5565b6001600160a01b03821661274f5760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f206164647265737300000000006044820152606401610bd5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166128075760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610bd5565b6001600160a01b03821661285d5760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610bd5565b8060000361286a57505050565b6001600160a01b03821630148015906128915750600e546001600160a01b03838116911614155b1561291a576001600160a01b03831660009081526032602052604090205460ff161580156128d857506001600160a01b03821660009081526032602052604090205460ff16155b61291a5760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610bd5565b60115462010000900460ff16612992576001600160a01b03831660009081526030602052604090205460ff166129925760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420616c6c6f776564207965740000000000000000006044820152606401610bd5565b60115462010000900460ff1680156129ab575060235443105b80156129d057506001600160a01b03821660009081526030602052604090205460ff16155b80156129f457506001600160a01b03831660009081526034602052604090205460ff165b15612a5f576001600160a01b0382166000818152603260205260408120805460ff191660019081179091556010805491820181559091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b03191690911790555b6001600160a01b03821660009081526030602052604090205460ff16158015612aa057506001600160a01b03831660009081526034602052604090205460ff165b15612b53576001600160a01b0382163014801590612acc5750600e546001600160a01b03838116911614155b15612b53576001600160a01b038216600090815260208190526040902054601d54612af7838361433f565b1115612b515760405162461bcd60e51b8152602060048201526024808201527f77616c6c657420616d6f756e7420657863656564206d617857616c6c6574416d6044820152631bdd5b9d60e21b6064820152608401610bd5565b505b80600003612b6057505050565b6001600160a01b03821660009081526034602052604090205460ff168015612ba157506001600160a01b03831660009081526031602052604090205460ff16155b8015612bc657506001600160a01b03821660009081526031602052604090205460ff16155b15612c4357601c54811115612c435760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610bd5565b601154600160381b900460ff168015612c7557506001600160a01b03831660009081526030602052604090205460ff16155b8015612c9957506001600160a01b03821660009081526034602052604090205460ff165b15612d2f576024546001600160a01b0384166000908152603360205260409020544391612cc59161433f565b1115612d135760405162461bcd60e51b815260206004820152601960248201527f547279696e6720746f2073656c6c20746f6f206f6674656e21000000000000006044820152606401610bd5565b6001600160a01b03831660009081526033602052604090204390555b3060009081526020819052604090205460155415801590612d51575080601554105b15612d765760155430600090815260208190526040902054612d739190614290565b90505b601e54602654602d549183101591600091612d9191906133b5565b9050601b548310612da257601b5492505b601154610100900460ff168015612db65750815b8015612dc5575060115460ff16155b8015612dea57506001600160a01b03861660009081526034602052604090205460ff16155b8015612e0f57506001600160a01b03861660009081526030602052604090205460ff16155b8015612e3457506001600160a01b03851660009081526030602052604090205460ff16155b8015612e3f57508015155b15612e65576011805460ff19166001179055612e5a83613411565b6011805460ff191690555b6001600160a01b0386166000908152602f6020526040902054849060ff16158015612ea957506001600160a01b0386166000908152602f602052604090205460ff16155b15612ebc57612eb987878761376d565b90505b600e546001600160a01b0390811690871603612ee157612edc87826139d1565b612f01565b600e546001600160a01b03878116911614612f0157612f01878783612f41565b50505050505050565b60008184841115612f2e5760405162461bcd60e51b8152600401610bd59190613e2c565b50612f398385614290565b949350505050565b6001600160a01b038316612f975760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610bd5565b6001600160a01b038216612fed5760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610bd5565b604080518082018252601f81527f7472616e7366657220616d6f756e7420657863656564732062616c616e6365006020808301919091526001600160a01b0386166000908152908190529190912054613047918390612f0a565b6001600160a01b038085166000908152602081905260408082209390935590841681522054613076908261263d565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016127a4565b6009546130df9030906001600160a01b0316846126a3565b60095460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561314c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613171919061449d565b5050505050565b3360009081526007602052604090205460ff166131a75760405162461bcd60e51b8152600401610bd5906142dd565b6131cc816001600160a01b03166000908152600760205260409020805460ff19169055565b50565b60225481116131dd57600080fd5b602255565b3360009081526007602052604090205460ff166132115760405162461bcd60e51b8152600401610bd5906142dd565b6001600160a01b03821660009081526034602052604090205481151560ff9091161515036132a75760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610bd5565b6001600160a01b038216600081815260346020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60008260000361330d57506000610ba0565b60006133198385614328565b9050826133268583614445565b1461269c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bd5565b3360009081526007602052604090205460ff166133ac5760405162461bcd60e51b8152600401610bd5906142dd565b6131cc81613aef565b6000828211156134075760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610bd5565b61269c8284614290565b600061342a602654602d546133b590919063ffffffff16565b90506000613443602a54836133b590919063ffffffff16565b9050600047905060008360026025548761345d9190614328565b6134679190614445565b6134719190614445565b905083602a54866134829190614328565b61348c9190614445565b6015600082825461349d919061433f565b909155506000905081856134b18689614328565b6134bb9190614445565b6134c59190614290565b90506134d081613b3b565b60006134dc8447614290565b9050600060026025546134ef9190614445565b6134f99087614290565b6002602554846135099190614328565b6135139190614445565b61351d9190614445565b9050600260255461352e9190614445565b6135389087614290565b6027546135459084614328565b61354f9190614445565b60126000828254613560919061433f565b909155505060255461357490600290614445565b61357e9087614290565b60285461358b9084614328565b6135959190614445565b601360008282546135a6919061433f565b90915550506025546135ba90600290614445565b6135c49087614290565b6029546135d19084614328565b6135db9190614445565b601460008282546135ec919061433f565b9091555050602554156136455761360384826130c7565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b601154600160301b900460ff1615613763576015541561368257600d5460155461367c9130916001600160a01b0390911690612f41565b60006015555b601254156136cd57600a546012546040516001600160a01b039092169181156108fc0291906000818181858888f193505050501580156136c6573d6000803e3d6000fd5b5060006012555b6013541561371857600b546013546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015613711573d6000803e3d6000fd5b5060006013555b6014541561376357600c546014546040516001600160a01b039092169181156108fc0291906000818181858888f1935050505015801561375c573d6000803e3d6000fd5b5060006014555b5050505050505050565b6001600160a01b03831660009081526034602052604081205481908190819060ff16156137e057602c54156137db576137bc60646137b6602c54886132fb90919063ffffffff16565b90613c95565b92506137d860646137b6602654886132fb90919063ffffffff16565b91505b613985565b6001600160a01b03861660009081526034602052604090205460ff16156138f8576011546301000000900460ff16801561383357506001600160a01b03871660009081526030602052604090205460ff16155b156138a65761384185613cf0565b905080156138a657601154640100000000900460ff161561386d57613866818361433f565b9150613899565b60115465010000000000900460ff1615613899578060156000828254613893919061433f565b90915550505b6138a3818461433f565b92505b602d54156137db576138c860646137b6602d54886132fb90919063ffffffff16565b6138d2908461433f565b92506138ee60646137b6602654886132fb90919063ffffffff16565b6137d8908361433f565b6001600160a01b03871660009081526034602052604090205460ff1615801561393a57506001600160a01b03861660009081526034602052604090205460ff16155b80156139475750602b5415155b156139855761396660646137b6602b54886132fb90919063ffffffff16565b925061398260646137b6602654886132fb90919063ffffffff16565b91505b61398f83836133b5565b925081156139a1576139a187836139d1565b82156139b2576139b2873085612f41565b6139c6826139c087866133b5565b906133b5565b979650505050505050565b6001600160a01b038216613a275760405162461bcd60e51b815260206004820152601a60248201527f6275726e2066726f6d20746865207a65726f20616464726573730000000000006044820152606401610bd5565b604080518082018252601b81527f6275726e20616d6f756e7420657863656564732062616c616e636500000000006020808301919091526001600160a01b0385166000908152908190529190912054613a81918390612f0a565b6001600160a01b038316600090815260208190526040902055600254613aa790826133b5565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517ffa6d6e0e6066ffafeb8530b0afbb780c04b0d3d5e2fc471faa21ba5b93eb86229190a250565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613b7057613b706144cb565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bed91906144e1565b81600181518110613c0057613c006144cb565b6001600160a01b039283166020918202929092010152600954613c2691309116846126a3565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790613c5f9085906000908690309042906004016144fe565b600060405180830381600087803b158015613c7957600080fd5b505af1158015613c8d573d6000803e3d6000fd5b505050505050565b6000808211613ce65760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610bd5565b61269c8284614445565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260208190526040812054602e548290606490613d3e9060ff1684614328565b613d489190614445565b602e54909150600090606490613d6690610100900460ff1685614328565b613d709190614445565b9050818511613d8457506000949350505050565b80851115613db857602e54606490613da59062010000900460ff1687614328565b613daf9190614445565b95945050505050565b6064613dc48383614290565b602e54879062010000900460ff16613ddc8683614290565b613de69190614328565b613df09190614328565b613da59190614445565b6001600160a01b03811681146131cc57600080fd5b600060208284031215613e2157600080fd5b813561269c81613dfa565b600060208083528351808285015260005b81811015613e5957858101830151858201604001528201613e3d565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215613e8d57600080fd5b8235613e9881613dfa565b946020939093013593505050565b80151581146131cc57600080fd5b803560ff81168114613ec557600080fd5b919050565b60008060008060008060c08789031215613ee357600080fd5b8635613eee81613ea6565b95506020870135613efe81613ea6565b94506040870135613f0e81613ea6565b9350613f1c60608801613eb4565b9250613f2a60808801613eb4565b9150613f3860a08801613eb4565b90509295509295509295565b600080600060608486031215613f5957600080fd5b8335613f6481613dfa565b92506020840135613f7481613dfa565b929592945050506040919091013590565b60008060008060808587031215613f9b57600080fd5b8435613fa681613dfa565b93506020850135613fb681613dfa565b92506040850135613fc681613dfa565b91506060850135613fd681613dfa565b939692955090935050565b60008060408385031215613ff457600080fd5b8235613e9881613ea6565b60008060008060008060c0878903121561401857600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600080600080600080610100898b03121561405f57600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b600080600080600060a086880312156140af57600080fd5b85356140ba81613dfa565b945060208601356140ca81613ea6565b935060408601356140da81613ea6565b925060608601356140ea81613ea6565b915060808601356140fa81613ea6565b809150509295509295909350565b6000806040838503121561411b57600080fd5b50508035926020909101359150565b6000806040838503121561413d57600080fd5b823561414881613dfa565b9150602083013561415881613ea6565b809150509250929050565b600080600080600080600080610100898b03121561418057600080fd5b883597506020890135965060408901359550606089013594506080890135935060a0890135925060c08901356141b581613ea6565b915060e08901356141c581613ea6565b809150509295985092959890939650565b600081518084526020808501945080840160005b8381101561420f5781516001600160a01b0316875295820195908201906001016141ea565b509495945050505050565b828152604060208201526000612f3960408301846141d6565b6000806040838503121561424657600080fd5b823561425181613dfa565b9150602083013561415881613dfa565b60006020828403121561427357600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ba057610ba061427a565b600181811c908216806142b757607f821691505b6020821081036142d757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602b908201527f5368617265644f776e61626c653a2063616c6c6572206973206e6f742061207360408201526a3430b932b21037bbb732b960a91b606082015260800190565b8082028115828204841417610ba057610ba061427a565b80820180821115610ba057610ba061427a565b600181815b8085111561438d5781600019048211156143735761437361427a565b8085161561438057918102915b93841c9390800290614357565b509250929050565b6000826143a457506001610ba0565b816143b157506000610ba0565b81600181146143c757600281146143d1576143ed565b6001915050610ba0565b60ff8411156143e2576143e261427a565b50506001821b610ba0565b5060208310610133831016604e8410600b8410161715614410575081810a610ba0565b61441a8383614352565b806000190482111561442e5761442e61427a565b029392505050565b600061269c60ff841683614395565b60008261446257634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561447957600080fd5b5051919050565b60006020828403121561449257600080fd5b815161269c81613ea6565b6000806000606084860312156144b257600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156144f357600080fd5b815161269c81613dfa565b85815284602082015260a06040820152600061451d60a08301866141d6565b6001600160a01b039490941660608301525060800152939250505056fe7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e9ffc03ff4eb267d4b2b3766d201f1476ecec24ce7a4e305e63d19425930490d64736f6c634300081100338be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061028b5760003560e01c8063715018a61161015a578063b62496f5116100c1578063e93d8bcb1161007a578063e93d8bcb146109f9578063eb2ea50314610a19578063f14210a614610a4f578063f2fde38b14610a6f578063f3fef3a314610a8f578063f6d0bf2f14610aaf57600080fd5b8063b62496f5146108aa578063b7a46757146108da578063cc4e0f50146108ef578063d935b6741461095b578063dac48a0814610990578063dd62ed3e146109b357600080fd5b806395d89b411161011357806395d89b41146107975780639a7a23d6146107ac578063a18715e0146107cc578063a457c2d71461084a578063a558a6891461086a578063a9059cbb1461088a57600080fd5b8063715018a61461067457806377596a011461068957806386867216146106c25780638da5cb5b1461073957806390b89ea31461075757806391b32b321461077757600080fd5b8063313ce567116101fe578063637586f6116101b7578063637586f6146105a957806365b8dbc0146105c9578063661ecc72146105e95780636a0a3d171461060957806370a08231146106295780637115d00e1461065f57600080fd5b8063313ce567146104f25780633155086f1461051457806339509351146105295780633fd06a2f146105495780634ada218b146105695780635073fe341461058957600080fd5b80630ee2cb10116102505780630ee2cb101461041f5780631341d95c146104515780631694505e1461047357806318160ddd1461049357806323b872dd146104b257806330b73c93146104d257600080fd5b80628a2141146102975780630330583a146102cc57806303cf071b1461035857806306fdde03146103cd578063095ea7b3146103ef57600080fd5b3661029257005b600080fd5b3480156102a357600080fd5b506102ac610acd565b604080519384526020840192909252908201526060015b60405180910390f35b3480156102d857600080fd5b5061032e6102e7366004613e0f565b6001600160a01b0316600090815260316020908152604080832054602f83528184205460328452828520546030909452919093205460ff9384169491841693928316921690565b604080519415158552921515602085015290151591830191909152151560608201526080016102c3565b34801561036457600080fd5b50601654601754601a54601854601954601154604080519687526020870195909552938501929092526060840152608083015260ff6101008083048216151560a08501526201000083048216151560c0850152600160301b90920416151560e0830152016102c3565b3480156103d957600080fd5b506103e2610afd565b6040516102c39190613e2c565b3480156103fb57600080fd5b5061040f61040a366004613e7a565b610b8f565b60405190151581526020016102c3565b34801561042b57600080fd5b506006546001600160a01b03165b6040516001600160a01b0390911681526020016102c3565b34801561045d57600080fd5b5061047161046c366004613eca565b610ba6565b005b34801561047f57600080fd5b50600954610439906001600160a01b031681565b34801561049f57600080fd5b506002545b6040519081526020016102c3565b3480156104be57600080fd5b5061040f6104cd366004613f44565b610dbb565b3480156104de57600080fd5b506104716104ed366004613f85565b610e24565b3480156104fe57600080fd5b50601f5460405160ff90911681526020016102c3565b34801561052057600080fd5b50610471611115565b34801561053557600080fd5b5061040f610544366004613e7a565b611252565b34801561055557600080fd5b50610471610564366004613fe1565b611288565b34801561057557600080fd5b5060115461040f9062010000900460ff1681565b34801561059557600080fd5b506104716105a4366004613fff565b61132e565b3480156105b557600080fd5b506104716105c4366004614042565b61144a565b3480156105d557600080fd5b506104716105e4366004613e0f565b61165c565b3480156105f557600080fd5b50610471610604366004614097565b611752565b34801561061557600080fd5b50610471610624366004613e0f565b6117ee565b34801561063557600080fd5b506104a4610644366004613e0f565b6001600160a01b031660009081526020819052604090205490565b34801561066b57600080fd5b50610471611869565b34801561068057600080fd5b506104716119e4565b34801561069557600080fd5b5061040f6106a4366004613e0f565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156106ce57600080fd5b50601154602e546040805160ff63010000008504811615158252640100000000850481161515602083015265010000000000909404841615159181019190915261010082048316606082015282821660808201526201000090910490911660a082015260c0016102c3565b34801561074557600080fd5b506005546001600160a01b0316610439565b34801561076357600080fd5b50610471610772366004614108565b611a88565b34801561078357600080fd5b50610471610792366004613e0f565b611b3b565b3480156107a357600080fd5b506103e2611b8c565b3480156107b857600080fd5b506104716107c736600461412a565b611b9b565b3480156107d857600080fd5b50600a54600b54600c54600d54600e54604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152821660808201527f0000000000000000000000009c56cd47c42556a7009a4240257ae8cd8d08f74c90911660a082015260c0016102c3565b34801561085657600080fd5b5061040f610865366004613e7a565b611c81565b34801561087657600080fd5b50610471610885366004614163565b611cfe565b34801561089657600080fd5b5061040f6108a5366004613e7a565b61220a565b3480156108b657600080fd5b5061040f6108c5366004613e0f565b60346020526000908152604090205460ff1681565b3480156108e657600080fd5b50610471612217565b3480156108fb57600080fd5b50602c54602d54602b54602554602754602854602954602a5460265460408051998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e0830152610100820152610120016102c3565b34801561096757600080fd5b5061097061224d565b6040805194855260208501939093529183015260608201526080016102c3565b34801561099c57600080fd5b506109a5612362565b6040516102c392919061421a565b3480156109bf57600080fd5b506104a46109ce366004614233565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a0557600080fd5b50610471610a14366004613e0f565b6123fe565b348015610a2557600080fd5b50601154602454600160381b90910460ff16906040805192151583526020830191909152016102c3565b348015610a5b57600080fd5b50610471610a6a366004614261565b612481565b348015610a7b57600080fd5b50610471610a8a366004613e0f565b6124d2565b348015610a9b57600080fd5b50610471610aaa366004613e7a565b6125ed565b348015610abb57600080fd5b50601554601254601354601454610970565b600080600080610adc60025490565b9050600081602054610aee9190614290565b60205496929550935090915050565b606060038054610b0c906142a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b38906142a3565b8015610b855780601f10610b5a57610100808354040283529160200191610b85565b820191906000526020600020905b815481529060010190602001808311610b6857829003601f168201915b5050505050905090565b6000610b9c3384846126a3565b5060015b92915050565b3360009081526007602052604090205460ff16610bde5760405162461bcd60e51b8152600401610bd5906142dd565b60405180910390fd5b600a8360ff1610158015610bf6575060288360ff1611155b610c505760405162461bcd60e51b815260206004820152602560248201527f63616e6e6f742073657420566d6178206f757473696465203130252f34302520604482015264726174696f60d81b6064820152608401610bd5565b60018260ff1610158015610c685750600a8260ff1611155b610cc05760405162461bcd60e51b8152602060048201526024808201527f63616e6e6f742073657420566d696e206f7574736964652031252f31302520726044820152636174696f60e01b6064820152608401610bd5565b60018160ff1610158015610cd8575060148160ff1611155b610d355760405162461bcd60e51b815260206004820152602860248201527f6d6178206a6565747320666565206d757374206265206265747777656e20312560448201526720616e642032302560c01b6064820152608401610bd5565b60118054941515650100000000000265ff0000000000199615156401000000000264ff00000000199815156301000000029890981664ffff0000001990961695909517969096179490941692909217909355602e805460ff938416620100000262ff00ff19958516610100029590951662ffffff19909116179190921617919091179055565b6000610dc88484846127b1565b610e1a8433610e158560405180606001604052806021815260200161453b602191396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612f0a565b6126a3565b5060019392505050565b3360009081526007602052604090205460ff16610e535760405162461bcd60e51b8152600401610bd5906142dd565b600a546001600160a01b03858116911614610f0257600a80546001600160a01b039081166000908152602f60208181526040808420805460ff1990811690915586548616855260318084528286208054831690558754871686526030808552838720805484169055968c168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b600b546001600160a01b03848116911614610fb157600b80546001600160a01b039081166000908152602f60208181526040808420805460ff1990811690915586548616855260318084528286208054831690558754871686526030808552838720805484169055968b168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b600c546001600160a01b0383811691161461106057600c80546001600160a01b039081166000908152602f60208181526040808420805460ff1990811690915586548616855260318084528286208054831690558754871686526030808552838720805484169055968a168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b600d546001600160a01b0382811691161461110f57600d80546001600160a01b039081166000908152602f60208181526040808420805460ff19908116909155865486168552603180845282862080548316905587548716865260308085528387208054841690559689168087529484528286208054831660019081179091559084528286208054831682179055959092529092208054909216909217905581546001600160a01b0319161790555b50505050565b3360009081526007602052604090205460ff166111445760405162461bcd60e51b8152600401610bd5906142dd565b6015541561116f57600d546015546111699130916001600160a01b0390911690612f41565b60006015555b601254156111ba57600a546012546040516001600160a01b039092169181156108fc0291906000818181858888f193505050501580156111b3573d6000803e3d6000fd5b5060006012555b6013541561120557600b546013546040516001600160a01b039092169181156108fc0291906000818181858888f193505050501580156111fe573d6000803e3d6000fd5b5060006013555b6014541561125057600c546014546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015611249573d6000803e3d6000fd5b5060006014555b565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b9c918590610e15908661263d565b3360009081526007602052604090205460ff166112b75760405162461bcd60e51b8152600401610bd5906142dd565b6170808111156113095760405162461bcd60e51b815260206004820181905260248201527f4d696e54696d652043616e2774206265206d6f7265207468616e2061204461796044820152606401610bd5565b60245560118054911515600160381b0267ff0000000000000019909216919091179055565b3360009081526007602052604090205460ff1661135d5760405162461bcd60e51b8152600401610bd5906142dd565b60288311156113a25760405162461bcd60e51b81526020600482015260116024820152702737ba1036b7b932903a3430b7101936b760791b6044820152606401610bd5565b60006113b082610e10614328565b6113bd8462015180614328565b6113c7919061433f565b90506113d3814261433f565b602255601f546000906113ea9060ff16600a614436565b6113f49089614328565b905060008661140b89670de0b6b3a7640000614328565b6114159190614445565b905061142182826130c7565b6011805462ff000019166201000017905561143c864361433f565b602355505050505050505050565b3360009081526007602052604090205460ff166114795760405162461bcd60e51b8152600401610bd5906142dd565b601a54881115801561148b5750848810155b6114fd5760405162461bcd60e51b815260206004820152603a60248201527f546f74616c205461782063616e277420657863656564204d617854617865732e60448201527f206f72206265206c6f776572207468616e206275726e207461780000000000006064820152608401610bd5565b60006115158261150f8581898961263d565b9061263d565b601a549091506115298761150f848b61263d565b11156115775760405162461bcd60e51b815260206004820181905260248201527f546f74616c205461782063616e277420657863656564204d617854617865732e6044820152606401610bd5565b87156116125760265488101580156115915750601a548811155b6116125760405162461bcd60e51b815260206004820152604660248201527f57616c6c657420322057616c6c657420546178206d757374206265207570646160448201527f74656420746f206265747765656e206275726e2074617820616e642032352070606482015265195c98d95b9d60d21b608482015260a401610bd5565b602c899055602b88905560268690556025879055602785905560288490556029839055602a82905561164e8661150f848187818a818f8e61263d565b602d55505050505050505050565b3360009081526007602052604090205460ff1661168b5760405162461bcd60e51b8152600401610bd5906142dd565b6009546001600160a01b03908116908216036116f55760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610bd5565b6009546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526007602052604090205460ff166117815760405162461bcd60e51b8152600401610bd5906142dd565b6001600160a01b039094166000908152602f60209081526040808320805496151560ff199788161790556031825280832080549515159587169590951790945560328152838220805493151593861693909317909255603090915220805492151592909116919091179055565b3360009081526007602052604090205460ff1661181d5760405162461bcd60e51b8152600401610bd5906142dd565b61182681613178565b6001600160a01b03166000908152602f60209081526040808320805460ff1990811690915560318352818420805482169055603090925290912080549091169055565b3360009081526007602052604090205460ff166118985760405162461bcd60e51b8152600401610bd5906142dd565b6022544210156118dd5760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b6044820152606401610bd5565b6040516370a0823160e01b81523060048201527f0000000000000000000000009c56cd47c42556a7009a4240257ae8cd8d08f74c906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196a9190614467565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044015b6020604051808303816000875af11580156119bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119df9190614480565b505050565b6005546001600160a01b03163314611a3e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bd5565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b3360009081526007602052604090205460ff16611ab75760405162461bcd60e51b8152600401610bd5906142dd565b6000611ac582610e10614328565b611ad28462015180614328565b611adc919061433f565b9050426022541015611aed57426022555b611b0360225482611afe919061433f565b6131cf565b6040518181527fe9da15d4cb5bea133d9613a866c909df5594489b91a3f780d43720d560b3c94c9060200160405180910390a1505050565b3360009081526007602052604090205460ff16611b6a5760405162461bcd60e51b8152600401610bd5906142dd565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610b0c906142a3565b3360009081526007602052604090205460ff16611bca5760405162461bcd60e51b8152600401610bd5906142dd565b7f0000000000000000000000009c56cd47c42556a7009a4240257ae8cd8d08f74c6001600160a01b0316826001600160a01b031603611c73576040805162461bcd60e51b81526020600482015260248101919091527f546865204d61726b657420706169722063616e6e6f742062652072656d6f766560448201527f642066726f6d206175746f6d617465644d61726b65744d616b657250616972736064820152608401610bd5565b611c7d82826131e2565b5050565b6000610b9c3384610e15856040518060400160405280601e81526020017f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f000081525060016000611ccd3390565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612f0a565b3360009081526007602052604090205460ff16611d2d5760405162461bcd60e51b8152600401610bd5906142dd565b6000611d3860025490565b9050611d45606482614445565b601f54611d569060ff16600a614436565b611d60908b614328565b10158015611d895750601f548190611d7c9060ff16600a614436565b611d86908b614328565b11155b611dfb5760405162461bcd60e51b815260206004820152603b60248201527f4d617757616c6c6574206d757374206265206265747765656e20746f74616c7360448201527f7570706c7920616e64203125206f6620746f74616c737570706c7900000000006064820152608401610bd5565b611e076103e882614445565b601f54611e189060ff16600a614436565b611e22908a614328565b10158015611e4b5750601f548190611e3e9060ff16600a614436565b611e48908a614328565b11155b611ebd5760405162461bcd60e51b815260206004820152603b60248201527f4d617753656c6c206d757374206265206265747765656e20746f74616c73757060448201527f706c7920616e6420302e3125206f6620746f74616c737570706c7900000000006064820152608401610bd5565b611ec961271082614445565b601f54611eda9060ff16600a614436565b611ee49089614328565b10158015611efc5750611ef8600287614445565b8711155b611f6e5760405162461bcd60e51b815260206004820152603a60248201527f4d696e53776170206d757374206265206265747765656e206d6178737761702f60448201527f3220616e6420302e303125206f6620746f74616c737570706c790000000000006064820152608401610bd5565b610e108510158015611f835750620151808511155b611feb5760405162461bcd60e51b815260206004820152603360248201527f636c61696d57616974206d757374206265207570646174656420746f206265746044820152727765656e203120616e6420323420686f75727360681b6064820152608401610bd5565b60018410158015611ffd575060198411155b6120655760405162461bcd60e51b815260206004820152603360248201527f4d617820546178206d757374206265207570646174656420746f206265747765604482015272195b880c48185b99080c8d481c195c98d95b9d606a1b6064820152608401610bd5565b6120708760026132fb565b861015801561209a5750601f54819061208d9060ff16600a614436565b6120979088614328565b11155b6121025760405162461bcd60e51b815260206004820152603360248201527f4d617853776170206d757374206265206265747765656e20746f74616c73757060448201527238363c9030b7321029bbb0b826b4b7103c101960691b6064820152608401610bd5565b6019869055601f546121189060ff16600a614436565b6019546121259190614328565b601b556017899055601f5461213e9060ff16600a614436565b60175461214b9190614328565b601d556016889055601f546121649060ff16600a614436565b6016546121719190614328565b601c556018879055601f5461218a9060ff16600a614436565b6018546121979190614328565b601e55601a8490556011805466ff00000000ff001916600160301b8415150261ff00191617610100851515908102919091179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a1505050505050505050565b6000610b9c3384846127b1565b3360009081526007602052604090205460ff166122465760405162461bcd60e51b8152600401610bd5906142dd565b6000601555565b60008060008060225442101561234f57620151804260225461226f9190614290565b6122799190614445565b9350610e1061228b8562015180614328565b426022546122999190614290565b6122a39190614290565b6122ad9190614445565b9250603c6122bd84610e10614328565b6122ca8662015180614328565b426022546122d89190614290565b6122e29190614290565b6122ec9190614290565b6122f69190614445565b915061230382603c614328565b61230f84610e10614328565b61231c8662015180614328565b4260225461232a9190614290565b6123349190614290565b61233e9190614290565b6123489190614290565b905061235c565b5060009250829150819050805b90919293565b3360009081526007602052604081205460609060ff166123945760405162461bcd60e51b8152600401610bd5906142dd565b601080546040805160208084028201810190925282815291945084929190829084908301828280156123ef57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116123d1575b50505050509050915091509091565b3360009081526007602052604090205460ff1661242d5760405162461bcd60e51b8152600401610bd5906142dd565b6124368161337d565b6001600160a01b03166000908152602f602090815260408083208054600160ff1991821681179092556031845282852080548216831790556030909352922080549091169091179055565b6008546001600160a01b0316331461249857600080fd5b6008546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611c7d573d6000803e3d6000fd5b6005546001600160a01b0316331461252c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bd5565b6001600160a01b0381166125915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bd5565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b0316331461260457600080fd5b60085460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb9060440161199c565b60008061264a838561433f565b90508381101561269c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bd5565b9392505050565b6001600160a01b0383166126f95760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f20616464726573730000006044820152606401610bd5565b6001600160a01b03821661274f5760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f206164647265737300000000006044820152606401610bd5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166128075760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610bd5565b6001600160a01b03821661285d5760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610bd5565b8060000361286a57505050565b6001600160a01b03821630148015906128915750600e546001600160a01b03838116911614155b1561291a576001600160a01b03831660009081526032602052604090205460ff161580156128d857506001600160a01b03821660009081526032602052604090205460ff16155b61291a5760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610bd5565b60115462010000900460ff16612992576001600160a01b03831660009081526030602052604090205460ff166129925760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420616c6c6f776564207965740000000000000000006044820152606401610bd5565b60115462010000900460ff1680156129ab575060235443105b80156129d057506001600160a01b03821660009081526030602052604090205460ff16155b80156129f457506001600160a01b03831660009081526034602052604090205460ff165b15612a5f576001600160a01b0382166000818152603260205260408120805460ff191660019081179091556010805491820181559091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720180546001600160a01b03191690911790555b6001600160a01b03821660009081526030602052604090205460ff16158015612aa057506001600160a01b03831660009081526034602052604090205460ff165b15612b53576001600160a01b0382163014801590612acc5750600e546001600160a01b03838116911614155b15612b53576001600160a01b038216600090815260208190526040902054601d54612af7838361433f565b1115612b515760405162461bcd60e51b8152602060048201526024808201527f77616c6c657420616d6f756e7420657863656564206d617857616c6c6574416d6044820152631bdd5b9d60e21b6064820152608401610bd5565b505b80600003612b6057505050565b6001600160a01b03821660009081526034602052604090205460ff168015612ba157506001600160a01b03831660009081526031602052604090205460ff16155b8015612bc657506001600160a01b03821660009081526031602052604090205460ff16155b15612c4357601c54811115612c435760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610bd5565b601154600160381b900460ff168015612c7557506001600160a01b03831660009081526030602052604090205460ff16155b8015612c9957506001600160a01b03821660009081526034602052604090205460ff165b15612d2f576024546001600160a01b0384166000908152603360205260409020544391612cc59161433f565b1115612d135760405162461bcd60e51b815260206004820152601960248201527f547279696e6720746f2073656c6c20746f6f206f6674656e21000000000000006044820152606401610bd5565b6001600160a01b03831660009081526033602052604090204390555b3060009081526020819052604090205460155415801590612d51575080601554105b15612d765760155430600090815260208190526040902054612d739190614290565b90505b601e54602654602d549183101591600091612d9191906133b5565b9050601b548310612da257601b5492505b601154610100900460ff168015612db65750815b8015612dc5575060115460ff16155b8015612dea57506001600160a01b03861660009081526034602052604090205460ff16155b8015612e0f57506001600160a01b03861660009081526030602052604090205460ff16155b8015612e3457506001600160a01b03851660009081526030602052604090205460ff16155b8015612e3f57508015155b15612e65576011805460ff19166001179055612e5a83613411565b6011805460ff191690555b6001600160a01b0386166000908152602f6020526040902054849060ff16158015612ea957506001600160a01b0386166000908152602f602052604090205460ff16155b15612ebc57612eb987878761376d565b90505b600e546001600160a01b0390811690871603612ee157612edc87826139d1565b612f01565b600e546001600160a01b03878116911614612f0157612f01878783612f41565b50505050505050565b60008184841115612f2e5760405162461bcd60e51b8152600401610bd59190613e2c565b50612f398385614290565b949350505050565b6001600160a01b038316612f975760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610bd5565b6001600160a01b038216612fed5760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610bd5565b604080518082018252601f81527f7472616e7366657220616d6f756e7420657863656564732062616c616e6365006020808301919091526001600160a01b0386166000908152908190529190912054613047918390612f0a565b6001600160a01b038085166000908152602081905260408082209390935590841681522054613076908261263d565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016127a4565b6009546130df9030906001600160a01b0316846126a3565b60095460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561314c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613171919061449d565b5050505050565b3360009081526007602052604090205460ff166131a75760405162461bcd60e51b8152600401610bd5906142dd565b6131cc816001600160a01b03166000908152600760205260409020805460ff19169055565b50565b60225481116131dd57600080fd5b602255565b3360009081526007602052604090205460ff166132115760405162461bcd60e51b8152600401610bd5906142dd565b6001600160a01b03821660009081526034602052604090205481151560ff9091161515036132a75760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610bd5565b6001600160a01b038216600081815260346020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60008260000361330d57506000610ba0565b60006133198385614328565b9050826133268583614445565b1461269c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bd5565b3360009081526007602052604090205460ff166133ac5760405162461bcd60e51b8152600401610bd5906142dd565b6131cc81613aef565b6000828211156134075760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610bd5565b61269c8284614290565b600061342a602654602d546133b590919063ffffffff16565b90506000613443602a54836133b590919063ffffffff16565b9050600047905060008360026025548761345d9190614328565b6134679190614445565b6134719190614445565b905083602a54866134829190614328565b61348c9190614445565b6015600082825461349d919061433f565b909155506000905081856134b18689614328565b6134bb9190614445565b6134c59190614290565b90506134d081613b3b565b60006134dc8447614290565b9050600060026025546134ef9190614445565b6134f99087614290565b6002602554846135099190614328565b6135139190614445565b61351d9190614445565b9050600260255461352e9190614445565b6135389087614290565b6027546135459084614328565b61354f9190614445565b60126000828254613560919061433f565b909155505060255461357490600290614445565b61357e9087614290565b60285461358b9084614328565b6135959190614445565b601360008282546135a6919061433f565b90915550506025546135ba90600290614445565b6135c49087614290565b6029546135d19084614328565b6135db9190614445565b601460008282546135ec919061433f565b9091555050602554156136455761360384826130c7565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b601154600160301b900460ff1615613763576015541561368257600d5460155461367c9130916001600160a01b0390911690612f41565b60006015555b601254156136cd57600a546012546040516001600160a01b039092169181156108fc0291906000818181858888f193505050501580156136c6573d6000803e3d6000fd5b5060006012555b6013541561371857600b546013546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015613711573d6000803e3d6000fd5b5060006013555b6014541561376357600c546014546040516001600160a01b039092169181156108fc0291906000818181858888f1935050505015801561375c573d6000803e3d6000fd5b5060006014555b5050505050505050565b6001600160a01b03831660009081526034602052604081205481908190819060ff16156137e057602c54156137db576137bc60646137b6602c54886132fb90919063ffffffff16565b90613c95565b92506137d860646137b6602654886132fb90919063ffffffff16565b91505b613985565b6001600160a01b03861660009081526034602052604090205460ff16156138f8576011546301000000900460ff16801561383357506001600160a01b03871660009081526030602052604090205460ff16155b156138a65761384185613cf0565b905080156138a657601154640100000000900460ff161561386d57613866818361433f565b9150613899565b60115465010000000000900460ff1615613899578060156000828254613893919061433f565b90915550505b6138a3818461433f565b92505b602d54156137db576138c860646137b6602d54886132fb90919063ffffffff16565b6138d2908461433f565b92506138ee60646137b6602654886132fb90919063ffffffff16565b6137d8908361433f565b6001600160a01b03871660009081526034602052604090205460ff1615801561393a57506001600160a01b03861660009081526034602052604090205460ff16155b80156139475750602b5415155b156139855761396660646137b6602b54886132fb90919063ffffffff16565b925061398260646137b6602654886132fb90919063ffffffff16565b91505b61398f83836133b5565b925081156139a1576139a187836139d1565b82156139b2576139b2873085612f41565b6139c6826139c087866133b5565b906133b5565b979650505050505050565b6001600160a01b038216613a275760405162461bcd60e51b815260206004820152601a60248201527f6275726e2066726f6d20746865207a65726f20616464726573730000000000006044820152606401610bd5565b604080518082018252601b81527f6275726e20616d6f756e7420657863656564732062616c616e636500000000006020808301919091526001600160a01b0385166000908152908190529190912054613a81918390612f0a565b6001600160a01b038316600090815260208190526040902055600254613aa790826133b5565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517ffa6d6e0e6066ffafeb8530b0afbb780c04b0d3d5e2fc471faa21ba5b93eb86229190a250565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613b7057613b706144cb565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bed91906144e1565b81600181518110613c0057613c006144cb565b6001600160a01b039283166020918202929092010152600954613c2691309116846126a3565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790613c5f9085906000908690309042906004016144fe565b600060405180830381600087803b158015613c7957600080fd5b505af1158015613c8d573d6000803e3d6000fd5b505050505050565b6000808211613ce65760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610bd5565b61269c8284614445565b7f0000000000000000000000009c56cd47c42556a7009a4240257ae8cd8d08f74c6001600160a01b0316600090815260208190526040812054602e548290606490613d3e9060ff1684614328565b613d489190614445565b602e54909150600090606490613d6690610100900460ff1685614328565b613d709190614445565b9050818511613d8457506000949350505050565b80851115613db857602e54606490613da59062010000900460ff1687614328565b613daf9190614445565b95945050505050565b6064613dc48383614290565b602e54879062010000900460ff16613ddc8683614290565b613de69190614328565b613df09190614328565b613da59190614445565b6001600160a01b03811681146131cc57600080fd5b600060208284031215613e2157600080fd5b813561269c81613dfa565b600060208083528351808285015260005b81811015613e5957858101830151858201604001528201613e3d565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215613e8d57600080fd5b8235613e9881613dfa565b946020939093013593505050565b80151581146131cc57600080fd5b803560ff81168114613ec557600080fd5b919050565b60008060008060008060c08789031215613ee357600080fd5b8635613eee81613ea6565b95506020870135613efe81613ea6565b94506040870135613f0e81613ea6565b9350613f1c60608801613eb4565b9250613f2a60808801613eb4565b9150613f3860a08801613eb4565b90509295509295509295565b600080600060608486031215613f5957600080fd5b8335613f6481613dfa565b92506020840135613f7481613dfa565b929592945050506040919091013590565b60008060008060808587031215613f9b57600080fd5b8435613fa681613dfa565b93506020850135613fb681613dfa565b92506040850135613fc681613dfa565b91506060850135613fd681613dfa565b939692955090935050565b60008060408385031215613ff457600080fd5b8235613e9881613ea6565b60008060008060008060c0878903121561401857600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600080600080600080610100898b03121561405f57600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b600080600080600060a086880312156140af57600080fd5b85356140ba81613dfa565b945060208601356140ca81613ea6565b935060408601356140da81613ea6565b925060608601356140ea81613ea6565b915060808601356140fa81613ea6565b809150509295509295909350565b6000806040838503121561411b57600080fd5b50508035926020909101359150565b6000806040838503121561413d57600080fd5b823561414881613dfa565b9150602083013561415881613ea6565b809150509250929050565b600080600080600080600080610100898b03121561418057600080fd5b883597506020890135965060408901359550606089013594506080890135935060a0890135925060c08901356141b581613ea6565b915060e08901356141c581613ea6565b809150509295985092959890939650565b600081518084526020808501945080840160005b8381101561420f5781516001600160a01b0316875295820195908201906001016141ea565b509495945050505050565b828152604060208201526000612f3960408301846141d6565b6000806040838503121561424657600080fd5b823561425181613dfa565b9150602083013561415881613dfa565b60006020828403121561427357600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ba057610ba061427a565b600181811c908216806142b757607f821691505b6020821081036142d757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602b908201527f5368617265644f776e61626c653a2063616c6c6572206973206e6f742061207360408201526a3430b932b21037bbb732b960a91b606082015260800190565b8082028115828204841417610ba057610ba061427a565b80820180821115610ba057610ba061427a565b600181815b8085111561438d5781600019048211156143735761437361427a565b8085161561438057918102915b93841c9390800290614357565b509250929050565b6000826143a457506001610ba0565b816143b157506000610ba0565b81600181146143c757600281146143d1576143ed565b6001915050610ba0565b60ff8411156143e2576143e261427a565b50506001821b610ba0565b5060208310610133831016604e8410600b8410161715614410575081810a610ba0565b61441a8383614352565b806000190482111561442e5761442e61427a565b029392505050565b600061269c60ff841683614395565b60008261446257634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561447957600080fd5b5051919050565b60006020828403121561449257600080fd5b815161269c81613ea6565b6000806000606084860312156144b257600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156144f357600080fd5b815161269c81613dfa565b85815284602082015260a06040820152600061451d60a08301866141d6565b6001600160a01b039490941660608301525060800152939250505056fe7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e9ffc03ff4eb267d4b2b3766d201f1476ecec24ce7a4e305e63d19425930490d64736f6c63430008110033

Deployed Bytecode Sourcemap

46341:528:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26996:276;;;;;;;;;;;;;:::i;:::-;;;;216:25:1;;;272:2;257:18;;250:34;;;;300:18;;;293:34;204:2;189:18;26996:276:0;;;;;;;;25286:235;;;;;;;;;;-1:-1:-1;25286:235:0;;;;;:::i;:::-;-1:-1:-1;;;;;25409:29:0;25346:10;25409:29;;;:20;:29;;;;;;;;;25440:19;:28;;;;;;25470:14;:23;;;;;;25495:14;:23;;;;;;;;25409:29;;;;;25440:28;;;;25470:23;;;;25495;;25286:235;;;;;958:14:1;;951:22;933:41;;1017:14;;1010:22;1005:2;990:18;;983:50;1076:14;;1069:22;1049:18;;;1042:50;;;;1135:14;1128:22;1123:2;1108:18;;1101:50;920:3;905:19;25286:235:0;726:431:1;25820:294:0;;;;;;;;;;-1:-1:-1;26008:7:0;;26017:9;;26028:8;;26038:7;;26047;;26056:21;;25820:294;;;1487:25:1;;;1543:2;1528:18;;1521:34;;;;1571:18;;;1564:34;;;;1629:2;1614:18;;1607:34;1672:3;1657:19;;1650:35;26056:21:0;;;;;;;1729:14:1;1722:22;1716:3;1701:19;;1694:51;26079:14:0;;;;;1789::1;1782:22;1776:3;1761:19;;1754:51;-1:-1:-1;;;26095:16:0;;;;1849:14:1;1842:22;1836:3;1821:19;;1814:51;1459:19;25820:294:0;1162:709:1;13710:75:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14421:169::-;;;;;;;;;;-1:-1:-1;14421:169:0;;;;;:::i;:::-;;:::i;:::-;;;2914:14:1;;2907:22;2889:41;;2877:2;2862:18;14421:169:0;2749:187:1;17645:72:0;;;;;;;;;;-1:-1:-1;17707:8:0;;-1:-1:-1;;;;;17707:8:0;17645:72;;;-1:-1:-1;;;;;3105:32:1;;;3087:51;;3075:2;3060:18;17645:72:0;2941:203:1;36511:631:0;;;;;;;;;;-1:-1:-1;36511:631:0;;;;;:::i;:::-;;:::i;:::-;;18861:41;;;;;;;;;;-1:-1:-1;18861:41:0;;;;-1:-1:-1;;;;;18861:41:0;;;13876:92;;;;;;;;;;-1:-1:-1;13954:12:0;;13876:92;;;4542:25:1;;;4530:2;4515:18;13876:92:0;4396:177:1;14599:314:0;;;;;;;;;;-1:-1:-1;14599:314:0;;;;;:::i;:::-;;:::i;28751:2104::-;;;;;;;;;;-1:-1:-1;28751:2104:0;;;;;:::i;:::-;;:::i;25213:67::-;;;;;;;;;;-1:-1:-1;25270:7:0;;25213:67;;25270:7;;;;5889:36:1;;5877:2;5862:18;25213:67:0;5747:184:1;37150:642:0;;;;;;;;;;;;;:::i;14922:218::-;;;;;;;;;;-1:-1:-1;14922:218:0;;;;;:::i;:::-;;:::i;30871:225::-;;;;;;;;;;-1:-1:-1;30871:225:0;;;;;:::i;:::-;;:::i;19311:34::-;;;;;;;;;;-1:-1:-1;19311:34:0;;;;;;;;;;;35406:604;;;;;;;;;;-1:-1:-1;35406:604:0;;;;;:::i;:::-;;:::i;32737:1364::-;;;;;;;;;;-1:-1:-1;32737:1364:0;;;;;:::i;:::-;;:::i;34114:316::-;;;;;;;;;;-1:-1:-1;34114:316:0;;;;;:::i;:::-;;:::i;34439:314::-;;;;;;;;;;-1:-1:-1;34439:314:0;;;;;:::i;:::-;;:::i;28464:275::-;;;;;;;;;;-1:-1:-1;28464:275:0;;;;;:::i;:::-;;:::i;13974:111::-;;;;;;;;;;-1:-1:-1;13974:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;14065:18:0;14048:7;14065:18;;;;;;;;;;;;13974:111;36018:315;;;;;;;;;;;;;:::i;12873:148::-;;;;;;;;;;;;;:::i;17723:101::-;;;;;;;;;;-1:-1:-1;17723:101:0;;;;;:::i;:::-;-1:-1:-1;;;;;17800:22:0;17786:4;17800:22;;;:13;:22;;;;;;;;;17723:101;26536:221;;;;;;;;;;-1:-1:-1;26690:8:0;;26725:7;;26536:221;;;26690:8;;;;;;8532:14:1;8525:22;8507:41;;26700:9:0;;;;;8591:14:1;8584:22;8579:2;8564:18;;8557:50;26711:12:0;;;;;;8650:14:1;8643:22;8623:18;;;8616:50;;;;26690:8:0;26725:7;;;;8697:2:1;8682:18;;8675:34;26734:7:0;;;8740:3:1;8725:19;;8718:35;26743:11:0;;;;;;;8784:3:1;8769:19;;8762:35;8494:3;8479:19;26536:221:0;8238:565:1;12664:71:0;;;;;;;;;;-1:-1:-1;12727:6:0;;-1:-1:-1;;;;;12727:6:0;12664:71;;35031:367;;;;;;;;;;-1:-1:-1;35031:367:0;;;;;:::i;:::-;;:::i;18383:107::-;;;;;;;;;;-1:-1:-1;18383:107:0;;;;;:::i;:::-;;:::i;13791:79::-;;;;;;;;;;;;;:::i;34769:256::-;;;;;;;;;;-1:-1:-1;34769:256:0;;;;;:::i;:::-;;:::i;26234:296::-;;;;;;;;;;-1:-1:-1;26396:15:0;;26422:9;;26442:15;;26468:13;;26492:10;;26234:296;;;-1:-1:-1;;;;;26396:15:0;;;10033:34:1;;26422:9:0;;;10098:2:1;10083:18;;10076:43;26442:15:0;;;10135:18:1;;;10128:43;;;;26468:13:0;;10202:2:1;10187:18;;10180:43;26492:10:0;;10254:3:1;10239:19;;10232:44;26513:13:0;10313:15:1;;;10013:3;10292:19;;10285:44;9982:3;9967:19;26234:296:0;9708:627:1;15149:262:0;;;;;;;;;;-1:-1:-1;15149:262:0;;;;;:::i;:::-;;:::i;31108:1619::-;;;;;;;;;;-1:-1:-1;31108:1619:0;;;;;:::i;:::-;;:::i;14093:175::-;;;;;;;;;;-1:-1:-1;14093:175:0;;;;;:::i;:::-;;:::i;21030:58::-;;;;;;;;;;-1:-1:-1;21030:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;37800:74;;;;;;;;;;;;;:::i;25527:287::-;;;;;;;;;;-1:-1:-1;25698:7:0;;25707:8;;25717:17;;25736:13;;25751;;25766:7;;25775:13;;25790:11;;25803:8;;25527:287;;;11505:25:1;;;11561:2;11546:18;;11539:34;;;;11589:18;;;11582:34;;;;11647:2;11632:18;;11625:34;;;;11690:3;11675:19;;11668:35;;;;11734:3;11719:19;;11712:35;11778:3;11763:19;;11756:35;11822:3;11807:19;;11800:35;11866:3;11851:19;;11844:35;11492:3;11477:19;25527:287:0;11134:751:1;27288:639:0;;;;;;;;;;;;;:::i;:::-;;;;12121:25:1;;;12177:2;12162:18;;12155:34;;;;12205:18;;;12198:34;12263:2;12248:18;;12241:34;12108:3;12093:19;27288:639:0;11890:391:1;36341:162:0;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;14277:135::-;;;;;;;;;;-1:-1:-1;14277:135:0;;;;;:::i;:::-;-1:-1:-1;;;;;14383:18:0;;;14366:7;14383:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14277:135;28188:268;;;;;;;;;;-1:-1:-1;28188:268:0;;;;;:::i;:::-;;:::i;26120:108::-;;;;;;;;;;-1:-1:-1;26205:11:0;;26218:7;;-1:-1:-1;;;26205:11:0;;;;;;26120:108;;;13675:14:1;;13668:22;13650:41;;13722:2;13707:18;;13700:34;;;;13623:18;26120:108:0;13482:258:1;18647:115:0;;;;;;;;;;-1:-1:-1;18647:115:0;;;;;:::i;:::-;;:::i;13030:244::-;;;;;;;;;;-1:-1:-1;13030:244:0;;;;;:::i;:::-;;:::i;18496:145::-;;;;;;;;;;-1:-1:-1;18496:145:0;;;;;:::i;:::-;;:::i;26763:221::-;;;;;;;;;;-1:-1:-1;26909:14:0;;26925:19;;26946:13;;26962:19;;26763:221;;26996:276;27042:21;27065:25;27092:19;27124:14;27141;13954:12;;;13876:92;27141:14;27124:31;;27166:19;27204:6;27188:13;;:22;;;;:::i;:::-;27229:13;;;27244:6;;-1:-1:-1;27166:44:0;-1:-1:-1;26996:276:0;;-1:-1:-1;;26996:276:0:o;13710:75::-;13755:13;13778:5;13771:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13710:75;:::o;14421:169::-;14504:4;14521:39;12072:10;14544:7;14553:6;14521:8;:39::i;:::-;-1:-1:-1;14578:4:0;14421:169;;;;;:::o;36511:631::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;;;;;;;;;36689:2:::1;36678:7;:13;;;;:30;;;;;36706:2;36695:7;:13;;;;36678:30;36669:81;;;::::0;-1:-1:-1;;;36669:81:0;;15194:2:1;36669:81:0::1;::::0;::::1;15176:21:1::0;15233:2;15213:18;;;15206:30;15272:34;15252:18;;;15245:62;-1:-1:-1;;;15323:18:1;;;15316:35;15368:19;;36669:81:0::1;14992:401:1::0;36669:81:0::1;36781:1;36770:7;:12;;;;:29;;;;;36797:2;36786:7;:13;;;;36770:29;36761:79;;;::::0;-1:-1:-1;;;36761:79:0;;15600:2:1;36761:79:0::1;::::0;::::1;15582:21:1::0;15639:2;15619:18;;;15612:30;15678:34;15658:18;;;15651:62;-1:-1:-1;;;15729:18:1;;;15722:34;15773:19;;36761:79:0::1;15398:400:1::0;36761:79:0::1;36875:1;36860:11;:16;;;;:37;;;;;36895:2;36880:11;:17;;;;36860:37;36851:91;;;::::0;-1:-1:-1;;;36851:91:0;;16005:2:1;36851:91:0::1;::::0;::::1;15987:21:1::0;16044:2;16024:18;;;16017:30;16083:34;16063:18;;;16056:62;-1:-1:-1;;;16134:18:1;;;16127:38;16182:19;;36851:91:0::1;15803:404:1::0;36851:91:0::1;36953:8;:19:::0;;37015:27;::::1;;::::0;::::1;-1:-1:-1::0;;36983:21:0;::::1;;::::0;::::1;-1:-1:-1::0;;36953:19:0;::::1;;::::0;::::1;36983:21:::0;;;;-1:-1:-1;;36983:21:0;;;;;;;;;;::::1;37015:27:::0;;;::::1;::::0;;;::::1;::::0;;;37053:7:::1;:17:::0;;36953:19:::1;37109:25:::0;;::::1;::::0;::::1;-1:-1:-1::0;;37053:17:0;;::::1;36953:19;37053:17;37109:25:::0;;;;-1:-1:-1;;37109:25:0;;;;37081:17;;;::::1;37109:25:::0;;;;::::1;::::0;;36511:631::o;14599:314::-;14705:4;14722:36;14732:6;14740:9;14751:6;14722:9;:36::i;:::-;14769:114;14778:6;12072:10;14800:82;14838:6;14800:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14800:19:0;;;;;;:11;:19;;;;;;;;12072:10;14800:33;;;;;;;;;;:37;:82::i;:::-;14769:8;:114::i;:::-;-1:-1:-1;14901:4:0;14599:314;;;;;:::o;28751:2104::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;28982:15:::1;::::0;-1:-1:-1;;;;;28959:38:0;;::::1;28982:15:::0;::::1;28959:38;28955:479;;29034:15;::::0;;-1:-1:-1;;;;;29034:15:0;;::::1;29053:5;29014:36:::0;;;:19:::1;:36;::::0;;;;;;;:44;;-1:-1:-1;;29014:44:0;;::::1;::::0;;;29094:15;;;::::1;29073:37:::0;;:20:::1;:37:::0;;;;;;:45;;;::::1;::::0;;29148:15;;;::::1;29133:31:::0;;:14:::1;:31:::0;;;;;;:39;;;::::1;::::0;;29204:40;;::::1;::::0;;;;;;;;;:47;;;::::1;29034:15:::0;29204:47;;::::1;::::0;;;29266:41;;;;;;:48;;;::::1;::::0;::::1;::::0;;29329:35;;;;;;;:42;;;;::::1;::::0;;::::1;::::0;;29385:37;;-1:-1:-1;;;;;;29385:37:0::1;;::::0;;28955:479:::1;29465:9;::::0;-1:-1:-1;;;;;29448:26:0;;::::1;29465:9:::0;::::1;29448:26;29444:428;;29511:9;::::0;;-1:-1:-1;;;;;29511:9:0;;::::1;29524:5;29491:30:::0;;;:19:::1;:30;::::0;;;;;;;:38;;-1:-1:-1;;29491:38:0;;::::1;::::0;;;29565:9;;;::::1;29544:31:::0;;:20:::1;:31:::0;;;;;;:39;;;::::1;::::0;;29613:9;;;::::1;29598:25:::0;;:14:::1;:25:::0;;;;;;:33;;;::::1;::::0;;29671:34;;::::1;::::0;;;;;;;;;:41;;;::::1;29511:9:::0;29671:41;;::::1;::::0;;;29727:35;;;;;;:42;;;::::1;::::0;::::1;::::0;;29784:29;;;;;;;:36;;;;::::1;::::0;;::::1;::::0;;29835:25;;-1:-1:-1;;;;;;29835:25:0::1;;::::0;;29444:428:::1;29909:15;::::0;-1:-1:-1;;;;;29886:38:0;;::::1;29909:15:::0;::::1;29886:38;29882:488;;29961:15;::::0;;-1:-1:-1;;;;;29961:15:0;;::::1;29980:5;29941:36:::0;;;:19:::1;:36;::::0;;;;;;;:44;;-1:-1:-1;;29941:44:0;;::::1;::::0;;;30021:15;;;::::1;30000:37:::0;;:20:::1;:37:::0;;;;;;:45;;;::::1;::::0;;30075:15;;;::::1;30060:31:::0;;:14:::1;:31:::0;;;;;;:39;;;::::1;::::0;;30139:40;;::::1;::::0;;;;;;;;;:47;;;::::1;29961:15:::0;30139:47;;::::1;::::0;;;30201:41;;;;;;:48;;;::::1;::::0;::::1;::::0;;30264:35;;;;;;;:42;;;;::::1;::::0;;::::1;::::0;;30321:37;;-1:-1:-1;;;;;;30321:37:0::1;;::::0;;29882:488:::1;30405:13;::::0;-1:-1:-1;;;;;30384:34:0;;::::1;30405:13:::0;::::1;30384:34;30380:468;;30455:13;::::0;;-1:-1:-1;;;;;30455:13:0;;::::1;30472:5;30435:34:::0;;;:19:::1;:34;::::0;;;;;;;:42;;-1:-1:-1;;30435:42:0;;::::1;::::0;;;30513:13;;;::::1;30492:35:::0;;:20:::1;:35:::0;;;;;;:43;;;::::1;::::0;;30565:13;;;::::1;30550:29:::0;;:14:::1;:29:::0;;;;;;:37;;;::::1;::::0;;30627:38;;::::1;::::0;;;;;;;;;:45;;;::::1;30455:13:::0;30627:45;;::::1;::::0;;;30687:39;;;;;;:46;;;::::1;::::0;::::1;::::0;;30748:33;;;;;;;:40;;;;::::1;::::0;;::::1;::::0;;30803:33;;-1:-1:-1;;;;;;30803:33:0::1;;::::0;;30380:468:::1;28751:2104:::0;;;;:::o;37150:642::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;37220:14:::1;::::0;:19;37217:145:::1;;37287:13;::::0;37302:14:::1;::::0;37256:61:::1;::::0;37280:4:::1;::::0;-1:-1:-1;;;;;37287:13:0;;::::1;::::0;37256:15:::1;:61::i;:::-;37349:1;37332:14;:18:::0;37217:145:::1;37375:19;::::0;:24;37372:139:::1;;37416:15;::::0;37441:19:::1;::::0;37416:45:::1;::::0;-1:-1:-1;;;;;37416:15:0;;::::1;::::0;:45;::::1;;;::::0;37441:19;37416:15:::1;:45:::0;:15;:45;37441:19;37416:15;:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;37498:1:0::1;37476:19;:23:::0;37372:139:::1;37524:13;::::0;:18;37521:115:::1;;37559:9;::::0;37578:13:::1;::::0;37559:33:::1;::::0;-1:-1:-1;;;;;37559:9:0;;::::1;::::0;:33;::::1;;;::::0;37578:13;37559:9:::1;:33:::0;:9;:33;37578:13;37559:9;:33;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;37623:1:0::1;37607:13;:17:::0;37521:115:::1;37649:19;::::0;:24;37646:139:::1;;37690:15;::::0;37715:19:::1;::::0;37690:45:::1;::::0;-1:-1:-1;;;;;37690:15:0;;::::1;::::0;:45;::::1;;;::::0;37715:19;37690:15:::1;:45:::0;:15;:45;37715:19;37690:15;:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;37772:1:0::1;37750:19;:23:::0;37646:139:::1;37150:642::o:0;14922:218::-;12072:10;15010:4;15059:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15059:34:0;;;;;;;;;;15010:4;;15027:83;;15050:7;;15059:50;;15098:10;15059:38;:50::i;30871:225::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;30981:5:::1;30970:7;:16;;30962:62;;;::::0;-1:-1:-1;;;30962:62:0;;16414:2:1;30962:62:0::1;::::0;::::1;16396:21:1::0;;;16433:18;;;16426:30;16492:34;16472:18;;;16465:62;16544:18;;30962:62:0::1;16212:356:1::0;30962:62:0::1;31035:7;:17:::0;31063:11:::1;:25:::0;;;::::1;;-1:-1:-1::0;;;31063:25:0::1;-1:-1:-1::0;;31063:25:0;;::::1;::::0;;;::::1;::::0;;30871:225::o;35406:604::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;35608:2:::1;35598:6;:12;;35590:42;;;::::0;-1:-1:-1;;;35590:42:0;;16775:2:1;35590:42:0::1;::::0;::::1;16757:21:1::0;16814:2;16794:18;;;16787:30;-1:-1:-1;;;16833:18:1;;;16826:47;16890:18;;35590:42:0::1;16573:341:1::0;35590:42:0::1;35643:25;35694:20;:15:::0;35710:4:::1;35694:20;:::i;:::-;35671;:14:::0;35686:5:::1;35671:20;:::i;:::-;:43;;;;:::i;:::-;35643:71:::0;-1:-1:-1;35748:35:0::1;35643:71:::0;35748:15:::1;:35;:::i;:::-;35725:20;:58:::0;35826:7:::1;::::0;35794:13:::1;::::0;35822:11:::1;::::0;35826:7:::1;;35822:2;:11;:::i;:::-;35810:23;::::0;:11;:23:::1;:::i;:::-;35794:39:::0;-1:-1:-1;35844:11:0::1;35880:12:::0;35859:19:::1;:12:::0;35872:6:::1;35859:19;:::i;:::-;35858:34;;;;:::i;:::-;35844:48;;35903:25;35917:5;35924:3;35903:12;:25::i;:::-;35939:14;:21:::0;;-1:-1:-1;;35939:21:0::1;::::0;::::1;::::0;;35981::::1;35996:6:::0;35981:12:::1;:21;:::i;:::-;35971:7;:31:::0;-1:-1:-1;;;;;;;;;35406:604:0:o;32737:1364::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;32997:8:::1;;32984:9;:21;;:48;;;;;33022:10;33009:9;:23;;32984:48;32976:119;;;::::0;-1:-1:-1;;;32976:119:0;;19029:2:1;32976:119:0::1;::::0;::::1;19011:21:1::0;19068:2;19048:18;;;19041:30;19107:34;19087:18;;;19080:62;19178:28;19158:18;;;19151:56;19224:19;;32976:119:0::1;18827:422:1::0;32976:119:0::1;33106:19;33128:70;33184:13:::0;33128:51:::1;33163:15:::0;33128:51;:15;33148:9;33128:19:::1;:30::i;:::-;:34:::0;::::1;:51::i;:70::-;33269:8;::::0;33106:92;;-1:-1:-1;33217:48:0::1;33254:10:::0;33217:32:::1;33106:92:::0;33233:15;33217::::1;:32::i;:48::-;:60;;33209:105;;;::::0;-1:-1:-1;;;33209:105:0;;19456:2:1;33209:105:0::1;::::0;::::1;19438:21:1::0;;;19475:18;;;19468:30;19534:34;19514:18;;;19507:62;19586:18;;33209:105:0::1;19254:356:1::0;33209:105:0::1;33496:21:::0;;33493:171:::1;;33547:8;;33527:16;:28;;:60;;;;;33579:8;;33559:16;:28;;33527:60;33519:143;;;::::0;-1:-1:-1;;;33519:143:0;;20168:2:1;33519:143:0::1;::::0;::::1;20150:21:1::0;20207:2;20187:18;;;20180:30;20246:34;20226:18;;;20219:62;20317:34;20297:18;;;20290:62;-1:-1:-1;;;20368:19:1;;;20361:37;20415:19;;33519:143:0::1;19966:474:1::0;33519:143:0::1;33684:7;:19:::0;;;33714:17:::1;:36:::0;;;33761:8:::1;:21:::0;;;33793:13:::1;:31:::0;;;33835:13:::1;:31:::0;;;33877:7:::1;:19:::0;;;33907:13:::1;:31:::0;;;33949:11:::1;:27:::0;;;33998:95:::1;33772:10:::0;33998:81:::1;33963:13:::0;33998:81;33923:15;33998:81;33887:9;33998:81;33809:15;33851;33998:17:::1;:32::i;:95::-;33987:8;:106:::0;-1:-1:-1;;;;;;;;;32737:1364:0:o;34114:316::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;34232:15:::1;::::0;-1:-1:-1;;;;;34232:15:0;;::::1;34210:38:::0;;::::1;::::0;34202:86:::1;;;::::0;-1:-1:-1;;;34202:86:0;;20647:2:1;34202:86:0::1;::::0;::::1;20629:21:1::0;20686:2;20666:18;;;20659:30;20725:34;20705:18;;;20698:62;-1:-1:-1;;;20776:18:1;;;20769:33;20819:19;;34202:86:0::1;20445:399:1::0;34202:86:0::1;34346:15;::::0;34304:59:::1;::::0;-1:-1:-1;;;;;34346:15:0;;::::1;::::0;34304:59;::::1;::::0;::::1;::::0;34346:15:::1;::::0;34304:59:::1;34374:15;:48:::0;;-1:-1:-1;;;;;;34374:48:0::1;-1:-1:-1::0;;;;;34374:48:0;;;::::1;::::0;;;::::1;::::0;;34114:316::o;34439:314::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34571:28:0;;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;:34;;;::::1;;-1:-1:-1::0;;34571:34:0;;::::1;;::::0;;34616:20:::1;:29:::0;;;;;:37;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;34664:14:::1;:23:::0;;;;;:35;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;34710:14:::1;:23:::0;;;;:35;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;34439:314::o;28464:275::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;28542:25:::1;28559:7;28542:16;:25::i;:::-;-1:-1:-1::0;;;;;28578:37:0::1;28618:5;28578:37:::0;;;:19:::1;:37;::::0;;;;;;;:45;;-1:-1:-1;;28578:45:0;;::::1;::::0;;;28634:20:::1;:38:::0;;;;;:46;;;::::1;::::0;;28691:14:::1;:32:::0;;;;;;:40;;;;::::1;::::0;;28464:275::o;36018:315::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;36103:20:::1;;36084:15;:39;;36076:68;;;::::0;-1:-1:-1;;;36076:68:0;;21051:2:1;36076:68:0::1;::::0;::::1;21033:21:1::0;21090:2;21070:18;;;21063:30;-1:-1:-1;;;21109:18:1;;;21102:46;21165:18;;36076:68:0::1;20849:340:1::0;36076:68:0::1;36228:39;::::0;-1:-1:-1;;;36228:39:0;;36261:4:::1;36228:39;::::0;::::1;3087:51:1::0;36186:13:0::1;::::0;36155:21:::1;::::0;-1:-1:-1;;;;;36228:24:0;::::1;::::0;::::1;::::0;3060:18:1;;36228:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36282:43;::::0;-1:-1:-1;;;36282:43:0;;36306:10:::1;36282:43;::::0;::::1;21557:51:1::0;21624:18;;;21617:34;;;36211:56:0;;-1:-1:-1;;;;;;36282:23:0;::::1;::::0;::::1;::::0;21530:18:1;;36282:43:0::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36065:268;;36018:315::o:0;12873:148::-;12727:6;;-1:-1:-1;;;;;12727:6:0;12072:10;12784:23;12776:68;;;;-1:-1:-1;;;12776:68:0;;22114:2:1;12776:68:0;;;22096:21:1;;;22133:18;;;22126:30;22192:34;22172:18;;;22165:62;22244:18;;12776:68:0;21912:356:1;12776:68:0;12964:6:::1;::::0;12943:40:::1;::::0;12980:1:::1;::::0;-1:-1:-1;;;;;12964:6:0::1;::::0;12943:40:::1;::::0;12980:1;;12943:40:::1;12994:6;:19:::0;;-1:-1:-1;;;;;;12994:19:0::1;::::0;;12873:148::o;35031:367::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;35127:25:::1;35171:13;:8:::0;35180:4:::1;35171:13;:::i;:::-;35155;:7:::0;35163:5:::1;35155:13;:::i;:::-;:29;;;;:::i;:::-;35127:57;;35222:15;35199:20;;:38;35195:82;;;35262:15;35239:20;:38:::0;35195:82:::1;35281:55;35315:20;;35295:17;:40;;;;:::i;:::-;35281:13;:55::i;:::-;35352:38;::::0;4542:25:1;;;35352:38:0::1;::::0;4530:2:1;4515:18;35352:38:0::1;;;;;;;35116:282;35031:367:::0;;:::o;18383:107::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;18462:11:::1;:26:::0;;-1:-1:-1;;;;;;18462:26:0::1;-1:-1:-1::0;;;;;18462:26:0;;;::::1;::::0;;;::::1;::::0;;18383:107::o;13791:79::-;13838:13;13861:7;13854:14;;;;;:::i;34769:256::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;34883:13:::1;-1:-1:-1::0;;;;;34875:21:0::1;:4;-1:-1:-1::0;;;;;34875:21:0::1;::::0;34867:98:::1;;;::::0;;-1:-1:-1;;;34867:98:0;;22475:2:1;34867:98:0::1;::::0;::::1;22457:21:1::0;22494:18;;;22487:30;;;;22553:34;22533:18;;;22526:62;22624:34;22604:18;;;22597:62;22676:19;;34867:98:0::1;22273:428:1::0;34867:98:0::1;34976:41;35005:4;35011:5;34976:28;:41::i;:::-;34769:256:::0;;:::o;15149:262::-;15242:4;15259:122;12072:10;15282:7;15291:89;15330:15;15291:89;;;;;;;;;;;;;;;;;:11;:25;15303:12;12072:10;;11986:99;15303:12;-1:-1:-1;;;;;15291:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;15291:25:0;;;:34;;;;;;;;;;;:89;:38;:89::i;31108:1619::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;31325:14:::1;31342;13954:12:::0;;;13876:92;31342:14:::1;31325:31:::0;-1:-1:-1;31403:12:0::1;31412:3;31325:31:::0;31403:12:::1;:::i;:::-;31392:7;::::0;31388:11:::1;::::0;31392:7:::1;;31388:2;:11;:::i;:::-;31375:24;::::0;:10;:24:::1;:::i;:::-;:40;;:78;;;;-1:-1:-1::0;31436:7:0::1;::::0;31447:6;;31432:11:::1;::::0;31436:7:::1;;31432:2;:11;:::i;:::-;31419:24;::::0;:10;:24:::1;:::i;:::-;:34;;31375:78;31367:150;;;::::0;-1:-1:-1;;;31367:150:0;;22908:2:1;31367:150:0::1;::::0;::::1;22890:21:1::0;22947:2;22927:18;;;22920:30;22986:34;22966:18;;;22959:62;23057:29;23037:18;;;23030:57;23104:19;;31367:150:0::1;22706:423:1::0;31367:150:0::1;31562:13;31571:4;31562:6:::0;:13:::1;:::i;:::-;31551:7;::::0;31547:11:::1;::::0;31551:7:::1;;31547:2;:11;:::i;:::-;31536:22;::::0;:8;:22:::1;:::i;:::-;:39;;:75;;;;-1:-1:-1::0;31594:7:0::1;::::0;31605:6;;31590:11:::1;::::0;31594:7:::1;;31590:2;:11;:::i;:::-;31579:22;::::0;:8;:22:::1;:::i;:::-;:32;;31536:75;31528:148;;;::::0;-1:-1:-1;;;31528:148:0;;23336:2:1;31528:148:0::1;::::0;::::1;23318:21:1::0;23375:2;23355:18;;;23348:30;23414:34;23394:18;;;23387:62;23485:29;23465:18;;;23458:57;23532:19;;31528:148:0::1;23134:423:1::0;31528:148:0::1;31721:14;31730:5;31721:6:::0;:14:::1;:::i;:::-;31710:7;::::0;31706:11:::1;::::0;31710:7:::1;;31706:2;:11;:::i;:::-;31695:22;::::0;:8;:22:::1;:::i;:::-;:40;;:68;;;;-1:-1:-1::0;31751:12:0::1;31762:1;31751:8:::0;:12:::1;:::i;:::-;31739:8;:24;;31695:68;31687:140;;;::::0;-1:-1:-1;;;31687:140:0;;23764:2:1;31687:140:0::1;::::0;::::1;23746:21:1::0;23803:2;23783:18;;;23776:30;23842:34;23822:18;;;23815:62;23913:28;23893:18;;;23886:56;23959:19;;31687:140:0::1;23562:422:1::0;31687:140:0::1;31859:4;31846:9;:17;;:39;;;;;31880:5;31867:9;:18;;31846:39;31838:103;;;::::0;-1:-1:-1;;;31838:103:0;;24191:2:1;31838:103:0::1;::::0;::::1;24173:21:1::0;24230:2;24210:18;;;24203:30;24269:34;24249:18;;;24242:62;-1:-1:-1;;;24320:18:1;;;24313:49;24379:19;;31838:103:0::1;23989:415:1::0;31838:103:0::1;31970:1;31960:6;:11;;:27;;;;;31985:2;31975:6;:12;;31960:27;31952:91;;;::::0;-1:-1:-1;;;31952:91:0;;24611:2:1;31952:91:0::1;::::0;::::1;24593:21:1::0;24650:2;24630:18;;;24623:30;24689:34;24669:18;;;24662:62;-1:-1:-1;;;24740:18:1;;;24733:49;24799:19;;31952:91:0::1;24409:415:1::0;31952:91:0::1;32074:15;:8:::0;32087:1:::1;32074:12;:15::i;:::-;32062:8;:27;;:63;;;;-1:-1:-1::0;32108:7:0::1;::::0;32119:6;;32104:11:::1;::::0;32108:7:::1;;32104:2;:11;:::i;:::-;32093:22;::::0;:8;:22:::1;:::i;:::-;:32;;32062:63;32054:128;;;::::0;-1:-1:-1;;;32054:128:0;;25031:2:1;32054:128:0::1;::::0;::::1;25013:21:1::0;25070:2;25050:18;;;25043:30;25109:34;25089:18;;;25082:62;-1:-1:-1;;;25160:18:1;;;25153:49;25219:19;;32054:128:0::1;24829:415:1::0;32054:128:0::1;32195:7;:18:::0;;;32255:7:::1;::::0;32251:11:::1;::::0;32255:7:::1;;32251:2;:11;:::i;:::-;32241:7;;:21;;;;:::i;:::-;32224:14;:38:::0;32273:9:::1;:22:::0;;;32340:7:::1;::::0;32336:11:::1;::::0;32340:7:::1;;32336:2;:11;:::i;:::-;32324:9;;:23;;;;:::i;:::-;32306:15;:41:::0;32358:7:::1;:18:::0;;;32428:7:::1;::::0;32424:11:::1;::::0;32428:7:::1;;32424:2;:11;:::i;:::-;32414:7;;:21;;;;:::i;:::-;32387:24;:48:::0;32446:7:::1;:18:::0;;;32510:7:::1;::::0;32506:11:::1;::::0;32510:7:::1;;32506:2;:11;:::i;:::-;32496:7;;:21;;;;:::i;:::-;32475:18;:42:::0;32528:8:::1;:17:::0;;;32556:16:::1;:35:::0;;-1:-1:-1;;32605:46:0;-1:-1:-1;;;32556:35:0;::::1;;;-1:-1:-1::0;;32605:46:0;;32556:35:::1;32605:46:::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;32667:52:::1;::::0;2889:41:1;;;32667:52:0::1;::::0;2877:2:1;2862:18;32667:52:0::1;;;;;;;31314:1413;31108:1619:::0;;;;;;;;:::o;14093:175::-;14179:4;14196:42;12072:10;14220:9;14231:6;14196:9;:42::i;37800:74::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;37871:1:::1;37854:14;:18:::0;37800:74::o;27288:639::-;27343:12;27357:13;27372:15;27389;27439:20;;27421:15;:38;27417:472;;;27525:5;27506:15;27483:20;;:38;;;;:::i;:::-;27482:48;;;;:::i;:::-;27475:55;-1:-1:-1;27611:4:0;27595:12;27475:55;27602:5;27595:12;:::i;:::-;27577:15;27554:20;;:38;;;;:::i;:::-;:53;;;;:::i;:::-;27553:62;;;;:::i;:::-;27545:70;-1:-1:-1;27714:2:0;27697:12;27545:70;27705:4;27697:12;:::i;:::-;27682;:4;27689:5;27682:12;:::i;:::-;27664:15;27641:20;;:38;;;;:::i;:::-;:53;;;;:::i;:::-;:68;;;;:::i;:::-;27640:76;;;;:::i;:::-;27630:86;-1:-1:-1;27812:12:0;27630:86;27822:2;27812:12;:::i;:::-;27797;:5;27805:4;27797:12;:::i;:::-;27782;:4;27789:5;27782:12;:::i;:::-;27764:15;27741:20;;:38;;;;:::i;:::-;:53;;;;:::i;:::-;:68;;;;:::i;:::-;:83;;;;:::i;:::-;27731:93;;27839:38;;27417:472;-1:-1:-1;27908:1:0;;-1:-1:-1;27908:1:0;;-1:-1:-1;27908:1:0;;-1:-1:-1;27908:1:0;27288:639;;;;;:::o;36341:162::-;17575:10;36400:11;17561:25;;;:13;:25;;;;;;36413:17;;17561:25;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;36452:4:::1;:11:::0;;36474:21:::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;;36452:11;;-1:-1:-1;36452:11:0;;:4;36474:21;36452:4;;:11;;36474:21;::::1;36452:4:::0;:11;36474:21;::::1;;;;;;;;;;;;;;;;::::0;;-1:-1:-1;;;;;36474:21:0::1;::::0;;;;;::::1;::::0;::::1;;::::0;;::::1;;;;;;;;;;;;;;;36341:162:::0;;:::o;28188:268::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;28264:23:::1;28279:7;28264:14;:23::i;:::-;-1:-1:-1::0;;;;;28298:37:0::1;;::::0;;;:19:::1;:37;::::0;;;;;;;:44;;28338:4:::1;-1:-1:-1::0;;28298:44:0;;::::1;::::0;::::1;::::0;;;28353:20:::1;:38:::0;;;;;:45;;;::::1;::::0;::::1;::::0;;28409:14:::1;:32:::0;;;;;:39;;;;::::1;::::0;;::::1;::::0;;28188:268::o;18647:115::-;18717:11;;-1:-1:-1;;;;;18717:11:0;18703:10;:25;18695:34;;;;;;18731:11;;:29;;-1:-1:-1;;;;;18731:11:0;;;;:29;;;;;18752:7;;18731:11;:29;:11;:29;18752:7;18731:11;:29;;;;;;;;;;;;;;;;;;;13030:244;12727:6;;-1:-1:-1;;;;;12727:6:0;12072:10;12784:23;12776:68;;;;-1:-1:-1;;;12776:68:0;;22114:2:1;12776:68:0;;;22096:21:1;;;22133:18;;;22126:30;22192:34;22172:18;;;22165:62;22244:18;;12776:68:0;21912:356:1;12776:68:0;-1:-1:-1;;;;;13119:22:0;::::1;13111:73;;;::::0;-1:-1:-1;;;13111:73:0;;25451:2:1;13111:73:0::1;::::0;::::1;25433:21:1::0;25490:2;25470:18;;;25463:30;25529:34;25509:18;;;25502:62;-1:-1:-1;;;25580:18:1;;;25573:36;25626:19;;13111:73:0::1;25249:402:1::0;13111:73:0::1;13221:6;::::0;13200:38:::1;::::0;-1:-1:-1;;;;;13200:38:0;;::::1;::::0;13221:6:::1;::::0;13200:38:::1;::::0;13221:6:::1;::::0;13200:38:::1;13249:6;:17:::0;;-1:-1:-1;;;;;;13249:17:0::1;-1:-1:-1::0;;;;;13249:17:0;;;::::1;::::0;;;::::1;::::0;;13030:244::o;18496:145::-;18580:11;;-1:-1:-1;;;;;18580:11:0;18566:10;:25;18558:34;;;;;;18618:11;;18594:45;;-1:-1:-1;;;18594:45:0;;-1:-1:-1;;;;;18618:11:0;;;18594:45;;;21557:51:1;21624:18;;;21617:34;;;18594:23:0;;;;;;21530:18:1;;18594:45:0;21383:274:1;9242:179:0;9300:7;;9332:5;9336:1;9332;:5;:::i;:::-;9320:17;;9361:1;9356;:6;;9348:46;;;;-1:-1:-1;;;9348:46:0;;26145:2:1;9348:46:0;;;26127:21:1;26184:2;26164:18;;;26157:30;26223:29;26203:18;;;26196:57;26270:18;;9348:46:0;25943:351:1;9348:46:0;9412:1;9242:179;-1:-1:-1;;;9242:179:0:o;16746:333::-;-1:-1:-1;;;;;16848:19:0;;16840:61;;;;-1:-1:-1;;;16840:61:0;;26501:2:1;16840:61:0;;;26483:21:1;26540:2;26520:18;;;26513:30;26579:31;26559:18;;;26552:59;26628:18;;16840:61:0;26299:353:1;16840:61:0;-1:-1:-1;;;;;16920:21:0;;16912:61;;;;-1:-1:-1;;;16912:61:0;;26859:2:1;16912:61:0;;;26841:21:1;26898:2;26878:18;;;26871:30;26937:29;26917:18;;;26910:57;26984:18;;16912:61:0;26657:351:1;16912:61:0;-1:-1:-1;;;;;16987:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17039:32;;4542:25:1;;;17039:32:0;;4515:18:1;17039:32:0;;;;;;;;16746:333;;;:::o;40302:2799::-;-1:-1:-1;;;;;40400:18:0;;40392:61;;;;-1:-1:-1;;;40392:61:0;;27215:2:1;40392:61:0;;;27197:21:1;27254:2;27234:18;;;27227:30;27293:32;27273:18;;;27266:60;27343:18;;40392:61:0;27013:354:1;40392:61:0;-1:-1:-1;;;;;40472:16:0;;40464:57;;;;-1:-1:-1;;;40464:57:0;;27574:2:1;40464:57:0;;;27556:21:1;27613:2;27593:18;;;27586:30;27652;27632:18;;;27625:58;27700:18;;40464:57:0;27372:352:1;40464:57:0;40537:6;40547:1;40537:11;40534:25;;40302:2799;;;:::o;40534:25::-;-1:-1:-1;;;;;40572:19:0;;40586:4;40572:19;;;;:39;;-1:-1:-1;40601:10:0;;-1:-1:-1;;;;;40595:16:0;;;40601:10;;40595:16;;40572:39;40569:121;;;-1:-1:-1;;;;;40622:20:0;;;;;;:14;:20;;;;;;;;40621:21;:44;;;;-1:-1:-1;;;;;;40647:18:0;;;;;;:14;:18;;;;;;;;40646:19;40621:44;40613:77;;;;-1:-1:-1;;;40613:77:0;;27931:2:1;40613:77:0;;;27913:21:1;27970:2;27950:18;;;27943:30;-1:-1:-1;;;27989:18:1;;;27982:49;28048:18;;40613:77:0;27729:343:1;40613:77:0;40828:14;;;;;;;40824:79;;-1:-1:-1;;;;;40853:20:0;;;;;;:14;:20;;;;;;;;40845:56;;;;-1:-1:-1;;;40845:56:0;;28279:2:1;40845:56:0;;;28261:21:1;28318:2;28298:18;;;28291:30;28357:25;28337:18;;;28330:53;28400:18;;40845:56:0;28077:347:1;40845:56:0;40920:14;;;;;;;:40;;;;;40953:7;;40938:12;:22;40920:40;:63;;;;-1:-1:-1;;;;;;40965:18:0;;;;;;:14;:18;;;;;;;;40964:19;40920:63;:98;;;;-1:-1:-1;;;;;;40987:31:0;;;;;;:25;:31;;;;;;;;40920:98;40917:185;;;-1:-1:-1;;;;;41035:18:0;;;;;;:14;:18;;;;;:25;;-1:-1:-1;;41035:25:0;41056:4;41035:25;;;;;;41075:4;:13;;;;;;;;;;;;;;-1:-1:-1;;;;;;41075:13:0;;;;;;40917:185;-1:-1:-1;;;;;41165:18:0;;;;;;:14;:18;;;;;;;;41164:19;:54;;;;-1:-1:-1;;;;;;41187:31:0;;;;;;:25;:31;;;;;;;;41164:54;41161:304;;;-1:-1:-1;;;;;41237:19:0;;41251:4;41237:19;;;;:39;;-1:-1:-1;41266:10:0;;-1:-1:-1;;;;;41260:16:0;;;41266:10;;41260:16;;41237:39;41234:220;;;-1:-1:-1;;;;;14065:18:0;;41296;14065;;;;;;;;;;;41382:15;;41358:19;41371:6;14065:18;41358:19;:::i;:::-;41357:40;;41349:89;;;;-1:-1:-1;;;41349:89:0;;28631:2:1;41349:89:0;;;28613:21:1;28670:2;28650:18;;;28643:30;28709:34;28689:18;;;28682:62;-1:-1:-1;;;28760:18:1;;;28753:34;28804:19;;41349:89:0;28429:400:1;41349:89:0;41277:177;41234:220;41480:6;41490:1;41480:11;41477:25;;40302:2799;;;:::o;41477:25::-;-1:-1:-1;;;;;41547:29:0;;;;;;:25;:29;;;;;;;;:62;;;;-1:-1:-1;;;;;;41582:26:0;;;;;;:20;:26;;;;;;;;41581:27;41547:62;:93;;;;-1:-1:-1;;;;;;41615:24:0;;;;;;:20;:24;;;;;;;;41614:25;41547:93;41544:205;;;41660:24;;41650:6;:34;;41642:105;;;;-1:-1:-1;;;41642:105:0;;29036:2:1;41642:105:0;;;29018:21:1;29075:2;29055:18;;;29048:30;29114:34;29094:18;;;29087:62;29185:28;29165:18;;;29158:56;29231:19;;41642:105:0;28834:422:1;41642:105:0;41765:11;;-1:-1:-1;;;41765:11:0;;;;:36;;;;-1:-1:-1;;;;;;41781:20:0;;;;;;:14;:20;;;;;;;;41780:21;41765:36;:69;;;;-1:-1:-1;;;;;;41805:29:0;;;;;;:25;:29;;;;;;;;41765:69;41761:233;;;41881:7;;-1:-1:-1;;;;;41860:18:0;;;;;;:12;:18;;;;;;41892:12;;41860:28;;;:::i;:::-;:44;;41851:83;;;;-1:-1:-1;;;41851:83:0;;29463:2:1;41851:83:0;;;29445:21:1;29502:2;29482:18;;;29475:30;29541:27;29521:18;;;29514:55;29586:18;;41851:83:0;29261:349:1;41851:83:0;-1:-1:-1;;;;;41949:18:0;;;;;;:12;:18;;;;;41970:12;41949:33;;41761:233;42055:4;42006:28;14065:18;;;;;;;;;;;42076:14;;:19;;;;:60;;;42116:20;42099:14;;:37;42076:60;42072:133;;;42189:14;;42180:4;14048:7;14065:18;;;;;;;;;;;42162:41;;;;:::i;:::-;42139:64;;42072:133;42254:18;;42316:8;;42303;;42230:42;;;;;42215:12;;42303:22;;:8;:12;:22::i;:::-;42283:42;;42363:14;;42339:20;:38;42336:82;;42402:14;;42379:37;;42336:82;42467:21;;;;;;;:32;;;;;42492:7;42467:32;:45;;;;-1:-1:-1;42504:8:0;;;;42503:9;42467:45;:81;;;;-1:-1:-1;;;;;;42517:31:0;;;;;;:25;:31;;;;;;;;42516:32;42467:81;:106;;;;-1:-1:-1;;;;;;42553:20:0;;;;;;:14;:20;;;;;;;;42552:21;42467:106;:129;;;;-1:-1:-1;;;;;;42578:18:0;;;;;;:14;:18;;;;;;;;42577:19;42467:129;:147;;;;-1:-1:-1;42600:14:0;;;42467:147;42463:278;;;42632:8;:15;;-1:-1:-1;;42632:15:0;42643:4;42632:15;;;42662:36;42677:20;42662:14;:36::i;:::-;42713:8;:16;;-1:-1:-1;;42713:16:0;;;42463:278;-1:-1:-1;;;;;42797:25:0;;42753:20;42797:25;;;:19;:25;;;;;;42776:6;;42797:25;;42796:26;:54;;;;-1:-1:-1;;;;;;42827:23:0;;;;;;:19;:23;;;;;;;;42826:24;42796:54;42793:102;;;42868:25;42876:4;42882:2;42886:6;42868:7;:25::i;:::-;42853:40;;42793:102;42914:10;;-1:-1:-1;;;;;42914:10:0;;;42908:16;;;;42905:189;;42927:30;42939:4;42944:12;42927:11;:30::i;:::-;42905:189;;;43040:10;;-1:-1:-1;;;;;43034:16:0;;;43040:10;;43034:16;43031:63;;43053:39;43069:4;43075:2;43079:12;43053:15;:39::i;:::-;40381:2720;;;;40302:2799;;;:::o;10148:166::-;10234:7;10270:12;10262:6;;;;10254:29;;;;-1:-1:-1;;;10254:29:0;;;;;;;;:::i;:::-;-1:-1:-1;10301:5:0;10305:1;10301;:5;:::i;:::-;10294:12;10148:166;-1:-1:-1;;;;10148:166:0:o;15420:520::-;-1:-1:-1;;;;;15526:20:0;;15518:63;;;;-1:-1:-1;;;15518:63:0;;27215:2:1;15518:63:0;;;27197:21:1;27254:2;27234:18;;;27227:30;27293:32;27273:18;;;27266:60;27343:18;;15518:63:0;27013:354:1;15518:63:0;-1:-1:-1;;;;;15600:23:0;;15592:64;;;;-1:-1:-1;;;15592:64:0;;27574:2:1;15592:64:0;;;27556:21:1;27613:2;27593:18;;;27586:30;27652;27632:18;;;27625:58;27700:18;;15592:64:0;27372:352:1;15592:64:0;15751;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15751:17:0;;-1:-1:-1;15751:17:0;;;;;;;;;;;;:64;;15773:6;;15751:21;:64::i;:::-;-1:-1:-1;;;;;15731:17:0;;;:9;:17;;;;;;;;;;;:84;;;;15849:20;;;;;;;:32;;15874:6;15849:24;:32::i;:::-;-1:-1:-1;;;;;15826:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;15897:35;4542:25:1;;;15826:20:0;;15897:35;;;;;;4515:18:1;15897:35:0;4396:177:1;44997:277:0;45110:15;;45078:62;;45095:4;;-1:-1:-1;;;;;45110:15:0;45128:11;45078:8;:62::i;:::-;45151:15;;:115;;-1:-1:-1;;;45151:115:0;;45209:4;45151:115;;;29956:34:1;;;30006:18;;;29999:34;;;45151:15:0;30049:18:1;;;30042:34;;;30092:18;;;30085:34;30135:19;;;30128:44;45250:15:0;30188:19:1;;;30181:35;-1:-1:-1;;;;;45151:15:0;;;;:31;;45190:9;;29890:19:1;;45151:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;44997:277;;:::o;18054:98::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;18124:26:::1;18142:7;-1:-1:-1::0;;;;;18211:22:0;18236:5;18211:22;;;:13;:22;;;;;:30;;-1:-1:-1;;18211:30:0;;;18158:85;18124:26:::1;18054:98:::0;:::o;45686:227::-;45837:20;;45821:13;:36;45813:45;;;;;;45869:20;:36;45686:227::o;38127:323::-;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38235:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;:40;::::1;;:31;::::0;;::::1;:40;;::::0;38227:109:::1;;;::::0;-1:-1:-1;;;38227:109:0;;30740:2:1;38227:109:0::1;::::0;::::1;30722:21:1::0;30779:2;30759:18;;;30752:30;30818:34;30798:18;;;30791:62;30889:26;30869:18;;;30862:54;30933:19;;38227:109:0::1;30538:420:1::0;38227:109:0::1;-1:-1:-1::0;;;;;38347:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;:39;;-1:-1:-1;;38347:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;38402:40;;38347:39;;:31;38402:40:::1;::::0;::::1;38127:323:::0;;:::o;9597:220::-;9655:7;9679:1;9684;9679:6;9675:20;;-1:-1:-1;9694:1:0;9687:8;;9675:20;9706:9;9718:5;9722:1;9718;:5;:::i;:::-;9706:17;-1:-1:-1;9751:1:0;9742:5;9746:1;9706:17;9742:5;:::i;:::-;:10;9734:56;;;;-1:-1:-1;;;9734:56:0;;31165:2:1;9734:56:0;;;31147:21:1;31204:2;31184:18;;;31177:30;31243:34;31223:18;;;31216:62;-1:-1:-1;;;31294:18:1;;;31287:31;31335:19;;9734:56:0;30963:397:1;17830:94:0;17575:10;17561:25;;;;:13;:25;;;;;;;;17553:81;;;;-1:-1:-1;;;17553:81:0;;;;;;;:::i;:::-;17898:24:::1;17914:7;17898:15;:24::i;9430:158::-:0;9488:7;9521:1;9516;:6;;9508:49;;;;-1:-1:-1;;;9508:49:0;;31567:2:1;9508:49:0;;;31549:21:1;31606:2;31586:18;;;31579:30;31645:32;31625:18;;;31618:60;31695:18;;9508:49:0;31365:354:1;9508:49:0;9575:5;9579:1;9575;:5;:::i;43109:1879::-;43182:17;43202:22;43215:8;;43202;;:12;;:22;;;;:::i;:::-;43182:42;;43235:20;43258:26;43272:11;;43258:9;:13;;:26;;;;:::i;:::-;43235:49;;43295:22;43320:21;43295:46;;43362:12;43420:9;43416:1;43400:13;;43377:20;:36;;;;:::i;:::-;:40;;;;:::i;:::-;:52;;;;:::i;:::-;43362:67;;43495:9;43481:11;;43458:20;:34;;;;:::i;:::-;:46;;;;:::i;:::-;43440:14;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;43525:18:0;;-1:-1:-1;43598:4:0;43585:9;43547:35;43570:12;43547:20;:35;:::i;:::-;:47;;;;:::i;:::-;43546:56;;;;:::i;:::-;43525:77;;43613:28;43630:10;43613:16;:28::i;:::-;43652:18;43673:38;43697:14;43673:21;:38;:::i;:::-;43652:59;;43724:27;43822:1;43806:13;;:17;;;;:::i;:::-;43790:34;;:12;:34;:::i;:::-;43784:1;43768:13;;43755:10;:26;;;;:::i;:::-;:30;;;;:::i;:::-;43754:71;;;;:::i;:::-;43724:101;;43923:1;43907:13;;:17;;;;:::i;:::-;43891:34;;:12;:34;:::i;:::-;43873:13;;43860:26;;:10;:26;:::i;:::-;43859:67;;;;:::i;:::-;43836:19;;:90;;;;;;;:::i;:::-;;;;-1:-1:-1;;43996:13:0;;:17;;44012:1;;43996:17;:::i;:::-;43980:34;;:12;:34;:::i;:::-;43968:7;;43955:20;;:10;:20;:::i;:::-;43954:61;;;;:::i;:::-;43937:13;;:78;;;;;;;:::i;:::-;;;;-1:-1:-1;;44097:13:0;;:17;;44113:1;;44097:17;:::i;:::-;44081:34;;:12;:34;:::i;:::-;44063:13;;44050:26;;:10;:26;:::i;:::-;44049:67;;;;:::i;:::-;44026:19;;:90;;;;;;;:::i;:::-;;;;-1:-1:-1;;44139:13:0;;:18;44136:156;;44174:39;44187:4;44193:19;44174:12;:39::i;:::-;44233:47;;;216:25:1;;;272:2;257:18;;250:34;;;300:18;;;293:34;;;44233:47:0;;204:2:1;189:18;44233:47:0;;;;;;;44136:156;44306:16;;-1:-1:-1;;;44306:16:0;;;;44302:679;;;44345:14;;:19;44342:157;;44416:13;;44431:14;;44385:61;;44409:4;;-1:-1:-1;;;;;44416:13:0;;;;44385:15;:61::i;:::-;44482:1;44465:14;:18;44342:157;44516:19;;:24;44513:151;;44561:15;;44586:19;;44561:45;;-1:-1:-1;;;;;44561:15:0;;;;:45;;;;;44586:19;44561:15;:45;:15;:45;44586:19;44561:15;:45;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44647:1:0;44625:19;:23;44513:151;44681:13;;:18;44678:127;;44720:9;;44739:13;;44720:33;;-1:-1:-1;;;;;44720:9:0;;;;:33;;;;;44739:13;44720:9;:33;:9;:33;44739:13;44720:9;:33;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44788:1:0;44772:13;:17;44678:127;44822:19;;:24;44819:151;;44867:15;;44892:19;;44867:45;;-1:-1:-1;;;;;44867:15:0;;;;:45;;;;;44892:19;44867:15;:45;:15;:45;44892:19;44867:15;:45;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44953:1:0;44931:19;:23;44819:151;43171:1817;;;;;;;43109:1879;:::o;38462:1832::-;-1:-1:-1;;;;;38720:31:0;;38539:7;38720:31;;;:25;:31;;;;;;38539:7;;;;;;38720:31;;38717:1272;;;38815:7;;:12;38812:194;;38855:28;38879:3;38855:19;38866:7;;38855:6;:10;;:19;;;;:::i;:::-;:23;;:28::i;:::-;38848:35;;38937:29;38962:3;38937:20;38948:8;;38937:6;:10;;:20;;;;:::i;:29::-;38923:43;;38812:194;38717:1272;;;-1:-1:-1;;;;;39045:29:0;;;;;;:25;:29;;;;;;;;39042:947;;;39132:8;;;;;;;:33;;;;-1:-1:-1;;;;;;39145:20:0;;;;;;:14;:20;;;;;;;;39144:21;39132:33;39128:376;;;39239:20;39252:6;39239:12;:20::i;:::-;39228:31;-1:-1:-1;39282:12:0;;39278:211;;39323:9;;;;;;;39319:112;;;39335:25;39352:8;39335:25;;:::i;:::-;;;39319:112;;;39388:12;;;;;;;39384:47;;;39421:8;39403:14;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;39384:47:0;39453:16;39461:8;39453:16;;:::i;:::-;;;39278:211;39521:8;;:13;39518:197;;39563:29;39588:3;39563:20;39574:8;;39563:6;:10;;:20;;;;:::i;:29::-;39555:37;;;;:::i;:::-;;;39646:29;39671:3;39646:20;39657:8;;39646:6;:10;;:20;;;;:::i;:29::-;39631:44;;;;:::i;39042:947::-;-1:-1:-1;;;;;39736:31:0;;;;;;:25;:31;;;;;;;;39735:32;:66;;;;-1:-1:-1;;;;;;39772:29:0;;;;;;:25;:29;;;;;;;;39771:30;39735:66;:92;;;;-1:-1:-1;39805:17:0;;:22;;39735:92;39732:257;;;39851:38;39885:3;39851:29;39862:17;;39851:6;:10;;:29;;;;:::i;:38::-;39844:45;;39918:29;39943:3;39918:20;39929:8;;39918:6;:10;;:20;;;;:::i;:29::-;39904:43;;39732:257;40007:23;:4;40016:13;40007:8;:23::i;:::-;40000:30;-1:-1:-1;40092:18:0;;40088:59;;40113:32;40125:4;40131:13;40113:11;:32::i;:::-;40179:8;;40176:58;;40190:42;40206:4;40220;40227;40190:15;:42::i;:::-;40251:35;40272:13;40251:16;:6;40262:4;40251:10;:16::i;:::-;:20;;:35::i;:::-;40244:42;38462:1832;-1:-1:-1;;;;;;;38462:1832:0:o;16331:406::-;-1:-1:-1;;;;;16415:21:0;;16407:60;;;;-1:-1:-1;;;16407:60:0;;31926:2:1;16407:60:0;;;31908:21:1;31965:2;31945:18;;;31938:30;32004:28;31984:18;;;31977:56;32050:18;;16407:60:0;31724:350:1;16407:60:0;16565:61;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16565:18:0;;-1:-1:-1;16565:18:0;;;;;;;;;;;;:61;;16588:6;;16565:22;:61::i;:::-;-1:-1:-1;;;;;16544:18:0;;:9;:18;;;;;;;;;;:82;16652:12;;:24;;16669:6;16652:16;:24::i;:::-;16637:12;:39;16692:37;;4542:25:1;;;16718:1:0;;-1:-1:-1;;;;;16692:37:0;;;;;4530:2:1;4515:18;16692:37:0;;;;;;;16331:406;;:::o;17930:118::-;-1:-1:-1;;;;;17981:22:0;;;;;;:13;:22;;;;;;:29;;-1:-1:-1;;17981:29:0;18006:4;17981:29;;;18017;;;17981:22;18017:29;17930:118;:::o;45283:395::-;45373:16;;;45387:1;45373:16;;;;;;;;45349:21;;45373:16;;;;;;;;;;-1:-1:-1;45373:16:0;45349:40;;45418:4;45400;45405:1;45400:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;45400:23:0;;;:7;;;;;;;;;;:23;;;;45444:15;;:22;;;-1:-1:-1;;;45444:22:0;;;;:15;;;;;:20;;:22;;;;;45400:7;;45444:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45434:4;45439:1;45434:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;45434:32:0;;;:7;;;;;;;;;:32;45509:15;;45477:62;;45494:4;;45509:15;45527:11;45477:8;:62::i;:::-;45550:15;;:120;;-1:-1:-1;;;45550:120:0;;-1:-1:-1;;;;;45550:15:0;;;;:66;;:120;;45617:11;;45550:15;;45633:4;;45647;;45654:15;;45550:120;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45338:340;45283:395;:::o;9826:153::-;9884:7;9916:1;9912;:5;9904:44;;;;-1:-1:-1;;;9904:44:0;;33388:2:1;9904:44:0;;;33370:21:1;33427:2;33407:18;;;33400:30;33466:28;33446:18;;;33439:56;33512:18;;9904:44:0;33186:350:1;9904:44:0;9966:5;9970:1;9966;:5;:::i;45921:413::-;46029:13;-1:-1:-1;;;;;14065:18:0;45983:7;14065:18;;;;;;;;;;;46077:7;;45983;;46087:3;;46069:15;;46077:7;;14065:18;46069:15;:::i;:::-;:21;;;;:::i;:::-;46124:7;;46054:36;;-1:-1:-1;46101:12:0;;46134:3;;46116:15;;46124:7;;;;;46116:5;:15;:::i;:::-;:21;;;;:::i;:::-;46101:36;;46162:4;46152:6;:14;46148:37;;-1:-1:-1;46184:1:0;;45921:413;-1:-1:-1;;;;45921:413:0:o;46148:37::-;46209:4;46200:6;:13;46196:52;;;46231:11;;46245:3;;46222:20;;46231:11;;;;;46222:6;:20;:::i;:::-;:26;;;;:::i;:::-;46215:33;45921:413;-1:-1:-1;;;;;45921:413:0:o;46196:52::-;46323:3;46309:9;46314:4;46309;:9;:::i;:::-;46284:11;;46298:6;;46284:11;;;;;46269;46276:4;46298:6;46269:11;:::i;:::-;46268:27;;;;:::i;:::-;:36;;;;:::i;:::-;46267:52;;;;:::i;338:131:1:-;-1:-1:-1;;;;;413:31:1;;403:42;;393:70;;459:1;456;449:12;474:247;533:6;586:2;574:9;565:7;561:23;557:32;554:52;;;602:1;599;592:12;554:52;641:9;628:23;660:31;685:5;660:31;:::i;1876:548::-;1988:4;2017:2;2046;2035:9;2028:21;2078:6;2072:13;2121:6;2116:2;2105:9;2101:18;2094:34;2146:1;2156:140;2170:6;2167:1;2164:13;2156:140;;;2265:14;;;2261:23;;2255:30;2231:17;;;2250:2;2227:26;2220:66;2185:10;;2156:140;;;2160:3;2345:1;2340:2;2331:6;2320:9;2316:22;2312:31;2305:42;2415:2;2408;2404:7;2399:2;2391:6;2387:15;2383:29;2372:9;2368:45;2364:54;2356:62;;;;1876:548;;;;:::o;2429:315::-;2497:6;2505;2558:2;2546:9;2537:7;2533:23;2529:32;2526:52;;;2574:1;2571;2564:12;2526:52;2613:9;2600:23;2632:31;2657:5;2632:31;:::i;:::-;2682:5;2734:2;2719:18;;;;2706:32;;-1:-1:-1;;;2429:315:1:o;3149:118::-;3235:5;3228:13;3221:21;3214:5;3211:32;3201:60;;3257:1;3254;3247:12;3272:156;3338:20;;3398:4;3387:16;;3377:27;;3367:55;;3418:1;3415;3408:12;3367:55;3272:156;;;:::o;3433:724::-;3522:6;3530;3538;3546;3554;3562;3615:3;3603:9;3594:7;3590:23;3586:33;3583:53;;;3632:1;3629;3622:12;3583:53;3671:9;3658:23;3690:28;3712:5;3690:28;:::i;:::-;3737:5;-1:-1:-1;3794:2:1;3779:18;;3766:32;3807:30;3766:32;3807:30;:::i;:::-;3856:7;-1:-1:-1;3915:2:1;3900:18;;3887:32;3928:30;3887:32;3928:30;:::i;:::-;3977:7;-1:-1:-1;4003:36:1;4035:2;4020:18;;4003:36;:::i;:::-;3993:46;;4058:37;4090:3;4079:9;4075:19;4058:37;:::i;:::-;4048:47;;4114:37;4146:3;4135:9;4131:19;4114:37;:::i;:::-;4104:47;;3433:724;;;;;;;;:::o;4578:456::-;4655:6;4663;4671;4724:2;4712:9;4703:7;4699:23;4695:32;4692:52;;;4740:1;4737;4730:12;4692:52;4779:9;4766:23;4798:31;4823:5;4798:31;:::i;:::-;4848:5;-1:-1:-1;4905:2:1;4890:18;;4877:32;4918:33;4877:32;4918:33;:::i;:::-;4578:456;;4970:7;;-1:-1:-1;;;5024:2:1;5009:18;;;;4996:32;;4578:456::o;5039:703::-;5157:6;5165;5173;5181;5234:3;5222:9;5213:7;5209:23;5205:33;5202:53;;;5251:1;5248;5241:12;5202:53;5290:9;5277:23;5309:31;5334:5;5309:31;:::i;:::-;5359:5;-1:-1:-1;5416:2:1;5401:18;;5388:32;5429:33;5388:32;5429:33;:::i;:::-;5481:7;-1:-1:-1;5540:2:1;5525:18;;5512:32;5553:33;5512:32;5553:33;:::i;:::-;5605:7;-1:-1:-1;5664:2:1;5649:18;;5636:32;5677:33;5636:32;5677:33;:::i;:::-;5039:703;;;;-1:-1:-1;5039:703:1;;-1:-1:-1;;5039:703:1:o;5936:309::-;6001:6;6009;6062:2;6050:9;6041:7;6037:23;6033:32;6030:52;;;6078:1;6075;6068:12;6030:52;6117:9;6104:23;6136:28;6158:5;6136:28;:::i;6250:523::-;6354:6;6362;6370;6378;6386;6394;6447:3;6435:9;6426:7;6422:23;6418:33;6415:53;;;6464:1;6461;6454:12;6415:53;-1:-1:-1;;6487:23:1;;;6557:2;6542:18;;6529:32;;-1:-1:-1;6608:2:1;6593:18;;6580:32;;6659:2;6644:18;;6631:32;;-1:-1:-1;6710:3:1;6695:19;;6682:33;;-1:-1:-1;6762:3:1;6747:19;6734:33;;-1:-1:-1;6250:523:1;-1:-1:-1;6250:523:1:o;6778:661::-;6900:6;6908;6916;6924;6932;6940;6948;6956;7009:3;6997:9;6988:7;6984:23;6980:33;6977:53;;;7026:1;7023;7016:12;6977:53;-1:-1:-1;;7049:23:1;;;7119:2;7104:18;;7091:32;;-1:-1:-1;7170:2:1;7155:18;;7142:32;;7221:2;7206:18;;7193:32;;-1:-1:-1;7272:3:1;7257:19;;7244:33;;-1:-1:-1;7324:3:1;7309:19;;7296:33;;-1:-1:-1;7376:3:1;7361:19;;7348:33;;-1:-1:-1;7428:3:1;7413:19;7400:33;;-1:-1:-1;6778:661:1;-1:-1:-1;6778:661:1:o;7444:789::-;7527:6;7535;7543;7551;7559;7612:3;7600:9;7591:7;7587:23;7583:33;7580:53;;;7629:1;7626;7619:12;7580:53;7668:9;7655:23;7687:31;7712:5;7687:31;:::i;:::-;7737:5;-1:-1:-1;7794:2:1;7779:18;;7766:32;7807:30;7766:32;7807:30;:::i;:::-;7856:7;-1:-1:-1;7915:2:1;7900:18;;7887:32;7928:30;7887:32;7928:30;:::i;:::-;7977:7;-1:-1:-1;8036:2:1;8021:18;;8008:32;8049:30;8008:32;8049:30;:::i;:::-;8098:7;-1:-1:-1;8157:3:1;8142:19;;8129:33;8171:30;8129:33;8171:30;:::i;:::-;8220:7;8210:17;;;7444:789;;;;;;;;:::o;8808:248::-;8876:6;8884;8937:2;8925:9;8916:7;8912:23;8908:32;8905:52;;;8953:1;8950;8943:12;8905:52;-1:-1:-1;;8976:23:1;;;9046:2;9031:18;;;9018:32;;-1:-1:-1;8808:248:1:o;9321:382::-;9386:6;9394;9447:2;9435:9;9426:7;9422:23;9418:32;9415:52;;;9463:1;9460;9453:12;9415:52;9502:9;9489:23;9521:31;9546:5;9521:31;:::i;:::-;9571:5;-1:-1:-1;9628:2:1;9613:18;;9600:32;9641:30;9600:32;9641:30;:::i;:::-;9690:7;9680:17;;;9321:382;;;;;:::o;10340:789::-;10456:6;10464;10472;10480;10488;10496;10504;10512;10565:3;10553:9;10544:7;10540:23;10536:33;10533:53;;;10582:1;10579;10572:12;10533:53;10618:9;10605:23;10595:33;;10675:2;10664:9;10660:18;10647:32;10637:42;;10726:2;10715:9;10711:18;10698:32;10688:42;;10777:2;10766:9;10762:18;10749:32;10739:42;;10828:3;10817:9;10813:19;10800:33;10790:43;;10880:3;10869:9;10865:19;10852:33;10842:43;;10935:3;10924:9;10920:19;10907:33;10949:28;10971:5;10949:28;:::i;:::-;10996:5;-1:-1:-1;11053:3:1;11038:19;;11025:33;11067:30;11025:33;11067:30;:::i;:::-;11116:7;11106:17;;;10340:789;;;;;;;;;;;:::o;12286:461::-;12339:3;12377:5;12371:12;12404:6;12399:3;12392:19;12430:4;12459:2;12454:3;12450:12;12443:19;;12496:2;12489:5;12485:14;12517:1;12527:195;12541:6;12538:1;12535:13;12527:195;;;12606:13;;-1:-1:-1;;;;;12602:39:1;12590:52;;12662:12;;;;12697:15;;;;12638:1;12556:9;12527:195;;;-1:-1:-1;12738:3:1;;12286:461;-1:-1:-1;;;;;12286:461:1:o;12752:332::-;12959:6;12948:9;12941:25;13002:2;12997;12986:9;12982:18;12975:30;12922:4;13022:56;13074:2;13063:9;13059:18;13051:6;13022:56;:::i;13089:388::-;13157:6;13165;13218:2;13206:9;13197:7;13193:23;13189:32;13186:52;;;13234:1;13231;13224:12;13186:52;13273:9;13260:23;13292:31;13317:5;13292:31;:::i;:::-;13342:5;-1:-1:-1;13399:2:1;13384:18;;13371:32;13412:33;13371:32;13412:33;:::i;13745:180::-;13804:6;13857:2;13845:9;13836:7;13832:23;13828:32;13825:52;;;13873:1;13870;13863:12;13825:52;-1:-1:-1;13896:23:1;;13745:180;-1:-1:-1;13745:180:1:o;13930:127::-;13991:10;13986:3;13982:20;13979:1;13972:31;14022:4;14019:1;14012:15;14046:4;14043:1;14036:15;14062:128;14129:9;;;14150:11;;;14147:37;;;14164:18;;:::i;14195:380::-;14274:1;14270:12;;;;14317;;;14338:61;;14392:4;14384:6;14380:17;14370:27;;14338:61;14445:2;14437:6;14434:14;14414:18;14411:38;14408:161;;14491:10;14486:3;14482:20;14479:1;14472:31;14526:4;14523:1;14516:15;14554:4;14551:1;14544:15;14408:161;;14195:380;;;:::o;14580:407::-;14782:2;14764:21;;;14821:2;14801:18;;;14794:30;14860:34;14855:2;14840:18;;14833:62;-1:-1:-1;;;14926:2:1;14911:18;;14904:41;14977:3;14962:19;;14580:407::o;16919:168::-;16992:9;;;17023;;17040:15;;;17034:22;;17020:37;17010:71;;17061:18;;:::i;17092:125::-;17157:9;;;17178:10;;;17175:36;;;17191:18;;:::i;17222:422::-;17311:1;17354:5;17311:1;17368:270;17389:7;17379:8;17376:21;17368:270;;;17448:4;17444:1;17440:6;17436:17;17430:4;17427:27;17424:53;;;17457:18;;:::i;:::-;17507:7;17497:8;17493:22;17490:55;;;17527:16;;;;17490:55;17606:22;;;;17566:15;;;;17368:270;;;17372:3;17222:422;;;;;:::o;17649:806::-;17698:5;17728:8;17718:80;;-1:-1:-1;17769:1:1;17783:5;;17718:80;17817:4;17807:76;;-1:-1:-1;17854:1:1;17868:5;;17807:76;17899:4;17917:1;17912:59;;;;17985:1;17980:130;;;;17892:218;;17912:59;17942:1;17933:10;;17956:5;;;17980:130;18017:3;18007:8;18004:17;18001:43;;;18024:18;;:::i;:::-;-1:-1:-1;;18080:1:1;18066:16;;18095:5;;17892:218;;18194:2;18184:8;18181:16;18175:3;18169:4;18166:13;18162:36;18156:2;18146:8;18143:16;18138:2;18132:4;18129:12;18125:35;18122:77;18119:159;;;-1:-1:-1;18231:19:1;;;18263:5;;18119:159;18310:34;18335:8;18329:4;18310:34;:::i;:::-;18380:6;18376:1;18372:6;18368:19;18359:7;18356:32;18353:58;;;18391:18;;:::i;:::-;18429:20;;17649:806;-1:-1:-1;;;17649:806:1:o;18460:140::-;18518:5;18547:47;18588:4;18578:8;18574:19;18568:4;18547:47;:::i;18605:217::-;18645:1;18671;18661:132;;18715:10;18710:3;18706:20;18703:1;18696:31;18750:4;18747:1;18740:15;18778:4;18775:1;18768:15;18661:132;-1:-1:-1;18807:9:1;;18605:217::o;21194:184::-;21264:6;21317:2;21305:9;21296:7;21292:23;21288:32;21285:52;;;21333:1;21330;21323:12;21285:52;-1:-1:-1;21356:16:1;;21194:184;-1:-1:-1;21194:184:1:o;21662:245::-;21729:6;21782:2;21770:9;21761:7;21757:23;21753:32;21750:52;;;21798:1;21795;21788:12;21750:52;21830:9;21824:16;21849:28;21871:5;21849:28;:::i;30227:306::-;30315:6;30323;30331;30384:2;30372:9;30363:7;30359:23;30355:32;30352:52;;;30400:1;30397;30390:12;30352:52;30429:9;30423:16;30413:26;;30479:2;30468:9;30464:18;30458:25;30448:35;;30523:2;30512:9;30508:18;30502:25;30492:35;;30227:306;;;;;:::o;32211:127::-;32272:10;32267:3;32263:20;32260:1;32253:31;32303:4;32300:1;32293:15;32327:4;32324:1;32317:15;32343:251;32413:6;32466:2;32454:9;32445:7;32441:23;32437:32;32434:52;;;32482:1;32479;32472:12;32434:52;32514:9;32508:16;32533:31;32558:5;32533:31;:::i;32599:582::-;32898:6;32887:9;32880:25;32941:6;32936:2;32925:9;32921:18;32914:34;32984:3;32979:2;32968:9;32964:18;32957:31;32861:4;33005:57;33057:3;33046:9;33042:19;33034:6;33005:57;:::i;:::-;-1:-1:-1;;;;;33098:32:1;;;;33093:2;33078:18;;33071:60;-1:-1:-1;33162:3:1;33147:19;33140:35;32997:65;32599:582;-1:-1:-1;;;32599:582:1:o

Swarm Source

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