ETH Price: $3,056.84 (-1.51%)

Token

Sminem Token (SMNM)
 

Overview

Max Total Supply

1,000,000,000,000 SMNM

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,485,140,546.911776008015632382 SMNM

Value
$0.00
0xF2CeEEFaC072a90bb72cfd0FaBb6794D0043DB93
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:
SminemToken

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-01
*/

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: @openzeppelin/contracts/utils/math/SafeMath.sol

// OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
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 substraction 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;
        }
    }
}

// File: @openzeppelin/contracts/utils/Context.sol

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

// File: @openzeppelin/contracts/access/Ownable.sol

// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol

pragma solidity >=0.6.2;

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

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

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

// File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol

pragma solidity >=0.6.2;

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

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

// File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol

pragma solidity >=0.5.0;

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

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

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

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

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

// File: token/SminemToken.sol

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





contract SminemToken is IERC20, Ownable {
	using SafeMath for *;

	string private constant _name = unicode"Sminem Token";
	string private constant _symbol = unicode"SMNM";
	uint8 private constant _decimals = 18;
	
	uint256 private constant _totalSupply = 10**12 * 1e18;
	uint256 private _marketingFee = 35000000000 * 1e18;
	uint256 private _sminemFee = 13000000000 * 1e18;
	uint256 private _devFee = 35000000000 * 1e18;
	uint256 private _totalFeePercent = _getTotalFeePercent();
	uint256 private _maxAmountInTx = _totalSupply;

	address private _marketingAddress;
	address private _sminemAddress;
	address private _devAddress;
	uint256 private _previousMarketingFee;
	uint256 private _previousSminemFee;
	uint256 private _previousDevFee;
	uint256 private _maxOwnedTokensPercent = 2;
	uint256 private _maxTokensInWalletPercent = 5;
	uint256 private _floor = 0;


	mapping(address => bool) private _botList;

	mapping(address => uint256) private _balanceOf;
	mapping (address => mapping(address => uint256)) private _allowance;
	mapping (address => bool) private _isExcludedFromFee;

	IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

	bool private isOpen = false;
	bool private inSwap = false;


	modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

	constructor(address payable devAddress, address payable marketingAddress, address payable sminemAddress) {
		_balanceOf[_msgSender()] = _totalSupply;
	
		_marketingAddress = marketingAddress;
		_sminemAddress = sminemAddress;
		_devAddress = devAddress;

		_isExcludedFromFee[address(this)] = true;
		_isExcludedFromFee[_msgSender()] = true;
		_isExcludedFromFee[_marketingAddress] = true;
		_isExcludedFromFee[_sminemAddress] = true;
		_isExcludedFromFee[_devAddress] = true;

		emit Transfer(address(0), _msgSender(), _totalSupply);
	}

	function open() external onlyOwner {
		require(!isOpen,"trading is already open");
		IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
		_approve(address(this), address(uniswapV2Router), _totalSupply);
		uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
		uniswapV2Router.addLiquidityETH{value: address(this).balance}
			(address(this),
			balanceOf(address(this)),
			0,
			0,
			owner(),
			block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);

		isOpen = true;
	}

	receive() external payable {}

	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 returns (uint256) {
		return _totalSupply;
	}

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

	function approve(address spender, uint amount) public override returns (bool) {
		require(_msgSender() != address(0));
		require(spender != address(0));
		_allowance[_msgSender()][spender] = amount;
		emit Approval(_msgSender(), spender, amount);
		return true;
	}

	function transferFrom(address sender, address recipient, uint amount) public override returns (bool) {
		require(_msgSender() != address(0));
		require(sender != address(0));
		_transfer(sender, recipient, amount);
		_allowance[sender][_msgSender()] = _allowance[sender][_msgSender()].sub(amount);		
		return true;
	}

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

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

	function _transfer(address sender, address recipient, uint amount) private {
		require(sender != address(0), "[sminem]: transfer from the zero address");
        require(recipient != address(0), "[sminem]: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
		

		if(sender != owner() && recipient != owner()) {
            if(!_isExcludedFromFee[recipient] && !_isExcludedFromFee[sender] ) {
                require(amount <= _maxAmountInTx, "Transfer amount exceeds the maxTxAmount.");
            }
			require(!_botList[sender] && !_botList[recipient], "Bot detected");
        
			if(sender == uniswapV2Pair && recipient != address(uniswapV2Router) && !_isExcludedFromFee[recipient]) {
				require(isOpen, "[sminem]: Trading not started yet.");
				uint walletBalance = balanceOf(address(recipient));
				require(amount.add(walletBalance) <= _totalSupply.mul(_maxOwnedTokensPercent).div(100));
			}

			uint256 contractTokenBalance = balanceOf(address(this));

			if(!inSwap && sender != uniswapV2Pair && isOpen) {
				if(contractTokenBalance > 0) {
					if(contractTokenBalance > balanceOf(uniswapV2Pair).mul(_maxTokensInWalletPercent).div(100)) {
						contractTokenBalance = balanceOf(uniswapV2Pair).mul(_maxTokensInWalletPercent).div(100);
					}
					swapTokensForEth(contractTokenBalance);
				}
				uint256 contractETHBalance = address(this).balance;
				if(contractETHBalance > _floor) {
					sendETHToFee(address(this).balance.sub(_floor));
				}
			}
		}


		bool takeFee = true;
		if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) takeFee = false;

		if(!takeFee)
            removeAllFee();
        _transferRegular(sender, recipient, amount);
        if(!takeFee)
            restoreAllFee();
	}

	function _transferRegular(address sender, address recipient, uint256 amount) private {
		_balanceOf[sender] = _balanceOf[sender].sub(amount);
		uint256 fee = getFee(amount);
		_balanceOf[recipient] = _balanceOf[recipient].add(amount).sub(fee);
		_balanceOf[address(this)] = _balanceOf[address(this)].add(fee);

		emit Transfer(sender, recipient, amount);
	}

	function getFee(uint256 amount) private view returns(uint256) {
		uint256 fee = amount.mul(_totalFeePercent).div(_totalSupply);
		return fee;
	}

	function _getTotalFeePercent() private view returns(uint256) {
		return _sminemFee.add(_marketingFee).add(_devFee);
	}

	function splitFee(uint256 sum) private view returns(uint256, uint256, uint256) {
		uint split1 = sum.mul(_sminemFee).div(_totalFeePercent);
		uint split2 = sum.mul(_marketingFee).div(_totalFeePercent);
		uint split3 = sum.mul(_devFee).div(_totalFeePercent);
		return (split1, split2, split3);
	}

	function _approve(address owner, address spender, uint amount) private {
		require(owner != address(0), "[sminem]: approve from the zero address");
        require(spender != address(0), "[sminem]: approve to the zero address");
        _allowance[owner][spender] = amount;
        emit Approval(owner, spender, amount);
	}

	function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

	function sendETHToFee(uint256 amount) private {
		(uint256 split1, uint256 split2, uint256 split3) = splitFee(amount);
		bool success = false;
		(success, ) = _sminemAddress.call{value: split1}("");
		require(success);
        (success, ) = _marketingAddress.call{value: split2}("");
		require(success);
        (success, ) = _devAddress.call{value: split3}("");
		require(success);
    }

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

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

	function setMarketingWallet (address payable marketingWalletAddress) external onlyOwner {
        _isExcludedFromFee[_marketingAddress] = false;
        _marketingAddress = marketingWalletAddress;
        _isExcludedFromFee[marketingWalletAddress] = true;
    }

	function setSminemWallet (address payable sminemWalletAddress) external onlyOwner {
        _isExcludedFromFee[_sminemAddress] = false;
        _sminemAddress = sminemWalletAddress;
        _isExcludedFromFee[sminemWalletAddress] = true;
    }

	function setDevWallet (address payable devWalletAddress) external onlyOwner {
        _isExcludedFromFee[_devAddress] = false;
        _devAddress = devWalletAddress;
        _isExcludedFromFee[devWalletAddress] = true;
    }

	function setMarketingFee(uint256 fee) external onlyOwner {
        _marketingFee = fee;
		_totalFeePercent = _getTotalFeePercent();
    }

	function setSminemFee(uint256 fee) external onlyOwner {
        _sminemFee = fee;
		_totalFeePercent = _getTotalFeePercent();
    }

	function setDevFee(uint256 fee) external onlyOwner {
        _devFee = fee;
		_totalFeePercent = _getTotalFeePercent();
    }

	function restoreAllFee() private {
        _marketingFee = _previousMarketingFee;
        _devFee = _previousDevFee;
        _sminemFee = _previousSminemFee;

		_totalFeePercent = _getTotalFeePercent();
    }

	function removeAllFee() private {
		_previousMarketingFee = _marketingFee;
		_previousDevFee = _devFee;
		_previousSminemFee = _sminemFee;

        _marketingFee = 0;
        _devFee = 0;
        _sminemFee = 0;
		
		_totalFeePercent = _getTotalFeePercent();
    }

	function setBots(address[] memory bots) public onlyOwner {
		for (uint i = 0; i < bots.length; i++) {
            if (bots[i] != uniswapV2Pair && bots[i] != address(uniswapV2Router)) {
                _botList[bots[i]] = true;
            }
        }
    }

	function manualswap(uint256 amount) external onlyOwner {
        require(amount <= balanceOf(address(this)));
        swapTokensForEth(amount);
    }
    
    function manualsend() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

	function setMaxTxPercent(uint256 val) external onlyOwner {
        _maxAmountInTx = val;
    }

	function setMaxOwnedPercent(uint256 per) external onlyOwner {
        _maxOwnedTokensPercent = per;
    }

	function setTokensInWalletPercent(uint256 per) external onlyOwner {
        _maxTokensInWalletPercent = per;
    }

	function setFloor(uint256 floor) external onlyOwner {
        _floor = floor;
    }


	function unbot(address notbot) public onlyOwner {
        _botList[notbot] = false;
    }
    
    function isBot(address party) public view returns (bool) {
        return _botList[party];
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"devAddress","type":"address"},{"internalType":"address payable","name":"marketingAddress","type":"address"},{"internalType":"address payable","name":"sminemAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"includeToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"party","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"open","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setDevFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"devWalletAddress","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"floor","type":"uint256"}],"name":"setFloor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"per","type":"uint256"}],"name":"setMaxOwnedPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"val","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setSminemFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"sminemWalletAddress","type":"address"}],"name":"setSminemWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"per","type":"uint256"}],"name":"setTokensInWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unbot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526b71175249d9818853b80000006001556b2a0159141d968317c80000006002556b71175249d9818853b800000060035562000044620004cc60201b60201c565b6004556c0c9f2c9cd04674edea400000006005556002600c556005600d556000600e5560006014806101000a81548160ff0219169083151502179055506000601460156101000a81548160ff021916908315150217905550348015620000a957600080fd5b5060405162004b4c38038062004b4c8339818101604052810190620000cf91906200065a565b620000ef620000e36200050c60201b60201c565b6200051460201b60201c565b6c0c9f2c9cd04674edea4000000060106000620001116200050c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000620002806200050c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200044f6200050c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6c0c9f2c9cd04674edea40000000604051620004bb9190620006d1565b60405180910390a35050506200077a565b600062000507600354620004f3600154600254620005d860201b620020891790919060201c565b620005d860201b620020891790919060201c565b905090565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183620005e891906200071d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200062282620005f5565b9050919050565b620006348162000615565b81146200064057600080fd5b50565b600081519050620006548162000629565b92915050565b600080600060608486031215620006765762000675620005f0565b5b6000620006868682870162000643565b9350506020620006998682870162000643565b9250506040620006ac8682870162000643565b9150509250925092565b6000819050919050565b620006cb81620006b6565b82525050565b6000602082019050620006e86000830184620006c0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200072a82620006b6565b91506200073783620006b6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200076f576200076e620006ee565b5b828201905092915050565b6143c2806200078a6000396000f3fe6080604052600436106101d15760003560e01c8063881dce60116100f7578063cf0848f711610095578063f2fde38b11610064578063f2fde38b14610665578063f7d071811461068e578063fa9ad57f146106b7578063fcfff16f146106e0576101d8565b8063cf0848f7146105ad578063d543dbeb146105d6578063dd62ed3e146105ff578063dff4474e1461063c576101d8565b806395d89b41116100d157806395d89b41146104f3578063a9059cbb1461051e578063aa0531751461055b578063b515566a14610584576101d8565b8063881dce60146104765780638da5cb5b1461049f5780638efbc0d8146104ca576101d8565b80633bbac5791161016f578063628554fa1161013e578063628554fa146103e25780636fc3eaec1461040b57806370a0823114610422578063715018a61461045f576101d8565b80633bbac5791461032a578063437823ec146103675780635d098b3814610390578063625e764c146103b9576101d8565b80631c75b6b2116101ab5780631c75b6b2146102705780631f53ac021461029957806323b872dd146102c2578063313ce567146102ff576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f26106f7565b6040516101ff91906133c0565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a919061348a565b610734565b60405161023c91906134e5565b60405180910390f35b34801561025157600080fd5b5061025a6108ae565b604051610267919061350f565b60405180910390f35b34801561027c57600080fd5b506102976004803603810190610292919061352a565b6108c3565b005b3480156102a557600080fd5b506102c060048036038101906102bb9190613595565b610957565b005b3480156102ce57600080fd5b506102e960048036038101906102e491906135c2565b610ae9565b6040516102f691906134e5565b60405180910390f35b34801561030b57600080fd5b50610314610c98565b6040516103219190613631565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c919061364c565b610ca1565b60405161035e91906134e5565b60405180910390f35b34801561037357600080fd5b5061038e6004803603810190610389919061364c565b610cf7565b005b34801561039c57600080fd5b506103b760048036038101906103b29190613595565b610dce565b005b3480156103c557600080fd5b506103e060048036038101906103db919061352a565b610f60565b005b3480156103ee57600080fd5b5061040960048036038101906104049190613595565b610ff4565b005b34801561041757600080fd5b50610420611186565b005b34801561042e57600080fd5b506104496004803603810190610444919061364c565b611213565b604051610456919061350f565b60405180910390f35b34801561046b57600080fd5b5061047461125c565b005b34801561048257600080fd5b5061049d6004803603810190610498919061352a565b6112e4565b005b3480156104ab57600080fd5b506104b4611381565b6040516104c19190613688565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec919061352a565b6113aa565b005b3480156104ff57600080fd5b50610508611430565b60405161051591906133c0565b60405180910390f35b34801561052a57600080fd5b506105456004803603810190610540919061348a565b61146d565b60405161055291906134e5565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d919061352a565b61148b565b005b34801561059057600080fd5b506105ab60048036038101906105a691906137eb565b611511565b005b3480156105b957600080fd5b506105d460048036038101906105cf9190613595565b611708565b005b3480156105e257600080fd5b506105fd60048036038101906105f8919061352a565b6117df565b005b34801561060b57600080fd5b5061062660048036038101906106219190613834565b611865565b604051610633919061350f565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e919061352a565b6118ec565b005b34801561067157600080fd5b5061068c6004803603810190610687919061364c565b611972565b005b34801561069a57600080fd5b506106b560048036038101906106b0919061364c565b611a6a565b005b3480156106c357600080fd5b506106de60048036038101906106d9919061352a565b611b41565b005b3480156106ec57600080fd5b506106f5611bd5565b005b60606040518060400160405280600c81526020017f536d696e656d20546f6b656e0000000000000000000000000000000000000000815250905090565b60008073ffffffffffffffffffffffffffffffffffffffff1661075561209f565b73ffffffffffffffffffffffffffffffffffffffff16141561077657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107b057600080fd5b81601160006107bd61209f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1661085761209f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161089c919061350f565b60405180910390a36001905092915050565b60006c0c9f2c9cd04674edea40000000905090565b6108cb61209f565b73ffffffffffffffffffffffffffffffffffffffff166108e9611381565b73ffffffffffffffffffffffffffffffffffffffff161461093f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610936906138c0565b60405180910390fd5b8060038190555061094e6120a7565b60048190555050565b61095f61209f565b73ffffffffffffffffffffffffffffffffffffffff1661097d611381565b73ffffffffffffffffffffffffffffffffffffffff16146109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca906138c0565b60405180910390fd5b600060126000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff16610b0a61209f565b73ffffffffffffffffffffffffffffffffffffffff161415610b2b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610b6557600080fd5b610b708484846120d9565b610c0682601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bbd61209f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286190919063ffffffff16565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c4f61209f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b60006012905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610cff61209f565b73ffffffffffffffffffffffffffffffffffffffff16610d1d611381565b73ffffffffffffffffffffffffffffffffffffffff1614610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a906138c0565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610dd661209f565b73ffffffffffffffffffffffffffffffffffffffff16610df4611381565b73ffffffffffffffffffffffffffffffffffffffff1614610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e41906138c0565b60405180910390fd5b600060126000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610f6861209f565b73ffffffffffffffffffffffffffffffffffffffff16610f86611381565b73ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd3906138c0565b60405180910390fd5b80600181905550610feb6120a7565b60048190555050565b610ffc61209f565b73ffffffffffffffffffffffffffffffffffffffff1661101a611381565b73ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611067906138c0565b60405180910390fd5b600060126000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61118e61209f565b73ffffffffffffffffffffffffffffffffffffffff166111ac611381565b73ffffffffffffffffffffffffffffffffffffffff1614611202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f9906138c0565b60405180910390fd5b600047905061121081612877565b50565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61126461209f565b73ffffffffffffffffffffffffffffffffffffffff16611282611381565b73ffffffffffffffffffffffffffffffffffffffff16146112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf906138c0565b60405180910390fd5b6112e26000612a5c565b565b6112ec61209f565b73ffffffffffffffffffffffffffffffffffffffff1661130a611381565b73ffffffffffffffffffffffffffffffffffffffff1614611360576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611357906138c0565b60405180910390fd5b61136930611213565b81111561137557600080fd5b61137e81612b20565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113b261209f565b73ffffffffffffffffffffffffffffffffffffffff166113d0611381565b73ffffffffffffffffffffffffffffffffffffffff1614611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141d906138c0565b60405180910390fd5b80600e8190555050565b60606040518060400160405280600481526020017f534d4e4d00000000000000000000000000000000000000000000000000000000815250905090565b600061148161147a61209f565b84846120d9565b6001905092915050565b61149361209f565b73ffffffffffffffffffffffffffffffffffffffff166114b1611381565b73ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe906138c0565b60405180910390fd5b80600d8190555050565b61151961209f565b73ffffffffffffffffffffffffffffffffffffffff16611537611381565b73ffffffffffffffffffffffffffffffffffffffff161461158d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611584906138c0565b60405180910390fd5b60005b815181101561170457601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106115e5576115e46138e0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156116795750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110611658576116576138e0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156116f1576001600f6000848481518110611697576116966138e0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806116fc9061393e565b915050611590565b5050565b61171061209f565b73ffffffffffffffffffffffffffffffffffffffff1661172e611381565b73ffffffffffffffffffffffffffffffffffffffff1614611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177b906138c0565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117e761209f565b73ffffffffffffffffffffffffffffffffffffffff16611805611381565b73ffffffffffffffffffffffffffffffffffffffff161461185b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611852906138c0565b60405180910390fd5b8060058190555050565b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6118f461209f565b73ffffffffffffffffffffffffffffffffffffffff16611912611381565b73ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f906138c0565b60405180910390fd5b80600c8190555050565b61197a61209f565b73ffffffffffffffffffffffffffffffffffffffff16611998611381565b73ffffffffffffffffffffffffffffffffffffffff16146119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e5906138c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a55906139f9565b60405180910390fd5b611a6781612a5c565b50565b611a7261209f565b73ffffffffffffffffffffffffffffffffffffffff16611a90611381565b73ffffffffffffffffffffffffffffffffffffffff1614611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add906138c0565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611b4961209f565b73ffffffffffffffffffffffffffffffffffffffff16611b67611381565b73ffffffffffffffffffffffffffffffffffffffff1614611bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb4906138c0565b60405180910390fd5b80600281905550611bcc6120a7565b60048190555050565b611bdd61209f565b73ffffffffffffffffffffffffffffffffffffffff16611bfb611381565b73ffffffffffffffffffffffffffffffffffffffff1614611c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c48906138c0565b60405180910390fd5b60148054906101000a900460ff1615611c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9690613a65565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611d3330601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166c0c9f2c9cd04674edea40000000612d99565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da29190613a9a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2d9190613a9a565b6040518363ffffffff1660e01b8152600401611e4a929190613ac7565b6020604051808303816000875af1158015611e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8d9190613a9a565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611f1630611213565b600080611f21611381565b426040518863ffffffff1660e01b8152600401611f4396959493929190613b35565b60606040518083038185885af1158015611f61573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f869190613bab565b505050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612028929190613bfe565b6020604051808303816000875af1158015612047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206b9190613c53565b5060016014806101000a81548160ff02191690831515021790555050565b600081836120979190613c80565b905092915050565b600033905090565b60006120d46003546120c660015460025461208990919063ffffffff16565b61208990919063ffffffff16565b905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214090613d48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b090613dda565b60405180910390fd5b600081116121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f390613e6c565b60405180910390fd5b612204611381565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122725750612242611381565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561278357601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561231b5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561236657600554811115612365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235c90613efe565b60405180910390fd5b5b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561240a5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244090613f6a565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156124f45750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561254a5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125fe5760148054906101000a900460ff1661259c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259390613ffc565b60405180910390fd5b60006125a783611213565b90506125de60646125d0600c546c0c9f2c9cd04674edea40000000612f6490919063ffffffff16565b612f7a90919063ffffffff16565b6125f1828461208990919063ffffffff16565b11156125fc57600080fd5b505b600061260930611213565b9050601460159054906101000a900460ff161580156126765750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561268c575060148054906101000a900460ff165b15612781576000811115612752576126ec60646126de600d546126d0601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611213565b612f6490919063ffffffff16565b612f7a90919063ffffffff16565b811115612748576127456064612737600d54612729601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611213565b612f6490919063ffffffff16565b612f7a90919063ffffffff16565b90505b61275181612b20565b5b6000479050600e5481111561277f5761277e612779600e544761286190919063ffffffff16565b612877565b5b505b505b600060019050601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061282a5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561283457600090505b8061284257612841612f90565b5b61284d848484612fd3565b8061285b5761285a61321c565b5b50505050565b6000818361286f919061401c565b905092915050565b600080600061288584613247565b9250925092506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516128d390614081565b60006040518083038185875af1925050503d8060008114612910576040519150601f19603f3d011682016040523d82523d6000602084013e612915565b606091505b5050809150508061292557600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161296b90614081565b60006040518083038185875af1925050503d80600081146129a8576040519150601f19603f3d011682016040523d82523d6000602084013e6129ad565b606091505b505080915050806129bd57600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612a0390614081565b60006040518083038185875af1925050503d8060008114612a40576040519150601f19603f3d011682016040523d82523d6000602084013e612a45565b606091505b50508091505080612a5557600080fd5b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612b5857612b576136a8565b5b604051908082528060200260200182016040528015612b865781602001602082028036833780820191505090505b5090503081600081518110612b9e57612b9d6138e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c699190613a9a565b81600181518110612c7d57612c7c6138e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ce430601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d99565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d48959493929190614154565b600060405180830381600087803b158015612d6257600080fd5b505af1158015612d76573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0090614220565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e70906142b2565b60405180910390fd5b80601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f57919061350f565b60405180910390a3505050565b60008183612f7291906142d2565b905092915050565b60008183612f88919061435b565b905092915050565b600154600981905550600354600b81905550600254600a81905550600060018190555060006003819055506000600281905550612fcb6120a7565b600481905550565b61302581601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286190919063ffffffff16565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613073826132e5565b90506130d9816130cb84601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208990919063ffffffff16565b61286190919063ffffffff16565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061316e81601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208990919063ffffffff16565b601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161320e919061350f565b60405180910390a350505050565b600954600181905550600b54600381905550600a5460028190555061323f6120a7565b600481905550565b60008060008061327660045461326860025488612f6490919063ffffffff16565b612f7a90919063ffffffff16565b905060006132a360045461329560015489612f6490919063ffffffff16565b612f7a90919063ffffffff16565b905060006132d06004546132c26003548a612f6490919063ffffffff16565b612f7a90919063ffffffff16565b90508282829550955095505050509193909250565b60008061331c6c0c9f2c9cd04674edea4000000061330e60045486612f6490919063ffffffff16565b612f7a90919063ffffffff16565b905080915050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613361578082015181840152602081019050613346565b83811115613370576000848401525b50505050565b6000601f19601f8301169050919050565b600061339282613327565b61339c8185613332565b93506133ac818560208601613343565b6133b581613376565b840191505092915050565b600060208201905081810360008301526133da8184613387565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613421826133f6565b9050919050565b61343181613416565b811461343c57600080fd5b50565b60008135905061344e81613428565b92915050565b6000819050919050565b61346781613454565b811461347257600080fd5b50565b6000813590506134848161345e565b92915050565b600080604083850312156134a1576134a06133ec565b5b60006134af8582860161343f565b92505060206134c085828601613475565b9150509250929050565b60008115159050919050565b6134df816134ca565b82525050565b60006020820190506134fa60008301846134d6565b92915050565b61350981613454565b82525050565b60006020820190506135246000830184613500565b92915050565b6000602082840312156135405761353f6133ec565b5b600061354e84828501613475565b91505092915050565b6000613562826133f6565b9050919050565b61357281613557565b811461357d57600080fd5b50565b60008135905061358f81613569565b92915050565b6000602082840312156135ab576135aa6133ec565b5b60006135b984828501613580565b91505092915050565b6000806000606084860312156135db576135da6133ec565b5b60006135e98682870161343f565b93505060206135fa8682870161343f565b925050604061360b86828701613475565b9150509250925092565b600060ff82169050919050565b61362b81613615565b82525050565b60006020820190506136466000830184613622565b92915050565b600060208284031215613662576136616133ec565b5b60006136708482850161343f565b91505092915050565b61368281613416565b82525050565b600060208201905061369d6000830184613679565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6136e082613376565b810181811067ffffffffffffffff821117156136ff576136fe6136a8565b5b80604052505050565b60006137126133e2565b905061371e82826136d7565b919050565b600067ffffffffffffffff82111561373e5761373d6136a8565b5b602082029050602081019050919050565b600080fd5b600061376761376284613723565b613708565b9050808382526020820190506020840283018581111561378a5761378961374f565b5b835b818110156137b3578061379f888261343f565b84526020840193505060208101905061378c565b5050509392505050565b600082601f8301126137d2576137d16136a3565b5b81356137e2848260208601613754565b91505092915050565b600060208284031215613801576138006133ec565b5b600082013567ffffffffffffffff81111561381f5761381e6133f1565b5b61382b848285016137bd565b91505092915050565b6000806040838503121561384b5761384a6133ec565b5b60006138598582860161343f565b925050602061386a8582860161343f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138aa602083613332565b91506138b582613874565b602082019050919050565b600060208201905081810360008301526138d98161389d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061394982613454565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561397c5761397b61390f565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006139e3602683613332565b91506139ee82613987565b604082019050919050565b60006020820190508181036000830152613a12816139d6565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613a4f601783613332565b9150613a5a82613a19565b602082019050919050565b60006020820190508181036000830152613a7e81613a42565b9050919050565b600081519050613a9481613428565b92915050565b600060208284031215613ab057613aaf6133ec565b5b6000613abe84828501613a85565b91505092915050565b6000604082019050613adc6000830185613679565b613ae96020830184613679565b9392505050565b6000819050919050565b6000819050919050565b6000613b1f613b1a613b1584613af0565b613afa565b613454565b9050919050565b613b2f81613b04565b82525050565b600060c082019050613b4a6000830189613679565b613b576020830188613500565b613b646040830187613b26565b613b716060830186613b26565b613b7e6080830185613679565b613b8b60a0830184613500565b979650505050505050565b600081519050613ba58161345e565b92915050565b600080600060608486031215613bc457613bc36133ec565b5b6000613bd286828701613b96565b9350506020613be386828701613b96565b9250506040613bf486828701613b96565b9150509250925092565b6000604082019050613c136000830185613679565b613c206020830184613500565b9392505050565b613c30816134ca565b8114613c3b57600080fd5b50565b600081519050613c4d81613c27565b92915050565b600060208284031215613c6957613c686133ec565b5b6000613c7784828501613c3e565b91505092915050565b6000613c8b82613454565b9150613c9683613454565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ccb57613cca61390f565b5b828201905092915050565b7f5b736d696e656d5d3a207472616e736665722066726f6d20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000613d32602883613332565b9150613d3d82613cd6565b604082019050919050565b60006020820190508181036000830152613d6181613d25565b9050919050565b7f5b736d696e656d5d3a207472616e7366657220746f20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613dc4602683613332565b9150613dcf82613d68565b604082019050919050565b60006020820190508181036000830152613df381613db7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e56602983613332565b9150613e6182613dfa565b604082019050919050565b60006020820190508181036000830152613e8581613e49565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000613ee8602883613332565b9150613ef382613e8c565b604082019050919050565b60006020820190508181036000830152613f1781613edb565b9050919050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b6000613f54600c83613332565b9150613f5f82613f1e565b602082019050919050565b60006020820190508181036000830152613f8381613f47565b9050919050565b7f5b736d696e656d5d3a2054726164696e67206e6f74207374617274656420796560008201527f742e000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fe6602283613332565b9150613ff182613f8a565b604082019050919050565b6000602082019050818103600083015261401581613fd9565b9050919050565b600061402782613454565b915061403283613454565b9250828210156140455761404461390f565b5b828203905092915050565b600081905092915050565b50565b600061406b600083614050565b91506140768261405b565b600082019050919050565b600061408c8261405e565b9150819050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140cb81613416565b82525050565b60006140dd83836140c2565b60208301905092915050565b6000602082019050919050565b600061410182614096565b61410b81856140a1565b9350614116836140b2565b8060005b8381101561414757815161412e88826140d1565b9750614139836140e9565b92505060018101905061411a565b5085935050505092915050565b600060a0820190506141696000830188613500565b6141766020830187613b26565b818103604083015261418881866140f6565b90506141976060830185613679565b6141a46080830184613500565b9695505050505050565b7f5b736d696e656d5d3a20617070726f76652066726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b600061420a602783613332565b9150614215826141ae565b604082019050919050565b60006020820190508181036000830152614239816141fd565b9050919050565b7f5b736d696e656d5d3a20617070726f766520746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061429c602583613332565b91506142a782614240565b604082019050919050565b600060208201905081810360008301526142cb8161428f565b9050919050565b60006142dd82613454565b91506142e883613454565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143215761432061390f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061436682613454565b915061437183613454565b9250826143815761438061432c565b5b82820490509291505056fea2646970667358221220f0ea150fd3f751edb12366e4b966f99fc3907dc25308b54a48931d8d91137ab164736f6c634300080c00330000000000000000000000002f9882554dc40a15322439afdefedc9ebbd7db1900000000000000000000000037866b3e9bacd4f766516486f7a303a8c9610f54000000000000000000000000f1efa07a63289162b6fc3e173f1b295f9c1ec1be

Deployed Bytecode

0x6080604052600436106101d15760003560e01c8063881dce60116100f7578063cf0848f711610095578063f2fde38b11610064578063f2fde38b14610665578063f7d071811461068e578063fa9ad57f146106b7578063fcfff16f146106e0576101d8565b8063cf0848f7146105ad578063d543dbeb146105d6578063dd62ed3e146105ff578063dff4474e1461063c576101d8565b806395d89b41116100d157806395d89b41146104f3578063a9059cbb1461051e578063aa0531751461055b578063b515566a14610584576101d8565b8063881dce60146104765780638da5cb5b1461049f5780638efbc0d8146104ca576101d8565b80633bbac5791161016f578063628554fa1161013e578063628554fa146103e25780636fc3eaec1461040b57806370a0823114610422578063715018a61461045f576101d8565b80633bbac5791461032a578063437823ec146103675780635d098b3814610390578063625e764c146103b9576101d8565b80631c75b6b2116101ab5780631c75b6b2146102705780631f53ac021461029957806323b872dd146102c2578063313ce567146102ff576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f26106f7565b6040516101ff91906133c0565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a919061348a565b610734565b60405161023c91906134e5565b60405180910390f35b34801561025157600080fd5b5061025a6108ae565b604051610267919061350f565b60405180910390f35b34801561027c57600080fd5b506102976004803603810190610292919061352a565b6108c3565b005b3480156102a557600080fd5b506102c060048036038101906102bb9190613595565b610957565b005b3480156102ce57600080fd5b506102e960048036038101906102e491906135c2565b610ae9565b6040516102f691906134e5565b60405180910390f35b34801561030b57600080fd5b50610314610c98565b6040516103219190613631565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c919061364c565b610ca1565b60405161035e91906134e5565b60405180910390f35b34801561037357600080fd5b5061038e6004803603810190610389919061364c565b610cf7565b005b34801561039c57600080fd5b506103b760048036038101906103b29190613595565b610dce565b005b3480156103c557600080fd5b506103e060048036038101906103db919061352a565b610f60565b005b3480156103ee57600080fd5b5061040960048036038101906104049190613595565b610ff4565b005b34801561041757600080fd5b50610420611186565b005b34801561042e57600080fd5b506104496004803603810190610444919061364c565b611213565b604051610456919061350f565b60405180910390f35b34801561046b57600080fd5b5061047461125c565b005b34801561048257600080fd5b5061049d6004803603810190610498919061352a565b6112e4565b005b3480156104ab57600080fd5b506104b4611381565b6040516104c19190613688565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec919061352a565b6113aa565b005b3480156104ff57600080fd5b50610508611430565b60405161051591906133c0565b60405180910390f35b34801561052a57600080fd5b506105456004803603810190610540919061348a565b61146d565b60405161055291906134e5565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d919061352a565b61148b565b005b34801561059057600080fd5b506105ab60048036038101906105a691906137eb565b611511565b005b3480156105b957600080fd5b506105d460048036038101906105cf9190613595565b611708565b005b3480156105e257600080fd5b506105fd60048036038101906105f8919061352a565b6117df565b005b34801561060b57600080fd5b5061062660048036038101906106219190613834565b611865565b604051610633919061350f565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e919061352a565b6118ec565b005b34801561067157600080fd5b5061068c6004803603810190610687919061364c565b611972565b005b34801561069a57600080fd5b506106b560048036038101906106b0919061364c565b611a6a565b005b3480156106c357600080fd5b506106de60048036038101906106d9919061352a565b611b41565b005b3480156106ec57600080fd5b506106f5611bd5565b005b60606040518060400160405280600c81526020017f536d696e656d20546f6b656e0000000000000000000000000000000000000000815250905090565b60008073ffffffffffffffffffffffffffffffffffffffff1661075561209f565b73ffffffffffffffffffffffffffffffffffffffff16141561077657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107b057600080fd5b81601160006107bd61209f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1661085761209f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161089c919061350f565b60405180910390a36001905092915050565b60006c0c9f2c9cd04674edea40000000905090565b6108cb61209f565b73ffffffffffffffffffffffffffffffffffffffff166108e9611381565b73ffffffffffffffffffffffffffffffffffffffff161461093f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610936906138c0565b60405180910390fd5b8060038190555061094e6120a7565b60048190555050565b61095f61209f565b73ffffffffffffffffffffffffffffffffffffffff1661097d611381565b73ffffffffffffffffffffffffffffffffffffffff16146109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca906138c0565b60405180910390fd5b600060126000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff16610b0a61209f565b73ffffffffffffffffffffffffffffffffffffffff161415610b2b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610b6557600080fd5b610b708484846120d9565b610c0682601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bbd61209f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286190919063ffffffff16565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c4f61209f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b60006012905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610cff61209f565b73ffffffffffffffffffffffffffffffffffffffff16610d1d611381565b73ffffffffffffffffffffffffffffffffffffffff1614610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a906138c0565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610dd661209f565b73ffffffffffffffffffffffffffffffffffffffff16610df4611381565b73ffffffffffffffffffffffffffffffffffffffff1614610e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e41906138c0565b60405180910390fd5b600060126000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610f6861209f565b73ffffffffffffffffffffffffffffffffffffffff16610f86611381565b73ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd3906138c0565b60405180910390fd5b80600181905550610feb6120a7565b60048190555050565b610ffc61209f565b73ffffffffffffffffffffffffffffffffffffffff1661101a611381565b73ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611067906138c0565b60405180910390fd5b600060126000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61118e61209f565b73ffffffffffffffffffffffffffffffffffffffff166111ac611381565b73ffffffffffffffffffffffffffffffffffffffff1614611202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f9906138c0565b60405180910390fd5b600047905061121081612877565b50565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61126461209f565b73ffffffffffffffffffffffffffffffffffffffff16611282611381565b73ffffffffffffffffffffffffffffffffffffffff16146112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf906138c0565b60405180910390fd5b6112e26000612a5c565b565b6112ec61209f565b73ffffffffffffffffffffffffffffffffffffffff1661130a611381565b73ffffffffffffffffffffffffffffffffffffffff1614611360576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611357906138c0565b60405180910390fd5b61136930611213565b81111561137557600080fd5b61137e81612b20565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113b261209f565b73ffffffffffffffffffffffffffffffffffffffff166113d0611381565b73ffffffffffffffffffffffffffffffffffffffff1614611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141d906138c0565b60405180910390fd5b80600e8190555050565b60606040518060400160405280600481526020017f534d4e4d00000000000000000000000000000000000000000000000000000000815250905090565b600061148161147a61209f565b84846120d9565b6001905092915050565b61149361209f565b73ffffffffffffffffffffffffffffffffffffffff166114b1611381565b73ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe906138c0565b60405180910390fd5b80600d8190555050565b61151961209f565b73ffffffffffffffffffffffffffffffffffffffff16611537611381565b73ffffffffffffffffffffffffffffffffffffffff161461158d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611584906138c0565b60405180910390fd5b60005b815181101561170457601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106115e5576115e46138e0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156116795750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110611658576116576138e0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156116f1576001600f6000848481518110611697576116966138e0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806116fc9061393e565b915050611590565b5050565b61171061209f565b73ffffffffffffffffffffffffffffffffffffffff1661172e611381565b73ffffffffffffffffffffffffffffffffffffffff1614611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177b906138c0565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117e761209f565b73ffffffffffffffffffffffffffffffffffffffff16611805611381565b73ffffffffffffffffffffffffffffffffffffffff161461185b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611852906138c0565b60405180910390fd5b8060058190555050565b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6118f461209f565b73ffffffffffffffffffffffffffffffffffffffff16611912611381565b73ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f906138c0565b60405180910390fd5b80600c8190555050565b61197a61209f565b73ffffffffffffffffffffffffffffffffffffffff16611998611381565b73ffffffffffffffffffffffffffffffffffffffff16146119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e5906138c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a55906139f9565b60405180910390fd5b611a6781612a5c565b50565b611a7261209f565b73ffffffffffffffffffffffffffffffffffffffff16611a90611381565b73ffffffffffffffffffffffffffffffffffffffff1614611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add906138c0565b60405180910390fd5b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611b4961209f565b73ffffffffffffffffffffffffffffffffffffffff16611b67611381565b73ffffffffffffffffffffffffffffffffffffffff1614611bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb4906138c0565b60405180910390fd5b80600281905550611bcc6120a7565b60048190555050565b611bdd61209f565b73ffffffffffffffffffffffffffffffffffffffff16611bfb611381565b73ffffffffffffffffffffffffffffffffffffffff1614611c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c48906138c0565b60405180910390fd5b60148054906101000a900460ff1615611c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9690613a65565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611d3330601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166c0c9f2c9cd04674edea40000000612d99565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da29190613a9a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2d9190613a9a565b6040518363ffffffff1660e01b8152600401611e4a929190613ac7565b6020604051808303816000875af1158015611e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8d9190613a9a565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611f1630611213565b600080611f21611381565b426040518863ffffffff1660e01b8152600401611f4396959493929190613b35565b60606040518083038185885af1158015611f61573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f869190613bab565b505050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612028929190613bfe565b6020604051808303816000875af1158015612047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206b9190613c53565b5060016014806101000a81548160ff02191690831515021790555050565b600081836120979190613c80565b905092915050565b600033905090565b60006120d46003546120c660015460025461208990919063ffffffff16565b61208990919063ffffffff16565b905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214090613d48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b090613dda565b60405180910390fd5b600081116121fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f390613e6c565b60405180910390fd5b612204611381565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122725750612242611381565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561278357601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561231b5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561236657600554811115612365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235c90613efe565b60405180910390fd5b5b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561240a5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244090613f6a565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156124f45750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561254a5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125fe5760148054906101000a900460ff1661259c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259390613ffc565b60405180910390fd5b60006125a783611213565b90506125de60646125d0600c546c0c9f2c9cd04674edea40000000612f6490919063ffffffff16565b612f7a90919063ffffffff16565b6125f1828461208990919063ffffffff16565b11156125fc57600080fd5b505b600061260930611213565b9050601460159054906101000a900460ff161580156126765750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561268c575060148054906101000a900460ff165b15612781576000811115612752576126ec60646126de600d546126d0601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611213565b612f6490919063ffffffff16565b612f7a90919063ffffffff16565b811115612748576127456064612737600d54612729601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611213565b612f6490919063ffffffff16565b612f7a90919063ffffffff16565b90505b61275181612b20565b5b6000479050600e5481111561277f5761277e612779600e544761286190919063ffffffff16565b612877565b5b505b505b600060019050601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061282a5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561283457600090505b8061284257612841612f90565b5b61284d848484612fd3565b8061285b5761285a61321c565b5b50505050565b6000818361286f919061401c565b905092915050565b600080600061288584613247565b9250925092506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16846040516128d390614081565b60006040518083038185875af1925050503d8060008114612910576040519150601f19603f3d011682016040523d82523d6000602084013e612915565b606091505b5050809150508061292557600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161296b90614081565b60006040518083038185875af1925050503d80600081146129a8576040519150601f19603f3d011682016040523d82523d6000602084013e6129ad565b606091505b505080915050806129bd57600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612a0390614081565b60006040518083038185875af1925050503d8060008114612a40576040519150601f19603f3d011682016040523d82523d6000602084013e612a45565b606091505b50508091505080612a5557600080fd5b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612b5857612b576136a8565b5b604051908082528060200260200182016040528015612b865781602001602082028036833780820191505090505b5090503081600081518110612b9e57612b9d6138e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c699190613a9a565b81600181518110612c7d57612c7c6138e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ce430601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d99565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d48959493929190614154565b600060405180830381600087803b158015612d6257600080fd5b505af1158015612d76573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0090614220565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e70906142b2565b60405180910390fd5b80601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f57919061350f565b60405180910390a3505050565b60008183612f7291906142d2565b905092915050565b60008183612f88919061435b565b905092915050565b600154600981905550600354600b81905550600254600a81905550600060018190555060006003819055506000600281905550612fcb6120a7565b600481905550565b61302581601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286190919063ffffffff16565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613073826132e5565b90506130d9816130cb84601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208990919063ffffffff16565b61286190919063ffffffff16565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061316e81601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208990919063ffffffff16565b601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161320e919061350f565b60405180910390a350505050565b600954600181905550600b54600381905550600a5460028190555061323f6120a7565b600481905550565b60008060008061327660045461326860025488612f6490919063ffffffff16565b612f7a90919063ffffffff16565b905060006132a360045461329560015489612f6490919063ffffffff16565b612f7a90919063ffffffff16565b905060006132d06004546132c26003548a612f6490919063ffffffff16565b612f7a90919063ffffffff16565b90508282829550955095505050509193909250565b60008061331c6c0c9f2c9cd04674edea4000000061330e60045486612f6490919063ffffffff16565b612f7a90919063ffffffff16565b905080915050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613361578082015181840152602081019050613346565b83811115613370576000848401525b50505050565b6000601f19601f8301169050919050565b600061339282613327565b61339c8185613332565b93506133ac818560208601613343565b6133b581613376565b840191505092915050565b600060208201905081810360008301526133da8184613387565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613421826133f6565b9050919050565b61343181613416565b811461343c57600080fd5b50565b60008135905061344e81613428565b92915050565b6000819050919050565b61346781613454565b811461347257600080fd5b50565b6000813590506134848161345e565b92915050565b600080604083850312156134a1576134a06133ec565b5b60006134af8582860161343f565b92505060206134c085828601613475565b9150509250929050565b60008115159050919050565b6134df816134ca565b82525050565b60006020820190506134fa60008301846134d6565b92915050565b61350981613454565b82525050565b60006020820190506135246000830184613500565b92915050565b6000602082840312156135405761353f6133ec565b5b600061354e84828501613475565b91505092915050565b6000613562826133f6565b9050919050565b61357281613557565b811461357d57600080fd5b50565b60008135905061358f81613569565b92915050565b6000602082840312156135ab576135aa6133ec565b5b60006135b984828501613580565b91505092915050565b6000806000606084860312156135db576135da6133ec565b5b60006135e98682870161343f565b93505060206135fa8682870161343f565b925050604061360b86828701613475565b9150509250925092565b600060ff82169050919050565b61362b81613615565b82525050565b60006020820190506136466000830184613622565b92915050565b600060208284031215613662576136616133ec565b5b60006136708482850161343f565b91505092915050565b61368281613416565b82525050565b600060208201905061369d6000830184613679565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6136e082613376565b810181811067ffffffffffffffff821117156136ff576136fe6136a8565b5b80604052505050565b60006137126133e2565b905061371e82826136d7565b919050565b600067ffffffffffffffff82111561373e5761373d6136a8565b5b602082029050602081019050919050565b600080fd5b600061376761376284613723565b613708565b9050808382526020820190506020840283018581111561378a5761378961374f565b5b835b818110156137b3578061379f888261343f565b84526020840193505060208101905061378c565b5050509392505050565b600082601f8301126137d2576137d16136a3565b5b81356137e2848260208601613754565b91505092915050565b600060208284031215613801576138006133ec565b5b600082013567ffffffffffffffff81111561381f5761381e6133f1565b5b61382b848285016137bd565b91505092915050565b6000806040838503121561384b5761384a6133ec565b5b60006138598582860161343f565b925050602061386a8582860161343f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138aa602083613332565b91506138b582613874565b602082019050919050565b600060208201905081810360008301526138d98161389d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061394982613454565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561397c5761397b61390f565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006139e3602683613332565b91506139ee82613987565b604082019050919050565b60006020820190508181036000830152613a12816139d6565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613a4f601783613332565b9150613a5a82613a19565b602082019050919050565b60006020820190508181036000830152613a7e81613a42565b9050919050565b600081519050613a9481613428565b92915050565b600060208284031215613ab057613aaf6133ec565b5b6000613abe84828501613a85565b91505092915050565b6000604082019050613adc6000830185613679565b613ae96020830184613679565b9392505050565b6000819050919050565b6000819050919050565b6000613b1f613b1a613b1584613af0565b613afa565b613454565b9050919050565b613b2f81613b04565b82525050565b600060c082019050613b4a6000830189613679565b613b576020830188613500565b613b646040830187613b26565b613b716060830186613b26565b613b7e6080830185613679565b613b8b60a0830184613500565b979650505050505050565b600081519050613ba58161345e565b92915050565b600080600060608486031215613bc457613bc36133ec565b5b6000613bd286828701613b96565b9350506020613be386828701613b96565b9250506040613bf486828701613b96565b9150509250925092565b6000604082019050613c136000830185613679565b613c206020830184613500565b9392505050565b613c30816134ca565b8114613c3b57600080fd5b50565b600081519050613c4d81613c27565b92915050565b600060208284031215613c6957613c686133ec565b5b6000613c7784828501613c3e565b91505092915050565b6000613c8b82613454565b9150613c9683613454565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ccb57613cca61390f565b5b828201905092915050565b7f5b736d696e656d5d3a207472616e736665722066726f6d20746865207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000613d32602883613332565b9150613d3d82613cd6565b604082019050919050565b60006020820190508181036000830152613d6181613d25565b9050919050565b7f5b736d696e656d5d3a207472616e7366657220746f20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613dc4602683613332565b9150613dcf82613d68565b604082019050919050565b60006020820190508181036000830152613df381613db7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e56602983613332565b9150613e6182613dfa565b604082019050919050565b60006020820190508181036000830152613e8581613e49565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000613ee8602883613332565b9150613ef382613e8c565b604082019050919050565b60006020820190508181036000830152613f1781613edb565b9050919050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b6000613f54600c83613332565b9150613f5f82613f1e565b602082019050919050565b60006020820190508181036000830152613f8381613f47565b9050919050565b7f5b736d696e656d5d3a2054726164696e67206e6f74207374617274656420796560008201527f742e000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fe6602283613332565b9150613ff182613f8a565b604082019050919050565b6000602082019050818103600083015261401581613fd9565b9050919050565b600061402782613454565b915061403283613454565b9250828210156140455761404461390f565b5b828203905092915050565b600081905092915050565b50565b600061406b600083614050565b91506140768261405b565b600082019050919050565b600061408c8261405e565b9150819050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140cb81613416565b82525050565b60006140dd83836140c2565b60208301905092915050565b6000602082019050919050565b600061410182614096565b61410b81856140a1565b9350614116836140b2565b8060005b8381101561414757815161412e88826140d1565b9750614139836140e9565b92505060018101905061411a565b5085935050505092915050565b600060a0820190506141696000830188613500565b6141766020830187613b26565b818103604083015261418881866140f6565b90506141976060830185613679565b6141a46080830184613500565b9695505050505050565b7f5b736d696e656d5d3a20617070726f76652066726f6d20746865207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b600061420a602783613332565b9150614215826141ae565b604082019050919050565b60006020820190508181036000830152614239816141fd565b9050919050565b7f5b736d696e656d5d3a20617070726f766520746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061429c602583613332565b91506142a782614240565b604082019050919050565b600060208201905081810360008301526142cb8161428f565b9050919050565b60006142dd82613454565b91506142e883613454565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143215761432061390f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061436682613454565b915061437183613454565b9250826143815761438061432c565b5b82820490509291505056fea2646970667358221220f0ea150fd3f751edb12366e4b966f99fc3907dc25308b54a48931d8d91137ab164736f6c634300080c0033

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

0000000000000000000000002f9882554dc40a15322439afdefedc9ebbd7db1900000000000000000000000037866b3e9bacd4f766516486f7a303a8c9610f54000000000000000000000000f1efa07a63289162b6fc3e173f1b295f9c1ec1be

-----Decoded View---------------
Arg [0] : devAddress (address): 0x2F9882554dc40a15322439AFdeFedC9Ebbd7dB19
Arg [1] : marketingAddress (address): 0x37866b3e9BAcD4f766516486f7a303a8c9610f54
Arg [2] : sminemAddress (address): 0xF1EfA07A63289162b6fC3E173F1B295f9C1eC1BE

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000002f9882554dc40a15322439afdefedc9ebbd7db19
Arg [1] : 00000000000000000000000037866b3e9bacd4f766516486f7a303a8c9610f54
Arg [2] : 000000000000000000000000f1efa07a63289162b6fc3e173f1b295f9c1ec1be


Deployed Bytecode Sourcemap

19247:11149:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21889:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22404:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22163:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28542:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28024:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22679:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22075:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30291:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27258:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27502:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28258:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27772:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29604:153;;;;;;;;;;;;;:::i;:::-;;23010:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12502:103;;;;;;;;;;;;;:::i;:::-;;29440:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11851:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30096:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21980:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22250:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29975:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29173:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27376:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29762:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23123:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29863:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12760:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30188:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28403:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21162:688;;;;;;;;;;;;;:::i;:::-;;21889:83;21926:13;21959:5;;;;;;;;;;;;;;;;;21952:12;;21889:83;:::o;22404:270::-;22476:4;22519:1;22495:26;;:12;:10;:12::i;:::-;:26;;;;22487:35;;;;;;22554:1;22535:21;;:7;:21;;;;22527:30;;;;;;22598:6;22562:10;:24;22573:12;:10;:12::i;:::-;22562:24;;;;;;;;;;;;;;;:33;22587:7;22562:33;;;;;;;;;;;;;;;:42;;;;22637:7;22614:39;;22623:12;:10;:12::i;:::-;22614:39;;;22646:6;22614:39;;;;;;:::i;:::-;;;;;;;;22665:4;22658:11;;22404:270;;;;:::o;22163:82::-;22207:7;19509:13;22221:19;;22163:82;:::o;28542:128::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28614:3:::1;28604:7;:13;;;;28641:21;:19;:21::i;:::-;28622:16;:40;;;;28542:128:::0;:::o;28024:229::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28145:5:::1;28111:18;:31;28130:11;;;;;;;;;;;28111:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;28175:16;28161:11;;:30;;;;;;;;;;;;;;;;;;28241:4;28202:18;:36;28221:16;28202:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;28024:229:::0;:::o;22679:323::-;22774:4;22817:1;22793:26;;:12;:10;:12::i;:::-;:26;;;;22785:35;;;;;;22851:1;22833:20;;:6;:20;;;;22825:29;;;;;;22859:36;22869:6;22877:9;22888:6;22859:9;:36::i;:::-;22935:44;22972:6;22935:10;:18;22946:6;22935:18;;;;;;;;;;;;;;;:32;22954:12;:10;:12::i;:::-;22935:32;;;;;;;;;;;;;;;;:36;;:44;;;;:::i;:::-;22900:10;:18;22911:6;22900:18;;;;;;;;;;;;;;;:32;22919:12;:10;:12::i;:::-;22900:32;;;;;;;;;;;;;;;:79;;;;22993:4;22986:11;;22679:323;;;;;:::o;22075:83::-;22116:5;19460:2;22134:16;;22075:83;:::o;30291:98::-;30342:4;30366:8;:15;30375:5;30366:15;;;;;;;;;;;;;;;;;;;;;;;;;30359:22;;30291:98;;;:::o;27258:113::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27359:4:::1;27329:18;:27;27348:7;27329:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;27258:113:::0;:::o;27502:265::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27641:5:::1;27601:18;:37;27620:17;;;;;;;;;;;27601:37;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;27677:22;27657:17;;:42;;;;;;;;;;;;;;;;;;27755:4;27710:18;:42;27729:22;27710:42;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;27502:265:::0;:::o;28258:140::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28342:3:::1;28326:13;:19;;;;28369:21;:19;:21::i;:::-;28350:16;:40;;;;28258:140:::0;:::o;27772:247::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27902:5:::1;27865:18;:34;27884:14;;;;;;;;;;;27865:34;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;27935:19;27918:14;;:36;;;;;;;;;;;;;;;;;;28007:4;27965:18;:39;27984:19;27965:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;27772:247:::0;:::o;29604:153::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29656:26:::1;29685:21;29656:50;;29717:32;29730:18;29717:12;:32::i;:::-;29645:112;29604:153::o:0;23010:108::-;23067:7;23091:10;:19;23102:7;23091:19;;;;;;;;;;;;;;;;23084:26;;23010:108;;;:::o;12502:103::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12567:30:::1;12594:1;12567:18;:30::i;:::-;12502:103::o:0;29440:152::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29524:24:::1;29542:4;29524:9;:24::i;:::-;29514:6;:34;;29506:43;;;::::0;::::1;;29560:24;29577:6;29560:16;:24::i;:::-;29440:152:::0;:::o;11851:87::-;11897:7;11924:6;;;;;;;;;;;11917:13;;11851:87;:::o;30096:85::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30168:5:::1;30159:6;:14;;;;30096:85:::0;:::o;21980:87::-;22019:13;22052:7;;;;;;;;;;;;;;;;;22045:14;;21980:87;:::o;22250:149::-;22325:4;22336:42;22346:12;:10;:12::i;:::-;22360:9;22371:6;22336:9;:42::i;:::-;22390:4;22383:11;;22250:149;;;;:::o;29975:116::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30080:3:::1;30052:25;:31;;;;29975:116:::0;:::o;29173:262::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29240:6:::1;29235:193;29256:4;:11;29252:1;:15;29235:193;;;29304:13;;;;;;;;;;;29293:24;;:4;29298:1;29293:7;;;;;;;;:::i;:::-;;;;;;;;:24;;;;:63;;;;;29340:15;;;;;;;;;;;29321:35;;:4;29326:1;29321:7;;;;;;;;:::i;:::-;;;;;;;;:35;;;;29293:63;29289:128;;;29397:4;29377:8;:17;29386:4;29391:1;29386:7;;;;;;;;:::i;:::-;;;;;;;;29377:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;29289:128;29269:3;;;;;:::i;:::-;;;;29235:193;;;;29173:262:::0;:::o;27376:121::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27484:5:::1;27454:18;:27;27473:7;27454:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;27376:121:::0;:::o;29762:96::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29847:3:::1;29830:14;:20;;;;29762:96:::0;:::o;23123:124::-;23195:7;23216:10;:17;23227:5;23216:17;;;;;;;;;;;;;;;:26;23234:7;23216:26;;;;;;;;;;;;;;;;23209:33;;23123:124;;;;:::o;29863:107::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29959:3:::1;29934:22;:28;;;;29863:107:::0;:::o;12760:201::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12869:1:::1;12849:22;;:8;:22;;;;12841:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12925:28;12944:8;12925:18;:28::i;:::-;12760:201:::0;:::o;30188:91::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30266:5:::1;30247:8;:16;30256:6;30247:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;30188:91:::0;:::o;28403:134::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28481:3:::1;28468:10;:16;;;;28508:21;:19;:21::i;:::-;28489:16;:40;;;;28403:134:::0;:::o;21162:688::-;12082:12;:10;:12::i;:::-;12071:23;;:7;:5;:7::i;:::-;:23;;;12063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21211:6:::1;::::0;::::1;;;;;;;;21210:7;21202:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;21249:35;21306:42;21249:100;;21378:16;21360:15;;:34;;;;;;;;;;;;;;;;;;21399:63;21416:4;21431:15;;;;;;;;;;;19509:13;21399:8;:63::i;:::-;21501:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21483:56;;;21548:4;21555:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21483:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21467:13;;:112;;;;;;;;;;;;;;;;;;21584:15;;;;;;;;;;;:31;;;21623:21;21659:4;21670:24;21688:4;21670:9;:24::i;:::-;21700:1;21707::::0;21714:7:::1;:5;:7::i;:::-;21727:15;21584:159;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21761:13;;;;;;;;;;;21754:29;;;21792:15;;;;;;;;;;;21810:14;21754:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21841:4;21832:6;::::0;:13:::1;;;;;;;;;;;;;;;;;;21197:653;21162:688::o:0;5737:98::-;5795:7;5826:1;5822;:5;;;;:::i;:::-;5815:12;;5737:98;;;;:::o;10579:::-;10632:7;10659:10;10652:17;;10579:98;:::o;25601:120::-;25653:7;25674:42;25708:7;;25674:29;25689:13;;25674:10;;:14;;:29;;;;:::i;:::-;:33;;:42;;;;:::i;:::-;25667:49;;25601:120;:::o;23252:1823::-;23358:1;23340:20;;:6;:20;;;;23332:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23445:1;23424:23;;:9;:23;;;;23416:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;23518:1;23509:6;:10;23501:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23589:7;:5;:7::i;:::-;23579:17;;:6;:17;;;;:41;;;;;23613:7;:5;:7::i;:::-;23600:20;;:9;:20;;;;23579:41;23576:1230;;;23641:18;:29;23660:9;23641:29;;;;;;;;;;;;;;;;;;;;;;;;;23640:30;:61;;;;;23675:18;:26;23694:6;23675:26;;;;;;;;;;;;;;;;;;;;;;;;;23674:27;23640:61;23637:179;;;23741:14;;23731:6;:24;;23723:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;23637:179;23830:8;:16;23839:6;23830:16;;;;;;;;;;;;;;;;;;;;;;;;;23829:17;:41;;;;;23851:8;:19;23860:9;23851:19;;;;;;;;;;;;;;;;;;;;;;;;;23850:20;23829:41;23821:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;23916:13;;;;;;;;;;;23906:23;;:6;:23;;;:64;;;;;23954:15;;;;;;;;;;;23933:37;;:9;:37;;;;23906:64;:98;;;;;23975:18;:29;23994:9;23975:29;;;;;;;;;;;;;;;;;;;;;;;;;23974:30;23906:98;23903:321;;;24021:6;;;;;;;;;;24013:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;24073:18;24094:29;24112:9;24094;:29::i;:::-;24073:50;;24167:49;24212:3;24167:40;24184:22;;19509:13;24167:16;;:40;;;;:::i;:::-;:44;;:49;;;;:::i;:::-;24138:25;24149:13;24138:6;:10;;:25;;;;:::i;:::-;:78;;24130:87;;;;;;24006:218;23903:321;24231:28;24262:24;24280:4;24262:9;:24::i;:::-;24231:55;;24298:6;;;;;;;;;;;24297:7;:34;;;;;24318:13;;;;;;;;;;;24308:23;;:6;:23;;;;24297:34;:44;;;;;24335:6;;;;;;;;;;24297:44;24294:507;;;24376:1;24353:20;:24;24350:287;;;24413:64;24473:3;24413:55;24442:25;;24413:24;24423:13;;;;;;;;;;;24413:9;:24::i;:::-;:28;;:55;;;;:::i;:::-;:59;;:64;;;;:::i;:::-;24390:20;:87;24387:197;;;24511:64;24571:3;24511:55;24540:25;;24511:24;24521:13;;;;;;;;;;;24511:9;:24::i;:::-;:28;;:55;;;;:::i;:::-;:59;;:64;;;;:::i;:::-;24488:87;;24387:197;24591:38;24608:20;24591:16;:38::i;:::-;24350:287;24643:26;24672:21;24643:50;;24724:6;;24703:18;:27;24700:95;;;24740:47;24753:33;24779:6;;24753:21;:25;;:33;;;;:::i;:::-;24740:12;:47::i;:::-;24700:95;24343:458;24294:507;23622:1184;23576:1230;24814:12;24829:4;24814:19;;24841:18;:26;24860:6;24841:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;24871:18;:29;24890:9;24871:29;;;;;;;;;;;;;;;;;;;;;;;;;24841:59;24838:79;;;24912:5;24902:15;;24838:79;24928:7;24924:40;;24950:14;:12;:14::i;:::-;24924:40;24975:43;24992:6;25000:9;25011:6;24975:16;:43::i;:::-;25033:7;25029:41;;25055:15;:13;:15::i;:::-;25029:41;23327:1748;23252:1823;;;:::o;6118:98::-;6176:7;6207:1;6203;:5;;;;:::i;:::-;6196:12;;6118:98;;;;:::o;26856:397::-;26908:14;26924;26940;26958:16;26967:6;26958:8;:16::i;:::-;26907:67;;;;;;26979:12;27018:14;;;;;;;;;;;:19;;27045:6;27018:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27004:52;;;;;27069:7;27061:16;;;;;;27102:17;;;;;;;;;;;:22;;27132:6;27102:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27088:55;;;;;27156:7;27148:16;;;;;;27189:11;;;;;;;;;;;:16;;27213:6;27189:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27175:49;;;;;27237:7;27229:16;;;;;;26902:351;;;;26856:397;:::o;13121:191::-;13195:16;13214:6;;;;;;;;;;;13195:25;;13240:8;13231:6;;:17;;;;;;;;;;;;;;;;;;13295:8;13264:40;;13285:8;13264:40;;;;;;;;;;;;13184:128;13121:191;:::o;26364:487::-;20552:4;20543:6;;:13;;;;;;;;;;;;;;;;;;26442:21:::1;26480:1;26466:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26442:40;;26511:4;26493;26498:1;26493:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;26537:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26527:4;26532:1;26527:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;26572:62;26589:4;26604:15;;;;;;;;;;;26622:11;26572:8;:62::i;:::-;26647:15;;;;;;;;;;;:66;;;26728:11;26754:1;26770:4;26797;26817:15;26647:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26431:420;20588:5:::0;20579:6;;:14;;;;;;;;;;;;;;;;;;26364:487;:::o;26031:328::-;26132:1;26115:19;;:5;:19;;;;26107:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26216:1;26197:21;;:7;:21;;;;26189:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26300:6;26271:10;:17;26282:5;26271:17;;;;;;;;;;;;;;;:26;26289:7;26271:26;;;;;;;;;;;;;;;:35;;;;26338:7;26322:32;;26331:5;26322:32;;;26347:6;26322:32;;;;;;:::i;:::-;;;;;;;;26031:328;;;:::o;6475:98::-;6533:7;6564:1;6560;:5;;;;:::i;:::-;6553:12;;6475:98;;;;:::o;6874:::-;6932:7;6963:1;6959;:5;;;;:::i;:::-;6952:12;;6874:98;;;;:::o;28894:274::-;28955:13;;28931:21;:37;;;;28991:7;;28973:15;:25;;;;29024:10;;29003:18;:31;;;;29063:1;29047:13;:17;;;;29085:1;29075:7;:11;;;;29110:1;29097:10;:14;;;;29139:21;:19;:21::i;:::-;29120:16;:40;;;;28894:274::o;25080:364::-;25191:30;25214:6;25191:10;:18;25202:6;25191:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;25170:10;:18;25181:6;25170:18;;;;;;;;;;;;;;;:51;;;;25226:11;25240:14;25247:6;25240;:14::i;:::-;25226:28;;25283:42;25321:3;25283:33;25309:6;25283:10;:21;25294:9;25283:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;25259:10;:21;25270:9;25259:21;;;;;;;;;;;;;;;:66;;;;25358:34;25388:3;25358:10;:25;25377:4;25358:25;;;;;;;;;;;;;;;;:29;;:34;;;;:::i;:::-;25330:10;:25;25349:4;25330:25;;;;;;;;;;;;;;;:62;;;;25421:9;25404:35;;25413:6;25404:35;;;25432:6;25404:35;;;;;;:::i;:::-;;;;;;;;25165:279;25080:364;;;:::o;28675:214::-;28735:21;;28719:13;:37;;;;28777:15;;28767:7;:25;;;;28816:18;;28803:10;:31;;;;28860:21;:19;:21::i;:::-;28841:16;:40;;;;28675:214::o;25726:300::-;25778:7;25787;25796;25810:11;25824:41;25848:16;;25824:19;25832:10;;25824:3;:7;;:19;;;;:::i;:::-;:23;;:41;;;;:::i;:::-;25810:55;;25870:11;25884:44;25911:16;;25884:22;25892:13;;25884:3;:7;;:22;;;;:::i;:::-;:26;;:44;;;;:::i;:::-;25870:58;;25933:11;25947:38;25968:16;;25947;25955:7;;25947:3;:7;;:16;;;;:::i;:::-;:20;;:38;;;;:::i;:::-;25933:52;;25998:6;26006;26014;25990:31;;;;;;;;;25726:300;;;;;:::o;25449:147::-;25502:7;25516:11;25530:46;19509:13;25530:28;25541:16;;25530:6;:10;;:28;;;;:::i;:::-;:32;;:46;;;;:::i;:::-;25516:60;;25588:3;25581:10;;;25449:147;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:104::-;4226:7;4255:24;4273:5;4255:24;:::i;:::-;4244:35;;4181:104;;;:::o;4291:138::-;4372:32;4398:5;4372:32;:::i;:::-;4365:5;4362:43;4352:71;;4419:1;4416;4409:12;4352:71;4291:138;:::o;4435:155::-;4489:5;4527:6;4514:20;4505:29;;4543:41;4578:5;4543:41;:::i;:::-;4435:155;;;;:::o;4596:345::-;4663:6;4712:2;4700:9;4691:7;4687:23;4683:32;4680:119;;;4718:79;;:::i;:::-;4680:119;4838:1;4863:61;4916:7;4907:6;4896:9;4892:22;4863:61;:::i;:::-;4853:71;;4809:125;4596:345;;;;:::o;4947:619::-;5024:6;5032;5040;5089:2;5077:9;5068:7;5064:23;5060:32;5057:119;;;5095:79;;:::i;:::-;5057:119;5215:1;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5186:117;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;5470:2;5496:53;5541:7;5532:6;5521:9;5517:22;5496:53;:::i;:::-;5486:63;;5441:118;4947:619;;;;;:::o;5572:86::-;5607:7;5647:4;5640:5;5636:16;5625:27;;5572:86;;;:::o;5664:112::-;5747:22;5763:5;5747:22;:::i;:::-;5742:3;5735:35;5664:112;;:::o;5782:214::-;5871:4;5909:2;5898:9;5894:18;5886:26;;5922:67;5986:1;5975:9;5971:17;5962:6;5922:67;:::i;:::-;5782:214;;;;:::o;6002:329::-;6061:6;6110:2;6098:9;6089:7;6085:23;6081:32;6078:119;;;6116:79;;:::i;:::-;6078:119;6236:1;6261:53;6306:7;6297:6;6286:9;6282:22;6261:53;:::i;:::-;6251:63;;6207:117;6002:329;;;;:::o;6337:118::-;6424:24;6442:5;6424:24;:::i;:::-;6419:3;6412:37;6337:118;;:::o;6461:222::-;6554:4;6592:2;6581:9;6577:18;6569:26;;6605:71;6673:1;6662:9;6658:17;6649:6;6605:71;:::i;:::-;6461:222;;;;:::o;6689:117::-;6798:1;6795;6788:12;6812:180;6860:77;6857:1;6850:88;6957:4;6954:1;6947:15;6981:4;6978:1;6971:15;6998:281;7081:27;7103:4;7081:27;:::i;:::-;7073:6;7069:40;7211:6;7199:10;7196:22;7175:18;7163:10;7160:34;7157:62;7154:88;;;7222:18;;:::i;:::-;7154:88;7262:10;7258:2;7251:22;7041:238;6998:281;;:::o;7285:129::-;7319:6;7346:20;;:::i;:::-;7336:30;;7375:33;7403:4;7395:6;7375:33;:::i;:::-;7285:129;;;:::o;7420:311::-;7497:4;7587:18;7579:6;7576:30;7573:56;;;7609:18;;:::i;:::-;7573:56;7659:4;7651:6;7647:17;7639:25;;7719:4;7713;7709:15;7701:23;;7420:311;;;:::o;7737:117::-;7846:1;7843;7836:12;7877:710;7973:5;7998:81;8014:64;8071:6;8014:64;:::i;:::-;7998:81;:::i;:::-;7989:90;;8099:5;8128:6;8121:5;8114:21;8162:4;8155:5;8151:16;8144:23;;8215:4;8207:6;8203:17;8195:6;8191:30;8244:3;8236:6;8233:15;8230:122;;;8263:79;;:::i;:::-;8230:122;8378:6;8361:220;8395:6;8390:3;8387:15;8361:220;;;8470:3;8499:37;8532:3;8520:10;8499:37;:::i;:::-;8494:3;8487:50;8566:4;8561:3;8557:14;8550:21;;8437:144;8421:4;8416:3;8412:14;8405:21;;8361:220;;;8365:21;7979:608;;7877:710;;;;;:::o;8610:370::-;8681:5;8730:3;8723:4;8715:6;8711:17;8707:27;8697:122;;8738:79;;:::i;:::-;8697:122;8855:6;8842:20;8880:94;8970:3;8962:6;8955:4;8947:6;8943:17;8880:94;:::i;:::-;8871:103;;8687:293;8610:370;;;;:::o;8986:539::-;9070:6;9119:2;9107:9;9098:7;9094:23;9090:32;9087:119;;;9125:79;;:::i;:::-;9087:119;9273:1;9262:9;9258:17;9245:31;9303:18;9295:6;9292:30;9289:117;;;9325:79;;:::i;:::-;9289:117;9430:78;9500:7;9491:6;9480:9;9476:22;9430:78;:::i;:::-;9420:88;;9216:302;8986:539;;;;:::o;9531:474::-;9599:6;9607;9656:2;9644:9;9635:7;9631:23;9627:32;9624:119;;;9662:79;;:::i;:::-;9624:119;9782:1;9807:53;9852:7;9843:6;9832:9;9828:22;9807:53;:::i;:::-;9797:63;;9753:117;9909:2;9935:53;9980:7;9971:6;9960:9;9956:22;9935:53;:::i;:::-;9925:63;;9880:118;9531:474;;;;;:::o;10011:182::-;10151:34;10147:1;10139:6;10135:14;10128:58;10011:182;:::o;10199:366::-;10341:3;10362:67;10426:2;10421:3;10362:67;:::i;:::-;10355:74;;10438:93;10527:3;10438:93;:::i;:::-;10556:2;10551:3;10547:12;10540:19;;10199:366;;;:::o;10571:419::-;10737:4;10775:2;10764:9;10760:18;10752:26;;10824:9;10818:4;10814:20;10810:1;10799:9;10795:17;10788:47;10852:131;10978:4;10852:131;:::i;:::-;10844:139;;10571:419;;;:::o;10996:180::-;11044:77;11041:1;11034:88;11141:4;11138:1;11131:15;11165:4;11162:1;11155:15;11182:180;11230:77;11227:1;11220:88;11327:4;11324:1;11317:15;11351:4;11348:1;11341:15;11368:233;11407:3;11430:24;11448:5;11430:24;:::i;:::-;11421:33;;11476:66;11469:5;11466:77;11463:103;;;11546:18;;:::i;:::-;11463:103;11593:1;11586:5;11582:13;11575:20;;11368:233;;;:::o;11607:225::-;11747:34;11743:1;11735:6;11731:14;11724:58;11816:8;11811:2;11803:6;11799:15;11792:33;11607:225;:::o;11838:366::-;11980:3;12001:67;12065:2;12060:3;12001:67;:::i;:::-;11994:74;;12077:93;12166:3;12077:93;:::i;:::-;12195:2;12190:3;12186:12;12179:19;;11838:366;;;:::o;12210:419::-;12376:4;12414:2;12403:9;12399:18;12391:26;;12463:9;12457:4;12453:20;12449:1;12438:9;12434:17;12427:47;12491:131;12617:4;12491:131;:::i;:::-;12483:139;;12210:419;;;:::o;12635:173::-;12775:25;12771:1;12763:6;12759:14;12752:49;12635:173;:::o;12814:366::-;12956:3;12977:67;13041:2;13036:3;12977:67;:::i;:::-;12970:74;;13053:93;13142:3;13053:93;:::i;:::-;13171:2;13166:3;13162:12;13155:19;;12814:366;;;:::o;13186:419::-;13352:4;13390:2;13379:9;13375:18;13367:26;;13439:9;13433:4;13429:20;13425:1;13414:9;13410:17;13403:47;13467:131;13593:4;13467:131;:::i;:::-;13459:139;;13186:419;;;:::o;13611:143::-;13668:5;13699:6;13693:13;13684:22;;13715:33;13742:5;13715:33;:::i;:::-;13611:143;;;;:::o;13760:351::-;13830:6;13879:2;13867:9;13858:7;13854:23;13850:32;13847:119;;;13885:79;;:::i;:::-;13847:119;14005:1;14030:64;14086:7;14077:6;14066:9;14062:22;14030:64;:::i;:::-;14020:74;;13976:128;13760:351;;;;:::o;14117:332::-;14238:4;14276:2;14265:9;14261:18;14253:26;;14289:71;14357:1;14346:9;14342:17;14333:6;14289:71;:::i;:::-;14370:72;14438:2;14427:9;14423:18;14414:6;14370:72;:::i;:::-;14117:332;;;;;:::o;14455:85::-;14500:7;14529:5;14518:16;;14455:85;;;:::o;14546:60::-;14574:3;14595:5;14588:12;;14546:60;;;:::o;14612:158::-;14670:9;14703:61;14721:42;14730:32;14756:5;14730:32;:::i;:::-;14721:42;:::i;:::-;14703:61;:::i;:::-;14690:74;;14612:158;;;:::o;14776:147::-;14871:45;14910:5;14871:45;:::i;:::-;14866:3;14859:58;14776:147;;:::o;14929:807::-;15178:4;15216:3;15205:9;15201:19;15193:27;;15230:71;15298:1;15287:9;15283:17;15274:6;15230:71;:::i;:::-;15311:72;15379:2;15368:9;15364:18;15355:6;15311:72;:::i;:::-;15393:80;15469:2;15458:9;15454:18;15445:6;15393:80;:::i;:::-;15483;15559:2;15548:9;15544:18;15535:6;15483:80;:::i;:::-;15573:73;15641:3;15630:9;15626:19;15617:6;15573:73;:::i;:::-;15656;15724:3;15713:9;15709:19;15700:6;15656:73;:::i;:::-;14929:807;;;;;;;;;:::o;15742:143::-;15799:5;15830:6;15824:13;15815:22;;15846:33;15873:5;15846:33;:::i;:::-;15742:143;;;;:::o;15891:663::-;15979:6;15987;15995;16044:2;16032:9;16023:7;16019:23;16015:32;16012:119;;;16050:79;;:::i;:::-;16012:119;16170:1;16195:64;16251:7;16242:6;16231:9;16227:22;16195:64;:::i;:::-;16185:74;;16141:128;16308:2;16334:64;16390:7;16381:6;16370:9;16366:22;16334:64;:::i;:::-;16324:74;;16279:129;16447:2;16473:64;16529:7;16520:6;16509:9;16505:22;16473:64;:::i;:::-;16463:74;;16418:129;15891:663;;;;;:::o;16560:332::-;16681:4;16719:2;16708:9;16704:18;16696:26;;16732:71;16800:1;16789:9;16785:17;16776:6;16732:71;:::i;:::-;16813:72;16881:2;16870:9;16866:18;16857:6;16813:72;:::i;:::-;16560:332;;;;;:::o;16898:116::-;16968:21;16983:5;16968:21;:::i;:::-;16961:5;16958:32;16948:60;;17004:1;17001;16994:12;16948:60;16898:116;:::o;17020:137::-;17074:5;17105:6;17099:13;17090:22;;17121:30;17145:5;17121:30;:::i;:::-;17020:137;;;;:::o;17163:345::-;17230:6;17279:2;17267:9;17258:7;17254:23;17250:32;17247:119;;;17285:79;;:::i;:::-;17247:119;17405:1;17430:61;17483:7;17474:6;17463:9;17459:22;17430:61;:::i;:::-;17420:71;;17376:125;17163:345;;;;:::o;17514:305::-;17554:3;17573:20;17591:1;17573:20;:::i;:::-;17568:25;;17607:20;17625:1;17607:20;:::i;:::-;17602:25;;17761:1;17693:66;17689:74;17686:1;17683:81;17680:107;;;17767:18;;:::i;:::-;17680:107;17811:1;17808;17804:9;17797:16;;17514:305;;;;:::o;17825:227::-;17965:34;17961:1;17953:6;17949:14;17942:58;18034:10;18029:2;18021:6;18017:15;18010:35;17825:227;:::o;18058:366::-;18200:3;18221:67;18285:2;18280:3;18221:67;:::i;:::-;18214:74;;18297:93;18386:3;18297:93;:::i;:::-;18415:2;18410:3;18406:12;18399:19;;18058:366;;;:::o;18430:419::-;18596:4;18634:2;18623:9;18619:18;18611:26;;18683:9;18677:4;18673:20;18669:1;18658:9;18654:17;18647:47;18711:131;18837:4;18711:131;:::i;:::-;18703:139;;18430:419;;;:::o;18855:225::-;18995:34;18991:1;18983:6;18979:14;18972:58;19064:8;19059:2;19051:6;19047:15;19040:33;18855:225;:::o;19086:366::-;19228:3;19249:67;19313:2;19308:3;19249:67;:::i;:::-;19242:74;;19325:93;19414:3;19325:93;:::i;:::-;19443:2;19438:3;19434:12;19427:19;;19086:366;;;:::o;19458:419::-;19624:4;19662:2;19651:9;19647:18;19639:26;;19711:9;19705:4;19701:20;19697:1;19686:9;19682:17;19675:47;19739:131;19865:4;19739:131;:::i;:::-;19731:139;;19458:419;;;:::o;19883:228::-;20023:34;20019:1;20011:6;20007:14;20000:58;20092:11;20087:2;20079:6;20075:15;20068:36;19883:228;:::o;20117:366::-;20259:3;20280:67;20344:2;20339:3;20280:67;:::i;:::-;20273:74;;20356:93;20445:3;20356:93;:::i;:::-;20474:2;20469:3;20465:12;20458:19;;20117:366;;;:::o;20489:419::-;20655:4;20693:2;20682:9;20678:18;20670:26;;20742:9;20736:4;20732:20;20728:1;20717:9;20713:17;20706:47;20770:131;20896:4;20770:131;:::i;:::-;20762:139;;20489:419;;;:::o;20914:227::-;21054:34;21050:1;21042:6;21038:14;21031:58;21123:10;21118:2;21110:6;21106:15;21099:35;20914:227;:::o;21147:366::-;21289:3;21310:67;21374:2;21369:3;21310:67;:::i;:::-;21303:74;;21386:93;21475:3;21386:93;:::i;:::-;21504:2;21499:3;21495:12;21488:19;;21147:366;;;:::o;21519:419::-;21685:4;21723:2;21712:9;21708:18;21700:26;;21772:9;21766:4;21762:20;21758:1;21747:9;21743:17;21736:47;21800:131;21926:4;21800:131;:::i;:::-;21792:139;;21519:419;;;:::o;21944:162::-;22084:14;22080:1;22072:6;22068:14;22061:38;21944:162;:::o;22112:366::-;22254:3;22275:67;22339:2;22334:3;22275:67;:::i;:::-;22268:74;;22351:93;22440:3;22351:93;:::i;:::-;22469:2;22464:3;22460:12;22453:19;;22112:366;;;:::o;22484:419::-;22650:4;22688:2;22677:9;22673:18;22665:26;;22737:9;22731:4;22727:20;22723:1;22712:9;22708:17;22701:47;22765:131;22891:4;22765:131;:::i;:::-;22757:139;;22484:419;;;:::o;22909:221::-;23049:34;23045:1;23037:6;23033:14;23026:58;23118:4;23113:2;23105:6;23101:15;23094:29;22909:221;:::o;23136:366::-;23278:3;23299:67;23363:2;23358:3;23299:67;:::i;:::-;23292:74;;23375:93;23464:3;23375:93;:::i;:::-;23493:2;23488:3;23484:12;23477:19;;23136:366;;;:::o;23508:419::-;23674:4;23712:2;23701:9;23697:18;23689:26;;23761:9;23755:4;23751:20;23747:1;23736:9;23732:17;23725:47;23789:131;23915:4;23789:131;:::i;:::-;23781:139;;23508:419;;;:::o;23933:191::-;23973:4;23993:20;24011:1;23993:20;:::i;:::-;23988:25;;24027:20;24045:1;24027:20;:::i;:::-;24022:25;;24066:1;24063;24060:8;24057:34;;;24071:18;;:::i;:::-;24057:34;24116:1;24113;24109:9;24101:17;;23933:191;;;;:::o;24130:147::-;24231:11;24268:3;24253:18;;24130:147;;;;:::o;24283:114::-;;:::o;24403:398::-;24562:3;24583:83;24664:1;24659:3;24583:83;:::i;:::-;24576:90;;24675:93;24764:3;24675:93;:::i;:::-;24793:1;24788:3;24784:11;24777:18;;24403:398;;;:::o;24807:379::-;24991:3;25013:147;25156:3;25013:147;:::i;:::-;25006:154;;25177:3;25170:10;;24807:379;;;:::o;25192:114::-;25259:6;25293:5;25287:12;25277:22;;25192:114;;;:::o;25312:184::-;25411:11;25445:6;25440:3;25433:19;25485:4;25480:3;25476:14;25461:29;;25312:184;;;;:::o;25502:132::-;25569:4;25592:3;25584:11;;25622:4;25617:3;25613:14;25605:22;;25502:132;;;:::o;25640:108::-;25717:24;25735:5;25717:24;:::i;:::-;25712:3;25705:37;25640:108;;:::o;25754:179::-;25823:10;25844:46;25886:3;25878:6;25844:46;:::i;:::-;25922:4;25917:3;25913:14;25899:28;;25754:179;;;;:::o;25939:113::-;26009:4;26041;26036:3;26032:14;26024:22;;25939:113;;;:::o;26088:732::-;26207:3;26236:54;26284:5;26236:54;:::i;:::-;26306:86;26385:6;26380:3;26306:86;:::i;:::-;26299:93;;26416:56;26466:5;26416:56;:::i;:::-;26495:7;26526:1;26511:284;26536:6;26533:1;26530:13;26511:284;;;26612:6;26606:13;26639:63;26698:3;26683:13;26639:63;:::i;:::-;26632:70;;26725:60;26778:6;26725:60;:::i;:::-;26715:70;;26571:224;26558:1;26555;26551:9;26546:14;;26511:284;;;26515:14;26811:3;26804:10;;26212:608;;;26088:732;;;;:::o;26826:831::-;27089:4;27127:3;27116:9;27112:19;27104:27;;27141:71;27209:1;27198:9;27194:17;27185:6;27141:71;:::i;:::-;27222:80;27298:2;27287:9;27283:18;27274:6;27222:80;:::i;:::-;27349:9;27343:4;27339:20;27334:2;27323:9;27319:18;27312:48;27377:108;27480:4;27471:6;27377:108;:::i;:::-;27369:116;;27495:72;27563:2;27552:9;27548:18;27539:6;27495:72;:::i;:::-;27577:73;27645:3;27634:9;27630:19;27621:6;27577:73;:::i;:::-;26826:831;;;;;;;;:::o;27663:226::-;27803:34;27799:1;27791:6;27787:14;27780:58;27872:9;27867:2;27859:6;27855:15;27848:34;27663:226;:::o;27895:366::-;28037:3;28058:67;28122:2;28117:3;28058:67;:::i;:::-;28051:74;;28134:93;28223:3;28134:93;:::i;:::-;28252:2;28247:3;28243:12;28236:19;;27895:366;;;:::o;28267:419::-;28433:4;28471:2;28460:9;28456:18;28448:26;;28520:9;28514:4;28510:20;28506:1;28495:9;28491:17;28484:47;28548:131;28674:4;28548:131;:::i;:::-;28540:139;;28267:419;;;:::o;28692:224::-;28832:34;28828:1;28820:6;28816:14;28809:58;28901:7;28896:2;28888:6;28884:15;28877:32;28692:224;:::o;28922:366::-;29064:3;29085:67;29149:2;29144:3;29085:67;:::i;:::-;29078:74;;29161:93;29250:3;29161:93;:::i;:::-;29279:2;29274:3;29270:12;29263:19;;28922:366;;;:::o;29294:419::-;29460:4;29498:2;29487:9;29483:18;29475:26;;29547:9;29541:4;29537:20;29533:1;29522:9;29518:17;29511:47;29575:131;29701:4;29575:131;:::i;:::-;29567:139;;29294:419;;;:::o;29719:348::-;29759:7;29782:20;29800:1;29782:20;:::i;:::-;29777:25;;29816:20;29834:1;29816:20;:::i;:::-;29811:25;;30004:1;29936:66;29932:74;29929:1;29926:81;29921:1;29914:9;29907:17;29903:105;29900:131;;;30011:18;;:::i;:::-;29900:131;30059:1;30056;30052:9;30041:20;;29719:348;;;;:::o;30073:180::-;30121:77;30118:1;30111:88;30218:4;30215:1;30208:15;30242:4;30239:1;30232:15;30259:185;30299:1;30316:20;30334:1;30316:20;:::i;:::-;30311:25;;30350:20;30368:1;30350:20;:::i;:::-;30345:25;;30389:1;30379:35;;30394:18;;:::i;:::-;30379:35;30436:1;30433;30429:9;30424:14;;30259:185;;;;:::o

Swarm Source

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