ETH Price: $2,275.86 (-4.54%)

Token

SLOTH INU (SLOTH INU)
 

Overview

Max Total Supply

10,000,000,000,000 SLOTH INU

Holders

126

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
277,002,460,376.873074923 SLOTH INU

Value
$0.00
0x5dC22b3E47Af21aDDaD8E0Ff0f78310477cB71aB
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:
SlothInu

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-25
*/

// File: contracts/sloth.sol


pragma solidity ^0.8.7;
contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
contract ERC20Ownable is Context {
    address private _owner;

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

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

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "ERC20Ownable: 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), "ERC20Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

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

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

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

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

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

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

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

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

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

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
contract SlothInu is IERC20, Context, ERC20Ownable {
    using SafeMath for uint256;
    address dead = 0x000000000000000000000000000000000000dEaD;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping (address => uint) private _setCoolDown;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    address[] private _excluded;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e13 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _maxTxAmount = _tTotal;
    uint256 private _tFeeTotal;
    string private constant _name = "SLOTH INU";
    string private constant _symbol = "SLOTH INU";
    uint8 private constant _decimals = 9;
    uint8 private _refTax = 2; // Fee for Reflection
    uint8 private _previousRefTax = _refTax;
    uint8 private _liqTax = 2; // Fee for Liquidity
    uint8 private _previousLiqTax = _liqTax;
    uint8 private _devTax = 4; // Fee to marketing/charity wallet
    uint8 private _previousDevTax = _devTax;
    IUniswapV2Router02 private pcsV2Router;
    address private pcsV2Pair;
    address payable private feeWallet;
    bool inSwapAndLiquify;
    bool private swapAndLiquifyEnabled = true;
    bool private coolDownEnabled = true;
    bool private _firstTrans = true;
    bool private _limitBuys = false;
    uint256 private numTokensSellToAddToLiquidity;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity);
    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    constructor() {
        _rOwned[_msgSender()] = _rTotal;
        feeWallet = payable(0x2C9810e38bCfAd71a7BBCDc1b9C115a155129590);
        numTokensSellToAddToLiquidity = _tTotal.mul(1).div(1000);
        //_isExcludedFromFee[_msgSender()] = true;
        _isExcludedFromFee[address(this)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    function name() public pure override returns (string memory) {
        return _name;
    }
    function symbol() public pure override returns (string memory) {
        return _symbol;
    }
    function decimals() public pure override returns (uint8) {
        return _decimals;
    }
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[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;
    }
    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        coolDownEnabled = onoff;
    }
    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount, , , , , ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }
    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) {
        require(tAmount <= _tTotal, "Amt must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount, , , , , ) = _getValues(tAmount);
            return rAmount;
        } else {
            (, uint256 rTransferAmount, , , , ) = _getValues(tAmount);
            return rTransferAmount;
        }
    }
    function tokenFromReflection(uint256 rAmount) public view returns (uint256) {
        require(rAmount <= _rTotal, "Amt must be less than tot refl");
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
    receive() external payable {}
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
    function _getValues(uint256 tAmount) private view returns (uint256,uint256,uint256,uint256,uint256,uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }
    function _getTValues(uint256 tAmount)private view returns (uint256,uint256,uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }
    function _getRValues(uint256 tAmount,uint256 tFee,uint256 tLiquidity,uint256 currentRate) private pure returns (uint256,uint256,uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_refTax).div(10**2);
    }
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liqTax + _devTax).div(10**2);
    }
    function removeAllFee() private {
        if (_refTax == 0 && _liqTax == 0 && _devTax == 0) return;

        _previousRefTax = _refTax;
        _previousLiqTax = _liqTax;
        _previousDevTax = _devTax;

        _refTax = 0;
        _liqTax = 0;
        _devTax = 0;
    }
    function restoreAllFee() private {
        _refTax = _previousRefTax;
        _liqTax = _previousLiqTax;
        _devTax = _previousDevTax;
    }
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    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 zero address");
        require(spender != address(0), "ERC20: approve to zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function _transfer(address from,address to,uint256 amount) private {
        require(from != address(0), "ERC20: transfer from zero address");
        require(to != address(0), "ERC20: transfer to zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (_limitBuys == true) {
            require(amount <= 100000000000 * 10**9);
        }
        if (from == pcsV2Pair && to != address(pcsV2Router) && ! _isExcludedFromFee[to] && coolDownEnabled) {
                require(amount <= _maxTxAmount);
                require(_setCoolDown[to] < block.timestamp);
                _setCoolDown[to] = block.timestamp + (30 seconds);
            }
        if(_firstTrans == true) {
            IUniswapV2Router02 _pcsV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            pcsV2Router = _pcsV2Router;
            pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).getPair(address(this), _pcsV2Router.WETH());
            _limitBuys = true;
            _firstTrans = false;
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        if (!inSwapAndLiquify && to == pcsV2Pair && swapAndLiquifyEnabled) {
            if (contractTokenBalance >= numTokensSellToAddToLiquidity) {
                swapAndLiquify(contractTokenBalance);
            }
        }
        bool takeFee = true;
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        _tokenTransfer(from, to, amount, takeFee);
    }
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 spentAmount = 0;
        uint256 totSpentAmount = 0;
        if (_devTax != 0) {
            spentAmount = contractTokenBalance.mul(50).div(100);
            swapTokensForETH(spentAmount);
            sendTax(address(this).balance);
            totSpentAmount = totSpentAmount + spentAmount;
        }
    }
    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = pcsV2Router.WETH();
        _approve(address(this), address(pcsV2Router), tokenAmount);
        pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp.add(300)
        );
    }
    function sendTax(uint256 amount) private {
        feeWallet.transfer(amount);
        block.timestamp.add(300);
    }
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(pcsV2Router), tokenAmount);
        pcsV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            dead,
            block.timestamp.add(300)
        );
    }
    function Initiate() external onlyOwner {
        _firstTrans = true;
    }
    function SwapEnable() external onlyOwner {
        swapAndLiquifyEnabled = true;
    }
    function SwapDisable() external onlyOwner {
        swapAndLiquifyEnabled = false;
    }
    function LimitBuysOn() external onlyOwner {
        _limitBuys = true;
    }
    function LimitBuysOff() external onlyOwner {
        _limitBuys = false;
    }
    function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private {
        if (!takeFee) removeAllFee();
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        if (!takeFee) restoreAllFee();
    }
    function _transferStandard(address sender,address recipient,uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferToExcluded(address sender,address recipient,uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferFromExcluded(address sender,address recipient,uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferBothExcluded(address sender,address recipient,uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _tokenTransferNoFee(address sender,address recipient,uint256 amount) private {
        _rOwned[sender] = _rOwned[sender].sub(amount);
        _rOwned[recipient] = _rOwned[recipient].add(amount);

        if (_isExcluded[sender]) {
            _tOwned[sender] = _tOwned[sender].sub(amount);
        }
        if (_isExcluded[recipient]) {
            _tOwned[recipient] = _tOwned[recipient].add(amount);
        }
        emit Transfer(sender, recipient, amount);
    }
}

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":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Initiate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LimitBuysOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LimitBuysOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapEnable","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","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":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b03191661dead1790556200003069021e19e0c9bab240000060001962000296565b6200003e906000196200027c565b60095569021e19e0c9bab2400000600a55600c80546501000000000064010000000064040000000060ff60201b196301000000620100006202020262ffffff19881681179190910460ff9081169290920263ffffffff19909716969096179095179081168217929092049093169190910261ffff60201b1990911617179055600e805463ffffffff60a81b19166201010160a81b179055348015620000e257600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060095433600090815260026020908152604090912091909155600e80546001600160a01b031916732c9810e38bcfad71a7bbcdc1b9c115a155129590179055620001a3906103e8906200018f9069021e19e0c9bab24000009060019062000b9362000226821b17901c565b6200023b60201b62000b9f1790919060201c565b600f55306000908152600660205260409020805460ff19166001179055620001c83390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69021e19e0c9bab24000006040516200021891815260200190565b60405180910390a3620002d9565b60006200023482846200025a565b9392505050565b6000620002348284600082620002555762000255620002c3565b500490565b6000816000190483118215151615620002775762000277620002ad565b500290565b600082821015620002915762000291620002ad565b500390565b600082620002a857620002a8620002c3565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b61209180620002e96000396000f3fe6080604052600436106101855760003560e01c806370a08231116100d157806395d89b411161008a578063b8578bfd11610064578063b8578bfd14610475578063d3dbc8611461048a578063dd62ed3e1461049f578063f2fde38b146104e557600080fd5b806395d89b4114610191578063a457c2d714610435578063a9059cbb1461045557600080fd5b806370a0823114610375578063715018a6146103955780637b7141e4146103aa57806388f82020146103bf5780638da5cb5b146103f85780638dd45fb21461042057600080fd5b8063395093511161013e578063437823ec11610118578063437823ec146102dc5780634549b039146102fc5780635342acb41461031c5780635932ead11461035557600080fd5b806339509351146102855780633bd5d173146102a55780633f97d3f4146102c757600080fd5b806306fdde0314610191578063095ea7b3146101d257806318160ddd1461020257806323b872dd146102295780632d83811914610249578063313ce5671461026957600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b506040805180820182526009815268534c4f544820494e5560b81b602082015290516101c99190611e0f565b60405180910390f35b3480156101de57600080fd5b506101f26101ed366004611d83565b610505565b60405190151581526020016101c9565b34801561020e57600080fd5b5069021e19e0c9bab24000005b6040519081526020016101c9565b34801561023557600080fd5b506101f2610244366004611d42565b61051c565b34801561025557600080fd5b5061021b610264366004611dca565b610585565b34801561027557600080fd5b50604051600981526020016101c9565b34801561029157600080fd5b506101f26102a0366004611d83565b6105fb565b3480156102b157600080fd5b506102c56102c0366004611dca565b610631565b005b3480156102d357600080fd5b506102c561071b565b3480156102e857600080fd5b506102c56102f7366004611ccf565b61075a565b34801561030857600080fd5b5061021b610317366004611de3565b6107a8565b34801561032857600080fd5b506101f2610337366004611ccf565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561036157600080fd5b506102c5610370366004611daf565b61083d565b34801561038157600080fd5b5061021b610390366004611ccf565b610885565b3480156103a157600080fd5b506102c56108e4565b3480156103b657600080fd5b506102c5610958565b3480156103cb57600080fd5b506101f26103da366004611ccf565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561040457600080fd5b506000546040516001600160a01b0390911681526020016101c9565b34801561042c57600080fd5b506102c5610991565b34801561044157600080fd5b506101f2610450366004611d83565b6109ca565b34801561046157600080fd5b506101f2610470366004611d83565b610a19565b34801561048157600080fd5b506102c5610a26565b34801561049657600080fd5b506102c5610a65565b3480156104ab57600080fd5b5061021b6104ba366004611d09565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156104f157600080fd5b506102c5610500366004611ccf565b610aa4565b6000610512338484610bab565b5060015b92915050565b6000610529848484610cb8565b61057b84336105768560405180606001604052806028815260200161200f602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919061118a565b610bab565b5060019392505050565b60006009548211156105de5760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c000060448201526064015b60405180910390fd5b60006105e86111b6565b90506105f48382610b9f565b9392505050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161051291859061057690866111d9565b3360008181526007602052604090205460ff16156106a65760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016105d5565b60006106b1836111e5565b505050506001600160a01b0384166000908152600260205260409020549192506106dd91905082611234565b6001600160a01b0383166000908152600260205260409020556009546107039082611234565b600955600b5461071390846111d9565b600b55505050565b6000546001600160a01b031633146107455760405162461bcd60e51b81526004016105d590611e64565b600e805460ff60c01b1916600160c01b179055565b6000546001600160a01b031633146107845760405162461bcd60e51b81526004016105d590611e64565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b600069021e19e0c9bab24000008311156108045760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c790000000060448201526064016105d5565b81610823576000610814846111e5565b50939550610516945050505050565b600061082e846111e5565b50929550610516945050505050565b6000546001600160a01b031633146108675760405162461bcd60e51b81526004016105d590611e64565b600e8054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b03811660009081526007602052604081205460ff16156108c257506001600160a01b031660009081526003602052604090205490565b6001600160a01b03821660009081526002602052604090205461051690610585565b6000546001600160a01b0316331461090e5760405162461bcd60e51b81526004016105d590611e64565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109825760405162461bcd60e51b81526004016105d590611e64565b600e805460ff60c01b19169055565b6000546001600160a01b031633146109bb5760405162461bcd60e51b81526004016105d590611e64565b600e805460ff60a81b19169055565b6000610512338461057685604051806060016040528060258152602001612037602591393360009081526004602090815260408083206001600160a01b038d168452909152902054919061118a565b6000610512338484610cb8565b6000546001600160a01b03163314610a505760405162461bcd60e51b81526004016105d590611e64565b600e805460ff60a81b1916600160a81b179055565b6000546001600160a01b03163314610a8f5760405162461bcd60e51b81526004016105d590611e64565b600e805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610ace5760405162461bcd60e51b81526004016105d590611e64565b6001600160a01b038116610b385760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016105d5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006105f48284611f79565b60006105f48284611f57565b6001600160a01b038316610c015760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f206164647265737360448201526064016105d5565b6001600160a01b038216610c575760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f2061646472657373000060448201526064016105d5565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d185760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b60648201526084016105d5565b6001600160a01b038216610d6e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f20616464726573730060448201526064016105d5565b60008111610dd05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105d5565b600e54600160c01b900460ff16151560011415610dfd5768056bc75e2d63100000811115610dfd57600080fd5b600d546001600160a01b038481169116148015610e2f5750600c546001600160a01b03838116600160301b9092041614155b8015610e5457506001600160a01b03821660009081526006602052604090205460ff16155b8015610e695750600e54600160b01b900460ff165b15610ec657600a54811115610e7d57600080fd5b6001600160a01b0382166000908152600560205260409020544211610ea157600080fd5b610eac42601e611f1a565b6001600160a01b0383166000908152600560205260409020555b600e54600160b81b900460ff161515600114156110cb57600c80546601000000000000600160d01b031916797a250d5630b4cf539739df2c5dacb4c659f2488d0000000000001790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a015591600480820192602092909190829003018186803b158015610f5d57600080fd5b505afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f959190611cec565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610fdd57600080fd5b505afa158015610ff1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110159190611cec565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561105b57600080fd5b505afa15801561106f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110939190611cec565b600d80546001600160a01b03929092166001600160a01b031990921691909117905550600e805461ffff60b81b1916600160c01b1790555b60006110d630610885565b600e54909150600160a01b900460ff161580156111005750600d546001600160a01b038481169116145b80156111155750600e54600160a81b900460ff165b1561112c57600f54811061112c5761112c81611240565b6001600160a01b03841660009081526006602052604090205460019060ff168061116e57506001600160a01b03841660009081526006602052604090205460ff165b15611177575060005b611183858585846112b4565b5050505050565b600081848411156111ae5760405162461bcd60e51b81526004016105d59190611e0f565b505050900390565b60008060006111c3611475565b90925090506111d28282610b9f565b9250505090565b60006105f48284611f1a565b60008060008060008060008060006111fc8a611615565b925092509250600080600061121a8d86866112156111b6565b611657565b919f909e50909c50959a5093985091965092945050505050565b60006105f48284611f98565b600e805460ff60a01b1916600160a01b179055600c546000908190640100000000900460ff16156112a257611281606461127b856032610b93565b90610b9f565b915061128c826116a7565b61129547611841565b61129f8282611f1a565b90505b5050600e805460ff60a01b1916905550565b806112c1576112c161188c565b6001600160a01b03841660009081526007602052604090205460ff16801561130257506001600160a01b03831660009081526007602052604090205460ff16155b1561131757611312848484611934565b611415565b6001600160a01b03841660009081526007602052604090205460ff1615801561135857506001600160a01b03831660009081526007602052604090205460ff165b1561136857611312848484611a5a565b6001600160a01b03841660009081526007602052604090205460ff161580156113aa57506001600160a01b03831660009081526007602052604090205460ff16155b156113ba57611312848484611b03565b6001600160a01b03841660009081526007602052604090205460ff1680156113fa57506001600160a01b03831660009081526007602052604090205460ff165b1561140a57611312848484611b47565b611415848484611b03565b8061146f57600c805464ff000000001962ff00ff198216610100830460ff908116918217630100000060ff199095169290921793909304831662010000021790811665010000000000909104909116640100000000021790555b50505050565b600954600090819069021e19e0c9bab2400000825b6008548110156115d6578260026000600884815481106114ac576114ac611fe0565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061151757508160036000600884815481106114f0576114f0611fe0565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156115345750506009549369021e19e0c9bab24000009350915050565b61157a600260006008848154811061154e5761154e611fe0565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611234565b92506115c2600360006008848154811061159657611596611fe0565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611234565b9150806115ce81611faf565b91505061148a565b506009546115ee9069021e19e0c9bab2400000610b9f565b82101561160c5750506009549269021e19e0c9bab240000092509050565b90939092509050565b60008060008061162485611bba565b9050600061163186611bd5565b90506000611649826116438986611234565b90611234565b979296509094509092505050565b60008080806116668886610b93565b905060006116748887610b93565b905060006116828888610b93565b90506000611694826116438686611234565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116dc576116dc611fe0565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561174a57600080fd5b505afa15801561175e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117829190611cec565b8160018151811061179557611795611fe0565b6001600160a01b039283166020918202929092010152600c546117c2913091600160301b90041684610bab565b600c54600160301b90046001600160a01b031663791ac94783600084306117eb4261012c6111d9565b6040518663ffffffff1660e01b815260040161180b959493929190611ea9565b600060405180830381600087803b15801561182557600080fd5b505af1158015611839573d6000803e3d6000fd5b505050505050565b600e546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561187b573d6000803e3d6000fd5b506118884261012c6111d9565b5050565b600c5460ff161580156118a85750600c5462010000900460ff16155b80156118bf5750600c54640100000000900460ff16155b156118c657565b600c805464ff00ff00ff196501000000000064010000000063010000006201000060ff8087166101000261ff0019881681179290920481169290920263ff0000001990911663ff00ff00199096169590951794909417908104909316021665ffff00ff00ff19909116179055565b600080600080600080611946876111e5565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506119789088611234565b6001600160a01b038a166000908152600360209081526040808320939093556002905220546119a79087611234565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546119d690866111d9565b6001600160a01b0389166000908152600260205260409020556119f881611c0d565b611a028483611c96565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611a4791815260200190565b60405180910390a3505050505050505050565b600080600080600080611a6c876111e5565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611a9e9087611234565b6001600160a01b03808b16600090815260026020908152604080832094909455918b16815260039091522054611ad490846111d9565b6001600160a01b0389166000908152600360209081526040808320939093556002905220546119d690866111d9565b600080600080600080611b15876111e5565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506119a79087611234565b600080600080600080611b59876111e5565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150611b8b9088611234565b6001600160a01b038a16600090815260036020908152604080832093909355600290522054611a9e9087611234565b600c546000906105169060649061127b90859060ff16610b93565b600c546000906105169060649061127b90611c039060ff640100000000820481169162010000900416611f32565b859060ff16610b93565b6000611c176111b6565b90506000611c258383610b93565b30600090815260026020526040902054909150611c4290826111d9565b3060009081526002602090815260408083209390935560079052205460ff1615611c915730600090815260036020526040902054611c8090846111d9565b306000908152600360205260409020555b505050565b600954611ca39083611234565b600955600b54611cb390826111d9565b600b555050565b80358015158114611cca57600080fd5b919050565b600060208284031215611ce157600080fd5b81356105f481611ff6565b600060208284031215611cfe57600080fd5b81516105f481611ff6565b60008060408385031215611d1c57600080fd5b8235611d2781611ff6565b91506020830135611d3781611ff6565b809150509250929050565b600080600060608486031215611d5757600080fd5b8335611d6281611ff6565b92506020840135611d7281611ff6565b929592945050506040919091013590565b60008060408385031215611d9657600080fd5b8235611da181611ff6565b946020939093013593505050565b600060208284031215611dc157600080fd5b6105f482611cba565b600060208284031215611ddc57600080fd5b5035919050565b60008060408385031215611df657600080fd5b82359150611e0660208401611cba565b90509250929050565b600060208083528351808285015260005b81811015611e3c57858101830151858201604001528201611e20565b81811115611e4e576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ef95784516001600160a01b031683529383019391830191600101611ed4565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611f2d57611f2d611fca565b500190565b600060ff821660ff84168060ff03821115611f4f57611f4f611fca565b019392505050565b600082611f7457634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611f9357611f93611fca565b500290565b600082821015611faa57611faa611fca565b500390565b6000600019821415611fc357611fc3611fca565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461200b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201179823ced9613859219662e4462e5842f947029ebfaf882cd08a3060d7d709864736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101855760003560e01c806370a08231116100d157806395d89b411161008a578063b8578bfd11610064578063b8578bfd14610475578063d3dbc8611461048a578063dd62ed3e1461049f578063f2fde38b146104e557600080fd5b806395d89b4114610191578063a457c2d714610435578063a9059cbb1461045557600080fd5b806370a0823114610375578063715018a6146103955780637b7141e4146103aa57806388f82020146103bf5780638da5cb5b146103f85780638dd45fb21461042057600080fd5b8063395093511161013e578063437823ec11610118578063437823ec146102dc5780634549b039146102fc5780635342acb41461031c5780635932ead11461035557600080fd5b806339509351146102855780633bd5d173146102a55780633f97d3f4146102c757600080fd5b806306fdde0314610191578063095ea7b3146101d257806318160ddd1461020257806323b872dd146102295780632d83811914610249578063313ce5671461026957600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b506040805180820182526009815268534c4f544820494e5560b81b602082015290516101c99190611e0f565b60405180910390f35b3480156101de57600080fd5b506101f26101ed366004611d83565b610505565b60405190151581526020016101c9565b34801561020e57600080fd5b5069021e19e0c9bab24000005b6040519081526020016101c9565b34801561023557600080fd5b506101f2610244366004611d42565b61051c565b34801561025557600080fd5b5061021b610264366004611dca565b610585565b34801561027557600080fd5b50604051600981526020016101c9565b34801561029157600080fd5b506101f26102a0366004611d83565b6105fb565b3480156102b157600080fd5b506102c56102c0366004611dca565b610631565b005b3480156102d357600080fd5b506102c561071b565b3480156102e857600080fd5b506102c56102f7366004611ccf565b61075a565b34801561030857600080fd5b5061021b610317366004611de3565b6107a8565b34801561032857600080fd5b506101f2610337366004611ccf565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561036157600080fd5b506102c5610370366004611daf565b61083d565b34801561038157600080fd5b5061021b610390366004611ccf565b610885565b3480156103a157600080fd5b506102c56108e4565b3480156103b657600080fd5b506102c5610958565b3480156103cb57600080fd5b506101f26103da366004611ccf565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561040457600080fd5b506000546040516001600160a01b0390911681526020016101c9565b34801561042c57600080fd5b506102c5610991565b34801561044157600080fd5b506101f2610450366004611d83565b6109ca565b34801561046157600080fd5b506101f2610470366004611d83565b610a19565b34801561048157600080fd5b506102c5610a26565b34801561049657600080fd5b506102c5610a65565b3480156104ab57600080fd5b5061021b6104ba366004611d09565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156104f157600080fd5b506102c5610500366004611ccf565b610aa4565b6000610512338484610bab565b5060015b92915050565b6000610529848484610cb8565b61057b84336105768560405180606001604052806028815260200161200f602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919061118a565b610bab565b5060019392505050565b60006009548211156105de5760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c000060448201526064015b60405180910390fd5b60006105e86111b6565b90506105f48382610b9f565b9392505050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161051291859061057690866111d9565b3360008181526007602052604090205460ff16156106a65760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016105d5565b60006106b1836111e5565b505050506001600160a01b0384166000908152600260205260409020549192506106dd91905082611234565b6001600160a01b0383166000908152600260205260409020556009546107039082611234565b600955600b5461071390846111d9565b600b55505050565b6000546001600160a01b031633146107455760405162461bcd60e51b81526004016105d590611e64565b600e805460ff60c01b1916600160c01b179055565b6000546001600160a01b031633146107845760405162461bcd60e51b81526004016105d590611e64565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b600069021e19e0c9bab24000008311156108045760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c790000000060448201526064016105d5565b81610823576000610814846111e5565b50939550610516945050505050565b600061082e846111e5565b50929550610516945050505050565b6000546001600160a01b031633146108675760405162461bcd60e51b81526004016105d590611e64565b600e8054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b03811660009081526007602052604081205460ff16156108c257506001600160a01b031660009081526003602052604090205490565b6001600160a01b03821660009081526002602052604090205461051690610585565b6000546001600160a01b0316331461090e5760405162461bcd60e51b81526004016105d590611e64565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109825760405162461bcd60e51b81526004016105d590611e64565b600e805460ff60c01b19169055565b6000546001600160a01b031633146109bb5760405162461bcd60e51b81526004016105d590611e64565b600e805460ff60a81b19169055565b6000610512338461057685604051806060016040528060258152602001612037602591393360009081526004602090815260408083206001600160a01b038d168452909152902054919061118a565b6000610512338484610cb8565b6000546001600160a01b03163314610a505760405162461bcd60e51b81526004016105d590611e64565b600e805460ff60a81b1916600160a81b179055565b6000546001600160a01b03163314610a8f5760405162461bcd60e51b81526004016105d590611e64565b600e805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610ace5760405162461bcd60e51b81526004016105d590611e64565b6001600160a01b038116610b385760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016105d5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006105f48284611f79565b60006105f48284611f57565b6001600160a01b038316610c015760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f206164647265737360448201526064016105d5565b6001600160a01b038216610c575760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f2061646472657373000060448201526064016105d5565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d185760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b60648201526084016105d5565b6001600160a01b038216610d6e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f20616464726573730060448201526064016105d5565b60008111610dd05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105d5565b600e54600160c01b900460ff16151560011415610dfd5768056bc75e2d63100000811115610dfd57600080fd5b600d546001600160a01b038481169116148015610e2f5750600c546001600160a01b03838116600160301b9092041614155b8015610e5457506001600160a01b03821660009081526006602052604090205460ff16155b8015610e695750600e54600160b01b900460ff165b15610ec657600a54811115610e7d57600080fd5b6001600160a01b0382166000908152600560205260409020544211610ea157600080fd5b610eac42601e611f1a565b6001600160a01b0383166000908152600560205260409020555b600e54600160b81b900460ff161515600114156110cb57600c80546601000000000000600160d01b031916797a250d5630b4cf539739df2c5dacb4c659f2488d0000000000001790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a015591600480820192602092909190829003018186803b158015610f5d57600080fd5b505afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f959190611cec565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610fdd57600080fd5b505afa158015610ff1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110159190611cec565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561105b57600080fd5b505afa15801561106f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110939190611cec565b600d80546001600160a01b03929092166001600160a01b031990921691909117905550600e805461ffff60b81b1916600160c01b1790555b60006110d630610885565b600e54909150600160a01b900460ff161580156111005750600d546001600160a01b038481169116145b80156111155750600e54600160a81b900460ff165b1561112c57600f54811061112c5761112c81611240565b6001600160a01b03841660009081526006602052604090205460019060ff168061116e57506001600160a01b03841660009081526006602052604090205460ff165b15611177575060005b611183858585846112b4565b5050505050565b600081848411156111ae5760405162461bcd60e51b81526004016105d59190611e0f565b505050900390565b60008060006111c3611475565b90925090506111d28282610b9f565b9250505090565b60006105f48284611f1a565b60008060008060008060008060006111fc8a611615565b925092509250600080600061121a8d86866112156111b6565b611657565b919f909e50909c50959a5093985091965092945050505050565b60006105f48284611f98565b600e805460ff60a01b1916600160a01b179055600c546000908190640100000000900460ff16156112a257611281606461127b856032610b93565b90610b9f565b915061128c826116a7565b61129547611841565b61129f8282611f1a565b90505b5050600e805460ff60a01b1916905550565b806112c1576112c161188c565b6001600160a01b03841660009081526007602052604090205460ff16801561130257506001600160a01b03831660009081526007602052604090205460ff16155b1561131757611312848484611934565b611415565b6001600160a01b03841660009081526007602052604090205460ff1615801561135857506001600160a01b03831660009081526007602052604090205460ff165b1561136857611312848484611a5a565b6001600160a01b03841660009081526007602052604090205460ff161580156113aa57506001600160a01b03831660009081526007602052604090205460ff16155b156113ba57611312848484611b03565b6001600160a01b03841660009081526007602052604090205460ff1680156113fa57506001600160a01b03831660009081526007602052604090205460ff165b1561140a57611312848484611b47565b611415848484611b03565b8061146f57600c805464ff000000001962ff00ff198216610100830460ff908116918217630100000060ff199095169290921793909304831662010000021790811665010000000000909104909116640100000000021790555b50505050565b600954600090819069021e19e0c9bab2400000825b6008548110156115d6578260026000600884815481106114ac576114ac611fe0565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061151757508160036000600884815481106114f0576114f0611fe0565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156115345750506009549369021e19e0c9bab24000009350915050565b61157a600260006008848154811061154e5761154e611fe0565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611234565b92506115c2600360006008848154811061159657611596611fe0565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611234565b9150806115ce81611faf565b91505061148a565b506009546115ee9069021e19e0c9bab2400000610b9f565b82101561160c5750506009549269021e19e0c9bab240000092509050565b90939092509050565b60008060008061162485611bba565b9050600061163186611bd5565b90506000611649826116438986611234565b90611234565b979296509094509092505050565b60008080806116668886610b93565b905060006116748887610b93565b905060006116828888610b93565b90506000611694826116438686611234565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116dc576116dc611fe0565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561174a57600080fd5b505afa15801561175e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117829190611cec565b8160018151811061179557611795611fe0565b6001600160a01b039283166020918202929092010152600c546117c2913091600160301b90041684610bab565b600c54600160301b90046001600160a01b031663791ac94783600084306117eb4261012c6111d9565b6040518663ffffffff1660e01b815260040161180b959493929190611ea9565b600060405180830381600087803b15801561182557600080fd5b505af1158015611839573d6000803e3d6000fd5b505050505050565b600e546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561187b573d6000803e3d6000fd5b506118884261012c6111d9565b5050565b600c5460ff161580156118a85750600c5462010000900460ff16155b80156118bf5750600c54640100000000900460ff16155b156118c657565b600c805464ff00ff00ff196501000000000064010000000063010000006201000060ff8087166101000261ff0019881681179290920481169290920263ff0000001990911663ff00ff00199096169590951794909417908104909316021665ffff00ff00ff19909116179055565b600080600080600080611946876111e5565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506119789088611234565b6001600160a01b038a166000908152600360209081526040808320939093556002905220546119a79087611234565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546119d690866111d9565b6001600160a01b0389166000908152600260205260409020556119f881611c0d565b611a028483611c96565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611a4791815260200190565b60405180910390a3505050505050505050565b600080600080600080611a6c876111e5565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611a9e9087611234565b6001600160a01b03808b16600090815260026020908152604080832094909455918b16815260039091522054611ad490846111d9565b6001600160a01b0389166000908152600360209081526040808320939093556002905220546119d690866111d9565b600080600080600080611b15876111e5565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506119a79087611234565b600080600080600080611b59876111e5565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150611b8b9088611234565b6001600160a01b038a16600090815260036020908152604080832093909355600290522054611a9e9087611234565b600c546000906105169060649061127b90859060ff16610b93565b600c546000906105169060649061127b90611c039060ff640100000000820481169162010000900416611f32565b859060ff16610b93565b6000611c176111b6565b90506000611c258383610b93565b30600090815260026020526040902054909150611c4290826111d9565b3060009081526002602090815260408083209390935560079052205460ff1615611c915730600090815260036020526040902054611c8090846111d9565b306000908152600360205260409020555b505050565b600954611ca39083611234565b600955600b54611cb390826111d9565b600b555050565b80358015158114611cca57600080fd5b919050565b600060208284031215611ce157600080fd5b81356105f481611ff6565b600060208284031215611cfe57600080fd5b81516105f481611ff6565b60008060408385031215611d1c57600080fd5b8235611d2781611ff6565b91506020830135611d3781611ff6565b809150509250929050565b600080600060608486031215611d5757600080fd5b8335611d6281611ff6565b92506020840135611d7281611ff6565b929592945050506040919091013590565b60008060408385031215611d9657600080fd5b8235611da181611ff6565b946020939093013593505050565b600060208284031215611dc157600080fd5b6105f482611cba565b600060208284031215611ddc57600080fd5b5035919050565b60008060408385031215611df657600080fd5b82359150611e0660208401611cba565b90509250929050565b600060208083528351808285015260005b81811015611e3c57858101830151858201604001528201611e20565b81811115611e4e576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ef95784516001600160a01b031683529383019391830191600101611ed4565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611f2d57611f2d611fca565b500190565b600060ff821660ff84168060ff03821115611f4f57611f4f611fca565b019392505050565b600082611f7457634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611f9357611f93611fca565b500290565b600082821015611faa57611faa611fca565b500390565b6000600019821415611fc357611fc3611fca565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461200b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201179823ced9613859219662e4462e5842f947029ebfaf882cd08a3060d7d709864736f6c63430008070033

Deployed Bytecode Sourcemap

12883:16747:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15162:92;;;;;;;;;;-1:-1:-1;15241:5:0;;;;;;;;;;;-1:-1:-1;;;15241:5:0;;;;15162:92;;;;15241:5;15162:92;:::i;:::-;;;;;;;;16087:161;;;;;;;;;;-1:-1:-1;16087:161:0;;;;;:::i;:::-;;:::i;:::-;;;3166:14:1;;3159:22;3141:41;;3129:2;3114:18;16087:161:0;3001:187:1;15460:95:0;;;;;;;;;;-1:-1:-1;13492:12:0;15460:95;;;7780:25:1;;;7768:2;7753:18;15460:95:0;7634:177:1;16254:329:0;;;;;;;;;;-1:-1:-1;16254:329:0;;;;;:::i;:::-;;:::i;18213:241::-;;;;;;;;;;-1:-1:-1;18213:241:0;;;;;:::i;:::-;;:::i;15362:92::-;;;;;;;;;;-1:-1:-1;15362:92:0;;13782:1;8943:36:1;;8931:2;8916:18;15362:92:0;8801:184:1;16589:218:0;;;;;;;;;;-1:-1:-1;16589:218:0;;;;;:::i;:::-;;:::i;17375:382::-;;;;;;;;;;-1:-1:-1;17375:382:0;;;;;:::i;:::-;;:::i;:::-;;25529:78;;;;;;;;;;;;;:::i;21645:111::-;;;;;;;;;;-1:-1:-1;21645:111:0;;;;;:::i;:::-;;:::i;17763:444::-;;;;;;;;;;-1:-1:-1;17763:444:0;;;;;:::i;:::-;;:::i;21762:124::-;;;;;;;;;;-1:-1:-1;21762:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;21851:27:0;21827:4;21851:27;;;:18;:27;;;;;;;;;21762:124;17266:103;;;;;;;;;;-1:-1:-1;17266:103:0;;;;;:::i;:::-;;:::i;15561:198::-;;;;;;;;;;-1:-1:-1;15561:198:0;;;;;:::i;:::-;;:::i;738:148::-;;;;;;;;;;;;;:::i;25613:80::-;;;;;;;;;;;;;:::i;17138:120::-;;;;;;;;;;-1:-1:-1;17138:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;17230:20:0;17206:4;17230:20;;;:11;:20;;;;;;;;;17138:120;510:87;;;;;;;;;;-1:-1:-1;556:7:0;583:6;510:87;;-1:-1:-1;;;;;583:6:0;;;2630:51:1;;2618:2;2603:18;510:87:0;2484:203:1;25433:90:0;;;;;;;;;;;;;:::i;16813:319::-;;;;;;;;;;-1:-1:-1;16813:319:0;;;;;:::i;:::-;;:::i;15765:167::-;;;;;;;;;;-1:-1:-1;15765:167:0;;;;;:::i;:::-;;:::i;25339:88::-;;;;;;;;;;;;;:::i;25257:76::-;;;;;;;;;;;;;:::i;15938:143::-;;;;;;;;;;-1:-1:-1;15938:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;16046:18:0;;;16019:7;16046:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15938:143;894:249;;;;;;;;;;-1:-1:-1;894:249:0;;;;;:::i;:::-;;:::i;16087:161::-;16162:4;16179:39;163:10;16202:7;16211:6;16179:8;:39::i;:::-;-1:-1:-1;16236:4:0;16087:161;;;;;:::o;16254:329::-;16350:4;16367:36;16377:6;16385:9;16396:6;16367:9;:36::i;:::-;16414:139;16423:6;163:10;16453:89;16491:6;16453:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16453:19:0;;;;;;:11;:19;;;;;;;;163:10;16453:33;;;;;;;;;;:37;:89::i;:::-;16414:8;:139::i;:::-;-1:-1:-1;16571:4:0;16254:329;;;;;:::o;18213:241::-;18280:7;18319;;18308;:18;;18300:61;;;;-1:-1:-1;;;18300:61:0;;5475:2:1;18300:61:0;;;5457:21:1;5514:2;5494:18;;;5487:30;5553:32;5533:18;;;5526:60;5603:18;;18300:61:0;;;;;;;;;18372:19;18394:10;:8;:10::i;:::-;18372:32;-1:-1:-1;18422:24:0;:7;18372:32;18422:11;:24::i;:::-;18415:31;18213:241;-1:-1:-1;;;18213:241:0:o;16589:218::-;163:10;16677:4;16726:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16726:34:0;;;;;;;;;;16677:4;;16694:83;;16717:7;;16726:50;;16765:10;16726:38;:50::i;17375:382::-;163:10;17427:14;17476:19;;;:11;:19;;;;;;;;17475:20;17467:77;;;;-1:-1:-1;;;17467:77:0;;7062:2:1;17467:77:0;;;7044:21:1;7101:2;7081:18;;;7074:30;7140:34;7120:18;;;7113:62;-1:-1:-1;;;7191:18:1;;;7184:42;7243:19;;17467:77:0;6860:408:1;17467:77:0;17556:15;17585:19;17596:7;17585:10;:19::i;:::-;-1:-1:-1;;;;;;;;;17633:15:0;;;;;;:7;:15;;;;;;17555:49;;-1:-1:-1;17633:28:0;;:15;-1:-1:-1;17555:49:0;17633:19;:28::i;:::-;-1:-1:-1;;;;;17615:15:0;;;;;;:7;:15;;;;;:46;17682:7;;:20;;17694:7;17682:11;:20::i;:::-;17672:7;:30;17726:10;;:23;;17741:7;17726:14;:23::i;:::-;17713:10;:36;-1:-1:-1;;;17375:382:0:o;25529:78::-;556:7;583:6;-1:-1:-1;;;;;583:6:0;163:10;645:23;637:73;;;;-1:-1:-1;;;637:73:0;;;;;;;:::i;:::-;25582:10:::1;:17:::0;;-1:-1:-1;;;;25582:17:0::1;-1:-1:-1::0;;;25582:17:0::1;::::0;;25529:78::o;21645:111::-;556:7;583:6;-1:-1:-1;;;;;583:6:0;163:10;645:23;637:73;;;;-1:-1:-1;;;637:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21714:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;21714:34:0::1;21744:4;21714:34;::::0;;21645:111::o;17763:444::-;17854:7;13492:12;17882:7;:18;;17874:59;;;;-1:-1:-1;;;17874:59:0;;4356:2:1;17874:59:0;;;4338:21:1;4395:2;4375:18;;;4368:30;4434;4414:18;;;4407:58;4482:18;;17874:59:0;4154:352:1;17874:59:0;17949:17;17944:256;;17984:15;18013:19;18024:7;18013:10;:19::i;:::-;-1:-1:-1;17983:49:0;;-1:-1:-1;18047:14:0;;-1:-1:-1;;;;;18047:14:0;17944:256;18097:23;18132:19;18143:7;18132:10;:19::i;:::-;-1:-1:-1;18094:57:0;;-1:-1:-1;18166:22:0;;-1:-1:-1;;;;;18166:22:0;17266:103;556:7;583:6;-1:-1:-1;;;;;583:6:0;163:10;645:23;637:73;;;;-1:-1:-1;;;637:73:0;;;;;;;:::i;:::-;17338:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;17338:23:0::1;-1:-1:-1::0;;;;17338:23:0;;::::1;::::0;;;::::1;::::0;;17266:103::o;15561:198::-;-1:-1:-1;;;;;15651:20:0;;15627:7;15651:20;;;:11;:20;;;;;;;;15647:49;;;-1:-1:-1;;;;;;15680:16:0;;;;;:7;:16;;;;;;;15561:198::o;15647:49::-;-1:-1:-1;;;;;15734:16:0;;;;;;:7;:16;;;;;;15714:37;;:19;:37::i;738:148::-;556:7;583:6;-1:-1:-1;;;;;583:6:0;163:10;645:23;637:73;;;;-1:-1:-1;;;637:73:0;;;;;;;:::i;:::-;845:1:::1;829:6:::0;;808:40:::1;::::0;-1:-1:-1;;;;;829:6:0;;::::1;::::0;808:40:::1;::::0;845:1;;808:40:::1;876:1;859:19:::0;;-1:-1:-1;;;;;;859:19:0::1;::::0;;738:148::o;25613:80::-;556:7;583:6;-1:-1:-1;;;;;583:6:0;163:10;645:23;637:73;;;;-1:-1:-1;;;637:73:0;;;;;;;:::i;:::-;25667:10:::1;:18:::0;;-1:-1:-1;;;;25667:18:0::1;::::0;;25613:80::o;25433:90::-;556:7;583:6;-1:-1:-1;;;;;583:6:0;163:10;645:23;637:73;;;;-1:-1:-1;;;637:73:0;;;;;;;:::i;:::-;25486:21:::1;:29:::0;;-1:-1:-1;;;;25486:29:0::1;::::0;;25433:90::o;16813:319::-;16906:4;16923:179;163:10;16973:7;16995:96;17034:15;16995:96;;;;;;;;;;;;;;;;;163:10;16995:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16995:34:0;;;;;;;;;;;;:38;:96::i;15765:167::-;15843:4;15860:42;163:10;15884:9;15895:6;15860:9;:42::i;25339:88::-;556:7;583:6;-1:-1:-1;;;;;583:6:0;163:10;645:23;637:73;;;;-1:-1:-1;;;637:73:0;;;;;;;:::i;:::-;25391:21:::1;:28:::0;;-1:-1:-1;;;;25391:28:0::1;-1:-1:-1::0;;;25391:28:0::1;::::0;;25339:88::o;25257:76::-;556:7;583:6;-1:-1:-1;;;;;583:6:0;163:10;645:23;637:73;;;;-1:-1:-1;;;637:73:0;;;;;;;:::i;:::-;25307:11:::1;:18:::0;;-1:-1:-1;;;;25307:18:0::1;-1:-1:-1::0;;;25307:18:0::1;::::0;;25257:76::o;894:249::-;556:7;583:6;-1:-1:-1;;;;;583:6:0;163:10;645:23;637:73;;;;-1:-1:-1;;;637:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;983:22:0;::::1;975:78;;;::::0;-1:-1:-1;;;975:78:0;;5834:2:1;975:78:0::1;::::0;::::1;5816:21:1::0;5873:2;5853:18;;;5846:30;5912:34;5892:18;;;5885:62;-1:-1:-1;;;5963:18:1;;;5956:41;6014:19;;975:78:0::1;5632:407:1::0;975:78:0::1;1090:6;::::0;;1069:38:::1;::::0;-1:-1:-1;;;;;1069:38:0;;::::1;::::0;1090:6;::::1;::::0;1069:38:::1;::::0;::::1;1118:6;:17:::0;;-1:-1:-1;;;;;;1118:17:0::1;-1:-1:-1::0;;;;;1118:17:0;;;::::1;::::0;;;::::1;::::0;;894:249::o;2874:98::-;2932:7;2959:5;2963:1;2959;:5;:::i;2978:98::-;3036:7;3063:5;3067:1;3063;:5;:::i;21892:325::-;-1:-1:-1;;;;;21983:19:0;;21975:64;;;;-1:-1:-1;;;21975:64:0;;7475:2:1;21975:64:0;;;7457:21:1;;;7494:18;;;7487:30;7553:34;7533:18;;;7526:62;7605:18;;21975:64:0;7273:356:1;21975:64:0;-1:-1:-1;;;;;22058:21:0;;22050:64;;;;-1:-1:-1;;;22050:64:0;;3997:2:1;22050:64:0;;;3979:21:1;4036:2;4016:18;;;4009:30;4075:32;4055:18;;;4048:60;4125:18;;22050:64:0;3795:354:1;22050:64:0;-1:-1:-1;;;;;22125:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22177:32;;7780:25:1;;;22177:32:0;;7753:18:1;22177:32:0;;;;;;;21892:325;;;:::o;22223:1567::-;-1:-1:-1;;;;;22309:18:0;;22301:64;;;;-1:-1:-1;;;22301:64:0;;4713:2:1;22301:64:0;;;4695:21:1;4752:2;4732:18;;;4725:30;4791:34;4771:18;;;4764:62;-1:-1:-1;;;4842:18:1;;;4835:31;4883:19;;22301:64:0;4511:397:1;22301:64:0;-1:-1:-1;;;;;22384:16:0;;22376:60;;;;-1:-1:-1;;;22376:60:0;;5115:2:1;22376:60:0;;;5097:21:1;5154:2;5134:18;;;5127:30;5193:33;5173:18;;;5166:61;5244:18;;22376:60:0;4913:355:1;22376:60:0;22464:1;22455:6;:10;22447:64;;;;-1:-1:-1;;;22447:64:0;;6652:2:1;22447:64:0;;;6634:21:1;6691:2;6671:18;;;6664:30;6730:34;6710:18;;;6703:62;-1:-1:-1;;;6781:18:1;;;6774:39;6830:19;;22447:64:0;6450:405:1;22447:64:0;22526:10;;-1:-1:-1;;;22526:10:0;;;;:18;;22540:4;22526:18;22522:90;;;22579:20;22569:6;:30;;22561:39;;;;;;22634:9;;-1:-1:-1;;;;;22626:17:0;;;22634:9;;22626:17;:47;;;;-1:-1:-1;22661:11:0;;-1:-1:-1;;;;;22647:26:0;;;-1:-1:-1;;;22661:11:0;;;;22647:26;;22626:47;:75;;;;-1:-1:-1;;;;;;22679:22:0;;;;;;:18;:22;;;;;;;;22677:24;22626:75;:94;;;;-1:-1:-1;22705:15:0;;-1:-1:-1;;;22705:15:0;;;;22626:94;22622:296;;;22759:12;;22749:6;:22;;22741:31;;;;;;-1:-1:-1;;;;;22799:16:0;;;;;;:12;:16;;;;;;22818:15;-1:-1:-1;22791:43:0;;;;;;22872:30;:15;22891:10;22872:30;:::i;:::-;-1:-1:-1;;;;;22853:16:0;;;;;;:12;:16;;;;;:49;22622:296;22931:11;;-1:-1:-1;;;22931:11:0;;;;:19;;22946:4;22931:19;22928:366;;;23078:11;:26;;-1:-1:-1;;;;;;23078:26:0;;;;;23149:22;;;-1:-1:-1;;;23149:22:0;;;;23020:42;;;;23149:20;;:22;;;;;;;;;;;;;;;23020:42;23149:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23131:49:0;;23189:4;23196:12;-1:-1:-1;;;;;23196:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23131:85;;-1:-1:-1;;;;;;23131:85:0;;;;;;;-1:-1:-1;;;;;2922:15:1;;;23131:85:0;;;2904:34:1;2974:15;;2954:18;;;2947:43;2839:18;;23131:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23119:9;:97;;-1:-1:-1;;;;;23119:97:0;;;;-1:-1:-1;;;;;;23119:97:0;;;;;;;;;-1:-1:-1;23231:10:0;:17;;-1:-1:-1;;;;23263:19:0;-1:-1:-1;;;23263:19:0;;;22928:366;23304:28;23335:24;23353:4;23335:9;:24::i;:::-;23375:16;;23304:55;;-1:-1:-1;;;;23375:16:0;;;;23374:17;:36;;;;-1:-1:-1;23401:9:0;;-1:-1:-1;;;;;23395:15:0;;;23401:9;;23395:15;23374:36;:61;;;;-1:-1:-1;23414:21:0;;-1:-1:-1;;;23414:21:0;;;;23374:61;23370:223;;;23480:29;;23456:20;:53;23452:130;;23530:36;23545:20;23530:14;:36::i;:::-;-1:-1:-1;;;;;23637:24:0;;23603:12;23637:24;;;:18;:24;;;;;;23618:4;;23637:24;;;:50;;-1:-1:-1;;;;;;23665:22:0;;;;;;:18;:22;;;;;;;;23637:50;23633:98;;;-1:-1:-1;23714:5:0;23633:98;23741:41;23756:4;23762:2;23766:6;23774:7;23741:14;:41::i;:::-;22290:1500;;22223:1567;;;:::o;3186:206::-;3272:7;3333:12;3325:6;;;;3317:29;;;;-1:-1:-1;;;3317:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3368:5:0;;;3186:206::o;19831:164::-;19873:7;19894:15;19911;19930:19;:17;:19::i;:::-;19893:56;;-1:-1:-1;19893:56:0;-1:-1:-1;19967:20:0;19893:56;;19967:11;:20::i;:::-;19960:27;;;;19831:164;:::o;2666:98::-;2724:7;2751:5;2755:1;2751;:5;:::i;18648:414::-;18707:7;18715;18723;18731;18739;18747;18768:23;18793:12;18807:18;18829:20;18841:7;18829:11;:20::i;:::-;18767:82;;;;;;18861:15;18878:23;18903:12;18919:50;18931:7;18940:4;18946:10;18958;:8;:10::i;:::-;18919:11;:50::i;:::-;18860:109;;;;-1:-1:-1;18860:109:0;;-1:-1:-1;19020:15:0;;-1:-1:-1;19037:4:0;;-1:-1:-1;19043:10:0;;-1:-1:-1;18648:414:0;;-1:-1:-1;;;;;18648:414:0:o;2770:98::-;2828:7;2855:5;2859:1;2855;:5;:::i;23796:408::-;14703:16;:23;;-1:-1:-1;;;;14703:23:0;-1:-1:-1;;;14703:23:0;;;23956:7:::1;::::0;14703:23;;;;23956:7;;::::1;14703:23:::0;23956:7:::1;:12:::0;23952:245:::1;;23999:37;24032:3;23999:28;:20:::0;24024:2:::1;23999:24;:28::i;:::-;:32:::0;::::1;:37::i;:::-;23985:51;;24051:29;24068:11;24051:16;:29::i;:::-;24095:30;24103:21;24095:7;:30::i;:::-;24157:28;24174:11:::0;24157:14;:28:::1;:::i;:::-;24140:45;;23952:245;-1:-1:-1::0;;14749:16:0;:24;;-1:-1:-1;;;;14749:24:0;;;-1:-1:-1;23796:408:0:o;25699:788::-;25809:7;25804:28;;25818:14;:12;:14::i;:::-;-1:-1:-1;;;;;25847:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;25871:22:0;;;;;;:11;:22;;;;;;;;25870:23;25847:46;25843:597;;;25910:48;25932:6;25940:9;25951:6;25910:21;:48::i;:::-;25843:597;;;-1:-1:-1;;;;;25981:19:0;;;;;;:11;:19;;;;;;;;25980:20;:46;;;;-1:-1:-1;;;;;;26004:22:0;;;;;;:11;:22;;;;;;;;25980:46;25976:464;;;26043:46;26063:6;26071:9;26082:6;26043:19;:46::i;25976:464::-;-1:-1:-1;;;;;26112:19:0;;;;;;:11;:19;;;;;;;;26111:20;:47;;;;-1:-1:-1;;;;;;26136:22:0;;;;;;:11;:22;;;;;;;;26135:23;26111:47;26107:333;;;26175:44;26193:6;26201:9;26212:6;26175:17;:44::i;26107:333::-;-1:-1:-1;;;;;26241:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;26264:22:0;;;;;;:11;:22;;;;;;;;26241:45;26237:203;;;26303:48;26325:6;26333:9;26344:6;26303:21;:48::i;26237:203::-;26384:44;26402:6;26410:9;26421:6;26384:17;:44::i;:::-;26455:7;26450:29;;21544:15;;;-1:-1:-1;;;;21570:25:0;;21544:15;;;;;;;21570:25;;;21580:15;-1:-1:-1;;21534:25:0;;;;;;;21580:15;;;;;;21570:25;;;21606;;;21616:15;;;;;;;21606:25;;;;;26464:15;25699:788;;;;:::o;20001:556::-;20099:7;;20052;;;;13492:12;20052:7;20153:289;20177:9;:16;20173:20;;20153:289;;;20243:7;20219;:21;20227:9;20237:1;20227:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20227:12:0;20219:21;;;;;;;;;;;;;:31;;:66;;;20278:7;20254;:21;20262:9;20272:1;20262:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20262:12:0;20254:21;;;;;;;;;;;;;:31;20219:66;20215:97;;;-1:-1:-1;;20295:7:0;;;13492:12;;-1:-1:-1;20001:556:0;-1:-1:-1;;20001:556:0:o;20215:97::-;20337:34;20349:7;:21;20357:9;20367:1;20357:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20357:12:0;20349:21;;;;;;;;;;;;;20337:7;;:11;:34::i;:::-;20327:44;;20396:34;20408:7;:21;20416:9;20426:1;20416:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20416:12:0;20408:21;;;;;;;;;;;;;20396:7;;:11;:34::i;:::-;20386:44;-1:-1:-1;20195:3:0;;;;:::i;:::-;;;;20153:289;;;-1:-1:-1;20466:7:0;;:20;;13492:12;20466:11;:20::i;:::-;20456:7;:30;20452:61;;;-1:-1:-1;;20496:7:0;;;13492:12;;-1:-1:-1;20001:556:0;-1:-1:-1;20001:556:0:o;20452:61::-;20532:7;;20541;;-1:-1:-1;20001:556:0;-1:-1:-1;20001:556:0:o;19068:327::-;19127:7;19135;19143;19163:12;19178:24;19194:7;19178:15;:24::i;:::-;19163:39;;19213:18;19234:30;19256:7;19234:21;:30::i;:::-;19213:51;-1:-1:-1;19275:23:0;19301:33;19213:51;19301:17;:7;19313:4;19301:11;:17::i;:::-;:21;;:33::i;:::-;19275:59;19370:4;;-1:-1:-1;19376:10:0;;-1:-1:-1;19068:327:0;;-1:-1:-1;;;19068:327:0:o;19401:424::-;19513:7;;;;19567:24;:7;19579:11;19567;:24::i;:::-;19549:42;-1:-1:-1;19602:12:0;19617:21;:4;19626:11;19617:8;:21::i;:::-;19602:36;-1:-1:-1;19649:18:0;19670:27;:10;19685:11;19670:14;:27::i;:::-;19649:48;-1:-1:-1;19708:23:0;19734:33;19649:48;19734:17;:7;19746:4;19734:11;:17::i;:33::-;19786:7;;;;-1:-1:-1;19812:4:0;;-1:-1:-1;19401:424:0;;-1:-1:-1;;;;;;;19401:424:0:o;24210:496::-;24300:16;;;24314:1;24300:16;;;;;;;;24276:21;;24300:16;;;;;;;;;;-1:-1:-1;24300:16:0;24276:40;;24345:4;24327;24332:1;24327:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;24327:23:0;;;-1:-1:-1;;;;;24327:23:0;;;;;24371:11;;;;;;;;;-1:-1:-1;;;;;24371:11:0;-1:-1:-1;;;;;24371:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24361:4;24366:1;24361:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24361:28:0;;;:7;;;;;;;;;:28;24432:11;;24400:58;;24417:4;;-1:-1:-1;;;24432:11:0;;;24446;24400:8;:58::i;:::-;24469:11;;-1:-1:-1;;;24469:11:0;;-1:-1:-1;;;;;24469:11:0;:62;24546:11;24572:1;24616:4;24643;24663:24;:15;24683:3;24663:19;:24::i;:::-;24469:229;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24265:441;24210:496;:::o;24712:121::-;24764:9;;:26;;-1:-1:-1;;;;;24764:9:0;;;;:26;;;;;24783:6;;24764:9;:26;:9;:26;24783:6;24764:9;:26;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24801:24:0;:15;24821:3;24801:19;:24::i;:::-;;24712:121;:::o;21199:285::-;21246:7;;;;:12;:28;;;;-1:-1:-1;21262:7:0;;;;;;;:12;21246:28;:44;;;;-1:-1:-1;21278:7:0;;;;;;;:12;21246:44;21242:57;;;21199:285::o;21242:57::-;21329:7;;;-1:-1:-1;;21383:25:0;21401:7;21347:25;21365:7;21329;;;;;21311:25;-1:-1:-1;;21311:25:0;;;;21365:7;;;;;;21347:25;;;;-1:-1:-1;;21347:25:0;;;-1:-1:-1;;21347:25:0;;;;;;;;;;;21401:7;;;;;;21383:25;21465:11;-1:-1:-1;;21465:11:0;;;;;;21199:285::o;27756:650::-;27871:15;27901:23;27939:12;27966:23;28004:12;28031:18;28063:19;28074:7;28063:10;:19::i;:::-;-1:-1:-1;;;;;28111:15:0;;;;;;:7;:15;;;;;;27856:226;;-1:-1:-1;27856:226:0;;-1:-1:-1;27856:226:0;;-1:-1:-1;27856:226:0;-1:-1:-1;27856:226:0;-1:-1:-1;27856:226:0;-1:-1:-1;28111:28:0;;28131:7;28111:19;:28::i;:::-;-1:-1:-1;;;;;28093:15:0;;;;;;:7;:15;;;;;;;;:46;;;;28168:7;:15;;;;:28;;28188:7;28168:19;:28::i;:::-;-1:-1:-1;;;;;28150:15:0;;;;;;;:7;:15;;;;;;:46;;;;28228:18;;;;;;;:39;;28251:15;28228:22;:39::i;:::-;-1:-1:-1;;;;;28207:18:0;;;;;;:7;:18;;;;;:60;28278:26;28293:10;28278:14;:26::i;:::-;28315:23;28327:4;28333;28315:11;:23::i;:::-;28371:9;-1:-1:-1;;;;;28354:44:0;28363:6;-1:-1:-1;;;;;28354:44:0;;28382:15;28354:44;;;;7780:25:1;;7768:2;7753:18;;7634:177;28354:44:0;;;;;;;;27845:561;;;;;;27756:650;;;:::o;27088:662::-;27201:15;27231:23;27269:12;27296:23;27334:12;27361:18;27393:19;27404:7;27393:10;:19::i;:::-;-1:-1:-1;;;;;27441:15:0;;;;;;:7;:15;;;;;;27186:226;;-1:-1:-1;27186:226:0;;-1:-1:-1;27186:226:0;;-1:-1:-1;27186:226:0;-1:-1:-1;27186:226:0;-1:-1:-1;27186:226:0;-1:-1:-1;27441:28:0;;27186:226;27441:19;:28::i;:::-;-1:-1:-1;;;;;27423:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;27501:18;;;;;:7;:18;;;;;:39;;27524:15;27501:22;:39::i;:::-;-1:-1:-1;;;;;27480:18:0;;;;;;:7;:18;;;;;;;;:60;;;;27572:7;:18;;;;:39;;27595:15;27572:22;:39::i;26493:589::-;26604:15;26634:23;26672:12;26699:23;26737:12;26764:18;26796:19;26807:7;26796:10;:19::i;:::-;-1:-1:-1;;;;;26844:15:0;;;;;;:7;:15;;;;;;26589:226;;-1:-1:-1;26589:226:0;;-1:-1:-1;26589:226:0;;-1:-1:-1;26589:226:0;-1:-1:-1;26589:226:0;-1:-1:-1;26589:226:0;-1:-1:-1;26844:28:0;;26589:226;26844:19;:28::i;28412:721::-;28527:15;28557:23;28595:12;28622:23;28660:12;28687:18;28719:19;28730:7;28719:10;:19::i;:::-;-1:-1:-1;;;;;28767:15:0;;;;;;:7;:15;;;;;;28512:226;;-1:-1:-1;28512:226:0;;-1:-1:-1;28512:226:0;;-1:-1:-1;28512:226:0;-1:-1:-1;28512:226:0;-1:-1:-1;28512:226:0;-1:-1:-1;28767:28:0;;28787:7;28767:19;:28::i;:::-;-1:-1:-1;;;;;28749:15:0;;;;;;:7;:15;;;;;;;;:46;;;;28824:7;:15;;;;:28;;28844:7;28824:19;:28::i;20911:130::-;21014:7;;20975;;21002:31;;21027:5;;21002:20;;:7;;21014;;21002:11;:20::i;21047:146::-;21166:7;;21117;;21144:41;;21179:5;;21144:30;;21156:17;;21166:7;;;;;;;21156;;;;:17;:::i;:::-;21144:7;;:30;;:11;:30::i;20563:342::-;20626:19;20648:10;:8;:10::i;:::-;20626:32;-1:-1:-1;20669:18:0;20690:27;:10;20626:32;20690:14;:27::i;:::-;20769:4;20753:22;;;;:7;:22;;;;;;20669:48;;-1:-1:-1;20753:38:0;;20669:48;20753:26;:38::i;:::-;20744:4;20728:22;;;;:7;:22;;;;;;;;:63;;;;20806:11;:26;;;;;;20802:95;;;20875:4;20859:22;;;;:7;:22;;;;;;:38;;20886:10;20859:26;:38::i;:::-;20850:4;20834:22;;;;:7;:22;;;;;:63;20802:95;20615:290;;20563:342;:::o;18495:147::-;18573:7;;:17;;18585:4;18573:11;:17::i;:::-;18563:7;:27;18614:10;;:20;;18629:4;18614:14;:20::i;:::-;18601:10;:33;-1:-1:-1;;18495:147:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1609:6;1617;1670:2;1658:9;1649:7;1645:23;1641:32;1638:52;;;1686:1;1683;1676:12;1638:52;1725:9;1712:23;1744:31;1769:5;1744:31;:::i;:::-;1794:5;1846:2;1831:18;;;;1818:32;;-1:-1:-1;;;1541:315:1:o;1861:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2009:26;2025:9;2009:26;:::i;2046:180::-;2105:6;2158:2;2146:9;2137:7;2133:23;2129:32;2126:52;;;2174:1;2171;2164:12;2126:52;-1:-1:-1;2197:23:1;;2046:180;-1:-1:-1;2046:180:1:o;2231:248::-;2296:6;2304;2357:2;2345:9;2336:7;2332:23;2328:32;2325:52;;;2373:1;2370;2363:12;2325:52;2409:9;2396:23;2386:33;;2438:35;2469:2;2458:9;2454:18;2438:35;:::i;:::-;2428:45;;2231:248;;;;;:::o;3193:597::-;3305:4;3334:2;3363;3352:9;3345:21;3395:6;3389:13;3438:6;3433:2;3422:9;3418:18;3411:34;3463:1;3473:140;3487:6;3484:1;3481:13;3473:140;;;3582:14;;;3578:23;;3572:30;3548:17;;;3567:2;3544:26;3537:66;3502:10;;3473:140;;;3631:6;3628:1;3625:13;3622:91;;;3701:1;3696:2;3687:6;3676:9;3672:22;3668:31;3661:42;3622:91;-1:-1:-1;3774:2:1;3753:15;-1:-1:-1;;3749:29:1;3734:45;;;;3781:2;3730:54;;3193:597;-1:-1:-1;;;3193:597:1:o;6044:401::-;6246:2;6228:21;;;6285:2;6265:18;;;6258:30;6324:34;6319:2;6304:18;;6297:62;-1:-1:-1;;;6390:2:1;6375:18;;6368:35;6435:3;6420:19;;6044:401::o;7816:980::-;8078:4;8126:3;8115:9;8111:19;8157:6;8146:9;8139:25;8183:2;8221:6;8216:2;8205:9;8201:18;8194:34;8264:3;8259:2;8248:9;8244:18;8237:31;8288:6;8323;8317:13;8354:6;8346;8339:22;8392:3;8381:9;8377:19;8370:26;;8431:2;8423:6;8419:15;8405:29;;8452:1;8462:195;8476:6;8473:1;8470:13;8462:195;;;8541:13;;-1:-1:-1;;;;;8537:39:1;8525:52;;8632:15;;;;8597:12;;;;8573:1;8491:9;8462:195;;;-1:-1:-1;;;;;;;8713:32:1;;;;8708:2;8693:18;;8686:60;-1:-1:-1;;;8777:3:1;8762:19;8755:35;8674:3;7816:980;-1:-1:-1;;;7816:980:1:o;8990:128::-;9030:3;9061:1;9057:6;9054:1;9051:13;9048:39;;;9067:18;;:::i;:::-;-1:-1:-1;9103:9:1;;8990:128::o;9123:204::-;9161:3;9197:4;9194:1;9190:12;9229:4;9226:1;9222:12;9264:3;9258:4;9254:14;9249:3;9246:23;9243:49;;;9272:18;;:::i;:::-;9308:13;;9123:204;-1:-1:-1;;;9123:204:1:o;9332:217::-;9372:1;9398;9388:132;;9442:10;9437:3;9433:20;9430:1;9423:31;9477:4;9474:1;9467:15;9505:4;9502:1;9495:15;9388:132;-1:-1:-1;9534:9:1;;9332:217::o;9554:168::-;9594:7;9660:1;9656;9652:6;9648:14;9645:1;9642:21;9637:1;9630:9;9623:17;9619:45;9616:71;;;9667:18;;:::i;:::-;-1:-1:-1;9707:9:1;;9554:168::o;9727:125::-;9767:4;9795:1;9792;9789:8;9786:34;;;9800:18;;:::i;:::-;-1:-1:-1;9837:9:1;;9727:125::o;9857:135::-;9896:3;-1:-1:-1;;9917:17:1;;9914:43;;;9937:18;;:::i;:::-;-1:-1:-1;9984:1:1;9973:13;;9857:135::o;9997:127::-;10058:10;10053:3;10049:20;10046:1;10039:31;10089:4;10086:1;10079:15;10113:4;10110:1;10103:15;10129:127;10190:10;10185:3;10181:20;10178:1;10171:31;10221:4;10218:1;10211:15;10245:4;10242:1;10235:15;10393:131;-1:-1:-1;;;;;10468:31:1;;10458:42;;10448:70;;10514:1;10511;10504:12;10448:70;10393:131;:::o

Swarm Source

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