ETH Price: $2,526.47 (-0.07%)

Token

16TH EXCEED ($IMANITY)
 

Overview

Max Total Supply

100,000,000 $IMANITY

Holders

52

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,438,876.723036694 $IMANITY

Value
$0.00
0xdf4447f7ccf4a132a7e54f351f2adf9f88019dd5
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:
SIXTEENTHTHEXCEED

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at Etherscan.io on 2022-08-02
*/

/**
 *Submitted for verification at Etherscan.io on 2022-07-30
*/

/*   
 __     __    __     ______     __   __     __     ______   __  __    
/\ \   /\ "-./  \   /\  __ \   /\ "-.\ \   /\ \   /\__  _\ /\ \_\ \   
\ \ \  \ \ \-./\ \  \ \  __ \  \ \ \-.  \  \ \ \  \/_/\ \/ \ \____ \  
 \ \_\  \ \_\ \ \_\  \ \_\ \_\  \ \_\\"\_\  \ \_\    \ \_\  \/\_____\ 
  \/_/   \/_/  \/_/   \/_/\/_/   \/_/ \/_/   \/_/     \/_/   \/_____/ 
                                                                      
https://t.me/ImanityEth
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.6.12;

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

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

    interface IERC20 {
        /**
        * @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 `recipient`.
        *
        * Returns a boolean value indicating whether the operation succeeded.
        *
        * Emits a {Transfer} event.
        */
        function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, 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);
    }

    library SafeMath {
        /**
        * @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) {
            uint256 c = a + b;
            require(c >= a, "SafeMath: addition overflow");

            return c;
        }

        /**
        * @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 sub(a, b, "SafeMath: subtraction overflow");
        }

        /**
        * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
        * overflow (when the result is negative).
        *
        * Counterpart to Solidity's `-` operator.
        *
        * Requirements:
        *
        * - Subtraction cannot overflow.
        */
        function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
            require(b <= a, errorMessage);
            uint256 c = a - b;

            return c;
        }

        /**
        * @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) {
            // 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 0;
            }

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

            return c;
        }

        /**
        * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) {
            return div(a, b, "SafeMath: division by zero");
        }

        /**
        * @dev Returns the integer division of two unsigned integers. Reverts 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) {
            require(b > 0, errorMessage);
            uint256 c = a / b;
            // assert(a == b * c + a % b); // There is no case in which this doesn't hold

            return c;
        }

        /**
        * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
        * Reverts 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 mod(a, b, "SafeMath: modulo by zero");
        }

        /**
        * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
        * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) {
            require(b != 0, errorMessage);
            return a % b;
        }
    }

    library Address {
        /**
        * @dev Returns true if `account` is a contract.
        *
        * [IMPORTANT]
        * ====
        * It is unsafe to assume that an address for which this function returns
        * false is an externally-owned account (EOA) and not a contract.
        *
        * Among others, `isContract` will return false for the following
        * types of addresses:
        *
        *  - an externally-owned account
        *  - a contract in construction
        *  - an address where a contract will be created
        *  - an address where a contract lived, but was destroyed
        * ====
        */
        function isContract(address account) internal view returns (bool) {
            // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
            // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
            // for accounts without code, i.e. `keccak256('')`
            bytes32 codehash;
            bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
            // solhint-disable-next-line no-inline-assembly
            assembly { codehash := extcodehash(account) }
            return (codehash != accountHash && codehash != 0x0);
        }

        /**
        * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
        * `recipient`, forwarding all available gas and reverting on errors.
        *
        * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
        * of certain opcodes, possibly making contracts go over the 2300 gas limit
        * imposed by `transfer`, making them unable to receive funds via
        * `transfer`. {sendValue} removes this limitation.
        *
        * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
        *
        * IMPORTANT: because control is transferred to `recipient`, care must be
        * taken to not create reentrancy vulnerabilities. Consider using
        * {ReentrancyGuard} or the
        * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
        */
        function sendValue(address payable recipient, uint256 amount) internal {
            require(address(this).balance >= amount, "Address: insufficient balance");

            // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
            (bool success, ) = recipient.call{ value: amount }("");
            require(success, "Address: unable to send value, recipient may have reverted");
        }

        /**
        * @dev Performs a Solidity function call using a low level `call`. A
        * plain`call` is an unsafe replacement for a function call: use this
        * function instead.
        *
        * If `target` reverts with a revert reason, it is bubbled up by this
        * function (like regular Solidity function calls).
        *
        * Returns the raw returned data. To convert to the expected return value,
        * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
        *
        * Requirements:
        *
        * - `target` must be a contract.
        * - calling `target` with `data` must not revert.
        *
        * _Available since v3.1._
        */
        function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
        }

        /**
        * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
        * `errorMessage` as a fallback revert reason when `target` reverts.
        *
        * _Available since v3.1._
        */
        function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
            return _functionCallWithValue(target, data, 0, errorMessage);
        }

        /**
        * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
        * but also transferring `value` wei to `target`.
        *
        * Requirements:
        *
        * - the calling contract must have an ETH balance of at least `value`.
        * - the called Solidity function must be `payable`.
        *
        * _Available since v3.1._
        */
        function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
            return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
        }

        /**
        * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
        * with `errorMessage` as a fallback revert reason when `target` reverts.
        *
        * _Available since v3.1._
        */
        function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
            require(address(this).balance >= value, "Address: insufficient balance for call");
            return _functionCallWithValue(target, data, value, errorMessage);
        }

        function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
            require(isContract(target), "Address: call to non-contract");

            // solhint-disable-next-line avoid-low-level-calls
            (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
            if (success) {
                return returndata;
            } else {
                // Look for revert reason and bubble it up if present
                if (returndata.length > 0) {
                    // The easiest way to bubble the revert reason is using memory via assembly

                    // solhint-disable-next-line no-inline-assembly
                    assembly {
                        let returndata_size := mload(returndata)
                        revert(add(32, returndata), returndata_size)
                    }
                } else {
                    revert(errorMessage);
                }
            }
        }
    }

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

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

        /**
        * @dev Initializes the contract setting the deployer as the initial owner.
        */
        constructor () internal {
            address msgSender = _msgSender();
            _owner = msgSender;
            emit OwnershipTransferred(address(0), msgSender);
        }

        /**
        * @dev Returns the address of the current owner.
        */
        function owner() public view 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 {
            emit OwnershipTransferred(_owner, address(0));
            _owner = 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");
            emit OwnershipTransferred(_owner, newOwner);
            _owner = newOwner;
        }

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

        //Locks the contract for owner for the amount of time provided
        function lock(uint256 time) public virtual onlyOwner {
            _previousOwner = _owner;
            _owner = address(0);
            _lockTime = now + time;
            emit OwnershipTransferred(_owner, address(0));
        }
        
        //Unlocks the contract for owner when _lockTime is exceeds
        function unlock() public virtual {
            require(_previousOwner == msg.sender, "You don't have permission to unlock");
            require(now > _lockTime , "Contract is locked until 7 days");
            emit OwnershipTransferred(_owner, _previousOwner);
            _owner = _previousOwner;
        }
    }  

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

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

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

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

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

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

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

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

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

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

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

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

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

        function initialize(address, address) external;
    }

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

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

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

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

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

    // Contract implementation
    contract SIXTEENTHTHEXCEED is Context, IERC20, Ownable {
        using SafeMath for uint256;
        using Address for address;

        mapping (address => bool) public _isBlacklisted;
        

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

        mapping (address => bool) private _isExcluded;
        address[] private _excluded;
    
        uint256 private constant MAX = ~uint256(0);
        uint256 private _tTotal = 100000000* 10**9;
        uint256 private _rTotal = (MAX - (MAX % _tTotal));
        uint256 private _tFeeTotal;

        string private _name = '16TH EXCEED';
        string private _symbol = '$IMANITY';
        uint8 private _decimals = 9;
        
        uint256 public _liquidityFee = 1;
        uint256 private _taxFee = 0; 
        uint256 private _MarketingFee = 40;
        uint256 private _previousTaxFee = _taxFee;
        uint256 private _previousMarketingFee = _MarketingFee;

        address payable private _MarketingWalletAddress;
        
        IUniswapV2Router02 public immutable uniswapV2Router;
        address public immutable uniswapV2Pair;

        bool inSwap = false;
        bool public swapEnabled = true;

        uint256 private _maxTxAmount = 10000000e9;
        uint256 private _numOfTokensToExchangeForMarketing = 5 * 10**3 * 10**9;

        event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
        event SwapEnabledUpdated(bool enabled);

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

        constructor (address payable MarketingWalletAddress) public {
            _MarketingWalletAddress = MarketingWalletAddress;
            _rOwned[_msgSender()] = _rTotal;

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

            uniswapV2Router = _uniswapV2Router;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
            _isExcludedFromFee[account] = excluded;
        }

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

        function deliver(uint256 tAmount) public {
            address sender = _msgSender();
            require(!_isExcluded[sender], "Excluded addresses cannot call this function");
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rTotal = _rTotal.sub(rAmount);
            _tFeeTotal = _tFeeTotal.add(tAmount);
        }

        function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
            require(tAmount <= _tTotal, "Amount must be less than supply");
            if (!deductTransferFee) {
                (uint256 rAmount,,,,,) = _getValues(tAmount);
                return rAmount;
            } else {
                (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
                return rTransferAmount;
            }
        }

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

        function excludeAccount(address account) external onlyOwner() {
            require(account != 0xbd8caF35cB758Ce801f3639D5557de66a2DC37Fa, 'We can not exclude Uniswap router.');
            require(!_isExcluded[account], "Account is already excluded");
            if(_rOwned[account] > 0) {
                _tOwned[account] = tokenFromReflection(_rOwned[account]);
            }
            _isExcluded[account] = true;
            _excluded.push(account);
        }

        function includeAccount(address account) external onlyOwner() {
            require(_isExcluded[account], "Account is already excluded");
            for (uint256 i = 0; i < _excluded.length; i++) {
                if (_excluded[i] == account) {
                    _excluded[i] = _excluded[_excluded.length - 1];
                    _tOwned[account] = 0;
                    _isExcluded[account] = false;
                    _excluded.pop();
                    break;
                }
            }
        }

        function removeAllFee() private {
            if(_taxFee == 0 && _MarketingFee == 0) return;
            
            _previousTaxFee = _taxFee;
            _previousMarketingFee = _MarketingFee;
            
            _taxFee = 0;
            _MarketingFee = 0;
        }
    
        function restoreAllFee() private {
            _taxFee = _previousTaxFee;
            _MarketingFee = _previousMarketingFee;
        }
    
        function isExcludedFromFee(address account) public view returns(bool) {
            return _isExcludedFromFee[account];
        }

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

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

        function _transfer(address sender, address recipient, uint256 amount) private {
            require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], "This address is blacklisted");
            require(sender != address(0), "ERC20: transfer from the zero address");
            require(recipient != address(0), "ERC20: transfer to the zero address");
            require(amount > 0, "Transfer amount must be greater than zero");
            
            if(sender != owner() && recipient != owner())
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

           
            uint256 contractTokenBalance = balanceOf(address(this));
            
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
            
            bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForMarketing;
            if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
               
                swapTokensForEth(contractTokenBalance);
                
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToMarketing(address(this).balance);
                }
            }
            
        
            bool takeFee = true;
            
      
            if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
                takeFee = false;
            }
            
      
            _tokenTransfer(sender,recipient,amount,takeFee);
        }

        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 sendETHToMarketing(uint256 amount) private {
            _MarketingWalletAddress.transfer(amount.mul(3).div(8));
          
        }
        
        function manualSwap() external onlyOwner() {
            uint256 contractBalance = balanceOf(address(this));
            swapTokensForEth(contractBalance);
        }
        
        function manualSend() external onlyOwner() {
            uint256 contractETHBalance = address(this).balance;
            sendETHToMarketing(contractETHBalance);
        }

        function setSwapEnabled(bool enabled) external onlyOwner(){
            swapEnabled = enabled;
        }
        
        function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
            if(!takeFee)
                removeAllFee();

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

            if(!takeFee)
                restoreAllFee();
        }

        function _transferStandard(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tMarketing) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
            _takeMarketing(tMarketing); 
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

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

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

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

        function _takeMarketing(uint256 tMarketing) private {
            uint256 currentRate =  _getRate();
            uint256 rMarketing = tMarketing.mul(currentRate);
            _rOwned[address(this)] = _rOwned[address(this)].add(rMarketing);
            if(_isExcluded[address(this)])
                _tOwned[address(this)] = _tOwned[address(this)].add(tMarketing);
        }

        function _reflectFee(uint256 rFee, uint256 tFee) private {
            _rTotal = _rTotal.sub(rFee);
            _tFeeTotal = _tFeeTotal.add(tFee);
        }

        receive() external payable {}

        function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
            (uint256 tTransferAmount, uint256 tFee, uint256 tMarketing) = _getTValues(tAmount, _taxFee, _MarketingFee);
            uint256 currentRate =  _getRate();
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
            return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tMarketing);
        }

        function _getTValues(uint256 tAmount, uint256 taxFee, uint256 MarketingFee) private pure returns (uint256, uint256, uint256) {
            uint256 tFee = tAmount.mul(taxFee).div(100);
            uint256 tMarketing = tAmount.mul(MarketingFee).div(100);
            uint256 tTransferAmount = tAmount.sub(tFee).sub(tMarketing);
            return (tTransferAmount, tFee, tMarketing);
        }

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

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

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

        function _getMaxTxAmount() public view returns(uint256) {
            return _maxTxAmount;
        }

        function _getETHBalance() public view returns(uint256 balance) {
            return address(this).balance;
        }
        
        function _setTaxFee(uint256 taxFee) external onlyOwner() {
            require(taxFee >= 0 && taxFee <= 99, 'taxFee should be in 0 - 99');
            _taxFee = taxFee;
        }

        function _setMarketingFee(uint256 MarketingFee) external onlyOwner() {
            require(MarketingFee >= 1 && MarketingFee <= 50, 'MarketingFee should be in 1 - 50');
            _MarketingFee = MarketingFee;
        }
        
        function _setMarketingWallet(address payable MarketingWalletAddress) external onlyOwner() {
            _MarketingWalletAddress = MarketingWalletAddress;
      
        }
        
        function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
            _maxTxAmount = maxTxAmount;
        }

	    //removeFromBlackList
        function removeFromBlackList(address account) external onlyOwner{
        _isBlacklisted[account] = false;
        }

         //adding multiple address to the blacklist - used to manually block known bots and scammers
        function addToBlackList(address[] calldata  addresses) external onlyOwner {
        for(uint256 i; i < addresses.length; ++i) {
            _isBlacklisted[addresses[i]] = true;
            }
        }
   
    }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"MarketingWalletAddress","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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"MarketingFee","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":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405267016345785d8a0000600a55600a54600019816200001e57fe5b0660001903600b556040518060400160405280600b81526020017f3136544820455843454544000000000000000000000000000000000000000000815250600d90805190602001906200007392919062000707565b506040518060400160405280600881526020017f24494d414e495459000000000000000000000000000000000000000000000000815250600e9080519060200190620000c192919062000707565b506009600f60006101000a81548160ff021916908360ff1602179055506001601055600060115560286012556011546013556012546014556000601560146101000a81548160ff02191690831515021790555060016015806101000a81548160ff021916908315150217905550662386f26fc1000060165565048c273950006017553480156200015057600080fd5b5060405162005cf038038062005cf0833981810160405260208110156200017657600080fd5b8101908080519060200190929190505050600062000199620006d660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b54600460006200028f620006d660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032d57600080fd5b505afa15801562000342573d6000803e3d6000fd5b505050506040513d60208110156200035957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003cd57600080fd5b505afa158015620003e2573d6000803e3d6000fd5b505050506040513d6020811015620003f957600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200047457600080fd5b505af115801562000489573d6000803e3d6000fd5b505050506040513d6020811015620004a057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060016007600062000534620006de60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000667620006d660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040518082815260200191505060405180910390a35050620007ad565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200074a57805160ff19168380011785556200077b565b828001600101855582156200077b579182015b828111156200077a5782518255916020019190600101906200075d565b5b5090506200078a91906200078e565b5090565b5b80821115620007a95760008160009055506001016200078f565b5090565b60805160601c60a05160601c615505620007eb6000398061165e5280613809525080610fc35280613c645280613d505280613d7752506155056000f3fe6080604052600436106102555760003560e01c806370a0823111610139578063cba0e996116100b6578063f2fde38b1161007a578063f2fde38b14610d62578063f429389014610db3578063f7a9159114610dca578063f815a84214610df5578063f84354f114610e20578063ff89757014610e715761025c565b8063cba0e99614610bad578063dd46706414610c14578063dd62ed3e14610c4f578063e01af92c14610cd4578063f2cc0c1814610d115761025c565b8063a52fe9bb116100fd578063a52fe9bb14610a62578063a69df4b514610a9d578063a9059cbb14610ab4578063af9549e014610b25578063b6c5232414610b825761025c565b806370a08231146108a4578063715018a6146109095780638da5cb5b1461092057806395d89b4114610961578063a457c2d7146109f15761025c565b8063313ce567116101d25780634a49ac4c116101965780634a49ac4c1461074257806351bc3c85146107935780635342acb4146107aa5780635880b873146108115780636bc87c3a1461084c5780636ddd1713146108775761025c565b8063313ce567146105cc57806339509351146105fa5780633bd5d1731461066b5780634549b039146106a657806349bd5a5e146107015761025c565b80631bbae6e0116102195780631bbae6e0146103f95780631cdd3be3146104345780631ff53b601461049b57806323b872dd146104ec5780632d8381191461057d5761025c565b806306fdde0314610261578063095ea7b3146102f157806313114a9d146103625780631694505e1461038d57806318160ddd146103ce5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610ef7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102b657808201518184015260208101905061029b565b50505050905090810190601f1680156102e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102fd57600080fd5b5061034a6004803603604081101561031457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f99565b60405180821515815260200191505060405180910390f35b34801561036e57600080fd5b50610377610fb7565b6040518082815260200191505060405180910390f35b34801561039957600080fd5b506103a2610fc1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103da57600080fd5b506103e3610fe5565b6040518082815260200191505060405180910390f35b34801561040557600080fd5b506104326004803603602081101561041c57600080fd5b8101908080359060200190929190505050610fef565b005b34801561044057600080fd5b506104836004803603602081101561045757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c1565b60405180821515815260200191505060405180910390f35b3480156104a757600080fd5b506104ea600480360360208110156104be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e1565b005b3480156104f857600080fd5b506105656004803603606081101561050f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111ed565b60405180821515815260200191505060405180910390f35b34801561058957600080fd5b506105b6600480360360208110156105a057600080fd5b81019080803590602001909291905050506112c6565b6040518082815260200191505060405180910390f35b3480156105d857600080fd5b506105e161134a565b604051808260ff16815260200191505060405180910390f35b34801561060657600080fd5b506106536004803603604081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611361565b60405180821515815260200191505060405180910390f35b34801561067757600080fd5b506106a46004803603602081101561068e57600080fd5b8101908080359060200190929190505050611414565b005b3480156106b257600080fd5b506106eb600480360360408110156106c957600080fd5b81019080803590602001909291908035151590602001909291905050506115a5565b6040518082815260200191505060405180910390f35b34801561070d57600080fd5b5061071661165c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074e57600080fd5b506107916004803603602081101561076557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611680565b005b34801561079f57600080fd5b506107a86117a3565b005b3480156107b657600080fd5b506107f9600480360360208110156107cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611884565b60405180821515815260200191505060405180910390f35b34801561081d57600080fd5b5061084a6004803603602081101561083457600080fd5b81019080803590602001909291905050506118da565b005b34801561085857600080fd5b50610861611a30565b6040518082815260200191505060405180910390f35b34801561088357600080fd5b5061088c611a36565b60405180821515815260200191505060405180910390f35b3480156108b057600080fd5b506108f3600480360360208110156108c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a47565b6040518082815260200191505060405180910390f35b34801561091557600080fd5b5061091e611b32565b005b34801561092c57600080fd5b50610935611cb8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096d57600080fd5b50610976611ce1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109b657808201518184015260208101905061099b565b50505050905090810190601f1680156109e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109fd57600080fd5b50610a4a60048036036040811015610a1457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d83565b60405180821515815260200191505060405180910390f35b348015610a6e57600080fd5b50610a9b60048036036020811015610a8557600080fd5b8101908080359060200190929190505050611e50565b005b348015610aa957600080fd5b50610ab2611fa6565b005b348015610ac057600080fd5b50610b0d60048036036040811015610ad757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121c3565b60405180821515815260200191505060405180910390f35b348015610b3157600080fd5b50610b8060048036036040811015610b4857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506121e1565b005b348015610b8e57600080fd5b50610b97612304565b6040518082815260200191505060405180910390f35b348015610bb957600080fd5b50610bfc60048036036020811015610bd057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061230e565b60405180821515815260200191505060405180910390f35b348015610c2057600080fd5b50610c4d60048036036020811015610c3757600080fd5b8101908080359060200190929190505050612364565b005b348015610c5b57600080fd5b50610cbe60048036036040811015610c7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612555565b6040518082815260200191505060405180910390f35b348015610ce057600080fd5b50610d0f60048036036020811015610cf757600080fd5b810190808035151590602001909291905050506125dc565b005b348015610d1d57600080fd5b50610d6060048036036020811015610d3457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126c0565b005b348015610d6e57600080fd5b50610db160048036036020811015610d8557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a73565b005b348015610dbf57600080fd5b50610dc8612c7e565b005b348015610dd657600080fd5b50610ddf612d57565b6040518082815260200191505060405180910390f35b348015610e0157600080fd5b50610e0a612d61565b6040518082815260200191505060405180910390f35b348015610e2c57600080fd5b50610e6f60048036036020811015610e4357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d69565b005b348015610e7d57600080fd5b50610ef560048036036020811015610e9457600080fd5b8101908080359060200190640100000000811115610eb157600080fd5b820183602082011115610ec357600080fd5b80359060200191846020830284011164010000000083111715610ee557600080fd5b90919293919293905050506130f3565b005b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f8f5780601f10610f6457610100808354040283529160200191610f8f565b820191906000526020600020905b815481529060010190602001808311610f7257829003601f168201915b5050505050905090565b6000610fad610fa6613259565b8484613261565b6001905092915050565b6000600c54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600a54905090565b610ff7613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b60036020528060005260406000206000915054906101000a900460ff1681565b6110e9613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006111fa848484613458565b6112bb84611206613259565b6112b6856040518060600160405280602881526020016153a060289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061126c613259565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139459092919063ffffffff16565b613261565b600190509392505050565b6000600b54821115611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806152e5602a913960400191505060405180910390fd5b600061132d613a05565b90506113428184613a3090919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b600061140a61136e613259565b84611405856006600061137f613259565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b613261565b6001905092915050565b600061141e613259565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061545c602c913960400191505060405180910390fd5b60006114ce83613b02565b5050505050905061152781600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061157f81600b54613b6990919063ffffffff16565b600b8190555061159a83600c54613a7a90919063ffffffff16565b600c81905550505050565b6000600a5483111561161f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161163f57600061162f84613b02565b5050505050905080915050611656565b600061164a84613b02565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611688613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611748576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117ab613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600061187630611a47565b905061188181613bb3565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118e2613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600081101580156119b4575060638111155b611a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2030202d20393900000000000081525060200191505060405180910390fd5b8060118190555050565b60105481565b60158054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ae257600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611b2d565b611b2a600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112c6565b90505b919050565b611b3a613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d795780601f10611d4e57610100808354040283529160200191611d79565b820191906000526020600020905b815481529060010190602001808311611d5c57829003601f168201915b5050505050905090565b6000611e46611d90613259565b84611e41856040518060600160405280602581526020016154ab6025913960066000611dba613259565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139459092919063ffffffff16565b613261565b6001905092915050565b611e58613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611f2a575060328111155b611f9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4d61726b6574696e674665652073686f756c6420626520696e2031202d20353081525060200191505060405180910390fd5b8060128190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154886023913960400191505060405180910390fd5b60025442116120c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006121d76121d0613259565b8484613458565b6001905092915050565b6121e9613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61236c613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461242c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6125e4613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b6126c8613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612788576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b73bd8caf35cb758ce801f3639d5557de66a2dc37fa73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061543a6022913960400191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156129b557612971600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112c6565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a7b613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612bc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061530f6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612c86613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000479050612d5481613e97565b50565b6000601654905090565b600047905090565b612d71613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ef0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6009805490508110156130ef578173ffffffffffffffffffffffffffffffffffffffff1660098281548110612f2457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130e257600960016009805490500381548110612f8057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660098281548110612fb857fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060098054806130a857fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556130ef565b8080600101915050612ef3565b5050565b6130fb613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b82829050811015613254576001600360008585858181106131db57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190506131be565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806154166024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561336d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806153356022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134fc5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61356e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686973206164647265737320697320626c61636b6c6973746564000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806153f16025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561367a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806152c26023913960400191505060405180910390fd5b600081116136d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806153c86029913960400191505060405180910390fd5b6136db611cb8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156137495750613719611cb8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156137aa576016548111156137a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153576028913960400191505060405180910390fd5b5b60006137b530611a47565b905060165481106137c65760165490505b60006017548210159050601560149054906101000a900460ff161580156137f7575060158054906101000a900460ff165b80156138005750805b801561385857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156138805761386682613bb3565b6000479050600081111561387e5761387d47613e97565b5b505b600060019050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139275750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561393157600090505b61393d86868684613f29565b505050505050565b60008383111582906139f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156139b757808201518184015260208101905061399c565b50505050905090810190601f1680156139e45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613a1261423a565b91509150613a298183613a3090919063ffffffff16565b9250505090565b6000613a7283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506144cb565b905092915050565b600080828401905083811015613af8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613b1f8a601154601254614591565b9250925092506000613b2f613a05565b90506000806000613b418e8786614627565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000613bab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613945565b905092915050565b6001601560146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff81118015613be857600080fd5b50604051908082528060200260200182016040528015613c175781602001602082028036833780820191505090505b5090503081600081518110613c2857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613cc857600080fd5b505afa158015613cdc573d6000803e3d6000fd5b505050506040513d6020811015613cf257600080fd5b810190808051906020019092919050505081600181518110613d1057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d75307f000000000000000000000000000000000000000000000000000000000000000084613261565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613e37578082015181840152602081019050613e1c565b505050509050019650505050505050600060405180830381600087803b158015613e6057600080fd5b505af1158015613e74573d6000803e3d6000fd5b50505050506000601560146101000a81548160ff02191690831515021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613efa6008613eec60038661468590919063ffffffff16565b613a3090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613f25573d6000803e3d6000fd5b5050565b80613f3757613f3661470b565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613fda5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613fef57613fea84848461474e565b614226565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156140925750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156140a7576140a28484846149ae565b614225565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561414b5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156141605761415b848484614c0e565b614224565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156142025750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561421757614212848484614dd9565b614223565b614222848484614c0e565b5b5b5b5b80614234576142336150ce565b5b50505050565b6000806000600b5490506000600a54905060005b60098054905081101561448e5782600460006009848154811061426d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061435457508160056000600984815481106142ec57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561436b57600b54600a54945094505050506144c7565b6143f4600460006009848154811061437f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613b6990919063ffffffff16565b925061447f600560006009848154811061440a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613b6990919063ffffffff16565b9150808060010191505061424e565b506144a6600a54600b54613a3090919063ffffffff16565b8210156144be57600b54600a549350935050506144c7565b81819350935050505b9091565b60008083118290614577576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561453c578082015181840152602081019050614521565b50505050905090810190601f1680156145695780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161458357fe5b049050809150509392505050565b6000806000806145bd60646145af888a61468590919063ffffffff16565b613a3090919063ffffffff16565b905060006145e760646145d9888b61468590919063ffffffff16565b613a3090919063ffffffff16565b9050600061461082614602858c613b6990919063ffffffff16565b613b6990919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080614640858861468590919063ffffffff16565b90506000614657868861468590919063ffffffff16565b9050600061466e8284613b6990919063ffffffff16565b905082818395509550955050505093509350939050565b6000808314156146985760009050614705565b60008284029050828482816146a957fe5b0414614700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061537f6021913960400191505060405180910390fd5b809150505b92915050565b600060115414801561471f57506000601254145b156147295761474c565b601154601381905550601254601481905550600060118190555060006012819055505b565b60008060008060008061476087613b02565b9550955095509550955095506147be87600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061485386600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148e885600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614934816150e2565b61493e8483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806149c087613b02565b955095509550955095509550614a1e86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ab383600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b4885600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b94816150e2565b614b9e8483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614c2087613b02565b955095509550955095509550614c7e86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d1385600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d5f816150e2565b614d698483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614deb87613b02565b955095509550955095509550614e4987600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ede86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f7383600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061500885600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615054816150e2565b61505e8483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601354601181905550601454601281905550565b60006150ec613a05565b90506000615103828461468590919063ffffffff16565b905061515781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156152825761523e83600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61529c82600b54613b6990919063ffffffff16565b600b819055506152b781600c54613a7a90919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220df7d59e9a74b6cfc34978ca313a2e8cb01ecaa0eac76eaca7dac0eaf362c1b2964736f6c634300060c0033000000000000000000000000652ee241fdc1701dd7be0415ee59ec6b6f7a8d9a

Deployed Bytecode

0x6080604052600436106102555760003560e01c806370a0823111610139578063cba0e996116100b6578063f2fde38b1161007a578063f2fde38b14610d62578063f429389014610db3578063f7a9159114610dca578063f815a84214610df5578063f84354f114610e20578063ff89757014610e715761025c565b8063cba0e99614610bad578063dd46706414610c14578063dd62ed3e14610c4f578063e01af92c14610cd4578063f2cc0c1814610d115761025c565b8063a52fe9bb116100fd578063a52fe9bb14610a62578063a69df4b514610a9d578063a9059cbb14610ab4578063af9549e014610b25578063b6c5232414610b825761025c565b806370a08231146108a4578063715018a6146109095780638da5cb5b1461092057806395d89b4114610961578063a457c2d7146109f15761025c565b8063313ce567116101d25780634a49ac4c116101965780634a49ac4c1461074257806351bc3c85146107935780635342acb4146107aa5780635880b873146108115780636bc87c3a1461084c5780636ddd1713146108775761025c565b8063313ce567146105cc57806339509351146105fa5780633bd5d1731461066b5780634549b039146106a657806349bd5a5e146107015761025c565b80631bbae6e0116102195780631bbae6e0146103f95780631cdd3be3146104345780631ff53b601461049b57806323b872dd146104ec5780632d8381191461057d5761025c565b806306fdde0314610261578063095ea7b3146102f157806313114a9d146103625780631694505e1461038d57806318160ddd146103ce5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610ef7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102b657808201518184015260208101905061029b565b50505050905090810190601f1680156102e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102fd57600080fd5b5061034a6004803603604081101561031457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f99565b60405180821515815260200191505060405180910390f35b34801561036e57600080fd5b50610377610fb7565b6040518082815260200191505060405180910390f35b34801561039957600080fd5b506103a2610fc1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103da57600080fd5b506103e3610fe5565b6040518082815260200191505060405180910390f35b34801561040557600080fd5b506104326004803603602081101561041c57600080fd5b8101908080359060200190929190505050610fef565b005b34801561044057600080fd5b506104836004803603602081101561045757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c1565b60405180821515815260200191505060405180910390f35b3480156104a757600080fd5b506104ea600480360360208110156104be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e1565b005b3480156104f857600080fd5b506105656004803603606081101561050f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111ed565b60405180821515815260200191505060405180910390f35b34801561058957600080fd5b506105b6600480360360208110156105a057600080fd5b81019080803590602001909291905050506112c6565b6040518082815260200191505060405180910390f35b3480156105d857600080fd5b506105e161134a565b604051808260ff16815260200191505060405180910390f35b34801561060657600080fd5b506106536004803603604081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611361565b60405180821515815260200191505060405180910390f35b34801561067757600080fd5b506106a46004803603602081101561068e57600080fd5b8101908080359060200190929190505050611414565b005b3480156106b257600080fd5b506106eb600480360360408110156106c957600080fd5b81019080803590602001909291908035151590602001909291905050506115a5565b6040518082815260200191505060405180910390f35b34801561070d57600080fd5b5061071661165c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074e57600080fd5b506107916004803603602081101561076557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611680565b005b34801561079f57600080fd5b506107a86117a3565b005b3480156107b657600080fd5b506107f9600480360360208110156107cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611884565b60405180821515815260200191505060405180910390f35b34801561081d57600080fd5b5061084a6004803603602081101561083457600080fd5b81019080803590602001909291905050506118da565b005b34801561085857600080fd5b50610861611a30565b6040518082815260200191505060405180910390f35b34801561088357600080fd5b5061088c611a36565b60405180821515815260200191505060405180910390f35b3480156108b057600080fd5b506108f3600480360360208110156108c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a47565b6040518082815260200191505060405180910390f35b34801561091557600080fd5b5061091e611b32565b005b34801561092c57600080fd5b50610935611cb8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561096d57600080fd5b50610976611ce1565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109b657808201518184015260208101905061099b565b50505050905090810190601f1680156109e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109fd57600080fd5b50610a4a60048036036040811015610a1457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d83565b60405180821515815260200191505060405180910390f35b348015610a6e57600080fd5b50610a9b60048036036020811015610a8557600080fd5b8101908080359060200190929190505050611e50565b005b348015610aa957600080fd5b50610ab2611fa6565b005b348015610ac057600080fd5b50610b0d60048036036040811015610ad757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121c3565b60405180821515815260200191505060405180910390f35b348015610b3157600080fd5b50610b8060048036036040811015610b4857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506121e1565b005b348015610b8e57600080fd5b50610b97612304565b6040518082815260200191505060405180910390f35b348015610bb957600080fd5b50610bfc60048036036020811015610bd057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061230e565b60405180821515815260200191505060405180910390f35b348015610c2057600080fd5b50610c4d60048036036020811015610c3757600080fd5b8101908080359060200190929190505050612364565b005b348015610c5b57600080fd5b50610cbe60048036036040811015610c7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612555565b6040518082815260200191505060405180910390f35b348015610ce057600080fd5b50610d0f60048036036020811015610cf757600080fd5b810190808035151590602001909291905050506125dc565b005b348015610d1d57600080fd5b50610d6060048036036020811015610d3457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126c0565b005b348015610d6e57600080fd5b50610db160048036036020811015610d8557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a73565b005b348015610dbf57600080fd5b50610dc8612c7e565b005b348015610dd657600080fd5b50610ddf612d57565b6040518082815260200191505060405180910390f35b348015610e0157600080fd5b50610e0a612d61565b6040518082815260200191505060405180910390f35b348015610e2c57600080fd5b50610e6f60048036036020811015610e4357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d69565b005b348015610e7d57600080fd5b50610ef560048036036020811015610e9457600080fd5b8101908080359060200190640100000000811115610eb157600080fd5b820183602082011115610ec357600080fd5b80359060200191846020830284011164010000000083111715610ee557600080fd5b90919293919293905050506130f3565b005b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f8f5780601f10610f6457610100808354040283529160200191610f8f565b820191906000526020600020905b815481529060010190602001808311610f7257829003601f168201915b5050505050905090565b6000610fad610fa6613259565b8484613261565b6001905092915050565b6000600c54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600a54905090565b610ff7613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060168190555050565b60036020528060005260406000206000915054906101000a900460ff1681565b6110e9613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006111fa848484613458565b6112bb84611206613259565b6112b6856040518060600160405280602881526020016153a060289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061126c613259565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139459092919063ffffffff16565b613261565b600190509392505050565b6000600b54821115611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806152e5602a913960400191505060405180910390fd5b600061132d613a05565b90506113428184613a3090919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b600061140a61136e613259565b84611405856006600061137f613259565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b613261565b6001905092915050565b600061141e613259565b9050600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061545c602c913960400191505060405180910390fd5b60006114ce83613b02565b5050505050905061152781600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061157f81600b54613b6990919063ffffffff16565b600b8190555061159a83600c54613a7a90919063ffffffff16565b600c81905550505050565b6000600a5483111561161f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161163f57600061162f84613b02565b5050505050905080915050611656565b600061164a84613b02565b50505050915050809150505b92915050565b7f000000000000000000000000070450a2229573588085b77e7252016f335f30be81565b611688613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611748576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6117ab613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600061187630611a47565b905061188181613bb3565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6118e2613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600081101580156119b4575060638111155b611a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f7461784665652073686f756c6420626520696e2030202d20393900000000000081525060200191505060405180910390fd5b8060118190555050565b60105481565b60158054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ae257600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611b2d565b611b2a600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112c6565b90505b919050565b611b3a613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bfa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600e8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d795780601f10611d4e57610100808354040283529160200191611d79565b820191906000526020600020905b815481529060010190602001808311611d5c57829003601f168201915b5050505050905090565b6000611e46611d90613259565b84611e41856040518060600160405280602581526020016154ab6025913960066000611dba613259565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139459092919063ffffffff16565b613261565b6001905092915050565b611e58613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018110158015611f2a575060328111155b611f9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4d61726b6574696e674665652073686f756c6420626520696e2031202d20353081525060200191505060405180910390fd5b8060128190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154886023913960400191505060405180910390fd5b60025442116120c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006121d76121d0613259565b8484613458565b6001905092915050565b6121e9613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61236c613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461242c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6125e4613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b6126c8613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612788576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b73bd8caf35cb758ce801f3639d5557de66a2dc37fa73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061543a6022913960400191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156129b557612971600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112c6565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612a7b613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612bc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061530f6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612c86613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000479050612d5481613e97565b50565b6000601654905090565b600047905090565b612d71613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ef0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6009805490508110156130ef578173ffffffffffffffffffffffffffffffffffffffff1660098281548110612f2457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130e257600960016009805490500381548110612f8057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660098281548110612fb857fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060098054806130a857fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556130ef565b8080600101915050612ef3565b5050565b6130fb613259565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b82829050811015613254576001600360008585858181106131db57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060010190506131be565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806154166024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561336d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806153356022913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134fc5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61356e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686973206164647265737320697320626c61636b6c6973746564000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806153f16025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561367a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806152c26023913960400191505060405180910390fd5b600081116136d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806153c86029913960400191505060405180910390fd5b6136db611cb8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156137495750613719611cb8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156137aa576016548111156137a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153576028913960400191505060405180910390fd5b5b60006137b530611a47565b905060165481106137c65760165490505b60006017548210159050601560149054906101000a900460ff161580156137f7575060158054906101000a900460ff165b80156138005750805b801561385857507f000000000000000000000000070450a2229573588085b77e7252016f335f30be73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156138805761386682613bb3565b6000479050600081111561387e5761387d47613e97565b5b505b600060019050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139275750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561393157600090505b61393d86868684613f29565b505050505050565b60008383111582906139f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156139b757808201518184015260208101905061399c565b50505050905090810190601f1680156139e45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613a1261423a565b91509150613a298183613a3090919063ffffffff16565b9250505090565b6000613a7283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506144cb565b905092915050565b600080828401905083811015613af8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613b1f8a601154601254614591565b9250925092506000613b2f613a05565b90506000806000613b418e8786614627565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000613bab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613945565b905092915050565b6001601560146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff81118015613be857600080fd5b50604051908082528060200260200182016040528015613c175781602001602082028036833780820191505090505b5090503081600081518110613c2857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613cc857600080fd5b505afa158015613cdc573d6000803e3d6000fd5b505050506040513d6020811015613cf257600080fd5b810190808051906020019092919050505081600181518110613d1057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d75307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84613261565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613e37578082015181840152602081019050613e1c565b505050509050019650505050505050600060405180830381600087803b158015613e6057600080fd5b505af1158015613e74573d6000803e3d6000fd5b50505050506000601560146101000a81548160ff02191690831515021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc613efa6008613eec60038661468590919063ffffffff16565b613a3090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613f25573d6000803e3d6000fd5b5050565b80613f3757613f3661470b565b5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613fda5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613fef57613fea84848461474e565b614226565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156140925750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156140a7576140a28484846149ae565b614225565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561414b5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156141605761415b848484614c0e565b614224565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156142025750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561421757614212848484614dd9565b614223565b614222848484614c0e565b5b5b5b5b80614234576142336150ce565b5b50505050565b6000806000600b5490506000600a54905060005b60098054905081101561448e5782600460006009848154811061426d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061435457508160056000600984815481106142ec57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561436b57600b54600a54945094505050506144c7565b6143f4600460006009848154811061437f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613b6990919063ffffffff16565b925061447f600560006009848154811061440a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613b6990919063ffffffff16565b9150808060010191505061424e565b506144a6600a54600b54613a3090919063ffffffff16565b8210156144be57600b54600a549350935050506144c7565b81819350935050505b9091565b60008083118290614577576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561453c578082015181840152602081019050614521565b50505050905090810190601f1680156145695780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161458357fe5b049050809150509392505050565b6000806000806145bd60646145af888a61468590919063ffffffff16565b613a3090919063ffffffff16565b905060006145e760646145d9888b61468590919063ffffffff16565b613a3090919063ffffffff16565b9050600061461082614602858c613b6990919063ffffffff16565b613b6990919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080614640858861468590919063ffffffff16565b90506000614657868861468590919063ffffffff16565b9050600061466e8284613b6990919063ffffffff16565b905082818395509550955050505093509350939050565b6000808314156146985760009050614705565b60008284029050828482816146a957fe5b0414614700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061537f6021913960400191505060405180910390fd5b809150505b92915050565b600060115414801561471f57506000601254145b156147295761474c565b601154601381905550601254601481905550600060118190555060006012819055505b565b60008060008060008061476087613b02565b9550955095509550955095506147be87600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061485386600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148e885600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614934816150e2565b61493e8483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806149c087613b02565b955095509550955095509550614a1e86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ab383600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b4885600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b94816150e2565b614b9e8483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614c2087613b02565b955095509550955095509550614c7e86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d1385600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d5f816150e2565b614d698483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614deb87613b02565b955095509550955095509550614e4987600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ede86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6990919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f7383600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061500885600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615054816150e2565b61505e8483615287565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601354601181905550601454601281905550565b60006150ec613a05565b90506000615103828461468590919063ffffffff16565b905061515781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156152825761523e83600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a7a90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61529c82600b54613b6990919063ffffffff16565b600b819055506152b781600c54613a7a90919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220df7d59e9a74b6cfc34978ca313a2e8cb01ecaa0eac76eaca7dac0eaf362c1b2964736f6c634300060c0033

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

000000000000000000000000652ee241fdc1701dd7be0415ee59ec6b6f7a8d9a

-----Decoded View---------------
Arg [0] : MarketingWalletAddress (address): 0x652eE241fDc1701Dd7Be0415EE59EC6B6f7a8D9A

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000652ee241fdc1701dd7be0415ee59ec6b6f7a8d9a


Deployed Bytecode Sourcemap

27131:18728:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29669:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30665:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32013:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28356:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29982:103;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;45251:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27272:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;45058:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30850:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33021:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29879:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31191:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32120:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32537:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28418:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;45411:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37695:168;;;;;;;;;;;;;:::i;:::-;;34774:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;44622:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28043:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28499:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30097:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16966:160;;;;;;;;;;;;;:::i;:::-;;16264:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29772:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31433:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;44815:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18073:313;;;;;;;;;;;;;:::i;:::-;;30319:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31856:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17570:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31726:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17751:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30502:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;38068:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33302:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17298:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37883:173;;;;;;;;;;;;;:::i;:::-;;44370:102;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;44484:118;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33789:522;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;45643:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29669:91;29706:13;29743:5;29736:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29669:91;:::o;30665:173::-;30740:4;30761:39;30770:12;:10;:12::i;:::-;30784:7;30793:6;30761:8;:39::i;:::-;30822:4;30815:11;;30665:173;;;;:::o;32013:95::-;32055:7;32086:10;;32079:17;;32013:95;:::o;28356:51::-;;;:::o;29982:103::-;30035:7;30066;;30059:14;;29982:103;:::o;45251:120::-;16512:12;:10;:12::i;:::-;16502:22;;:6;;;;;;;;;;:22;;;16494:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45348:11:::1;45333:12;:26;;;;45251:120:::0;:::o;27272:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;45058:173::-;16512:12;:10;:12::i;:::-;16502:22;;:6;;;;;;;;;;:22;;;16494:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45189:22:::1;45163:23;;:48;;;;;;;;;;;;;;;;;;45058:173:::0;:::o;30850:329::-;30948:4;30969:36;30979:6;30987:9;30998:6;30969:9;:36::i;:::-;31020:121;31029:6;31037:12;:10;:12::i;:::-;31051:89;31089:6;31051:89;;;;;;;;;;;;;;;;;:11;:19;31063:6;31051:19;;;;;;;;;;;;;;;:33;31071:12;:10;:12::i;:::-;31051:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;31020:8;:121::i;:::-;31163:4;31156:11;;30850:329;;;;;:::o;33021:269::-;33087:7;33130;;33119;:18;;33111:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33199:19;33222:10;:8;:10::i;:::-;33199:33;;33254:24;33266:11;33254:7;:11;;:24;;;;:::i;:::-;33247:31;;;33021:269;;;:::o;29879:91::-;29920:5;29949:9;;;;;;;;;;;29942:16;;29879:91;:::o;31191:230::-;31279:4;31300:83;31309:12;:10;:12::i;:::-;31323:7;31332:50;31371:10;31332:11;:25;31344:12;:10;:12::i;:::-;31332:25;;;;;;;;;;;;;;;:34;31358:7;31332:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;31300:8;:83::i;:::-;31405:4;31398:11;;31191:230;;;;:::o;32120:405::-;32176:14;32193:12;:10;:12::i;:::-;32176:29;;32229:11;:19;32241:6;32229:19;;;;;;;;;;;;;;;;;;;;;;;;;32228:20;32220:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32313:15;32337:19;32348:7;32337:10;:19::i;:::-;32312:44;;;;;;;32389:28;32409:7;32389;:15;32397:6;32389:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32371:7;:15;32379:6;32371:15;;;;;;;;;;;;;;;:46;;;;32442:20;32454:7;32442;;:11;;:20;;;;:::i;:::-;32432:7;:30;;;;32490:23;32505:7;32490:10;;:14;;:23;;;;:::i;:::-;32477:10;:36;;;;32120:405;;;:::o;32537:472::-;32627:7;32670;;32659;:18;;32651:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32733:17;32728:270;;32772:15;32796:19;32807:7;32796:10;:19::i;:::-;32771:44;;;;;;;32841:7;32834:14;;;;;32728:270;32891:23;32922:19;32933:7;32922:10;:19::i;:::-;32889:52;;;;;;;32967:15;32960:22;;;32537:472;;;;;:::o;28418:38::-;;;:::o;45411:118::-;16512:12;:10;:12::i;:::-;16502:22;;:6;;;;;;;;;;:22;;;16494:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45512:5:::1;45486:14;:23;45501:7;45486:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;45411:118:::0;:::o;37695:168::-;16512:12;:10;:12::i;:::-;16502:22;;:6;;;;;;;;;;:22;;;16494:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37753:23:::1;37779:24;37797:4;37779:9;:24::i;:::-;37753:50;;37818:33;37835:15;37818:16;:33::i;:::-;16576:1;37695:168::o:0;34774:131::-;34838:4;34866:18;:27;34885:7;34866:27;;;;;;;;;;;;;;;;;;;;;;;;;34859:34;;34774:131;;;:::o;44622:181::-;16512:12;:10;:12::i;:::-;16502:22;;:6;;;;;;;;;;:22;;;16494:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44712:1:::1;44702:6;:11;;:27;;;;;44727:2;44717:6;:12;;44702:27;44694:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;44785:6;44775:7;:16;;;;44622:181:::0;:::o;28043:32::-;;;;:::o;28499:30::-;;;;;;;;;;;;:::o;30097:210::-;30163:7;30191:11;:20;30203:7;30191:20;;;;;;;;;;;;;;;;;;;;;;;;;30187:49;;;30220:7;:16;30228:7;30220:16;;;;;;;;;;;;;;;;30213:23;;;;30187:49;30258:37;30278:7;:16;30286:7;30278:16;;;;;;;;;;;;;;;;30258:19;:37::i;:::-;30251:44;;30097:210;;;;:::o;16966:160::-;16512:12;:10;:12::i;:::-;16502:22;;:6;;;;;;;;;;:22;;;16494:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17077:1:::1;17040:40;;17061:6;::::0;::::1;;;;;;;;17040:40;;;;;;;;;;;;17112:1;17095:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16966:160::o:0;16264:87::-;16302:7;16333:6;;;;;;;;;;;16326:13;;16264:87;:::o;29772:95::-;29811:13;29848:7;29841:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29772:95;:::o;31433:281::-;31526:4;31547:129;31556:12;:10;:12::i;:::-;31570:7;31579:96;31618:15;31579:96;;;;;;;;;;;;;;;;;:11;:25;31591:12;:10;:12::i;:::-;31579:25;;;;;;;;;;;;;;;:34;31605:7;31579:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;31547:8;:129::i;:::-;31698:4;31691:11;;31433:281;;;;:::o;44815:223::-;16512:12;:10;:12::i;:::-;16502:22;;:6;;;;;;;;;;:22;;;16494:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44923:1:::1;44907:12;:17;;:39;;;;;44944:2;44928:12;:18;;44907:39;44899:84;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;45014:12;44998:13;:28;;;;44815:223:::0;:::o;18073:313::-;18147:10;18129:28;;:14;;;;;;;;;;;:28;;;18121:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18226:9;;18220:3;:15;18212:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18321:14;;;;;;;;;;;18292:44;;18313:6;;;;;;;;;;18292:44;;;;;;;;;;;;18360:14;;;;;;;;;;;18351:6;;:23;;;;;;;;;;;;;;;;;;18073:313::o;30319:171::-;30397:4;30414:42;30424:12;:10;:12::i;:::-;30438:9;30449:6;30414:9;:42::i;:::-;30474:4;30467:11;;30319:171;;;;:::o;31856:145::-;16512:12;:10;:12::i;:::-;16502:22;;:6;;;;;;;;;;:22;;;16494:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31981:8:::1;31951:18;:27;31970:7;31951:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;31856:145:::0;;:::o;17570:97::-;17615:7;17646:9;;17639:16;;17570:97;:::o;31726:118::-;31784:4;31812:11;:20;31824:7;31812:20;;;;;;;;;;;;;;;;;;;;;;;;;31805:27;;31726:118;;;:::o;17751:234::-;16512:12;:10;:12::i;:::-;16502:22;;:6;;;;;;;;;;:22;;;16494:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17836:6:::1;::::0;::::1;;;;;;;;17819:14;;:23;;;;;;;;;;;;;;;;;;17874:1;17857:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;17909:4;17903:3;:10;17891:9;:22;;;;17970:1;17933:40;;17954:6;::::0;::::1;;;;;;;;17933:40;;;;;;;;;;;;17751:234:::0;:::o;30502:151::-;30583:7;30614:11;:18;30626:5;30614:18;;;;;;;;;;;;;;;:27;30633:7;30614:27;;;;;;;;;;;;;;;;30607:34;;30502:151;;;;:::o;38068:106::-;16512:12;:10;:12::i;:::-;16502:22;;:6;;;;;;;;;;:22;;;16494:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38155:7:::1;38141:11;::::0;:21:::1;;;;;;;;;;;;;;;;;;38068:106:::0;:::o;33302:475::-;16512:12;:10;:12::i;:::-;16502:22;;:6;;;;;;;;;;:22;;;16494:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33398:42:::1;33387:53;;:7;:53;;;;33379:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33503:11;:20;33515:7;33503:20;;;;;;;;;;;;;;;;;;;;;;;;;33502:21;33494:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33592:1;33573:7;:16;33581:7;33573:16;;;;;;;;;;;;;;;;:20;33570:116;;;33633:37;33653:7;:16;33661:7;33653:16;;;;;;;;;;;;;;;;33633:19;:37::i;:::-;33614:7;:16;33622:7;33614:16;;;;;;;;;;;;;;;:56;;;;33570:116;33723:4;33700:11;:20;33712:7;33700:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;33742:9;33757:7;33742:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33302:475:::0;:::o;17298:260::-;16512:12;:10;:12::i;:::-;16502:22;;:6;;;;;;;;;;:22;;;16494:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17411:1:::1;17391:22;;:8;:22;;;;17383:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17505:8;17476:38;;17497:6;::::0;::::1;;;;;;;;17476:38;;;;;;;;;;;;17538:8;17529:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;17298:260:::0;:::o;37883:173::-;16512:12;:10;:12::i;:::-;16502:22;;:6;;;;;;;;;;:22;;;16494:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37941:26:::1;37970:21;37941:50;;38006:38;38025:18;38006;:38::i;:::-;16576:1;37883:173::o:0;44370:102::-;44417:7;44448:12;;44441:19;;44370:102;:::o;44484:118::-;44530:15;44569:21;44562:28;;44484:118;:::o;33789:522::-;16512:12;:10;:12::i;:::-;16502:22;;:6;;;;;;;;;;:22;;;16494:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33874:11:::1;:20;33886:7;33874:20;;;;;;;;;;;;;;;;;;;;;;;;;33866:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33946:9;33941:359;33965:9;:16;;;;33961:1;:20;33941:359;;;34027:7;34011:23;;:9;34021:1;34011:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;34007:278;;;34074:9;34103:1;34084:9;:16;;;;:20;34074:31;;;;;;;;;;;;;;;;;;;;;;;;;34059:9;34069:1;34059:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;34147:1;34128:7;:16;34136:7;34128:16;;;;;;;;;;;;;;;:20;;;;34194:5;34171:11;:20;34183:7;34171:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;34222:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34260:5;;34007:278;33983:3;;;;;;;33941:359;;;;33789:522:::0;:::o;45643:204::-;16512:12;:10;:12::i;:::-;16502:22;;:6;;;;;;;;;;:22;;;16494:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45732:9:::1;45728:108;45747:9;;:16;;45743:1;:20;45728:108;;;45816:4;45785:14;:28;45800:9;;45810:1;45800:12;;;;;;;;;;;;;;;45785:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;45765:3;;;;;45728:108;;;;45643:204:::0;;:::o;721:114::-;774:15;813:10;806:17;;721:114;:::o;34917:357::-;35031:1;35014:19;;:5;:19;;;;35006:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35116:1;35097:21;;:7;:21;;;;35089:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35204:6;35174:11;:18;35186:5;35174:18;;;;;;;;;;;;;;;:27;35193:7;35174:27;;;;;;;;;;;;;;;:36;;;;35246:7;35230:32;;35239:5;35230:32;;;35255:6;35230:32;;;;;;;;;;;;;;;;;;34917:357;;;:::o;35286:1655::-;35388:14;:22;35403:6;35388:22;;;;;;;;;;;;;;;;;;;;;;;;;35387:23;:53;;;;;35415:14;:25;35430:9;35415:25;;;;;;;;;;;;;;;;;;;;;;;;;35414:26;35387:53;35379:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35513:1;35495:20;;:6;:20;;;;35487:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35601:1;35580:23;;:9;:23;;;;35572:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35675:1;35666:6;:10;35658:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35764:7;:5;:7::i;:::-;35754:17;;:6;:17;;;;:41;;;;;35788:7;:5;:7::i;:::-;35775:20;;:9;:20;;;;35754:41;35751:138;;;35832:12;;35822:6;:22;;35814:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35751:138;35919:28;35950:24;35968:4;35950:9;:24::i;:::-;35919:55;;36030:12;;36006:20;:36;36003:124;;36099:12;;36076:35;;36003:124;36155:24;36206:34;;36182:20;:58;;36155:85;;36260:6;;;;;;;;;;;36259:7;:22;;;;;36270:11;;;;;;;;;;36259:22;:45;;;;;36285:19;36259:45;:72;;;;;36318:13;36308:23;;:6;:23;;;;36259:72;36255:384;;;36369:38;36386:20;36369:16;:38::i;:::-;36444:26;36473:21;36444:50;;36537:1;36516:18;:22;36513:111;;;36563:41;36582:21;36563:18;:41::i;:::-;36513:111;36255:384;;36677:12;36692:4;36677:19;;36736:18;:26;36755:6;36736:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;36766:18;:29;36785:9;36766:29;;;;;;;;;;;;;;;;;;;;;;;;;36736:59;36733:113;;;36825:5;36815:15;;36733:113;36882:47;36897:6;36904:9;36914:6;36921:7;36882:14;:47::i;:::-;35286:1655;;;;;;:::o;5248:208::-;5334:7;5371:1;5366;:6;;5374:12;5358:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5402:9;5418:1;5414;:5;5402:17;;5443:1;5436:8;;;5248:208;;;;;:::o;43457:175::-;43498:7;43523:15;43540;43559:19;:17;:19::i;:::-;43522:56;;;;43600:20;43612:7;43600;:11;;:20;;;;:::i;:::-;43593:27;;;;43457:175;:::o;6778:140::-;6836:7;6867:39;6871:1;6874;6867:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6860:46;;6778:140;;;;:::o;4251:197::-;4309:7;4333:9;4349:1;4345;:5;4333:17;;4378:1;4373;:6;;4365:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4435:1;4428:8;;;4251:197;;;;:::o;42175:496::-;42234:7;42243;42252;42261;42270;42279;42304:23;42329:12;42343:18;42365:44;42377:7;42386;;42395:13;;42365:11;:44::i;:::-;42303:106;;;;;;42424:19;42447:10;:8;:10::i;:::-;42424:33;;42473:15;42490:23;42515:12;42531:39;42543:7;42552:4;42558:11;42531;:39::i;:::-;42472:98;;;;;;42593:7;42602:15;42619:4;42625:15;42642:4;42648:10;42585:74;;;;;;;;;;;;;;;;;;;42175:496;;;;;;;:::o;4766:144::-;4824:7;4855:43;4859:1;4862;4855:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4848:50;;4766:144;;;;:::o;36953:557::-;28845:4;28836:6;;:13;;;;;;;;;;;;;;;;;;37045:21:::1;37083:1;37069:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37045:40;;37118:4;37100;37105:1;37100:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;37148:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;37138:4;37143:1;37138:7;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;37187:62;37204:4;37219:15;37237:11;37187:8;:62::i;:::-;37277:15;:66;;;37362:11;37392:1;37413:4;37444;37468:15;37277:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28864:1;28889:5:::0;28880:6;;:14;;;;;;;;;;;;;;;;;;36953:557;:::o;37530:145::-;37597:23;;;;;;;;;;;:32;;:54;37630:20;37648:1;37630:13;37641:1;37630:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;37597:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37530:145;:::o;38194:883::-;38310:7;38306:44;;38336:14;:12;:14::i;:::-;38306:44;38371:11;:19;38383:6;38371:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;38395:11;:22;38407:9;38395:22;;;;;;;;;;;;;;;;;;;;;;;;;38394:23;38371:46;38367:637;;;38438:48;38460:6;38468:9;38479:6;38438:21;:48::i;:::-;38367:637;;;38513:11;:19;38525:6;38513:19;;;;;;;;;;;;;;;;;;;;;;;;;38512:20;:46;;;;;38536:11;:22;38548:9;38536:22;;;;;;;;;;;;;;;;;;;;;;;;;38512:46;38508:496;;;38579:46;38599:6;38607:9;38618:6;38579:19;:46::i;:::-;38508:496;;;38652:11;:19;38664:6;38652:19;;;;;;;;;;;;;;;;;;;;;;;;;38651:20;:47;;;;;38676:11;:22;38688:9;38676:22;;;;;;;;;;;;;;;;;;;;;;;;;38675:23;38651:47;38647:357;;;38719:44;38737:6;38745:9;38756:6;38719:17;:44::i;:::-;38647:357;;;38789:11;:19;38801:6;38789:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;38812:11;:22;38824:9;38812:22;;;;;;;;;;;;;;;;;;;;;;;;;38789:45;38785:219;;;38855:48;38877:6;38885:9;38896:6;38855:21;:48::i;:::-;38785:219;;;38944:44;38962:6;38970:9;38981:6;38944:17;:44::i;:::-;38785:219;38647:357;38508:496;38367:637;39024:7;39020:45;;39050:15;:13;:15::i;:::-;39020:45;38194:883;;;;:::o;43644:601::-;43694:7;43703;43727:15;43745:7;;43727:25;;43767:15;43785:7;;43767:25;;43818:9;43813:305;43837:9;:16;;;;43833:1;:20;43813:305;;;43907:7;43883;:21;43891:9;43901:1;43891:12;;;;;;;;;;;;;;;;;;;;;;;;;43883:21;;;;;;;;;;;;;;;;:31;:66;;;;43942:7;43918;:21;43926:9;43936:1;43926:12;;;;;;;;;;;;;;;;;;;;;;;;;43918:21;;;;;;;;;;;;;;;;:31;43883:66;43879:97;;;43959:7;;43968;;43951:25;;;;;;;;;43879:97;44005:34;44017:7;:21;44025:9;44035:1;44025:12;;;;;;;;;;;;;;;;;;;;;;;;;44017:21;;;;;;;;;;;;;;;;44005:7;:11;;:34;;;;:::i;:::-;43995:44;;44068:34;44080:7;:21;44088:9;44098:1;44088:12;;;;;;;;;;;;;;;;;;;;;;;;;44080:21;;;;;;;;;;;;;;;;44068:7;:11;;:34;;;;:::i;:::-;44058:44;;43855:3;;;;;;;43813:305;;;;44146:20;44158:7;;44146;;:11;;:20;;;;:::i;:::-;44136:7;:30;44132:61;;;44176:7;;44185;;44168:25;;;;;;;;44132:61;44216:7;44225;44208:25;;;;;;43644:601;;;:::o;7455:298::-;7541:7;7577:1;7573;:5;7580:12;7565:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7608:9;7624:1;7620;:5;;;;;;7608:17;;7740:1;7733:8;;;7455:298;;;;;:::o;42683:396::-;42781:7;42790;42799;42823:12;42838:28;42862:3;42838:19;42850:6;42838:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;42823:43;;42881:18;42902:34;42932:3;42902:25;42914:12;42902:7;:11;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;42881:55;;42951:23;42977:33;42999:10;42977:17;42989:4;42977:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;42951:59;;43033:15;43050:4;43056:10;43025:42;;;;;;;;;42683:396;;;;;;;:::o;43091:354::-;43186:7;43195;43204;43228:15;43246:24;43258:11;43246:7;:11;;:24;;;;:::i;:::-;43228:42;;43285:12;43300:21;43309:11;43300:4;:8;;:21;;;;:::i;:::-;43285:36;;43336:23;43362:17;43374:4;43362:7;:11;;:17;;;;:::i;:::-;43336:43;;43402:7;43411:15;43428:4;43394:39;;;;;;;;;43091:354;;;;;;;:::o;5750:511::-;5808:7;6074:1;6069;:6;6065:55;;;6103:1;6096:8;;;;6065:55;6136:9;6152:1;6148;:5;6136:17;;6185:1;6180;6176;:5;;;;;;:10;6168:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6248:1;6241:8;;;5750:511;;;;;:::o;34323:282::-;34384:1;34373:7;;:12;:34;;;;;34406:1;34389:13;;:18;34373:34;34370:46;;;34409:7;;34370:46;34462:7;;34444:15;:25;;;;34508:13;;34484:21;:37;;;;34560:1;34550:7;:11;;;;34592:1;34576:13;:17;;;;34323:282;:::o;40267:599::-;40374:15;40391:23;40416:12;40430:23;40455:12;40469:18;40491:19;40502:7;40491:10;:19::i;:::-;40373:137;;;;;;;;;;;;40543:28;40563:7;40543;:15;40551:6;40543:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40525:7;:15;40533:6;40525:15;;;;;;;;;;;;;;;:46;;;;40604:28;40624:7;40604;:15;40612:6;40604:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40586:7;:15;40594:6;40586:15;;;;;;;;;;;;;;;:46;;;;40668:39;40691:15;40668:7;:18;40676:9;40668:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;40647:7;:18;40655:9;40647:18;;;;;;;;;;;;;;;:60;;;;40723:26;40738:10;40723:14;:26::i;:::-;40767:23;40779:4;40785;40767:11;:23::i;:::-;40827:9;40810:44;;40819:6;40810:44;;;40838:15;40810:44;;;;;;;;;;;;;;;;;;40267:599;;;;;;;;;:::o;39633:622::-;39738:15;39755:23;39780:12;39794:23;39819:12;39833:18;39855:19;39866:7;39855:10;:19::i;:::-;39737:137;;;;;;;;;;;;39907:28;39927:7;39907;:15;39915:6;39907:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;39889:7;:15;39897:6;39889:15;;;;;;;;;;;;;;;:46;;;;39971:39;39994:15;39971:7;:18;39979:9;39971:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;39950:7;:18;39958:9;39950:18;;;;;;;;;;;;;;;:60;;;;40046:39;40069:15;40046:7;:18;40054:9;40046:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;40025:7;:18;40033:9;40025:18;;;;;;;;;;;;;;;:60;;;;40104:26;40119:10;40104:14;:26::i;:::-;40156:23;40168:4;40174;40156:11;:23::i;:::-;40216:9;40199:44;;40208:6;40199:44;;;40227:15;40199:44;;;;;;;;;;;;;;;;;;39633:622;;;;;;;;;:::o;39089:532::-;39192:15;39209:23;39234:12;39248:23;39273:12;39287:18;39309:19;39320:7;39309:10;:19::i;:::-;39191:137;;;;;;;;;;;;39361:28;39381:7;39361;:15;39369:6;39361:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;39343:7;:15;39351:6;39343:15;;;;;;;;;;;;;;;:46;;;;39425:39;39448:15;39425:7;:18;39433:9;39425:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;39404:7;:18;39412:9;39404:18;;;;;;;;;;;;;;;:60;;;;39480:26;39495:10;39480:14;:26::i;:::-;39522:23;39534:4;39540;39522:11;:23::i;:::-;39582:9;39565:44;;39574:6;39565:44;;;39593:15;39565:44;;;;;;;;;;;;;;;;;;39089:532;;;;;;;;;:::o;40878:682::-;40985:15;41002:23;41027:12;41041:23;41066:12;41080:18;41102:19;41113:7;41102:10;:19::i;:::-;40984:137;;;;;;;;;;;;41154:28;41174:7;41154;:15;41162:6;41154:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41136:7;:15;41144:6;41136:15;;;;;;;;;;;;;;;:46;;;;41215:28;41235:7;41215;:15;41223:6;41215:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41197:7;:15;41205:6;41197:15;;;;;;;;;;;;;;;:46;;;;41279:39;41302:15;41279:7;:18;41287:9;41279:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41258:7;:18;41266:9;41258:18;;;;;;;;;;;;;;;:60;;;;41354:39;41377:15;41354:7;:18;41362:9;41354:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41333:7;:18;41341:9;41333:18;;;;;;;;;;;;;;;:60;;;;41411:26;41426:10;41411:14;:26::i;:::-;41461:23;41473:4;41479;41461:11;:23::i;:::-;41521:9;41504:44;;41513:6;41504:44;;;41532:15;41504:44;;;;;;;;;;;;;;;;;;40878:682;;;;;;;;;:::o;34621:137::-;34679:15;;34669:7;:25;;;;34725:21;;34709:13;:37;;;;34621:137::o;41572:379::-;41639:19;41662:10;:8;:10::i;:::-;41639:33;;41687:18;41708:27;41723:11;41708:10;:14;;:27;;;;:::i;:::-;41687:48;;41775:38;41802:10;41775:7;:22;41791:4;41775:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;41750:7;:22;41766:4;41750:22;;;;;;;;;;;;;;;:63;;;;41831:11;:26;41851:4;41831:26;;;;;;;;;;;;;;;;;;;;;;;;;41828:111;;;41901:38;41928:10;41901:7;:22;41917:4;41901:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;41876:7;:22;41892:4;41876:22;;;;;;;;;;;;;;;:63;;;;41828:111;41572:379;;;:::o;41963:159::-;42045:17;42057:4;42045:7;;:11;;:17;;;;:::i;:::-;42035:7;:27;;;;42090:20;42105:4;42090:10;;:14;;:20;;;;:::i;:::-;42077:10;:33;;;;41963:159;;:::o

Swarm Source

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