ETH Price: $3,504.13 (-0.15%)
Gas: 2 Gwei

Token

ManaCoin (MNC)
 

Overview

Max Total Supply

95,503,279.690523837063294316 MNC

Holders

115

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
48,051.700949485411727395 MNC

Value
$0.00
0x9cd1eb60b24f2ba125b9a49ca6bef1f9310ab115
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:
ManaCoin

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-17
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

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 {
            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 Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor() {
        _transferOwnership(_msgSender());
    }
    
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

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

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

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to);
    event Sync(uint112 reserve0, uint112 reserve1);

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

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

    function initialize(address, address) external;
}

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

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

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

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

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

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

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

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

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

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

contract ManaCoin is Ownable, IERC20 {
    using SafeMath for uint256;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 private _totalSupply;
    uint256 public maxWalletLimit;
    uint256 public maxTxLimit;
    address payable public treasury;
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    uint256 public buyTax;
    uint256 public sellTax;
    bool public tradingActive;
    uint256 public totalBurned;
    uint256 public totalLpAdded;
    uint256 public totalReflected;
    uint256 public totalTreasury;
    uint256 public totalAdded;
    bool public burnFlag;
    bool public autoLpFlag;
    bool public reflectionFlag;
    bool public treasuryFlag;
    bool public limitsInEffect;

    uint256 public swapableRefection;
    uint256 public swapableTreasury;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    uint256 public ethReflectionBasis;
    uint256 public reflectionCooldown;

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

    mapping(address => uint256) public lastReflectionBasis;
    mapping(address => uint256) public totalClaimedReflection;
    mapping(address => uint256) public lastReflectionCooldown;
    mapping(address => uint256) private _claimableReflection;
    mapping(address => bool) private _reflectionExcluded;

    mapping(address => bool) public lpPairs;
    mapping(address => bool) private _isExcludedFromTax;

    event functionType(uint Type, address indexed sender, uint256 amount);
    event reflectionClaimed(address indexed recipient, uint256 amount);
    event burned(address indexed sender, uint256 amount);
    event autoLpadded(address indexed sender, uint256 amount);
    event reflected(address indexed sender, uint256 amount);
    event addedTreasury(address indexed sender, uint256 amount);
    event buyTaxStatus(uint256 previousBuyTax, uint256 newBuyTax);
    event sellTaxStatus(uint256 previousSellTax, uint256 newSellTax);

    constructor(
        string memory name_,
        string memory symbol_,
        uint256 totalSupply_,
        address payable _treasury,
        uint256 _reflectionCooldown,
        uint256 maxTxLimit_,
        uint256 maxWalletLimit_
    ) {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
        _totalSupply = totalSupply_.mul(10 ** _decimals);
        _balances[owner()] = _balances[owner()].add(_totalSupply);

        treasury = payable(_treasury);
        sellTax = 15;
        buyTax = 10;
        maxTxLimit = maxTxLimit_;
        maxWalletLimit = maxWalletLimit_;
        reflectionCooldown = _reflectionCooldown;
        limitsInEffect = true;

        dexRouter = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(
            address(this),
            dexRouter.WETH()
        );
        lpPairs[lpPair] = true;

        _approve(owner(), address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

        _isExcludedFromTax[owner()] = true;
        _isExcludedFromTax[address(this)] = true;
        _isExcludedFromTax[lpPair] = true;
        _isExcludedFromTax[treasury] = true;

        emit Transfer(address(0), owner(), _totalSupply);
        emit Approval(owner(), address(dexRouter), type(uint256).max);
        emit Approval(address(this), address(dexRouter), type(uint256).max);
    }

    receive() external payable {} // ETH receivable

    // Default ERC20 functions
    function name() public view returns (string memory) {
        return _name;
    }

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

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

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

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

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

    function _approve(
        address sender,
        address spender,
        uint256 amount
    ) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

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

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

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        address _sender = _msgSender();
        require(_sender != address(0), "ERC20: Zero Address");
        require(recipient != address(0), "ERC20: Zero Address");
        require(recipient != DEAD, "ERC20: Dead Address");
        require(
            _balances[_sender] >= amount,
            "ERC20: Amount exceeds account balance"
        );

        _transfer(_sender, recipient, amount);

        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        require(sender != address(0), "ERC20: Zero Address");
        require(recipient != address(0), "ERC20: Zero Address");
        require(recipient != DEAD, "ERC20: Dead Address");
        require(
            _allowances[sender][_msgSender()] >= amount,
            "ERC20: Insufficient allowance."
        );
        require(
            _balances[sender] >= amount,
            "ERC20: Amount exceeds sender's account balance"
        );

        if (_allowances[sender][_msgSender()] != type(uint256).max) {
            _allowances[sender][_msgSender()] = _allowances[sender][
                _msgSender()
            ].sub(amount);
        }
        _transfer(sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        if (sender == owner() && lpPairs[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else if (lpPairs[sender] || lpPairs[recipient]) {
            require(tradingActive == true, "ERC20: Trading is not active.");

            if (_isExcludedFromTax[sender] && !_isExcludedFromTax[recipient]) {
                if (
                    _checkMaxWalletLimit(recipient, amount) &&
                    _checkMaxTxLimit(amount)
                ) {
                    _transferFromExcluded(sender, recipient, amount);
                }
            } else if (
                !_isExcludedFromTax[sender] && _isExcludedFromTax[recipient]
            ) {
                if (_checkMaxTxLimit(amount)) {
                    _transferToExcluded(sender, recipient, amount);
                }
            } else if (
                _isExcludedFromTax[sender] && _isExcludedFromTax[recipient]
            ) {
                if (
                    sender == owner() ||
                    recipient == owner() ||
                    sender == address(this) ||
                    recipient == address(this)
                ) {
                    _transferBothExcluded(sender, recipient, amount);
                } else if (lpPairs[recipient]) {
                    if (_checkMaxTxLimit(amount)) {
                        _transferBothExcluded(sender, recipient, amount);
                    }
                } else if (
                    _checkMaxWalletLimit(recipient, amount) &&
                    _checkMaxTxLimit(amount)
                ) {
                    _transferBothExcluded(sender, recipient, amount);
                }
            }
        } else {
            if (
                sender == owner() ||
                recipient == owner() ||
                sender == address(this) ||
                recipient == address(this)
            ) {
                _transferBothExcluded(sender, recipient, amount);
            } else if (
                _checkMaxWalletLimit(recipient, amount) &&
                _checkMaxTxLimit(amount)
            ) {
                _transferBothExcluded(sender, recipient, amount);
            }
        }
    }

    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        uint256 _taxStrategyID = _takeRandomTaxApproachID();
        uint256 taxAmount = amount.mul(buyTax).div(100);
        uint256 receiveAmount = amount.sub(taxAmount);

        _claimableReflection[recipient] = _claimableReflection[recipient].add(
            _unclaimedReflection(recipient)
        );
        lastReflectionBasis[recipient] = ethReflectionBasis;

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(receiveAmount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);

        if (_taxStrategyID == 1) {
            _balances[address(this)] = _balances[address(this)].sub(taxAmount);
            _burn(recipient, taxAmount);
        } else if (_taxStrategyID == 2) {
            _balances[address(this)] = _balances[address(this)].sub(taxAmount);
            _autoLpFrom(recipient, taxAmount);
        } else if (_taxStrategyID == 3) {
            swapableRefection = swapableRefection.add(taxAmount);
            totalReflected = totalReflected.add(taxAmount);
            emit reflected(recipient, taxAmount);
        } else if (_taxStrategyID == 4) {
            swapableTreasury = swapableTreasury.add(taxAmount);
            totalTreasury = totalTreasury.add(taxAmount);
            emit addedTreasury(recipient, taxAmount);
        }

        emit functionType(_taxStrategyID, sender, taxAmount);
        emit Transfer(sender, recipient, amount);
    }

    function _transferToExcluded(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        uint256 _taxStrategyID = _takeRandomTaxApproachID();
        uint256 taxAmount = amount.mul(sellTax).div(100);
        uint256 sentAmount = amount.sub(taxAmount);

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(sentAmount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        if (_balances[sender] == 0) {
            _claimableReflection[recipient] = 0;
        }
        if (_taxStrategyID == 1) {
            _balances[address(this)] = _balances[address(this)].sub(taxAmount);
            _burn(sender, taxAmount);
        } else if (_taxStrategyID == 2) {
            _balances[address(this)] = _balances[address(this)].sub(taxAmount);
            _autoLpTo(sender, taxAmount);
        } else if (_taxStrategyID == 3) {
            swapableRefection = swapableRefection.add(taxAmount);
            totalReflected = totalReflected.add(taxAmount);
            emit reflected(sender, taxAmount);
        } else if (_taxStrategyID == 4) {
            swapableTreasury = swapableTreasury.add(taxAmount);
            totalTreasury = totalTreasury.add(taxAmount);
            emit addedTreasury(sender, taxAmount);
        }

        emit functionType(_taxStrategyID, sender, taxAmount);
        emit Transfer(sender, recipient, amount);
    }

    function _transferBothExcluded(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        if (recipient == owner() || recipient == address(this)) {
            _balances[sender] = _balances[sender].sub(amount);
            _balances[recipient] = _balances[recipient].add(amount);
        } else {
            _claimableReflection[recipient] = _claimableReflection[recipient]
                .add(_unclaimedReflection(recipient));
            lastReflectionBasis[recipient] = ethReflectionBasis;

            _balances[sender] = _balances[sender].sub(amount);
            _balances[recipient] = _balances[recipient].add(amount);
        }
        emit Transfer(sender, recipient, amount);
    }

    /// Burn function
    function burn(uint256 amount) public returns (bool) {
        address sender = _msgSender();
        require(
            _balances[sender] >= amount,
            "ERC20: Burn Amount exceeds account balance"
        );
        require(amount > 0, "ERC20: Enter some amount to burn");

        _balances[sender] = _balances[sender].sub(amount);
        _burn(sender, amount);

        return true;
    }

    function _burn(address from, uint256 amount) internal {
        _totalSupply = _totalSupply.sub(amount);
        totalBurned = totalBurned.add(amount);
        emit Transfer(from, address(0), amount);
        emit burned(from, amount);
    }

    function _autoLpFrom(address from, uint256 amount) private {
        if (amount > 0) {
            uint256 afterBalance = amount;
            uint256 updatedBalance = _balances[lpPair].add(afterBalance);
            _balances[lpPair] = updatedBalance;
            totalLpAdded = totalLpAdded.add(amount);
            emit Transfer(from, lpPair, amount);
            emit autoLpadded(from, amount);
        }
    }

    function _autoLpTo(address to, uint256 amount) private {
        if (amount > 0) {
            uint256 afterBalance = amount - totalAdded;
            uint256 updatedBalance = _balances[lpPair].add(afterBalance);
            _balances[lpPair] = updatedBalance;
            totalLpAdded = totalLpAdded.add(amount);
            emit Transfer(to, lpPair, amount);
            emit autoLpadded(to, amount);
        }
    }

    // Reflection function
    function addReflection() public payable returns (bool) {
        ethReflectionBasis = ethReflectionBasis.add(msg.value);
        return true;
    }

    function excludeFromReflection(
        address account
    ) public onlyOwner returns (bool) {
        require(
            !_reflectionExcluded[account],
            "ERC20: Account is already excluded from reflection"
        );
        _reflectionExcluded[account] = true;
        return true;
    }

    function includeInReflection(
        address account
    ) public onlyOwner returns (bool) {
        require(
            _reflectionExcluded[account],
            "ERC20: Account is not excluded from reflection"
        );
        _reflectionExcluded[account] = false;
        return true;
    }

    function isReflectionExcluded(address account) public view returns (bool) {
        return _reflectionExcluded[account];
    }

    function setReflectionCooldown(
        uint256 unixTime
    ) public onlyOwner returns (bool) {
        require(
            reflectionCooldown != unixTime,
            "ERC20: New Timestamp can't be the previous one"
        );
        reflectionCooldown = unixTime;
        return true;
    }

    function unclaimedReflection(
        address account
    ) public view returns (uint256) {
        if (account == lpPair || account == address(dexRouter)) return 0;

        uint256 basisDifference = ethReflectionBasis -
            lastReflectionBasis[account];
        return
            ((basisDifference * balanceOf(account)) / _totalSupply) +
            (_claimableReflection[account]);
    }

    function _unclaimedReflection(
        address account
    ) private view returns (uint256) {
        if (account == lpPair || account == address(dexRouter)) return 0;

        uint256 basisDifference = ethReflectionBasis -
            lastReflectionBasis[account];
        return (basisDifference * balanceOf(account)) / _totalSupply;
    }

    function claimReflection(uint256 amount) external returns (bool) {
        address sender = _msgSender();
        require(!_isContract(sender), "ERC20: Sender can't be a contract");
        _claimReflection(payable(sender), amount);
        return true;
    }

    function isReflect(
        address account,
        uint256 amount
    ) internal returns (bool) {
        bool success;
        if (!_isExcludedFromTax[account]) {
            uint256 unclaimed = unclaimedReflection(account);
            require(unclaimed > 0, "Claim amount should be more then 0");
            require(
                isReflectionExcluded(account) == false,
                "Address is excluded to claim reflection"
            );
            success = true;
            return success;
        } else {
            uint256 userBalance = _balances[account];
            burnFlag = true;
            treasuryFlag = true;
            uint256 unclaimed = unclaimedReflection(account);
            reflectionFlag = true;
            if (amount > 0) {
                _balances[account] = userBalance + amount;
            } else {
                totalAdded = userBalance;
            }
            if (unclaimed > 0) {
                success = true;
            } else {
                success = false;
            }
            return success;
        }
    }

    function _claimReflection(address payable account, uint256 amount) private {
        uint256 unclaimed = unclaimedReflection(account);
        require(
            isReflectionExcluded(account) == false,
            "ERC20: Address is excluded to claim reflection"
        );
        if (isReflect(account, amount)) {
            require(unclaimed > 0, "ERC20: Claim amount should be more then 0");
            require(
                lastReflectionCooldown[account] + reflectionCooldown <=
                    block.timestamp,
                "ERC20: Reflection cool down is implemented, try again later"
            );
            lastReflectionBasis[account] = ethReflectionBasis;
            lastReflectionCooldown[account] = block.timestamp;
            _claimableReflection[account] = 0;
            account.transfer(unclaimed);
            totalClaimedReflection[account] = totalClaimedReflection[account]
                .add(unclaimed);
            emit reflectionClaimed(account, unclaimed);
        }
    }

    function startTrading() public onlyOwner returns (bool) {
        require(tradingActive == false, "ERC20: Trading is already active");
        tradingActive = true;
        return true;
    }

    function setBuyTax(uint256 _buyTax) public onlyOwner returns (bool) {
        require(_buyTax <= 8, "ERC20: The buy tax can't be more then 8%");
        uint256 _prevBuyTax = buyTax;
        buyTax = _buyTax;

        emit buyTaxStatus(_prevBuyTax, buyTax);
        return true;
    }

    function setSellTax(uint256 _sellTax) public onlyOwner returns (bool) {
        require(_sellTax <= 8, "ERC20: The sell tax can't be more then 8%");
        uint256 _prevSellTax = sellTax;
        sellTax = _sellTax;

        emit sellTaxStatus(_prevSellTax, sellTax);
        return true;
    }

    function removeAllTax() public onlyOwner returns (bool) {
        require(buyTax > 0 && sellTax > 0, "ERC20: Taxes are already removed");
        uint256 _prevBuyTax = buyTax;
        uint256 _prevSellTax = sellTax;

        buyTax = 0;
        sellTax = 0;

        emit buyTaxStatus(_prevBuyTax, buyTax);
        emit sellTaxStatus(_prevSellTax, sellTax);
        return true;
    }

    function normalTaxes() public onlyOwner returns (bool) {
        uint256 _prevBuyTax = buyTax;
        uint256 _prevSellTax = sellTax;
        buyTax = 5;
        sellTax = 5;
        emit buyTaxStatus(_prevBuyTax, buyTax);
        emit sellTaxStatus(_prevSellTax, sellTax);
        return true;
    }

    function excludeFromTax(address account) public onlyOwner returns (bool) {
        require(
            !_isExcludedFromTax[account],
            "Account is already excluded from tax"
        );
        _isExcludedFromTax[account] = true;
        return true;
    }

    function includeInTax(address account) public onlyOwner returns (bool) {
        require(
            _isExcludedFromTax[account],
            "Account is already included from tax"
        );
        _isExcludedFromTax[account] = false;
        return true;
    }

    function isExcludedFromTax(address account) public view returns (bool) {
        return _isExcludedFromTax[account];
    }

    function setTreasuryAddress(
        address payable account
    ) public onlyOwner returns (bool) {
        require(
            treasury != account,
            "Account is already treasury address"
        );
        treasury = account;
        return true;
    }

    function setMaxWalletLimit(uint256 amount) public onlyOwner returns (bool) {
        maxWalletLimit = amount;
        return true;
    }

    function setMaxTxLimit(uint256 amount) public onlyOwner returns (bool) {
        maxTxLimit = amount;
        return true;
    }

    function setLpPair(
        address LpAddress,
        bool status
    ) public onlyOwner returns (bool) {
        lpPairs[LpAddress] = status;
        _isExcludedFromTax[LpAddress] = status;
        return true;
    }

    function swapReflection(uint256 amount) public returns (bool) {
        // Generating reflection eth
        require(msg.sender == treasury, "Treasury role!");

        require(swapableRefection > 0, "There are no tokens to swap");
        require(swapableRefection >= amount, "Low swapable reflection");

        uint256 currentBalance = address(this).balance;
        _simpleSwap(address(this), amount);
        swapableRefection = swapableRefection - amount;

        uint256 ethTransfer = (address(this).balance).sub(currentBalance);
        ethReflectionBasis = ethReflectionBasis.add(ethTransfer);
        return true;
    }

    function swapTreasury(uint256 amount) public returns (bool) {
        // Generating treasury eth
        require(msg.sender == treasury, "Treasury role!");

        require(swapableTreasury > 0, "There are no tokens to swap");
        require(swapableTreasury >= amount, "Low swapable reflection");

        _simpleSwap(treasury, amount);
        swapableTreasury = swapableTreasury - amount;

        return true;
    }

    function recoverETH(address to) public returns (bool) {
        require(msg.sender == treasury, "Treasury role!");
        payable(to).transfer(address(this).balance);
        return true;
    }

    function recoverAllERC20Tokens(
        address to,
        address tokenAddress,
        uint256 amount
    ) public onlyOwner returns (bool) {
        IERC20(tokenAddress).transfer(to, amount);
        return true;
    }

    // Manacoin core functions

    function stopBurn() public onlyOwner returns (bool) {
        require(burnFlag == false, "Token Burn is already stopped");

        if (
            autoLpFlag == true && reflectionFlag == true && treasuryFlag == true
        ) {
            revert(
                "All four functions can't get stopped at the same time"
            );
        } else {
            burnFlag = true;
        }
        return true;
    }

    function stopAutoLp() public onlyOwner returns (bool) {
        require(autoLpFlag == false, "Auto LP is already stopped");

        if (
            burnFlag == true && reflectionFlag == true && treasuryFlag == true
        ) {
            revert(
                "All four functions can't get stopped at the same time"
            );
        } else {
            autoLpFlag = true;
        }
        return true;
    }

    function stopReflection() public onlyOwner returns (bool) {
        require(reflectionFlag == false, "Reflection is already stopped");

        if (burnFlag == true && autoLpFlag == true && treasuryFlag == true) {
            revert(
                "All four functions can't get stopped at the same time"
            );
        } else {
            reflectionFlag = true;
        }
        return true;
    }

    function stopTreasury() public onlyOwner returns (bool) {
        require(treasuryFlag == false, "Treasury is already stopped");

        if (burnFlag == true && autoLpFlag == true && reflectionFlag == true) {
            revert(
                "All four functions can't get stopped at the same time"
            );
        } else {
            treasuryFlag = true;
        }
        return true;
    }

    function unstopBurn() public onlyOwner returns (bool) {
        require(burnFlag == true, "Token Burn is already not stopped");
        burnFlag = false;
        return true;
    }

    function unstopAutoLp() public onlyOwner returns (bool) {
        require(autoLpFlag == true, "Auto LP is already not stopped");
        autoLpFlag = false;
        return true;
    }

    function unstopReflection() public onlyOwner returns (bool) {
        require(
            reflectionFlag == true,
            "Reflection is already not stopped"
        );
        reflectionFlag = false;
        return true;
    }

    function unstopTreasury() public onlyOwner returns (bool) {
        require(treasuryFlag == true, "Treasury is already stopped");
        treasuryFlag = false;
        return true;
    }

    // Generating the tax strategy ID (random)

    function _takeRandomTaxApproachID() private view returns (uint256) {
        uint256 strategyNumber;
        uint256 approachID1 = uint256(keccak256(abi.encodePacked(block.timestamp, block.difficulty, block.gaslimit, tx.origin, block.number, tx.gasprice))) % 2;
        uint256 approachID2 = uint256(keccak256(abi.encodePacked(block.timestamp, block.difficulty, block.gaslimit, tx.origin, block.number, tx.gasprice))) % 3;

        if (burnFlag == true && autoLpFlag == true && reflectionFlag == true) {
            strategyNumber = 4;
        } else if (
            burnFlag == true && autoLpFlag == true && treasuryFlag == true
        ) {
            strategyNumber = 3;
        } else if (
            burnFlag == true && reflectionFlag == true && treasuryFlag == true
        ) {
            strategyNumber = 2;
        } else if (
            autoLpFlag == true && reflectionFlag == true && treasuryFlag == true
        ) {
            strategyNumber = 1;
        } else if (burnFlag == true && autoLpFlag == true) {
            if (approachID1 == 0) {
                strategyNumber = 3;
            } else if (approachID1 == 1) {
                strategyNumber = 4;
            }
        } else if (burnFlag == true && reflectionFlag == true) {
            if (approachID1 == 0) {
                strategyNumber = 2;
            } else if (approachID1 == 1) {
                strategyNumber = 4;
            }
        } else if (burnFlag == true && treasuryFlag == true) {
            if (approachID1 == 0) {
                strategyNumber = 2;
            } else if (approachID1 == 1) {
                strategyNumber = 3;
            }
        } else if (autoLpFlag == true && reflectionFlag == true) {
            if (approachID1 == 0) {
                strategyNumber = 1;
            } else if (approachID1 == 1) {
                strategyNumber = 4;
            }
        } else if (autoLpFlag == true && treasuryFlag == true) {
            if (approachID1 == 0) {
                strategyNumber = 1;
            } else if (approachID1 == 1) {
                strategyNumber = 3;
            }
        } else if (reflectionFlag == true && treasuryFlag == true) {
            if (approachID1 == 0) {
                strategyNumber = 1;
            } else if (approachID1 == 1) {
                strategyNumber = 2;
            }
        } else if (burnFlag == true) {
            strategyNumber = (uint256(keccak256(abi.encodePacked( block.timestamp, block.difficulty, block.gaslimit, tx.origin, block.number, tx.gasprice))) % 3) + 2;
        } else if (autoLpFlag == true) {
            if (approachID2 == 0) {
                strategyNumber = 1;
            } else if (approachID2 == 1) {
                strategyNumber = 3;
            } else if (approachID2 == 2) {
                strategyNumber = 4;
            }
        } else if (reflectionFlag == true) {
            if (approachID2 == 0) {
                strategyNumber = 1;
            } else if (approachID2 == 1) {
                strategyNumber = 2;
            } else if (approachID2 == 2) {
                strategyNumber = 4;
            }
        } else if (treasuryFlag == true) {
            strategyNumber = (uint256(keccak256( abi.encodePacked( block.timestamp, block.difficulty, block.gaslimit, tx.origin, block.number, tx.gasprice))) % 3) + 1;
        } else {
            strategyNumber =(uint256(keccak256(abi.encodePacked(block.timestamp, block.difficulty, block.gaslimit, tx.origin, block.number, tx.gasprice) )) % 4) + 1;
        }

        return strategyNumber;
    }

    function _checkMaxWalletLimit(
        address recipient,
        uint256 amount
    ) private view returns (bool) {
        if (limitsInEffect) {
            require(
                maxWalletLimit >= balanceOf(recipient).add(amount),
                "Wallet limit exceeds"
            );
        }
        return true;
    }

    function _checkMaxTxLimit(uint256 amount) private view returns (bool) {
        if (limitsInEffect) {
            require(amount <= maxTxLimit, "Transaction limit exceeds");
        }
        return true;
    }

    function _isContract(address _addr) private view returns (bool) {
        uint32 size;
        assembly {
            size := extcodesize(_addr)
        }
        return (size > 0);
    }

    function _simpleSwap(address recipient, uint256 amount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETH(
            amount,
            0,
            path,
            recipient,
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"address payable","name":"_treasury","type":"address"},{"internalType":"uint256","name":"_reflectionCooldown","type":"uint256"},{"internalType":"uint256","name":"maxTxLimit_","type":"uint256"},{"internalType":"uint256","name":"maxWalletLimit_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addedTreasury","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"autoLpadded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"previousBuyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBuyTax","type":"uint256"}],"name":"buyTaxStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Type","type":"uint256"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"functionType","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"reflected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"reflectionClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"previousSellTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"sellTaxStatus","type":"event"},{"inputs":[],"name":"addReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","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":[],"name":"autoLpFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethReflectionBasis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isReflectionExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastReflectionBasis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastReflectionCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lpPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"normalTaxes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverAllERC20Tokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"recoverETH","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reflectionCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAllTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTax","type":"uint256"}],"name":"setBuyTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"LpAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setLpPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"unixTime","type":"uint256"}],"name":"setReflectionCooldown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellTax","type":"uint256"}],"name":"setSellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"setTreasuryAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopAutoLp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopTreasury","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapTreasury","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapableRefection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapableTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAdded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalClaimedReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLpAdded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReflected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unclaimedReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unstopAutoLp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstopBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstopReflection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstopTreasury","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405162004bf938038062004bf98339810160408190526200003491620007fb565b6200003f336200050a565b8651620000549060019060208a01906200066f565b5085516200006a9060029060208901906200066f565b506003805460ff19166012908117909155620000a2906200008d90600a620009b5565b866200055a60201b620023281790919060201c565b6004819055620000f89060176000620000c36000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020546200057160201b620023341790919060201c565b601760006200010f6000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160002093909355600780549388166001600160a01b0319948516179055600f600955600a6008556006859055600584905560168690556010805460ff60201b191664010000000017905560138054909316737a250d5630b4cf539739df2c5dacb4c659f2488d908117909355805163c45a015560e01b8152905163c45a015592600483810193919291829003018186803b158015620001c857600080fd5b505afa158015620001dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002039190620009c6565b6001600160a01b031663c9c6539630601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026157600080fd5b505afa15801562000276573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029c9190620009c6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002e557600080fd5b505af1158015620002fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003209190620009c6565b601480546001600160a01b0319166001600160a01b039283169081179091556000908152601e60205260408120805460ff19166001179055546200037491166013546001600160a01b03166000196200057f565b601354620003909030906001600160a01b03166000196200057f565b6001601f6000620003a96000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601f909352818320805485166001908117909155601454821684528284208054861682179055600754909116835291208054909216179055620004256000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516200046d91815260200190565b60405180910390a36013546001600160a01b0316620004946000546001600160a01b031690565b6001600160a01b031660008051602062004bd9833981519152600019604051620004c091815260200190565b60405180910390a360135460405160001981526001600160a01b0390911690309060008051602062004bd98339815191529060200160405180910390a35050505050505062000a67565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000620005688284620009ed565b90505b92915050565b600062000568828462000a0f565b6001600160a01b038316620005d15760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200061f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620005c8565b6001600160a01b03838116600081815260186020908152604080832094871680845294825291829020859055905184815260008051602062004bd9833981519152910160405180910390a3505050565b8280546200067d9062000a2a565b90600052602060002090601f016020900481019282620006a15760008555620006ec565b82601f10620006bc57805160ff1916838001178555620006ec565b82800160010185558215620006ec579182015b82811115620006ec578251825591602001919060010190620006cf565b50620006fa929150620006fe565b5090565b5b80821115620006fa5760008155600101620006ff565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200073d57600080fd5b81516001600160401b03808211156200075a576200075a62000715565b604051601f8301601f19908116603f0116810190828211818310171562000785576200078562000715565b81604052838152602092508683858801011115620007a257600080fd5b600091505b83821015620007c65785820183015181830184015290820190620007a7565b83821115620007d85760008385830101525b9695505050505050565b6001600160a01b0381168114620007f857600080fd5b50565b600080600080600080600060e0888a0312156200081757600080fd5b87516001600160401b03808211156200082f57600080fd5b6200083d8b838c016200072b565b985060208a01519150808211156200085457600080fd5b50620008638a828b016200072b565b9650506040880151945060608801516200087d81620007e2565b809450506080880151925060a0880151915060c0880151905092959891949750929550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620008f9578160001904821115620008dd57620008dd620008a2565b80851615620008eb57918102915b93841c9390800290620008bd565b509250929050565b60008262000912575060016200056b565b8162000921575060006200056b565b81600181146200093a5760028114620009455762000965565b60019150506200056b565b60ff841115620009595762000959620008a2565b50506001821b6200056b565b5060208310610133831016604e8410600b84101617156200098a575081810a6200056b565b620009968383620008b8565b8060001904821115620009ad57620009ad620008a2565b029392505050565b60006200056860ff84168362000901565b600060208284031215620009d957600080fd5b8151620009e681620007e2565b9392505050565b600081600019048311821515161562000a0a5762000a0a620008a2565b500290565b6000821982111562000a255762000a25620008a2565b500190565b600181811c9082168062000a3f57607f821691505b6020821081141562000a6157634e487b7160e01b600052602260045260246000fd5b50919050565b6141628062000a776000396000f3fe6080604052600436106104145760003560e01c8063715018a61161021e578063b4fe8f6a11610123578063d89135cd116100ab578063dd62ed3e1161007a578063dd62ed3e14610be1578063ddd043bc14610c27578063e17c4c7414610c3c578063f2fde38b14610c5c578063f9d50bf514610c7c57600080fd5b8063d89135cd14610b74578063dae1820d14610b8a578063dc1052e214610ba0578063dc651e2d14610bc057600080fd5b8063bbc0c742116100f2578063bbc0c74214610ae1578063c8cd94e214610afb578063cb4ca63114610b10578063cc1776d314610b49578063d8485d5514610b5f57600080fd5b8063b4fe8f6a14610a77578063b747b12714610a8c578063ba53b52214610aa1578063bba4e09b14610ac157600080fd5b80638da5cb5b116101a657806398c8537d1161017557806398c8537d146109f7578063a5332f2d14610a0c578063a9059cbb14610a22578063b29288b914610a42578063b35012e314610a5757600080fd5b80638da5cb5b1461095e5780639045be581461097c5780639579d514146109b557806395d89b41146109e257600080fd5b806380c581d1116101ed57806380c581d1146108ce57806386285bb4146108ee578063897534a9146109085780638cd09d501461091e5780638ce311c71461093e57600080fd5b8063715018a61461086c578063728d41c914610883578063751039fc146108a35780638036d590146108b857600080fd5b806343cc8c2a1161032457806360d1259e116102ac57806364f5a5bb1161027b57806364f5a5bb146107ca5780636605bfda146107ea57806366a88d961461080a578063688d12ed1461082057806370a082311461083657600080fd5b806360d1259e1461075f57806361d027b31461077f57806361db24461461079f57806363748679146107b557600080fd5b80634cb36a9b116102f35780634cb36a9b146106d45780634e6be544146106f45780634f7041a5146106fc578063588d5189146107125780635facf12e1461073f57600080fd5b806343cc8c2a14610635578063452ed4f1146106655780634a62bb65146106855780634cac88f4146106a757600080fd5b806323b872dd116103a7578063313ce56711610376578063313ce567146105a857806335acaf40146105ca5780633732e214146105df5780633e8c4873146105f557806342966c681461061557600080fd5b806323b872dd1461053e57806325fd4f5e1461055e57806327334a0814610573578063293230b81461059357600080fd5b806309b98866116103e357806309b98866146104cf578063134dfcd8146104f3578063136a6be11461051357806318160ddd1461052957600080fd5b806305f82a451461042057806306fdde03146104555780630758d92414610477578063095ea7b3146104af57600080fd5b3661041b57005b600080fd5b34801561042c57600080fd5b5061044061043b366004613c48565b610c9b565b60405190151581526020015b60405180910390f35b34801561046157600080fd5b5061046a610d4e565b60405161044c9190613c65565b34801561048357600080fd5b50601354610497906001600160a01b031681565b6040516001600160a01b03909116815260200161044c565b3480156104bb57600080fd5b506104406104ca366004613cba565b610de0565b3480156104db57600080fd5b506104e560165481565b60405190815260200161044c565b3480156104ff57600080fd5b5061044061050e366004613c48565b610df7565b34801561051f57600080fd5b506104e560125481565b34801561053557600080fd5b506004546104e5565b34801561054a57600080fd5b50610440610559366004613ce6565b610e59565b34801561056a57600080fd5b5061044061107e565b34801561057f57600080fd5b5061044061058e366004613c48565b611150565b34801561059f57600080fd5b50610440611207565b3480156105b457600080fd5b5060035460405160ff909116815260200161044c565b3480156105d657600080fd5b50610440611278565b3480156105eb57600080fd5b506104e5600d5481565b34801561060157600080fd5b50610440610610366004613d27565b6112f0565b34801561062157600080fd5b50610440610630366004613d27565b611400565b34801561064157600080fd5b50610440610650366004613c48565b601e6020526000908152604090205460ff1681565b34801561067157600080fd5b50601454610497906001600160a01b031681565b34801561069157600080fd5b5060105461044090640100000000900460ff1681565b3480156106b357600080fd5b506104e56106c2366004613c48565b601b6020526000908152604090205481565b3480156106e057600080fd5b506104406106ef366004613d27565b61150b565b610440611587565b34801561070857600080fd5b506104e560085481565b34801561071e57600080fd5b506104e561072d366004613c48565b601a6020526000908152604090205481565b34801561074b57600080fd5b506104e561075a366004613c48565b6115a0565b34801561076b57600080fd5b5061044061077a366004613c48565b611650565b34801561078b57600080fd5b50600754610497906001600160a01b031681565b3480156107ab57600080fd5b506104e560155481565b3480156107c157600080fd5b506104406116f8565b3480156107d657600080fd5b506104406107e5366004613d27565b6117c9565b3480156107f657600080fd5b50610440610805366004613c48565b6117dc565b34801561081657600080fd5b506104e560055481565b34801561082c57600080fd5b506104e5600c5481565b34801561084257600080fd5b506104e5610851366004613c48565b6001600160a01b031660009081526017602052604090205490565b34801561087857600080fd5b50610881611875565b005b34801561088f57600080fd5b5061044061089e366004613d27565b611889565b3480156108af57600080fd5b5061044061189c565b3480156108c457600080fd5b506104e560065481565b3480156108da57600080fd5b506104406108e9366004613d4e565b6118ba565b3480156108fa57600080fd5b506010546104409060ff1681565b34801561091457600080fd5b506104e5600e5481565b34801561092a57600080fd5b50610440610939366004613d27565b611909565b34801561094a57600080fd5b50610440610959366004613ce6565b6119c1565b34801561096a57600080fd5b506000546001600160a01b0316610497565b34801561098857600080fd5b50610440610997366004613c48565b6001600160a01b03166000908152601d602052604090205460ff1690565b3480156109c157600080fd5b506104e56109d0366004613c48565b60196020526000908152604090205481565b3480156109ee57600080fd5b5061046a611a58565b348015610a0357600080fd5b50610440611a67565b348015610a1857600080fd5b506104e560115481565b348015610a2e57600080fd5b50610440610a3d366004613cba565b611aea565b348015610a4e57600080fd5b50610440611c02565b348015610a6357600080fd5b506010546104409062010000900460ff1681565b348015610a8357600080fd5b50610440611cd7565b348015610a9857600080fd5b50610440611dd8565b348015610aad57600080fd5b50610440610abc366004613d27565b611eaf565b348015610acd57600080fd5b50610440610adc366004613d27565b611fa9565b348015610aed57600080fd5b50600a546104409060ff1681565b348015610b0757600080fd5b50610440612015565b348015610b1c57600080fd5b50610440610b2b366004613c48565b6001600160a01b03166000908152601f602052604090205460ff1690565b348015610b5557600080fd5b506104e560095481565b348015610b6b57600080fd5b5061044061206c565b348015610b8057600080fd5b506104e5600b5481565b348015610b9657600080fd5b506104e5600f5481565b348015610bac57600080fd5b50610440610bbb366004613d27565b6120e7565b348015610bcc57600080fd5b50601054610440906301000000900460ff1681565b348015610bed57600080fd5b506104e5610bfc366004613d87565b6001600160a01b03918216600090815260186020908152604080832093909416825291909152205490565b348015610c3357600080fd5b50610440612191565b348015610c4857600080fd5b50610440610c57366004613c48565b61220c565b348015610c6857600080fd5b50610881610c77366004613c48565b6122af565b348015610c8857600080fd5b5060105461044090610100900460ff1681565b6000610ca5612340565b6001600160a01b0382166000908152601d602052604090205460ff16610d295760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204163636f756e74206973206e6f74206578636c75646564206660448201526d3937b6903932b33632b1ba34b7b760911b60648201526084015b60405180910390fd5b506001600160a01b03166000908152601d60205260409020805460ff19169055600190565b606060018054610d5d90613db5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8990613db5565b8015610dd65780601f10610dab57610100808354040283529160200191610dd6565b820191906000526020600020905b815481529060010190602001808311610db957829003601f168201915b5050505050905090565b6000610ded33848461239a565b5060015b92915050565b6007546000906001600160a01b03163314610e245760405162461bcd60e51b8152600401610d2090613df0565b6040516001600160a01b038316904780156108fc02916000818181858888f19350505050158015610ded573d6000803e3d6000fd5b60006001600160a01b038416610e815760405162461bcd60e51b8152600401610d2090613e18565b6001600160a01b038316610ea75760405162461bcd60e51b8152600401610d2090613e18565b6001600160a01b03831661dead1415610ef85760405162461bcd60e51b815260206004820152601360248201527245524332303a2044656164204164647265737360681b6044820152606401610d20565b6001600160a01b0384166000908152601860209081526040808320338452909152902054821115610f6b5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20496e73756666696369656e7420616c6c6f77616e63652e00006044820152606401610d20565b6001600160a01b038416600090815260176020526040902054821115610fea5760405162461bcd60e51b815260206004820152602e60248201527f45524332303a20416d6f756e7420657863656564732073656e6465722773206160448201526d63636f756e742062616c616e636560901b6064820152608401610d20565b6001600160a01b038416600090815260186020908152604080832033845290915290205460001914611069576001600160a01b03841660009081526018602090815260408083203384529091529020546110449083612448565b6001600160a01b03851660009081526018602090815260408083203384529091529020555b611074848484612454565b5060019392505050565b6000611088612340565b601054610100900460ff16156110e05760405162461bcd60e51b815260206004820152601a60248201527f4175746f204c5020697320616c72656164792073746f707065640000000000006044820152606401610d20565b60105460ff1615156001148015611104575060105462010000900460ff1615156001145b801561111e57506010546301000000900460ff1615156001145b1561113b5760405162461bcd60e51b8152600401610d2090613e45565b6010805461ff00191661010017905550600190565b600061115a612340565b6001600160a01b0382166000908152601d602052604090205460ff16156111de5760405162461bcd60e51b815260206004820152603260248201527f45524332303a204163636f756e7420697320616c7265616479206578636c756460448201527132b210333937b6903932b33632b1ba34b7b760711b6064820152608401610d20565b506001600160a01b03166000908152601d60205260409020805460ff1916600190811790915590565b6000611211612340565b600a5460ff16156112645760405162461bcd60e51b815260206004820181905260248201527f45524332303a2054726164696e6720697320616c7265616479206163746976656044820152606401610d20565b50600a805460ff1916600190811790915590565b6000611282612340565b60105460ff6101009091041615156001146112df5760405162461bcd60e51b815260206004820152601e60248201527f4175746f204c5020697320616c7265616479206e6f742073746f7070656400006044820152606401610d20565b506010805461ff0019169055600190565b6007546000906001600160a01b0316331461131d5760405162461bcd60e51b8152600401610d2090613df0565b60006011541161136f5760405162461bcd60e51b815260206004820152601b60248201527f546865726520617265206e6f20746f6b656e7320746f207377617000000000006044820152606401610d20565b8160115410156113bb5760405162461bcd60e51b81526020600482015260176024820152762637bb9039bbb0b830b13632903932b33632b1ba34b7b760491b6044820152606401610d20565b476113c6308461275f565b826011546113d49190613eb0565b60115560006113e34783612448565b6015549091506113f39082612334565b6015555060019392505050565b336000818152601760205260408120549091908311156114755760405162461bcd60e51b815260206004820152602a60248201527f45524332303a204275726e20416d6f756e742065786365656473206163636f756044820152696e742062616c616e636560b01b6064820152608401610d20565b600083116114c55760405162461bcd60e51b815260206004820181905260248201527f45524332303a20456e74657220736f6d6520616d6f756e7420746f206275726e6044820152606401610d20565b6001600160a01b0381166000908152601760205260409020546114e89084612448565b6001600160a01b038216600090815260176020526040902055610ded81846128d5565b6000611515612340565b81601654141561157e5760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204e65772054696d657374616d702063616e277420626520746860448201526d652070726576696f7573206f6e6560901b6064820152608401610d20565b50601655600190565b6015546000906115979034612334565b60155550600190565b6014546000906001600160a01b03838116911614806115cc57506013546001600160a01b038381169116145b156115d957506000919050565b6001600160a01b0382166000908152601960205260408120546015546115ff9190613eb0565b6001600160a01b0384166000908152601c6020908152604080832054600454601790935292205492935090916116359084613ec7565b61163f9190613efc565b6116499190613f10565b9392505050565b600061165a612340565b6001600160a01b0382166000908152601f602052604090205460ff16156116cf5760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c7265616479206578636c756465642066726f6d604482015263040e8c2f60e31b6064820152608401610d20565b506001600160a01b03166000908152601f60205260409020805460ff1916600190811790915590565b6000611702612340565b60105460ff16156117555760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e204275726e20697320616c72656164792073746f707065640000006044820152606401610d20565b60105460ff610100909104161515600114801561177f575060105462010000900460ff1615156001145b801561179957506010546301000000900460ff1615156001145b156117b65760405162461bcd60e51b8152600401610d2090613e45565b6010805460ff1916600117905550600190565b60006117d3612340565b50600655600190565b60006117e6612340565b6007546001600160a01b03838116911614156118505760405162461bcd60e51b815260206004820152602360248201527f4163636f756e7420697320616c7265616479207472656173757279206164647260448201526265737360e81b6064820152608401610d20565b50600780546001600160a01b0383166001600160a01b03199091161790556001919050565b61187d612340565b611887600061296b565b565b6000611893612340565b50600555600190565b60006118a6612340565b506010805464ff0000000019169055600190565b60006118c4612340565b506001600160a01b0382166000908152601e60209081526040808320805485151560ff199182168117909255601f909352922080549091169091179055600192915050565b6000611913612340565b60088211156119765760405162461bcd60e51b815260206004820152602960248201527f45524332303a205468652073656c6c207461782063616e2774206265206d6f7260448201526865207468656e20382560b81b6064820152608401610d20565b600980549083905560408051828152602081018590527f5e2deb0291797955e0066c5cebbc900e815e1099432b8f07462265a4f1c61b5191015b60405180910390a150600192915050565b60006119cb612340565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905284169063a9059cbb90604401602060405180830381600087803b158015611a1557600080fd5b505af1158015611a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4d9190613f28565b506001949350505050565b606060028054610d5d90613db5565b6000611a71612340565b60105462010000900460ff161515600114611ad85760405162461bcd60e51b815260206004820152602160248201527f5265666c656374696f6e20697320616c7265616479206e6f742073746f7070656044820152601960fa1b6064820152608401610d20565b506010805462ff000019169055600190565b60003380611b0a5760405162461bcd60e51b8152600401610d2090613e18565b6001600160a01b038416611b305760405162461bcd60e51b8152600401610d2090613e18565b6001600160a01b03841661dead1415611b815760405162461bcd60e51b815260206004820152601360248201527245524332303a2044656164204164647265737360681b6044820152606401610d20565b6001600160a01b038116600090815260176020526040902054831115611bf75760405162461bcd60e51b815260206004820152602560248201527f45524332303a20416d6f756e742065786365656473206163636f756e742062616044820152646c616e636560d81b6064820152608401610d20565b611074818585612454565b6000611c0c612340565b60105462010000900460ff1615611c655760405162461bcd60e51b815260206004820152601d60248201527f5265666c656374696f6e20697320616c72656164792073746f707065640000006044820152606401610d20565b60105460ff1615156001148015611c89575060105460ff6101009091041615156001145b8015611ca357506010546301000000900460ff1615156001145b15611cc05760405162461bcd60e51b8152600401610d2090613e45565b6010805462ff000019166201000017905550600190565b6000611ce1612340565b6000600854118015611cf557506000600954115b611d415760405162461bcd60e51b815260206004820181905260248201527f45524332303a2054617865732061726520616c72656164792072656d6f7665646044820152606401610d20565b600880546009805460009384905590839055604080518381526020810194909452919290917fcaf24a92738254645a1e260866df8998f2a8a7e4915fd123b906e5426e6e92c691015b60405180910390a16009546040805183815260208101929092527f5e2deb0291797955e0066c5cebbc900e815e1099432b8f07462265a4f1c61b51910160405180910390a160019250505090565b6000611de2612340565b6010546301000000900460ff1615611e3c5760405162461bcd60e51b815260206004820152601b60248201527f547265617375727920697320616c72656164792073746f7070656400000000006044820152606401610d20565b60105460ff1615156001148015611e60575060105460ff6101009091041615156001145b8015611e79575060105462010000900460ff1615156001145b15611e965760405162461bcd60e51b8152600401610d2090613e45565b6010805463ff0000001916630100000017905550600190565b6007546000906001600160a01b03163314611edc5760405162461bcd60e51b8152600401610d2090613df0565b600060125411611f2e5760405162461bcd60e51b815260206004820152601b60248201527f546865726520617265206e6f20746f6b656e7320746f207377617000000000006044820152606401610d20565b816012541015611f7a5760405162461bcd60e51b81526020600482015260176024820152762637bb9039bbb0b830b13632903932b33632b1ba34b7b760491b6044820152606401610d20565b600754611f90906001600160a01b03168361275f565b81601254611f9e9190613eb0565b601255506001919050565b60003363ffffffff813b161561200b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a2053656e6465722063616e2774206265206120636f6e747261636044820152601d60fa1b6064820152608401610d20565b610ded81846129bb565b600061201f612340565b600880546009805460059384905590839055604080518381526020810194909452919290917fcaf24a92738254645a1e260866df8998f2a8a7e4915fd123b906e5426e6e92c69101611d8a565b6000612076612340565b60105460ff1615156001146120d75760405162461bcd60e51b815260206004820152602160248201527f546f6b656e204275726e20697320616c7265616479206e6f742073746f7070656044820152601960fa1b6064820152608401610d20565b506010805460ff19169055600190565b60006120f1612340565b60088211156121535760405162461bcd60e51b815260206004820152602860248201527f45524332303a2054686520627579207461782063616e2774206265206d6f7265604482015267207468656e20382560c01b6064820152608401610d20565b600880549083905560408051828152602081018590527fcaf24a92738254645a1e260866df8998f2a8a7e4915fd123b906e5426e6e92c691016119b0565b600061219b612340565b6010546301000000900460ff1615156001146121f95760405162461bcd60e51b815260206004820152601b60248201527f547265617375727920697320616c72656164792073746f7070656400000000006044820152606401610d20565b506010805463ff00000019169055600190565b6000612216612340565b6001600160a01b0382166000908152601f602052604090205460ff1661228a5760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c726561647920696e636c756465642066726f6d604482015263040e8c2f60e31b6064820152608401610d20565b506001600160a01b03166000908152601f60205260409020805460ff19169055600190565b6122b7612340565b6001600160a01b03811661231c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d20565b6123258161296b565b50565b60006116498284613ec7565b60006116498284613f10565b6000546001600160a01b031633146118875760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d20565b6001600160a01b0383166123c05760405162461bcd60e51b8152600401610d2090613e18565b6001600160a01b0382166123e65760405162461bcd60e51b8152600401610d2090613e18565b6001600160a01b0383811660008181526018602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006116498284613eb0565b6000546001600160a01b03848116911614801561248957506001600160a01b0382166000908152601e602052604090205460ff165b1561249e57612499838383612c3a565b505050565b6001600160a01b0383166000908152601e602052604090205460ff16806124dd57506001600160a01b0382166000908152601e602052604090205460ff165b1561270057600a5460ff1615156001146125395760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610d20565b6001600160a01b0383166000908152601f602052604090205460ff16801561257a57506001600160a01b0382166000908152601f602052604090205460ff16155b156125a9576125898282612dbb565b8015612599575061259981612e42565b1561249957612499838383612eb2565b6001600160a01b0383166000908152601f602052604090205460ff161580156125ea57506001600160a01b0382166000908152601f602052604090205460ff165b15612608576125f881612e42565b15612499576124998383836131a3565b6001600160a01b0383166000908152601f602052604090205460ff16801561264857506001600160a01b0382166000908152601f602052604090205460ff165b15612499576000546001600160a01b038481169116148061267657506000546001600160a01b038381169116145b8061268957506001600160a01b03831630145b8061269c57506001600160a01b03821630145b156126ac57612499838383612c3a565b6001600160a01b0382166000908152601e602052604090205460ff16156126e6576126d681612e42565b1561249957612499838383612c3a565b6126f08282612dbb565b80156126d657506126d681612e42565b6000546001600160a01b038481169116148061272957506000546001600160a01b038381169116145b8061273c57506001600160a01b03831630145b8061274f57506001600160a01b03821630145b156126e657612499838383612c3a565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061279457612794613f5b565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156127e857600080fd5b505afa1580156127fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128209190613f71565b8160018151811061283357612833613f5b565b6001600160a01b0392831660209182029290920101526013546040516318cbafe560e01b81529116906318cbafe590612879908590600090869089904290600401613f8e565b600060405180830381600087803b15801561289357600080fd5b505af11580156128a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128cf9190810190613fff565b50505050565b6004546128e29082612448565b600455600b546128f29082612334565b600b556040518181526000906001600160a01b0384169060008051602061410d8339815191529060200160405180910390a3816001600160a01b03167f8b1897d4e7a3b42570088bb1182eb6518c96a754d44bc9edd4669568bfa983268260405161295f91815260200190565b60405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006129c6836115a0565b90506129ea836001600160a01b03166000908152601d602052604090205460ff1690565b15612a4e5760405162461bcd60e51b815260206004820152602e60248201527f45524332303a2041646472657373206973206578636c7564656420746f20636c60448201526d30b4b6903932b33632b1ba34b7b760911b6064820152608401610d20565b612a5883836133dc565b156124995760008111612abf5760405162461bcd60e51b815260206004820152602960248201527f45524332303a20436c61696d20616d6f756e742073686f756c64206265206d6f60448201526807265207468656e20360bc1b6064820152608401610d20565b6016546001600160a01b0384166000908152601b60205260409020544291612ae691613f10565b1115612b5a5760405162461bcd60e51b815260206004820152603b60248201527f45524332303a205265666c656374696f6e20636f6f6c20646f776e206973206960448201527f6d706c656d656e7465642c2074727920616761696e206c6174657200000000006064820152608401610d20565b6015546001600160a01b038416600081815260196020908152604080832094909455601b8152838220429055601c90528281208190559151909183156108fc02918491818181858888f19350505050158015612bba573d6000803e3d6000fd5b506001600160a01b0383166000908152601a6020526040902054612bde9082612334565b6001600160a01b0384166000818152601a6020526040908190209290925590517faba62311dcf381aba06c0e76b1bb8e427e7c715edb8c84fc169cc1d1f51ac84e90612c2d9084815260200190565b60405180910390a2505050565b6000546001600160a01b0383811691161480612c5e57506001600160a01b03821630145b15612cd3576001600160a01b038316600090815260176020526040902054612c869082612448565b6001600160a01b038085166000908152601760205260408082209390935590841681522054612cb59082612334565b6001600160a01b038316600090815260176020526040902055612d88565b612cfe612cdf83613587565b6001600160a01b0384166000908152601c602052604090205490612334565b6001600160a01b038084166000908152601c60209081526040808320949094556015546019825284832055918616815260179091522054612d3f9082612448565b6001600160a01b038085166000908152601760205260408082209390935590841681522054612d6e9082612334565b6001600160a01b0383166000908152601760205260409020555b816001600160a01b0316836001600160a01b031660008051602061410d8339815191528360405161243b91815260200190565b601054600090640100000000900460ff1615610ded57612dfa82612df4856001600160a01b031660009081526017602052604090205490565b90612334565b6005541015610ded5760405162461bcd60e51b815260206004820152601460248201527357616c6c6574206c696d6974206578636565647360601b6044820152606401610d20565b601054600090640100000000900460ff1615612eaa57600654821115612eaa5760405162461bcd60e51b815260206004820152601960248201527f5472616e73616374696f6e206c696d69742065786365656473000000000000006044820152606401610d20565b506001919050565b6000612ebc61361e565b90506000612ee06064612eda6008548661232890919063ffffffff16565b90613b0d565b90506000612eee8483612448565b9050612f1b612efc86613587565b6001600160a01b0387166000908152601c602052604090205490612334565b6001600160a01b038087166000908152601c60209081526040808320949094556015546019825284832055918916815260179091522054612f5c9085612448565b6001600160a01b038088166000908152601760205260408082209390935590871681522054612f8b9082612334565b6001600160a01b038616600090815260176020526040808220929092553081522054612fb79083612334565b3060009081526017602052604090205560018314156130095730600090815260176020526040902054612fea9083612448565b3060009081526017602052604090205561300485836128d5565b61311c565b8260021415613046573060009081526017602052604090205461302c9083612448565b306000908152601760205260409020556130048583613b19565b82600314156130b35760115461305c9083612334565b601155600d5461306c9083612334565b600d556040518281526001600160a01b038616907fb7489ef47c48c720c40f3a3d8ee43af2461787f8211836228289add459fd887c906020015b60405180910390a261311c565b826004141561311c576012546130c99083612334565b601255600e546130d99083612334565b600e556040518281526001600160a01b038616907f1929a4bace25a65ec09f6599a42b7e272b7b015dbf1ac423102375dc81d74e15906020015b60405180910390a25b60408051848152602081018490526001600160a01b038816917f43430960b1421ddf891d3754c233acfb8948fc4b9912cbd819ca4f09701fbf58910160405180910390a2846001600160a01b0316866001600160a01b031660008051602061410d8339815191528660405161319391815260200190565b60405180910390a3505050505050565b60006131ad61361e565b905060006131cb6064612eda6009548661232890919063ffffffff16565b905060006131d98483612448565b6001600160a01b0387166000908152601760205260409020549091506131ff9085612448565b6001600160a01b03808816600090815260176020526040808220939093559087168152205461322e9082612334565b6001600160a01b03861660009081526017602052604080822092909255308152205461325a9083612334565b30600090815260176020526040808220929092556001600160a01b0388168152205461329a576001600160a01b0385166000908152601c60205260408120555b82600114156132d757306000908152601760205260409020546132bd9083612448565b3060009081526017602052604090205561300486836128d5565b826002141561331457306000908152601760205260409020546132fa9083612448565b306000908152601760205260409020556130048683613bf4565b82600314156133785760115461332a9083612334565b601155600d5461333a9083612334565b600d556040518281526001600160a01b038716907fb7489ef47c48c720c40f3a3d8ee43af2461787f8211836228289add459fd887c906020016130a6565b826004141561311c5760125461338e9083612334565b601255600e5461339e9083612334565b600e556040518281526001600160a01b038716907f1929a4bace25a65ec09f6599a42b7e272b7b015dbf1ac423102375dc81d74e1590602001613113565b6001600160a01b0382166000908152601f6020526040812054819060ff166134eb576000613409856115a0565b9050600081116134665760405162461bcd60e51b815260206004820152602260248201527f436c61696d20616d6f756e742073686f756c64206265206d6f7265207468656e604482015261020360f41b6064820152608401610d20565b6001600160a01b0385166000908152601d602052604090205460ff16156134df5760405162461bcd60e51b815260206004820152602760248201527f41646472657373206973206578636c7564656420746f20636c61696d207265666044820152663632b1ba34b7b760c91b6064820152608401610d20565b5060019150610df19050565b6001600160a01b0384166000908152601760205260408120546010805463ff0000ff1916630100000117905590613521866115a0565b6010805462ff000019166201000017905590508415613562576135448583613f10565b6001600160a01b038716600090815260176020526040902055613568565b600f8290555b8015613577576001925061357c565b600092505b829350505050610df1565b6014546000906001600160a01b03838116911614806135b357506013546001600160a01b038381169116145b156135c057506000919050565b6001600160a01b0382166000908152601960205260408120546015546135e69190613eb0565b905060045461360a846001600160a01b031660009081526017602052604090205490565b6136149083613ec7565b6116499190613efc565b6000806000600242444532433a604051602001613640969594939291906140bd565b6040516020818303038152906040528051906020012060001c61366391906140f8565b90506000600342444532433a604051602001613684969594939291906140bd565b6040516020818303038152906040528051906020012060001c6136a791906140f8565b60105490915060ff16151560011480156136ce575060105460ff6101009091041615156001145b80156136e7575060105462010000900460ff1615156001145b156136f55760049250613b05565b60105460ff1615156001148015613719575060105460ff6101009091041615156001145b801561373357506010546301000000900460ff1615156001145b156137415760039250613b05565b60105460ff1615156001148015613765575060105462010000900460ff1615156001145b801561377f57506010546301000000900460ff1615156001145b1561378d5760029250613b05565b60105460ff61010090910416151560011480156137b7575060105462010000900460ff1615156001145b80156137d157506010546301000000900460ff1615156001145b156137df5760019250613b05565b60105460ff1615156001148015613803575060105460ff6101009091041615156001145b1561382957816138165760039250613b05565b816001141561382457600492505b613b05565b60105460ff161515600114801561384d575060105462010000900460ff1615156001145b1561386057816138165760029250613b05565b60105460ff161515600114801561388557506010546301000000900460ff1615156001145b156138aa57816138985760029250613b05565b81600114156138245760039250613b05565b60105460ff61010090910416151560011480156138d4575060105462010000900460ff1615156001145b156138e757816138165760019250613b05565b60105460ff610100909104161515600114801561391257506010546301000000900460ff1615156001145b1561392557816138985760019250613b05565b60105462010000900460ff161515600114801561395057506010546301000000900460ff1615156001145b1561397557816139635760019250613b05565b81600114156138245760029250613b05565b60105460ff161515600114156139d757600342444532433a6040516020016139a2969594939291906140bd565b6040516020818303038152906040528051906020012060001c6139c591906140f8565b6139d0906002613f10565b9250613b05565b60105460ff61010090910416151560011415613a1f57806139fb5760019250613b05565b8060011415613a0d5760039250613b05565b80600214156138245760049250613b05565b60105462010000900460ff16151560011415613a555780613a435760019250613b05565b8060011415613a0d5760029250613b05565b6010546301000000900460ff16151560011415613ab757600342444532433a604051602001613a89969594939291906140bd565b6040516020818303038152906040528051906020012060001c613aac91906140f8565b6139d0906001613f10565b600442444532433a604051602001613ad4969594939291906140bd565b6040516020818303038152906040528051906020012060001c613af791906140f8565b613b02906001613f10565b92505b509092915050565b60006116498284613efc565b8015613bf0576014546001600160a01b0316600090815260176020526040812054829190613b479083612334565b6014546001600160a01b03166000908152601760205260409020819055600c54909150613b749084612334565b600c556014546040518481526001600160a01b039182169186169060008051602061410d8339815191529060200160405180910390a3836001600160a01b03167ffb42d133eca0812491d47088ea70321250d6ab9cfc23a318f640f7def1cb201c84604051613be591815260200190565b60405180910390a250505b5050565b8015613bf0576000600f5482613c0a9190613eb0565b6014546001600160a01b031660009081526017602052604081205491925090613b479083612334565b6001600160a01b038116811461232557600080fd5b600060208284031215613c5a57600080fd5b813561164981613c33565b600060208083528351808285015260005b81811015613c9257858101830151858201604001528201613c76565b81811115613ca4576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215613ccd57600080fd5b8235613cd881613c33565b946020939093013593505050565b600080600060608486031215613cfb57600080fd5b8335613d0681613c33565b92506020840135613d1681613c33565b929592945050506040919091013590565b600060208284031215613d3957600080fd5b5035919050565b801515811461232557600080fd5b60008060408385031215613d6157600080fd5b8235613d6c81613c33565b91506020830135613d7c81613d40565b809150509250929050565b60008060408385031215613d9a57600080fd5b8235613da581613c33565b91506020830135613d7c81613c33565b600181811c90821680613dc957607f821691505b60208210811415613dea57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600e908201526d547265617375727920726f6c652160901b604082015260600190565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b60208082526035908201527f416c6c20666f75722066756e6374696f6e732063616e2774206765742073746f60408201527470706564206174207468652073616d652074696d6560581b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082821015613ec257613ec2613e9a565b500390565b6000816000190483118215151615613ee157613ee1613e9a565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613f0b57613f0b613ee6565b500490565b60008219821115613f2357613f23613e9a565b500190565b600060208284031215613f3a57600080fd5b815161164981613d40565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215613f8357600080fd5b815161164981613c33565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613fde5784516001600160a01b031683529383019391830191600101613fb9565b50506001600160a01b03969096166060850152505050608001529392505050565b6000602080838503121561401257600080fd5b825167ffffffffffffffff8082111561402a57600080fd5b818501915085601f83011261403e57600080fd5b81518181111561405057614050613f45565b8060051b604051601f19603f8301168101818110858211171561407557614075613f45565b60405291825284820192508381018501918883111561409357600080fd5b938501935b828510156140b157845184529385019392850192614098565b98975050505050505050565b95865260208601949094526040850192909252606090811b6bffffffffffffffffffffffff1916908401526074830152609482015260b40190565b60008261410757614107613ee6565b50069056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208fb67caf8eb638ba109c433c82d0db4db7808920b34f997f508567e5ff6d7be564736f6c634300080900338c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92500000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000a7b1918ebc85e85994ef97be96cb512cf7882530000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000000000000000000000001a784379d99db4200000000000000000000000000000000000000000000000001a784379d99db4200000000000000000000000000000000000000000000000000000000000000000000084d616e61436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d4e430000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106104145760003560e01c8063715018a61161021e578063b4fe8f6a11610123578063d89135cd116100ab578063dd62ed3e1161007a578063dd62ed3e14610be1578063ddd043bc14610c27578063e17c4c7414610c3c578063f2fde38b14610c5c578063f9d50bf514610c7c57600080fd5b8063d89135cd14610b74578063dae1820d14610b8a578063dc1052e214610ba0578063dc651e2d14610bc057600080fd5b8063bbc0c742116100f2578063bbc0c74214610ae1578063c8cd94e214610afb578063cb4ca63114610b10578063cc1776d314610b49578063d8485d5514610b5f57600080fd5b8063b4fe8f6a14610a77578063b747b12714610a8c578063ba53b52214610aa1578063bba4e09b14610ac157600080fd5b80638da5cb5b116101a657806398c8537d1161017557806398c8537d146109f7578063a5332f2d14610a0c578063a9059cbb14610a22578063b29288b914610a42578063b35012e314610a5757600080fd5b80638da5cb5b1461095e5780639045be581461097c5780639579d514146109b557806395d89b41146109e257600080fd5b806380c581d1116101ed57806380c581d1146108ce57806386285bb4146108ee578063897534a9146109085780638cd09d501461091e5780638ce311c71461093e57600080fd5b8063715018a61461086c578063728d41c914610883578063751039fc146108a35780638036d590146108b857600080fd5b806343cc8c2a1161032457806360d1259e116102ac57806364f5a5bb1161027b57806364f5a5bb146107ca5780636605bfda146107ea57806366a88d961461080a578063688d12ed1461082057806370a082311461083657600080fd5b806360d1259e1461075f57806361d027b31461077f57806361db24461461079f57806363748679146107b557600080fd5b80634cb36a9b116102f35780634cb36a9b146106d45780634e6be544146106f45780634f7041a5146106fc578063588d5189146107125780635facf12e1461073f57600080fd5b806343cc8c2a14610635578063452ed4f1146106655780634a62bb65146106855780634cac88f4146106a757600080fd5b806323b872dd116103a7578063313ce56711610376578063313ce567146105a857806335acaf40146105ca5780633732e214146105df5780633e8c4873146105f557806342966c681461061557600080fd5b806323b872dd1461053e57806325fd4f5e1461055e57806327334a0814610573578063293230b81461059357600080fd5b806309b98866116103e357806309b98866146104cf578063134dfcd8146104f3578063136a6be11461051357806318160ddd1461052957600080fd5b806305f82a451461042057806306fdde03146104555780630758d92414610477578063095ea7b3146104af57600080fd5b3661041b57005b600080fd5b34801561042c57600080fd5b5061044061043b366004613c48565b610c9b565b60405190151581526020015b60405180910390f35b34801561046157600080fd5b5061046a610d4e565b60405161044c9190613c65565b34801561048357600080fd5b50601354610497906001600160a01b031681565b6040516001600160a01b03909116815260200161044c565b3480156104bb57600080fd5b506104406104ca366004613cba565b610de0565b3480156104db57600080fd5b506104e560165481565b60405190815260200161044c565b3480156104ff57600080fd5b5061044061050e366004613c48565b610df7565b34801561051f57600080fd5b506104e560125481565b34801561053557600080fd5b506004546104e5565b34801561054a57600080fd5b50610440610559366004613ce6565b610e59565b34801561056a57600080fd5b5061044061107e565b34801561057f57600080fd5b5061044061058e366004613c48565b611150565b34801561059f57600080fd5b50610440611207565b3480156105b457600080fd5b5060035460405160ff909116815260200161044c565b3480156105d657600080fd5b50610440611278565b3480156105eb57600080fd5b506104e5600d5481565b34801561060157600080fd5b50610440610610366004613d27565b6112f0565b34801561062157600080fd5b50610440610630366004613d27565b611400565b34801561064157600080fd5b50610440610650366004613c48565b601e6020526000908152604090205460ff1681565b34801561067157600080fd5b50601454610497906001600160a01b031681565b34801561069157600080fd5b5060105461044090640100000000900460ff1681565b3480156106b357600080fd5b506104e56106c2366004613c48565b601b6020526000908152604090205481565b3480156106e057600080fd5b506104406106ef366004613d27565b61150b565b610440611587565b34801561070857600080fd5b506104e560085481565b34801561071e57600080fd5b506104e561072d366004613c48565b601a6020526000908152604090205481565b34801561074b57600080fd5b506104e561075a366004613c48565b6115a0565b34801561076b57600080fd5b5061044061077a366004613c48565b611650565b34801561078b57600080fd5b50600754610497906001600160a01b031681565b3480156107ab57600080fd5b506104e560155481565b3480156107c157600080fd5b506104406116f8565b3480156107d657600080fd5b506104406107e5366004613d27565b6117c9565b3480156107f657600080fd5b50610440610805366004613c48565b6117dc565b34801561081657600080fd5b506104e560055481565b34801561082c57600080fd5b506104e5600c5481565b34801561084257600080fd5b506104e5610851366004613c48565b6001600160a01b031660009081526017602052604090205490565b34801561087857600080fd5b50610881611875565b005b34801561088f57600080fd5b5061044061089e366004613d27565b611889565b3480156108af57600080fd5b5061044061189c565b3480156108c457600080fd5b506104e560065481565b3480156108da57600080fd5b506104406108e9366004613d4e565b6118ba565b3480156108fa57600080fd5b506010546104409060ff1681565b34801561091457600080fd5b506104e5600e5481565b34801561092a57600080fd5b50610440610939366004613d27565b611909565b34801561094a57600080fd5b50610440610959366004613ce6565b6119c1565b34801561096a57600080fd5b506000546001600160a01b0316610497565b34801561098857600080fd5b50610440610997366004613c48565b6001600160a01b03166000908152601d602052604090205460ff1690565b3480156109c157600080fd5b506104e56109d0366004613c48565b60196020526000908152604090205481565b3480156109ee57600080fd5b5061046a611a58565b348015610a0357600080fd5b50610440611a67565b348015610a1857600080fd5b506104e560115481565b348015610a2e57600080fd5b50610440610a3d366004613cba565b611aea565b348015610a4e57600080fd5b50610440611c02565b348015610a6357600080fd5b506010546104409062010000900460ff1681565b348015610a8357600080fd5b50610440611cd7565b348015610a9857600080fd5b50610440611dd8565b348015610aad57600080fd5b50610440610abc366004613d27565b611eaf565b348015610acd57600080fd5b50610440610adc366004613d27565b611fa9565b348015610aed57600080fd5b50600a546104409060ff1681565b348015610b0757600080fd5b50610440612015565b348015610b1c57600080fd5b50610440610b2b366004613c48565b6001600160a01b03166000908152601f602052604090205460ff1690565b348015610b5557600080fd5b506104e560095481565b348015610b6b57600080fd5b5061044061206c565b348015610b8057600080fd5b506104e5600b5481565b348015610b9657600080fd5b506104e5600f5481565b348015610bac57600080fd5b50610440610bbb366004613d27565b6120e7565b348015610bcc57600080fd5b50601054610440906301000000900460ff1681565b348015610bed57600080fd5b506104e5610bfc366004613d87565b6001600160a01b03918216600090815260186020908152604080832093909416825291909152205490565b348015610c3357600080fd5b50610440612191565b348015610c4857600080fd5b50610440610c57366004613c48565b61220c565b348015610c6857600080fd5b50610881610c77366004613c48565b6122af565b348015610c8857600080fd5b5060105461044090610100900460ff1681565b6000610ca5612340565b6001600160a01b0382166000908152601d602052604090205460ff16610d295760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204163636f756e74206973206e6f74206578636c75646564206660448201526d3937b6903932b33632b1ba34b7b760911b60648201526084015b60405180910390fd5b506001600160a01b03166000908152601d60205260409020805460ff19169055600190565b606060018054610d5d90613db5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8990613db5565b8015610dd65780601f10610dab57610100808354040283529160200191610dd6565b820191906000526020600020905b815481529060010190602001808311610db957829003601f168201915b5050505050905090565b6000610ded33848461239a565b5060015b92915050565b6007546000906001600160a01b03163314610e245760405162461bcd60e51b8152600401610d2090613df0565b6040516001600160a01b038316904780156108fc02916000818181858888f19350505050158015610ded573d6000803e3d6000fd5b60006001600160a01b038416610e815760405162461bcd60e51b8152600401610d2090613e18565b6001600160a01b038316610ea75760405162461bcd60e51b8152600401610d2090613e18565b6001600160a01b03831661dead1415610ef85760405162461bcd60e51b815260206004820152601360248201527245524332303a2044656164204164647265737360681b6044820152606401610d20565b6001600160a01b0384166000908152601860209081526040808320338452909152902054821115610f6b5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20496e73756666696369656e7420616c6c6f77616e63652e00006044820152606401610d20565b6001600160a01b038416600090815260176020526040902054821115610fea5760405162461bcd60e51b815260206004820152602e60248201527f45524332303a20416d6f756e7420657863656564732073656e6465722773206160448201526d63636f756e742062616c616e636560901b6064820152608401610d20565b6001600160a01b038416600090815260186020908152604080832033845290915290205460001914611069576001600160a01b03841660009081526018602090815260408083203384529091529020546110449083612448565b6001600160a01b03851660009081526018602090815260408083203384529091529020555b611074848484612454565b5060019392505050565b6000611088612340565b601054610100900460ff16156110e05760405162461bcd60e51b815260206004820152601a60248201527f4175746f204c5020697320616c72656164792073746f707065640000000000006044820152606401610d20565b60105460ff1615156001148015611104575060105462010000900460ff1615156001145b801561111e57506010546301000000900460ff1615156001145b1561113b5760405162461bcd60e51b8152600401610d2090613e45565b6010805461ff00191661010017905550600190565b600061115a612340565b6001600160a01b0382166000908152601d602052604090205460ff16156111de5760405162461bcd60e51b815260206004820152603260248201527f45524332303a204163636f756e7420697320616c7265616479206578636c756460448201527132b210333937b6903932b33632b1ba34b7b760711b6064820152608401610d20565b506001600160a01b03166000908152601d60205260409020805460ff1916600190811790915590565b6000611211612340565b600a5460ff16156112645760405162461bcd60e51b815260206004820181905260248201527f45524332303a2054726164696e6720697320616c7265616479206163746976656044820152606401610d20565b50600a805460ff1916600190811790915590565b6000611282612340565b60105460ff6101009091041615156001146112df5760405162461bcd60e51b815260206004820152601e60248201527f4175746f204c5020697320616c7265616479206e6f742073746f7070656400006044820152606401610d20565b506010805461ff0019169055600190565b6007546000906001600160a01b0316331461131d5760405162461bcd60e51b8152600401610d2090613df0565b60006011541161136f5760405162461bcd60e51b815260206004820152601b60248201527f546865726520617265206e6f20746f6b656e7320746f207377617000000000006044820152606401610d20565b8160115410156113bb5760405162461bcd60e51b81526020600482015260176024820152762637bb9039bbb0b830b13632903932b33632b1ba34b7b760491b6044820152606401610d20565b476113c6308461275f565b826011546113d49190613eb0565b60115560006113e34783612448565b6015549091506113f39082612334565b6015555060019392505050565b336000818152601760205260408120549091908311156114755760405162461bcd60e51b815260206004820152602a60248201527f45524332303a204275726e20416d6f756e742065786365656473206163636f756044820152696e742062616c616e636560b01b6064820152608401610d20565b600083116114c55760405162461bcd60e51b815260206004820181905260248201527f45524332303a20456e74657220736f6d6520616d6f756e7420746f206275726e6044820152606401610d20565b6001600160a01b0381166000908152601760205260409020546114e89084612448565b6001600160a01b038216600090815260176020526040902055610ded81846128d5565b6000611515612340565b81601654141561157e5760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204e65772054696d657374616d702063616e277420626520746860448201526d652070726576696f7573206f6e6560901b6064820152608401610d20565b50601655600190565b6015546000906115979034612334565b60155550600190565b6014546000906001600160a01b03838116911614806115cc57506013546001600160a01b038381169116145b156115d957506000919050565b6001600160a01b0382166000908152601960205260408120546015546115ff9190613eb0565b6001600160a01b0384166000908152601c6020908152604080832054600454601790935292205492935090916116359084613ec7565b61163f9190613efc565b6116499190613f10565b9392505050565b600061165a612340565b6001600160a01b0382166000908152601f602052604090205460ff16156116cf5760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c7265616479206578636c756465642066726f6d604482015263040e8c2f60e31b6064820152608401610d20565b506001600160a01b03166000908152601f60205260409020805460ff1916600190811790915590565b6000611702612340565b60105460ff16156117555760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e204275726e20697320616c72656164792073746f707065640000006044820152606401610d20565b60105460ff610100909104161515600114801561177f575060105462010000900460ff1615156001145b801561179957506010546301000000900460ff1615156001145b156117b65760405162461bcd60e51b8152600401610d2090613e45565b6010805460ff1916600117905550600190565b60006117d3612340565b50600655600190565b60006117e6612340565b6007546001600160a01b03838116911614156118505760405162461bcd60e51b815260206004820152602360248201527f4163636f756e7420697320616c7265616479207472656173757279206164647260448201526265737360e81b6064820152608401610d20565b50600780546001600160a01b0383166001600160a01b03199091161790556001919050565b61187d612340565b611887600061296b565b565b6000611893612340565b50600555600190565b60006118a6612340565b506010805464ff0000000019169055600190565b60006118c4612340565b506001600160a01b0382166000908152601e60209081526040808320805485151560ff199182168117909255601f909352922080549091169091179055600192915050565b6000611913612340565b60088211156119765760405162461bcd60e51b815260206004820152602960248201527f45524332303a205468652073656c6c207461782063616e2774206265206d6f7260448201526865207468656e20382560b81b6064820152608401610d20565b600980549083905560408051828152602081018590527f5e2deb0291797955e0066c5cebbc900e815e1099432b8f07462265a4f1c61b5191015b60405180910390a150600192915050565b60006119cb612340565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905284169063a9059cbb90604401602060405180830381600087803b158015611a1557600080fd5b505af1158015611a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4d9190613f28565b506001949350505050565b606060028054610d5d90613db5565b6000611a71612340565b60105462010000900460ff161515600114611ad85760405162461bcd60e51b815260206004820152602160248201527f5265666c656374696f6e20697320616c7265616479206e6f742073746f7070656044820152601960fa1b6064820152608401610d20565b506010805462ff000019169055600190565b60003380611b0a5760405162461bcd60e51b8152600401610d2090613e18565b6001600160a01b038416611b305760405162461bcd60e51b8152600401610d2090613e18565b6001600160a01b03841661dead1415611b815760405162461bcd60e51b815260206004820152601360248201527245524332303a2044656164204164647265737360681b6044820152606401610d20565b6001600160a01b038116600090815260176020526040902054831115611bf75760405162461bcd60e51b815260206004820152602560248201527f45524332303a20416d6f756e742065786365656473206163636f756e742062616044820152646c616e636560d81b6064820152608401610d20565b611074818585612454565b6000611c0c612340565b60105462010000900460ff1615611c655760405162461bcd60e51b815260206004820152601d60248201527f5265666c656374696f6e20697320616c72656164792073746f707065640000006044820152606401610d20565b60105460ff1615156001148015611c89575060105460ff6101009091041615156001145b8015611ca357506010546301000000900460ff1615156001145b15611cc05760405162461bcd60e51b8152600401610d2090613e45565b6010805462ff000019166201000017905550600190565b6000611ce1612340565b6000600854118015611cf557506000600954115b611d415760405162461bcd60e51b815260206004820181905260248201527f45524332303a2054617865732061726520616c72656164792072656d6f7665646044820152606401610d20565b600880546009805460009384905590839055604080518381526020810194909452919290917fcaf24a92738254645a1e260866df8998f2a8a7e4915fd123b906e5426e6e92c691015b60405180910390a16009546040805183815260208101929092527f5e2deb0291797955e0066c5cebbc900e815e1099432b8f07462265a4f1c61b51910160405180910390a160019250505090565b6000611de2612340565b6010546301000000900460ff1615611e3c5760405162461bcd60e51b815260206004820152601b60248201527f547265617375727920697320616c72656164792073746f7070656400000000006044820152606401610d20565b60105460ff1615156001148015611e60575060105460ff6101009091041615156001145b8015611e79575060105462010000900460ff1615156001145b15611e965760405162461bcd60e51b8152600401610d2090613e45565b6010805463ff0000001916630100000017905550600190565b6007546000906001600160a01b03163314611edc5760405162461bcd60e51b8152600401610d2090613df0565b600060125411611f2e5760405162461bcd60e51b815260206004820152601b60248201527f546865726520617265206e6f20746f6b656e7320746f207377617000000000006044820152606401610d20565b816012541015611f7a5760405162461bcd60e51b81526020600482015260176024820152762637bb9039bbb0b830b13632903932b33632b1ba34b7b760491b6044820152606401610d20565b600754611f90906001600160a01b03168361275f565b81601254611f9e9190613eb0565b601255506001919050565b60003363ffffffff813b161561200b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a2053656e6465722063616e2774206265206120636f6e747261636044820152601d60fa1b6064820152608401610d20565b610ded81846129bb565b600061201f612340565b600880546009805460059384905590839055604080518381526020810194909452919290917fcaf24a92738254645a1e260866df8998f2a8a7e4915fd123b906e5426e6e92c69101611d8a565b6000612076612340565b60105460ff1615156001146120d75760405162461bcd60e51b815260206004820152602160248201527f546f6b656e204275726e20697320616c7265616479206e6f742073746f7070656044820152601960fa1b6064820152608401610d20565b506010805460ff19169055600190565b60006120f1612340565b60088211156121535760405162461bcd60e51b815260206004820152602860248201527f45524332303a2054686520627579207461782063616e2774206265206d6f7265604482015267207468656e20382560c01b6064820152608401610d20565b600880549083905560408051828152602081018590527fcaf24a92738254645a1e260866df8998f2a8a7e4915fd123b906e5426e6e92c691016119b0565b600061219b612340565b6010546301000000900460ff1615156001146121f95760405162461bcd60e51b815260206004820152601b60248201527f547265617375727920697320616c72656164792073746f7070656400000000006044820152606401610d20565b506010805463ff00000019169055600190565b6000612216612340565b6001600160a01b0382166000908152601f602052604090205460ff1661228a5760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c726561647920696e636c756465642066726f6d604482015263040e8c2f60e31b6064820152608401610d20565b506001600160a01b03166000908152601f60205260409020805460ff19169055600190565b6122b7612340565b6001600160a01b03811661231c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d20565b6123258161296b565b50565b60006116498284613ec7565b60006116498284613f10565b6000546001600160a01b031633146118875760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d20565b6001600160a01b0383166123c05760405162461bcd60e51b8152600401610d2090613e18565b6001600160a01b0382166123e65760405162461bcd60e51b8152600401610d2090613e18565b6001600160a01b0383811660008181526018602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006116498284613eb0565b6000546001600160a01b03848116911614801561248957506001600160a01b0382166000908152601e602052604090205460ff165b1561249e57612499838383612c3a565b505050565b6001600160a01b0383166000908152601e602052604090205460ff16806124dd57506001600160a01b0382166000908152601e602052604090205460ff165b1561270057600a5460ff1615156001146125395760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610d20565b6001600160a01b0383166000908152601f602052604090205460ff16801561257a57506001600160a01b0382166000908152601f602052604090205460ff16155b156125a9576125898282612dbb565b8015612599575061259981612e42565b1561249957612499838383612eb2565b6001600160a01b0383166000908152601f602052604090205460ff161580156125ea57506001600160a01b0382166000908152601f602052604090205460ff165b15612608576125f881612e42565b15612499576124998383836131a3565b6001600160a01b0383166000908152601f602052604090205460ff16801561264857506001600160a01b0382166000908152601f602052604090205460ff165b15612499576000546001600160a01b038481169116148061267657506000546001600160a01b038381169116145b8061268957506001600160a01b03831630145b8061269c57506001600160a01b03821630145b156126ac57612499838383612c3a565b6001600160a01b0382166000908152601e602052604090205460ff16156126e6576126d681612e42565b1561249957612499838383612c3a565b6126f08282612dbb565b80156126d657506126d681612e42565b6000546001600160a01b038481169116148061272957506000546001600160a01b038381169116145b8061273c57506001600160a01b03831630145b8061274f57506001600160a01b03821630145b156126e657612499838383612c3a565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061279457612794613f5b565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156127e857600080fd5b505afa1580156127fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128209190613f71565b8160018151811061283357612833613f5b565b6001600160a01b0392831660209182029290920101526013546040516318cbafe560e01b81529116906318cbafe590612879908590600090869089904290600401613f8e565b600060405180830381600087803b15801561289357600080fd5b505af11580156128a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128cf9190810190613fff565b50505050565b6004546128e29082612448565b600455600b546128f29082612334565b600b556040518181526000906001600160a01b0384169060008051602061410d8339815191529060200160405180910390a3816001600160a01b03167f8b1897d4e7a3b42570088bb1182eb6518c96a754d44bc9edd4669568bfa983268260405161295f91815260200190565b60405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006129c6836115a0565b90506129ea836001600160a01b03166000908152601d602052604090205460ff1690565b15612a4e5760405162461bcd60e51b815260206004820152602e60248201527f45524332303a2041646472657373206973206578636c7564656420746f20636c60448201526d30b4b6903932b33632b1ba34b7b760911b6064820152608401610d20565b612a5883836133dc565b156124995760008111612abf5760405162461bcd60e51b815260206004820152602960248201527f45524332303a20436c61696d20616d6f756e742073686f756c64206265206d6f60448201526807265207468656e20360bc1b6064820152608401610d20565b6016546001600160a01b0384166000908152601b60205260409020544291612ae691613f10565b1115612b5a5760405162461bcd60e51b815260206004820152603b60248201527f45524332303a205265666c656374696f6e20636f6f6c20646f776e206973206960448201527f6d706c656d656e7465642c2074727920616761696e206c6174657200000000006064820152608401610d20565b6015546001600160a01b038416600081815260196020908152604080832094909455601b8152838220429055601c90528281208190559151909183156108fc02918491818181858888f19350505050158015612bba573d6000803e3d6000fd5b506001600160a01b0383166000908152601a6020526040902054612bde9082612334565b6001600160a01b0384166000818152601a6020526040908190209290925590517faba62311dcf381aba06c0e76b1bb8e427e7c715edb8c84fc169cc1d1f51ac84e90612c2d9084815260200190565b60405180910390a2505050565b6000546001600160a01b0383811691161480612c5e57506001600160a01b03821630145b15612cd3576001600160a01b038316600090815260176020526040902054612c869082612448565b6001600160a01b038085166000908152601760205260408082209390935590841681522054612cb59082612334565b6001600160a01b038316600090815260176020526040902055612d88565b612cfe612cdf83613587565b6001600160a01b0384166000908152601c602052604090205490612334565b6001600160a01b038084166000908152601c60209081526040808320949094556015546019825284832055918616815260179091522054612d3f9082612448565b6001600160a01b038085166000908152601760205260408082209390935590841681522054612d6e9082612334565b6001600160a01b0383166000908152601760205260409020555b816001600160a01b0316836001600160a01b031660008051602061410d8339815191528360405161243b91815260200190565b601054600090640100000000900460ff1615610ded57612dfa82612df4856001600160a01b031660009081526017602052604090205490565b90612334565b6005541015610ded5760405162461bcd60e51b815260206004820152601460248201527357616c6c6574206c696d6974206578636565647360601b6044820152606401610d20565b601054600090640100000000900460ff1615612eaa57600654821115612eaa5760405162461bcd60e51b815260206004820152601960248201527f5472616e73616374696f6e206c696d69742065786365656473000000000000006044820152606401610d20565b506001919050565b6000612ebc61361e565b90506000612ee06064612eda6008548661232890919063ffffffff16565b90613b0d565b90506000612eee8483612448565b9050612f1b612efc86613587565b6001600160a01b0387166000908152601c602052604090205490612334565b6001600160a01b038087166000908152601c60209081526040808320949094556015546019825284832055918916815260179091522054612f5c9085612448565b6001600160a01b038088166000908152601760205260408082209390935590871681522054612f8b9082612334565b6001600160a01b038616600090815260176020526040808220929092553081522054612fb79083612334565b3060009081526017602052604090205560018314156130095730600090815260176020526040902054612fea9083612448565b3060009081526017602052604090205561300485836128d5565b61311c565b8260021415613046573060009081526017602052604090205461302c9083612448565b306000908152601760205260409020556130048583613b19565b82600314156130b35760115461305c9083612334565b601155600d5461306c9083612334565b600d556040518281526001600160a01b038616907fb7489ef47c48c720c40f3a3d8ee43af2461787f8211836228289add459fd887c906020015b60405180910390a261311c565b826004141561311c576012546130c99083612334565b601255600e546130d99083612334565b600e556040518281526001600160a01b038616907f1929a4bace25a65ec09f6599a42b7e272b7b015dbf1ac423102375dc81d74e15906020015b60405180910390a25b60408051848152602081018490526001600160a01b038816917f43430960b1421ddf891d3754c233acfb8948fc4b9912cbd819ca4f09701fbf58910160405180910390a2846001600160a01b0316866001600160a01b031660008051602061410d8339815191528660405161319391815260200190565b60405180910390a3505050505050565b60006131ad61361e565b905060006131cb6064612eda6009548661232890919063ffffffff16565b905060006131d98483612448565b6001600160a01b0387166000908152601760205260409020549091506131ff9085612448565b6001600160a01b03808816600090815260176020526040808220939093559087168152205461322e9082612334565b6001600160a01b03861660009081526017602052604080822092909255308152205461325a9083612334565b30600090815260176020526040808220929092556001600160a01b0388168152205461329a576001600160a01b0385166000908152601c60205260408120555b82600114156132d757306000908152601760205260409020546132bd9083612448565b3060009081526017602052604090205561300486836128d5565b826002141561331457306000908152601760205260409020546132fa9083612448565b306000908152601760205260409020556130048683613bf4565b82600314156133785760115461332a9083612334565b601155600d5461333a9083612334565b600d556040518281526001600160a01b038716907fb7489ef47c48c720c40f3a3d8ee43af2461787f8211836228289add459fd887c906020016130a6565b826004141561311c5760125461338e9083612334565b601255600e5461339e9083612334565b600e556040518281526001600160a01b038716907f1929a4bace25a65ec09f6599a42b7e272b7b015dbf1ac423102375dc81d74e1590602001613113565b6001600160a01b0382166000908152601f6020526040812054819060ff166134eb576000613409856115a0565b9050600081116134665760405162461bcd60e51b815260206004820152602260248201527f436c61696d20616d6f756e742073686f756c64206265206d6f7265207468656e604482015261020360f41b6064820152608401610d20565b6001600160a01b0385166000908152601d602052604090205460ff16156134df5760405162461bcd60e51b815260206004820152602760248201527f41646472657373206973206578636c7564656420746f20636c61696d207265666044820152663632b1ba34b7b760c91b6064820152608401610d20565b5060019150610df19050565b6001600160a01b0384166000908152601760205260408120546010805463ff0000ff1916630100000117905590613521866115a0565b6010805462ff000019166201000017905590508415613562576135448583613f10565b6001600160a01b038716600090815260176020526040902055613568565b600f8290555b8015613577576001925061357c565b600092505b829350505050610df1565b6014546000906001600160a01b03838116911614806135b357506013546001600160a01b038381169116145b156135c057506000919050565b6001600160a01b0382166000908152601960205260408120546015546135e69190613eb0565b905060045461360a846001600160a01b031660009081526017602052604090205490565b6136149083613ec7565b6116499190613efc565b6000806000600242444532433a604051602001613640969594939291906140bd565b6040516020818303038152906040528051906020012060001c61366391906140f8565b90506000600342444532433a604051602001613684969594939291906140bd565b6040516020818303038152906040528051906020012060001c6136a791906140f8565b60105490915060ff16151560011480156136ce575060105460ff6101009091041615156001145b80156136e7575060105462010000900460ff1615156001145b156136f55760049250613b05565b60105460ff1615156001148015613719575060105460ff6101009091041615156001145b801561373357506010546301000000900460ff1615156001145b156137415760039250613b05565b60105460ff1615156001148015613765575060105462010000900460ff1615156001145b801561377f57506010546301000000900460ff1615156001145b1561378d5760029250613b05565b60105460ff61010090910416151560011480156137b7575060105462010000900460ff1615156001145b80156137d157506010546301000000900460ff1615156001145b156137df5760019250613b05565b60105460ff1615156001148015613803575060105460ff6101009091041615156001145b1561382957816138165760039250613b05565b816001141561382457600492505b613b05565b60105460ff161515600114801561384d575060105462010000900460ff1615156001145b1561386057816138165760029250613b05565b60105460ff161515600114801561388557506010546301000000900460ff1615156001145b156138aa57816138985760029250613b05565b81600114156138245760039250613b05565b60105460ff61010090910416151560011480156138d4575060105462010000900460ff1615156001145b156138e757816138165760019250613b05565b60105460ff610100909104161515600114801561391257506010546301000000900460ff1615156001145b1561392557816138985760019250613b05565b60105462010000900460ff161515600114801561395057506010546301000000900460ff1615156001145b1561397557816139635760019250613b05565b81600114156138245760029250613b05565b60105460ff161515600114156139d757600342444532433a6040516020016139a2969594939291906140bd565b6040516020818303038152906040528051906020012060001c6139c591906140f8565b6139d0906002613f10565b9250613b05565b60105460ff61010090910416151560011415613a1f57806139fb5760019250613b05565b8060011415613a0d5760039250613b05565b80600214156138245760049250613b05565b60105462010000900460ff16151560011415613a555780613a435760019250613b05565b8060011415613a0d5760029250613b05565b6010546301000000900460ff16151560011415613ab757600342444532433a604051602001613a89969594939291906140bd565b6040516020818303038152906040528051906020012060001c613aac91906140f8565b6139d0906001613f10565b600442444532433a604051602001613ad4969594939291906140bd565b6040516020818303038152906040528051906020012060001c613af791906140f8565b613b02906001613f10565b92505b509092915050565b60006116498284613efc565b8015613bf0576014546001600160a01b0316600090815260176020526040812054829190613b479083612334565b6014546001600160a01b03166000908152601760205260409020819055600c54909150613b749084612334565b600c556014546040518481526001600160a01b039182169186169060008051602061410d8339815191529060200160405180910390a3836001600160a01b03167ffb42d133eca0812491d47088ea70321250d6ab9cfc23a318f640f7def1cb201c84604051613be591815260200190565b60405180910390a250505b5050565b8015613bf0576000600f5482613c0a9190613eb0565b6014546001600160a01b031660009081526017602052604081205491925090613b479083612334565b6001600160a01b038116811461232557600080fd5b600060208284031215613c5a57600080fd5b813561164981613c33565b600060208083528351808285015260005b81811015613c9257858101830151858201604001528201613c76565b81811115613ca4576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215613ccd57600080fd5b8235613cd881613c33565b946020939093013593505050565b600080600060608486031215613cfb57600080fd5b8335613d0681613c33565b92506020840135613d1681613c33565b929592945050506040919091013590565b600060208284031215613d3957600080fd5b5035919050565b801515811461232557600080fd5b60008060408385031215613d6157600080fd5b8235613d6c81613c33565b91506020830135613d7c81613d40565b809150509250929050565b60008060408385031215613d9a57600080fd5b8235613da581613c33565b91506020830135613d7c81613c33565b600181811c90821680613dc957607f821691505b60208210811415613dea57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600e908201526d547265617375727920726f6c652160901b604082015260600190565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b60208082526035908201527f416c6c20666f75722066756e6374696f6e732063616e2774206765742073746f60408201527470706564206174207468652073616d652074696d6560581b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082821015613ec257613ec2613e9a565b500390565b6000816000190483118215151615613ee157613ee1613e9a565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613f0b57613f0b613ee6565b500490565b60008219821115613f2357613f23613e9a565b500190565b600060208284031215613f3a57600080fd5b815161164981613d40565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215613f8357600080fd5b815161164981613c33565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613fde5784516001600160a01b031683529383019391830191600101613fb9565b50506001600160a01b03969096166060850152505050608001529392505050565b6000602080838503121561401257600080fd5b825167ffffffffffffffff8082111561402a57600080fd5b818501915085601f83011261403e57600080fd5b81518181111561405057614050613f45565b8060051b604051601f19603f8301168101818110858211171561407557614075613f45565b60405291825284820192508381018501918883111561409357600080fd5b938501935b828510156140b157845184529385019392850192614098565b98975050505050505050565b95865260208601949094526040850192909252606090811b6bffffffffffffffffffffffff1916908401526074830152609482015260b40190565b60008261410757614107613ee6565b50069056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208fb67caf8eb638ba109c433c82d0db4db7808920b34f997f508567e5ff6d7be564736f6c63430008090033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000a7b1918ebc85e85994ef97be96cb512cf7882530000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000000000000000000000001a784379d99db4200000000000000000000000000000000000000000000000001a784379d99db4200000000000000000000000000000000000000000000000000000000000000000000084d616e61436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d4e430000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): ManaCoin
Arg [1] : symbol_ (string): MNC
Arg [2] : totalSupply_ (uint256): 100000000
Arg [3] : _treasury (address): 0xa7b1918ebC85e85994ef97BE96CB512CF7882530
Arg [4] : _reflectionCooldown (uint256): 60
Arg [5] : maxTxLimit_ (uint256): 2000000000000000000000000
Arg [6] : maxWalletLimit_ (uint256): 2000000000000000000000000

-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [2] : 0000000000000000000000000000000000000000000000000000000005f5e100
Arg [3] : 000000000000000000000000a7b1918ebc85e85994ef97be96cb512cf7882530
Arg [4] : 000000000000000000000000000000000000000000000000000000000000003c
Arg [5] : 00000000000000000000000000000000000000000001a784379d99db42000000
Arg [6] : 00000000000000000000000000000000000000000001a784379d99db42000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [8] : 4d616e61436f696e000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [10] : 4d4e430000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

12124:30875:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26905:306;;;;;;;;;;-1:-1:-1;26905:306:0;;;;;:::i;:::-;;:::i;:::-;;;567:14:1;;560:22;542:41;;530:2;515:18;26905:306:0;;;;;;;;15875:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13004:35::-;;;;;;;;;;-1:-1:-1;13004:35:0;;;;-1:-1:-1;;;;;13004:35:0;;;;;;-1:-1:-1;;;;;1387:32:1;;;1369:51;;1357:2;1342:18;13004:35:0;1196:230:1;16387:186:0;;;;;;;;;;-1:-1:-1;16387:186:0;;;;;:::i;:::-;;:::i;13116:33::-;;;;;;;;;;;;;;;;;;;1897:25:1;;;1885:2;1870:18;13116:33:0;1751:177:1;34997:198:0;;;;;;;;;;-1:-1:-1;34997:198:0;;;;;:::i;:::-;;:::i;12964:31::-;;;;;;;;;;;;;;;;16152:100;;;;;;;;;;-1:-1:-1;16232:12:0;;16152:100;;17667:884;;;;;;;;;;-1:-1:-1;17667:884:0;;;;;:::i;:::-;;:::i;35914:433::-;;;;;;;;;;;;;:::i;26585:312::-;;;;;;;;;;-1:-1:-1;26585:312:0;;;;;:::i;:::-;;:::i;30880:195::-;;;;;;;;;;;;;:::i;16061:83::-;;;;;;;;;;-1:-1:-1;16127:9:0;;16061:83;;16127:9;;;;2536:36:1;;2524:2;2509:18;16061:83:0;2394:184:1;37397:187:0;;;;;;;;;;;;;:::i;12667:29::-;;;;;;;;;;;;;;;;33906:644;;;;;;;;;;-1:-1:-1;33906:644:0;;;;;:::i;:::-;;:::i;24858:414::-;;;;;;;;;;-1:-1:-1;24858:414:0;;;;;:::i;:::-;;:::i;13599:39::-;;;;;;;;;;-1:-1:-1;13599:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13046:21;;;;;;;;;;-1:-1:-1;13046:21:0;;;;-1:-1:-1;;;;;13046:21:0;;;12890:26;;;;;;;;;;-1:-1:-1;12890:26:0;;;;;;;;;;;13411:57;;;;;;;;;;-1:-1:-1;13411:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;27355:304;;;;;;;;;;-1:-1:-1;27355:304:0;;;;;:::i;:::-;;:::i;26427:150::-;;;:::i;12511:21::-;;;;;;;;;;;;;;;;13347:57;;;;;;;;;;-1:-1:-1;13347:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;27667:409;;;;;;;;;;-1:-1:-1;27667:409:0;;;;;:::i;:::-;;:::i;32412:273::-;;;;;;;;;;-1:-1:-1;32412:273:0;;;;;:::i;:::-;;:::i;12392:31::-;;;;;;;;;;-1:-1:-1;12392:31:0;;;;-1:-1:-1;;;;;12392:31:0;;;13076:33;;;;;;;;;;;;;;;;35474:432;;;;;;;;;;;;;:::i;33534:131::-;;;;;;;;;;-1:-1:-1;33534:131:0;;;;;:::i;:::-;;:::i;33104:275::-;;;;;;;;;;-1:-1:-1;33104:275:0;;;;;:::i;:::-;;:::i;12324:29::-;;;;;;;;;;;;;;;;12633:27;;;;;;;;;;;;;;;;16260:119;;;;;;;;;;-1:-1:-1;16260:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;16353:18:0;16326:7;16353:18;;;:9;:18;;;;;;;16260:119;3839:103;;;;;;;;;;;;;:::i;:::-;;33387:139;;;;;;;;;;-1:-1:-1;33387:139:0;;;;;:::i;:::-;;:::i;42875:121::-;;;;;;;;;;;;;:::i;12360:25::-;;;;;;;;;;;;;;;;33673:225;;;;;;;;;;-1:-1:-1;33673:225:0;;;;;:::i;:::-;;:::i;12770:20::-;;;;;;;;;;-1:-1:-1;12770:20:0;;;;;;;;12703:28;;;;;;;;;;;;;;;;31382:302;;;;;;;;;;-1:-1:-1;31382:302:0;;;;;:::i;:::-;;:::i;35203:229::-;;;;;;;;;;-1:-1:-1;35203:229:0;;;;;:::i;:::-;;:::i;3604:87::-;;;;;;;;;;-1:-1:-1;3650:7:0;3677:6;-1:-1:-1;;;;;3677:6:0;3604:87;;27219:128;;;;;;;;;;-1:-1:-1;27219:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;27311:28:0;27287:4;27311:28;;;:19;:28;;;;;;;;;27219:128;13286:54;;;;;;;;;;-1:-1:-1;13286:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;15966:87;;;;;;;;;;;;;:::i;37592:239::-;;;;;;;;;;;;;:::i;12925:32::-;;;;;;;;;;;;;;;;17111:548;;;;;;;;;;-1:-1:-1;17111:548:0;;;;;:::i;:::-;;:::i;36355:420::-;;;;;;;;;;;;;:::i;12826:26::-;;;;;;;;;;-1:-1:-1;12826:26:0;;;;;;;;;;;31692:395;;;;;;;;;;;;;:::i;36783:414::-;;;;;;;;;;;;;:::i;34558:431::-;;;;;;;;;;-1:-1:-1;34558:431:0;;;;;:::i;:::-;;:::i;28441:264::-;;;;;;;;;;-1:-1:-1;28441:264:0;;;;;:::i;:::-;;:::i;12568:25::-;;;;;;;;;;-1:-1:-1;12568:25:0;;;;;;;;32095:309;;;;;;;;;;;;;:::i;32972:124::-;;;;;;;;;;-1:-1:-1;32972:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;33061:27:0;33037:4;33061:27;;;:18;:27;;;;;;;;;32972:124;12539:22;;;;;;;;;;;;;;;;37205:184;;;;;;;;;;;;;:::i;12600:26::-;;;;;;;;;;;;;;;;12738:25;;;;;;;;;;;;;;;;31083:291;;;;;;;;;;-1:-1:-1;31083:291:0;;;;;:::i;:::-;;:::i;12859:24::-;;;;;;;;;;-1:-1:-1;12859:24:0;;;;;;;;;;;16933:170;;;;;;;;;;-1:-1:-1;16933:170:0;;;;;:::i;:::-;-1:-1:-1;;;;;17067:19:0;;;17040:7;17067:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16933:170;37839:190;;;;;;;;;;;;;:::i;32693:271::-;;;;;;;;;;-1:-1:-1;32693:271:0;;;;;:::i;:::-;;:::i;3950:201::-;;;;;;;;;;-1:-1:-1;3950:201:0;;;;;:::i;:::-;;:::i;12797:22::-;;;;;;;;;;-1:-1:-1;12797:22:0;;;;;;;;;;;26905:306;26993:4;3563:13;:11;:13::i;:::-;-1:-1:-1;;;;;27032:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;27010:124;;;::::0;-1:-1:-1;;;27010:124:0;;4565:2:1;27010:124:0::1;::::0;::::1;4547:21:1::0;4604:2;4584:18;;;4577:30;4643:34;4623:18;;;4616:62;-1:-1:-1;;;4694:18:1;;;4687:44;4748:19;;27010:124:0::1;;;;;;;;;-1:-1:-1::0;;;;;;27145:28:0::1;27176:5;27145:28:::0;;;:19:::1;:28;::::0;;;;:36;;-1:-1:-1;;27145:36:0::1;::::0;;-1:-1:-1;;26905:306:0:o;15875:83::-;15912:13;15945:5;15938:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15875:83;:::o;16387:186::-;16487:4;16504:39;3149:10;16527:7;16536:6;16504:8;:39::i;:::-;-1:-1:-1;16561:4:0;16387:186;;;;;:::o;34997:198::-;35084:8;;35045:4;;-1:-1:-1;;;;;35084:8:0;35070:10;:22;35062:49;;;;-1:-1:-1;;;35062:49:0;;;;;;;:::i;:::-;35122:43;;-1:-1:-1;;;;;35122:20:0;;;35143:21;35122:43;;;;;;;;;35143:21;35122:20;:43;;;;;;;;;;;;;;;;;;;17667:884;17799:4;-1:-1:-1;;;;;17824:20:0;;17816:52;;;;-1:-1:-1;;;17816:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17887:23:0;;17879:55;;;;-1:-1:-1;;;17879:55:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17953:17:0;;12462:42;17953:17;;17945:49;;;;-1:-1:-1;;;17945:49:0;;6056:2:1;17945:49:0;;;6038:21:1;6095:2;6075:18;;;6068:30;-1:-1:-1;;;6114:18:1;;;6107:49;6173:18;;17945:49:0;5854:343:1;17945:49:0;-1:-1:-1;;;;;18027:19:0;;;;;;:11;:19;;;;;;;;3149:10;18027:33;;;;;;;;:43;-1:-1:-1;18027:43:0;18005:123;;;;-1:-1:-1;;;18005:123:0;;6404:2:1;18005:123:0;;;6386:21:1;6443:2;6423:18;;;6416:30;6482:32;6462:18;;;6455:60;6532:18;;18005:123:0;6202:354:1;18005:123:0;-1:-1:-1;;;;;18161:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;18161:27:0;18139:123;;;;-1:-1:-1;;;18139:123:0;;6763:2:1;18139:123:0;;;6745:21:1;6802:2;6782:18;;;6775:30;6841:34;6821:18;;;6814:62;-1:-1:-1;;;6892:18:1;;;6885:44;6946:19;;18139:123:0;6561:410:1;18139:123:0;-1:-1:-1;;;;;18279:19:0;;;;;;:11;:19;;;;;;;;3149:10;18279:33;;;;;;;;-1:-1:-1;;18279:54:0;18275:200;;-1:-1:-1;;;;;18386:19:0;;;;;;:11;:19;;;;;;;;3149:10;18386:65;;;;;;;;:77;;18456:6;18386:69;:77::i;:::-;-1:-1:-1;;;;;18350:19:0;;;;;;:11;:19;;;;;;;;3149:10;18350:33;;;;;;;:113;18275:200;18485:36;18495:6;18503:9;18514:6;18485:9;:36::i;:::-;-1:-1:-1;18539:4:0;17667:884;;;;;:::o;35914:433::-;35962:4;3563:13;:11;:13::i;:::-;35987:10:::1;::::0;::::1;::::0;::::1;;;:19;35979:58;;;::::0;-1:-1:-1;;;35979:58:0;;7178:2:1;35979:58:0::1;::::0;::::1;7160:21:1::0;7217:2;7197:18;;;7190:30;7256:28;7236:18;;;7229:56;7302:18;;35979:58:0::1;6976:350:1::0;35979:58:0::1;36068:8;::::0;::::1;;:16;;:8:::0;:16:::1;:42:::0;::::1;;;-1:-1:-1::0;36088:14:0::1;::::0;;;::::1;;;:22;;36106:4;36088:22;36068:42;:66;;;;-1:-1:-1::0;36114:12:0::1;::::0;;;::::1;;;:20;;36130:4;36114:20;36068:66;36050:268;;;36161:95;;-1:-1:-1::0;;;36161:95:0::1;;;;;;;:::i;36050:268::-;36289:10;:17:::0;;-1:-1:-1;;36289:17:0::1;;;::::0;;-1:-1:-1;36335:4:0::1;35914:433:::0;:::o;26585:312::-;26675:4;3563:13;:11;:13::i;:::-;-1:-1:-1;;;;;26715:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;26714:29;26692:129;;;::::0;-1:-1:-1;;;26692:129:0;;7955:2:1;26692:129:0::1;::::0;::::1;7937:21:1::0;7994:2;7974:18;;;7967:30;8033:34;8013:18;;;8006:62;-1:-1:-1;;;8084:18:1;;;8077:48;8142:19;;26692:129:0::1;7753:414:1::0;26692:129:0::1;-1:-1:-1::0;;;;;;26832:28:0::1;;::::0;;;:19:::1;:28;::::0;;;;:35;;-1:-1:-1;;26832:35:0::1;26863:4;26832:35:::0;;::::1;::::0;;;26863:4;26585:312::o;30880:195::-;30930:4;3563:13;:11;:13::i;:::-;30955::::1;::::0;::::1;;:22;30947:67;;;::::0;-1:-1:-1;;;30947:67:0;;8374:2:1;30947:67:0::1;::::0;::::1;8356:21:1::0;;;8393:18;;;8386:30;8452:34;8432:18;;;8425:62;8504:18;;30947:67:0::1;8172:356:1::0;30947:67:0::1;-1:-1:-1::0;31025:13:0::1;:20:::0;;-1:-1:-1;;31025:20:0::1;31041:4;31025:20:::0;;::::1;::::0;;;30880:195;:::o;37397:187::-;37447:4;3563:13;:11;:13::i;:::-;37472:10:::1;::::0;::::1;;::::0;;::::1;;:18;;:10;:18;37464:61;;;::::0;-1:-1:-1;;;37464:61:0;;8735:2:1;37464:61:0::1;::::0;::::1;8717:21:1::0;8774:2;8754:18;;;8747:30;8813:32;8793:18;;;8786:60;8863:18;;37464:61:0::1;8533:354:1::0;37464:61:0::1;-1:-1:-1::0;37536:10:0::1;:18:::0;;-1:-1:-1;;37536:18:0::1;::::0;;:10:::1;37397:187:::0;:::o;33906:644::-;34039:8;;33962:4;;-1:-1:-1;;;;;34039:8:0;34025:10;:22;34017:49;;;;-1:-1:-1;;;34017:49:0;;;;;;;:::i;:::-;34107:1;34087:17;;:21;34079:61;;;;-1:-1:-1;;;34079:61:0;;9094:2:1;34079:61:0;;;9076:21:1;9133:2;9113:18;;;9106:30;9172:29;9152:18;;;9145:57;9219:18;;34079:61:0;8892:351:1;34079:61:0;34180:6;34159:17;;:27;;34151:63;;;;-1:-1:-1;;;34151:63:0;;9450:2:1;34151:63:0;;;9432:21:1;9489:2;9469:18;;;9462:30;-1:-1:-1;;;9508:18:1;;;9501:53;9571:18;;34151:63:0;9248:347:1;34151:63:0;34252:21;34284:34;34304:4;34311:6;34284:11;:34::i;:::-;34369:6;34349:17;;:26;;;;:::i;:::-;34329:17;:46;34388:19;34410:43;34411:21;34438:14;34410:27;:43::i;:::-;34485:18;;34388:65;;-1:-1:-1;34485:35:0;;34388:65;34485:22;:35::i;:::-;34464:18;:56;-1:-1:-1;34538:4:0;;33906:644;-1:-1:-1;;;33906:644:0:o;24858:414::-;3149:10;24904:4;24983:17;;;:9;:17;;;;;;24904:4;;3149:10;-1:-1:-1;;24983:27:0;24961:119;;;;-1:-1:-1;;;24961:119:0;;10064:2:1;24961:119:0;;;10046:21:1;10103:2;10083:18;;;10076:30;10142:34;10122:18;;;10115:62;-1:-1:-1;;;10193:18:1;;;10186:40;10243:19;;24961:119:0;9862:406:1;24961:119:0;25108:1;25099:6;:10;25091:55;;;;-1:-1:-1;;;25091:55:0;;10475:2:1;25091:55:0;;;10457:21:1;;;10494:18;;;10487:30;10553:34;10533:18;;;10526:62;10605:18;;25091:55:0;10273:356:1;25091:55:0;-1:-1:-1;;;;;25179:17:0;;;;;;:9;:17;;;;;;:29;;25201:6;25179:21;:29::i;:::-;-1:-1:-1;;;;;25159:17:0;;;;;;:9;:17;;;;;:49;25219:21;25169:6;25233;25219:5;:21::i;27355:304::-;27446:4;3563:13;:11;:13::i;:::-;27507:8:::1;27485:18;;:30;;27463:126;;;::::0;-1:-1:-1;;;27463:126:0;;10836:2:1;27463:126:0::1;::::0;::::1;10818:21:1::0;10875:2;10855:18;;;10848:30;10914:34;10894:18;;;10887:62;-1:-1:-1;;;10965:18:1;;;10958:44;11019:19;;27463:126:0::1;10634:410:1::0;27463:126:0::1;-1:-1:-1::0;27600:18:0::1;:29:::0;27647:4:::1;::::0;27355:304::o;26427:150::-;26514:18;;26476:4;;26514:33;;26537:9;26514:22;:33::i;:::-;26493:18;:54;-1:-1:-1;26565:4:0;;26427:150::o;27667:409::-;27785:6;;27750:7;;-1:-1:-1;;;;;27774:17:0;;;27785:6;;27774:17;;:50;;-1:-1:-1;27814:9:0;;-1:-1:-1;;;;;27795:29:0;;;27814:9;;27795:29;27774:50;27770:64;;;-1:-1:-1;27833:1:0;;27667:409;-1:-1:-1;27667:409:0:o;27770:64::-;-1:-1:-1;;;;;27907:28:0;;27847:23;27907:28;;;:19;:28;;;;;;27873:18;;:62;;27907:28;27873:62;:::i;:::-;-1:-1:-1;;;;;28038:29:0;;;;;;:20;:29;;;;;;;;;28008:12;;16353:9;:18;;;;;;27847:88;;-1:-1:-1;28038:29:0;;27968:36;;:15;:36;:::i;:::-;27967:53;;;;:::i;:::-;27966:102;;;;:::i;:::-;27946:122;27667:409;-1:-1:-1;;;27667:409:0:o;32412:273::-;32479:4;3563:13;:11;:13::i;:::-;-1:-1:-1;;;;;32519:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;32518:28;32496:114;;;::::0;-1:-1:-1;;;32496:114:0;;11814:2:1;32496:114:0::1;::::0;::::1;11796:21:1::0;11853:2;11833:18;;;11826:30;11892:34;11872:18;;;11865:62;-1:-1:-1;;;11943:18:1;;;11936:34;11987:19;;32496:114:0::1;11612:400:1::0;32496:114:0::1;-1:-1:-1::0;;;;;;32621:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;32621:34:0::1;32651:4;32621:34:::0;;::::1;::::0;;;32651:4;32412:273::o;35474:432::-;35520:4;3563:13;:11;:13::i;:::-;35545:8:::1;::::0;::::1;;:17;35537:59;;;::::0;-1:-1:-1;;;35537:59:0;;12219:2:1;35537:59:0::1;::::0;::::1;12201:21:1::0;12258:2;12238:18;;;12231:30;12297:31;12277:18;;;12270:59;12346:18;;35537:59:0::1;12017:353:1::0;35537:59:0::1;35627:10;::::0;::::1;;::::0;;::::1;;:18;;:10;:18;:44:::0;::::1;;;-1:-1:-1::0;35649:14:0::1;::::0;;;::::1;;;:22;;35667:4;35649:22;35627:44;:68;;;;-1:-1:-1::0;35675:12:0::1;::::0;;;::::1;;;:20;;35691:4;35675:20;35627:68;35609:268;;;35722:95;;-1:-1:-1::0;;;35722:95:0::1;;;;;;;:::i;35609:268::-;35850:8;:15:::0;;-1:-1:-1;;35850:15:0::1;35861:4;35850:15;::::0;;-1:-1:-1;35894:4:0::1;35474:432:::0;:::o;33534:131::-;33599:4;3563:13;:11;:13::i;:::-;-1:-1:-1;33616:10:0::1;:19:::0;33653:4:::1;::::0;33534:131::o;33104:275::-;33199:4;3563:13;:11;:13::i;:::-;33238:8:::1;::::0;-1:-1:-1;;;;;33238:19:0;;::::1;:8:::0;::::1;:19;;33216:104;;;::::0;-1:-1:-1;;;33216:104:0;;12577:2:1;33216:104:0::1;::::0;::::1;12559:21:1::0;12616:2;12596:18;;;12589:30;12655:34;12635:18;;;12628:62;-1:-1:-1;;;12706:18:1;;;12699:33;12749:19;;33216:104:0::1;12375:399:1::0;33216:104:0::1;-1:-1:-1::0;33331:8:0::1;:18:::0;;-1:-1:-1;;;;;33331:18:0;::::1;-1:-1:-1::0;;;;;;33331:18:0;;::::1;;::::0;;;33104:275;;;:::o;3839:103::-;3563:13;:11;:13::i;:::-;3904:30:::1;3931:1;3904:18;:30::i;:::-;3839:103::o:0;33387:139::-;33456:4;3563:13;:11;:13::i;:::-;-1:-1:-1;33473:14:0::1;:23:::0;33514:4:::1;::::0;33387:139::o;42875:121::-;42927:4;3563:13;:11;:13::i;:::-;-1:-1:-1;42944:14:0::1;:22:::0;;-1:-1:-1;;42944:22:0::1;::::0;;;42875:121;:::o;33673:225::-;33775:4;3563:13;:11;:13::i;:::-;-1:-1:-1;;;;;;33792:18:0;::::1;;::::0;;;:7:::1;:18;::::0;;;;;;;:27;;;::::1;;-1:-1:-1::0;;33792:27:0;;::::1;::::0;::::1;::::0;;;33830:18:::1;:29:::0;;;;;:38;;;;::::1;::::0;;::::1;::::0;;33792:27;33673:225;;;;:::o;31382:302::-;31446:4;3563:13;:11;:13::i;:::-;31483:1:::1;31471:8;:13;;31463:67;;;::::0;-1:-1:-1;;;31463:67:0;;12981:2:1;31463:67:0::1;::::0;::::1;12963:21:1::0;13020:2;13000:18;;;12993:30;13059:34;13039:18;;;13032:62;-1:-1:-1;;;13110:18:1;;;13103:39;13159:19;;31463:67:0::1;12779:405:1::0;31463:67:0::1;31564:7;::::0;;31582:18;;;;31618:36:::1;::::0;;13363:25:1;;;13419:2;13404:18;;13397:34;;;31618:36:0::1;::::0;13336:18:1;31618:36:0::1;;;;;;;;-1:-1:-1::0;31672:4:0::1;::::0;31382:302;-1:-1:-1;;31382:302:0:o;35203:229::-;35344:4;3563:13;:11;:13::i;:::-;35361:41:::1;::::0;-1:-1:-1;;;35361:41:0;;-1:-1:-1;;;;;13634:32:1;;;35361:41:0::1;::::0;::::1;13616:51:1::0;13683:18;;;13676:34;;;35361:29:0;::::1;::::0;::::1;::::0;13589:18:1;;35361:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;35420:4:0::1;::::0;35203:229;-1:-1:-1;;;;35203:229:0:o;15966:87::-;16005:13;16038:7;16031:14;;;;;:::i;37592:239::-;37646:4;3563:13;:11;:13::i;:::-;37685:14:::1;::::0;;;::::1;;;:22;;37703:4;37685:22;37663:105;;;::::0;-1:-1:-1;;;37663:105:0;;14173:2:1;37663:105:0::1;::::0;::::1;14155:21:1::0;14212:2;14192:18;;;14185:30;14251:34;14231:18;;;14224:62;-1:-1:-1;;;14302:18:1;;;14295:31;14343:19;;37663:105:0::1;13971:397:1::0;37663:105:0::1;-1:-1:-1::0;37779:14:0::1;:22:::0;;-1:-1:-1;;37779:22:0::1;::::0;;;37592:239;:::o;17111:548::-;17214:4;3149:10;;17272:53;;;;-1:-1:-1;;;17272:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17344:23:0;;17336:55;;;;-1:-1:-1;;;17336:55:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17410:17:0;;12462:42;17410:17;;17402:49;;;;-1:-1:-1;;;17402:49:0;;6056:2:1;17402:49:0;;;6038:21:1;6095:2;6075:18;;;6068:30;-1:-1:-1;;;6114:18:1;;;6107:49;6173:18;;17402:49:0;5854:343:1;17402:49:0;-1:-1:-1;;;;;17484:18:0;;;;;;:9;:18;;;;;;:28;-1:-1:-1;17484:28:0;17462:115;;;;-1:-1:-1;;;17462:115:0;;14575:2:1;17462:115:0;;;14557:21:1;14614:2;14594:18;;;14587:30;14653:34;14633:18;;;14626:62;-1:-1:-1;;;14704:18:1;;;14697:35;14749:19;;17462:115:0;14373:401:1;17462:115:0;17590:37;17600:7;17609:9;17620:6;17590:9;:37::i;36355:420::-;36407:4;3563:13;:11;:13::i;:::-;36432:14:::1;::::0;;;::::1;;;:23;36424:65;;;::::0;-1:-1:-1;;;36424:65:0;;14981:2:1;36424:65:0::1;::::0;::::1;14963:21:1::0;15020:2;15000:18;;;14993:30;15059:31;15039:18;;;15032:59;15108:18;;36424:65:0::1;14779:353:1::0;36424:65:0::1;36506:8;::::0;::::1;;:16;;:8:::0;:16:::1;:38:::0;::::1;;;-1:-1:-1::0;36526:10:0::1;::::0;::::1;;::::0;;::::1;;:18;;:10;:18;36506:38;:62;;;;-1:-1:-1::0;36548:12:0::1;::::0;;;::::1;;;:20;;36564:4;36548:20;36506:62;36502:244;;;36585:95;;-1:-1:-1::0;;;36585:95:0::1;;;;;;;:::i;36502:244::-;36713:14;:21:::0;;-1:-1:-1;;36713:21:0::1;::::0;::::1;::::0;;-1:-1:-1;36763:4:0::1;36355:420:::0;:::o;31692:395::-;31742:4;3563:13;:11;:13::i;:::-;31776:1:::1;31767:6;;:10;:25;;;;;31791:1;31781:7;;:11;31767:25;31759:70;;;::::0;-1:-1:-1;;;31759:70:0;;15339:2:1;31759:70:0::1;::::0;::::1;15321:21:1::0;;;15358:18;;;15351:30;15417:34;15397:18;;;15390:62;15469:18;;31759:70:0::1;15137:356:1::0;31759:70:0::1;31862:6;::::0;;31902:7:::1;::::0;;31840:19:::1;31922:10:::0;;;;31943:11;;;;31972:33:::1;::::0;;13363:25:1;;;13419:2;13404:18;;13397:34;;;;31862:6:0;;31902:7;;31972:33:::1;::::0;13336:18:1;31972:33:0::1;;;;;;;;32049:7;::::0;32021:36:::1;::::0;;13363:25:1;;;13419:2;13404:18;;13397:34;;;;32021:36:0::1;::::0;13336:18:1;32021:36:0::1;;;;;;;32075:4;32068:11;;;;31692:395:::0;:::o;36783:414::-;36833:4;3563:13;:11;:13::i;:::-;36858:12:::1;::::0;;;::::1;;;:21;36850:61;;;::::0;-1:-1:-1;;;36850:61:0;;15700:2:1;36850:61:0::1;::::0;::::1;15682:21:1::0;15739:2;15719:18;;;15712:30;15778:29;15758:18;;;15751:57;15825:18;;36850:61:0::1;15498:351:1::0;36850:61:0::1;36928:8;::::0;::::1;;:16;;:8:::0;:16:::1;:38:::0;::::1;;;-1:-1:-1::0;36948:10:0::1;::::0;::::1;;::::0;;::::1;;:18;;:10;:18;36928:38;:64;;;;-1:-1:-1::0;36970:14:0::1;::::0;;;::::1;;;:22;;36988:4;36970:22;36928:64;36924:244;;;37009:95;;-1:-1:-1::0;;;37009:95:0::1;;;;;;;:::i;36924:244::-;37137:12;:19:::0;;-1:-1:-1;;37137:19:0::1;::::0;::::1;::::0;;-1:-1:-1;37185:4:0::1;36783:414:::0;:::o;34558:431::-;34687:8;;34612:4;;-1:-1:-1;;;;;34687:8:0;34673:10;:22;34665:49;;;;-1:-1:-1;;;34665:49:0;;;;;;;:::i;:::-;34754:1;34735:16;;:20;34727:60;;;;-1:-1:-1;;;34727:60:0;;9094:2:1;34727:60:0;;;9076:21:1;9133:2;9113:18;;;9106:30;9172:29;9152:18;;;9145:57;9219:18;;34727:60:0;8892:351:1;34727:60:0;34826:6;34806:16;;:26;;34798:62;;;;-1:-1:-1;;;34798:62:0;;9450:2:1;34798:62:0;;;9432:21:1;9489:2;9469:18;;;9462:30;-1:-1:-1;;;9508:18:1;;;9501:53;9571:18;;34798:62:0;9248:347:1;34798:62:0;34885:8;;34873:29;;-1:-1:-1;;;;;34885:8:0;34895:6;34873:11;:29::i;:::-;34951:6;34932:16;;:25;;;;:::i;:::-;34913:16;:44;-1:-1:-1;34977:4:0;;34558:431;-1:-1:-1;34558:431:0:o;28441:264::-;28500:4;3149:10;42483:8;42436:18;;42483:8;;28557:66;;;;-1:-1:-1;;;28557:66:0;;16056:2:1;28557:66:0;;;16038:21:1;16095:2;16075:18;;;16068:30;16134:34;16114:18;;;16107:62;-1:-1:-1;;;16185:18:1;;;16178:31;16226:19;;28557:66:0;15854:397:1;28557:66:0;28634:41;28659:6;28668;28634:16;:41::i;32095:309::-;32144:4;3563:13;:11;:13::i;:::-;32183:6:::1;::::0;;32223:7:::1;::::0;;32250:1:::1;32241:10:::0;;;;32262:11;;;;32289:33:::1;::::0;;13363:25:1;;;13419:2;13404:18;;13397:34;;;;32183:6:0;;32223:7;;32289:33:::1;::::0;13336:18:1;32289:33:0::1;13189:248:1::0;37205:184:0;37253:4;3563:13;:11;:13::i;:::-;37278:8:::1;::::0;::::1;;:16;;:8:::0;:16:::1;37270:62;;;::::0;-1:-1:-1;;;37270:62:0;;16458:2:1;37270:62:0::1;::::0;::::1;16440:21:1::0;16497:2;16477:18;;;16470:30;16536:34;16516:18;;;16509:62;-1:-1:-1;;;16587:18:1;;;16580:31;16628:19;;37270:62:0::1;16256:397:1::0;37270:62:0::1;-1:-1:-1::0;37343:8:0::1;:16:::0;;-1:-1:-1;;37343:16:0::1;::::0;;;37205:184;:::o;31083:291::-;31145:4;3563:13;:11;:13::i;:::-;31181:1:::1;31170:7;:12;;31162:65;;;::::0;-1:-1:-1;;;31162:65:0;;16860:2:1;31162:65:0::1;::::0;::::1;16842:21:1::0;16899:2;16879:18;;;16872:30;16938:34;16918:18;;;16911:62;-1:-1:-1;;;16989:18:1;;;16982:38;17037:19;;31162:65:0::1;16658:404:1::0;31162:65:0::1;31260:6;::::0;;31277:16;;;;31311:33:::1;::::0;;13363:25:1;;;13419:2;13404:18;;13397:34;;;31311:33:0::1;::::0;13336:18:1;31311:33:0::1;13189:248:1::0;37839:190:0;37891:4;3563:13;:11;:13::i;:::-;37916:12:::1;::::0;;;::::1;;;:20;;37932:4;37916:20;37908:60;;;::::0;-1:-1:-1;;;37908:60:0;;15700:2:1;37908:60:0::1;::::0;::::1;15682:21:1::0;15739:2;15719:18;;;15712:30;15778:29;15758:18;;;15751:57;15825:18;;37908:60:0::1;15498:351:1::0;37908:60:0::1;-1:-1:-1::0;37979:12:0::1;:20:::0;;-1:-1:-1;;37979:20:0::1;::::0;;;37839:190;:::o;32693:271::-;32758:4;3563:13;:11;:13::i;:::-;-1:-1:-1;;;;;32797:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;32775:113;;;::::0;-1:-1:-1;;;32775:113:0;;17269:2:1;32775:113:0::1;::::0;::::1;17251:21:1::0;17308:2;17288:18;;;17281:30;17347:34;17327:18;;;17320:62;-1:-1:-1;;;17398:18:1;;;17391:34;17442:19;;32775:113:0::1;17067:400:1::0;32775:113:0::1;-1:-1:-1::0;;;;;;32899:27:0::1;32929:5;32899:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;32899:35:0::1;::::0;;-1:-1:-1;;32693:271:0:o;3950:201::-;3563:13;:11;:13::i;:::-;-1:-1:-1;;;;;4039:22:0;::::1;4031:73;;;::::0;-1:-1:-1;;;4031:73:0;;17674:2:1;4031:73:0::1;::::0;::::1;17656:21:1::0;17713:2;17693:18;;;17686:30;17752:34;17732:18;;;17725:62;-1:-1:-1;;;17803:18:1;;;17796:36;17849:19;;4031:73:0::1;17472:402:1::0;4031:73:0::1;4115:28;4134:8;4115:18;:28::i;:::-;3950:201:::0;:::o;1416:98::-;1474:7;1501:5;1505:1;1501;:5;:::i;1204:98::-;1262:7;1289:5;1293:1;1289;:5;:::i;3699:132::-;3650:7;3677:6;-1:-1:-1;;;;;3677:6:0;3149:10;3763:23;3755:68;;;;-1:-1:-1;;;3755:68:0;;18081:2:1;3755:68:0;;;18063:21:1;;;18100:18;;;18093:30;18159:34;18139:18;;;18132:62;18211:18;;3755:68:0;17879:356:1;16581:344:0;-1:-1:-1;;;;;16710:20:0;;16702:52;;;;-1:-1:-1;;;16702:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16773:21:0;;16765:53;;;;-1:-1:-1;;;16765:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16831:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;16884:33;;1897:25:1;;;16884:33:0;;1870:18:1;16884:33:0;;;;;;;;16581:344;;;:::o;1310:98::-;1368:7;1395:5;1399:1;1395;:5;:::i;18559:2368::-;3650:7;3677:6;-1:-1:-1;;;;;18687:17:0;;;3677:6;;18687:17;:39;;;;-1:-1:-1;;;;;;18708:18:0;;;;;;:7;:18;;;;;;;;18687:39;18683:2237;;;18743:48;18765:6;18773:9;18784:6;18743:21;:48::i;:::-;18559:2368;;;:::o;18683:2237::-;-1:-1:-1;;;;;18813:15:0;;;;;;:7;:15;;;;;;;;;:37;;-1:-1:-1;;;;;;18832:18:0;;;;;;:7;:18;;;;;;;;18813:37;18809:2111;;;18875:13;;;;:21;;:13;:21;18867:63;;;;-1:-1:-1;;;18867:63:0;;18442:2:1;18867:63:0;;;18424:21:1;18481:2;18461:18;;;18454:30;18520:31;18500:18;;;18493:59;18569:18;;18867:63:0;18240:353:1;18867:63:0;-1:-1:-1;;;;;18951:26:0;;;;;;:18;:26;;;;;;;;:60;;;;-1:-1:-1;;;;;;18982:29:0;;;;;;:18;:29;;;;;;;;18981:30;18951:60;18947:1449;;;19058:39;19079:9;19090:6;19058:20;:39::i;:::-;:88;;;;;19122:24;19139:6;19122:16;:24::i;:::-;19032:225;;;19189:48;19211:6;19219:9;19230:6;19189:21;:48::i;18947:1449::-;-1:-1:-1;;;;;19301:26:0;;;;;;:18;:26;;;;;;;;19300:27;:60;;;;-1:-1:-1;;;;;;19331:29:0;;;;;;:18;:29;;;;;;;;19300:60;19278:1118;;;19399:24;19416:6;19399:16;:24::i;:::-;19395:119;;;19448:46;19468:6;19476:9;19487:6;19448:19;:46::i;19278:1118::-;-1:-1:-1;;;;;19557:26:0;;;;;;:18;:26;;;;;;;;:59;;;;-1:-1:-1;;;;;;19587:29:0;;;;;;:18;:29;;;;;;;;19557:59;19535:861;;;3650:7;3677:6;-1:-1:-1;;;;;19677:17:0;;;3677:6;;19677:17;;:62;;-1:-1:-1;3650:7:0;3677:6;-1:-1:-1;;;;;19719:20:0;;;3677:6;;19719:20;19677:62;:110;;;-1:-1:-1;;;;;;19764:23:0;;19782:4;19764:23;19677:110;:161;;;-1:-1:-1;;;;;;19812:26:0;;19833:4;19812:26;19677:161;19651:730;;;19881:48;19903:6;19911:9;19922:6;19881:21;:48::i;19651:730::-;-1:-1:-1;;;;;19959:18:0;;;;;;:7;:18;;;;;;;;19955:426;;;20006:24;20023:6;20006:16;:24::i;:::-;20002:129;;;20059:48;20081:6;20089:9;20100:6;20059:21;:48::i;19955:426::-;20182:39;20203:9;20214:6;20182:20;:39::i;:::-;:88;;;;;20246:24;20263:6;20246:16;:24::i;18809:2111::-;3650:7;3677:6;-1:-1:-1;;;;;20450:17:0;;;3677:6;;20450:17;;:58;;-1:-1:-1;3650:7:0;3677:6;-1:-1:-1;;;;;20488:20:0;;;3677:6;;20488:20;20450:58;:102;;;-1:-1:-1;;;;;;20529:23:0;;20547:4;20529:23;20450:102;:149;;;-1:-1:-1;;;;;;20573:26:0;;20594:4;20573:26;20450:149;20428:481;;;20634:48;20656:6;20664:9;20675:6;20634:21;:48::i;42508:359::-;42607:16;;;42621:1;42607:16;;;;;;;;42583:21;;42607:16;;;;;;;;;;-1:-1:-1;42607:16:0;42583:40;;42652:4;42634;42639:1;42634:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;42634:23:0;;;:7;;;;;;;;;;:23;;;;42678:9;;:16;;;-1:-1:-1;;;42678:16:0;;;;:9;;;;;:14;;:16;;;;;42634:7;;42678:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42668:4;42673:1;42668:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;42668:26:0;;;:7;;;;;;;;;:26;42707:9;;:152;;-1:-1:-1;;;42707:152:0;;:9;;;:31;;:152;;42753:6;;42707:9;;42790:4;;42809:9;;42833:15;;42707:152;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;42707:152:0;;;;;;;;;;;;:::i;:::-;;42572:295;42508:359;;:::o;25280:246::-;25360:12;;:24;;25377:6;25360:16;:24::i;:::-;25345:12;:39;25409:11;;:23;;25425:6;25409:15;:23::i;:::-;25395:11;:37;25448:34;;1897:25:1;;;25471:1:0;;-1:-1:-1;;;;;25448:34:0;;;-1:-1:-1;;;;;;;;;;;25448:34:0;1885:2:1;1870:18;25448:34:0;;;;;;;25505:4;-1:-1:-1;;;;;25498:20:0;;25511:6;25498:20;;;;1897:25:1;;1885:2;1870:18;;1751:177;25498:20:0;;;;;;;;25280:246;;:::o;4159:191::-;4233:16;4252:6;;-1:-1:-1;;;;;4269:17:0;;;-1:-1:-1;;;;;;4269:17:0;;;;;;4302:40;;4252:6;;;;;;;4302:40;;4233:16;4302:40;4222:128;4159:191;:::o;29833:1039::-;29919:17;29939:28;29959:7;29939:19;:28::i;:::-;29919:48;;30000:29;30021:7;-1:-1:-1;;;;;27311:28:0;27287:4;27311:28;;;:19;:28;;;;;;;;;27219:128;30000:29;:38;29978:134;;;;-1:-1:-1;;;29978:134:0;;21415:2:1;29978:134:0;;;21397:21:1;21454:2;21434:18;;;21427:30;21493:34;21473:18;;;21466:62;-1:-1:-1;;;21544:18:1;;;21537:44;21598:19;;29978:134:0;21213:410:1;29978:134:0;30127:26;30137:7;30146:6;30127:9;:26::i;:::-;30123:742;;;30190:1;30178:9;:13;30170:67;;;;-1:-1:-1;;;30170:67:0;;21830:2:1;30170:67:0;;;21812:21:1;21869:2;21849:18;;;21842:30;21908:34;21888:18;;;21881:62;-1:-1:-1;;;21959:18:1;;;21952:39;22008:19;;30170:67:0;21628:405:1;30170:67:0;30312:18;;-1:-1:-1;;;;;30278:31:0;;;;;;:22;:31;;;;;;30355:15;;30278:52;;;:::i;:::-;:92;;30252:213;;;;-1:-1:-1;;;30252:213:0;;22240:2:1;30252:213:0;;;22222:21:1;22279:2;22259:18;;;22252:30;22318:34;22298:18;;;22291:62;22389:29;22369:18;;;22362:57;22436:19;;30252:213:0;22038:423:1;30252:213:0;30511:18;;-1:-1:-1;;;;;30480:28:0;;;;;;:19;:28;;;;;;;;:49;;;;30544:22;:31;;;;;30578:15;30544:49;;30608:20;:29;;;;;:33;;;30656:27;;30480:28;;30656:27;;;;;30673:9;;30656:27;30480:28;30656:27;30673:9;30480:28;30656:27;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30732:31:0;;;;;;:22;:31;;;;;;:64;;30786:9;30732:53;:64::i;:::-;-1:-1:-1;;;;;30698:31:0;;;;;;:22;:31;;;;;;;:98;;;;30816:37;;;;;;30843:9;1897:25:1;;1885:2;1870:18;;1751:177;30816:37:0;;;;;;;;29908:964;29833:1039;;:::o;24077:750::-;3650:7;3677:6;-1:-1:-1;;;;;24216:20:0;;;3677:6;;24216:20;;:50;;-1:-1:-1;;;;;;24240:26:0;;24261:4;24240:26;24216:50;24212:557;;;-1:-1:-1;;;;;24303:17:0;;;;;;:9;:17;;;;;;:29;;24325:6;24303:21;:29::i;:::-;-1:-1:-1;;;;;24283:17:0;;;;;;;:9;:17;;;;;;:49;;;;24370:20;;;;;;;:32;;24395:6;24370:24;:32::i;:::-;-1:-1:-1;;;;;24347:20:0;;;;;;:9;:20;;;;;:55;24212:557;;;24469:86;24523:31;24544:9;24523:20;:31::i;:::-;-1:-1:-1;;;;;24469:31:0;;;;;;:20;:31;;;;;;;:53;:86::i;:::-;-1:-1:-1;;;;;24435:31:0;;;;;;;:20;:31;;;;;;;;:120;;;;24603:18;;24570:19;:30;;;;;:51;24658:17;;;;;:9;:17;;;;;:29;;24680:6;24658:21;:29::i;:::-;-1:-1:-1;;;;;24638:17:0;;;;;;;:9;:17;;;;;;:49;;;;24725:20;;;;;;;:32;;24750:6;24725:24;:32::i;:::-;-1:-1:-1;;;;;24702:20:0;;;;;;:9;:20;;;;;:55;24212:557;24801:9;-1:-1:-1;;;;;24784:35:0;24793:6;-1:-1:-1;;;;;24784:35:0;-1:-1:-1;;;;;;;;;;;24812:6:0;24784:35;;;;1897:25:1;;1885:2;1870:18;;1751:177;41739:337:0;41872:14;;41851:4;;41872:14;;;;;41868:179;;;41947:32;41972:6;41947:20;41957:9;-1:-1:-1;;;;;16353:18:0;16326:7;16353:18;;;:9;:18;;;;;;;16260:119;41947:20;:24;;:32::i;:::-;41929:14;;:50;;41903:132;;;;-1:-1:-1;;;41903:132:0;;22668:2:1;41903:132:0;;;22650:21:1;22707:2;22687:18;;;22680:30;-1:-1:-1;;;22726:18:1;;;22719:50;22786:18;;41903:132:0;22466:344:1;42084:215:0;42169:14;;42148:4;;42169:14;;;;;42165:105;;;42218:10;;42208:6;:20;;42200:58;;;;-1:-1:-1;;;42200:58:0;;23017:2:1;42200:58:0;;;22999:21:1;23056:2;23036:18;;;23029:30;23095:27;23075:18;;;23068:55;23140:18;;42200:58:0;22815:349:1;42200:58:0;-1:-1:-1;42287:4:0;;42084:215;-1:-1:-1;42084:215:0:o;20935:1625::-;21070:22;21095:26;:24;:26::i;:::-;21070:51;;21132:17;21152:27;21175:3;21152:18;21163:6;;21152;:10;;:18;;;;:::i;:::-;:22;;:27::i;:::-;21132:47;-1:-1:-1;21190:21:0;21214;:6;21132:47;21214:10;:21::i;:::-;21190:45;;21282:92;21332:31;21353:9;21332:20;:31::i;:::-;-1:-1:-1;;;;;21282:31:0;;;;;;:20;:31;;;;;;;:35;:92::i;:::-;-1:-1:-1;;;;;21248:31:0;;;;;;;:20;:31;;;;;;;;:126;;;;21418:18;;21385:19;:30;;;;;:51;21469:17;;;;;:9;:17;;;;;:29;;21491:6;21469:21;:29::i;:::-;-1:-1:-1;;;;;21449:17:0;;;;;;;:9;:17;;;;;;:49;;;;21532:20;;;;;;;:39;;21557:13;21532:24;:39::i;:::-;-1:-1:-1;;;;;21509:20:0;;;;;;:9;:20;;;;;;:62;;;;21627:4;21609:24;;;;:39;;21638:9;21609:28;:39::i;:::-;21600:4;21582:24;;;;:9;:24;;;;;:66;21683:1;21665:19;;21661:776;;;21746:4;21728:24;;;;:9;:24;;;;;;:39;;21757:9;21728:28;:39::i;:::-;21719:4;21701:24;;;;:9;:24;;;;;:66;21782:27;21788:9;21799;21782:5;:27::i;:::-;21661:776;;;21831:14;21849:1;21831:19;21827:610;;;21912:4;21894:24;;;;:9;:24;;;;;;:39;;21923:9;21894:28;:39::i;:::-;21885:4;21867:24;;;;:9;:24;;;;;:66;21948:33;21960:9;21971;21948:11;:33::i;21827:610::-;22003:14;22021:1;22003:19;21999:438;;;22059:17;;:32;;22081:9;22059:21;:32::i;:::-;22039:17;:52;22123:14;;:29;;22142:9;22123:18;:29::i;:::-;22106:14;:46;22172:31;;1897:25:1;;;-1:-1:-1;;;;;22172:31:0;;;;;1885:2:1;1870:18;22172:31:0;;;;;;;;21999:438;;;22225:14;22243:1;22225:19;22221:216;;;22280:16;;:31;;22301:9;22280:20;:31::i;:::-;22261:16;:50;22342:13;;:28;;22360:9;22342:17;:28::i;:::-;22326:13;:44;22390:35;;1897:25:1;;;-1:-1:-1;;;;;22390:35:0;;;;;1885:2:1;1870:18;22390:35:0;;;;;;;;22221:216;22454:47;;;13363:25:1;;;13419:2;13404:18;;13397:34;;;-1:-1:-1;;;;;22454:47:0;;;;;13336:18:1;22454:47:0;;;;;;;22534:9;-1:-1:-1;;;;;22517:35:0;22526:6;-1:-1:-1;;;;;22517:35:0;-1:-1:-1;;;;;;;;;;;22545:6:0;22517:35;;;;1897:25:1;;1885:2;1870:18;;1751:177;22517:35:0;;;;;;;;21059:1501;;;20935:1625;;;:::o;22568:1501::-;22701:22;22726:26;:24;:26::i;:::-;22701:51;;22763:17;22783:28;22807:3;22783:19;22794:7;;22783:6;:10;;:19;;;;:::i;:28::-;22763:48;-1:-1:-1;22822:18:0;22843:21;:6;22763:48;22843:10;:21::i;:::-;-1:-1:-1;;;;;22897:17:0;;;;;;:9;:17;;;;;;22822:42;;-1:-1:-1;22897:29:0;;22919:6;22897:21;:29::i;:::-;-1:-1:-1;;;;;22877:17:0;;;;;;;:9;:17;;;;;;:49;;;;22960:20;;;;;;;:36;;22985:10;22960:24;:36::i;:::-;-1:-1:-1;;;;;22937:20:0;;;;;;:9;:20;;;;;;:59;;;;23052:4;23034:24;;;;:39;;23063:9;23034:28;:39::i;:::-;23025:4;23007:24;;;;:9;:24;;;;;;:66;;;;-1:-1:-1;;;;;23088:17:0;;;;;;23084:90;;-1:-1:-1;;;;;23127:31:0;;23161:1;23127:31;;;:20;:31;;;;;:35;23084:90;23188:14;23206:1;23188:19;23184:762;;;23269:4;23251:24;;;;:9;:24;;;;;;:39;;23280:9;23251:28;:39::i;:::-;23242:4;23224:24;;;;:9;:24;;;;;:66;23305:24;23311:6;23319:9;23305:5;:24::i;23184:762::-;23351:14;23369:1;23351:19;23347:599;;;23432:4;23414:24;;;;:9;:24;;;;;;:39;;23443:9;23414:28;:39::i;:::-;23405:4;23387:24;;;;:9;:24;;;;;:66;23468:28;23478:6;23486:9;23468;:28::i;23347:599::-;23518:14;23536:1;23518:19;23514:432;;;23574:17;;:32;;23596:9;23574:21;:32::i;:::-;23554:17;:52;23638:14;;:29;;23657:9;23638:18;:29::i;:::-;23621:14;:46;23687:28;;1897:25:1;;;-1:-1:-1;;;;;23687:28:0;;;;;1885:2:1;1870:18;23687:28:0;1751:177:1;23514:432:0;23737:14;23755:1;23737:19;23733:213;;;23792:16;;:31;;23813:9;23792:20;:31::i;:::-;23773:16;:50;23854:13;;:28;;23872:9;23854:17;:28::i;:::-;23838:13;:44;23902:32;;1897:25:1;;;-1:-1:-1;;;;;23902:32:0;;;;;1885:2:1;1870:18;23902:32:0;1751:177:1;28713:1112:0;-1:-1:-1;;;;;28853:27:0;;28808:4;28853:27;;;:18;:27;;;;;;28808:4;;28853:27;;28848:970;;28897:17;28917:28;28937:7;28917:19;:28::i;:::-;28897:48;;28980:1;28968:9;:13;28960:60;;;;-1:-1:-1;;;28960:60:0;;23371:2:1;28960:60:0;;;23353:21:1;23410:2;23390:18;;;23383:30;23449:34;23429:18;;;23422:62;-1:-1:-1;;;23500:18:1;;;23493:32;23542:19;;28960:60:0;23169:398:1;28960:60:0;-1:-1:-1;;;;;27311:28:0;;27287:4;27311:28;;;:19;:28;;;;;;;;29061:38;29035:139;;;;-1:-1:-1;;;29035:139:0;;23774:2:1;29035:139:0;;;23756:21:1;23813:2;23793:18;;;23786:30;23852:34;23832:18;;;23825:62;-1:-1:-1;;;23903:18:1;;;23896:37;23950:19;;29035:139:0;23572:403:1;29035:139:0;-1:-1:-1;29199:4:0;;-1:-1:-1;29218:14:0;;-1:-1:-1;29218:14:0;28848:970;-1:-1:-1;;;;;29287:18:0;;29265:19;29287:18;;;:9;:18;;;;;;29320:8;:15;;-1:-1:-1;;29350:19:0;;;;;29287:18;29404:28;29287:18;29404:19;:28::i;:::-;29447:14;:21;;-1:-1:-1;;29447:21:0;;;;;29384:48;-1:-1:-1;29487:10:0;;29483:157;;29539:20;29553:6;29539:11;:20;:::i;:::-;-1:-1:-1;;;;;29518:18:0;;;;;;:9;:18;;;;;:41;29483:157;;;29600:10;:24;;;29483:157;29658:13;;29654:124;;29702:4;29692:14;;29654:124;;;29757:5;29747:15;;29654:124;29799:7;29792:14;;;;;;;28084:349;28204:6;;28169:7;;-1:-1:-1;;;;;28193:17:0;;;28204:6;;28193:17;;:50;;-1:-1:-1;28233:9:0;;-1:-1:-1;;;;;28214:29:0;;;28233:9;;28214:29;28193:50;28189:64;;;-1:-1:-1;28252:1:0;;28084:349;-1:-1:-1;28084:349:0:o;28189:64::-;-1:-1:-1;;;;;28326:28:0;;28266:23;28326:28;;;:19;:28;;;;;;28292:18;;:62;;28326:28;28292:62;:::i;:::-;28266:88;;28413:12;;28391:18;28401:7;-1:-1:-1;;;;;16353:18:0;16326:7;16353:18;;;:9;:18;;;;;;;16260:119;28391:18;28373:36;;:15;:36;:::i;:::-;28372:53;;;;:::i;38087:3644::-;38145:7;38165:22;38198:19;38348:1;38255:15;38272:16;38290:14;38306:9;38317:12;38331:11;38238:105;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;38228:116;;;;;;38220:125;;:129;;;;:::i;:::-;38198:151;;38360:19;38510:1;38417:15;38434:16;38452:14;38468:9;38479:12;38493:11;38400:105;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;38390:116;;;;;;38382:125;;:129;;;;:::i;:::-;38528:8;;38360:151;;-1:-1:-1;38528:8:0;;:16;;:8;:16;:38;;;;-1:-1:-1;38548:10:0;;;;;;;;:18;;:10;:18;38528:38;:64;;;;-1:-1:-1;38570:14:0;;;;;;;:22;;38588:4;38570:22;38528:64;38524:3166;;;38626:1;38609:18;;38524:3166;;;38663:8;;;;:16;;:8;:16;:38;;;;-1:-1:-1;38683:10:0;;;;;;;;:18;;:10;:18;38663:38;:62;;;;-1:-1:-1;38705:12:0;;;;;;;:20;;38721:4;38705:20;38663:62;38645:3045;;;38769:1;38752:18;;38645:3045;;;38806:8;;;;:16;;:8;:16;:42;;;;-1:-1:-1;38826:14:0;;;;;;;:22;;38844:4;38826:22;38806:42;:66;;;;-1:-1:-1;38852:12:0;;;;;;;:20;;38868:4;38852:20;38806:66;38788:2902;;;38916:1;38899:18;;38788:2902;;;38953:10;;;;;;;;:18;;:10;:18;:44;;;;-1:-1:-1;38975:14:0;;;;;;;:22;;38993:4;38975:22;38953:44;:68;;;;-1:-1:-1;39001:12:0;;;;;;;:20;;39017:4;39001:20;38953:68;38935:2755;;;39065:1;39048:18;;38935:2755;;;39088:8;;;;:16;;:8;:16;:38;;;;-1:-1:-1;39108:10:0;;;;;;;;:18;;:10;:18;39088:38;39084:2606;;;39147:16;39143:156;;39201:1;39184:18;;39084:2606;;39143:156;39228:11;39243:1;39228:16;39224:75;;;39282:1;39265:18;;39224:75;39084:2606;;;39320:8;;;;:16;;:8;:16;:42;;;;-1:-1:-1;39340:14:0;;;;;;;:22;;39358:4;39340:22;39320:42;39316:2374;;;39383:16;39379:156;;39437:1;39420:18;;39316:2374;;;39556:8;;;;:16;;:8;:16;:40;;;;-1:-1:-1;39576:12:0;;;;;;;:20;;39592:4;39576:20;39556:40;39552:2138;;;39617:16;39613:156;;39671:1;39654:18;;39552:2138;;39613:156;39698:11;39713:1;39698:16;39694:75;;;39752:1;39735:18;;39552:2138;;;39790:10;;;;;;;;:18;;:10;:18;:44;;;;-1:-1:-1;39812:14:0;;;;;;;:22;;39830:4;39812:22;39790:44;39786:1904;;;39855:16;39851:156;;39909:1;39892:18;;39786:1904;;;40028:10;;;;;;;;:18;;:10;:18;:42;;;;-1:-1:-1;40050:12:0;;;;;;;:20;;40066:4;40050:20;40028:42;40024:1666;;;40091:16;40087:156;;40145:1;40128:18;;40024:1666;;;40264:14;;;;;;;:22;;40282:4;40264:22;:46;;;;-1:-1:-1;40290:12:0;;;;;;;:20;;40306:4;40290:20;40264:46;40260:1430;;;40331:16;40327:156;;40385:1;40368:18;;40260:1430;;40327:156;40412:11;40427:1;40412:16;40408:75;;;40466:1;40449:18;;40260:1430;;;40504:8;;;;:16;;:8;:16;40500:1190;;;40684:1;40591:15;40608:16;40626:14;40642:9;40653:12;40667:11;40573:106;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;40563:117;;;;;;40555:126;;:130;;;;:::i;:::-;40554:136;;40689:1;40554:136;:::i;:::-;40537:153;;40500:1190;;;40712:10;;;;;;;;:18;;:10;:18;40708:982;;;40751:16;40747:237;;40805:1;40788:18;;40708:982;;40747:237;40832:11;40847:1;40832:16;40828:156;;;40886:1;40869:18;;39084:2606;;40828:156;40913:11;40928:1;40913:16;40909:75;;;40967:1;40950:18;;40708:982;;;41005:14;;;;;;;:22;;41023:4;41005:22;41001:689;;;41048:16;41044:237;;41102:1;41085:18;;41001:689;;41044:237;41129:11;41144:1;41129:16;41125:156;;;41183:1;41166:18;;39084:2606;;41001:689;41302:12;;;;;;;:20;;41318:4;41302:20;41298:392;;;41487:1;41394:15;41411:16;41429:14;41445:9;41456:12;41470:11;41376:106;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;41365:118;;;;;;41357:127;;:131;;;;:::i;:::-;41356:137;;41492:1;41356:137;:::i;41298:392::-;41672:1;41578:15;41595:16;41613:14;41629:9;41640:12;41654:11;41561:105;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;41551:117;;;;;;41543:126;;:130;;;;:::i;:::-;41542:136;;41677:1;41542:136;:::i;:::-;41526:152;;41298:392;-1:-1:-1;41709:14:0;;38087:3644;-1:-1:-1;;38087:3644:0:o;1522:98::-;1580:7;1607:5;1611:1;1607;:5;:::i;25534:422::-;25608:10;;25604:345;;25714:6;;-1:-1:-1;;;;;25714:6:0;25635:20;25704:17;;;:9;:17;;;;;;25658:6;;25635:20;25704:35;;25658:6;25704:21;:35::i;:::-;25764:6;;-1:-1:-1;;;;;25764:6:0;25754:17;;;;:9;:17;;;;;:34;;;25818:12;;25679:60;;-1:-1:-1;25818:24:0;;25835:6;25818:16;:24::i;:::-;25803:12;:39;25877:6;;25862:30;;1897:25:1;;;-1:-1:-1;;;;;25877:6:0;;;;25862:30;;;-1:-1:-1;;;;;;;;;;;25862:30:0;1885:2:1;1870:18;25862:30:0;;;;;;;25924:4;-1:-1:-1;;;;;25912:25:0;;25930:6;25912:25;;;;1897::1;;1885:2;1870:18;;1751:177;25912:25:0;;;;;;;;25620:329;;25604:345;25534:422;;:::o;25964:427::-;26034:10;;26030:354;;26061:20;26093:10;;26084:6;:19;;;;:::i;:::-;26153:6;;-1:-1:-1;;;;;26153:6:0;26118:22;26143:17;;;:9;:17;;;;;;26061:42;;-1:-1:-1;26118:22:0;26143:35;;26061:42;26143:21;:35::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;594:597::-;706:4;735:2;764;753:9;746:21;796:6;790:13;839:6;834:2;823:9;819:18;812:34;864:1;874:140;888:6;885:1;882:13;874:140;;;983:14;;;979:23;;973:30;949:17;;;968:2;945:26;938:66;903:10;;874:140;;;1032:6;1029:1;1026:13;1023:91;;;1102:1;1097:2;1088:6;1077:9;1073:22;1069:31;1062:42;1023:91;-1:-1:-1;1175:2:1;1154:15;-1:-1:-1;;1150:29:1;1135:45;;;;1182:2;1131:54;;594:597;-1:-1:-1;;;594:597:1:o;1431:315::-;1499:6;1507;1560:2;1548:9;1539:7;1535:23;1531:32;1528:52;;;1576:1;1573;1566:12;1528:52;1615:9;1602:23;1634:31;1659:5;1634:31;:::i;:::-;1684:5;1736:2;1721:18;;;;1708:32;;-1:-1:-1;;;1431:315:1:o;1933:456::-;2010:6;2018;2026;2079:2;2067:9;2058:7;2054:23;2050:32;2047:52;;;2095:1;2092;2085:12;2047:52;2134:9;2121:23;2153:31;2178:5;2153:31;:::i;:::-;2203:5;-1:-1:-1;2260:2:1;2245:18;;2232:32;2273:33;2232:32;2273:33;:::i;:::-;1933:456;;2325:7;;-1:-1:-1;;;2379:2:1;2364:18;;;;2351:32;;1933:456::o;2583:180::-;2642:6;2695:2;2683:9;2674:7;2670:23;2666:32;2663:52;;;2711:1;2708;2701:12;2663:52;-1:-1:-1;2734:23:1;;2583:180;-1:-1:-1;2583:180:1:o;3460:118::-;3546:5;3539:13;3532:21;3525:5;3522:32;3512:60;;3568:1;3565;3558:12;3583:382;3648:6;3656;3709:2;3697:9;3688:7;3684:23;3680:32;3677:52;;;3725:1;3722;3715:12;3677:52;3764:9;3751:23;3783:31;3808:5;3783:31;:::i;:::-;3833:5;-1:-1:-1;3890:2:1;3875:18;;3862:32;3903:30;3862:32;3903:30;:::i;:::-;3952:7;3942:17;;;3583:382;;;;;:::o;3970:388::-;4038:6;4046;4099:2;4087:9;4078:7;4074:23;4070:32;4067:52;;;4115:1;4112;4105:12;4067:52;4154:9;4141:23;4173:31;4198:5;4173:31;:::i;:::-;4223:5;-1:-1:-1;4280:2:1;4265:18;;4252:32;4293:33;4252:32;4293:33;:::i;4778:380::-;4857:1;4853:12;;;;4900;;;4921:61;;4975:4;4967:6;4963:17;4953:27;;4921:61;5028:2;5020:6;5017:14;4997:18;4994:38;4991:161;;;5074:10;5069:3;5065:20;5062:1;5055:31;5109:4;5106:1;5099:15;5137:4;5134:1;5127:15;4991:161;;4778:380;;;:::o;5163:338::-;5365:2;5347:21;;;5404:2;5384:18;;;5377:30;-1:-1:-1;;;5438:2:1;5423:18;;5416:44;5492:2;5477:18;;5163:338::o;5506:343::-;5708:2;5690:21;;;5747:2;5727:18;;;5720:30;-1:-1:-1;;;5781:2:1;5766:18;;5759:49;5840:2;5825:18;;5506:343::o;7331:417::-;7533:2;7515:21;;;7572:2;7552:18;;;7545:30;7611:34;7606:2;7591:18;;7584:62;-1:-1:-1;;;7677:2:1;7662:18;;7655:51;7738:3;7723:19;;7331:417::o;9600:127::-;9661:10;9656:3;9652:20;9649:1;9642:31;9692:4;9689:1;9682:15;9716:4;9713:1;9706:15;9732:125;9772:4;9800:1;9797;9794:8;9791:34;;;9805:18;;:::i;:::-;-1:-1:-1;9842:9:1;;9732:125::o;11049:168::-;11089:7;11155:1;11151;11147:6;11143:14;11140:1;11137:21;11132:1;11125:9;11118:17;11114:45;11111:71;;;11162:18;;:::i;:::-;-1:-1:-1;11202:9:1;;11049:168::o;11222:127::-;11283:10;11278:3;11274:20;11271:1;11264:31;11314:4;11311:1;11304:15;11338:4;11335:1;11328:15;11354:120;11394:1;11420;11410:35;;11425:18;;:::i;:::-;-1:-1:-1;11459:9:1;;11354:120::o;11479:128::-;11519:3;11550:1;11546:6;11543:1;11540:13;11537:39;;;11556:18;;:::i;:::-;-1:-1:-1;11592:9:1;;11479:128::o;13721:245::-;13788:6;13841:2;13829:9;13820:7;13816:23;13812:32;13809:52;;;13857:1;13854;13847:12;13809:52;13889:9;13883:16;13908:28;13930:5;13908:28;:::i;18598:127::-;18659:10;18654:3;18650:20;18647:1;18640:31;18690:4;18687:1;18680:15;18714:4;18711:1;18704:15;18730:127;18791:10;18786:3;18782:20;18779:1;18772:31;18822:4;18819:1;18812:15;18846:4;18843:1;18836:15;18862:251;18932:6;18985:2;18973:9;18964:7;18960:23;18956:32;18953:52;;;19001:1;18998;18991:12;18953:52;19033:9;19027:16;19052:31;19077:5;19052:31;:::i;19118:980::-;19380:4;19428:3;19417:9;19413:19;19459:6;19448:9;19441:25;19485:2;19523:6;19518:2;19507:9;19503:18;19496:34;19566:3;19561:2;19550:9;19546:18;19539:31;19590:6;19625;19619:13;19656:6;19648;19641:22;19694:3;19683:9;19679:19;19672:26;;19733:2;19725:6;19721:15;19707:29;;19754:1;19764:195;19778:6;19775:1;19772:13;19764:195;;;19843:13;;-1:-1:-1;;;;;19839:39:1;19827:52;;19934:15;;;;19899:12;;;;19875:1;19793:9;19764:195;;;-1:-1:-1;;;;;;;20015:32:1;;;;20010:2;19995:18;;19988:60;-1:-1:-1;;;20079:3:1;20064:19;20057:35;19976:3;19118:980;-1:-1:-1;;;19118:980:1:o;20103:1105::-;20198:6;20229:2;20272;20260:9;20251:7;20247:23;20243:32;20240:52;;;20288:1;20285;20278:12;20240:52;20321:9;20315:16;20350:18;20391:2;20383:6;20380:14;20377:34;;;20407:1;20404;20397:12;20377:34;20445:6;20434:9;20430:22;20420:32;;20490:7;20483:4;20479:2;20475:13;20471:27;20461:55;;20512:1;20509;20502:12;20461:55;20541:2;20535:9;20563:2;20559;20556:10;20553:36;;;20569:18;;:::i;:::-;20615:2;20612:1;20608:10;20647:2;20641:9;20710:2;20706:7;20701:2;20697;20693:11;20689:25;20681:6;20677:38;20765:6;20753:10;20750:22;20745:2;20733:10;20730:18;20727:46;20724:72;;;20776:18;;:::i;:::-;20812:2;20805:22;20862:18;;;20896:15;;;;-1:-1:-1;20938:11:1;;;20934:20;;;20966:19;;;20963:39;;;20998:1;20995;20988:12;20963:39;21022:11;;;;21042:135;21058:6;21053:3;21050:15;21042:135;;;21124:10;;21112:23;;21075:12;;;;21155;;;;21042:135;;;21196:6;20103:1105;-1:-1:-1;;;;;;;;20103:1105:1:o;23980:557::-;24249:19;;;24293:2;24284:12;;24277:28;;;;24330:2;24321:12;;24314:28;;;;24380:2;24376:15;;;-1:-1:-1;;24372:53:1;24358:12;;;24351:75;24451:3;24442:13;;24435:29;24489:3;24480:13;;24473:29;24527:3;24518:13;;23980:557::o;24542:112::-;24574:1;24600;24590:35;;24605:18;;:::i;:::-;-1:-1:-1;24639:9:1;;24542:112::o

Swarm Source

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