ETH Price: $2,357.84 (+3.67%)

Token

MAMOT (MAMOT)
 

Overview

Max Total Supply

55,000,000 MAMOT

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
12,214.034295527812836579 MAMOT

Value
$0.00
0xf46c619f7d4cbb522c93b5afeb55b35aa6f14c7e
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:
MAMOT

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.19;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant NOT_ENTERED = 1;
    uint256 private constant ENTERED = 2;

    uint256 private _status;

    /**
     * @dev Unauthorized reentrant call.
     */
    error ReentrancyGuardReentrantCall();

    constructor() {
        _status = NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be NOT_ENTERED
        if (_status == ENTERED) {
            revert ReentrancyGuardReentrantCall();
        }

        // Any calls to nonReentrant after this point will fail
        _status = ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = NOT_ENTERED;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == ENTERED;
    }
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    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);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

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

    constructor() {
        // Gnosis Safe MultiSig Wallet
        _owner = address(0xd701a9BAB866610189285E1BE17D2A80A4Df29b3);
        emit OwnershipTransferred(address(0), _owner);
    }

    function renounounceOwnership() public onlyOwner {
        _owner = address(0);
        pendingOwner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }

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

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

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

    function claimOwnership() public {
        require(msg.sender == pendingOwner, 'Caller != pending owner');
        address oldOwner = _owner;
        _owner = pendingOwner;
        pendingOwner = address(0);
        emit OwnershipTransferred(oldOwner, _owner);
    }
}

interface IUniswapV2Factory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);

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

interface IUniswapV2Pair {
    function factory() external view returns (address);

    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

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

    function WETH() external pure returns (address);

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

    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}

interface ISacrificePointsPool {
    function sacrifice(uint256 poolId, uint256 points) external;

    function depositETH(uint256 poolId) external payable;
}

contract MAMOT is Context, IERC20, Ownable, ReentrancyGuard {
    using SafeMath for uint256;

    ISacrificePointsPool public sacrificeContract;

    // Gnosis Safe Multisig Protocol Wallet
    address payable public marketingAddress = payable(0xd701a9BAB866610189285E1BE17D2A80A4Df29b3);
    address payable public sacrificeAddress;

    address payable public deployerWallet = payable(address(this));
    address public deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    address[] private _excluded;

    uint256 public allTimeHigh;
    uint256 public antiDumpThreshold = 40;

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 55000000 * 10 ** 18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 private _tFeeTotal;

    string private constant _name = 'MAMOT';
    string private constant _symbol = 'MAMOT';
    uint8 private constant _decimals = 18;

    // Used in variable fee calculations
    uint256 private _tempLiquidityFee = 0;

    uint256 public _transferFee = 20;

    uint256 public _buySacrificeFee = 1;
    uint256 public _buyHolderFee = 2;
    uint256 public _buyMarketingFee = 2;
    uint256 private _buyLiquidityFee = 5;

    uint256 public _sellSacrificeFee = 0;
    uint256 public _sellHolderFee = 4;
    uint256 public _sellMarketingFee = 4;
    uint256 private _sellLiquidityFee = 8;

    bool public tradingOpen = true;
    bool public transferFeeTogle = true;

    address public tradingSetter;

    // Protocol Fees
    uint256 public _bMaxTxAmount = 100000 * 10 ** 18;
    uint256 public _sMaxTxAmount = 100000 * 10 ** 18;
    uint256 private minimumTokensBeforeSwap = 1000 * 10 ** 18;

    IUniswapV2Router01 public uniswapV2Router;
    address public uniswapV2Pair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public sacrificeFunction = false;
    bool public antiDump = true;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapTokensForETH(uint256 amountIn, address[] path);

    constructor(address _sacrificeContract) {
        require(_sacrificeContract != address(0), 'Address should not be 0');

        sacrificeAddress = payable(_sacrificeContract);

        // Gnosis safe Multisig Wallets
        _rOwned[owner()] = _rTotal;

        sacrificeContract = ISacrificePointsPool(_sacrificeContract);
        IUniswapV2Router01 _uniswapV2Router = IUniswapV2Router01(routerAddress);

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

        uniswapV2Router = _uniswapV2Router;
        tradingSetter = owner();

        // Protocol Multisig Wallets
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[deployerWallet] = true;
        _isExcludedFromFee[marketingAddress] = true;
        _isExcludedFromFee[sacrificeAddress] = true;
        _isExcludedFromFee[deadAddress] = true;

        // Gnosis safe Multisig Token Distribution wallets
        _isExcludedFromFee[address(0xEb3dE025B9d6EcC7C48b57876a669175730bFD9F)] = true;
        _isExcludedFromFee[address(0x5b8C5bcD639f76654CeE8EC1BAe8235e3A5D40df)] = true;
        _isExcludedFromFee[address(0x1a0a096d2c8a8dc1045CE1Edd35Dc88BC9f5831a)] = true;
        _isExcludedFromFee[address(0xe657E3F9BCDF9a28BD9B09dbDAf29CDa6f00b398)] = true;

        // Gnosis safe Multisig Dev and Marketing wallet
        _isExcludedFromFee[address(0x0F2589065324d88c52165937c59BfF4741a4d778)] = true;

        // Gnosis safe Multisig Owner Wallets
        _isExcludedFromFee[address(0xd701a9BAB866610189285E1BE17D2A80A4Df29b3)] = true;
        _isExcludedFromFee[address(0x875294c47fDF79A093A16F0FeBaE590655449833)] = true;
        _isExcludedFromFee[address(0x3F062683FaeA9518614b118CcafEcaF36c44B810)] = true;
        _isExcludedFromFee[address(0x0F68D04AC475A196B04Df236c9E3d79c8947dD01)] = true;

        emit Transfer(address(0), owner(), _tTotal);
    }

    /* PUBLIC FUNCTION STARTS */

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenAfterFee(_rOwned[account]);
    }

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

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

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

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

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

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

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

    function tokenAfterFee(uint256 rAmount) public view returns (uint256) {
        require(rAmount <= _rTotal, 'Amount must be less than total reflections');
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

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

    /* PUBLIC FUNCTION ENDS */

    /* PRIVATE FUNCTION STARTS */

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

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

    function setAntiDumpThreshold(uint256 _threshold) external onlyOwner {
        require(_threshold > 0 && _threshold < 100, 'Threashold must be greater than 0 and less than 100%');
        antiDumpThreshold = _threshold;
    }

    function checkAntiDump(address from, address to) internal {
        if (from == uniswapV2Pair) {
            uint256 currentPrice = getCurrentPrice();
            if (allTimeHigh == 0) {
                allTimeHigh = currentPrice;
            } else if (currentPrice > allTimeHigh) {
                allTimeHigh = currentPrice;
            }
        }
        if (to == uniswapV2Pair) {
            uint256 currentPrice = getCurrentPrice();
            if (allTimeHigh == 0) {
                allTimeHigh = currentPrice;
            } else {
                if (currentPrice < (allTimeHigh * (100 - antiDumpThreshold)) / 100) {
                    // Price has dropped by antiDumpThreshold or more, prevent selling
                    require(from == owner() || _isExcludedFromFee[from], 'Selling is currently restricted');
                } else if (currentPrice > allTimeHigh) {
                    allTimeHigh = currentPrice;
                }
            }
        }
    }

    function getCurrentPrice() internal view returns (uint256) {
        // Get the Uniswap router instance
        IUniswapV2Router01 router = IUniswapV2Router01(routerAddress);

        // Define the token addresses (your token and ETH)
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uint256 amountIn = 1e18;

        // Get the amounts out (results[1] contains the amount of ETH you can get for 1 token)
        uint256[] memory results = router.getAmountsOut(amountIn, path);

        return results[1]; // The price of 1 token in terms of ETH
    }

    function tokenPrice() public view returns (uint256) {
        return getCurrentPrice();
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), 'ERC20: transfer from the zero address');
        require(to != address(0), 'ERC20: transfer to the zero address');
        require(amount > 0, 'Transfer amount must be greater than zero');
        if (tradingOpen == false) {
            require(_isExcludedFromFee[to] || _isExcludedFromFee[from], 'Trading Not Yet Started.');
        }

        if (antiDump && from != owner() && to != owner()) {
            checkAntiDump(from, to);
        }

        if (from != owner() && to != owner() && !_isExcludedFromFee[to] && !_isExcludedFromFee[from]) {
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(amount <= _bMaxTxAmount, 'Transfer amount exceeds max buy amount.');
            }
            if (to == uniswapV2Pair && !_isExcludedFromFee[from]) {
                require(amount <= _sMaxTxAmount, 'Transfer amount exceeds the max sell amount.');
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;

        // Sell tokens for ETH
        if (!inSwapAndLiquify && swapAndLiquifyEnabled && balanceOf(uniswapV2Pair) > 0) {
            if (to == uniswapV2Pair && overMinimumTokenBalance) {
                feeDistribution();
            }
        }

        _tempLiquidityFee = 0;
        // If any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            _tempLiquidityFee = 0;
        } else {
            if (from != uniswapV2Pair && to != uniswapV2Pair && transferFeeTogle) {
                _tempLiquidityFee = _transferFee;
            }

            // Buy
            if (from == uniswapV2Pair) {
                _tempLiquidityFee = _buyLiquidityFee;
            }
            // Sell
            if (to == uniswapV2Pair) {
                _tempLiquidityFee = _sellLiquidityFee;
            }
        }

        _tokenTransfer(from, to, amount);
    }

    function swapTokenManual(uint256 tokenAmount) external onlyOwner {
        swapTokensForEth(tokenAmount, address(this));
    }

    function feeDistribution() private lockTheSwap {
        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;

        // Sell tokens for ETH
        if (overMinimumTokenBalance) {
            contractTokenBalance = minimumTokensBeforeSwap;
            uint256 _holderFee = _sellHolderFee;
            uint256 _marketingFee = _sellMarketingFee;
            uint256 _sacrificeFee = _sellSacrificeFee;

            if (_holderFee == 0) {
                _holderFee = _buyHolderFee;
            }
            if (_marketingFee == 0) {
                _marketingFee = _buyMarketingFee;
            }
            if (_sacrificeFee == 0) {
                _sacrificeFee = _buySacrificeFee;
            }

            uint256 _liquidityFee = _holderFee + _marketingFee + _sacrificeFee;

            uint256 marketingToken = 0;
            uint256 sacrificeToken = 0;
            uint256 holderToken = 0;

            if (_liquidityFee > 0) {
                marketingToken = contractTokenBalance.mul(_marketingFee).div(_liquidityFee);
                sacrificeToken = contractTokenBalance.mul(_sacrificeFee).div(_liquidityFee);
                holderToken = contractTokenBalance.sub(marketingToken).sub(sacrificeToken);
            }

            swapTokensForEth(marketingToken + holderToken, payable(address(this)));
            uint256 ethTotal = address(this).balance;
            uint256 ethTotalLiquidity = _holderFee + _marketingFee;
            uint256 marketingEth = ethTotal.mul(_marketingFee).div(ethTotalLiquidity);
            uint256 holderEth = ethTotal.sub(marketingEth);
            if (marketingEth > 0) {
                (bool success, ) = marketingAddress.call{value: marketingEth}('');
                require(success, 'Address: unable to send value, recipient may have reverted');
            }

            if (sacrificeFunction) {
                if (sacrificeToken > 0) {
                    // Approve SacrificePointsPool contract to spend tokens
                    IERC20(address(this)).approve(address(sacrificeContract), sacrificeToken);
                    // Deposit points to SacrificePointsPool
                    sacrificeContract.sacrifice(1, sacrificeToken);
                }
                if (holderEth > 0) {
                    sacrificeContract.depositETH{value: holderEth}(1);
                }
            }
        }
    }

    function swapTokensForEth(uint256 tokenAmount, address _toAddress) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // Generate the uniswap pair path of token -> WETH
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        // Make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            _toAddress,
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount) = _getRValues(tAmount, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, tTransferAmount, tLiquidity);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256) {
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tLiquidity);
        return (tTransferAmount, tLiquidity);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tLiquidity,
        uint256 currentRate
    ) private pure returns (uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rLiquidity);
        return (rAmount, rTransferAmount);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[deployerWallet] = _rOwned[deployerWallet].add(rLiquidity);
        if (_isExcluded[deployerWallet]) _tOwned[deployerWallet] = _tOwned[deployerWallet].add(tLiquidity);
    }

    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_tempLiquidityFee).div(10 ** 2);
    }

    // To receive ETH from uniswapV2Router when swapping
    receive() external payable {}

    /* PRIVATE FUNCTION ENDS */

    /* OWNER FUNCTION STARTS */

    //Use when new router is released and pair HAS been created already.
    function setRouterAddress(address newRouter) external onlyOwner {
        require(newRouter != address(0), 'Address should not be 0');
        IUniswapV2Router01 _newPancakeRouter = IUniswapV2Router01(newRouter);
        uniswapV2Router = _newPancakeRouter;
    }

    //Use when new router is released and pair HAS been created already.
    function setPairAddress(address newPair) external onlyOwner {
        require(newPair != address(0), 'Address should not be 0');
        uniswapV2Pair = newPair;
    }

    function excludeFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setBuyMaxTxAmount(uint256 bMaxTxAmount) external onlyOwner {
        require(bMaxTxAmount >= (_tTotal / 1000), 'Amount Should be greater than 0.1% of the total Supply');
        _bMaxTxAmount = bMaxTxAmount;
    }

    function setSellMaxTxAmount(uint256 sMaxTxAmount) external onlyOwner {
        require(sMaxTxAmount >= (_tTotal / 1000), 'Amount Should be greater than 0.1% of the total Supply');
        _sMaxTxAmount = sMaxTxAmount;
    }

    function setMinTokensToInitiateSwap(uint256 _minimumTokensBeforeSwap) external onlyOwner {
        minimumTokensBeforeSwap = _minimumTokensBeforeSwap;
    }

    function setMarketingAddress(address _marketingAddress) external onlyOwner {
        require(_marketingAddress != address(0), 'Address should not be 0');
        marketingAddress = payable(_marketingAddress);
        _isExcludedFromFee[marketingAddress] = true;
    }

    function setSacrificeAddress(address _sacrificeContract) external onlyOwner {
        require(_sacrificeContract != address(0), 'Address should not be 0');
        sacrificeAddress = payable(_sacrificeContract);
        sacrificeContract = ISacrificePointsPool(_sacrificeContract);
        _isExcludedFromFee[sacrificeAddress] = true;
    }

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

    function changeRouterVersion(address _router) external onlyOwner returns (address _pair) {
        require(_router != address(0), 'Address should not be 0');
        IUniswapV2Router01 _uniswapV2Router = IUniswapV2Router01(_router);

        _pair = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), uniswapV2Router.WETH());
        if (_pair == address(0)) {
            // Pair doesn't exist
            _pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        }
        uniswapV2Pair = _pair;

        // Set the router of the contract variables
        uniswapV2Router = _uniswapV2Router;
    }

    // for stuck tokens of other types
    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(this), "Can't let you take all native token");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        return _sent;
    }

    function setRewardMarketingDevFee(
        uint256 _sellHolderPercent,
        uint256 _sellSacrificePercent,
        uint256 _sellMarketingPercent,
        uint256 _buyHolderPercent,
        uint256 _buySacrificePercent,
        uint256 _buyMarketingPercent
    ) external onlyOwner {
        require(
            (_sellHolderPercent + _sellMarketingPercent + _sellSacrificePercent) <= 10,
            'Total Sell Percent Should be less than 10%'
        );
        require(
            (_buyHolderPercent + _buySacrificePercent + _buyMarketingPercent) < 10,
            'Total Buy Percent Should be less than 10%'
        );

        _sellSacrificeFee = _sellSacrificePercent;
        _sellMarketingFee = _sellMarketingPercent;
        _sellHolderFee = _sellHolderPercent;

        _buySacrificeFee = _buySacrificePercent;
        _buyMarketingFee = _buyMarketingPercent;
        _buyHolderFee = _buyHolderPercent;

        _buyLiquidityFee = _buySacrificePercent + _buyMarketingPercent + _buyHolderPercent;
        _sellLiquidityFee = _sellMarketingPercent + _sellSacrificePercent + _sellHolderPercent;
    }

    function setTransferFee(uint256 _transferFee_) external onlyOwner {
        require(_transferFee_ < 20, 'Transfer Fee should be less than 20%');
        _transferFee = _transferFee_;
    }

    /* Turn on or Off the Trading Option */
    function setTradingOpen(bool _status) external onlyOwner {
        require(tradingSetter == msg.sender, 'Ownership of Trade Setter Renounced');
        tradingOpen = _status;
    }

    function setSacrificeFunction(bool _status) external onlyOwner {
        sacrificeFunction = _status;
    }

    function setAntiDump(bool _status) external onlyOwner {
        antiDump = _status;
    }

    /* Renounce Trading Setter Address */
    /* Note : Once Renounced trading cant be closed */
    function renounceTradingOwner() external onlyOwner {
        require(tradingOpen == true, 'Trading Must be turned on before Renouncing Ownership');
        tradingSetter = address(0);
    }

    // Recommended : For stuck tokens (as a result of slight miscalculations/rounding errors)
    function SweepStuck(uint256 _amount) external onlyOwner nonReentrant {
        require(_amount > 0, 'Amount should be greater than 0');
        (bool success, ) = owner().call{value: _amount}('');
        require(success, 'Address: unable to send value, recipient may have reverted');
    }

    /* OWNER FUNCTION ENDS */
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_sacrificeContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"SweepStuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_bMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyHolderFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buySacrificeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellHolderFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellSacrificeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allTimeHigh","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiDump","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiDumpThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"_pair","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployerWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceTradingOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sacrificeAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sacrificeContract","outputs":[{"internalType":"contract ISacrificePointsPool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sacrificeFunction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setAntiDump","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setAntiDumpThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bMaxTxAmount","type":"uint256"}],"name":"setBuyMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumTokensBeforeSwap","type":"uint256"}],"name":"setMinTokensToInitiateSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPair","type":"address"}],"name":"setPairAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellHolderPercent","type":"uint256"},{"internalType":"uint256","name":"_sellSacrificePercent","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingPercent","type":"uint256"},{"internalType":"uint256","name":"_buyHolderPercent","type":"uint256"},{"internalType":"uint256","name":"_buySacrificePercent","type":"uint256"},{"internalType":"uint256","name":"_buyMarketingPercent","type":"uint256"}],"name":"setRewardMarketingDevFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sacrificeContract","type":"address"}],"name":"setSacrificeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setSacrificeFunction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sMaxTxAmount","type":"uint256"}],"name":"setSellMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setTradingOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_transferFee_","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"swapTokenManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenAfterFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingSetter","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"transferFeeTogle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router01","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600680546001600160a01b031990811673d701a9bab866610189285e1be17d2a80a4df29b3179091556008805482163017905560098054821661dead179055600a8054909116737a250d5630b4cf539739df2c5dacb4c659f2488d1790556028601255620000806a2d7eb3f96e070d9700000060001962000651565b6200008e9060001962000674565b6013556000601581905560146016556001601755600260188190556019556005601a55601b556004601c819055601d556008601e55601f805461ffff191661010117905569152d02c7e14af68000006020819055602155683635c9adc5dea000006022556024805462ffffff60a81b19166201000160a81b1790553480156200011657600080fd5b50604051620040613803806200406183398101604081905262000139916200069c565b600080546001600160a01b03191673d701a9bab866610189285e1be17d2a80a4df29b390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360016004556001600160a01b038116620001ec5760405162461bcd60e51b815260206004820152601760248201527f416464726573732073686f756c64206e6f742062652030000000000000000000604482015260640160405180910390fd5b600780546001600160a01b0319166001600160a01b038316179055601354600b6000620002216000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160002093909355600580546001600160a01b031916858516179055600a54815163c45a015560e01b81529151931692839263c45a015592600480820193918290030181865afa15801562000294573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ba91906200069c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000308573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032e91906200069c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200037c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a291906200069c565b602480546001600160a01b03199081166001600160a01b03938416179091556023805490911683831617905560008054601f805462010000600160b01b0319169184166201000002919091179055308152600e6020526040808220805460ff19908116600190811790925583548516845282842080548216831790556008548516845282842080548216831790556006548516845282842080548216831790556007548516845282842080548216831790556009548516845291832080548316821790557fd5a23f0a41e0613075c842e49c83513ce9210e9d56200f25dae4fb3086a427df80548316821790557ff859eea830bbf8bdfd7c083a19dd0ae6aaa2f6efbecd01786c27a90c18d42bf280548316821790557fe22a33b11341a164f1c6813038cabd39fa7c484b0b99e01a925644d0ff6c388680548316821790557f5754b6cde427c6b96ca5cc7efd1429288ec8276903079b3ed5d4494c3808976780548316821790557fe77cdd661a605e33543a3901fd3a33dfcc2d77a37d21d4a536f104d7587c4cbe80548316821790557f743d52f58ebc54d871325ecd2c24966ed34bf0bee32e40e92d26b46ae0c322e980548316821790557f14493b4313afb586ed891404dd29f73b40215679499a9a06a262bbf3fe6c3c7d80548316821790557fb3aa3a4ce557e2290b8cc5f265da1c2e49f2ea62931871d16757d8c8caac35cd8054831682179055730f68d04ac475a196b04df236c9e3d79c8947dd0183527f6327790721cd419a3f2adf856860ed0d507854bff4353c1a28cacc2f904454e5805490921617905554166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a2d7eb3f96e070d970000006040516200064191815260200190565b60405180910390a35050620006ce565b6000826200066f57634e487b7160e01b600052601260045260246000fd5b500690565b818103818111156200069657634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215620006af57600080fd5b81516001600160a01b0381168114620006c757600080fd5b9392505050565b61398380620006de6000396000f3fe6080604052600436106103f35760003560e01c80637ff9b59611610208578063a9059cbb11610118578063e1c68c52116100ab578063ec3e6c141161007a578063ec3e6c1414610bc1578063ec73ef8214610be2578063efdf6c5414610bf8578063f2fde38b14610c18578063ffb54a9914610c3857600080fd5b8063e1c68c5214610b4c578063e30c397814610b6b578063ea2f0b3714610b8b578063ebf8237f14610bab57600080fd5b8063c49b9a80116100e7578063c49b9a8014610aba578063c5d2418914610ada578063c860795214610af0578063dd62ed3e14610b0657600080fd5b8063a9059cbb14610a3a578063af5f1c2d14610a5a578063b43444c714610a7a578063bc29b4c714610a9a57600080fd5b8063906e9dd01161019b578063a22d48321161016a578063a22d4832146109a4578063a3365013146109c4578063a457c2d7146109da578063a561f5a1146109fa578063a5ece94114610a1a57600080fd5b8063906e9dd01461095957806395d89b41146103ff5780639c53033714610979578063a073d37f1461098f57600080fd5b806389dfdfef116101d757806389dfdfef146108d45780638da5cb5b146108fa5780638ddc25d3146109185780638f02bb5b1461093957600080fd5b80637ff9b5961461084657806381fb6abb1461085b5780638366e79a1461087b57806388f820201461089b57600080fd5b80633df9a8d2116103035780635342acb41161029657806362f90b1a1161026557806362f90b1a146107b057806370a08231146107d057806371c6b360146107f0578063739f2c3b1461081057806377d57b6f1461082657600080fd5b80635342acb41461071757806356d6d484146107505780635881f3ef146107705780635d60c7be1461079057600080fd5b8063463fd761116102d2578063463fd761146106ab57806349bd5a5e146106c15780634a74bb02146106e15780634e71e0c81461070257600080fd5b80633df9a8d21461063557806341cb87fc1461064b578063437823ec1461066b57806344651cca1461068b57600080fd5b80631ffd78ca116103865780632bb49838116103555780632bb49838146105a3578063313ce567146105b95780633268cc56146105d557806339509351146105f55780633d80ddd81461061557600080fd5b80631ffd78ca1461052e57806321c03a971461054357806323b872dd1461056357806327c8f8351461058357600080fd5b806318160ddd116103c257806318160ddd146104c35780631cfa7eb6146104e15780631e562f0c146104f85780631f7a1ab91461050e57600080fd5b806306fdde03146103ff578063095ea7b31461043c57806313114a9d1461046c5780631694505e1461048b57600080fd5b366103fa57005b600080fd5b34801561040b57600080fd5b50604080518082018252600581526413505353d560da1b6020820152905161043391906133d0565b60405180910390f35b34801561044857600080fd5b5061045c610457366004613433565b610c52565b6040519015158152602001610433565b34801561047857600080fd5b506014545b604051908152602001610433565b34801561049757600080fd5b506023546104ab906001600160a01b031681565b6040516001600160a01b039091168152602001610433565b3480156104cf57600080fd5b506a2d7eb3f96e070d9700000061047d565b3480156104ed57600080fd5b506104f6610c69565b005b34801561050457600080fd5b5061047d60215481565b34801561051a57600080fd5b506104f661052936600461345f565b610ce3565b34801561053a57600080fd5b506104f6610d12565b34801561054f57600080fd5b506104f661055e366004613486565b610dc5565b34801561056f57600080fd5b5061045c61057e3660046134a3565b610e6e565b34801561058f57600080fd5b506009546104ab906001600160a01b031681565b3480156105af57600080fd5b5061047d60125481565b3480156105c557600080fd5b5060405160128152602001610433565b3480156105e157600080fd5b50600a546104ab906001600160a01b031681565b34801561060157600080fd5b5061045c610610366004613433565b610ed7565b34801561062157600080fd5b506007546104ab906001600160a01b031681565b34801561064157600080fd5b5061047d60165481565b34801561065757600080fd5b506104f66106663660046134e4565b610f0d565b34801561067757600080fd5b506104f66106863660046134e4565b610f7f565b34801561069757600080fd5b506104f66106a636600461345f565b610fcd565b3480156106b757600080fd5b5061047d60115481565b3480156106cd57600080fd5b506024546104ab906001600160a01b031681565b3480156106ed57600080fd5b5060245461045c90600160a81b900460ff1681565b34801561070e57600080fd5b506104f6611004565b34801561072357600080fd5b5061045c6107323660046134e4565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561075c57600080fd5b506104f661076b36600461345f565b6110b8565b34801561077c57600080fd5b506104ab61078b3660046134e4565b61111d565b34801561079c57600080fd5b506008546104ab906001600160a01b031681565b3480156107bc57600080fd5b506104f66107cb366004613486565b61146a565b3480156107dc57600080fd5b5061047d6107eb3660046134e4565b6114b2565b3480156107fc57600080fd5b506104f661080b366004613501565b611511565b34801561081c57600080fd5b5061047d601b5481565b34801561083257600080fd5b506104f661084136600461345f565b61167f565b34801561085257600080fd5b5061047d611727565b34801561086757600080fd5b506005546104ab906001600160a01b031681565b34801561088757600080fd5b5061045c610896366004613544565b611736565b3480156108a757600080fd5b5061045c6108b63660046134e4565b6001600160a01b03166000908152600f602052604090205460ff1690565b3480156108e057600080fd5b50601f546104ab906201000090046001600160a01b031681565b34801561090657600080fd5b506000546001600160a01b03166104ab565b34801561092457600080fd5b5060245461045c90600160b81b900460ff1681565b34801561094557600080fd5b506104f661095436600461345f565b6118af565b34801561096557600080fd5b506104f66109743660046134e4565b61193a565b34801561098557600080fd5b5061047d60205481565b34801561099b57600080fd5b5060225461047d565b3480156109b057600080fd5b506104f66109bf3660046134e4565b6119c4565b3480156109d057600080fd5b5061047d60185481565b3480156109e657600080fd5b5061045c6109f5366004613433565b611a36565b348015610a0657600080fd5b5061047d610a1536600461345f565b611a85565b348015610a2657600080fd5b506006546104ab906001600160a01b031681565b348015610a4657600080fd5b5061045c610a55366004613433565b611b09565b348015610a6657600080fd5b506104f6610a7536600461345f565b611b16565b348015610a8657600080fd5b506104f6610a9536600461345f565b611c16565b348015610aa657600080fd5b506104f6610ab53660046134e4565b611c7b565b348015610ac657600080fd5b506104f6610ad5366004613486565b611d12565b348015610ae657600080fd5b5061047d60195481565b348015610afc57600080fd5b5061047d601d5481565b348015610b1257600080fd5b5061047d610b21366004613544565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b348015610b5857600080fd5b50601f5461045c90610100900460ff1681565b348015610b7757600080fd5b506003546104ab906001600160a01b031681565b348015610b9757600080fd5b506104f6610ba63660046134e4565b611d94565b348015610bb757600080fd5b5061047d601c5481565b348015610bcd57600080fd5b5060245461045c90600160b01b900460ff1681565b348015610bee57600080fd5b5061047d60175481565b348015610c0457600080fd5b506104f6610c13366004613486565b611ddf565b348015610c2457600080fd5b506104f6610c333660046134e4565b611e27565b348015610c4457600080fd5b50601f5461045c9060ff1681565b6000610c5f338484611ed8565b5060015b92915050565b6000546001600160a01b03163314610c9c5760405162461bcd60e51b8152600401610c939061357d565b60405180910390fd5b600080546001600160a01b0319908116825560038054909116905560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610d0d5760405162461bcd60e51b8152600401610c939061357d565b602255565b6000546001600160a01b03163314610d3c5760405162461bcd60e51b8152600401610c939061357d565b601f5460ff161515600114610db15760405162461bcd60e51b815260206004820152603560248201527f54726164696e67204d757374206265207475726e6564206f6e206265666f726560448201527402052656e6f756e63696e67204f776e65727368697605c1b6064820152608401610c93565b601f805462010000600160b01b0319169055565b6000546001600160a01b03163314610def5760405162461bcd60e51b8152600401610c939061357d565b601f546201000090046001600160a01b03163314610e5b5760405162461bcd60e51b815260206004820152602360248201527f4f776e657273686970206f66205472616465205365747465722052656e6f756e60448201526218d95960ea1b6064820152608401610c93565b601f805460ff1916911515919091179055565b6000610e7b848484611ffc565b610ecd8433610ec885604051806060016040528060288152602001613901602891396001600160a01b038a166000908152600d602090815260408083203384529091529020549190612550565b611ed8565b5060019392505050565b336000818152600d602090815260408083206001600160a01b03871684529091528120549091610c5f918590610ec8908661257c565b6000546001600160a01b03163314610f375760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b038116610f5d5760405162461bcd60e51b8152600401610c93906135b2565b602380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610fa95760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b03163314610ff75760405162461bcd60e51b8152600401610c939061357d565b6110018130612588565b50565b6003546001600160a01b0316331461105e5760405162461bcd60e51b815260206004820152601760248201527f43616c6c657220213d2070656e64696e67206f776e65720000000000000000006044820152606401610c93565b60008054600380546001600160a01b038082166001600160a01b031980861682178755909216909255604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146110e25760405162461bcd60e51b8152600401610c939061357d565b6110f96103e86a2d7eb3f96e070d970000006135ff565b8110156111185760405162461bcd60e51b8152600401610c9390613621565b602055565b600080546001600160a01b031633146111485760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b03821661116e5760405162461bcd60e51b8152600401610c93906135b2565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d59190613677565b6001600160a01b031663e6a4390530602360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125b9190613677565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156112a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ca9190613677565b91506001600160a01b03821661143657806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190613677565b6001600160a01b031663c9c6539630602360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c29190613677565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561140f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114339190613677565b91505b602480546001600160a01b038085166001600160a01b03199283161790925560238054939092169216919091179055919050565b6000546001600160a01b031633146114945760405162461bcd60e51b8152600401610c939061357d565b60248054911515600160b81b0260ff60b81b19909216919091179055565b6001600160a01b0381166000908152600f602052604081205460ff16156114ef57506001600160a01b03166000908152600c602052604090205490565b6001600160a01b0382166000908152600b6020526040902054610c6390611a85565b6000546001600160a01b0316331461153b5760405162461bcd60e51b8152600401610c939061357d565b600a856115488689613694565b6115529190613694565b11156115b35760405162461bcd60e51b815260206004820152602a60248201527f546f74616c2053656c6c2050657263656e742053686f756c64206265206c657360448201526973207468616e2031302560b01b6064820152608401610c93565b600a816115c08486613694565b6115ca9190613694565b106116295760405162461bcd60e51b815260206004820152602960248201527f546f74616c204275792050657263656e742053686f756c64206265206c657373604482015268207468616e2031302560b81b6064820152608401610c93565b601b859055601d849055601c869055601782905560198190556018839055826116528284613694565b61165c9190613694565b601a558561166a8686613694565b6116749190613694565b601e55505050505050565b6000546001600160a01b031633146116a95760405162461bcd60e51b8152600401610c939061357d565b6000811180156116b95750606481105b6117225760405162461bcd60e51b815260206004820152603460248201527f546872656173686f6c64206d7573742062652067726561746572207468616e206044820152733020616e64206c657373207468616e203130302560601b6064820152608401610c93565b601255565b600061173161271b565b905090565b600080546001600160a01b031633146117615760405162461bcd60e51b8152600401610c939061357d565b306001600160a01b038416036117c55760405162461bcd60e51b815260206004820152602360248201527f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60448201526235b2b760e91b6064820152608401610c93565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa15801561180c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183091906136a7565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611883573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a791906136c0565b949350505050565b6000546001600160a01b031633146118d95760405162461bcd60e51b8152600401610c939061357d565b601481106119355760405162461bcd60e51b8152602060048201526024808201527f5472616e73666572204665652073686f756c64206265206c657373207468616e6044820152632032302560e01b6064820152608401610c93565b601655565b6000546001600160a01b031633146119645760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b03811661198a5760405162461bcd60e51b8152600401610c93906135b2565b600680546001600160a01b039092166001600160a01b0319909216821790556000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b031633146119ee5760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b038116611a145760405162461bcd60e51b8152600401610c93906135b2565b602480546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c5f3384610ec88560405180606001604052806025815260200161392960259139336000908152600d602090815260408083206001600160a01b038d1684529091529020549190612550565b6000601354821115611aec5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610c93565b6000611af66128a6565b9050611b0283826128c9565b9392505050565b6000610c5f338484611ffc565b6000546001600160a01b03163314611b405760405162461bcd60e51b8152600401610c939061357d565b611b486128d5565b60008111611b985760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e742073686f756c642062652067726561746572207468616e2030006044820152606401610c93565b600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114611be5576040519150601f19603f3d011682016040523d82523d6000602084013e611bea565b606091505b5050905080611c0b5760405162461bcd60e51b8152600401610c93906136dd565b506110016001600455565b6000546001600160a01b03163314611c405760405162461bcd60e51b8152600401610c939061357d565b611c576103e86a2d7eb3f96e070d970000006135ff565b811015611c765760405162461bcd60e51b8152600401610c9390613621565b602155565b6000546001600160a01b03163314611ca55760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b038116611ccb5760405162461bcd60e51b8152600401610c93906135b2565b600780546001600160a01b039092166001600160a01b031992831681179091556005805490921681179091556000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b03163314611d3c5760405162461bcd60e51b8152600401610c939061357d565b60248054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611d8990831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611dbe5760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6000546001600160a01b03163314611e095760405162461bcd60e51b8152600401610c939061357d565b60248054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b03163314611e515760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b038116611eb65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c93565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611f3a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c93565b6001600160a01b038216611f9b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c93565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166120605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c93565b6001600160a01b0382166120c25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c93565b600081116121245760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c93565b601f5460ff1615156000036121be576001600160a01b0382166000908152600e602052604090205460ff168061217257506001600160a01b0383166000908152600e602052604090205460ff165b6121be5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67204e6f742059657420537461727465642e00000000000000006044820152606401610c93565b602454600160b81b900460ff1680156121e557506000546001600160a01b03848116911614155b80156121ff57506000546001600160a01b03838116911614155b1561220e5761220e83836128ff565b6000546001600160a01b0384811691161480159061223a57506000546001600160a01b03838116911614155b801561225f57506001600160a01b0382166000908152600e602052604090205460ff16155b801561228457506001600160a01b0383166000908152600e602052604090205460ff16155b156123e2576024546001600160a01b0384811691161480156122b457506023546001600160a01b03838116911614155b80156122d957506001600160a01b0382166000908152600e602052604090205460ff16155b15612340576020548111156123405760405162461bcd60e51b815260206004820152602760248201527f5472616e7366657220616d6f756e742065786365656473206d6178206275792060448201526630b6b7bab73a1760c91b6064820152608401610c93565b6024546001600160a01b03838116911614801561237657506001600160a01b0383166000908152600e602052604090205460ff16155b156123e2576021548111156123e25760405162461bcd60e51b815260206004820152602c60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61782060448201526b39b2b6361030b6b7bab73a1760a11b6064820152608401610c93565b60006123ed306114b2565b60225460245491925082101590600160a01b900460ff1615801561241a5750602454600160a81b900460ff165b801561243b5750602454600090612439906001600160a01b03166114b2565b115b15612467576024546001600160a01b03858116911614801561245a5750805b1561246757612467612a47565b600060158190556001600160a01b0386168152600e602052604090205460ff16806124aa57506001600160a01b0384166000908152600e602052604090205460ff165b156124b957600060155561253e565b6024546001600160a01b038681169116148015906124e557506024546001600160a01b03858116911614155b80156124f85750601f54610100900460ff165b15612504576016546015555b6024546001600160a01b039081169086160361252157601a546015555b6024546001600160a01b039081169085160361253e57601e546015555b612549858585612d44565b5050505050565b600081848411156125745760405162461bcd60e51b8152600401610c9391906133d0565b505050900390565b6000611b028284613694565b6023546125a09030906001600160a01b031684611ed8565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106125d5576125d5613750565b6001600160a01b03928316602091820292909201810191909152602354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561262e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126529190613677565b8160018151811061266557612665613750565b6001600160a01b03928316602091820292909201015260235460405163791ac94760e01b815291169063791ac947906126ab9086906000908690889042906004016137aa565b600060405180830381600087803b1580156126c557600080fd5b505af11580156126d9573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7838260405161270e9291906137e6565b60405180910390a1505050565b600a546040805160028082526060820183526000936001600160a01b03169284929190602083019080368337019050509050308160008151811061276157612761613750565b6001600160a01b03928316602091820292909201810191909152602354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156127ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127de9190613677565b816001815181106127f1576127f1613750565b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b8152670de0b6b3a7640000916000919085169063d06ca61f9061283b90859087906004016137e6565b600060405180830381865afa158015612858573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261288091908101906137ff565b90508060018151811061289557612895613750565b602002602001015194505050505090565b60008060006128b3612e41565b90925090506128c282826128c9565b9250505090565b6000611b0282846135ff565b6002600454036128f857604051633ee5aeb560e01b815260040160405180910390fd5b6002600455565b6024546001600160a01b039081169083160361294757600061291f61271b565b9050601154600003612935576011819055612945565b6011548111156129455760118190555b505b6024546001600160a01b0390811690821603612a4357600061296761271b565b905060115460000361297d576011819055612a41565b6064601254606461298e91906138bd565b60115461299b91906138d0565b6129a591906135ff565b811015612a31576000546001600160a01b03848116911614806129e057506001600160a01b0383166000908152600e602052604090205460ff165b612a2c5760405162461bcd60e51b815260206004820152601f60248201527f53656c6c696e672069732063757272656e746c792072657374726963746564006044820152606401610c93565b612a41565b601154811115612a415760118190555b505b5050565b6024805460ff60a01b1916600160a01b1790556000612a65306114b2565b6022549091508110801590612d3357602254601c54601d54601b5492945090916000839003612a945760185492505b81600003612aa25760195491505b80600003612aaf57506017545b600081612abc8486613694565b612ac69190613694565b9050600080808315612b0f57612ae684612ae08b89612fe5565b906128c9565b9250612af684612ae08b88612fe5565b9150612b0c82612b068b86612ff1565b90612ff1565b90505b612b22612b1c8285613694565b30612588565b476000612b2f888a613694565b90506000612b4182612ae0858c612fe5565b90506000612b4f8483612ff1565b90508115612bcc576006546040516000916001600160a01b03169084908381818185875af1925050503d8060008114612ba4576040519150601f19603f3d011682016040523d82523d6000602084013e612ba9565b606091505b5050905080612bca5760405162461bcd60e51b8152600401610c93906136dd565b505b602454600160b01b900460ff1615612d27578515612cc05760055460405163095ea7b360e01b81526001600160a01b03909116600482015260248101879052309063095ea7b3906044016020604051808303816000875af1158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5991906136c0565b50600554604051631ec9781360e21b815260016004820152602481018890526001600160a01b0390911690637b25e04c90604401600060405180830381600087803b158015612ca757600080fd5b505af1158015612cbb573d6000803e3d6000fd5b505050505b8015612d27576005546040516329ac7ded60e11b8152600160048201526001600160a01b0390911690635358fbda9083906024016000604051808303818588803b158015612d0d57600080fd5b505af1158015612d21573d6000803e3d6000fd5b50505050505b50505050505050505050505b50506024805460ff60a01b19169055565b6001600160a01b0383166000908152600f602052604090205460ff168015612d8557506001600160a01b0382166000908152600f602052604090205460ff16155b15612d9557612a2c838383612ffd565b6001600160a01b0383166000908152600f602052604090205460ff16158015612dd657506001600160a01b0382166000908152600f602052604090205460ff165b15612de657612a2c83838361310f565b6001600160a01b0383166000908152600f602052604090205460ff168015612e2657506001600160a01b0382166000908152600f602052604090205460ff165b15612e3657612a2c8383836131b0565b612a4183838361321b565b60135460009081906a2d7eb3f96e070d97000000825b601054811015612fa45782600b600060108481548110612e7957612e79613750565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612ee4575081600c600060108481548110612ebd57612ebd613750565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612f02575050601354936a2d7eb3f96e070d970000009350915050565b612f48600b600060108481548110612f1c57612f1c613750565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612ff1565b9250612f90600c600060108481548110612f6457612f64613750565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612ff1565b915080612f9c816138e7565b915050612e57565b50601354612fbd906a2d7eb3f96e070d970000006128c9565b821015612fdc575050601354926a2d7eb3f96e070d9700000092509050565b90939092509050565b6000611b0282846138d0565b6000611b0282846138bd565b60008060008061300c85613257565b6001600160a01b038b166000908152600c6020526040902054939750919550935091506130399086612ff1565b6001600160a01b0388166000908152600c6020908152604080832093909355600b905220546130689085612ff1565b6001600160a01b038089166000908152600b60205260408082209390935590881681522054613097908461257c565b6001600160a01b0387166000908152600b60205260409020556130b981613295565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130fe91815260200190565b60405180910390a350505050505050565b60008060008061311e85613257565b6001600160a01b038b166000908152600b60205260409020549397509195509350915061314b9085612ff1565b6001600160a01b038089166000908152600b60209081526040808320949094559189168152600c9091522054613181908361257c565b6001600160a01b0387166000908152600c6020908152604080832093909355600b90522054613097908461257c565b6000806000806131bf85613257565b6001600160a01b038b166000908152600c6020526040902054939750919550935091506131ec9086612ff1565b6001600160a01b0388166000908152600c6020908152604080832093909355600b9052205461314b9085612ff1565b60008060008061322a85613257565b6001600160a01b038b166000908152600b6020526040902054939750919550935091506130689085612ff1565b60008060008060008061326987613354565b91509150600080613282898461327d6128a6565b61337b565b909a909950939750919550919350505050565b600061329f6128a6565b905060006132ad8383612fe5565b6008546001600160a01b03166000908152600b60205260409020549091506132d5908261257c565b600880546001600160a01b039081166000908152600b602090815260408083209590955592549091168152600f909152205460ff1615612a41576008546001600160a01b03166000908152600c6020526040902054613334908461257c565b6008546001600160a01b03166000908152600c6020526040902055505050565b6000806000613362846133b4565b905060006133708583612ff1565b959194509092505050565b600080806133898685612fe5565b905060006133978686612fe5565b905060006133a58383612ff1565b92989297509195505050505050565b6000610c636064612ae060155485612fe590919063ffffffff16565b600060208083528351808285015260005b818110156133fd578581018301518582016040015282016133e1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461100157600080fd5b6000806040838503121561344657600080fd5b82356134518161341e565b946020939093013593505050565b60006020828403121561347157600080fd5b5035919050565b801515811461100157600080fd5b60006020828403121561349857600080fd5b8135611b0281613478565b6000806000606084860312156134b857600080fd5b83356134c38161341e565b925060208401356134d38161341e565b929592945050506040919091013590565b6000602082840312156134f657600080fd5b8135611b028161341e565b60008060008060008060c0878903121561351a57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561355757600080fd5b82356135628161341e565b915060208301356135728161341e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f416464726573732073686f756c64206e6f742062652030000000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261361c57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526036908201527f416d6f756e742053686f756c642062652067726561746572207468616e20302e6040820152753125206f662074686520746f74616c20537570706c7960501b606082015260800190565b60006020828403121561368957600080fd5b8151611b028161341e565b80820180821115610c6357610c636135e9565b6000602082840312156136b957600080fd5b5051919050565b6000602082840312156136d257600080fd5b8151611b0281613478565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b8381101561379f5781516001600160a01b03168752958201959082019060010161377a565b509495945050505050565b85815284602082015260a0604082015260006137c960a0830186613766565b6001600160a01b0394909416606083015250608001529392505050565b8281526040602082015260006118a76040830184613766565b6000602080838503121561381257600080fd5b825167ffffffffffffffff8082111561382a57600080fd5b818501915085601f83011261383e57600080fd5b8151818111156138505761385061373a565b8060051b604051601f19603f830116810181811085821117156138755761387561373a565b60405291825284820192508381018501918883111561389357600080fd5b938501935b828510156138b157845184529385019392850192613898565b98975050505050505050565b81810381811115610c6357610c636135e9565b8082028115828204841417610c6357610c636135e9565b6000600182016138f9576138f96135e9565b506001019056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122074bd0b73c48be66325c41df398c50d1d878eb5f5e24fb31b4948ae57c74a647e64736f6c63430008130033000000000000000000000000d701a9bab866610189285e1be17d2a80a4df29b3

Deployed Bytecode

0x6080604052600436106103f35760003560e01c80637ff9b59611610208578063a9059cbb11610118578063e1c68c52116100ab578063ec3e6c141161007a578063ec3e6c1414610bc1578063ec73ef8214610be2578063efdf6c5414610bf8578063f2fde38b14610c18578063ffb54a9914610c3857600080fd5b8063e1c68c5214610b4c578063e30c397814610b6b578063ea2f0b3714610b8b578063ebf8237f14610bab57600080fd5b8063c49b9a80116100e7578063c49b9a8014610aba578063c5d2418914610ada578063c860795214610af0578063dd62ed3e14610b0657600080fd5b8063a9059cbb14610a3a578063af5f1c2d14610a5a578063b43444c714610a7a578063bc29b4c714610a9a57600080fd5b8063906e9dd01161019b578063a22d48321161016a578063a22d4832146109a4578063a3365013146109c4578063a457c2d7146109da578063a561f5a1146109fa578063a5ece94114610a1a57600080fd5b8063906e9dd01461095957806395d89b41146103ff5780639c53033714610979578063a073d37f1461098f57600080fd5b806389dfdfef116101d757806389dfdfef146108d45780638da5cb5b146108fa5780638ddc25d3146109185780638f02bb5b1461093957600080fd5b80637ff9b5961461084657806381fb6abb1461085b5780638366e79a1461087b57806388f820201461089b57600080fd5b80633df9a8d2116103035780635342acb41161029657806362f90b1a1161026557806362f90b1a146107b057806370a08231146107d057806371c6b360146107f0578063739f2c3b1461081057806377d57b6f1461082657600080fd5b80635342acb41461071757806356d6d484146107505780635881f3ef146107705780635d60c7be1461079057600080fd5b8063463fd761116102d2578063463fd761146106ab57806349bd5a5e146106c15780634a74bb02146106e15780634e71e0c81461070257600080fd5b80633df9a8d21461063557806341cb87fc1461064b578063437823ec1461066b57806344651cca1461068b57600080fd5b80631ffd78ca116103865780632bb49838116103555780632bb49838146105a3578063313ce567146105b95780633268cc56146105d557806339509351146105f55780633d80ddd81461061557600080fd5b80631ffd78ca1461052e57806321c03a971461054357806323b872dd1461056357806327c8f8351461058357600080fd5b806318160ddd116103c257806318160ddd146104c35780631cfa7eb6146104e15780631e562f0c146104f85780631f7a1ab91461050e57600080fd5b806306fdde03146103ff578063095ea7b31461043c57806313114a9d1461046c5780631694505e1461048b57600080fd5b366103fa57005b600080fd5b34801561040b57600080fd5b50604080518082018252600581526413505353d560da1b6020820152905161043391906133d0565b60405180910390f35b34801561044857600080fd5b5061045c610457366004613433565b610c52565b6040519015158152602001610433565b34801561047857600080fd5b506014545b604051908152602001610433565b34801561049757600080fd5b506023546104ab906001600160a01b031681565b6040516001600160a01b039091168152602001610433565b3480156104cf57600080fd5b506a2d7eb3f96e070d9700000061047d565b3480156104ed57600080fd5b506104f6610c69565b005b34801561050457600080fd5b5061047d60215481565b34801561051a57600080fd5b506104f661052936600461345f565b610ce3565b34801561053a57600080fd5b506104f6610d12565b34801561054f57600080fd5b506104f661055e366004613486565b610dc5565b34801561056f57600080fd5b5061045c61057e3660046134a3565b610e6e565b34801561058f57600080fd5b506009546104ab906001600160a01b031681565b3480156105af57600080fd5b5061047d60125481565b3480156105c557600080fd5b5060405160128152602001610433565b3480156105e157600080fd5b50600a546104ab906001600160a01b031681565b34801561060157600080fd5b5061045c610610366004613433565b610ed7565b34801561062157600080fd5b506007546104ab906001600160a01b031681565b34801561064157600080fd5b5061047d60165481565b34801561065757600080fd5b506104f66106663660046134e4565b610f0d565b34801561067757600080fd5b506104f66106863660046134e4565b610f7f565b34801561069757600080fd5b506104f66106a636600461345f565b610fcd565b3480156106b757600080fd5b5061047d60115481565b3480156106cd57600080fd5b506024546104ab906001600160a01b031681565b3480156106ed57600080fd5b5060245461045c90600160a81b900460ff1681565b34801561070e57600080fd5b506104f6611004565b34801561072357600080fd5b5061045c6107323660046134e4565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561075c57600080fd5b506104f661076b36600461345f565b6110b8565b34801561077c57600080fd5b506104ab61078b3660046134e4565b61111d565b34801561079c57600080fd5b506008546104ab906001600160a01b031681565b3480156107bc57600080fd5b506104f66107cb366004613486565b61146a565b3480156107dc57600080fd5b5061047d6107eb3660046134e4565b6114b2565b3480156107fc57600080fd5b506104f661080b366004613501565b611511565b34801561081c57600080fd5b5061047d601b5481565b34801561083257600080fd5b506104f661084136600461345f565b61167f565b34801561085257600080fd5b5061047d611727565b34801561086757600080fd5b506005546104ab906001600160a01b031681565b34801561088757600080fd5b5061045c610896366004613544565b611736565b3480156108a757600080fd5b5061045c6108b63660046134e4565b6001600160a01b03166000908152600f602052604090205460ff1690565b3480156108e057600080fd5b50601f546104ab906201000090046001600160a01b031681565b34801561090657600080fd5b506000546001600160a01b03166104ab565b34801561092457600080fd5b5060245461045c90600160b81b900460ff1681565b34801561094557600080fd5b506104f661095436600461345f565b6118af565b34801561096557600080fd5b506104f66109743660046134e4565b61193a565b34801561098557600080fd5b5061047d60205481565b34801561099b57600080fd5b5060225461047d565b3480156109b057600080fd5b506104f66109bf3660046134e4565b6119c4565b3480156109d057600080fd5b5061047d60185481565b3480156109e657600080fd5b5061045c6109f5366004613433565b611a36565b348015610a0657600080fd5b5061047d610a1536600461345f565b611a85565b348015610a2657600080fd5b506006546104ab906001600160a01b031681565b348015610a4657600080fd5b5061045c610a55366004613433565b611b09565b348015610a6657600080fd5b506104f6610a7536600461345f565b611b16565b348015610a8657600080fd5b506104f6610a9536600461345f565b611c16565b348015610aa657600080fd5b506104f6610ab53660046134e4565b611c7b565b348015610ac657600080fd5b506104f6610ad5366004613486565b611d12565b348015610ae657600080fd5b5061047d60195481565b348015610afc57600080fd5b5061047d601d5481565b348015610b1257600080fd5b5061047d610b21366004613544565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b348015610b5857600080fd5b50601f5461045c90610100900460ff1681565b348015610b7757600080fd5b506003546104ab906001600160a01b031681565b348015610b9757600080fd5b506104f6610ba63660046134e4565b611d94565b348015610bb757600080fd5b5061047d601c5481565b348015610bcd57600080fd5b5060245461045c90600160b01b900460ff1681565b348015610bee57600080fd5b5061047d60175481565b348015610c0457600080fd5b506104f6610c13366004613486565b611ddf565b348015610c2457600080fd5b506104f6610c333660046134e4565b611e27565b348015610c4457600080fd5b50601f5461045c9060ff1681565b6000610c5f338484611ed8565b5060015b92915050565b6000546001600160a01b03163314610c9c5760405162461bcd60e51b8152600401610c939061357d565b60405180910390fd5b600080546001600160a01b0319908116825560038054909116905560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610d0d5760405162461bcd60e51b8152600401610c939061357d565b602255565b6000546001600160a01b03163314610d3c5760405162461bcd60e51b8152600401610c939061357d565b601f5460ff161515600114610db15760405162461bcd60e51b815260206004820152603560248201527f54726164696e67204d757374206265207475726e6564206f6e206265666f726560448201527402052656e6f756e63696e67204f776e65727368697605c1b6064820152608401610c93565b601f805462010000600160b01b0319169055565b6000546001600160a01b03163314610def5760405162461bcd60e51b8152600401610c939061357d565b601f546201000090046001600160a01b03163314610e5b5760405162461bcd60e51b815260206004820152602360248201527f4f776e657273686970206f66205472616465205365747465722052656e6f756e60448201526218d95960ea1b6064820152608401610c93565b601f805460ff1916911515919091179055565b6000610e7b848484611ffc565b610ecd8433610ec885604051806060016040528060288152602001613901602891396001600160a01b038a166000908152600d602090815260408083203384529091529020549190612550565b611ed8565b5060019392505050565b336000818152600d602090815260408083206001600160a01b03871684529091528120549091610c5f918590610ec8908661257c565b6000546001600160a01b03163314610f375760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b038116610f5d5760405162461bcd60e51b8152600401610c93906135b2565b602380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610fa95760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b03163314610ff75760405162461bcd60e51b8152600401610c939061357d565b6110018130612588565b50565b6003546001600160a01b0316331461105e5760405162461bcd60e51b815260206004820152601760248201527f43616c6c657220213d2070656e64696e67206f776e65720000000000000000006044820152606401610c93565b60008054600380546001600160a01b038082166001600160a01b031980861682178755909216909255604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146110e25760405162461bcd60e51b8152600401610c939061357d565b6110f96103e86a2d7eb3f96e070d970000006135ff565b8110156111185760405162461bcd60e51b8152600401610c9390613621565b602055565b600080546001600160a01b031633146111485760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b03821661116e5760405162461bcd60e51b8152600401610c93906135b2565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d59190613677565b6001600160a01b031663e6a4390530602360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125b9190613677565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156112a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ca9190613677565b91506001600160a01b03821661143657806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133c9190613677565b6001600160a01b031663c9c6539630602360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c29190613677565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561140f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114339190613677565b91505b602480546001600160a01b038085166001600160a01b03199283161790925560238054939092169216919091179055919050565b6000546001600160a01b031633146114945760405162461bcd60e51b8152600401610c939061357d565b60248054911515600160b81b0260ff60b81b19909216919091179055565b6001600160a01b0381166000908152600f602052604081205460ff16156114ef57506001600160a01b03166000908152600c602052604090205490565b6001600160a01b0382166000908152600b6020526040902054610c6390611a85565b6000546001600160a01b0316331461153b5760405162461bcd60e51b8152600401610c939061357d565b600a856115488689613694565b6115529190613694565b11156115b35760405162461bcd60e51b815260206004820152602a60248201527f546f74616c2053656c6c2050657263656e742053686f756c64206265206c657360448201526973207468616e2031302560b01b6064820152608401610c93565b600a816115c08486613694565b6115ca9190613694565b106116295760405162461bcd60e51b815260206004820152602960248201527f546f74616c204275792050657263656e742053686f756c64206265206c657373604482015268207468616e2031302560b81b6064820152608401610c93565b601b859055601d849055601c869055601782905560198190556018839055826116528284613694565b61165c9190613694565b601a558561166a8686613694565b6116749190613694565b601e55505050505050565b6000546001600160a01b031633146116a95760405162461bcd60e51b8152600401610c939061357d565b6000811180156116b95750606481105b6117225760405162461bcd60e51b815260206004820152603460248201527f546872656173686f6c64206d7573742062652067726561746572207468616e206044820152733020616e64206c657373207468616e203130302560601b6064820152608401610c93565b601255565b600061173161271b565b905090565b600080546001600160a01b031633146117615760405162461bcd60e51b8152600401610c939061357d565b306001600160a01b038416036117c55760405162461bcd60e51b815260206004820152602360248201527f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60448201526235b2b760e91b6064820152608401610c93565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa15801561180c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183091906136a7565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611883573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a791906136c0565b949350505050565b6000546001600160a01b031633146118d95760405162461bcd60e51b8152600401610c939061357d565b601481106119355760405162461bcd60e51b8152602060048201526024808201527f5472616e73666572204665652073686f756c64206265206c657373207468616e6044820152632032302560e01b6064820152608401610c93565b601655565b6000546001600160a01b031633146119645760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b03811661198a5760405162461bcd60e51b8152600401610c93906135b2565b600680546001600160a01b039092166001600160a01b0319909216821790556000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b031633146119ee5760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b038116611a145760405162461bcd60e51b8152600401610c93906135b2565b602480546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c5f3384610ec88560405180606001604052806025815260200161392960259139336000908152600d602090815260408083206001600160a01b038d1684529091529020549190612550565b6000601354821115611aec5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610c93565b6000611af66128a6565b9050611b0283826128c9565b9392505050565b6000610c5f338484611ffc565b6000546001600160a01b03163314611b405760405162461bcd60e51b8152600401610c939061357d565b611b486128d5565b60008111611b985760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e742073686f756c642062652067726561746572207468616e2030006044820152606401610c93565b600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114611be5576040519150601f19603f3d011682016040523d82523d6000602084013e611bea565b606091505b5050905080611c0b5760405162461bcd60e51b8152600401610c93906136dd565b506110016001600455565b6000546001600160a01b03163314611c405760405162461bcd60e51b8152600401610c939061357d565b611c576103e86a2d7eb3f96e070d970000006135ff565b811015611c765760405162461bcd60e51b8152600401610c9390613621565b602155565b6000546001600160a01b03163314611ca55760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b038116611ccb5760405162461bcd60e51b8152600401610c93906135b2565b600780546001600160a01b039092166001600160a01b031992831681179091556005805490921681179091556000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b03163314611d3c5760405162461bcd60e51b8152600401610c939061357d565b60248054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611d8990831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611dbe5760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6000546001600160a01b03163314611e095760405162461bcd60e51b8152600401610c939061357d565b60248054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b03163314611e515760405162461bcd60e51b8152600401610c939061357d565b6001600160a01b038116611eb65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c93565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611f3a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c93565b6001600160a01b038216611f9b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c93565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166120605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c93565b6001600160a01b0382166120c25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c93565b600081116121245760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c93565b601f5460ff1615156000036121be576001600160a01b0382166000908152600e602052604090205460ff168061217257506001600160a01b0383166000908152600e602052604090205460ff165b6121be5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67204e6f742059657420537461727465642e00000000000000006044820152606401610c93565b602454600160b81b900460ff1680156121e557506000546001600160a01b03848116911614155b80156121ff57506000546001600160a01b03838116911614155b1561220e5761220e83836128ff565b6000546001600160a01b0384811691161480159061223a57506000546001600160a01b03838116911614155b801561225f57506001600160a01b0382166000908152600e602052604090205460ff16155b801561228457506001600160a01b0383166000908152600e602052604090205460ff16155b156123e2576024546001600160a01b0384811691161480156122b457506023546001600160a01b03838116911614155b80156122d957506001600160a01b0382166000908152600e602052604090205460ff16155b15612340576020548111156123405760405162461bcd60e51b815260206004820152602760248201527f5472616e7366657220616d6f756e742065786365656473206d6178206275792060448201526630b6b7bab73a1760c91b6064820152608401610c93565b6024546001600160a01b03838116911614801561237657506001600160a01b0383166000908152600e602052604090205460ff16155b156123e2576021548111156123e25760405162461bcd60e51b815260206004820152602c60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61782060448201526b39b2b6361030b6b7bab73a1760a11b6064820152608401610c93565b60006123ed306114b2565b60225460245491925082101590600160a01b900460ff1615801561241a5750602454600160a81b900460ff165b801561243b5750602454600090612439906001600160a01b03166114b2565b115b15612467576024546001600160a01b03858116911614801561245a5750805b1561246757612467612a47565b600060158190556001600160a01b0386168152600e602052604090205460ff16806124aa57506001600160a01b0384166000908152600e602052604090205460ff165b156124b957600060155561253e565b6024546001600160a01b038681169116148015906124e557506024546001600160a01b03858116911614155b80156124f85750601f54610100900460ff165b15612504576016546015555b6024546001600160a01b039081169086160361252157601a546015555b6024546001600160a01b039081169085160361253e57601e546015555b612549858585612d44565b5050505050565b600081848411156125745760405162461bcd60e51b8152600401610c9391906133d0565b505050900390565b6000611b028284613694565b6023546125a09030906001600160a01b031684611ed8565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106125d5576125d5613750565b6001600160a01b03928316602091820292909201810191909152602354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561262e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126529190613677565b8160018151811061266557612665613750565b6001600160a01b03928316602091820292909201015260235460405163791ac94760e01b815291169063791ac947906126ab9086906000908690889042906004016137aa565b600060405180830381600087803b1580156126c557600080fd5b505af11580156126d9573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7838260405161270e9291906137e6565b60405180910390a1505050565b600a546040805160028082526060820183526000936001600160a01b03169284929190602083019080368337019050509050308160008151811061276157612761613750565b6001600160a01b03928316602091820292909201810191909152602354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156127ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127de9190613677565b816001815181106127f1576127f1613750565b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b8152670de0b6b3a7640000916000919085169063d06ca61f9061283b90859087906004016137e6565b600060405180830381865afa158015612858573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261288091908101906137ff565b90508060018151811061289557612895613750565b602002602001015194505050505090565b60008060006128b3612e41565b90925090506128c282826128c9565b9250505090565b6000611b0282846135ff565b6002600454036128f857604051633ee5aeb560e01b815260040160405180910390fd5b6002600455565b6024546001600160a01b039081169083160361294757600061291f61271b565b9050601154600003612935576011819055612945565b6011548111156129455760118190555b505b6024546001600160a01b0390811690821603612a4357600061296761271b565b905060115460000361297d576011819055612a41565b6064601254606461298e91906138bd565b60115461299b91906138d0565b6129a591906135ff565b811015612a31576000546001600160a01b03848116911614806129e057506001600160a01b0383166000908152600e602052604090205460ff165b612a2c5760405162461bcd60e51b815260206004820152601f60248201527f53656c6c696e672069732063757272656e746c792072657374726963746564006044820152606401610c93565b612a41565b601154811115612a415760118190555b505b5050565b6024805460ff60a01b1916600160a01b1790556000612a65306114b2565b6022549091508110801590612d3357602254601c54601d54601b5492945090916000839003612a945760185492505b81600003612aa25760195491505b80600003612aaf57506017545b600081612abc8486613694565b612ac69190613694565b9050600080808315612b0f57612ae684612ae08b89612fe5565b906128c9565b9250612af684612ae08b88612fe5565b9150612b0c82612b068b86612ff1565b90612ff1565b90505b612b22612b1c8285613694565b30612588565b476000612b2f888a613694565b90506000612b4182612ae0858c612fe5565b90506000612b4f8483612ff1565b90508115612bcc576006546040516000916001600160a01b03169084908381818185875af1925050503d8060008114612ba4576040519150601f19603f3d011682016040523d82523d6000602084013e612ba9565b606091505b5050905080612bca5760405162461bcd60e51b8152600401610c93906136dd565b505b602454600160b01b900460ff1615612d27578515612cc05760055460405163095ea7b360e01b81526001600160a01b03909116600482015260248101879052309063095ea7b3906044016020604051808303816000875af1158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5991906136c0565b50600554604051631ec9781360e21b815260016004820152602481018890526001600160a01b0390911690637b25e04c90604401600060405180830381600087803b158015612ca757600080fd5b505af1158015612cbb573d6000803e3d6000fd5b505050505b8015612d27576005546040516329ac7ded60e11b8152600160048201526001600160a01b0390911690635358fbda9083906024016000604051808303818588803b158015612d0d57600080fd5b505af1158015612d21573d6000803e3d6000fd5b50505050505b50505050505050505050505b50506024805460ff60a01b19169055565b6001600160a01b0383166000908152600f602052604090205460ff168015612d8557506001600160a01b0382166000908152600f602052604090205460ff16155b15612d9557612a2c838383612ffd565b6001600160a01b0383166000908152600f602052604090205460ff16158015612dd657506001600160a01b0382166000908152600f602052604090205460ff165b15612de657612a2c83838361310f565b6001600160a01b0383166000908152600f602052604090205460ff168015612e2657506001600160a01b0382166000908152600f602052604090205460ff165b15612e3657612a2c8383836131b0565b612a4183838361321b565b60135460009081906a2d7eb3f96e070d97000000825b601054811015612fa45782600b600060108481548110612e7957612e79613750565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612ee4575081600c600060108481548110612ebd57612ebd613750565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612f02575050601354936a2d7eb3f96e070d970000009350915050565b612f48600b600060108481548110612f1c57612f1c613750565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612ff1565b9250612f90600c600060108481548110612f6457612f64613750565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612ff1565b915080612f9c816138e7565b915050612e57565b50601354612fbd906a2d7eb3f96e070d970000006128c9565b821015612fdc575050601354926a2d7eb3f96e070d9700000092509050565b90939092509050565b6000611b0282846138d0565b6000611b0282846138bd565b60008060008061300c85613257565b6001600160a01b038b166000908152600c6020526040902054939750919550935091506130399086612ff1565b6001600160a01b0388166000908152600c6020908152604080832093909355600b905220546130689085612ff1565b6001600160a01b038089166000908152600b60205260408082209390935590881681522054613097908461257c565b6001600160a01b0387166000908152600b60205260409020556130b981613295565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130fe91815260200190565b60405180910390a350505050505050565b60008060008061311e85613257565b6001600160a01b038b166000908152600b60205260409020549397509195509350915061314b9085612ff1565b6001600160a01b038089166000908152600b60209081526040808320949094559189168152600c9091522054613181908361257c565b6001600160a01b0387166000908152600c6020908152604080832093909355600b90522054613097908461257c565b6000806000806131bf85613257565b6001600160a01b038b166000908152600c6020526040902054939750919550935091506131ec9086612ff1565b6001600160a01b0388166000908152600c6020908152604080832093909355600b9052205461314b9085612ff1565b60008060008061322a85613257565b6001600160a01b038b166000908152600b6020526040902054939750919550935091506130689085612ff1565b60008060008060008061326987613354565b91509150600080613282898461327d6128a6565b61337b565b909a909950939750919550919350505050565b600061329f6128a6565b905060006132ad8383612fe5565b6008546001600160a01b03166000908152600b60205260409020549091506132d5908261257c565b600880546001600160a01b039081166000908152600b602090815260408083209590955592549091168152600f909152205460ff1615612a41576008546001600160a01b03166000908152600c6020526040902054613334908461257c565b6008546001600160a01b03166000908152600c6020526040902055505050565b6000806000613362846133b4565b905060006133708583612ff1565b959194509092505050565b600080806133898685612fe5565b905060006133978686612fe5565b905060006133a58383612ff1565b92989297509195505050505050565b6000610c636064612ae060155485612fe590919063ffffffff16565b600060208083528351808285015260005b818110156133fd578581018301518582016040015282016133e1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461100157600080fd5b6000806040838503121561344657600080fd5b82356134518161341e565b946020939093013593505050565b60006020828403121561347157600080fd5b5035919050565b801515811461100157600080fd5b60006020828403121561349857600080fd5b8135611b0281613478565b6000806000606084860312156134b857600080fd5b83356134c38161341e565b925060208401356134d38161341e565b929592945050506040919091013590565b6000602082840312156134f657600080fd5b8135611b028161341e565b60008060008060008060c0878903121561351a57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806040838503121561355757600080fd5b82356135628161341e565b915060208301356135728161341e565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f416464726573732073686f756c64206e6f742062652030000000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261361c57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526036908201527f416d6f756e742053686f756c642062652067726561746572207468616e20302e6040820152753125206f662074686520746f74616c20537570706c7960501b606082015260800190565b60006020828403121561368957600080fd5b8151611b028161341e565b80820180821115610c6357610c636135e9565b6000602082840312156136b957600080fd5b5051919050565b6000602082840312156136d257600080fd5b8151611b0281613478565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b8381101561379f5781516001600160a01b03168752958201959082019060010161377a565b509495945050505050565b85815284602082015260a0604082015260006137c960a0830186613766565b6001600160a01b0394909416606083015250608001529392505050565b8281526040602082015260006118a76040830184613766565b6000602080838503121561381257600080fd5b825167ffffffffffffffff8082111561382a57600080fd5b818501915085601f83011261383e57600080fd5b8151818111156138505761385061373a565b8060051b604051601f19603f830116810181811085821117156138755761387561373a565b60405291825284820192508381018501918883111561389357600080fd5b938501935b828510156138b157845184529385019392850192613898565b98975050505050505050565b81810381811115610c6357610c636135e9565b8082028115828204841417610c6357610c636135e9565b6000600182016138f9576138f96135e9565b506001019056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122074bd0b73c48be66325c41df398c50d1d878eb5f5e24fb31b4948ae57c74a647e64736f6c63430008130033

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

000000000000000000000000d701a9bab866610189285e1be17d2a80a4df29b3

-----Decoded View---------------
Arg [0] : _sacrificeContract (address): 0xd701a9BAB866610189285E1BE17D2A80A4Df29b3

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d701a9bab866610189285e1be17d2a80a4df29b3


Deployed Bytecode Sourcemap

13168:26294:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17837:83;;;;;;;;;;-1:-1:-1;17907:5:0;;;;;;;;;;;-1:-1:-1;;;17907:5:0;;;;17837:83;;;;17907:5;17837:83;:::i;:::-;;;;;;;;18743:161;;;;;;;;;;-1:-1:-1;18743:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;18743:161:0;1023:187:1;19964:87:0;;;;;;;;;;-1:-1:-1;20033:10:0;;19964:87;;;1361:25:1;;;1349:2;1334:18;19964:87:0;1215:177:1;15274:41:0;;;;;;;;;;-1:-1:-1;15274:41:0;;;;-1:-1:-1;;;;;15274:41:0;;;;;;-1:-1:-1;;;;;1587:32:1;;;1569:51;;1557:2;1542:18;15274:41:0;1397:229:1;18114:95:0;;;;;;;;;;-1:-1:-1;14230:19:0;18114:95;;11209:179;;;;;;;;;;;;;:::i;:::-;;15153:48;;;;;;;;;;;;;;;;34866:158;;;;;;;;;;-1:-1:-1;34866:158:0;;;;;:::i;:::-;;:::i;38837:192::-;;;;;;;;;;;;;:::i;38331:183::-;;;;;;;;;;-1:-1:-1;38331:183:0;;;;;:::i;:::-;;:::i;18912:363::-;;;;;;;;;;-1:-1:-1;18912:363:0;;;;;:::i;:::-;;:::i;13586:71::-;;;;;;;;;;-1:-1:-1;13586:71:0;;;;-1:-1:-1;;;;;13586:71:0;;;14100:37;;;;;;;;;;;;;;;;18023:83;;;;;;;;;;-1:-1:-1;18023:83:0;;14478:2;2996:36:1;;2984:2;2969:18;18023:83:0;2854:184:1;13664:73:0;;;;;;;;;;-1:-1:-1;13664:73:0;;;;-1:-1:-1;;;;;13664:73:0;;;19283:218;;;;;;;;;;-1:-1:-1;19283:218:0;;;;;:::i;:::-;;:::i;13469:39::-;;;;;;;;;;-1:-1:-1;13469:39:0;;;;-1:-1:-1;;;;;13469:39:0;;;14577:32;;;;;;;;;;;;;;;;33631:267;;;;;;;;;;-1:-1:-1;33631:267:0;;;;;:::i;:::-;;:::i;34158:113::-;;;;;;;;;;-1:-1:-1;34158:113:0;;;;;:::i;:::-;;:::i;25207:128::-;;;;;;;;;;-1:-1:-1;25207:128:0;;;;;:::i;:::-;;:::i;14067:26::-;;;;;;;;;;;;;;;;15322:28;;;;;;;;;;-1:-1:-1;15322:28:0;;;;-1:-1:-1;;;;;15322:28:0;;;15387:40;;;;;;;;;;-1:-1:-1;15387:40:0;;;;-1:-1:-1;;;15387:40:0;;;;;;11814:272;;;;;;;;;;;;;:::i;20442:124::-;;;;;;;;;;-1:-1:-1;20442:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;20531:27:0;20507:4;20531:27;;;:18;:27;;;;;;;;;20442:124;34399:225;;;;;;;;;;-1:-1:-1;34399:225:0;;;;;:::i;:::-;;:::i;35845:686::-;;;;;;;;;;-1:-1:-1;35845:686:0;;;;;:::i;:::-;;:::i;13517:62::-;;;;;;;;;;-1:-1:-1;13517:62:0;;;;-1:-1:-1;;;;;13517:62:0;;;38639:91;;;;;;;;;;-1:-1:-1;38639:91:0;;;;;:::i;:::-;;:::i;18217:192::-;;;;;;;;;;-1:-1:-1;18217:192:0;;;;;:::i;:::-;;:::i;36941:1138::-;;;;;;;;;;-1:-1:-1;36941:1138:0;;;;;:::i;:::-;;:::i;14786:36::-;;;;;;;;;;;;;;;;20990:228;;;;;;;;;;-1:-1:-1;20990:228:0;;;;;:::i;:::-;;:::i;22891:95::-;;;;;;;;;;;;;:::i;13270:45::-;;;;;;;;;;-1:-1:-1;13270:45:0;;;;-1:-1:-1;;;;;13270:45:0;;;36579:354;;;;;;;;;;-1:-1:-1;36579:354:0;;;;;:::i;:::-;;:::i;19836:120::-;;;;;;;;;;-1:-1:-1;19836:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;19928:20:0;19904:4;19928:20;;;:11;:20;;;;;;;;;19836:120;15039:28;;;;;;;;;;-1:-1:-1;15039:28:0;;;;;;;-1:-1:-1;;;;;15039:28:0;;;11396:79;;;;;;;;;;-1:-1:-1;11434:7:0;11461:6;-1:-1:-1;;;;;11461:6:0;11396:79;;15478:27;;;;;;;;;;-1:-1:-1;15478:27:0;;;;-1:-1:-1;;;15478:27:0;;;;;;38087:191;;;;;;;;;;-1:-1:-1;38087:191:0;;;;;:::i;:::-;;:::i;35032:271::-;;;;;;;;;;-1:-1:-1;35032:271:0;;;;;:::i;:::-;;:::i;15098:48::-;;;;;;;;;;;;;;;;20059:120;;;;;;;;;;-1:-1:-1;20148:23:0;;20059:120;;33980:170;;;;;;;;;;-1:-1:-1;33980:170:0;;;;;:::i;:::-;;:::i;14660:32::-;;;;;;;;;;;;;;;;19509:319;;;;;;;;;;-1:-1:-1;19509:319:0;;;;;:::i;:::-;;:::i;20187:247::-;;;;;;;;;;-1:-1:-1;20187:247:0;;;;;:::i;:::-;;:::i;13369:93::-;;;;;;;;;;-1:-1:-1;13369:93:0;;;;-1:-1:-1;;;;;13369:93:0;;;18417:167;;;;;;;;;;-1:-1:-1;18417:167:0;;;;;:::i;:::-;;:::i;39132:294::-;;;;;;;;;;-1:-1:-1;39132:294:0;;;;;:::i;:::-;;:::i;34632:226::-;;;;;;;;;;-1:-1:-1;34632:226:0;;;;;:::i;:::-;;:::i;35311:345::-;;;;;;;;;;-1:-1:-1;35311:345:0;;;;;:::i;:::-;;:::i;35664:173::-;;;;;;;;;;-1:-1:-1;35664:173:0;;;;;:::i;:::-;;:::i;14699:35::-;;;;;;;;;;;;;;;;14869:36;;;;;;;;;;;;;;;;18592:143;;;;;;;;;;-1:-1:-1;18592:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18700:18:0;;;18673:7;18700:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18592:143;14995:35;;;;;;;;;;-1:-1:-1;14995:35:0;;;;;;;;;;;10884:27;;;;;;;;;;-1:-1:-1;10884:27:0;;;;-1:-1:-1;;;;;10884:27:0;;;34279:112;;;;;;;;;;-1:-1:-1;34279:112:0;;;;;:::i;:::-;;:::i;14829:33::-;;;;;;;;;;;;;;;;15434:37;;;;;;;;;;-1:-1:-1;15434:37:0;;;;-1:-1:-1;;;15434:37:0;;;;;;14618:35;;;;;;;;;;;;;;;;38522:109;;;;;;;;;;-1:-1:-1;38522:109:0;;;;;:::i;:::-;;:::i;11610:196::-;;;;;;;;;;-1:-1:-1;11610:196:0;;;;;:::i;:::-;;:::i;14958:30::-;;;;;;;;;;-1:-1:-1;14958:30:0;;;;;;;;18743:161;18818:4;18835:39;3382:10;18858:7;18867:6;18835:8;:39::i;:::-;-1:-1:-1;18892:4:0;18743:161;;;;;:::o;11209:179::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;;;;;;;;;11286:1:::1;11269:19:::0;;-1:-1:-1;;;;;;11269:19:0;;::::1;::::0;;11299:12:::1;:25:::0;;;;::::1;::::0;;11340:40:::1;::::0;11286:1;;11340:40:::1;::::0;11286:1;;11340:40:::1;11209:179::o:0;34866:158::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;34966:23:::1;:50:::0;34866:158::o;38837:192::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;38907:11:::1;::::0;::::1;;:19;;:11:::0;:19:::1;38899:85;;;::::0;-1:-1:-1;;;38899:85:0;;5239:2:1;38899:85:0::1;::::0;::::1;5221:21:1::0;5278:2;5258:18;;;5251:30;5317:34;5297:18;;;5290:62;-1:-1:-1;;;5368:18:1;;;5361:51;5429:19;;38899:85:0::1;5037:417:1::0;38899:85:0::1;38995:13;:26:::0;;-1:-1:-1;;;;;;38995:26:0::1;::::0;;38837:192::o;38331:183::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;38407:13:::1;::::0;;;::::1;-1:-1:-1::0;;;;;38407:13:0::1;38424:10;38407:27;38399:75;;;::::0;-1:-1:-1;;;38399:75:0;;5661:2:1;38399:75:0::1;::::0;::::1;5643:21:1::0;5700:2;5680:18;;;5673:30;5739:34;5719:18;;;5712:62;-1:-1:-1;;;5790:18:1;;;5783:33;5833:19;;38399:75:0::1;5459:399:1::0;38399:75:0::1;38485:11;:21:::0;;-1:-1:-1;;38485:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;38331:183::o;18912:363::-;19010:4;19027:36;19037:6;19045:9;19056:6;19027:9;:36::i;:::-;19074:171;19097:6;3382:10;19145:89;19183:6;19145:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19145:19:0;;;;;;:11;:19;;;;;;;;3382:10;19145:33;;;;;;;;;;:37;:89::i;:::-;19074:8;:171::i;:::-;-1:-1:-1;19263:4:0;18912:363;;;;;:::o;19283:218::-;3382:10;19371:4;19420:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19420:34:0;;;;;;;;;;19371:4;;19388:83;;19411:7;;19420:50;;19459:10;19420:38;:50::i;33631:267::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33714:23:0;::::1;33706:59;;;;-1:-1:-1::0;;;33706:59:0::1;;;;;;;:::i;:::-;33855:15;:35:::0;;-1:-1:-1;;;;;;33855:35:0::1;-1:-1:-1::0;;;;;33855:35:0;;;::::1;::::0;;;::::1;::::0;;33631:267::o;34158:113::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34229:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;34229:34:0::1;34259:4;34229:34;::::0;;34158:113::o;25207:128::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;25283:44:::1;25300:11;25321:4;25283:16;:44::i;:::-;25207:128:::0;:::o;11814:272::-;11880:12;;-1:-1:-1;;;;;11880:12:0;11866:10;:26;11858:62;;;;-1:-1:-1;;;11858:62:0;;6417:2:1;11858:62:0;;;6399:21:1;6456:2;6436:18;;;6429:30;6495:25;6475:18;;;6468:53;6538:18;;11858:62:0;6215:347:1;11858:62:0;11931:16;11950:6;;11976:12;;;-1:-1:-1;;;;;11976:12:0;;;-1:-1:-1;;;;;;11967:21:0;;;;;;;11999:25;;;;;;12040:38;;11950:6;;;;;;;12040:38;;11931:16;12040:38;11847:239;11814:272::o;34399:225::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;34503:14:::1;34513:4;14230:19;34503:14;:::i;:::-;34486:12;:32;;34478:99;;;;-1:-1:-1::0;;;34478:99:0::1;;;;;;;:::i;:::-;34588:13;:28:::0;34399:225::o;35845:686::-;35919:13;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35953:21:0;::::1;35945:57;;;;-1:-1:-1::0;;;35945:57:0::1;;;;;;;:::i;:::-;36013:35;36070:7;36013:65;;36117:16;-1:-1:-1::0;;;;;36117:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36099:53:0::1;;36161:4;36168:15;;;;;;;;;-1:-1:-1::0;;;;;36168:15:0::1;-1:-1:-1::0;;;;;36168:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36099:92;::::0;-1:-1:-1;;;;;;36099:92:0::1;::::0;;;;;;-1:-1:-1;;;;;7830:15:1;;;36099:92:0::1;::::0;::::1;7812:34:1::0;7882:15;;7862:18;;;7855:43;7747:18;;36099:92:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36091:100:::0;-1:-1:-1;;;;;;36206:19:0;::::1;36202:190;;36303:16;-1:-1:-1::0;;;;;36303:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36285:56:0::1;;36350:4;36357:15;;;;;;;;;-1:-1:-1::0;;;;;36357:15:0::1;-1:-1:-1::0;;;;;36357:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36285:95;::::0;-1:-1:-1;;;;;;36285:95:0::1;::::0;;;;;;-1:-1:-1;;;;;7830:15:1;;;36285:95:0::1;::::0;::::1;7812:34:1::0;7882:15;;7862:18;;;7855:43;7747:18;;36285:95:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36277:103;;36202:190;36402:13;:21:::0;;-1:-1:-1;;;;;36402:21:0;;::::1;-1:-1:-1::0;;;;;;36402:21:0;;::::1;;::::0;;;36489:15:::1;:34:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;36418:5;35845:686;-1:-1:-1;35845:686:0:o;38639:91::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;38704:8:::1;:18:::0;;;::::1;;-1:-1:-1::0;;;38704:18:0::1;-1:-1:-1::0;;;;38704:18:0;;::::1;::::0;;;::::1;::::0;;38639:91::o;18217:192::-;-1:-1:-1;;;;;18307:20:0;;18283:7;18307:20;;;:11;:20;;;;;;;;18303:49;;;-1:-1:-1;;;;;;18336:16:0;;;;;:7;:16;;;;;;;18217:192::o;18303:49::-;-1:-1:-1;;;;;18384:16:0;;;;;;:7;:16;;;;;;18370:31;;:13;:31::i;36941:1138::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;37337:2:::1;37311:21:::0;37266:42:::1;37287:21:::0;37266:18;:42:::1;:::i;:::-;:66;;;;:::i;:::-;37265:74;;37243:166;;;::::0;-1:-1:-1;;;37243:166:0;;8241:2:1;37243:166:0::1;::::0;::::1;8223:21:1::0;8280:2;8260:18;;;8253:30;8319:34;8299:18;;;8292:62;-1:-1:-1;;;8370:18:1;;;8363:40;8420:19;;37243:166:0::1;8039:406:1::0;37243:166:0::1;37510:2;37486:20:::0;37443:40:::1;37463:20:::0;37443:17;:40:::1;:::i;:::-;:63;;;;:::i;:::-;37442:70;37420:161;;;::::0;-1:-1:-1;;;37420:161:0;;8652:2:1;37420:161:0::1;::::0;::::1;8634:21:1::0;8691:2;8671:18;;;8664:30;8730:34;8710:18;;;8703:62;-1:-1:-1;;;8781:18:1;;;8774:39;8830:19;;37420:161:0::1;8450:405:1::0;37420:161:0::1;37594:17;:41:::0;;;37646:17:::1;:41:::0;;;37698:14:::1;:35:::0;;;37746:16:::1;:39:::0;;;37796:16:::1;:39:::0;;;37846:13:::1;:33:::0;;;37862:17;37911:43:::1;37815:20:::0;37765;37911:43:::1;:::i;:::-;:63;;;;:::i;:::-;37892:16;:82:::0;38053:18;38005:45:::1;38029:21:::0;38005;:45:::1;:::i;:::-;:66;;;;:::i;:::-;37985:17;:86:::0;-1:-1:-1;;;;;;36941:1138:0:o;20990:228::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;21091:1:::1;21078:10;:14;:34;;;;;21109:3;21096:10;:16;21078:34;21070:99;;;::::0;-1:-1:-1;;;21070:99:0;;9062:2:1;21070:99:0::1;::::0;::::1;9044:21:1::0;9101:2;9081:18;;;9074:30;9140:34;9120:18;;;9113:62;-1:-1:-1;;;9191:18:1;;;9184:50;9251:19;;21070:99:0::1;8860:416:1::0;21070:99:0::1;21180:17;:30:::0;20990:228::o;22891:95::-;22934:7;22961:17;:15;:17::i;:::-;22954:24;;22891:95;:::o;36579:354::-;36666:10;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;36715:4:::1;-1:-1:-1::0;;;;;36697:23:0;::::1;::::0;36689:71:::1;;;::::0;-1:-1:-1;;;36689:71:0;;9483:2:1;36689:71:0::1;::::0;::::1;9465:21:1::0;9522:2;9502:18;;;9495:30;9561:34;9541:18;;;9534:62;-1:-1:-1;;;9612:18:1;;;9605:33;9655:19;;36689:71:0::1;9281:399:1::0;36689:71:0::1;36798:39;::::0;-1:-1:-1;;;36798:39:0;;36831:4:::1;36798:39;::::0;::::1;1569:51:1::0;36771:24:0::1;::::0;-1:-1:-1;;;;;36798:24:0;::::1;::::0;::::1;::::0;1542:18:1;;36798:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36856:46;::::0;-1:-1:-1;;;36856:46:0;;-1:-1:-1;;;;;10066:32:1;;;36856:46:0::1;::::0;::::1;10048:51:1::0;10115:18;;;10108:34;;;36771:66:0;;-1:-1:-1;36856:23:0;;::::1;::::0;::::1;::::0;10021:18:1;;36856:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36848:54:::0;36579:354;-1:-1:-1;;;;36579:354:0:o;38087:191::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;38188:2:::1;38172:13;:18;38164:67;;;::::0;-1:-1:-1;;;38164:67:0;;10605:2:1;38164:67:0::1;::::0;::::1;10587:21:1::0;10644:2;10624:18;;;10617:30;10683:34;10663:18;;;10656:62;-1:-1:-1;;;10734:18:1;;;10727:34;10778:19;;38164:67:0::1;10403:400:1::0;38164:67:0::1;38242:12;:28:::0;38087:191::o;35032:271::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35126:31:0;::::1;35118:67;;;;-1:-1:-1::0;;;35118:67:0::1;;;;;;;:::i;:::-;35196:16;:45:::0;;-1:-1:-1;;;;;35196:45:0;;::::1;-1:-1:-1::0;;;;;;35196:45:0;;::::1;::::0;::::1;::::0;;:16:::1;35252:36:::0;;;:18:::1;:36;::::0;;;;:43;;-1:-1:-1;;35252:43:0::1;35196:45:::0;35252:43:::1;::::0;;35032:271::o;33980:170::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34059:21:0;::::1;34051:57;;;;-1:-1:-1::0;;;34051:57:0::1;;;;;;;:::i;:::-;34119:13;:23:::0;;-1:-1:-1;;;;;;34119:23:0::1;-1:-1:-1::0;;;;;34119:23:0;;;::::1;::::0;;;::::1;::::0;;33980:170::o;19509:319::-;19602:4;19619:179;3382:10;19669:7;19691:96;19730:15;19691:96;;;;;;;;;;;;;;;;;3382:10;19691:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19691:34:0;;;;;;;;;;;;:38;:96::i;20187:247::-;20248:7;20287;;20276;:18;;20268:73;;;;-1:-1:-1;;;20268:73:0;;11010:2:1;20268:73:0;;;10992:21:1;11049:2;11029:18;;;11022:30;11088:34;11068:18;;;11061:62;-1:-1:-1;;;11139:18:1;;;11132:40;11189:19;;20268:73:0;10808:406:1;20268:73:0;20352:19;20374:10;:8;:10::i;:::-;20352:32;-1:-1:-1;20402:24:0;:7;20352:32;20402:11;:24::i;:::-;20395:31;20187:247;-1:-1:-1;;;20187:247:0:o;18417:167::-;18495:4;18512:42;3382:10;18536:9;18547:6;18512:9;:42::i;39132:294::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;2338:21:::1;:19;:21::i;:::-;39230:1:::2;39220:7;:11;39212:55;;;::::0;-1:-1:-1;;;39212:55:0;;11421:2:1;39212:55:0::2;::::0;::::2;11403:21:1::0;11460:2;11440:18;;;11433:30;11499:33;11479:18;;;11472:61;11550:18;;39212:55:0::2;11219:355:1::0;39212:55:0::2;39279:12;11461:6:::0;;39297:32:::2;::::0;-1:-1:-1;;;;;11461:6:0;;;;39317:7;;39279:12;39297:32;39279:12;39297:32;39317:7;11461:6;39297:32:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39278:51;;;39348:7;39340:78;;;;-1:-1:-1::0;;;39340:78:0::2;;;;;;;:::i;:::-;39201:225;2382:20:::1;1673:1:::0;2924:7;:21;2741:212;34632:226;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;34737:14:::1;34747:4;14230:19;34737:14;:::i;:::-;34720:12;:32;;34712:99;;;;-1:-1:-1::0;;;34712:99:0::1;;;;;;;:::i;:::-;34822:13;:28:::0;34632:226::o;35311:345::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35406:32:0;::::1;35398:68;;;;-1:-1:-1::0;;;35398:68:0::1;;;;;;;:::i;:::-;35477:16;:46:::0;;-1:-1:-1;;;;;35477:46:0;;::::1;-1:-1:-1::0;;;;;;35477:46:0;;::::1;::::0;::::1;::::0;;;35534:17:::1;:60:::0;;;;::::1;::::0;::::1;::::0;;;35477:16:::1;35605:36:::0;;;:18:::1;:36;::::0;;;;:43;;-1:-1:-1;;35605:43:0::1;35477:46:::0;35605:43:::1;::::0;;35311:345::o;35664:173::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;35743:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;35743:32:0::1;-1:-1:-1::0;;;;35743:32:0;;::::1;;::::0;;35791:38:::1;::::0;::::1;::::0;::::1;::::0;35767:8;1188:14:1;1181:22;1163:41;;1151:2;1136:18;;1023:187;35791:38:0::1;;;;;;;;35664:173:::0;:::o;34279:112::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34348:27:0::1;34378:5;34348:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;34348:35:0::1;::::0;;34279:112::o;38522:109::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;38596:17:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;38596:27:0::1;-1:-1:-1::0;;;;38596:27:0;;::::1;::::0;;;::::1;::::0;;38522:109::o;11610:196::-;11523:6;;-1:-1:-1;;;;;11523:6:0;3382:10;11523:22;11515:67;;;;-1:-1:-1;;;11515:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11699:22:0;::::1;11691:73;;;::::0;-1:-1:-1;;;11691:73:0;;12418:2:1;11691:73:0::1;::::0;::::1;12400:21:1::0;12457:2;12437:18;;;12430:30;12496:34;12476:18;;;12469:62;-1:-1:-1;;;12547:18:1;;;12540:36;12593:19;;11691:73:0::1;12216:402:1::0;11691:73:0::1;11775:12;:23:::0;;-1:-1:-1;;;;;;11775:23:0::1;-1:-1:-1::0;;;;;11775:23:0;;;::::1;::::0;;;::::1;::::0;;11610:196::o;20645:337::-;-1:-1:-1;;;;;20738:19:0;;20730:68;;;;-1:-1:-1;;;20730:68:0;;12825:2:1;20730:68:0;;;12807:21:1;12864:2;12844:18;;;12837:30;12903:34;12883:18;;;12876:62;-1:-1:-1;;;12954:18:1;;;12947:34;12998:19;;20730:68:0;12623:400:1;20730:68:0;-1:-1:-1;;;;;20817:21:0;;20809:68;;;;-1:-1:-1;;;20809:68:0;;13230:2:1;20809:68:0;;;13212:21:1;13269:2;13249:18;;;13242:30;13308:34;13288:18;;;13281:62;-1:-1:-1;;;13359:18:1;;;13352:32;13401:19;;20809:68:0;13028:398:1;20809:68:0;-1:-1:-1;;;;;20890:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20942:32;;1361:25:1;;;20942:32:0;;1334:18:1;20942:32:0;;;;;;;20645:337;;;:::o;22994:2205::-;-1:-1:-1;;;;;23082:18:0;;23074:68;;;;-1:-1:-1;;;23074:68:0;;13633:2:1;23074:68:0;;;13615:21:1;13672:2;13652:18;;;13645:30;13711:34;13691:18;;;13684:62;-1:-1:-1;;;13762:18:1;;;13755:35;13807:19;;23074:68:0;13431:401:1;23074:68:0;-1:-1:-1;;;;;23161:16:0;;23153:64;;;;-1:-1:-1;;;23153:64:0;;14039:2:1;23153:64:0;;;14021:21:1;14078:2;14058:18;;;14051:30;14117:34;14097:18;;;14090:62;-1:-1:-1;;;14168:18:1;;;14161:33;14211:19;;23153:64:0;13837:399:1;23153:64:0;23245:1;23236:6;:10;23228:64;;;;-1:-1:-1;;;23228:64:0;;14443:2:1;23228:64:0;;;14425:21:1;14482:2;14462:18;;;14455:30;14521:34;14501:18;;;14494:62;-1:-1:-1;;;14572:18:1;;;14565:39;14621:19;;23228:64:0;14241:405:1;23228:64:0;23307:11;;;;:20;;:11;:20;23303:140;;-1:-1:-1;;;;;23352:22:0;;;;;;:18;:22;;;;;;;;;:50;;-1:-1:-1;;;;;;23378:24:0;;;;;;:18;:24;;;;;;;;23352:50;23344:87;;;;-1:-1:-1;;;23344:87:0;;14853:2:1;23344:87:0;;;14835:21:1;14892:2;14872:18;;;14865:30;14931:26;14911:18;;;14904:54;14975:18;;23344:87:0;14651:348:1;23344:87:0;23459:8;;-1:-1:-1;;;23459:8:0;;;;:27;;;;-1:-1:-1;11434:7:0;11461:6;-1:-1:-1;;;;;23471:15:0;;;11461:6;;23471:15;;23459:27;:44;;;;-1:-1:-1;11434:7:0;11461:6;-1:-1:-1;;;;;23490:13:0;;;11461:6;;23490:13;;23459:44;23455:100;;;23520:23;23534:4;23540:2;23520:13;:23::i;:::-;11434:7;11461:6;-1:-1:-1;;;;;23571:15:0;;;11461:6;;23571:15;;;;:32;;-1:-1:-1;11434:7:0;11461:6;-1:-1:-1;;;;;23590:13:0;;;11461:6;;23590:13;;23571:32;:59;;;;-1:-1:-1;;;;;;23608:22:0;;;;;;:18;:22;;;;;;;;23607:23;23571:59;:88;;;;-1:-1:-1;;;;;;23635:24:0;;;;;;:18;:24;;;;;;;;23634:25;23571:88;23567:501;;;23688:13;;-1:-1:-1;;;;;23680:21:0;;;23688:13;;23680:21;:55;;;;-1:-1:-1;23719:15:0;;-1:-1:-1;;;;;23705:30:0;;;23719:15;;23705:30;;23680:55;:82;;;;-1:-1:-1;;;;;;23740:22:0;;;;;;:18;:22;;;;;;;;23739:23;23680:82;23676:198;;;23801:13;;23791:6;:23;;23783:75;;;;-1:-1:-1;;;23783:75:0;;15206:2:1;23783:75:0;;;15188:21:1;15245:2;15225:18;;;15218:30;15284:34;15264:18;;;15257:62;-1:-1:-1;;;15335:18:1;;;15328:37;15382:19;;23783:75:0;15004:403:1;23783:75:0;23898:13;;-1:-1:-1;;;;;23892:19:0;;;23898:13;;23892:19;:48;;;;-1:-1:-1;;;;;;23916:24:0;;;;;;:18;:24;;;;;;;;23915:25;23892:48;23888:169;;;23979:13;;23969:6;:23;;23961:80;;;;-1:-1:-1;;;23961:80:0;;15614:2:1;23961:80:0;;;15596:21:1;15653:2;15633:18;;;15626:30;15692:34;15672:18;;;15665:62;-1:-1:-1;;;15743:18:1;;;15736:42;15795:19;;23961:80:0;15412:408:1;23961:80:0;24080:28;24111:24;24129:4;24111:9;:24::i;:::-;24201:23;;24274:16;;24080:55;;-1:-1:-1;24177:47:0;;;;-1:-1:-1;;;24274:16:0;;;;24273:17;:42;;;;-1:-1:-1;24294:21:0;;-1:-1:-1;;;24294:21:0;;;;24273:42;:74;;;;-1:-1:-1;24329:13:0;;24346:1;;24319:24;;-1:-1:-1;;;;;24329:13:0;24319:9;:24::i;:::-;:28;24273:74;24269:210;;;24374:13;;-1:-1:-1;;;;;24368:19:0;;;24374:13;;24368:19;:46;;;;;24391:23;24368:46;24364:104;;;24435:17;:15;:17::i;:::-;24511:1;24491:17;:21;;;-1:-1:-1;;;;;24612:24:0;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;24640:22:0;;;;;;:18;:22;;;;;;;;24612:50;24608:539;;;24699:1;24679:17;:21;24608:539;;;24745:13;;-1:-1:-1;;;;;24737:21:0;;;24745:13;;24737:21;;;;:44;;-1:-1:-1;24768:13:0;;-1:-1:-1;;;;;24762:19:0;;;24768:13;;24762:19;;24737:44;:64;;;;-1:-1:-1;24785:16:0;;;;;;;24737:64;24733:137;;;24842:12;;24822:17;:32;24733:137;24918:13;;-1:-1:-1;;;;;24918:13:0;;;24910:21;;;;24906:98;;24972:16;;24952:17;:36;24906:98;25049:13;;-1:-1:-1;;;;;25049:13:0;;;25043:19;;;;25039:97;;25103:17;;25083;:37;25039:97;25159:32;25174:4;25180:2;25184:6;25159:14;:32::i;:::-;23063:2136;;22994:2205;;;:::o;8967:206::-;9053:7;9114:12;9106:6;;;;9098:29;;;;-1:-1:-1;;;9098:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;9149:5:0;;;8967:206::o;6688:98::-;6746:7;6773:5;6777:1;6773;:5;:::i;27861:631::-;27979:15;;27947:62;;27964:4;;-1:-1:-1;;;;;27979:15:0;27997:11;27947:8;:62::i;:::-;28106:16;;;28120:1;28106:16;;;;;;;;28082:21;;28106:16;;;;;;;;;;-1:-1:-1;28106:16:0;28082:40;;28151:4;28133;28138:1;28133:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28133:23:0;;;:7;;;;;;;;;;:23;;;;28177:15;;:22;;;-1:-1:-1;;;28177:22:0;;;;:15;;;;;:20;;:22;;;;;28133:7;;28177:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28167:4;28172:1;28167:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28167:32:0;;;:7;;;;;;;;;:32;28238:15;;:193;;-1:-1:-1;;;28238:193:0;;:15;;;:66;;:193;;28319:11;;28238:15;;28361:4;;28380:10;;28405:15;;28238:193;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28449:35;28466:11;28479:4;28449:35;;;;;;;:::i;:::-;;;;;;;;27936:556;27861:631;;:::o;22232:651::-;22393:13;;22504:16;;;22518:1;22504:16;;;;;;;;22282:7;;-1:-1:-1;;;;;22393:13:0;;22282:7;;22504:16;22518:1;22504:16;;;;;;;;;;-1:-1:-1;22504:16:0;22480:40;;22549:4;22531;22536:1;22531:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22531:23:0;;;:7;;;;;;;;;;:23;;;;22575:15;;:22;;;-1:-1:-1;;;22575:22:0;;;;:15;;;;;:20;;:22;;;;;22531:7;;22575:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22565:4;22570:1;22565:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22565:32:0;;;:7;;;;;;;;;:32;22769:36;;-1:-1:-1;;;22769:36:0;;22629:4;;22610:16;;22769:20;;;;;;:36;;22629:4;;22800;;22769:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22769:36:0;;;;;;;;;;;;:::i;:::-;22742:63;;22825:7;22833:1;22825:10;;;;;;;;:::i;:::-;;;;;;;22818:17;;;;;;22232:651;:::o;32145:164::-;32187:7;32208:15;32225;32244:19;:17;:19::i;:::-;32207:56;;-1:-1:-1;32207:56:0;-1:-1:-1;32281:20:0;32207:56;;32281:11;:20::i;:::-;32274:27;;;;32145:164;:::o;7825:98::-;7883:7;7910:5;7914:1;7910;:5;:::i;2418:315::-;1716:1;2547:7;;:18;2543:88;;2589:30;;-1:-1:-1;;;2589:30:0;;;;;;;;;;;2543:88;1716:1;2708:7;:17;2418:315::o;21226:998::-;21307:13;;-1:-1:-1;;;;;21307:13:0;;;21299:21;;;;21295:290;;21337:20;21360:17;:15;:17::i;:::-;21337:40;;21396:11;;21411:1;21396:16;21392:182;;21433:11;:26;;;21392:182;;;21500:11;;21485:12;:26;21481:93;;;21532:11;:26;;;21481:93;21322:263;21295:290;21605:13;;-1:-1:-1;;;;;21605:13:0;;;21599:19;;;;21595:622;;21635:20;21658:17;:15;:17::i;:::-;21635:40;;21694:11;;21709:1;21694:16;21690:516;;21731:11;:26;;;21690:516;;;21861:3;21839:17;;21833:3;:23;;;;:::i;:::-;21818:11;;:39;;;;:::i;:::-;21817:47;;;;:::i;:::-;21802:12;:62;21798:393;;;11434:7;11461:6;-1:-1:-1;;;;;21985:15:0;;;11461:6;;21985:15;;:43;;-1:-1:-1;;;;;;22004:24:0;;;;;;:18;:24;;;;;;;;21985:43;21977:87;;;;-1:-1:-1;;;21977:87:0;;19097:2:1;21977:87:0;;;19079:21:1;19136:2;19116:18;;;19109:30;19175:33;19155:18;;;19148:61;19226:18;;21977:87:0;18895:355:1;21977:87:0;21798:393;;;22109:11;;22094:12;:26;22090:101;;;22145:11;:26;;;22090:101;21620:597;21595:622;21226:998;;:::o;25343:2510::-;15548:16;:23;;-1:-1:-1;;;;15548:23:0;-1:-1:-1;;;15548:23:0;;;;25432:24:::1;25450:4;25432:9;:24::i;:::-;25522:23;::::0;25401:55;;-1:-1:-1;25498:47:0;::::1;::::0;::::1;::::0;25590:2256:::1;;25657:23;::::0;25716:14:::1;::::0;25769:17:::1;::::0;25825::::1;::::0;25657:23;;-1:-1:-1;25716:14:0;;25695:18:::1;25863:15:::0;;;25859:82:::1;;25912:13;;25899:26;;25859:82;25959:13;25976:1;25959:18:::0;25955:91:::1;;26014:16;;25998:32;;25955:91;26064:13;26081:1;26064:18:::0;26060:91:::1;;-1:-1:-1::0;26119:16:0::1;::::0;26060:91:::1;26167:21;26220:13:::0;26191:26:::1;26204:13:::0;26191:10;:26:::1;:::i;:::-;:42;;;;:::i;:::-;26167:66:::0;-1:-1:-1;26250:22:0::1;::::0;;26376:17;;26372:320:::1;;26431:58;26475:13:::0;26431:39:::1;:20:::0;26456:13;26431:24:::1;:39::i;:::-;:43:::0;::::1;:58::i;:::-;26414:75:::0;-1:-1:-1;26525:58:0::1;26569:13:::0;26525:39:::1;:20:::0;26550:13;26525:24:::1;:39::i;:58::-;26508:75:::0;-1:-1:-1;26616:60:0::1;26508:75:::0;26616:40:::1;:20:::0;26641:14;26616:24:::1;:40::i;:::-;:44:::0;::::1;:60::i;:::-;26602:74;;26372:320;26708:70;26725:28;26742:11:::0;26725:14;:28:::1;:::i;:::-;26771:4;26708:16;:70::i;:::-;26812:21;26793:16;26876:26;26889:13:::0;26876:10;:26:::1;:::i;:::-;26848:54:::0;-1:-1:-1;26917:20:0::1;26940:50;26848:54:::0;26940:27:::1;:8:::0;26953:13;26940:12:::1;:27::i;:50::-;26917:73:::0;-1:-1:-1;27005:17:0::1;27025:26;:8:::0;26917:73;27025:12:::1;:26::i;:::-;27005:46:::0;-1:-1:-1;27070:16:0;;27066:219:::1;;27126:16;::::0;:46:::1;::::0;27108:12:::1;::::0;-1:-1:-1;;;;;27126:16:0::1;::::0;27155:12;;27108;27126:46;27108:12;27126:46;27155:12;27126:16;:46:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27107:65;;;27199:7;27191:78;;;;-1:-1:-1::0;;;27191:78:0::1;;;;;;;:::i;:::-;27088:197;27066:219;27305:17;::::0;-1:-1:-1;;;27305:17:0;::::1;;;27301:534;;;27347:18:::0;;27343:348:::1;;27505:17;::::0;27467:73:::1;::::0;-1:-1:-1;;;27467:73:0;;-1:-1:-1;;;;;27505:17:0;;::::1;27467:73;::::0;::::1;10048:51:1::0;10115:18;;;10108:34;;;27482:4:0::1;::::0;27467:29:::1;::::0;10021:18:1;;27467:73:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;27625:17:0::1;::::0;:46:::1;::::0;-1:-1:-1;;;27625:46:0;;:17;:46:::1;::::0;::::1;19437:25:1::0;19478:18;;;19471:34;;;-1:-1:-1;;;;;27625:17:0;;::::1;::::0;:27:::1;::::0;19410:18:1;;27625:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27343:348;27713:13:::0;;27709:111:::1;;27751:17;::::0;:49:::1;::::0;-1:-1:-1;;;27751:49:0;;:17;:49:::1;::::0;::::1;1361:25:1::0;-1:-1:-1;;;;;27751:17:0;;::::1;::::0;:28:::1;::::0;27787:9;;1334:18:1;;27751:49:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;27709:111;25619:2227;;;;;;;;;;;25590:2256;-1:-1:-1::0;;15594:16:0;:24;;-1:-1:-1;;;;15594:24:0;;;25343:2510::o;28500:568::-;-1:-1:-1;;;;;28598:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;28622:22:0;;;;;;:11;:22;;;;;;;;28621:23;28598:46;28594:467;;;28661:48;28683:6;28691:9;28702:6;28661:21;:48::i;28594:467::-;-1:-1:-1;;;;;28732:19:0;;;;;;:11;:19;;;;;;;;28731:20;:46;;;;-1:-1:-1;;;;;;28755:22:0;;;;;;:11;:22;;;;;;;;28731:46;28727:334;;;28794:46;28814:6;28822:9;28833:6;28794:19;:46::i;28727:334::-;-1:-1:-1;;;;;28862:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;28885:22:0;;;;;;:11;:22;;;;;;;;28862:45;28858:203;;;28924:48;28946:6;28954:9;28965:6;28924:21;:48::i;28858:203::-;29005:44;29023:6;29031:9;29042:6;29005:17;:44::i;32317:556::-;32415:7;;32368;;;;14230:19;32368:7;32469:289;32493:9;:16;32489:20;;32469:289;;;32559:7;32535;:21;32543:9;32553:1;32543:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;32543:12:0;32535:21;;;;;;;;;;;;;:31;;:66;;;32594:7;32570;:21;32578:9;32588:1;32578:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;32578:12:0;32570:21;;;;;;;;;;;;;:31;32535:66;32531:97;;;-1:-1:-1;;32611:7:0;;;14230:19;;-1:-1:-1;32317:556:0;-1:-1:-1;;32317:556:0:o;32531:97::-;32653:34;32665:7;:21;32673:9;32683:1;32673:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;32673:12:0;32665:21;;;;;;;;;;;;;32653:7;;:11;:34::i;:::-;32643:44;;32712:34;32724:7;:21;32732:9;32742:1;32732:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;32732:12:0;32724:21;;;;;;;;;;;;;32712:7;;:11;:34::i;:::-;32702:44;-1:-1:-1;32511:3:0;;;;:::i;:::-;;;;32469:289;;;-1:-1:-1;32782:7:0;;:20;;14230:19;32782:11;:20::i;:::-;32772:7;:30;32768:61;;;-1:-1:-1;;32812:7:0;;;14230:19;;-1:-1:-1;32317:556:0;-1:-1:-1;32317:556:0:o;32768:61::-;32848:7;;32857;;-1:-1:-1;32317:556:0;-1:-1:-1;32317:556:0:o;7426:98::-;7484:7;7511:5;7515:1;7511;:5;:::i;7069:98::-;7127:7;7154:5;7158:1;7154;:5;:::i;30045:501::-;30148:15;30165:23;30190;30215:18;30237:19;30248:7;30237:10;:19::i;:::-;-1:-1:-1;;;;;30285:15:0;;;;;;:7;:15;;;;;;30147:109;;-1:-1:-1;30147:109:0;;-1:-1:-1;30147:109:0;-1:-1:-1;30147:109:0;-1:-1:-1;30285:28:0;;30305:7;30285:19;:28::i;:::-;-1:-1:-1;;;;;30267:15:0;;;;;;:7;:15;;;;;;;;:46;;;;30342:7;:15;;;;:28;;30362:7;30342:19;:28::i;:::-;-1:-1:-1;;;;;30324:15:0;;;;;;;:7;:15;;;;;;:46;;;;30402:18;;;;;;;:39;;30425:15;30402:22;:39::i;:::-;-1:-1:-1;;;;;30381:18:0;;;;;;:7;:18;;;;;:60;30452:26;30467:10;30452:14;:26::i;:::-;30511:9;-1:-1:-1;;;;;30494:44:0;30503:6;-1:-1:-1;;;;;30494:44:0;;30522:15;30494:44;;;;1361:25:1;;1349:2;1334:18;;1215:177;30494:44:0;;;;;;;;30136:410;;;;30045:501;;;:::o;29524:513::-;29625:15;29642:23;29667;29692:18;29714:19;29725:7;29714:10;:19::i;:::-;-1:-1:-1;;;;;29762:15:0;;;;;;:7;:15;;;;;;29624:109;;-1:-1:-1;29624:109:0;;-1:-1:-1;29624:109:0;-1:-1:-1;29624:109:0;-1:-1:-1;29762:28:0;;29624:109;29762:19;:28::i;:::-;-1:-1:-1;;;;;29744:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;29822:18;;;;;:7;:18;;;;;:39;;29845:15;29822:22;:39::i;:::-;-1:-1:-1;;;;;29801:18:0;;;;;;:7;:18;;;;;;;;:60;;;;29893:7;:18;;;;:39;;29916:15;29893:22;:39::i;30554:572::-;30657:15;30674:23;30699;30724:18;30746:19;30757:7;30746:10;:19::i;:::-;-1:-1:-1;;;;;30794:15:0;;;;;;:7;:15;;;;;;30656:109;;-1:-1:-1;30656:109:0;;-1:-1:-1;30656:109:0;-1:-1:-1;30656:109:0;-1:-1:-1;30794:28:0;;30814:7;30794:19;:28::i;:::-;-1:-1:-1;;;;;30776:15:0;;;;;;:7;:15;;;;;;;;:46;;;;30851:7;:15;;;;:28;;30871:7;30851:19;:28::i;29076:440::-;29175:15;29192:23;29217;29242:18;29264:19;29275:7;29264:10;:19::i;:::-;-1:-1:-1;;;;;29312:15:0;;;;;;:7;:15;;;;;;29174:109;;-1:-1:-1;29174:109:0;;-1:-1:-1;29174:109:0;-1:-1:-1;29174:109:0;-1:-1:-1;29312:28:0;;29174:109;29312:19;:28::i;31134:355::-;31193:7;31202;31211;31220;31241:23;31266:18;31288:20;31300:7;31288:11;:20::i;:::-;31240:68;;;;31320:15;31337:23;31364:44;31376:7;31385:10;31397;:8;:10::i;:::-;31364:11;:44::i;:::-;31319:89;;;;-1:-1:-1;31453:15:0;;-1:-1:-1;31470:10:0;;-1:-1:-1;31134:355:0;;-1:-1:-1;;;;31134:355:0:o;32881:347::-;32944:19;32966:10;:8;:10::i;:::-;32944:32;-1:-1:-1;32987:18:0;33008:27;:10;32944:32;33008:14;:27::i;:::-;33080:14;;-1:-1:-1;;;;;33080:14:0;33072:23;;;;:7;:23;;;;;;32987:48;;-1:-1:-1;33072:39:0;;32987:48;33072:27;:39::i;:::-;33054:14;;;-1:-1:-1;;;;;33054:14:0;;;33046:23;;;;:7;:23;;;;;;;;:65;;;;33138:14;;;;;33126:27;;:11;:27;;;;;;;33122:98;;;33189:14;;-1:-1:-1;;;;;33189:14:0;33181:23;;;;:7;:23;;;;;;:39;;33209:10;33181:27;:39::i;:::-;33163:14;;-1:-1:-1;;;;;33163:14:0;33155:23;;;;:7;:23;;;;;:65;32933:295;;32881:347;:::o;31497:255::-;31557:7;31566;31586:18;31607:30;31629:7;31607:21;:30::i;:::-;31586:51;-1:-1:-1;31648:23:0;31674;:7;31586:51;31674:11;:23::i;:::-;31648:49;31733:10;;-1:-1:-1;31497:255:0;;-1:-1:-1;;;31497:255:0:o;31760:377::-;31895:7;;;31942:24;:7;31954:11;31942;:24::i;:::-;31924:42;-1:-1:-1;31977:18:0;31998:27;:10;32013:11;31998:14;:27::i;:::-;31977:48;-1:-1:-1;32036:23:0;32062;:7;31977:48;32062:11;:23::i;:::-;32104:7;;;;-1:-1:-1;31760:377:0;;-1:-1:-1;;;;;;31760:377:0:o;33236:148::-;33306:7;33333:43;33368:7;33333:30;33345:17;;33333:7;:11;;:30;;;;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:180::-;1690:6;1743:2;1731:9;1722:7;1718:23;1714:32;1711:52;;;1759:1;1756;1749:12;1711:52;-1:-1:-1;1782:23:1;;1631:180;-1:-1:-1;1631:180:1:o;1816:118::-;1902:5;1895:13;1888:21;1881:5;1878:32;1868:60;;1924:1;1921;1914:12;1939:241;1995:6;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2103:9;2090:23;2122:28;2144:5;2122:28;:::i;2185:456::-;2262:6;2270;2278;2331:2;2319:9;2310:7;2306:23;2302:32;2299:52;;;2347:1;2344;2337:12;2299:52;2386:9;2373:23;2405:31;2430:5;2405:31;:::i;:::-;2455:5;-1:-1:-1;2512:2:1;2497:18;;2484:32;2525:33;2484:32;2525:33;:::i;:::-;2185:456;;2577:7;;-1:-1:-1;;;2631:2:1;2616:18;;;;2603:32;;2185:456::o;3267:247::-;3326:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:52;;;3395:1;3392;3385:12;3347:52;3434:9;3421:23;3453:31;3478:5;3453:31;:::i;3519:523::-;3623:6;3631;3639;3647;3655;3663;3716:3;3704:9;3695:7;3691:23;3687:33;3684:53;;;3733:1;3730;3723:12;3684:53;-1:-1:-1;;3756:23:1;;;3826:2;3811:18;;3798:32;;-1:-1:-1;3877:2:1;3862:18;;3849:32;;3928:2;3913:18;;3900:32;;-1:-1:-1;3979:3:1;3964:19;;3951:33;;-1:-1:-1;4031:3:1;4016:19;4003:33;;-1:-1:-1;3519:523:1;-1:-1:-1;3519:523:1:o;4283:388::-;4351:6;4359;4412:2;4400:9;4391:7;4387:23;4383:32;4380:52;;;4428:1;4425;4418:12;4380:52;4467:9;4454:23;4486:31;4511:5;4486:31;:::i;:::-;4536:5;-1:-1:-1;4593:2:1;4578:18;;4565:32;4606:33;4565:32;4606:33;:::i;:::-;4658:7;4648:17;;;4283:388;;;;;:::o;4676:356::-;4878:2;4860:21;;;4897:18;;;4890:30;4956:34;4951:2;4936:18;;4929:62;5023:2;5008:18;;4676:356::o;5863:347::-;6065:2;6047:21;;;6104:2;6084:18;;;6077:30;6143:25;6138:2;6123:18;;6116:53;6201:2;6186:18;;5863:347::o;6567:127::-;6628:10;6623:3;6619:20;6616:1;6609:31;6659:4;6656:1;6649:15;6683:4;6680:1;6673:15;6699:217;6739:1;6765;6755:132;;6809:10;6804:3;6800:20;6797:1;6790:31;6844:4;6841:1;6834:15;6872:4;6869:1;6862:15;6755:132;-1:-1:-1;6901:9:1;;6699:217::o;6921:418::-;7123:2;7105:21;;;7162:2;7142:18;;;7135:30;7201:34;7196:2;7181:18;;7174:62;-1:-1:-1;;;7267:2:1;7252:18;;7245:52;7329:3;7314:19;;6921:418::o;7344:251::-;7414:6;7467:2;7455:9;7446:7;7442:23;7438:32;7435:52;;;7483:1;7480;7473:12;7435:52;7515:9;7509:16;7534:31;7559:5;7534:31;:::i;7909:125::-;7974:9;;;7995:10;;;7992:36;;;8008:18;;:::i;9685:184::-;9755:6;9808:2;9796:9;9787:7;9783:23;9779:32;9776:52;;;9824:1;9821;9814:12;9776:52;-1:-1:-1;9847:16:1;;9685:184;-1:-1:-1;9685:184:1:o;10153:245::-;10220:6;10273:2;10261:9;10252:7;10248:23;10244:32;10241:52;;;10289:1;10286;10279:12;10241:52;10321:9;10315:16;10340:28;10362:5;10340:28;:::i;11789:422::-;11991:2;11973:21;;;12030:2;12010:18;;;12003:30;12069:34;12064:2;12049:18;;12042:62;12140:28;12135:2;12120:18;;12113:56;12201:3;12186:19;;11789:422::o;15825:127::-;15886:10;15881:3;15877:20;15874:1;15867:31;15917:4;15914:1;15907:15;15941:4;15938:1;15931:15;15957:127;16018:10;16013:3;16009:20;16006:1;15999:31;16049:4;16046:1;16039:15;16073:4;16070:1;16063:15;16089:461;16142:3;16180:5;16174:12;16207:6;16202:3;16195:19;16233:4;16262:2;16257:3;16253:12;16246:19;;16299:2;16292:5;16288:14;16320:1;16330:195;16344:6;16341:1;16338:13;16330:195;;;16409:13;;-1:-1:-1;;;;;16405:39:1;16393:52;;16465:12;;;;16500:15;;;;16441:1;16359:9;16330:195;;;-1:-1:-1;16541:3:1;;16089:461;-1:-1:-1;;;;;16089:461:1:o;16555:582::-;16854:6;16843:9;16836:25;16897:6;16892:2;16881:9;16877:18;16870:34;16940:3;16935:2;16924:9;16920:18;16913:31;16817:4;16961:57;17013:3;17002:9;16998:19;16990:6;16961:57;:::i;:::-;-1:-1:-1;;;;;17054:32:1;;;;17049:2;17034:18;;17027:60;-1:-1:-1;17118:3:1;17103:19;17096:35;16953:65;16555:582;-1:-1:-1;;;16555:582:1:o;17142:332::-;17349:6;17338:9;17331:25;17392:2;17387;17376:9;17372:18;17365:30;17312:4;17412:56;17464:2;17453:9;17449:18;17441:6;17412:56;:::i;17479:1105::-;17574:6;17605:2;17648;17636:9;17627:7;17623:23;17619:32;17616:52;;;17664:1;17661;17654:12;17616:52;17697:9;17691:16;17726:18;17767:2;17759:6;17756:14;17753:34;;;17783:1;17780;17773:12;17753:34;17821:6;17810:9;17806:22;17796:32;;17866:7;17859:4;17855:2;17851:13;17847:27;17837:55;;17888:1;17885;17878:12;17837:55;17917:2;17911:9;17939:2;17935;17932:10;17929:36;;;17945:18;;:::i;:::-;17991:2;17988:1;17984:10;18023:2;18017:9;18086:2;18082:7;18077:2;18073;18069:11;18065:25;18057:6;18053:38;18141:6;18129:10;18126:22;18121:2;18109:10;18106:18;18103:46;18100:72;;;18152:18;;:::i;:::-;18188:2;18181:22;18238:18;;;18272:15;;;;-1:-1:-1;18314:11:1;;;18310:20;;;18342:19;;;18339:39;;;18374:1;18371;18364:12;18339:39;18398:11;;;;18418:135;18434:6;18429:3;18426:15;18418:135;;;18500:10;;18488:23;;18451:12;;;;18531;;;;18418:135;;;18572:6;17479:1105;-1:-1:-1;;;;;;;;17479:1105:1:o;18589:128::-;18656:9;;;18677:11;;;18674:37;;;18691:18;;:::i;18722:168::-;18795:9;;;18826;;18843:15;;;18837:22;;18823:37;18813:71;;18864:18;;:::i;19706:135::-;19745:3;19766:17;;;19763:43;;19786:18;;:::i;:::-;-1:-1:-1;19833:1:1;19822:13;;19706:135::o

Swarm Source

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