ETH Price: $3,413.00 (-2.49%)
Gas: 9 Gwei

Token

TITAN (TITAN)
 

Overview

Max Total Supply

1,000,000,000 TITAN

Holders

201

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
44,952.115447009 TITAN

Value
$0.00
0x2bc4198cE3f1c821D31Ae29851A01FDc417C1bD6
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:
ShibaTitans

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-23
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

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

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }


    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


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


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


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


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

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) 
    {
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) 
            {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () 
    {
        address msgSender = _msgSender();
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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


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


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

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }


    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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 getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);

}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract LockToken is Ownable {
    bool public isOpen = false;
    uint256 launchedAt = 0;
    mapping(address => bool) private _whiteList;
    modifier open(address from, address to) {
        require(isOpen || _whiteList[from] || _whiteList[to], "Not Open");
        _;
    }

    constructor() {
        _whiteList[msg.sender] = true;
        _whiteList[address(this)] = true;
    }

    function openTrade() external onlyOwner {
        isOpen = true;
        if (launchedAt == 0){
            launchedAt = block.timestamp;
        }
    }

    function stopTrade() external onlyOwner {
        isOpen = false;
    }

    function includeToWhiteList(address[] memory _users) external onlyOwner {
        for(uint8 i = 0; i < _users.length; i++) {
            _whiteList[_users[i]] = true;
        }
    }
}

contract ShibaTitans is Context, IERC20, Ownable, LockToken 
{
    using SafeMath for uint256;
    using Address for address;

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint256) private _balances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _blacklisted;
    mapping (address => bool) private _contractExempt;
    mapping (address => bool) private _maxWalletLimitExempt;
    mapping (address => bool) private boughtEarly;
    mapping (address => bool) private isAMM;
    uint256 private constant MAX = ~uint256(0);

    string private _name = "TITAN";
    string private _symbol = "TITAN";
    uint8 private _decimals = 9;

    uint256 public _devFee = 4;
    uint256 public _liquidityFee = 4;
    uint256 public _marketingFee = 4;

    uint256 public _saleDevFee = 4;
    uint256 public _saleLiquidityFee = 4;
    uint256 public _saleMarketingFee = 4;

    bool public transferTaxEnabled = true;
    uint256 public transferTax = 15;

    bool public contractsAllowed = false;
    uint256 public _taxDivisor = 100;

    address payable public marketingWallet;
    address payable public devWallet;
    
    uint256 public buybackDivisor = 2; // if equals to _liquidityFee, no liquidity will be added, only buybacks will happen from the ETH on contract
    address public deadWallet = 0x000000000000000000000000000000000000dEaD;
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    bool public maxSellAmountActive = true;
    bool public maxBuyAmountActive = true;
    bool public maxWalletLimitActive = true;

    uint256 private _totalSupply = 1_000_000_000 * 10 **_decimals;
    uint256 public maxSellAmount = 20_000_000 * 10 ** _decimals;
    uint256 public maxBuyAmount = 20_000_000 * 10 ** _decimals;
    uint256 public numTokensSellToAddToLiquidity = 1_000_000 * 10 ** _decimals;
    uint256 public maxWalletLimit = 50_000_000 * 10 ** _decimals;

    uint256 public buyBackUpperLimit = 1 * 10 ** 18;
    uint256 public buyBackLowerLimit = 1 * 10 ** 12;
    bool public buyBackEnabled = true;

    event BuyBackEnabledUpdated(bool enabled);
    event SwapETHForTokens(uint256 amountIn, address[] path);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        address uni = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        marketingWallet = payable(0x2459958C8cfF592e7c38d8866B9C32728B1FA455); // edit this
        devWallet = payable(0x7C4E46eA1B2Bcf6b031C99628a6842B1fCa54719); // edit this
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(uni);  
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;

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

        _balances[owner()] = _totalSupply;
        _contractExempt[address(this)] = true;
        _contractExempt[uni] = true;
        _contractExempt[marketingWallet] = true;
        _contractExempt[devWallet] = true;
        _contractExempt[uniswapV2Pair] = true;

        _maxWalletLimitExempt[address(this)] = true;
        _maxWalletLimitExempt[uni] = true;
        _maxWalletLimitExempt[marketingWallet] = true;
        _maxWalletLimitExempt[devWallet] = true;
        _maxWalletLimitExempt[uniswapV2Pair] = true;
        _maxWalletLimitExempt[owner()] = true;

        _limits[owner()].isExcluded = true;
        _limits[address(this)].isExcluded = true;
        _limits[uni].isExcluded = true;
        
        isAMM[uniswapV2Pair] = true;

        // Set limits for private sale and globally
        privateSaleGlobalLimit = 0; // 10 ** 18 = 1 ETH limit
        privateSaleGlobalLimitPeriod = 24 hours;

        globalLimit = 5 * 10 ** 18; // 10 ** 18 = 1 ETH limit
        globalLimitPeriod = 24 hours;

        _allowances[owner()][uni] = ~uint256(0); // you can leave this here, it will approve tokens to uniswap, so you can add liquidity easily
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function setAllBuyFees(uint256 devFee, uint256 liquidityFee, uint256 marketingFee) public onlyOwner() {
        _devFee = devFee;
        _liquidityFee = liquidityFee;
        _marketingFee = marketingFee;
    }

    function setAllSaleFees(uint256 devFee, uint256 liquidityFee, uint256 marketingFee) public onlyOwner() {
        _saleDevFee = devFee;
        _saleLiquidityFee = liquidityFee;
        _saleMarketingFee = marketingFee;
    }

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

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

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

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

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

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

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

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

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

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

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

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

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

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

    function setAMMStatus(address _address, bool status) public onlyOwner {
        isAMM[_address] = status;
    }

    function AMMStatus(address _address) public view returns(bool) {
        return isAMM[_address]; 
    }

    function _transfer(address from, address to, uint256 amount) private 
    open(from, to)
    {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(_balances[from] >= amount, "Transfer amount exceeds balance");
        require(!(_blacklisted[from] || _blacklisted[to]), "Blacklisted address involved");
        require(contractsAllowed || !from.isContract() || isContractExempt(from), "No contracts allowed");
        uint256 contractTokenBalance = balanceOf(address(this));

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (overMinTokenBalance &&  !inSwapAndLiquify && !isAMM[from] && swapAndLiquifyEnabled){
            checkForBuyBack();
            contractTokenBalance = numTokensSellToAddToLiquidity;
            swapAndLiquify(contractTokenBalance);
        }

        uint256 tax;
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to] || inSwapAndLiquify){
            // From or to excluded, so don't take fees, also don't take fees when contract is swapping
            tax = 0;
        } else {
            if(isAMM[to]){
                // sell
                require(amount <= maxSellAmount || !maxSellAmountActive, "Amount exceeds the max sell amount");
                tax = _saleLiquidityFee.add(_saleMarketingFee).add(_saleDevFee);
            } else if (isAMM[from]) {
                if (block.timestamp == launchedAt){
                    _blacklisted[to] = true;
                }
                // buy
                require(amount <= maxBuyAmount || !maxBuyAmountActive, "Amount exceeds the max buy amount");
                tax = _liquidityFee.add(_marketingFee).add(_devFee);
            } else {
                // transfer
                require(!_limits[from].isPrivateSaler && block.timestamp > launchedAt, "No transfers for private salers");
                tax = transferTaxEnabled ? transferTax : 0;
            }
        }
        //handle token movements
        uint256 taxedAmount = _getTaxed(amount, tax);
        uint256 taxAmount = amount.sub(taxedAmount); 
        _balances[from] = _balances[from].sub(amount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        _balances[to] = _balances[to].add(taxedAmount);
        require(_balances[to] <= maxWalletLimit || _maxWalletLimitExempt[to] || !maxWalletLimitActive, "Exceeds max tokens limit on a single wallet");
        
        // handle limits on sells/transfers
        if (!inSwapAndLiquify && !isAMM[from]){
            _handleLimited(from, taxedAmount);
        }
        
        emit Transfer(from,to,taxedAmount);
        if (taxAmount != 0){
            emit Transfer(from,address(this),taxAmount);
        }
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 allFee = _liquidityFee.add(_marketingFee).add(_devFee);
        if (allFee != 0){
            uint256 halfLiquidityTokens = contractTokenBalance.div(allFee).mul(_liquidityFee-buybackDivisor).div(2);
            uint256 swapableTokens = contractTokenBalance.sub(halfLiquidityTokens);
            uint256 initialBalance = address(this).balance;
            swapTokensForEth(swapableTokens);
            uint256 newBalance = address(this).balance.sub(initialBalance);
            uint256 ethForLiquidity = newBalance.div(allFee).mul(_liquidityFee-buybackDivisor).div(2);
            if(ethForLiquidity > 0) 
            {
            addLiquidity(halfLiquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(halfLiquidityTokens, ethForLiquidity, halfLiquidityTokens);
            }
            marketingWallet.transfer(newBalance.div(allFee).mul(_marketingFee));
            devWallet.transfer(newBalance.div(allFee).mul(_devFee));
        }
    }

    function _getTaxed(uint256 tokenAmount, uint256 tax) private view returns (uint256 taxed){
        taxed = tokenAmount.mul(_taxDivisor.sub(tax)).div(_taxDivisor);
    }

    function setTransferTaxStatus(bool status) public onlyOwner{
        transferTaxEnabled = status;
    }

    function setTransferTax(uint256 newTax) public onlyOwner{
        transferTax = newTax;
    }

    function setMaxBuyAmountActive(bool status) public onlyOwner{
        maxBuyAmountActive = status;
    } 

    function setMaxSellAmountActive(bool status) public onlyOwner{
        maxSellAmountActive = status;
    }

    function setMaxWalletLimitActive(bool status) public onlyOwner{
        maxWalletLimitActive = status;
    }

    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 manualBurn(uint256 burnAmount) public onlyOwner {
        _transfer(owner(), deadWallet, burnAmount);
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this), tokenAmount, 0, 0, owner(), block.timestamp);
    }

    function setExcludeFromFee(address account, bool _enabled) public onlyOwner {
        _isExcludedFromFee[account] = _enabled;
    }
    
    function setmarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = payable(newWallet);
    }

    function setDevWallet(address newWallet) external onlyOwner {
        devWallet = payable(newWallet);
    }

    function setMaxSellAmount(uint256 amount) external onlyOwner {
        maxSellAmount = amount;
    }

    function setBuybackDivisor(uint256 amount) external onlyOwner {
        require(amount <= _liquidityFee, "Value higher than liquidity fee not allowed");
        buybackDivisor = amount;
    }

    function setMaxBuyAmount(uint256 amount) external onlyOwner {
        maxBuyAmount = amount;
    }

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

    function setNumTokensSellToAddToLiquidity(uint256 amount) public onlyOwner {
        numTokensSellToAddToLiquidity = amount;
    }

    function setBuybackLowerLimit(uint256 value) public onlyOwner {
        buyBackLowerLimit = value;
    }

    function buyBackTokens(uint256 amount) private lockTheSwap {
    	if (amount > 0) {
    	    swapETHForTokens(amount);
	    }
    }

    function checkForBuyBack() private lockTheSwap {
        uint256 balance = address(this).balance;
        if (buyBackEnabled && balance >= buyBackLowerLimit) 
        {    
            if (balance > buyBackUpperLimit) {
                balance = buyBackUpperLimit;
                }
            buyBackTokens(balance);
        }
    }

    function swapETHForTokens(uint256 amount) private {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);
        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            deadWallet,
            block.timestamp);
        emit SwapETHForTokens(amount, path);
    }

    function setBuybackUpperLimit(uint256 buyBackLimit) external onlyOwner() {
        buyBackUpperLimit = buyBackLimit;
    }

    function setBuyBackEnabled(bool _enabled) public onlyOwner {
        buyBackEnabled = _enabled;
        emit BuyBackEnabledUpdated(_enabled);
    }
    
    function manualBuyback(uint256 amount) external onlyOwner() {
        buyBackTokens(amount);
    }

    // Blacklist
    function setBlacklistStatus(address _address, bool status) public onlyOwner{
        _blacklisted[_address] = status;
    }

    function isBlacklisted(address _address) public view returns (bool) {
        return _blacklisted[_address];
    }

    // Contract rejection
    function setContractsAllowedStatus(bool status) public onlyOwner {
        contractsAllowed = status;
    }

    function isContractExempt(address _address) public view returns (bool) {
        return _contractExempt[_address];
    }
    
    function setContractExemptStatus(address _address, bool status) public onlyOwner {
        _contractExempt[_address] = status;
    }

    // Max wallet
    function isMaxWalletLimitExempt(address _address) public view returns(bool) {
        return _maxWalletLimitExempt[_address];
    }

    function setMaxWalletLimit(uint256 value) public onlyOwner {
        maxWalletLimit = value;
    }

    function setMaxWalletLimitExemptStatus(address _address, bool status) public onlyOwner {
        _maxWalletLimitExempt[_address] = status;
    }

    function getETHValue(uint256 tokenAmount) private view returns (uint256 ethValue) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        ethValue = uniswapV2Router.getAmountsOut(tokenAmount, path)[1];
    }

    // private sale limits
    mapping(address => LimitedWallet) private _limits;

    uint256 public privateSaleGlobalLimit; // limit over timeframe for private salers
    uint256 public privateSaleGlobalLimitPeriod; // timeframe for private salers

    uint256 public globalLimit; // limit over timeframe for all
    uint256 public globalLimitPeriod; // timeframe for all

    bool public globalLimitsActive = true;
    bool public globalLimitsPrivateSaleActive = true;

    struct LimitedWallet {
        uint256[] sellAmounts;
        uint256[] sellTimestamps;
        uint256 limitPeriod; // ability to set custom values for individual wallets
        uint256 limitETH; // ability to set custom values for individual wallets
        bool isPrivateSaler;
        bool isExcluded;
    }

    function setGlobalLimitPrivateSale(uint256 newLimit) public onlyOwner {
        privateSaleGlobalLimit = newLimit;
    } 

    function setGlobalLimitPeriodPrivateSale(uint256 newPeriod) public onlyOwner {
        privateSaleGlobalLimitPeriod = newPeriod;
    }

    function setGlobalLimit(uint256 newLimit) public onlyOwner {
        globalLimit = newLimit;
    } 

    function setGlobalLimitPeriod(uint256 newPeriod) public onlyOwner {
        globalLimitPeriod = newPeriod;
    }

    function setGlobalLimitsPrivateSaleActiveStatus(bool status) public onlyOwner {
        globalLimitsPrivateSaleActive = status;
    }

    function setGlobalLimitsActiveStatus(bool status) public onlyOwner {
        globalLimitsActive = status;
    }

    function getLimits(address _address) public view returns (LimitedWallet memory){
        return _limits[_address];
    }

    // Set custom limits for an address. Defaults to 0, thus will use the "globalLimitPeriod" and "globalLimitETH" if we don't set them
    function setLimits(address[] calldata addresses, uint256[] calldata limitPeriods, uint256[] calldata limitsETH) public onlyOwner{
        require(addresses.length == limitPeriods.length && limitPeriods.length == limitsETH.length, "Array lengths don't match");
        for(uint256 i=0; i < addresses.length; i++){
            _limits[addresses[i]].limitPeriod = limitPeriods[i];
            _limits[addresses[i]].limitETH = limitsETH[i];
        }

    }

    function addPrivateSalers(address[] calldata addresses) public onlyOwner{
        for(uint256 i=0; i < addresses.length; i++){
            _limits[addresses[i]].isPrivateSaler = true;
        }
    }

    function removePrivateSalers(address[] calldata addresses) public onlyOwner{
        for(uint256 i=0; i < addresses.length; i++){
            _limits[addresses[i]].isPrivateSaler = false;
        }
    }

    function addExcludedFromLimits(address[] calldata addresses) public onlyOwner{
        for(uint256 i=0; i < addresses.length; i++){
            _limits[addresses[i]].isExcluded = true;
        }
    }

    function removeExcludedFromLimits(address[] calldata addresses) public onlyOwner{
        for(uint256 i=0; i < addresses.length; i++){
            _limits[addresses[i]].isExcluded = false;
        }
    }

    // Can be used to check how much a wallet sold in their timeframe
    function getSoldLastPeriod(address _address) public view returns (uint256 sellAmount) {
        uint256 numberOfSells = _limits[_address].sellAmounts.length;

        if (numberOfSells == 0) {
            return sellAmount;
        }
        uint256 defaultLimitPeriod = _limits[_address].isPrivateSaler ? privateSaleGlobalLimitPeriod : globalLimitPeriod;
        uint256 limitPeriod = _limits[_address].limitPeriod == 0 ? defaultLimitPeriod : _limits[_address].limitPeriod;
        while (true) {
            if (numberOfSells == 0) {
                break;
            }
            numberOfSells--;
            uint256 sellTimestamp = _limits[_address].sellTimestamps[numberOfSells];
            if (block.timestamp - limitPeriod <= sellTimestamp) {
                sellAmount += _limits[_address].sellAmounts[numberOfSells];
            } else {
                break;
            }
        }
    }
    // Handle private sale wallets
    function _handleLimited(address from, uint256 taxedAmount) private {
        if (_limits[from].isExcluded || (!globalLimitsActive && !_limits[from].isPrivateSaler) || (!globalLimitsPrivateSaleActive && _limits[from].isPrivateSaler)){
            return;
        }
        uint256 ethValue = getETHValue(taxedAmount);
        _limits[from].sellTimestamps.push(block.timestamp);
        _limits[from].sellAmounts.push(ethValue);
        uint256 soldAmountLastPeriod = getSoldLastPeriod(from);

        uint256 defaultLimit = _limits[from].isPrivateSaler ? privateSaleGlobalLimit : globalLimit;
        uint256 limit = _limits[from].limitETH == 0 ? defaultLimit : _limits[from].limitETH;
        require(soldAmountLastPeriod <= limit, "Amount over the limit for time period");
    }
    
    function multiSendTokens(address[] calldata addresses, uint256[] calldata amounts) public onlyOwner{
        for(uint256 i=0; i < addresses.length; i++){
            _transfer(msg.sender, addresses[i], amounts[i]);
        }
    }
    // Get tokens that are on the contract
    function sweepTokens(address token, address recipient) public onlyOwner {
        uint256 amount = IERC20(token).balanceOf(address(this));
        IERC20(token).transfer(recipient, amount);
    }

    function withdraw() public onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }
}

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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"BuyBackEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"AMMStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_saleDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_saleLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_saleMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addPrivateSalers","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackLowerLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackUpperLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractsAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getLimits","outputs":[{"components":[{"internalType":"uint256[]","name":"sellAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"sellTimestamps","type":"uint256[]"},{"internalType":"uint256","name":"limitPeriod","type":"uint256"},{"internalType":"uint256","name":"limitETH","type":"uint256"},{"internalType":"bool","name":"isPrivateSaler","type":"bool"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"internalType":"struct ShibaTitans.LimitedWallet","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getSoldLastPeriod","outputs":[{"internalType":"uint256","name":"sellAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimitPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimitsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalLimitsPrivateSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"includeToWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isContractExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isMaxWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"name":"manualBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmountActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmountActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleGlobalLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"privateSaleGlobalLimitPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removePrivateSalers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setAMMStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setAllBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setAllSaleFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setBlacklistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBuyBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setBuybackDivisor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setBuybackLowerLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyBackLimit","type":"uint256"}],"name":"setBuybackUpperLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setContractExemptStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setContractsAllowedStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setGlobalLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"setGlobalLimitPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPeriod","type":"uint256"}],"name":"setGlobalLimitPeriodPrivateSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setGlobalLimitPrivateSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setGlobalLimitsActiveStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setGlobalLimitsPrivateSaleActiveStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"limitPeriods","type":"uint256[]"},{"internalType":"uint256[]","name":"limitsETH","type":"uint256[]"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxBuyAmountActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxSellAmountActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxWalletLimitActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxWalletLimitExemptStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTax","type":"uint256"}],"name":"setTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setTransferTaxStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setmarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepTokens","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":[{"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":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferTaxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6003805460ff19169055600060045560c060405260056080819052642a24aa20a760d91b60a09081526200003791600e919062000687565b50604080518082019091526005808252642a24aa20a760d91b60209092019182526200006691600f9162000687565b5060108054600960ff1991821681179092556004601181905560128190556013819055601481905560158190556016556017805482166001179055600f6018556019805490911690556064601a556002601d55601e805461dead6001600160a01b03199091161790556020805463ffffffff60a81b1916630101010160a81b179055620000f590600a620007a6565b6200010590633b9aca0062000867565b6021556010546200011b9060ff16600a620007a6565b6200012b906301312d0062000867565b602255601054620001419060ff16600a620007a6565b62000151906301312d0062000867565b602355601054620001679060ff16600a620007a6565b6200017690620f424062000867565b6024556010546200018c9060ff16600a620007a6565b6200019c906302faf08062000867565b602555670de0b6b3a764000060265564e8d4a510006027556028805460ff19166001179055602e805461010161ffff19909116179055348015620001df57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350336000908152600560209081526040808320805460ff19908116600190811790925530855293829020805490941617909255601b80546001600160a01b0319908116732459958c8cff592e7c38d8866b9c32728b1fa45517909155601c8054909116737c4e46ea1b2bcf6b031c99628a6842b1fca54719179055815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d928392839263c45a0155926004808201939291829003018186803b158015620002e657600080fd5b505afa158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032191906200072d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036a57600080fd5b505afa1580156200037f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a591906200072d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620003ee57600080fd5b505af115801562000403573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042991906200072d565b602080546001600160a01b03199081166001600160a01b0393841617909155601f8054909116918316919091179055600160086000620004716000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260089092528120805490921660011790915560215490600790620004cc6000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160009081209490945530808552600a84528285208054600160ff1991821681179092558884168088528588208054831684179055601b8054861689528689208054841685179055601c805487168a52878a208054851686179055885487168a52878a208054851686179055858a52600b8952878a208054851686179055828a52878a20805485168617905590548616895286892080548416851790555485168852858820805483168417905586548516885285882080548316841790558754851688528588208054831684179055875485168852602987528588206004908101805461010061ff00199182168117909255958a52878a2082018054871682179055828a52878a20909101805490951617909355855484168752600d865284872080549091169091179055602a85905562015180602b819055674563918244f40000602c55602d5584549091168452600683528184209084528252808320600019905560215490519081523392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620008dc565b828054620006959062000889565b90600052602060002090601f016020900481019282620006b9576000855562000704565b82601f10620006d457805160ff191683800117855562000704565b8280016001018555821562000704579182015b8281111562000704578251825591602001919060010190620006e7565b506200071292915062000716565b5090565b5b8082111562000712576000815560010162000717565b6000602082840312156200073f578081fd5b81516001600160a01b038116811462000756578182fd5b9392505050565b600181815b808511156200079e578160001904821115620007825762000782620008c6565b808516156200079057918102915b93841c939080029062000762565b509250929050565b60006200075660ff841683600082620007c25750600162000861565b81620007d15750600062000861565b8160018114620007ea5760028114620007f55762000815565b600191505062000861565b60ff841115620008095762000809620008c6565b50506001821b62000861565b5060208310610133831016604e8410600b84101617156200083a575081810a62000861565b6200084683836200075d565b80600019048211156200085d576200085d620008c6565b0290505b92915050565b6000816000190483118215151615620008845762000884620008c6565b500290565b600181811c908216806200089e57607f821691505b60208210811415620008c057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6147ff80620008ec6000396000f3fe6080604052600436106105ae5760003560e01c806370e50241116102f3578063a69df4b51161019b578063d1d3a05f116100e7578063f064321f116100a0578063f34eb0b81161007a578063f34eb0b81461118b578063f6887cd3146111ab578063fb201b1d146111e4578063fe575a87146111f957600080fd5b8063f064321f1461112b578063f0f165af1461114b578063f2fde38b1461116b57600080fd5b8063d1d3a05f1461104f578063d7c6e3601461106f578063da29c27f1461108f578063dd467064146110a5578063dd62ed3e146110c5578063e99c9d091461110b57600080fd5b8063bf7856b711610154578063c5f34b9c1161012e578063c5f34b9c14610fed578063ca4507881461100d578063d12a768814611023578063d17761cf1461103957600080fd5b8063bf7856b714610f8c578063c480512e14610fad578063c49b9a8014610fcd57600080fd5b8063a69df4b514610ee1578063a9059cbb14610ef6578063aa45026b14610f16578063ae02cd5c14610f2c578063af9549e014610f4c578063b498412314610f6c57600080fd5b80638b16549a1161025a57806395d89b411161021357806399fa296f116101ed57806399fa296f14610e6a5780639d5710d114610e8b578063a36322c614610ea1578063a457c2d714610ec157600080fd5b806395d89b4114610e1b57806396f9e9be14610e3057806398e2a5e214610e4a57600080fd5b80638b16549a14610d4f5780638b52590314610d6f5780638baeefce14610d8f5780638c672a2614610da45780638da5cb5b14610ddd5780638ea5220f14610dfb57600080fd5b80637ba6b4ee116102ac5780637ba6b4ee14610ca95780638124f7ac14610cc357806382d2a4bb14610cd957806385141a7714610cf9578063867a1dc214610d1957806388e765ff14610d3957600080fd5b806370e5024114610bfd578063715018a614610c13578063728d41c914610c2857806375f0a87414610c485780637638e15114610c685780637b94943b14610c8857600080fd5b80634198d1bb116104565780635ca52d67116103bd57806363e8f370116103765780636bc87c3a116103505780636bc87c3a14610b725780636fb9fbfe14610b8857806370a0823114610ba857806370bfcf2114610bde57600080fd5b806363e8f37014610b2657806366a88d9614610b4657806366d602ae14610b5c57600080fd5b80635ca52d6714610a6a5780635d38ab8514610a8a578063602bc62b14610aaa5780636053a0e314610abf5780636199d05e14610ad957806361a13b4a14610af957600080fd5b806349bd5a5e1161040f57806349bd5a5e146109775780634a74bb02146109975780634d87c644146109b857806350286f64146109d85780635342acb4146109f8578063545fb32814610a3157600080fd5b80634198d1bb146108d1578063424ba848146108f157806343614d2814610911578063437d98401461092757806347535d7b1461093d57806348914c991461095757600080fd5b806322461173116105155780632610eaca116104ce578063313ce567116104a8578063313ce5671461086457806339509351146108865780633ccfd60b146108a657806340615b8b146108bb57600080fd5b80632610eaca1461080457806329370cc6146108245780632b9b4f781461084457600080fd5b8063224611731461075457806322976e0d1461077457806322c98d341461078a578063232898b4146107a457806323b63585146107c457806323b872dd146107e457600080fd5b80631609be1d116105675780631609be1d1461069b5780631694505e146106bb578063170dde6a146106f357806318160ddd146107095780631f53ac021461071e57806321ba50811461073e57600080fd5b806303d29d28146105ba5780630609511e146105dc57806306fdde03146105fc578063095ea7b3146106275780630b6bb6f514610657578063147745e51461067757600080fd5b366105b557005b600080fd5b3480156105c657600080fd5b506105da6105d5366004614048565b611232565b005b3480156105e857600080fd5b506105da6105f736600461433f565b611290565b34801561060857600080fd5b506106116112bf565b60405161061e919061446e565b60405180910390f35b34801561063357600080fd5b50610647610642366004614075565b611351565b604051901515815260200161061e565b34801561066357600080fd5b506105da6106723660046141df565b611368565b34801561068357600080fd5b5061068d601a5481565b60405190815260200161061e565b3480156106a757600080fd5b506105da6106b6366004613fd0565b611412565b3480156106c757600080fd5b50601f546106db906001600160a01b031681565b6040516001600160a01b03909116815260200161061e565b3480156106ff57600080fd5b5061068d60155481565b34801561071557600080fd5b5060215461068d565b34801561072a57600080fd5b506105da610739366004613f98565b611542565b34801561074a57600080fd5b5061068d602b5481565b34801561076057600080fd5b506105da61076f366004613f98565b61158e565b34801561078057600080fd5b5061068d60135481565b34801561079657600080fd5b50602e546106479060ff1681565b3480156107b057600080fd5b506105da6107bf3660046140a0565b6115da565b3480156107d057600080fd5b506105da6107df36600461433f565b611693565b3480156107f057600080fd5b506106476107ff366004614008565b6116e7565b34801561081057600080fd5b506105da61081f3660046140e0565b611750565b34801561083057600080fd5b506105da61083f366004614307565b611803565b34801561085057600080fd5b506105da61085f366004614307565b611875565b34801561087057600080fd5b5060105460405160ff909116815260200161061e565b34801561089257600080fd5b506106476108a1366004614075565b6118b2565b3480156108b257600080fd5b506105da6118e8565b3480156108c757600080fd5b5061068d60165481565b3480156108dd57600080fd5b506105da6108ec36600461433f565b61193e565b3480156108fd57600080fd5b506105da61090c366004614048565b6119d3565b34801561091d57600080fd5b5061068d60145481565b34801561093357600080fd5b5061068d602d5481565b34801561094957600080fd5b506003546106479060ff1681565b34801561096357600080fd5b506105da61097236600461436f565b611a28565b34801561098357600080fd5b506020546106db906001600160a01b031681565b3480156109a357600080fd5b5060205461064790600160a81b900460ff1681565b3480156109c457600080fd5b506105da6109d336600461436f565b611a60565b3480156109e457600080fd5b506105da6109f3366004614048565b611a98565b348015610a0457600080fd5b50610647610a13366004613f98565b6001600160a01b031660009081526008602052604090205460ff1690565b348015610a3d57600080fd5b50610647610a4c366004613f98565b6001600160a01b03166000908152600b602052604090205460ff1690565b348015610a7657600080fd5b506105da610a85366004614307565b611aed565b348015610a9657600080fd5b506105da610aa5366004614307565b611b31565b348015610ab657600080fd5b5060025461068d565b348015610acb57600080fd5b506028546106479060ff1681565b348015610ae557600080fd5b506105da610af436600461433f565b611b6e565b348015610b0557600080fd5b50610b19610b14366004613f98565b611b9d565b60405161061e91906144f6565b348015610b3257600080fd5b506105da610b413660046140a0565b611cdf565b348015610b5257600080fd5b5061068d60255481565b348015610b6857600080fd5b5061068d60225481565b348015610b7e57600080fd5b5061068d60125481565b348015610b9457600080fd5b506105da610ba3366004614307565b611d8c565b348015610bb457600080fd5b5061068d610bc3366004613f98565b6001600160a01b031660009081526007602052604090205490565b348015610bea57600080fd5b50602e5461064790610100900460ff1681565b348015610c0957600080fd5b5061068d60265481565b348015610c1f57600080fd5b506105da611dd4565b348015610c3457600080fd5b506105da610c4336600461433f565b611e36565b348015610c5457600080fd5b50601b546106db906001600160a01b031681565b348015610c7457600080fd5b506105da610c83366004614048565b611e65565b348015610c9457600080fd5b5060205461064790600160c01b900460ff1681565b348015610cb557600080fd5b506019546106479060ff1681565b348015610ccf57600080fd5b5061068d60185481565b348015610ce557600080fd5b506105da610cf436600461433f565b611eba565b348015610d0557600080fd5b50601e546106db906001600160a01b031681565b348015610d2557600080fd5b506105da610d343660046140a0565b611ee9565b348015610d4557600080fd5b5061068d60235481565b348015610d5b57600080fd5b5061068d610d6a366004613f98565b611f9d565b348015610d7b57600080fd5b506105da610d8a36600461433f565b612119565b348015610d9b57600080fd5b506105da612148565b348015610db057600080fd5b50610647610dbf366004613f98565b6001600160a01b03166000908152600d602052604090205460ff1690565b348015610de957600080fd5b506000546001600160a01b03166106db565b348015610e0757600080fd5b50601c546106db906001600160a01b031681565b348015610e2757600080fd5b5061061161217e565b348015610e3c57600080fd5b506017546106479060ff1681565b348015610e5657600080fd5b506105da610e6536600461433f565b61218d565b348015610e7657600080fd5b5060205461064790600160b81b900460ff1681565b348015610e9757600080fd5b5061068d602c5481565b348015610ead57600080fd5b506105da610ebc36600461433f565b6121bc565b348015610ecd57600080fd5b50610647610edc366004614075565b6121eb565b348015610eed57600080fd5b506105da61223a565b348015610f0257600080fd5b50610647610f11366004614075565b612340565b348015610f2257600080fd5b5061068d60115481565b348015610f3857600080fd5b506105da610f473660046140a0565b61234d565b348015610f5857600080fd5b506105da610f67366004614048565b6123fa565b348015610f7857600080fd5b506105da610f8736600461433f565b61244f565b348015610f9857600080fd5b5060205461064790600160b01b900460ff1681565b348015610fb957600080fd5b506105da610fc836600461433f565b61247e565b348015610fd957600080fd5b506105da610fe8366004614307565b6124b1565b348015610ff957600080fd5b506105da611008366004614307565b612525565b34801561101957600080fd5b5061068d602a5481565b34801561102f57600080fd5b5061068d60245481565b34801561104557600080fd5b5061068d60275481565b34801561105b57600080fd5b506105da61106a366004614307565b61256d565b34801561107b57600080fd5b506105da61108a366004614307565b6125aa565b34801561109b57600080fd5b5061068d601d5481565b3480156110b157600080fd5b506105da6110c036600461433f565b6125f2565b3480156110d157600080fd5b5061068d6110e0366004613fd0565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561111757600080fd5b506105da61112636600461433f565b612677565b34801561113757600080fd5b506105da611146366004614149565b6126a6565b34801561115757600080fd5b506105da61116636600461433f565b61284a565b34801561117757600080fd5b506105da611186366004613f98565b612879565b34801561119757600080fd5b506105da6111a636600461433f565b612951565b3480156111b757600080fd5b506106476111c6366004613f98565b6001600160a01b03166000908152600a602052604090205460ff1690565b3480156111f057600080fd5b506105da612980565b34801561120557600080fd5b50610647611214366004613f98565b6001600160a01b031660009081526009602052604090205460ff1690565b6000546001600160a01b031633146112655760405162461bcd60e51b815260040161125c906144c1565b60405180910390fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112ba5760405162461bcd60e51b815260040161125c906144c1565b602b55565b6060600e80546112ce90614697565b80601f01602080910402602001604051908101604052809291908181526020018280546112fa90614697565b80156113475780601f1061131c57610100808354040283529160200191611347565b820191906000526020600020905b81548152906001019060200180831161132a57829003601f168201915b5050505050905090565b600061135e3384846129c5565b5060015b92915050565b6000546001600160a01b031633146113925760405162461bcd60e51b815260040161125c906144c1565b60005b81518160ff16101561140e57600160056000848460ff16815181106113ca57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611406816146ed565b915050611395565b5050565b6000546001600160a01b0316331461143c5760405162461bcd60e51b815260040161125c906144c1565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561147e57600080fd5b505afa158015611492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b69190614357565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153c9190614323565b50505050565b6000546001600160a01b0316331461156c5760405162461bcd60e51b815260040161125c906144c1565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115b85760405162461bcd60e51b815260040161125c906144c1565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116045760405162461bcd60e51b815260040161125c906144c1565b60005b8181101561168e5760016029600085858581811061163557634e487b7160e01b600052603260045260246000fd5b905060200201602081019061164a9190613f98565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff001990921691909117905580611686816146d2565b915050611607565b505050565b6000546001600160a01b031633146116bd5760405162461bcd60e51b815260040161125c906144c1565b6116e46116d26000546001600160a01b031690565b601e546001600160a01b031683612ae9565b50565b60006116f4848484612ae9565b61174684336117418560405180606001604052806028815260200161475d602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190613352565b6129c5565b5060019392505050565b6000546001600160a01b0316331461177a5760405162461bcd60e51b815260040161125c906144c1565b60005b838110156117fc576117ea338686848181106117a957634e487b7160e01b600052603260045260246000fd5b90506020020160208101906117be9190613f98565b8585858181106117de57634e487b7160e01b600052603260045260246000fd5b90506020020135612ae9565b806117f4816146d2565b91505061177d565b5050505050565b6000546001600160a01b0316331461182d5760405162461bcd60e51b815260040161125c906144c1565b6028805460ff19168215159081179091556040519081527f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c0906020015b60405180910390a150565b6000546001600160a01b0316331461189f5760405162461bcd60e51b815260040161125c906144c1565b602e805460ff1916911515919091179055565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161135e918590611741908661338c565b6000546001600160a01b031633146119125760405162461bcd60e51b815260040161125c906144c1565b60405133904780156108fc02916000818181858888f193505050501580156116e4573d6000803e3d6000fd5b6000546001600160a01b031633146119685760405162461bcd60e51b815260040161125c906144c1565b6012548111156119ce5760405162461bcd60e51b815260206004820152602b60248201527f56616c756520686967686572207468616e206c6971756964697479206665652060448201526a1b9bdd08185b1b1bddd95960aa1b606482015260840161125c565b601d55565b6000546001600160a01b031633146119fd5760405162461bcd60e51b815260040161125c906144c1565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a525760405162461bcd60e51b815260040161125c906144c1565b601192909255601255601355565b6000546001600160a01b03163314611a8a5760405162461bcd60e51b815260040161125c906144c1565b601492909255601555601655565b6000546001600160a01b03163314611ac25760405162461bcd60e51b815260040161125c906144c1565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611b175760405162461bcd60e51b815260040161125c906144c1565b602e80549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314611b5b5760405162461bcd60e51b815260040161125c906144c1565b6017805460ff1916911515919091179055565b6000546001600160a01b03163314611b985760405162461bcd60e51b815260040161125c906144c1565b602c55565b611bda6040518060c00160405280606081526020016060815260200160008152602001600081526020016000151581526020016000151581525090565b6001600160a01b0382166000908152602960209081526040918290208251815460e09381028201840190945260c081018481529093919284928491840182828015611c4457602002820191906000526020600020905b815481526020019060010190808311611c30575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611c9c57602002820191906000526020600020905b815481526020019060010190808311611c88575b5050509183525050600282015460208201526003820154604082015260049091015460ff8082161515606084015261010090910416151560809091015292915050565b6000546001600160a01b03163314611d095760405162461bcd60e51b815260040161125c906144c1565b60005b8181101561168e57600160296000858585818110611d3a57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611d4f9190613f98565b6001600160a01b031681526020810191909152604001600020600401805460ff191691151591909117905580611d84816146d2565b915050611d0c565b6000546001600160a01b03163314611db65760405162461bcd60e51b815260040161125c906144c1565b60208054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b03163314611dfe5760405162461bcd60e51b815260040161125c906144c1565b600080546040516001600160a01b0390911690600080516020614785833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611e605760405162461bcd60e51b815260040161125c906144c1565b602555565b6000546001600160a01b03163314611e8f5760405162461bcd60e51b815260040161125c906144c1565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611ee45760405162461bcd60e51b815260040161125c906144c1565b602655565b6000546001600160a01b03163314611f135760405162461bcd60e51b815260040161125c906144c1565b60005b8181101561168e57600060296000858585818110611f4457634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611f599190613f98565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff001990921691909117905580611f95816146d2565b915050611f16565b6001600160a01b03811660009081526029602052604081205480611fc15750919050565b6001600160a01b03831660009081526029602052604081206004015460ff16611fec57602d54611ff0565b602b545b6001600160a01b0385166000908152602960205260408120600201549192509015612036576001600160a01b038516600090815260296020526040902060020154612038565b815b90505b8261204557612111565b8261204f81614680565b6001600160a01b03871660009081526029602052604081206001018054929650909250908590811061209157634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508082426120ab9190614669565b11612105576001600160a01b03861660009081526029602052604090208054859081106120e857634e487b7160e01b600052603260045260246000fd5b9060005260206000200154856120fe9190614612565b945061210b565b50612111565b5061203b565b505050919050565b6000546001600160a01b031633146121435760405162461bcd60e51b815260040161125c906144c1565b601855565b6000546001600160a01b031633146121725760405162461bcd60e51b815260040161125c906144c1565b6003805460ff19169055565b6060600f80546112ce90614697565b6000546001600160a01b031633146121b75760405162461bcd60e51b815260040161125c906144c1565b602a55565b6000546001600160a01b031633146121e65760405162461bcd60e51b815260040161125c906144c1565b602755565b600061135e3384611741856040518060600160405280602581526020016147a5602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190613352565b6001546001600160a01b031633146122a05760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b606482015260840161125c565b60025442106122f15760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015260640161125c565b600154600080546040516001600160a01b03938416939091169160008051602061478583398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600061135e338484612ae9565b6000546001600160a01b031633146123775760405162461bcd60e51b815260040161125c906144c1565b60005b8181101561168e576000602960008585858181106123a857634e487b7160e01b600052603260045260246000fd5b90506020020160208101906123bd9190613f98565b6001600160a01b031681526020810191909152604001600020600401805460ff1916911515919091179055806123f2816146d2565b91505061237a565b6000546001600160a01b031633146124245760405162461bcd60e51b815260040161125c906144c1565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146124795760405162461bcd60e51b815260040161125c906144c1565b602d55565b6000546001600160a01b031633146124a85760405162461bcd60e51b815260040161125c906144c1565b6116e4816133f2565b6000546001600160a01b031633146124db5760405162461bcd60e51b815260040161125c906144c1565b6020805460ff60a81b1916600160a81b8315159081029190911782556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910161186a565b6000546001600160a01b0316331461254f5760405162461bcd60e51b815260040161125c906144c1565b60208054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146125975760405162461bcd60e51b815260040161125c906144c1565b6019805460ff1916911515919091179055565b6000546001600160a01b031633146125d45760405162461bcd60e51b815260040161125c906144c1565b60208054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b0316331461261c5760405162461bcd60e51b815260040161125c906144c1565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561264b8142614612565b600255600080546040516001600160a01b0390911690600080516020614785833981519152908390a350565b6000546001600160a01b031633146126a15760405162461bcd60e51b815260040161125c906144c1565b602255565b6000546001600160a01b031633146126d05760405162461bcd60e51b815260040161125c906144c1565b84831480156126de57508281145b61272a5760405162461bcd60e51b815260206004820152601960248201527f4172726179206c656e6774687320646f6e2774206d6174636800000000000000604482015260640161125c565b60005b858110156128415784848281811061275557634e487b7160e01b600052603260045260246000fd5b905060200201356029600089898581811061278057634e487b7160e01b600052603260045260246000fd5b90506020020160208101906127959190613f98565b6001600160a01b031681526020810191909152604001600020600201558282828181106127d257634e487b7160e01b600052603260045260246000fd5b90506020020135602960008989858181106127fd57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906128129190613f98565b6001600160a01b0316815260208101919091526040016000206003015580612839816146d2565b91505061272d565b50505050505050565b6000546001600160a01b031633146128745760405162461bcd60e51b815260040161125c906144c1565b602455565b6000546001600160a01b031633146128a35760405162461bcd60e51b815260040161125c906144c1565b6001600160a01b0381166129085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161125c565b600080546040516001600160a01b038085169392169160008051602061478583398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461297b5760405162461bcd60e51b815260040161125c906144c1565b602355565b6000546001600160a01b031633146129aa5760405162461bcd60e51b815260040161125c906144c1565b6003805460ff191660011790556004546129c357426004555b565b6001600160a01b038316612a275760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161125c565b6001600160a01b038216612a885760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161125c565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6003548390839060ff1680612b1657506001600160a01b03821660009081526005602052604090205460ff165b80612b3957506001600160a01b03811660009081526005602052604090205460ff165b612b705760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b604482015260640161125c565b6001600160a01b038516612bd45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161125c565b6001600160a01b038416612c365760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161125c565b60008311612c985760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161125c565b6001600160a01b038516600090815260076020526040902054831115612d005760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161125c565b6001600160a01b03851660009081526009602052604090205460ff1680612d3f57506001600160a01b03841660009081526009602052604090205460ff165b15612d8c5760405162461bcd60e51b815260206004820152601c60248201527f426c61636b6c6973746564206164647265737320696e766f6c76656400000000604482015260640161125c565b60195460ff1680612dac5750612daa856001600160a01b0316613424565b155b80612dcf57506001600160a01b0385166000908152600a602052604090205460ff165b612e125760405162461bcd60e51b8152602060048201526014602482015273139bc818dbdb9d1c9858dd1cc8185b1b1bddd95960621b604482015260640161125c565b3060009081526007602052604090205460245481108015908190612e405750602054600160a01b900460ff16155b8015612e6557506001600160a01b0387166000908152600d602052604090205460ff16155b8015612e7a5750602054600160a81b900460ff165b15612e9557612e87613460565b6024549150612e95826134a6565b6001600160a01b03871660009081526008602052604081205460ff1680612ed457506001600160a01b03871660009081526008602052604090205460ff165b80612ee85750602054600160a01b900460ff165b15612ef557506000613120565b6001600160a01b0387166000908152600d602052604090205460ff1615612fb25760225486111580612f315750602054600160b01b900460ff16155b612f885760405162461bcd60e51b815260206004820152602260248201527f416d6f756e74206578636565647320746865206d61782073656c6c20616d6f756044820152611b9d60f21b606482015260840161125c565b612fab601454612fa560165460155461338c90919063ffffffff16565b9061338c565b9050613120565b6001600160a01b0388166000908152600d602052604090205460ff161561308f57600454421415613001576001600160a01b0387166000908152600960205260409020805460ff191660011790555b6023548611158061301c5750602054600160b81b900460ff16155b6130725760405162461bcd60e51b815260206004820152602160248201527f416d6f756e74206578636565647320746865206d61782062757920616d6f756e6044820152601d60fa1b606482015260840161125c565b612fab601154612fa560135460125461338c90919063ffffffff16565b6001600160a01b03881660009081526029602052604090206004015460ff161580156130bc575060045442115b6131085760405162461bcd60e51b815260206004820152601f60248201527f4e6f207472616e736665727320666f7220707269766174652073616c65727300604482015260640161125c565b60175460ff1661311957600061311d565b6018545b90505b600061312c878361365d565b9050600061313a888361367b565b6001600160a01b038b16600090815260076020526040902054909150613160908961367b565b6001600160a01b038b1660009081526007602052604080822092909255308152205461318c908261338c565b30600090815260076020526040808220929092556001600160a01b038b16815220546131b8908361338c565b6001600160a01b038a1660009081526007602052604090208190556025541015806131fb57506001600160a01b0389166000908152600b602052604090205460ff165b806132105750602054600160c01b900460ff16155b6132705760405162461bcd60e51b815260206004820152602b60248201527f45786365656473206d617820746f6b656e73206c696d6974206f6e206120736960448201526a1b99db19481dd85b1b195d60aa1b606482015260840161125c565b602054600160a01b900460ff161580156132a357506001600160a01b038a166000908152600d602052604090205460ff16155b156132b2576132b28a836136bd565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132f791815260200190565b60405180910390a380156133465760405181815230906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505050505050505050565b600081848411156133765760405162461bcd60e51b815260040161125c919061446e565b5060006133838486614669565b95945050505050565b6000806133998385614612565b9050838110156133eb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161125c565b9392505050565b6020805460ff60a01b1916600160a01b17905580156134145761341481613893565b506020805460ff60a01b19169055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061345857508115155b949350505050565b6020805460ff60a01b1916600160a01b179055602854479060ff16801561348957506027548110155b156134145760265481111561349d57506026545b613414816133f2565b6020805460ff60a01b1916600160a01b1790556011546013546012546000926134d4929091612fa59161338c565b9050801561364c57600061350c6002613506601d546012546134f69190614669565b6135008787613a4e565b90613a90565b90613a4e565b9050600061351a848361367b565b90504761352682613b0f565b6000613532478361367b565b905060006135586002613506601d5460125461354e9190614669565b613500868b613a4e565b905080156135ac5761356a8582613c8c565b60408051868152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b601b546013546001600160a01b03909116906108fc906135d090613500868b613a4e565b6040518115909202916000818181858888f193505050501580156135f8573d6000803e3d6000fd5b50601c546011546001600160a01b03909116906108fc9061361d90613500868b613a4e565b6040518115909202916000818181858888f19350505050158015613645573d6000803e3d6000fd5b5050505050505b50506020805460ff60a01b19169055565b601a546000906133eb90613506613674828661367b565b8690613a90565b60006133eb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613352565b6001600160a01b038216600090815260296020526040902060040154610100900460ff16806137165750602e5460ff1615801561371657506001600160a01b03821660009081526029602052604090206004015460ff16155b8061374f5750602e54610100900460ff1615801561374f57506001600160a01b03821660009081526029602052604090206004015460ff165b15613758575050565b600061376382613d69565b6001600160a01b038416600090815260296020908152604082206001808201805480830182559085528385204291015581549081018255908352908220018290559091506137b084611f9d565b6001600160a01b0385166000908152602960205260408120600401549192509060ff166137df57602c546137e3565b602a545b6001600160a01b0386166000908152602960205260408120600301549192509015613829576001600160a01b03861660009081526029602052604090206003015461382b565b815b90508083111561388b5760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74206f76657220746865206c696d697420666f722074696d652070604482015264195c9a5bd960da1b606482015260840161125c565b505050505050565b6040805160028082526060820183526000926020830190803683375050601f54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156138f857600080fd5b505afa15801561390c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139309190613fb4565b8160008151811061395157634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061399357634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f54601e5460405163b6f9de9560e01b81529183169263b6f9de959286926139df926000928892909116904290600401614439565b6000604051808303818588803b1580156139f857600080fd5b505af1158015613a0c573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a96248282604051613a42929190614568565b60405180910390a15050565b60006133eb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613f20565b600082613a9f57506000611362565b6000613aab838561464a565b905082613ab8858361462a565b146133eb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161125c565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613b5257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613ba657600080fd5b505afa158015613bba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bde9190613fb4565b81600181518110613bff57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f54613c2591309116846129c5565b601f5460405163791ac94760e01b81526001600160a01b039091169063791ac94790613c5e908590600090869030904290600401614581565b600060405180830381600087803b158015613c7857600080fd5b505af115801561388b573d6000803e3d6000fd5b601f54613ca49030906001600160a01b0316846129c5565b601f546001600160a01b031663f305d719823085600080613ccd6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015613d3057600080fd5b505af1158015613d44573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117fc919061439a565b604080516002808252606082018352600092839291906020830190803683370190505090503081600081518110613db057634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613e0457600080fd5b505afa158015613e18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3c9190613fb4565b81600181518110613e5d57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f5460405163d06ca61f60e01b815291169063d06ca61f90613e9c9086908590600401614568565b60006040518083038186803b158015613eb457600080fd5b505afa158015613ec8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ef09190810190614280565b600181518110613f1057634e487b7160e01b600052603260045260246000fd5b6020026020010151915050919050565b60008183613f415760405162461bcd60e51b815260040161125c919061446e565b506000613383848661462a565b60008083601f840112613f5f578182fd5b50813567ffffffffffffffff811115613f76578182fd5b6020830191508360208260051b8501011115613f9157600080fd5b9250929050565b600060208284031215613fa9578081fd5b81356133eb81614739565b600060208284031215613fc5578081fd5b81516133eb81614739565b60008060408385031215613fe2578081fd5b8235613fed81614739565b91506020830135613ffd81614739565b809150509250929050565b60008060006060848603121561401c578081fd5b833561402781614739565b9250602084013561403781614739565b929592945050506040919091013590565b6000806040838503121561405a578182fd5b823561406581614739565b91506020830135613ffd8161474e565b60008060408385031215614087578182fd5b823561409281614739565b946020939093013593505050565b600080602083850312156140b2578182fd5b823567ffffffffffffffff8111156140c8578283fd5b6140d485828601613f4e565b90969095509350505050565b600080600080604085870312156140f5578081fd5b843567ffffffffffffffff8082111561410c578283fd5b61411888838901613f4e565b90965094506020870135915080821115614130578283fd5b5061413d87828801613f4e565b95989497509550505050565b60008060008060008060608789031215614161578182fd5b863567ffffffffffffffff80821115614178578384fd5b6141848a838b01613f4e565b9098509650602089013591508082111561419c578384fd5b6141a88a838b01613f4e565b909650945060408901359150808211156141c0578384fd5b506141cd89828a01613f4e565b979a9699509497509295939492505050565b600060208083850312156141f1578182fd5b823567ffffffffffffffff811115614207578283fd5b8301601f81018513614217578283fd5b803561422a614225826145ee565b6145bd565b80828252848201915084840188868560051b8701011115614249578687fd5b8694505b8385101561427457803561426081614739565b83526001949094019391850191850161424d565b50979650505050505050565b60006020808385031215614292578182fd5b825167ffffffffffffffff8111156142a8578283fd5b8301601f810185136142b8578283fd5b80516142c6614225826145ee565b80828252848201915084840188868560051b87010111156142e5578687fd5b8694505b838510156142745780518352600194909401939185019185016142e9565b600060208284031215614318578081fd5b81356133eb8161474e565b600060208284031215614334578081fd5b81516133eb8161474e565b600060208284031215614350578081fd5b5035919050565b600060208284031215614368578081fd5b5051919050565b600080600060608486031215614383578081fd5b505081359360208301359350604090920135919050565b6000806000606084860312156143ae578081fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156143ff5781516001600160a01b0316875295820195908201906001016143da565b509495945050505050565b6000815180845260208085019450808401835b838110156143ff5781518752958201959082019060010161441d565b84815260806020820152600061445260808301866143c7565b6001600160a01b03949094166040830152506060015292915050565b6000602080835283518082850152825b8181101561449a5785810183015185820160400152820161447e565b818111156144ab5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602081526000825160c0602084015261451260e084018261440a565b90506020840151601f1984830301604085015261452f828261440a565b91505060408401516060840152606084015160808401526080840151151560a084015260a0840151151560c08401528091505092915050565b82815260406020820152600061345860408301846143c7565b85815284602082015260a0604082015260006145a060a08301866143c7565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156145e6576145e6614723565b604052919050565b600067ffffffffffffffff82111561460857614608614723565b5060051b60200190565b600082198211156146255761462561470d565b500190565b60008261464557634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156146645761466461470d565b500290565b60008282101561467b5761467b61470d565b500390565b60008161468f5761468f61470d565b506000190190565b600181811c908216806146ab57607f821691505b602082108114156146cc57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156146e6576146e661470d565b5060010190565b600060ff821660ff8114156147045761470461470d565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146116e457600080fd5b80151581146116e457600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220aa38506c3f7a24d6bcdd5a33b9775e028cf8aa6362b7ab8b38e34a6c755d5d6964736f6c63430008040033

Deployed Bytecode

0x6080604052600436106105ae5760003560e01c806370e50241116102f3578063a69df4b51161019b578063d1d3a05f116100e7578063f064321f116100a0578063f34eb0b81161007a578063f34eb0b81461118b578063f6887cd3146111ab578063fb201b1d146111e4578063fe575a87146111f957600080fd5b8063f064321f1461112b578063f0f165af1461114b578063f2fde38b1461116b57600080fd5b8063d1d3a05f1461104f578063d7c6e3601461106f578063da29c27f1461108f578063dd467064146110a5578063dd62ed3e146110c5578063e99c9d091461110b57600080fd5b8063bf7856b711610154578063c5f34b9c1161012e578063c5f34b9c14610fed578063ca4507881461100d578063d12a768814611023578063d17761cf1461103957600080fd5b8063bf7856b714610f8c578063c480512e14610fad578063c49b9a8014610fcd57600080fd5b8063a69df4b514610ee1578063a9059cbb14610ef6578063aa45026b14610f16578063ae02cd5c14610f2c578063af9549e014610f4c578063b498412314610f6c57600080fd5b80638b16549a1161025a57806395d89b411161021357806399fa296f116101ed57806399fa296f14610e6a5780639d5710d114610e8b578063a36322c614610ea1578063a457c2d714610ec157600080fd5b806395d89b4114610e1b57806396f9e9be14610e3057806398e2a5e214610e4a57600080fd5b80638b16549a14610d4f5780638b52590314610d6f5780638baeefce14610d8f5780638c672a2614610da45780638da5cb5b14610ddd5780638ea5220f14610dfb57600080fd5b80637ba6b4ee116102ac5780637ba6b4ee14610ca95780638124f7ac14610cc357806382d2a4bb14610cd957806385141a7714610cf9578063867a1dc214610d1957806388e765ff14610d3957600080fd5b806370e5024114610bfd578063715018a614610c13578063728d41c914610c2857806375f0a87414610c485780637638e15114610c685780637b94943b14610c8857600080fd5b80634198d1bb116104565780635ca52d67116103bd57806363e8f370116103765780636bc87c3a116103505780636bc87c3a14610b725780636fb9fbfe14610b8857806370a0823114610ba857806370bfcf2114610bde57600080fd5b806363e8f37014610b2657806366a88d9614610b4657806366d602ae14610b5c57600080fd5b80635ca52d6714610a6a5780635d38ab8514610a8a578063602bc62b14610aaa5780636053a0e314610abf5780636199d05e14610ad957806361a13b4a14610af957600080fd5b806349bd5a5e1161040f57806349bd5a5e146109775780634a74bb02146109975780634d87c644146109b857806350286f64146109d85780635342acb4146109f8578063545fb32814610a3157600080fd5b80634198d1bb146108d1578063424ba848146108f157806343614d2814610911578063437d98401461092757806347535d7b1461093d57806348914c991461095757600080fd5b806322461173116105155780632610eaca116104ce578063313ce567116104a8578063313ce5671461086457806339509351146108865780633ccfd60b146108a657806340615b8b146108bb57600080fd5b80632610eaca1461080457806329370cc6146108245780632b9b4f781461084457600080fd5b8063224611731461075457806322976e0d1461077457806322c98d341461078a578063232898b4146107a457806323b63585146107c457806323b872dd146107e457600080fd5b80631609be1d116105675780631609be1d1461069b5780631694505e146106bb578063170dde6a146106f357806318160ddd146107095780631f53ac021461071e57806321ba50811461073e57600080fd5b806303d29d28146105ba5780630609511e146105dc57806306fdde03146105fc578063095ea7b3146106275780630b6bb6f514610657578063147745e51461067757600080fd5b366105b557005b600080fd5b3480156105c657600080fd5b506105da6105d5366004614048565b611232565b005b3480156105e857600080fd5b506105da6105f736600461433f565b611290565b34801561060857600080fd5b506106116112bf565b60405161061e919061446e565b60405180910390f35b34801561063357600080fd5b50610647610642366004614075565b611351565b604051901515815260200161061e565b34801561066357600080fd5b506105da6106723660046141df565b611368565b34801561068357600080fd5b5061068d601a5481565b60405190815260200161061e565b3480156106a757600080fd5b506105da6106b6366004613fd0565b611412565b3480156106c757600080fd5b50601f546106db906001600160a01b031681565b6040516001600160a01b03909116815260200161061e565b3480156106ff57600080fd5b5061068d60155481565b34801561071557600080fd5b5060215461068d565b34801561072a57600080fd5b506105da610739366004613f98565b611542565b34801561074a57600080fd5b5061068d602b5481565b34801561076057600080fd5b506105da61076f366004613f98565b61158e565b34801561078057600080fd5b5061068d60135481565b34801561079657600080fd5b50602e546106479060ff1681565b3480156107b057600080fd5b506105da6107bf3660046140a0565b6115da565b3480156107d057600080fd5b506105da6107df36600461433f565b611693565b3480156107f057600080fd5b506106476107ff366004614008565b6116e7565b34801561081057600080fd5b506105da61081f3660046140e0565b611750565b34801561083057600080fd5b506105da61083f366004614307565b611803565b34801561085057600080fd5b506105da61085f366004614307565b611875565b34801561087057600080fd5b5060105460405160ff909116815260200161061e565b34801561089257600080fd5b506106476108a1366004614075565b6118b2565b3480156108b257600080fd5b506105da6118e8565b3480156108c757600080fd5b5061068d60165481565b3480156108dd57600080fd5b506105da6108ec36600461433f565b61193e565b3480156108fd57600080fd5b506105da61090c366004614048565b6119d3565b34801561091d57600080fd5b5061068d60145481565b34801561093357600080fd5b5061068d602d5481565b34801561094957600080fd5b506003546106479060ff1681565b34801561096357600080fd5b506105da61097236600461436f565b611a28565b34801561098357600080fd5b506020546106db906001600160a01b031681565b3480156109a357600080fd5b5060205461064790600160a81b900460ff1681565b3480156109c457600080fd5b506105da6109d336600461436f565b611a60565b3480156109e457600080fd5b506105da6109f3366004614048565b611a98565b348015610a0457600080fd5b50610647610a13366004613f98565b6001600160a01b031660009081526008602052604090205460ff1690565b348015610a3d57600080fd5b50610647610a4c366004613f98565b6001600160a01b03166000908152600b602052604090205460ff1690565b348015610a7657600080fd5b506105da610a85366004614307565b611aed565b348015610a9657600080fd5b506105da610aa5366004614307565b611b31565b348015610ab657600080fd5b5060025461068d565b348015610acb57600080fd5b506028546106479060ff1681565b348015610ae557600080fd5b506105da610af436600461433f565b611b6e565b348015610b0557600080fd5b50610b19610b14366004613f98565b611b9d565b60405161061e91906144f6565b348015610b3257600080fd5b506105da610b413660046140a0565b611cdf565b348015610b5257600080fd5b5061068d60255481565b348015610b6857600080fd5b5061068d60225481565b348015610b7e57600080fd5b5061068d60125481565b348015610b9457600080fd5b506105da610ba3366004614307565b611d8c565b348015610bb457600080fd5b5061068d610bc3366004613f98565b6001600160a01b031660009081526007602052604090205490565b348015610bea57600080fd5b50602e5461064790610100900460ff1681565b348015610c0957600080fd5b5061068d60265481565b348015610c1f57600080fd5b506105da611dd4565b348015610c3457600080fd5b506105da610c4336600461433f565b611e36565b348015610c5457600080fd5b50601b546106db906001600160a01b031681565b348015610c7457600080fd5b506105da610c83366004614048565b611e65565b348015610c9457600080fd5b5060205461064790600160c01b900460ff1681565b348015610cb557600080fd5b506019546106479060ff1681565b348015610ccf57600080fd5b5061068d60185481565b348015610ce557600080fd5b506105da610cf436600461433f565b611eba565b348015610d0557600080fd5b50601e546106db906001600160a01b031681565b348015610d2557600080fd5b506105da610d343660046140a0565b611ee9565b348015610d4557600080fd5b5061068d60235481565b348015610d5b57600080fd5b5061068d610d6a366004613f98565b611f9d565b348015610d7b57600080fd5b506105da610d8a36600461433f565b612119565b348015610d9b57600080fd5b506105da612148565b348015610db057600080fd5b50610647610dbf366004613f98565b6001600160a01b03166000908152600d602052604090205460ff1690565b348015610de957600080fd5b506000546001600160a01b03166106db565b348015610e0757600080fd5b50601c546106db906001600160a01b031681565b348015610e2757600080fd5b5061061161217e565b348015610e3c57600080fd5b506017546106479060ff1681565b348015610e5657600080fd5b506105da610e6536600461433f565b61218d565b348015610e7657600080fd5b5060205461064790600160b81b900460ff1681565b348015610e9757600080fd5b5061068d602c5481565b348015610ead57600080fd5b506105da610ebc36600461433f565b6121bc565b348015610ecd57600080fd5b50610647610edc366004614075565b6121eb565b348015610eed57600080fd5b506105da61223a565b348015610f0257600080fd5b50610647610f11366004614075565b612340565b348015610f2257600080fd5b5061068d60115481565b348015610f3857600080fd5b506105da610f473660046140a0565b61234d565b348015610f5857600080fd5b506105da610f67366004614048565b6123fa565b348015610f7857600080fd5b506105da610f8736600461433f565b61244f565b348015610f9857600080fd5b5060205461064790600160b01b900460ff1681565b348015610fb957600080fd5b506105da610fc836600461433f565b61247e565b348015610fd957600080fd5b506105da610fe8366004614307565b6124b1565b348015610ff957600080fd5b506105da611008366004614307565b612525565b34801561101957600080fd5b5061068d602a5481565b34801561102f57600080fd5b5061068d60245481565b34801561104557600080fd5b5061068d60275481565b34801561105b57600080fd5b506105da61106a366004614307565b61256d565b34801561107b57600080fd5b506105da61108a366004614307565b6125aa565b34801561109b57600080fd5b5061068d601d5481565b3480156110b157600080fd5b506105da6110c036600461433f565b6125f2565b3480156110d157600080fd5b5061068d6110e0366004613fd0565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561111757600080fd5b506105da61112636600461433f565b612677565b34801561113757600080fd5b506105da611146366004614149565b6126a6565b34801561115757600080fd5b506105da61116636600461433f565b61284a565b34801561117757600080fd5b506105da611186366004613f98565b612879565b34801561119757600080fd5b506105da6111a636600461433f565b612951565b3480156111b757600080fd5b506106476111c6366004613f98565b6001600160a01b03166000908152600a602052604090205460ff1690565b3480156111f057600080fd5b506105da612980565b34801561120557600080fd5b50610647611214366004613f98565b6001600160a01b031660009081526009602052604090205460ff1690565b6000546001600160a01b031633146112655760405162461bcd60e51b815260040161125c906144c1565b60405180910390fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112ba5760405162461bcd60e51b815260040161125c906144c1565b602b55565b6060600e80546112ce90614697565b80601f01602080910402602001604051908101604052809291908181526020018280546112fa90614697565b80156113475780601f1061131c57610100808354040283529160200191611347565b820191906000526020600020905b81548152906001019060200180831161132a57829003601f168201915b5050505050905090565b600061135e3384846129c5565b5060015b92915050565b6000546001600160a01b031633146113925760405162461bcd60e51b815260040161125c906144c1565b60005b81518160ff16101561140e57600160056000848460ff16815181106113ca57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611406816146ed565b915050611395565b5050565b6000546001600160a01b0316331461143c5760405162461bcd60e51b815260040161125c906144c1565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561147e57600080fd5b505afa158015611492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b69190614357565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153c9190614323565b50505050565b6000546001600160a01b0316331461156c5760405162461bcd60e51b815260040161125c906144c1565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115b85760405162461bcd60e51b815260040161125c906144c1565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116045760405162461bcd60e51b815260040161125c906144c1565b60005b8181101561168e5760016029600085858581811061163557634e487b7160e01b600052603260045260246000fd5b905060200201602081019061164a9190613f98565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff001990921691909117905580611686816146d2565b915050611607565b505050565b6000546001600160a01b031633146116bd5760405162461bcd60e51b815260040161125c906144c1565b6116e46116d26000546001600160a01b031690565b601e546001600160a01b031683612ae9565b50565b60006116f4848484612ae9565b61174684336117418560405180606001604052806028815260200161475d602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190613352565b6129c5565b5060019392505050565b6000546001600160a01b0316331461177a5760405162461bcd60e51b815260040161125c906144c1565b60005b838110156117fc576117ea338686848181106117a957634e487b7160e01b600052603260045260246000fd5b90506020020160208101906117be9190613f98565b8585858181106117de57634e487b7160e01b600052603260045260246000fd5b90506020020135612ae9565b806117f4816146d2565b91505061177d565b5050505050565b6000546001600160a01b0316331461182d5760405162461bcd60e51b815260040161125c906144c1565b6028805460ff19168215159081179091556040519081527f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c0906020015b60405180910390a150565b6000546001600160a01b0316331461189f5760405162461bcd60e51b815260040161125c906144c1565b602e805460ff1916911515919091179055565b3360008181526006602090815260408083206001600160a01b0387168452909152812054909161135e918590611741908661338c565b6000546001600160a01b031633146119125760405162461bcd60e51b815260040161125c906144c1565b60405133904780156108fc02916000818181858888f193505050501580156116e4573d6000803e3d6000fd5b6000546001600160a01b031633146119685760405162461bcd60e51b815260040161125c906144c1565b6012548111156119ce5760405162461bcd60e51b815260206004820152602b60248201527f56616c756520686967686572207468616e206c6971756964697479206665652060448201526a1b9bdd08185b1b1bddd95960aa1b606482015260840161125c565b601d55565b6000546001600160a01b031633146119fd5760405162461bcd60e51b815260040161125c906144c1565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a525760405162461bcd60e51b815260040161125c906144c1565b601192909255601255601355565b6000546001600160a01b03163314611a8a5760405162461bcd60e51b815260040161125c906144c1565b601492909255601555601655565b6000546001600160a01b03163314611ac25760405162461bcd60e51b815260040161125c906144c1565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611b175760405162461bcd60e51b815260040161125c906144c1565b602e80549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314611b5b5760405162461bcd60e51b815260040161125c906144c1565b6017805460ff1916911515919091179055565b6000546001600160a01b03163314611b985760405162461bcd60e51b815260040161125c906144c1565b602c55565b611bda6040518060c00160405280606081526020016060815260200160008152602001600081526020016000151581526020016000151581525090565b6001600160a01b0382166000908152602960209081526040918290208251815460e09381028201840190945260c081018481529093919284928491840182828015611c4457602002820191906000526020600020905b815481526020019060010190808311611c30575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611c9c57602002820191906000526020600020905b815481526020019060010190808311611c88575b5050509183525050600282015460208201526003820154604082015260049091015460ff8082161515606084015261010090910416151560809091015292915050565b6000546001600160a01b03163314611d095760405162461bcd60e51b815260040161125c906144c1565b60005b8181101561168e57600160296000858585818110611d3a57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611d4f9190613f98565b6001600160a01b031681526020810191909152604001600020600401805460ff191691151591909117905580611d84816146d2565b915050611d0c565b6000546001600160a01b03163314611db65760405162461bcd60e51b815260040161125c906144c1565b60208054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b03163314611dfe5760405162461bcd60e51b815260040161125c906144c1565b600080546040516001600160a01b0390911690600080516020614785833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611e605760405162461bcd60e51b815260040161125c906144c1565b602555565b6000546001600160a01b03163314611e8f5760405162461bcd60e51b815260040161125c906144c1565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611ee45760405162461bcd60e51b815260040161125c906144c1565b602655565b6000546001600160a01b03163314611f135760405162461bcd60e51b815260040161125c906144c1565b60005b8181101561168e57600060296000858585818110611f4457634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611f599190613f98565b6001600160a01b03168152602081019190915260400160002060040180549115156101000261ff001990921691909117905580611f95816146d2565b915050611f16565b6001600160a01b03811660009081526029602052604081205480611fc15750919050565b6001600160a01b03831660009081526029602052604081206004015460ff16611fec57602d54611ff0565b602b545b6001600160a01b0385166000908152602960205260408120600201549192509015612036576001600160a01b038516600090815260296020526040902060020154612038565b815b90505b8261204557612111565b8261204f81614680565b6001600160a01b03871660009081526029602052604081206001018054929650909250908590811061209157634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508082426120ab9190614669565b11612105576001600160a01b03861660009081526029602052604090208054859081106120e857634e487b7160e01b600052603260045260246000fd5b9060005260206000200154856120fe9190614612565b945061210b565b50612111565b5061203b565b505050919050565b6000546001600160a01b031633146121435760405162461bcd60e51b815260040161125c906144c1565b601855565b6000546001600160a01b031633146121725760405162461bcd60e51b815260040161125c906144c1565b6003805460ff19169055565b6060600f80546112ce90614697565b6000546001600160a01b031633146121b75760405162461bcd60e51b815260040161125c906144c1565b602a55565b6000546001600160a01b031633146121e65760405162461bcd60e51b815260040161125c906144c1565b602755565b600061135e3384611741856040518060600160405280602581526020016147a5602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190613352565b6001546001600160a01b031633146122a05760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b606482015260840161125c565b60025442106122f15760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015260640161125c565b600154600080546040516001600160a01b03938416939091169160008051602061478583398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600061135e338484612ae9565b6000546001600160a01b031633146123775760405162461bcd60e51b815260040161125c906144c1565b60005b8181101561168e576000602960008585858181106123a857634e487b7160e01b600052603260045260246000fd5b90506020020160208101906123bd9190613f98565b6001600160a01b031681526020810191909152604001600020600401805460ff1916911515919091179055806123f2816146d2565b91505061237a565b6000546001600160a01b031633146124245760405162461bcd60e51b815260040161125c906144c1565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146124795760405162461bcd60e51b815260040161125c906144c1565b602d55565b6000546001600160a01b031633146124a85760405162461bcd60e51b815260040161125c906144c1565b6116e4816133f2565b6000546001600160a01b031633146124db5760405162461bcd60e51b815260040161125c906144c1565b6020805460ff60a81b1916600160a81b8315159081029190911782556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910161186a565b6000546001600160a01b0316331461254f5760405162461bcd60e51b815260040161125c906144c1565b60208054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b031633146125975760405162461bcd60e51b815260040161125c906144c1565b6019805460ff1916911515919091179055565b6000546001600160a01b031633146125d45760405162461bcd60e51b815260040161125c906144c1565b60208054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b0316331461261c5760405162461bcd60e51b815260040161125c906144c1565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561264b8142614612565b600255600080546040516001600160a01b0390911690600080516020614785833981519152908390a350565b6000546001600160a01b031633146126a15760405162461bcd60e51b815260040161125c906144c1565b602255565b6000546001600160a01b031633146126d05760405162461bcd60e51b815260040161125c906144c1565b84831480156126de57508281145b61272a5760405162461bcd60e51b815260206004820152601960248201527f4172726179206c656e6774687320646f6e2774206d6174636800000000000000604482015260640161125c565b60005b858110156128415784848281811061275557634e487b7160e01b600052603260045260246000fd5b905060200201356029600089898581811061278057634e487b7160e01b600052603260045260246000fd5b90506020020160208101906127959190613f98565b6001600160a01b031681526020810191909152604001600020600201558282828181106127d257634e487b7160e01b600052603260045260246000fd5b90506020020135602960008989858181106127fd57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906128129190613f98565b6001600160a01b0316815260208101919091526040016000206003015580612839816146d2565b91505061272d565b50505050505050565b6000546001600160a01b031633146128745760405162461bcd60e51b815260040161125c906144c1565b602455565b6000546001600160a01b031633146128a35760405162461bcd60e51b815260040161125c906144c1565b6001600160a01b0381166129085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161125c565b600080546040516001600160a01b038085169392169160008051602061478583398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461297b5760405162461bcd60e51b815260040161125c906144c1565b602355565b6000546001600160a01b031633146129aa5760405162461bcd60e51b815260040161125c906144c1565b6003805460ff191660011790556004546129c357426004555b565b6001600160a01b038316612a275760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161125c565b6001600160a01b038216612a885760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161125c565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6003548390839060ff1680612b1657506001600160a01b03821660009081526005602052604090205460ff165b80612b3957506001600160a01b03811660009081526005602052604090205460ff165b612b705760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b604482015260640161125c565b6001600160a01b038516612bd45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161125c565b6001600160a01b038416612c365760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161125c565b60008311612c985760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161125c565b6001600160a01b038516600090815260076020526040902054831115612d005760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161125c565b6001600160a01b03851660009081526009602052604090205460ff1680612d3f57506001600160a01b03841660009081526009602052604090205460ff165b15612d8c5760405162461bcd60e51b815260206004820152601c60248201527f426c61636b6c6973746564206164647265737320696e766f6c76656400000000604482015260640161125c565b60195460ff1680612dac5750612daa856001600160a01b0316613424565b155b80612dcf57506001600160a01b0385166000908152600a602052604090205460ff165b612e125760405162461bcd60e51b8152602060048201526014602482015273139bc818dbdb9d1c9858dd1cc8185b1b1bddd95960621b604482015260640161125c565b3060009081526007602052604090205460245481108015908190612e405750602054600160a01b900460ff16155b8015612e6557506001600160a01b0387166000908152600d602052604090205460ff16155b8015612e7a5750602054600160a81b900460ff165b15612e9557612e87613460565b6024549150612e95826134a6565b6001600160a01b03871660009081526008602052604081205460ff1680612ed457506001600160a01b03871660009081526008602052604090205460ff165b80612ee85750602054600160a01b900460ff165b15612ef557506000613120565b6001600160a01b0387166000908152600d602052604090205460ff1615612fb25760225486111580612f315750602054600160b01b900460ff16155b612f885760405162461bcd60e51b815260206004820152602260248201527f416d6f756e74206578636565647320746865206d61782073656c6c20616d6f756044820152611b9d60f21b606482015260840161125c565b612fab601454612fa560165460155461338c90919063ffffffff16565b9061338c565b9050613120565b6001600160a01b0388166000908152600d602052604090205460ff161561308f57600454421415613001576001600160a01b0387166000908152600960205260409020805460ff191660011790555b6023548611158061301c5750602054600160b81b900460ff16155b6130725760405162461bcd60e51b815260206004820152602160248201527f416d6f756e74206578636565647320746865206d61782062757920616d6f756e6044820152601d60fa1b606482015260840161125c565b612fab601154612fa560135460125461338c90919063ffffffff16565b6001600160a01b03881660009081526029602052604090206004015460ff161580156130bc575060045442115b6131085760405162461bcd60e51b815260206004820152601f60248201527f4e6f207472616e736665727320666f7220707269766174652073616c65727300604482015260640161125c565b60175460ff1661311957600061311d565b6018545b90505b600061312c878361365d565b9050600061313a888361367b565b6001600160a01b038b16600090815260076020526040902054909150613160908961367b565b6001600160a01b038b1660009081526007602052604080822092909255308152205461318c908261338c565b30600090815260076020526040808220929092556001600160a01b038b16815220546131b8908361338c565b6001600160a01b038a1660009081526007602052604090208190556025541015806131fb57506001600160a01b0389166000908152600b602052604090205460ff165b806132105750602054600160c01b900460ff16155b6132705760405162461bcd60e51b815260206004820152602b60248201527f45786365656473206d617820746f6b656e73206c696d6974206f6e206120736960448201526a1b99db19481dd85b1b195d60aa1b606482015260840161125c565b602054600160a01b900460ff161580156132a357506001600160a01b038a166000908152600d602052604090205460ff16155b156132b2576132b28a836136bd565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132f791815260200190565b60405180910390a380156133465760405181815230906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505050505050505050565b600081848411156133765760405162461bcd60e51b815260040161125c919061446e565b5060006133838486614669565b95945050505050565b6000806133998385614612565b9050838110156133eb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161125c565b9392505050565b6020805460ff60a01b1916600160a01b17905580156134145761341481613893565b506020805460ff60a01b19169055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061345857508115155b949350505050565b6020805460ff60a01b1916600160a01b179055602854479060ff16801561348957506027548110155b156134145760265481111561349d57506026545b613414816133f2565b6020805460ff60a01b1916600160a01b1790556011546013546012546000926134d4929091612fa59161338c565b9050801561364c57600061350c6002613506601d546012546134f69190614669565b6135008787613a4e565b90613a90565b90613a4e565b9050600061351a848361367b565b90504761352682613b0f565b6000613532478361367b565b905060006135586002613506601d5460125461354e9190614669565b613500868b613a4e565b905080156135ac5761356a8582613c8c565b60408051868152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b601b546013546001600160a01b03909116906108fc906135d090613500868b613a4e565b6040518115909202916000818181858888f193505050501580156135f8573d6000803e3d6000fd5b50601c546011546001600160a01b03909116906108fc9061361d90613500868b613a4e565b6040518115909202916000818181858888f19350505050158015613645573d6000803e3d6000fd5b5050505050505b50506020805460ff60a01b19169055565b601a546000906133eb90613506613674828661367b565b8690613a90565b60006133eb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613352565b6001600160a01b038216600090815260296020526040902060040154610100900460ff16806137165750602e5460ff1615801561371657506001600160a01b03821660009081526029602052604090206004015460ff16155b8061374f5750602e54610100900460ff1615801561374f57506001600160a01b03821660009081526029602052604090206004015460ff165b15613758575050565b600061376382613d69565b6001600160a01b038416600090815260296020908152604082206001808201805480830182559085528385204291015581549081018255908352908220018290559091506137b084611f9d565b6001600160a01b0385166000908152602960205260408120600401549192509060ff166137df57602c546137e3565b602a545b6001600160a01b0386166000908152602960205260408120600301549192509015613829576001600160a01b03861660009081526029602052604090206003015461382b565b815b90508083111561388b5760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74206f76657220746865206c696d697420666f722074696d652070604482015264195c9a5bd960da1b606482015260840161125c565b505050505050565b6040805160028082526060820183526000926020830190803683375050601f54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156138f857600080fd5b505afa15801561390c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139309190613fb4565b8160008151811061395157634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061399357634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f54601e5460405163b6f9de9560e01b81529183169263b6f9de959286926139df926000928892909116904290600401614439565b6000604051808303818588803b1580156139f857600080fd5b505af1158015613a0c573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a96248282604051613a42929190614568565b60405180910390a15050565b60006133eb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613f20565b600082613a9f57506000611362565b6000613aab838561464a565b905082613ab8858361462a565b146133eb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161125c565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613b5257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613ba657600080fd5b505afa158015613bba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bde9190613fb4565b81600181518110613bff57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f54613c2591309116846129c5565b601f5460405163791ac94760e01b81526001600160a01b039091169063791ac94790613c5e908590600090869030904290600401614581565b600060405180830381600087803b158015613c7857600080fd5b505af115801561388b573d6000803e3d6000fd5b601f54613ca49030906001600160a01b0316846129c5565b601f546001600160a01b031663f305d719823085600080613ccd6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015613d3057600080fd5b505af1158015613d44573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117fc919061439a565b604080516002808252606082018352600092839291906020830190803683370190505090503081600081518110613db057634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015613e0457600080fd5b505afa158015613e18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3c9190613fb4565b81600181518110613e5d57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f5460405163d06ca61f60e01b815291169063d06ca61f90613e9c9086908590600401614568565b60006040518083038186803b158015613eb457600080fd5b505afa158015613ec8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ef09190810190614280565b600181518110613f1057634e487b7160e01b600052603260045260246000fd5b6020026020010151915050919050565b60008183613f415760405162461bcd60e51b815260040161125c919061446e565b506000613383848661462a565b60008083601f840112613f5f578182fd5b50813567ffffffffffffffff811115613f76578182fd5b6020830191508360208260051b8501011115613f9157600080fd5b9250929050565b600060208284031215613fa9578081fd5b81356133eb81614739565b600060208284031215613fc5578081fd5b81516133eb81614739565b60008060408385031215613fe2578081fd5b8235613fed81614739565b91506020830135613ffd81614739565b809150509250929050565b60008060006060848603121561401c578081fd5b833561402781614739565b9250602084013561403781614739565b929592945050506040919091013590565b6000806040838503121561405a578182fd5b823561406581614739565b91506020830135613ffd8161474e565b60008060408385031215614087578182fd5b823561409281614739565b946020939093013593505050565b600080602083850312156140b2578182fd5b823567ffffffffffffffff8111156140c8578283fd5b6140d485828601613f4e565b90969095509350505050565b600080600080604085870312156140f5578081fd5b843567ffffffffffffffff8082111561410c578283fd5b61411888838901613f4e565b90965094506020870135915080821115614130578283fd5b5061413d87828801613f4e565b95989497509550505050565b60008060008060008060608789031215614161578182fd5b863567ffffffffffffffff80821115614178578384fd5b6141848a838b01613f4e565b9098509650602089013591508082111561419c578384fd5b6141a88a838b01613f4e565b909650945060408901359150808211156141c0578384fd5b506141cd89828a01613f4e565b979a9699509497509295939492505050565b600060208083850312156141f1578182fd5b823567ffffffffffffffff811115614207578283fd5b8301601f81018513614217578283fd5b803561422a614225826145ee565b6145bd565b80828252848201915084840188868560051b8701011115614249578687fd5b8694505b8385101561427457803561426081614739565b83526001949094019391850191850161424d565b50979650505050505050565b60006020808385031215614292578182fd5b825167ffffffffffffffff8111156142a8578283fd5b8301601f810185136142b8578283fd5b80516142c6614225826145ee565b80828252848201915084840188868560051b87010111156142e5578687fd5b8694505b838510156142745780518352600194909401939185019185016142e9565b600060208284031215614318578081fd5b81356133eb8161474e565b600060208284031215614334578081fd5b81516133eb8161474e565b600060208284031215614350578081fd5b5035919050565b600060208284031215614368578081fd5b5051919050565b600080600060608486031215614383578081fd5b505081359360208301359350604090920135919050565b6000806000606084860312156143ae578081fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156143ff5781516001600160a01b0316875295820195908201906001016143da565b509495945050505050565b6000815180845260208085019450808401835b838110156143ff5781518752958201959082019060010161441d565b84815260806020820152600061445260808301866143c7565b6001600160a01b03949094166040830152506060015292915050565b6000602080835283518082850152825b8181101561449a5785810183015185820160400152820161447e565b818111156144ab5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602081526000825160c0602084015261451260e084018261440a565b90506020840151601f1984830301604085015261452f828261440a565b91505060408401516060840152606084015160808401526080840151151560a084015260a0840151151560c08401528091505092915050565b82815260406020820152600061345860408301846143c7565b85815284602082015260a0604082015260006145a060a08301866143c7565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156145e6576145e6614723565b604052919050565b600067ffffffffffffffff82111561460857614608614723565b5060051b60200190565b600082198211156146255761462561470d565b500190565b60008261464557634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156146645761466461470d565b500290565b60008282101561467b5761467b61470d565b500390565b60008161468f5761468f61470d565b506000190190565b600181811c908216806146ab57607f821691505b602082108114156146cc57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156146e6576146e661470d565b5060010190565b600060ff821660ff8114156147045761470461470d565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146116e457600080fd5b80151581146116e457600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220aa38506c3f7a24d6bcdd5a33b9775e028cf8aa6362b7ab8b38e34a6c755d5d6964736f6c63430008040033

Deployed Bytecode Sourcemap

8998:22885:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24876:125;;;;;;;;;;-1:-1:-1;24876:125:0;;;;;:::i;:::-;;:::i;:::-;;27217:136;;;;;;;;;;-1:-1:-1;27217:136:0;;;;;:::i;:::-;;:::i;14123:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14961:161;;;;;;;;;;-1:-1:-1;14961:161:0;;;;;:::i;:::-;;:::i;:::-;;;10875:14:1;;10868:22;10850:41;;10838:2;10823:18;14961:161:0;10805:92:1;8805:186:0;;;;;;;;;;-1:-1:-1;8805:186:0;;;;;:::i;:::-;;:::i;10119:32::-;;;;;;;;;;;;;;;;;;;21746:25:1;;;21734:2;21719:18;10119:32:0;21701:76:1;31567:198:0;;;;;;;;;;-1:-1:-1;31567:198:0;;;;;:::i;:::-;;:::i;10483:41::-;;;;;;;;;;-1:-1:-1;10483:41:0;;;;-1:-1:-1;;;;;10483:41:0;;;;;;-1:-1:-1;;;;;9551:32:1;;;9533:51;;9521:2;9506:18;10483:41:0;9488:102:1;9904:36:0;;;;;;;;;;;;;;;;14400:100;;;;;;;;;;-1:-1:-1;14480:12:0;;14400:100;;22569:109;;;;;;;;;;-1:-1:-1;22569:109:0;;;;;:::i;:::-;;:::i;26447:43::-;;;;;;;;;;;;;;;;22440:121;;;;;;;;;;-1:-1:-1;22440:121:0;;;;;:::i;:::-;;:::i;9826:32::-;;;;;;;;;;;;;;;;26658:37;;;;;;;;;;-1:-1:-1;26658:37:0;;;;;;;;29017:204;;;;;;;;;;-1:-1:-1;29017:204:0;;;;;:::i;:::-;;:::i;21886:118::-;;;;;;;;;;-1:-1:-1;21886:118:0;;;;;:::i;:::-;;:::i;15130:313::-;;;;;;;;;;-1:-1:-1;15130:313:0;;;;;:::i;:::-;;:::i;31283:234::-;;;;;;;;;;-1:-1:-1;31283:234:0;;;;;:::i;:::-;;:::i;24588:150::-;;;;;;;;;;-1:-1:-1;24588:150:0;;;;;:::i;:::-;;:::i;27735:113::-;;;;;;;;;;-1:-1:-1;27735:113:0;;;;;:::i;:::-;;:::i;14309:83::-;;;;;;;;;;-1:-1:-1;14375:9:0;;14309:83;;14375:9;;;;23172:36:1;;23160:2;23145:18;14309:83:0;23127:87:1;15451:218:0;;;;;;;;;;-1:-1:-1;15451:218:0;;;;;:::i;:::-;;:::i;31773:107::-;;;;;;;;;;;;;:::i;9947:36::-;;;;;;;;;;;;;;;;22796:194;;;;;;;;;;-1:-1:-1;22796:194:0;;;;;:::i;:::-;;:::i;16472:113::-;;;;;;;;;;-1:-1:-1;16472:113:0;;;;;:::i;:::-;;:::i;9867:30::-;;;;;;;;;;;;;;;;26596:32;;;;;;;;;;;;;;;;8190:26;;;;;;;;;;-1:-1:-1;8190:26:0;;;;;;;;13664:215;;;;;;;;;;-1:-1:-1;13664:215:0;;;;;:::i;:::-;;:::i;10531:28::-;;;;;;;;;;-1:-1:-1;10531:28:0;;;;-1:-1:-1;;;;;10531:28:0;;;10600:40;;;;;;;;;;-1:-1:-1;10600:40:0;;;;-1:-1:-1;;;10600:40:0;;;;;;13887:228;;;;;;;;;;-1:-1:-1;13887:228:0;;;;;:::i;:::-;;:::i;25821:146::-;;;;;;;;;;-1:-1:-1;25821:146:0;;;;;:::i;:::-;;:::i;15995:124::-;;;;;;;;;;-1:-1:-1;15995:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;16084:27:0;16060:4;16084:27;;;:18;:27;;;;;;;;;15995:124;25572:133;;;;;;;;;;-1:-1:-1;25572:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;25666:31:0;25642:4;25666:31;;;:21;:31;;;;;;;;;25572:133;27592:135;;;;;;;;;;-1:-1:-1;27592:135:0;;;;;:::i;:::-;;:::i;20921:105::-;;;;;;;;;;-1:-1:-1;20921:105:0;;;;;:::i;:::-;;:::i;6060:90::-;;;;;;;;;;-1:-1:-1;6133:9:0;;6060:90;;11243:33;;;;;;;;;;-1:-1:-1;11243:33:0;;;;;;;;27361:100;;;;;;;;;;-1:-1:-1;27361:100:0;;;;;:::i;:::-;;:::i;27856:122::-;;;;;;;;;;-1:-1:-1;27856:122:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;28591:203::-;;;;;;;;;;-1:-1:-1;28591:203:0;;;;;:::i;:::-;;:::i;11066:60::-;;;;;;;;;;;;;;;;10854:59;;;;;;;;;;;;;;;;9787:32;;;;;;;;;;;;;;;;21368:110;;;;;;;;;;-1:-1:-1;21368:110:0;;;;;:::i;:::-;;:::i;14508:119::-;;;;;;;;;;-1:-1:-1;14508:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;14601:18:0;14574:7;14601:18;;;:9;:18;;;;;;;14508:119;26702:48;;;;;;;;;;-1:-1:-1;26702:48:0;;;;;;;;;;;11135:47;;;;;;;;;;;;;;;;5650:148;;;;;;;;;;;;;:::i;25713:100::-;;;;;;;;;;-1:-1:-1;25713:100:0;;;;;:::i;:::-;;:::i;10160:38::-;;;;;;;;;;-1:-1:-1;10160:38:0;;;;-1:-1:-1;;;;;10160:38:0;;;25411:134;;;;;;;;;;-1:-1:-1;25411:134:0;;;;;:::i;:::-;;:::i;10738:39::-;;;;;;;;;;-1:-1:-1;10738:39:0;;;;-1:-1:-1;;;10738:39:0;;;;;;10076:36;;;;;;;;;;-1:-1:-1;10076:36:0;;;;;;;;10036:31;;;;;;;;;;;;;;;;24456:124;;;;;;;;;;-1:-1:-1;24456:124:0;;;;;:::i;:::-;;:::i;10400:70::-;;;;;;;;;;-1:-1:-1;10400:70:0;;;;-1:-1:-1;;;;;10400:70:0;;;29229:208;;;;;;;;;;-1:-1:-1;29229:208:0;;;;;:::i;:::-;;:::i;10920:58::-;;;;;;;;;;;;;;;;29516:922;;;;;;;;;;-1:-1:-1;29516:922:0;;;;;:::i;:::-;;:::i;21034:95::-;;;;;;;;;;-1:-1:-1;21034:95:0;;;;;:::i;:::-;;:::i;8724:73::-;;;;;;;;;;;;;:::i;16593:105::-;;;;;;;;;;-1:-1:-1;16593:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;16674:15:0;16650:4;16674:15;;;:5;:15;;;;;;;;;16593:105;5434:79;;;;;;;;;;-1:-1:-1;5472:7:0;5499:6;-1:-1:-1;;;;;5499:6:0;5434:79;;10205:32;;;;;;;;;;-1:-1:-1;10205:32:0;;;;-1:-1:-1;;;;;10205:32:0;;;14214:87;;;;;;;;;;;;;:::i;9992:37::-;;;;;;;;;;-1:-1:-1;9992:37:0;;;;;;;;27086:122;;;;;;;;;;-1:-1:-1;27086:122:0;;;;;:::i;:::-;;:::i;10694:37::-;;;;;;;;;;-1:-1:-1;10694:37:0;;;;-1:-1:-1;;;10694:37:0;;;;;;26531:26;;;;;;;;;;;;;;;;23425:106;;;;;;;;;;-1:-1:-1;23425:106:0;;;;;:::i;:::-;;:::i;15677:269::-;;;;;;;;;;-1:-1:-1;15677:269:0;;;;;:::i;:::-;;:::i;6400:305::-;;;;;;;;;;;;;:::i;14635:167::-;;;;;;;;;;-1:-1:-1;14635:167:0;;;;;:::i;:::-;;:::i;9754:26::-;;;;;;;;;;;;;;;;28802:207;;;;;;;;;;-1:-1:-1;28802:207:0;;;;;:::i;:::-;;:::i;22295:133::-;;;;;;;;;;-1:-1:-1;22295:133:0;;;;;:::i;:::-;;:::i;27470:114::-;;;;;;;;;;-1:-1:-1;27470:114:0;;;;;:::i;:::-;;:::i;10649:38::-;;;;;;;;;;-1:-1:-1;10649:38:0;;;;-1:-1:-1;;;10649:38:0;;;;;;24750:100;;;;;;;;;;-1:-1:-1;24750:100:0;;;;;:::i;:::-;;:::i;23106:171::-;;;;;;;;;;-1:-1:-1;23106:171:0;;;;;:::i;:::-;;:::i;21252:108::-;;;;;;;;;;-1:-1:-1;21252:108:0;;;;;:::i;:::-;;:::i;26360:37::-;;;;;;;;;;;;;;;;10985:74;;;;;;;;;;;;;;;;11189:47;;;;;;;;;;;;;;;;25160:109;;;;;;;;;;-1:-1:-1;25160:109:0;;;;;:::i;:::-;;:::i;21137:106::-;;;;;;;;;;-1:-1:-1;21137:106:0;;;;;:::i;:::-;;:::i;10250:33::-;;;;;;;;;;;;;;;;6160:226;;;;;;;;;;-1:-1:-1;6160:226:0;;;;;:::i;:::-;;:::i;14810:143::-;;;;;;;;;;-1:-1:-1;14810:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;14918:18:0;;;14891:7;14918:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14810:143;22686:102;;;;;;;;;;-1:-1:-1;22686:102:0;;;;;:::i;:::-;;:::i;28123:460::-;;;;;;;;;;-1:-1:-1;28123:460:0;;;;;:::i;:::-;;:::i;23285:132::-;;;;;;;;;;-1:-1:-1;23285:132:0;;;;;:::i;:::-;;:::i;5808:244::-;;;;;;;;;;-1:-1:-1;5808:244:0;;;;;:::i;:::-;;:::i;22998:100::-;;;;;;;;;;-1:-1:-1;22998:100:0;;;;;:::i;:::-;;:::i;25277:122::-;;;;;;;;;;-1:-1:-1;25277:122:0;;;;;:::i;:::-;-1:-1:-1;;;;;25366:25:0;25342:4;25366:25;;;:15;:25;;;;;;;;;25277:122;8559:157;;;;;;;;;;;;;:::i;25009:116::-;;;;;;;;;;-1:-1:-1;25009:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;25095:22:0;25071:4;25095:22;;;:12;:22;;;;;;;;;25009:116;24876:125;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;24962:22:0;;;::::1;;::::0;;;:12:::1;:22;::::0;;;;:31;;-1:-1:-1;;24962:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24876:125::o;27217:136::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;27305:28:::1;:40:::0;27217:136::o;14123:83::-;14160:13;14193:5;14186:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14123:83;:::o;14961:161::-;15036:4;15053:39;2428:10;15076:7;15085:6;15053:8;:39::i;:::-;-1:-1:-1;15110:4:0;14961:161;;;;;:::o;8805:186::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;8892:7:::1;8888:96;8909:6;:13;8905:1;:17;;;8888:96;;;8968:4;8944:10;:21;8955:6;8962:1;8955:9;;;;;;;;-1:-1:-1::0;;;8955:9:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;8944:21:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;8944:21:0;:28;;-1:-1:-1;;8944:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8924:3;::::1;::::0;::::1;:::i;:::-;;;;8888:96;;;;8805:186:::0;:::o;31567:198::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;31667:38:::1;::::0;-1:-1:-1;;;31667:38:0;;31699:4:::1;31667:38;::::0;::::1;9533:51:1::0;31650:14:0::1;::::0;-1:-1:-1;;;;;31667:23:0;::::1;::::0;::::1;::::0;9506:18:1;;31667:38:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31716:41;::::0;-1:-1:-1;;;31716:41:0;;-1:-1:-1;;;;;10011:32:1;;;31716:41:0::1;::::0;::::1;9993:51:1::0;10060:18;;;10053:34;;;31650:55:0;;-1:-1:-1;31716:22:0;;::::1;::::0;::::1;::::0;9966:18:1;;31716:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5631:1;31567:198:::0;;:::o;22569:109::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;22640:9:::1;:30:::0;;-1:-1:-1;;;;;;22640:30:0::1;-1:-1:-1::0;;;;;22640:30:0;;;::::1;::::0;;;::::1;::::0;;22569:109::o;22440:121::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;22517:15:::1;:36:::0;;-1:-1:-1;;;;;;22517:36:0::1;-1:-1:-1::0;;;;;22517:36:0;;;::::1;::::0;;;::::1;::::0;;22440:121::o;29017:204::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;29109:9:::1;29105:109;29122:20:::0;;::::1;29105:109;;;29198:4;29163:7;:21;29171:9;;29181:1;29171:12;;;;;-1:-1:-1::0;;;29171:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29163:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;29163:21:0;:32:::1;;:39:::0;;;::::1;;;;-1:-1:-1::0;;29163:39:0;;::::1;::::0;;;::::1;::::0;;29144:3;::::1;::::0;::::1;:::i;:::-;;;;29105:109;;;;29017:204:::0;;:::o;21886:118::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;21954:42:::1;21964:7;5472::::0;5499:6;-1:-1:-1;;;;;5499:6:0;;5434:79;21964:7:::1;21973:10;::::0;-1:-1:-1;;;;;21973:10:0::1;21985::::0;21954:9:::1;:42::i;:::-;21886:118:::0;:::o;15130:313::-;15228:4;15245:36;15255:6;15263:9;15274:6;15245:9;:36::i;:::-;15292:121;15301:6;2428:10;15323:89;15361:6;15323:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15323:19:0;;;;;;:11;:19;;;;;;;;2428:10;15323:33;;;;;;;;;;:37;:89::i;:::-;15292:8;:121::i;:::-;-1:-1:-1;15431:4:0;15130:313;;;;;:::o;31283:234::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;31397:9:::1;31393:117;31410:20:::0;;::::1;31393:117;;;31451:47;31461:10;31473:9;;31483:1;31473:12;;;;;-1:-1:-1::0;;;31473:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31487:7;;31495:1;31487:10;;;;;-1:-1:-1::0;;;31487:10:0::1;;;;;;;;;;;;;;;31451:9;:47::i;:::-;31432:3:::0;::::1;::::0;::::1;:::i;:::-;;;;31393:117;;;;31283:234:::0;;;;:::o;24588:150::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;24658:14:::1;:25:::0;;-1:-1:-1;;24658:25:0::1;::::0;::::1;;::::0;;::::1;::::0;;;24699:31:::1;::::0;10850:41:1;;;24699:31:0::1;::::0;10838:2:1;10823:18;24699:31:0::1;;;;;;;;24588:150:::0;:::o;27735:113::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;27813:18:::1;:27:::0;;-1:-1:-1;;27813:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27735:113::o;15451:218::-;2428:10;15539:4;15588:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15588:34:0;;;;;;;;;;15539:4;;15556:83;;15579:7;;15588:50;;15627:10;15588:38;:50::i;31773:107::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;31821:51:::1;::::0;31829:10:::1;::::0;31850:21:::1;31821:51:::0;::::1;;;::::0;::::1;::::0;;;31850:21;31829:10;31821:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;22796:194:::0;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;22887:13:::1;;22877:6;:23;;22869:79;;;::::0;-1:-1:-1;;;22869:79:0;;15538:2:1;22869:79:0::1;::::0;::::1;15520:21:1::0;15577:2;15557:18;;;15550:30;15616:34;15596:18;;;15589:62;-1:-1:-1;;;15667:18:1;;;15660:41;15718:19;;22869:79:0::1;15510:233:1::0;22869:79:0::1;22959:14;:23:::0;22796:194::o;16472:113::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16553:15:0;;;::::1;;::::0;;;:5:::1;:15;::::0;;;;:24;;-1:-1:-1;;16553:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16472:113::o;13664:215::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;13777:7:::1;:16:::0;;;;13804:13:::1;:28:::0;13843:13:::1;:28:::0;13664:215::o;13887:228::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;14001:11:::1;:20:::0;;;;14032:17:::1;:32:::0;14075:17:::1;:32:::0;13887:228::o;25821:146::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25919:31:0;;;::::1;;::::0;;;:21:::1;:31;::::0;;;;:40;;-1:-1:-1;;25919:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25821:146::o;27592:135::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;27681:29:::1;:38:::0;;;::::1;;;;-1:-1:-1::0;;27681:38:0;;::::1;::::0;;;::::1;::::0;;27592:135::o;20921:105::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;20991:18:::1;:27:::0;;-1:-1:-1;;20991:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20921:105::o;27361:100::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;27431:11:::1;:22:::0;27361:100::o;27856:122::-;27914:20;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27914:20:0;-1:-1:-1;;;;;27953:17:0;;;;;;:7;:17;;;;;;;;;27946:24;;;;;;;;;;;;;;;;;;;;;;;27953:17;;27946:24;;27953:17;;27946:24;;27953:17;27946:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27946:24:0;;;-1:-1:-1;;27946:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27856:122;-1:-1:-1;;27856:122:0:o;28591:203::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;28678:9:::1;28674:113;28691:20:::0;;::::1;28674:113;;;28771:4;28732:7;:21;28740:9;;28750:1;28740:12;;;;;-1:-1:-1::0;;;28740:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28732:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;28732:21:0;:36:::1;;:43:::0;;-1:-1:-1;;28732:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28713:3;::::1;::::0;::::1;:::i;:::-;;;;28674:113;;21368:110:::0;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;21441:20:::1;:29:::0;;;::::1;;-1:-1:-1::0;;;21441:29:0::1;-1:-1:-1::0;;;;21441:29:0;;::::1;::::0;;;::::1;::::0;;21368:110::o;5650:148::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;5757:1:::1;5741:6:::0;;5720:40:::1;::::0;-1:-1:-1;;;;;5741:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;5720:40:0;5757:1;;5720:40:::1;5788:1;5771:19:::0;;-1:-1:-1;;;;;;5771:19:0::1;::::0;;5650:148::o;25713:100::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;25783:14:::1;:22:::0;25713:100::o;25411:134::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25503:25:0;;;::::1;;::::0;;;:15:::1;:25;::::0;;;;:34;;-1:-1:-1;;25503:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25411:134::o;24456:124::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;24540:17:::1;:32:::0;24456:124::o;29229:208::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;29324:9:::1;29320:110;29337:20:::0;;::::1;29320:110;;;29413:5;29378:7;:21;29386:9;;29396:1;29386:12;;;;;-1:-1:-1::0;;;29386:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29378:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;29378:21:0;:32:::1;;:40:::0;;;::::1;;;;-1:-1:-1::0;;29378:40:0;;::::1;::::0;;;::::1;::::0;;29359:3;::::1;::::0;::::1;:::i;:::-;;;;29320:110;;29516:922:::0;-1:-1:-1;;;;;29637:17:0;;29582:18;29637:17;;;:7;:17;;;;;:36;29690:18;29686:68;;29725:17;29516:922;;;:::o;29686:68::-;-1:-1:-1;;;;;29793:17:0;;29764:26;29793:17;;;:7;:17;;;;;:32;;;;;:83;;29859:17;;29793:83;;;29828:28;;29793:83;-1:-1:-1;;;;;29909:17:0;;29887:19;29909:17;;;:7;:17;;;;;:29;;;29764:112;;-1:-1:-1;29887:19:0;29909:34;:87;;-1:-1:-1;;;;;29967:17:0;;;;;;:7;:17;;;;;:29;;;29909:87;;;29946:18;29909:87;29887:109;;30007:424;30039:18;30035:64;;30078:5;;30035:64;30113:15;;;;:::i;:::-;-1:-1:-1;;;;;30167:17:0;;30143:21;30167:17;;;:7;:17;;;;;:32;;:47;;30113:15;;-1:-1:-1;30143:21:0;;-1:-1:-1;30167:32:0;30113:15;;30167:47;;;;-1:-1:-1;;;30167:47:0;;;;;;;;;;;;;;;;;30143:71;;30266:13;30251:11;30233:15;:29;;;;:::i;:::-;:46;30229:191;;-1:-1:-1;;;;;30314:17:0;;;;;;:7;:17;;;;;:44;;30344:13;;30314:44;;;;-1:-1:-1;;;30314:44:0;;;;;;;;;;;;;;;;;30300:58;;;;;:::i;:::-;;;30229:191;;;30399:5;;;30229:191;30007:424;;;;29516:922;;;;;;:::o;21034:95::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;21101:11:::1;:20:::0;21034:95::o;8724:73::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;8775:6:::1;:14:::0;;-1:-1:-1;;8775:14:0::1;::::0;;8724:73::o;14214:87::-;14253:13;14286:7;14279:14;;;;;:::i;27086:122::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;27167:22:::1;:33:::0;27086:122::o;23425:106::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;23498:17:::1;:25:::0;23425:106::o;15677:269::-;15770:4;15787:129;2428:10;15810:7;15819:96;15858:15;15819:96;;;;;;;;;;;;;;;;;2428:10;15819:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15819:34:0;;;;;;;;;;;;:38;:96::i;6400:305::-;6452:14;;-1:-1:-1;;;;;6452:14:0;6470:10;6452:28;6444:76;;;;-1:-1:-1;;;6444:76:0;;20526:2:1;6444:76:0;;;20508:21:1;20565:2;20545:18;;;20538:30;20604:34;20584:18;;;20577:62;-1:-1:-1;;;20655:18:1;;;20648:33;20698:19;;6444:76:0;20498:225:1;6444:76:0;6557:9;;6539:15;:27;6531:72;;;;-1:-1:-1;;;6531:72:0;;19411:2:1;6531:72:0;;;19393:21:1;19450:2;19430:18;;;19423:30;19489:33;19469:18;;;19462:61;19540:18;;6531:72:0;19383:181:1;6531:72:0;6648:14;;;6640:6;;6619:44;;-1:-1:-1;;;;;6648:14:0;;;;6640:6;;;;-1:-1:-1;;;;;;;;;;;6619:44:0;;6683:14;;;6674:23;;-1:-1:-1;;;;;;6674:23:0;-1:-1:-1;;;;;6683:14:0;;;6674:23;;;;;;6400:305::o;14635:167::-;14713:4;14730:42;2428:10;14754:9;14765:6;14730:9;:42::i;28802:207::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;28892:9:::1;28888:114;28905:20:::0;;::::1;28888:114;;;28985:5;28946:7;:21;28954:9;;28964:1;28954:12;;;;;-1:-1:-1::0;;;28954:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28946:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;28946:21:0;:36:::1;;:44:::0;;-1:-1:-1;;28946:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28927:3;::::1;::::0;::::1;:::i;:::-;;;;28888:114;;22295:133:::0;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22382:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;22382:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22295:133::o;27470:114::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;27547:17:::1;:29:::0;27470:114::o;24750:100::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;24821:21:::1;24835:6;24821:13;:21::i;23106:171::-:0;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;23183:21:::1;:32:::0;;-1:-1:-1;;;;23183:32:0::1;-1:-1:-1::0;;;23183:32:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;23231:38:::1;::::0;10850:41:1;;;23231:38:0::1;::::0;10823:18:1;23231:38:0::1;10805:92:1::0;21252:108:0;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;21324:19:::1;:28:::0;;;::::1;;-1:-1:-1::0;;;21324:28:0::1;-1:-1:-1::0;;;;21324:28:0;;::::1;::::0;;;::::1;::::0;;21252:108::o;25160:109::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;25236:16:::1;:25:::0;;-1:-1:-1;;25236:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25160:109::o;21137:106::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;21208:18:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;21208:27:0::1;-1:-1:-1::0;;;;21208:27:0;;::::1;::::0;;;::::1;::::0;;21137:106::o;6160:226::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;6241:6:::1;::::0;;;6224:23;;-1:-1:-1;;;;;;6224:23:0;;::::1;-1:-1:-1::0;;;;;6241:6:0;::::1;6224:23;::::0;;;6258:19:::1;::::0;;6300:22:::1;6318:4:::0;6300:15:::1;:22;:::i;:::-;6288:9;:34:::0;6375:1:::1;6359:6:::0;;6338:40:::1;::::0;-1:-1:-1;;;;;6359:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6338:40:0;6375:1;;6338:40:::1;6160:226:::0;:::o;22686:102::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;22758:13:::1;:22:::0;22686:102::o;28123:460::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;28270:39;;::::1;:82:::0;::::1;;;-1:-1:-1::0;28313:39:0;;::::1;28270:82;28262:120;;;::::0;-1:-1:-1;;;28262:120:0;;18246:2:1;28262:120:0::1;::::0;::::1;18228:21:1::0;18285:2;18265:18;;;18258:30;18324:27;18304:18;;;18297:55;18369:18;;28262:120:0::1;18218:175:1::0;28262:120:0::1;28397:9;28393:181;28410:20:::0;;::::1;28393:181;;;28487:12;;28500:1;28487:15;;;;;-1:-1:-1::0;;;28487:15:0::1;;;;;;;;;;;;;;;28451:7;:21;28459:9;;28469:1;28459:12;;;;;-1:-1:-1::0;;;28459:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28451:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;28451:21:0;:33:::1;;:51:::0;28550:9;;28560:1;28550:12;;::::1;;;-1:-1:-1::0;;;28550:12:0::1;;;;;;;;;;;;;;;28517:7;:21;28525:9;;28535:1;28525:12;;;;;-1:-1:-1::0;;;28525:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28517:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;28517:21:0;:30:::1;;:45:::0;28432:3;::::1;::::0;::::1;:::i;:::-;;;;28393:181;;;;28123:460:::0;;;;;;:::o;23285:132::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;23371:29:::1;:38:::0;23285:132::o;5808:244::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5897:22:0;::::1;5889:73;;;::::0;-1:-1:-1;;;5889:73:0;;13277:2:1;5889:73:0::1;::::0;::::1;13259:21:1::0;13316:2;13296:18;;;13289:30;13355:34;13335:18;;;13328:62;-1:-1:-1;;;13406:18:1;;;13399:36;13452:19;;5889:73:0::1;13249:228:1::0;5889:73:0::1;5999:6;::::0;;5978:38:::1;::::0;-1:-1:-1;;;;;5978:38:0;;::::1;::::0;5999:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;5978:38:0;::::1;6027:6;:17:::0;;-1:-1:-1;;;;;;6027:17:0::1;-1:-1:-1::0;;;;;6027:17:0;;;::::1;::::0;;;::::1;::::0;;5808:244::o;22998:100::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;23069:12:::1;:21:::0;22998:100::o;8559:157::-;5561:6;;-1:-1:-1;;;;;5561:6:0;2428:10;5561:22;5553:67;;;;-1:-1:-1;;;5553:67:0;;;;;;;:::i;:::-;8610:6:::1;:13:::0;;-1:-1:-1;;8610:13:0::1;8619:4;8610:13;::::0;;8638:10:::1;::::0;8634:75:::1;;8682:15;8669:10;:28:::0;8634:75:::1;8559:157::o:0;16127:337::-;-1:-1:-1;;;;;16220:19:0;;16212:68;;;;-1:-1:-1;;;16212:68:0;;19006:2:1;16212:68:0;;;18988:21:1;19045:2;19025:18;;;19018:30;19084:34;19064:18;;;19057:62;-1:-1:-1;;;19135:18:1;;;19128:34;19179:19;;16212:68:0;18978:226:1;16212:68:0;-1:-1:-1;;;;;16299:21:0;;16291:68;;;;-1:-1:-1;;;16291:68:0;;13684:2:1;16291:68:0;;;13666:21:1;13723:2;13703:18;;;13696:30;13762:34;13742:18;;;13735:62;-1:-1:-1;;;13813:18:1;;;13806:32;13855:19;;16291:68:0;13656:224:1;16291:68:0;-1:-1:-1;;;;;16372:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16424:32;;21746:25:1;;;16424:32:0;;21719:18:1;16424:32:0;;;;;;;16127:337;;;:::o;16706:2958::-;8361:6;;16786:4;;16792:2;;8361:6;;;:26;;-1:-1:-1;;;;;;8371:16:0;;;;;;:10;:16;;;;;;;;8361:26;:44;;;-1:-1:-1;;;;;;8391:14:0;;;;;;:10;:14;;;;;;;;8361:44;8353:65;;;;-1:-1:-1;;;8353:65:0;;14443:2:1;8353:65:0;;;14425:21:1;14482:1;14462:18;;;14455:29;-1:-1:-1;;;14500:18:1;;;14493:38;14548:18;;8353:65:0;14415:157:1;8353:65:0;-1:-1:-1;;;;;16820:18:0;::::1;16812:68;;;::::0;-1:-1:-1;;;16812:68:0;;18600:2:1;16812:68:0::1;::::0;::::1;18582:21:1::0;18639:2;18619:18;;;18612:30;18678:34;18658:18;;;18651:62;-1:-1:-1;;;18729:18:1;;;18722:35;18774:19;;16812:68:0::1;18572:227:1::0;16812:68:0::1;-1:-1:-1::0;;;;;16899:16:0;::::1;16891:64;;;::::0;-1:-1:-1;;;16891:64:0;;12873:2:1;16891:64:0::1;::::0;::::1;12855:21:1::0;12912:2;12892:18;;;12885:30;12951:34;12931:18;;;12924:62;-1:-1:-1;;;13002:18:1;;;12995:33;13045:19;;16891:64:0::1;12845:225:1::0;16891:64:0::1;16983:1;16974:6;:10;16966:64;;;::::0;-1:-1:-1;;;16966:64:0;;17433:2:1;16966:64:0::1;::::0;::::1;17415:21:1::0;17472:2;17452:18;;;17445:30;17511:34;17491:18;;;17484:62;-1:-1:-1;;;17562:18:1;;;17555:39;17611:19;;16966:64:0::1;17405:231:1::0;16966:64:0::1;-1:-1:-1::0;;;;;17049:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:25;-1:-1:-1;17049:25:0::1;17041:69;;;::::0;-1:-1:-1;;;17041:69:0;;16310:2:1;17041:69:0::1;::::0;::::1;16292:21:1::0;16349:2;16329:18;;;16322:30;16388:33;16368:18;;;16361:61;16439:18;;17041:69:0::1;16282:181:1::0;17041:69:0::1;-1:-1:-1::0;;;;;17131:18:0;::::1;;::::0;;;:12:::1;:18;::::0;;;;;::::1;;::::0;:38:::1;;-1:-1:-1::0;;;;;;17153:16:0;::::1;;::::0;;;:12:::1;:16;::::0;;;;;::::1;;17131:38;17129:41;17121:82;;;::::0;-1:-1:-1;;;17121:82:0;;15181:2:1;17121:82:0::1;::::0;::::1;15163:21:1::0;15220:2;15200:18;;;15193:30;15259;15239:18;;;15232:58;15307:18;;17121:82:0::1;15153:178:1::0;17121:82:0::1;17222:16;::::0;::::1;;::::0;:38:::1;;;17243:17;:4;-1:-1:-1::0;;;;;17243:15:0::1;;:17::i;:::-;17242:18;17222:38;:64;;;-1:-1:-1::0;;;;;;25366:25:0;;25342:4;25366:25;;;:15;:25;;;;;;;;17264:22:::1;17214:97;;;::::0;-1:-1:-1;;;17214:97:0;;20177:2:1;17214:97:0::1;::::0;::::1;20159:21:1::0;20216:2;20196:18;;;20189:30;-1:-1:-1;;;20235:18:1;;;20228:50;20295:18;;17214:97:0::1;20149:170:1::0;17214:97:0::1;17371:4;17322:28;14601:18:::0;;;:9;:18;;;;;;17441:29:::1;::::0;17417:53;::::1;::::0;::::1;::::0;;;17485:41:::1;;-1:-1:-1::0;17510:16:0::1;::::0;-1:-1:-1;;;17510:16:0;::::1;;;17509:17;17485:41;:57;;;;-1:-1:-1::0;;;;;;17531:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;::::1;;17530:12;17485:57;:82;;;;-1:-1:-1::0;17546:21:0::1;::::0;-1:-1:-1;;;17546:21:0;::::1;;;17485:82;17481:249;;;17583:17;:15;:17::i;:::-;17638:29;;17615:52;;17682:36;17697:20;17682:14;:36::i;:::-;-1:-1:-1::0;;;;;17767:24:0;::::1;17742:11;17767:24:::0;;;:18:::1;:24;::::0;;;;;::::1;;::::0;:50:::1;;-1:-1:-1::0;;;;;;17795:22:0;::::1;;::::0;;;:18:::1;:22;::::0;;;;;::::1;;17767:50;:70;;;-1:-1:-1::0;17821:16:0::1;::::0;-1:-1:-1;;;17821:16:0;::::1;;;17767:70;17764:1090;;;-1:-1:-1::0;17963:1:0::1;17764:1090;;;-1:-1:-1::0;;;;;18000:9:0;::::1;;::::0;;;:5:::1;:9;::::0;;;;;::::1;;17997:846;;;18072:13;;18062:6;:23;;:47;;;-1:-1:-1::0;18090:19:0::1;::::0;-1:-1:-1;;;18090:19:0;::::1;;;18089:20;18062:47;18054:94;;;::::0;-1:-1:-1;;;18054:94:0;;17843:2:1;18054:94:0::1;::::0;::::1;17825:21:1::0;17882:2;17862:18;;;17855:30;17921:34;17901:18;;;17894:62;-1:-1:-1;;;17972:18:1;;;17965:32;18014:19;;18054:94:0::1;17815:224:1::0;18054:94:0::1;18173:57;18218:11;;18173:40;18195:17;;18173;;:21;;:40;;;;:::i;:::-;:44:::0;::::1;:57::i;:::-;18167:63;;17997:846;;;-1:-1:-1::0;;;;;18256:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;::::1;;18252:591;;;18311:10;;18292:15;:29;18288:100;;;-1:-1:-1::0;;;;;18345:16:0;::::1;;::::0;;;:12:::1;:16;::::0;;;;:23;;-1:-1:-1;;18345:23:0::1;18364:4;18345:23;::::0;;18288:100:::1;18448:12;;18438:6;:22;;:45;;;-1:-1:-1::0;18465:18:0::1;::::0;-1:-1:-1;;;18465:18:0;::::1;;;18464:19;18438:45;18430:91;;;::::0;-1:-1:-1;;;18430:91:0;;14779:2:1;18430:91:0::1;::::0;::::1;14761:21:1::0;14818:2;14798:18;;;14791:30;14857:34;14837:18;;;14830:62;-1:-1:-1;;;14908:18:1;;;14901:31;14949:19;;18430:91:0::1;14751:223:1::0;18430:91:0::1;18546:45;18583:7;;18546:32;18564:13;;18546;;:17;;:32;;;;:::i;18252:591::-;-1:-1:-1::0;;;;;18670:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:28:::1;;::::0;::::1;;18669:29;:61:::0;::::1;;;;18720:10;;18702:15;:28;18669:61;18661:105;;;::::0;-1:-1:-1;;;18661:105:0;;15950:2:1;18661:105:0::1;::::0;::::1;15932:21:1::0;15989:2;15969:18;;;15962:30;16028:33;16008:18;;;16001:61;16079:18;;18661:105:0::1;15922:181:1::0;18661:105:0::1;18791:18;::::0;::::1;;:36;;18826:1;18791:36;;;18812:11;;18791:36;18785:42;;18252:591;18898:19;18920:22;18930:6;18938:3;18920:9;:22::i;:::-;18898:44:::0;-1:-1:-1;18953:17:0::1;18973:23;:6:::0;18898:44;18973:10:::1;:23::i;:::-;-1:-1:-1::0;;;;;19026:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;18953:43;;-1:-1:-1;19026:27:0::1;::::0;19046:6;19026:19:::1;:27::i;:::-;-1:-1:-1::0;;;;;19008:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:45;;;;19109:4:::1;19091:24:::0;;;;:39:::1;::::0;19120:9;19091:28:::1;:39::i;:::-;19082:4;19064:24;::::0;;;:9:::1;:24;::::0;;;;;:66;;;;-1:-1:-1;;;;;19157:13:0;::::1;::::0;;;;:30:::1;::::0;19175:11;19157:17:::1;:30::i;:::-;-1:-1:-1::0;;;;;19141:13:0;::::1;;::::0;;;:9:::1;:13;::::0;;;;:46;;;19223:14:::1;::::0;-1:-1:-1;19206:31:0::1;::::0;:60:::1;;-1:-1:-1::0;;;;;;19241:25:0;::::1;;::::0;;;:21:::1;:25;::::0;;;;;::::1;;19206:60;:85;;;-1:-1:-1::0;19271:20:0::1;::::0;-1:-1:-1;;;19271:20:0;::::1;;;19270:21;19206:85;19198:141;;;::::0;-1:-1:-1;;;19198:141:0;;12461:2:1;19198:141:0::1;::::0;::::1;12443:21:1::0;12500:2;12480:18;;;12473:30;12539:34;12519:18;;;12512:62;-1:-1:-1;;;12590:18:1;;;12583:41;12641:19;;19198:141:0::1;12433:233:1::0;19198:141:0::1;19410:16;::::0;-1:-1:-1;;;19410:16:0;::::1;;;19409:17;:33:::0;::::1;;;-1:-1:-1::0;;;;;;19431:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;::::1;;19430:12;19409:33;19405:98;;;19458:33;19473:4;19479:11;19458:14;:33::i;:::-;19542:2;-1:-1:-1::0;;;;;19528:29:0::1;19537:4;-1:-1:-1::0;;;;;19528:29:0::1;;19545:11;19528:29;;;;21746:25:1::0;;21734:2;21719:18;;21701:76;19528:29:0::1;;;;;;;;19572:14:::0;;19568:89:::1;;19607:38;::::0;21746:25:1;;;19629:4:0::1;::::0;-1:-1:-1;;;;;19607:38:0;::::1;::::0;::::1;::::0;21734:2:1;21719:18;19607:38:0::1;;;;;;;19568:89;8429:1;;;;;16706:2958:::0;;;;;:::o;1104:192::-;1190:7;1226:12;1218:6;;;;1210:29;;;;-1:-1:-1;;;1210:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1250:9:0;1262:5;1266:1;1262;:5;:::i;:::-;1250:17;1104:192;-1:-1:-1;;;;;1104:192:0:o;773:179::-;831:7;;863:5;867:1;863;:5;:::i;:::-;851:17;;892:1;887;:6;;879:46;;;;-1:-1:-1;;;879:46:0;;14087:2:1;879:46:0;;;14069:21:1;14126:2;14106:18;;;14099:30;14165:29;14145:18;;;14138:57;14212:18;;879:46:0;14059:177:1;879:46:0;943:1;773:179;-1:-1:-1;;;773:179:0:o;23539:135::-;11690:16;:23;;-1:-1:-1;;;;11690:23:0;-1:-1:-1;;;11690:23:0;;;23610:10;;23606:61:::1;;23634:24;23651:6;23634:16;:24::i;:::-;-1:-1:-1::0;11736:16:0;:24;;-1:-1:-1;;;;11736:24:0;;;23539:135::o;2720:317::-;2780:4;2946:20;;2846:66;2986:23;;;;;;:42;;-1:-1:-1;3013:15:0;;;2986:42;2978:51;2720:317;-1:-1:-1;;;;2720:317:0:o;23682:343::-;11690:16;:23;;-1:-1:-1;;;;11690:23:0;-1:-1:-1;;;11690:23:0;;;23794:14:::1;::::0;23758:21:::1;::::0;11690:23;23794:14:::1;:46:::0;::::1;;;;23823:17;;23812:7;:28;;23794:46;23790:228;;;23885:17;;23875:7;:27;23871:99;;;-1:-1:-1::0;23933:17:0::1;::::0;23871:99:::1;23984:22;23998:7;23984:13;:22::i;19672:1063::-:0;11690:16;:23;;-1:-1:-1;;;;11690:23:0;-1:-1:-1;;;11690:23:0;;;19811:7:::1;::::0;19792:13:::1;::::0;19774::::1;::::0;11690:23;;19774:45:::1;::::0;19811:7;;19774:32:::1;::::0;:17:::1;:32::i;:45::-;19757:62:::0;-1:-1:-1;19834:11:0;;19830:898:::1;;19861:27;19891:73;19962:1;19891:66;19942:14;;19928:13;;:28;;;;:::i;:::-;19891:32;:20:::0;19916:6;19891:24:::1;:32::i;:::-;:36:::0;::::1;:66::i;:::-;:70:::0;::::1;:73::i;:::-;19861:103:::0;-1:-1:-1;19979:22:0::1;20004:45;:20:::0;19861:103;20004:24:::1;:45::i;:::-;19979:70:::0;-1:-1:-1;20089:21:0::1;20125:32;19979:70:::0;20125:16:::1;:32::i;:::-;20172:18;20193:41;:21;20219:14:::0;20193:25:::1;:41::i;:::-;20172:62;;20249:23;20275:63;20336:1;20275:56;20316:14;;20302:13;;:28;;;;:::i;:::-;20275:22;:10:::0;20290:6;20275:14:::1;:22::i;:63::-;20249:89:::0;-1:-1:-1;20356:19:0;;20353:212:::1;;20406:50;20419:19;20440:15;20406:12;:50::i;:::-;20476:73;::::0;;22908:25:1;;;22964:2;22949:18;;22942:34;;;22992:18;;;22985:34;;;20476:73:0::1;::::0;22896:2:1;22881:18;20476:73:0::1;;;;;;;20353:212;20579:15;::::0;20631:13:::1;::::0;-1:-1:-1;;;;;20579:15:0;;::::1;::::0;:67:::1;::::0;20604:41:::1;::::0;:22:::1;:10:::0;20619:6;20604:14:::1;:22::i;:41::-;20579:67;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;20661:9:0::1;::::0;20707:7:::1;::::0;-1:-1:-1;;;;;20661:9:0;;::::1;::::0;:55:::1;::::0;20680:35:::1;::::0;:22:::1;:10:::0;20695:6;20680:14:::1;:22::i;:35::-;20661:55;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;19830:898;;;;;;-1:-1:-1::0;;11736:16:0;:24;;-1:-1:-1;;;;11736:24:0;;;19672:1063::o;20743:170::-;20893:11;;20818:13;;20851:54;;:37;20867:20;20893:11;20883:3;20867:15;:20::i;:::-;20851:11;;:15;:37::i;960:136::-;1018:7;1045:43;1049:1;1052;1045:43;;;;;;;;;;;;;;;;;:3;:43::i;30480:791::-;-1:-1:-1;;;;;30562:13:0;;;;;;:7;:13;;;;;:24;;;;;;;;;:82;;-1:-1:-1;30592:18:0;;;;30591:19;:52;;;;-1:-1:-1;;;;;;30615:13:0;;;;;;:7;:13;;;;;:28;;;;;30614:29;30591:52;30562:150;;;-1:-1:-1;30650:29:0;;;;;;;30649:30;:62;;;;-1:-1:-1;;;;;;30683:13:0;;;;;;:7;:13;;;;;:28;;;;;30649:62;30558:188;;;30480:791;;:::o;30558:188::-;30756:16;30775:24;30787:11;30775;:24::i;:::-;-1:-1:-1;;;;;30810:13:0;;;;;;:7;:13;;;;;;;:28;;;;:50;;;;;;;;;;;;;30844:15;30810:50;;;30871:40;;;;;;;;;;;;;;;;;30756:43;;-1:-1:-1;30953:23:0;30818:4;30953:17;:23::i;:::-;-1:-1:-1;;;;;31012:13:0;;30989:20;31012:13;;;:7;:13;;;;;:28;;;30922:54;;-1:-1:-1;30989:20:0;31012:28;;:67;;31068:11;;31012:67;;;31043:22;;31012:67;-1:-1:-1;;;;;31106:13:0;;31090;31106;;;:7;:13;;;;;:22;;;30989:90;;-1:-1:-1;31090:13:0;31106:27;:67;;-1:-1:-1;;;;;31151:13:0;;;;;;:7;:13;;;;;:22;;;31106:67;;;31136:12;31106:67;31090:83;;31216:5;31192:20;:29;;31184:79;;;;-1:-1:-1;;;31184:79:0;;19771:2:1;31184:79:0;;;19753:21:1;19810:2;19790:18;;;19783:30;19849:34;19829:18;;;19822:62;-1:-1:-1;;;19900:18:1;;;19893:35;19945:19;;31184:79:0;19743:227:1;31184:79:0;30480:791;;;;;;:::o;24033:415::-;24118:16;;;24132:1;24118:16;;;;;;;;24094:21;;24118:16;;;;;;;;-1:-1:-1;;24155:15:0;;:22;;;-1:-1:-1;;;24155:22:0;;;;24094:40;;-1:-1:-1;;;;;;24155:15:0;;;;:20;;-1:-1:-1;24155:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24145:4;24150:1;24145:7;;;;;;-1:-1:-1;;;24145:7:0;;;;;;;;;;;;;;:32;-1:-1:-1;;;;;24145:32:0;;;-1:-1:-1;;;;;24145:32:0;;;;;24206:4;24188;24193:1;24188:7;;;;;;-1:-1:-1;;;24188:7:0;;;;;;;;;-1:-1:-1;;;;;24188:23:0;;;:7;;;;;;;;;:23;24222:15;;24353:10;;24222:172;;-1:-1:-1;;;24222:172:0;;:15;;;;:66;;24296:6;;24222:172;;:15;;24334:4;;24353:10;;;;24378:15;;24222:172;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24410:30;24427:6;24435:4;24410:30;;;;;;;:::i;:::-;;;;;;;;24033:415;;:::o;1562:132::-;1620:7;1647:39;1651:1;1654;1647:39;;;;;;;;;;;;;;;;;:3;:39::i;1304:250::-;1362:7;1386:6;1382:47;;-1:-1:-1;1416:1:0;1409:8;;1382:47;1441:9;1453:5;1457:1;1453;:5;:::i;:::-;1441:17;-1:-1:-1;1486:1:0;1477:5;1481:1;1441:17;1477:5;:::i;:::-;:10;1469:56;;;;-1:-1:-1;;;1469:56:0;;16670:2:1;1469:56:0;;;16652:21:1;16709:2;16689:18;;;16682:30;16748:34;16728:18;;;16721:62;-1:-1:-1;;;16799:18:1;;;16792:31;16840:19;;1469:56:0;16642:223:1;21486:392:0;21576:16;;;21590:1;21576:16;;;;;;;;21552:21;;21576:16;;;;;;;;;;-1:-1:-1;21576:16:0;21552:40;;21621:4;21603;21608:1;21603:7;;;;;;-1:-1:-1;;;21603:7:0;;;;;;;;;-1:-1:-1;;;;;21603:23:0;;;:7;;;;;;;;;;:23;;;;21647:15;;:22;;;-1:-1:-1;;;21647:22:0;;;;:15;;;;;:20;;:22;;;;;21603:7;;21647:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21637:4;21642:1;21637:7;;;;;;-1:-1:-1;;;21637:7:0;;;;;;;;;-1:-1:-1;;;;;21637:32:0;;;:7;;;;;;;;;:32;21712:15;;21680:62;;21697:4;;21712:15;21730:11;21680:8;:62::i;:::-;21753:15;;:117;;-1:-1:-1;;;21753:117:0;;-1:-1:-1;;;;;21753:15:0;;;;:66;;:117;;21820:11;;21753:15;;21834:4;;21847;;21854:15;;21753:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22016:271;22129:15;;22097:62;;22114:4;;-1:-1:-1;;;;;22129:15:0;22147:11;22097:8;:62::i;:::-;22170:15;;-1:-1:-1;;;;;22170:15:0;:31;22209:9;22228:4;22235:11;22170:15;;22254:7;5472;5499:6;-1:-1:-1;;;;;5499:6:0;;5434:79;22254:7;22170:109;;;;;;-1:-1:-1;;;;;;22170:109:0;;;-1:-1:-1;;;;;10457:15:1;;;22170:109:0;;;10439:34:1;10489:18;;;10482:34;;;;10532:18;;;10525:34;;;;10575:18;;;10568:34;10639:15;;;10618:19;;;10611:44;22263:15:0;10671:19:1;;;10664:35;10373:19;;22170:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;25975:291::-;26092:16;;;26106:1;26092:16;;;;;;;;26039;;;;26092;26106:1;26092:16;;;;;;;;;;-1:-1:-1;26092:16:0;26068:40;;26137:4;26119;26124:1;26119:7;;;;;;-1:-1:-1;;;26119:7:0;;;;;;;;;-1:-1:-1;;;;;26119:23:0;;;:7;;;;;;;;;;:23;;;;26163:15;;:22;;;-1:-1:-1;;;26163:22:0;;;;:15;;;;;:20;;:22;;;;;26119:7;;26163:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26153:4;26158:1;26153:7;;;;;;-1:-1:-1;;;26153:7:0;;;;;;;;;-1:-1:-1;;;;;26153:32:0;;;:7;;;;;;;;;:32;26207:15;;:48;;-1:-1:-1;;;26207:48:0;;:15;;;:29;;:48;;26237:11;;26250:4;;26207:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26207:48:0;;;;;;;;;;;;:::i;:::-;26256:1;26207:51;;;;;;-1:-1:-1;;;26207:51:0;;;;;;;;;;;;;;;26196:62;;25975:291;;;;:::o;1702:278::-;1788:7;1823:12;1816:5;1808:28;;;;-1:-1:-1;;;1808:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1847:9:0;1859:5;1863:1;1859;:5;:::i;14:395:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:2;;166:8;156;149:26;108:2;-1:-1:-1;196:20:1;;239:18;228:30;;225:2;;;278:8;268;261:26;225:2;322:4;314:6;310:17;298:29;;382:3;375:4;365:6;362:1;358:14;350:6;346:27;342:38;339:47;336:2;;;399:1;396;389:12;336:2;98:311;;;;;:::o;414:257::-;473:6;526:2;514:9;505:7;501:23;497:32;494:2;;;547:6;539;532:22;494:2;591:9;578:23;610:31;635:5;610:31;:::i;676:261::-;746:6;799:2;787:9;778:7;774:23;770:32;767:2;;;820:6;812;805:22;767:2;857:9;851:16;876:31;901:5;876:31;:::i;942:398::-;1010:6;1018;1071:2;1059:9;1050:7;1046:23;1042:32;1039:2;;;1092:6;1084;1077:22;1039:2;1136:9;1123:23;1155:31;1180:5;1155:31;:::i;:::-;1205:5;-1:-1:-1;1262:2:1;1247:18;;1234:32;1275:33;1234:32;1275:33;:::i;:::-;1327:7;1317:17;;;1029:311;;;;;:::o;1345:466::-;1422:6;1430;1438;1491:2;1479:9;1470:7;1466:23;1462:32;1459:2;;;1512:6;1504;1497:22;1459:2;1556:9;1543:23;1575:31;1600:5;1575:31;:::i;:::-;1625:5;-1:-1:-1;1682:2:1;1667:18;;1654:32;1695:33;1654:32;1695:33;:::i;:::-;1449:362;;1747:7;;-1:-1:-1;;;1801:2:1;1786:18;;;;1773:32;;1449:362::o;1816:392::-;1881:6;1889;1942:2;1930:9;1921:7;1917:23;1913:32;1910:2;;;1963:6;1955;1948:22;1910:2;2007:9;1994:23;2026:31;2051:5;2026:31;:::i;:::-;2076:5;-1:-1:-1;2133:2:1;2118:18;;2105:32;2146:30;2105:32;2146:30;:::i;2213:325::-;2281:6;2289;2342:2;2330:9;2321:7;2317:23;2313:32;2310:2;;;2363:6;2355;2348:22;2310:2;2407:9;2394:23;2426:31;2451:5;2426:31;:::i;:::-;2476:5;2528:2;2513:18;;;;2500:32;;-1:-1:-1;;;2300:238:1:o;2543:457::-;2629:6;2637;2690:2;2678:9;2669:7;2665:23;2661:32;2658:2;;;2711:6;2703;2696:22;2658:2;2756:9;2743:23;2789:18;2781:6;2778:30;2775:2;;;2826:6;2818;2811:22;2775:2;2870:70;2932:7;2923:6;2912:9;2908:22;2870:70;:::i;:::-;2959:8;;2844:96;;-1:-1:-1;2648:352:1;-1:-1:-1;;;;2648:352:1:o;3005:803::-;3127:6;3135;3143;3151;3204:2;3192:9;3183:7;3179:23;3175:32;3172:2;;;3225:6;3217;3210:22;3172:2;3270:9;3257:23;3299:18;3340:2;3332:6;3329:14;3326:2;;;3361:6;3353;3346:22;3326:2;3405:70;3467:7;3458:6;3447:9;3443:22;3405:70;:::i;:::-;3494:8;;-1:-1:-1;3379:96:1;-1:-1:-1;3582:2:1;3567:18;;3554:32;;-1:-1:-1;3598:16:1;;;3595:2;;;3632:6;3624;3617:22;3595:2;;3676:72;3740:7;3729:8;3718:9;3714:24;3676:72;:::i;:::-;3162:646;;;;-1:-1:-1;3767:8:1;-1:-1:-1;;;;3162:646:1:o;3813:1128::-;3971:6;3979;3987;3995;4003;4011;4064:2;4052:9;4043:7;4039:23;4035:32;4032:2;;;4085:6;4077;4070:22;4032:2;4130:9;4117:23;4159:18;4200:2;4192:6;4189:14;4186:2;;;4221:6;4213;4206:22;4186:2;4265:70;4327:7;4318:6;4307:9;4303:22;4265:70;:::i;:::-;4354:8;;-1:-1:-1;4239:96:1;-1:-1:-1;4442:2:1;4427:18;;4414:32;;-1:-1:-1;4458:16:1;;;4455:2;;;4492:6;4484;4477:22;4455:2;4536:72;4600:7;4589:8;4578:9;4574:24;4536:72;:::i;:::-;4627:8;;-1:-1:-1;4510:98:1;-1:-1:-1;4715:2:1;4700:18;;4687:32;;-1:-1:-1;4731:16:1;;;4728:2;;;4765:6;4757;4750:22;4728:2;;4809:72;4873:7;4862:8;4851:9;4847:24;4809:72;:::i;:::-;4022:919;;;;-1:-1:-1;4022:919:1;;-1:-1:-1;4022:919:1;;4900:8;;4022:919;-1:-1:-1;;;4022:919:1:o;4946:1022::-;5030:6;5061:2;5104;5092:9;5083:7;5079:23;5075:32;5072:2;;;5125:6;5117;5110:22;5072:2;5170:9;5157:23;5203:18;5195:6;5192:30;5189:2;;;5240:6;5232;5225:22;5189:2;5268:22;;5321:4;5313:13;;5309:27;-1:-1:-1;5299:2:1;;5355:6;5347;5340:22;5299:2;5396;5383:16;5419:60;5435:43;5475:2;5435:43;:::i;:::-;5419:60;:::i;:::-;5501:3;5525:2;5520:3;5513:15;5553:2;5548:3;5544:12;5537:19;;5584:2;5580;5576:11;5632:7;5627:2;5621;5618:1;5614:10;5610:2;5606:19;5602:28;5599:41;5596:2;;;5658:6;5650;5643:22;5596:2;5685:6;5676:15;;5700:238;5714:2;5711:1;5708:9;5700:238;;;5785:3;5772:17;5802:31;5827:5;5802:31;:::i;:::-;5846:18;;5732:1;5725:9;;;;;5884:12;;;;5916;;5700:238;;;-1:-1:-1;5957:5:1;5041:927;-1:-1:-1;;;;;;;5041:927:1:o;5973:937::-;6068:6;6099:2;6142;6130:9;6121:7;6117:23;6113:32;6110:2;;;6163:6;6155;6148:22;6110:2;6201:9;6195:16;6234:18;6226:6;6223:30;6220:2;;;6271:6;6263;6256:22;6220:2;6299:22;;6352:4;6344:13;;6340:27;-1:-1:-1;6330:2:1;;6386:6;6378;6371:22;6330:2;6420;6414:9;6443:60;6459:43;6499:2;6459:43;:::i;6443:60::-;6525:3;6549:2;6544:3;6537:15;6577:2;6572:3;6568:12;6561:19;;6608:2;6604;6600:11;6656:7;6651:2;6645;6642:1;6638:10;6634:2;6630:19;6626:28;6623:41;6620:2;;;6682:6;6674;6667:22;6620:2;6709:6;6700:15;;6724:156;6738:2;6735:1;6732:9;6724:156;;;6795:10;;6783:23;;6756:1;6749:9;;;;;6826:12;;;;6858;;6724:156;;6915:251;6971:6;7024:2;7012:9;7003:7;6999:23;6995:32;6992:2;;;7045:6;7037;7030:22;6992:2;7089:9;7076:23;7108:28;7130:5;7108:28;:::i;7171:255::-;7238:6;7291:2;7279:9;7270:7;7266:23;7262:32;7259:2;;;7312:6;7304;7297:22;7259:2;7349:9;7343:16;7368:28;7390:5;7368:28;:::i;7431:190::-;7490:6;7543:2;7531:9;7522:7;7518:23;7514:32;7511:2;;;7564:6;7556;7549:22;7511:2;-1:-1:-1;7592:23:1;;7501:120;-1:-1:-1;7501:120:1:o;7626:194::-;7696:6;7749:2;7737:9;7728:7;7724:23;7720:32;7717:2;;;7770:6;7762;7755:22;7717:2;-1:-1:-1;7798:16:1;;7707:113;-1:-1:-1;7707:113:1:o;7825:326::-;7902:6;7910;7918;7971:2;7959:9;7950:7;7946:23;7942:32;7939:2;;;7992:6;7984;7977:22;7939:2;-1:-1:-1;;8020:23:1;;;8090:2;8075:18;;8062:32;;-1:-1:-1;8141:2:1;8126:18;;;8113:32;;7929:222;-1:-1:-1;7929:222:1:o;8156:316::-;8244:6;8252;8260;8313:2;8301:9;8292:7;8288:23;8284:32;8281:2;;;8334:6;8326;8319:22;8281:2;8368:9;8362:16;8352:26;;8418:2;8407:9;8403:18;8397:25;8387:35;;8462:2;8451:9;8447:18;8441:25;8431:35;;8271:201;;;;;:::o;8477:463::-;8530:3;8568:5;8562:12;8595:6;8590:3;8583:19;8621:4;8650:2;8645:3;8641:12;8634:19;;8687:2;8680:5;8676:14;8708:3;8720:195;8734:6;8731:1;8728:13;8720:195;;;8799:13;;-1:-1:-1;;;;;8795:39:1;8783:52;;8855:12;;;;8890:15;;;;8831:1;8749:9;8720:195;;;-1:-1:-1;8931:3:1;;8538:402;-1:-1:-1;;;;;8538:402:1:o;8945:437::-;8998:3;9036:5;9030:12;9063:6;9058:3;9051:19;9089:4;9118:2;9113:3;9109:12;9102:19;;9155:2;9148:5;9144:14;9176:3;9188:169;9202:6;9199:1;9196:13;9188:169;;;9263:13;;9251:26;;9297:12;;;;9332:15;;;;9224:1;9217:9;9188:169;;11136:510;11407:6;11396:9;11389:25;11450:3;11445:2;11434:9;11430:18;11423:31;11370:4;11471:57;11523:3;11512:9;11508:19;11500:6;11471:57;:::i;:::-;-1:-1:-1;;;;;11564:32:1;;;;11559:2;11544:18;;11537:60;-1:-1:-1;11628:2:1;11613:18;11606:34;11463:65;11379:267;-1:-1:-1;;11379:267:1:o;11651:603::-;11763:4;11792:2;11821;11810:9;11803:21;11853:6;11847:13;11896:6;11891:2;11880:9;11876:18;11869:34;11921:4;11934:140;11948:6;11945:1;11942:13;11934:140;;;12043:14;;;12039:23;;12033:30;12009:17;;;12028:2;12005:26;11998:66;11963:10;;11934:140;;;12092:6;12089:1;12086:13;12083:2;;;12162:4;12157:2;12148:6;12137:9;12133:22;12129:31;12122:45;12083:2;-1:-1:-1;12238:2:1;12217:15;-1:-1:-1;;12213:29:1;12198:45;;;;12245:2;12194:54;;11772:482;-1:-1:-1;;;11772:482:1:o;16870:356::-;17072:2;17054:21;;;17091:18;;;17084:30;17150:34;17145:2;17130:18;;17123:62;17217:2;17202:18;;17044:182::o;20728:867::-;20919:2;20908:9;20901:21;20882:4;20957:6;20951:13;21000:4;20995:2;20984:9;20980:18;20973:32;21028:63;21086:3;21075:9;21071:19;21057:12;21028:63;:::i;:::-;21014:77;;21140:2;21132:6;21128:15;21122:22;21212:2;21208:7;21196:9;21188:6;21184:22;21180:36;21175:2;21164:9;21160:18;21153:64;21240:52;21285:6;21269:14;21240:52;:::i;:::-;21226:66;;;21346:2;21338:6;21334:15;21328:22;21323:2;21312:9;21308:18;21301:50;21406:2;21398:6;21394:15;21388:22;21382:3;21371:9;21367:19;21360:51;21480:3;21472:6;21468:16;21462:23;21455:31;21448:39;21442:3;21431:9;21427:19;21420:68;21558:3;21550:6;21546:16;21540:23;21533:31;21526:39;21519:4;21508:9;21504:20;21497:69;21583:6;21575:14;;;20891:704;;;;:::o;21782:332::-;21989:6;21978:9;21971:25;22032:2;22027;22016:9;22012:18;22005:30;21952:4;22052:56;22104:2;22093:9;22089:18;22081:6;22052:56;:::i;22119:582::-;22418:6;22407:9;22400:25;22461:6;22456:2;22445:9;22441:18;22434:34;22504:3;22499:2;22488:9;22484:18;22477:31;22381:4;22525:57;22577:3;22566:9;22562:19;22554:6;22525:57;:::i;:::-;-1:-1:-1;;;;;22618:32:1;;;;22613:2;22598:18;;22591:60;-1:-1:-1;22682:3:1;22667:19;22660:35;22517:65;22390:311;-1:-1:-1;;;22390:311:1:o;23219:275::-;23290:2;23284:9;23355:2;23336:13;;-1:-1:-1;;23332:27:1;23320:40;;23390:18;23375:34;;23411:22;;;23372:62;23369:2;;;23437:18;;:::i;:::-;23473:2;23466:22;23264:230;;-1:-1:-1;23264:230:1:o;23499:183::-;23559:4;23592:18;23584:6;23581:30;23578:2;;;23614:18;;:::i;:::-;-1:-1:-1;23659:1:1;23655:14;23671:4;23651:25;;23568:114::o;23687:128::-;23727:3;23758:1;23754:6;23751:1;23748:13;23745:2;;;23764:18;;:::i;:::-;-1:-1:-1;23800:9:1;;23735:80::o;23820:217::-;23860:1;23886;23876:2;;-1:-1:-1;;;23911:31:1;;23965:4;23962:1;23955:15;23993:4;23918:1;23983:15;23876:2;-1:-1:-1;24022:9:1;;23866:171::o;24042:168::-;24082:7;24148:1;24144;24140:6;24136:14;24133:1;24130:21;24125:1;24118:9;24111:17;24107:45;24104:2;;;24155:18;;:::i;:::-;-1:-1:-1;24195:9:1;;24094:116::o;24215:125::-;24255:4;24283:1;24280;24277:8;24274:2;;;24288:18;;:::i;:::-;-1:-1:-1;24325:9:1;;24264:76::o;24345:136::-;24384:3;24412:5;24402:2;;24421:18;;:::i;:::-;-1:-1:-1;;;24457:18:1;;24392:89::o;24486:380::-;24565:1;24561:12;;;;24608;;;24629:2;;24683:4;24675:6;24671:17;24661:27;;24629:2;24736;24728:6;24725:14;24705:18;24702:38;24699:2;;;24782:10;24777:3;24773:20;24770:1;24763:31;24817:4;24814:1;24807:15;24845:4;24842:1;24835:15;24699:2;;24541:325;;;:::o;24871:135::-;24910:3;-1:-1:-1;;24931:17:1;;24928:2;;;24951:18;;:::i;:::-;-1:-1:-1;24998:1:1;24987:13;;24918:88::o;25011:175::-;25048:3;25092:4;25085:5;25081:16;25121:4;25112:7;25109:17;25106:2;;;25129:18;;:::i;:::-;25178:1;25165:15;;25056:130;-1:-1:-1;;25056:130:1:o;25191:127::-;25252:10;25247:3;25243:20;25240:1;25233:31;25283:4;25280:1;25273:15;25307:4;25304:1;25297:15;25323:127;25384:10;25379:3;25375:20;25372:1;25365:31;25415:4;25412:1;25405:15;25439:4;25436:1;25429:15;25455:131;-1:-1:-1;;;;;25530:31:1;;25520:42;;25510:2;;25576:1;25573;25566:12;25591:118;25677:5;25670:13;25663:21;25656:5;25653:32;25643:2;;25699:1;25696;25689:12

Swarm Source

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