ETH Price: $3,091.41 (-3.66%)
Gas: 7 Gwei

Token

InvasionMars (iM69)
 

Overview

Max Total Supply

69,000,000,000 iM69

Holders

14

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
69mars.eth
Balance
242,853.22500000000001 iM69

Value
$0.00
0x18be942604de4a717fce9f519c23eacbbc1bd078
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:
InvasionMars

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-12
*/

// SPDX-License-Identifier: MIT
// File: @chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol


pragma solidity ^0.8.0;

interface AggregatorV3Interface {
  function decimals() external view returns (uint8);

  function description() external view returns (string memory);

  function version() external view returns (uint256);

  function getRoundData(uint80 _roundId)
    external
    view
    returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );

  function latestRoundData()
    external
    view
    returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );
}

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


pragma solidity >=0.6.2;

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

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

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

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


pragma solidity >=0.6.2;


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

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

// File: @openzeppelin/contracts/security/ReentrancyGuard.sol


// OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

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

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

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

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

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

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

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

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


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

pragma solidity ^0.8.0;

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

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

// File: @openzeppelin/contracts/security/Pausable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        _requirePaused();
        _;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Throws if the contract is paused.
     */
    function _requireNotPaused() internal view virtual {
        require(!paused(), "Pausable: paused");
    }

    /**
     * @dev Throws if the contract is not paused.
     */
    function _requirePaused() internal view virtual {
        require(paused(), "Pausable: not paused");
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

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


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

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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


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

pragma solidity ^0.8.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

// File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol


// OpenZeppelin Contracts (last updated v4.8.2) (token/ERC20/extensions/ERC20Pausable.sol)

pragma solidity ^0.8.0;



/**
 * @dev ERC20 token with pausable token transfers, minting and burning.
 *
 * Useful for scenarios such as preventing trades until the end of an evaluation
 * period, or having an emergency switch for freezing all token transfers in the
 * event of a large bug.
 *
 * IMPORTANT: This contract does not include public pause and unpause functions. In
 * addition to inheriting this contract, you must define both functions, invoking the
 * {Pausable-_pause} and {Pausable-_unpause} internal functions, with appropriate
 * access control, e.g. using {AccessControl} or {Ownable}. Not doing so will
 * make the contract unpausable.
 */
abstract contract ERC20Pausable is ERC20, Pausable {
    /**
     * @dev See {ERC20-_beforeTokenTransfer}.
     *
     * Requirements:
     *
     * - the contract must not be paused.
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        super._beforeTokenTransfer(from, to, amount);

        require(!paused(), "ERC20Pausable: token transfer while paused");
    }
}

// File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol


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

pragma solidity ^0.8.0;



/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}

// File: contracts/iM69.sol


pragma solidity ^0.8.19;










contract InvasionMars is Context, ERC20, ERC20Burnable, ERC20Pausable, ReentrancyGuard {
    AggregatorV3Interface internal priceFeed;
    address payable public owner;
    address public marketingWallet;
    address public devWallet;
    uint256 public BUY_TAX_PERCENT = 0;
    uint256 public SELL_TAX_PERCENT = 0;
    uint256 public constant TOKEN_RATE = 10000;
    uint256 public constant INITIAL_SUPPLY = 69 * 10**9 * 10**18;
    uint256 public constant ANTI_WHALE_PERCENT = 1;
    uint256 public constant MIN_MINT_AMOUNT = 10000 * 10**18;
    uint256 public constant MAX_MINT_PERCENT = 1;
    IUniswapV2Router02 public uniswapRouter;
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => uint256) public lastBalance;
    mapping(address => uint256) private _reflectionRewards;
    address[] private _holders;
    mapping(address => bool) private _isHolder;

    constructor(address _marketingWallet, address _devWallet, address[] memory airdropRecipients, uint256[] memory airdropAmounts) ERC20("InvasionMars", "iM69") {
        require(_marketingWallet != address(0), "Invalid marketing wallet address");
        require(_devWallet != address(0), "Invalid dev wallet address");
        owner = payable(msg.sender);
        marketingWallet = _marketingWallet;
        devWallet = _devWallet;

        // Mint the initial supply to the contract itself
        _mint(address(this), INITIAL_SUPPLY);

        uniswapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        priceFeed = AggregatorV3Interface(0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419); // Replace with the appropriate price feed address for mainnet

        // Distribute tokens to the specified airdrop recipients
        require(airdropRecipients.length == airdropAmounts.length, "Recipients and amounts arrays must have the same length");
        for (uint256 i = 0; i < airdropRecipients.length; i++) {
            address recipient = airdropRecipients[i];
            uint256 amount = airdropAmounts[i];
            _transfer(address(this), recipient, amount);
            lastBalance[recipient] = balanceOf(recipient);
        }
    } // This is the corrected position for the closing brace


    function swapTokensForETH(uint256 tokenAmount) external nonReentrant {
    // Check that the user has enough tokens
    require(balanceOf(msg.sender) >= tokenAmount, "Insufficient token balance");

    // Approve the Uniswap router to spend the user's tokens
    _approve(msg.sender, address(uniswapRouter), tokenAmount);

    // Perform the token swap
    address[] memory path = new address[](2);
    path[0] = address(this);
    path[1] = uniswapRouter.WETH();

    uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
        tokenAmount,
        0, // Accept any amount of ETH
        path,
        msg.sender, // Send ETH to the user
        block.timestamp + 15 // Deadline for the transaction
    );
} // Add the closing parenthesis here

    function addInitialLiquidity(uint256 ethAmount) external payable onlyOwner {
        require(msg.value == ethAmount, "ETH amount mismatch");

            // 3. Get the current ETH/USD price
            (, int256 ethPrice, , , ) = priceFeed.latestRoundData();
            require(ethPrice > 0, "Invalid ETH price");

            // 4. Calculate the amount of tokens based on the ETH price
            uint256 tokenAmount = ethAmount * uint256(ethPrice) * TOKEN_RATE / 10**8;

            // 5. Add liquidity to Uniswap
            _approve(address(this), address(uniswapRouter), tokenAmount);
            uniswapRouter.addLiquidityETH{value: ethAmount}(
                address(this),
                tokenAmount,
                0, // slippage is unavoidable
                0, // slippage is unavoidable
                owner,
                block.timestamp + 15
            );
        
    }

    function batchTransfer(address[] memory recipients, uint256[] memory amounts) public onlyOwner{
        require(recipients.length == amounts.length, "Mismatched recipients and amounts arrays length.");

        for (uint256 i = 0; i < recipients.length; i++) {
            _transfer(msg.sender, recipients[i], amounts[i]);
        }
    }

    function _addHolder(address holder) internal {
        if (!_isHolder[holder]) {
            _holders.push(holder);
            _isHolder[holder] = true;
        }
    }

        function _getHoldersCount() internal view returns (uint256) {
        return _holders.length;
    }

    function _getHolderAt(uint256 index) internal view returns (address) {
        require(index < _holders.length, "Index out of bounds");
        return _holders[index];
    }

    function _distributeReflection(uint256 reflectionFee) internal {
        uint256 totalSupply = totalSupply();
        if (totalSupply == 0) {
            return;
        }

        uint256 totalReflection = 0;
        for (uint256 i = 0; i < _getHoldersCount(); i++) {
            address holder = _getHolderAt(i);
            uint256 holderShare = reflectionFee * balanceOf(holder) / totalSupply;
            _reflectionRewards[holder] += holderShare;
            totalReflection += holderShare;
        }

        // Burn any remaining reflection rewards due to rounding errors
        if (totalReflection < reflectionFee) {
            _burn(address(this), reflectionFee - totalReflection);
        }
    }

    function balanceOfWithReflection(address account) public view returns (uint256) {
        return super.balanceOf(account) + _reflectionRewards[account];
    }

    function balanceOf(address account) public view override returns (uint256) {
        return balanceOfWithReflection(account);
    }

    function _transfer(address sender, address recipient, uint256 amount) internal override {
    // Handle reflection rewards before calling the parent _transfer() method
    uint256 taxPercent = (sender == owner || recipient == owner) ? BUY_TAX_PERCENT : SELL_TAX_PERCENT;
    uint256 reflectionReward = calculateReflectionReward(recipient, taxPercent);
    _reflectionRewards[recipient] += reflectionReward;

    // Call the parent _transfer() method
    super._transfer(sender, recipient, amount);
    }


    function _beforeTokenTransfer(address from, address to, uint256 amount) internal override(ERC20, ERC20Pausable) {
        super._beforeTokenTransfer(from, to, amount);
    }

    // ... Rest of the contract code ...

    function mint(address to, uint256 value) public onlyOwner {
        require(value >= MIN_MINT_AMOUNT, "Minimum mint amount not met");
        uint256 availableSupply = totalSupply() * MAX_MINT_PERCENT / 100;
        require(value <= availableSupply, "Mint amount exceeds maximum limit");
        require(balanceOf(to) + value <= availableSupply * ANTI_WHALE_PERCENT / 100, "Transfer amount exceeds anti-whale limit");

        // Mint the new tokens
        _mint(to, value);
        // Update the last balance of the recipient
        lastBalance[to] = balanceOf(to);
    }

    function mintRewards() public onlyOwner {
        uint256 rewardsAmount = calculateRewardsAmount();
        _mint(devWallet, rewardsAmount);
        lastBalance[devWallet] = balanceOf(devWallet);
    }

    function calculateMarketingFee(uint256 amount) public view returns (uint256) {
        return amount * BUY_TAX_PERCENT / 100;
    }

    function calculateReflectionFee(uint256 amount) public view returns (uint256) {
        return amount * SELL_TAX_PERCENT / 100;
    }

    function calculateRewardsAmount() public view returns (uint256) {
        uint256 availableSupply = totalSupply() * MAX_MINT_PERCENT / 100;
        uint256 currentSupply = totalSupply() - balanceOf(devWallet);
        return availableSupply - currentSupply;
    }

    function calculateTotalFees(uint256 amount) public view returns (uint256) {
        uint256 marketingFee = calculateMarketingFee(amount);
        uint256 reflectionFee = calculateReflectionFee(amount);
        return marketingFee + reflectionFee;
    }

        function calculateTransferAmount(uint256 amount) public view returns (uint256) {
        uint256 fees = calculateTotalFees(amount);
        return amount - fees;
    }

    function calculateReflectionReward(address recipient, uint256 taxPercent) public view returns (uint256) {
        uint256 currentBalance = balanceOf(recipient);
        uint256 lastBalanceSnapshot = lastBalance[recipient];
        uint256 reflectionReward = (currentBalance - lastBalanceSnapshot) * taxPercent / 100;
        return reflectionReward;
    }

    function setBuyTaxPercent(uint256 newBuyTaxPercent) public onlyOwner {
        require(newBuyTaxPercent >= 0 && newBuyTaxPercent <= 100, "Invalid buy tax percent");
        BUY_TAX_PERCENT = newBuyTaxPercent;
    }

    function setSellTaxPercent(uint256 newSellTaxPercent) public onlyOwner {
        require(newSellTaxPercent >= 0 && newSellTaxPercent <= 100, "Invalid sell tax percent");
        SELL_TAX_PERCENT = newSellTaxPercent;
    }

    function transfer(address to, uint256 value) public override returns (bool) {
        uint256 transferAmount = value;
        uint256 marketingFee = 0;
        uint256 reflectionReward = 0;

        if (!isExcludedFromFee[_msgSender()] && !isExcludedFromFee[to]) {
            uint256 taxPercent = (_msgSender() == owner || to == owner) ? BUY_TAX_PERCENT : SELL_TAX_PERCENT;
            transferAmount = value * (100 - taxPercent) / 100;
            marketingFee = value * taxPercent / 100;
            reflectionReward = calculateReflectionReward(to, taxPercent);
        }
        _transfer(_msgSender(), to, transferAmount);
        _addHolder(_msgSender());
        _addHolder(to);

        if (marketingFee > 0 || reflectionReward > 0) {
            _transfer(to, marketingWallet, marketingFee + reflectionReward);
        }

        lastBalance[to] = balanceOf(to);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) public override returns (bool) {
        uint256 transferAmount = value;
        uint256 marketingFee = 0;
        uint256 reflectionReward = 0;

        if (!isExcludedFromFee[from] && !isExcludedFromFee[to]) {
            uint256 taxPercent = (from == owner || to == owner) ? BUY_TAX_PERCENT : SELL_TAX_PERCENT;
            transferAmount = value * (100 - taxPercent) / 100;
            marketingFee = value * taxPercent / 100;
            reflectionReward = calculateReflectionReward(to, taxPercent);
        }

        _transfer(from, to, transferAmount);
        _approve(from, _msgSender(), allowance(from, _msgSender()) - value + transferAmount);

        if (marketingFee > 0 || reflectionReward > 0) {
            _transfer(to, marketingWallet, marketingFee + reflectionReward);
        }

        lastBalance[to] = balanceOf(to);
        return true;
    }

    function excludeFromFee(address account) public onlyOwner {
        isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        isExcludedFromFee[account] = false;
    }

    function setMarketingWallet(address _marketingWallet) public onlyOwner {
        require(_marketingWallet != address(0), "Invalid marketing wallet address");
        marketingWallet = _marketingWallet;
    }

    function setDevWallet(address _devWallet) public onlyOwner {
        require(_devWallet != address(0), "Invalid dev walletaddress");
	devWallet = _devWallet;
	}
	function burn(uint256 value) public override onlyOwner {
    super.burn(value);
	}

	function pause() public onlyOwner {
		_pause();
	}

	function unpause() public onlyOwner {
		_unpause();
	}

    modifier onlyOwner() {
        require(msg.sender == owner, "Only the contract owner can call this function");
        _;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"},{"internalType":"address[]","name":"airdropRecipients","type":"address[]"},{"internalType":"uint256[]","name":"airdropAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"ANTI_WHALE_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BUY_TAX_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_MINT_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_MINT_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SELL_TAX_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"addInitialLiquidity","outputs":[],"stateMutability":"payable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOfWithReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"batchTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calculateMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calculateReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"taxPercent","type":"uint256"}],"name":"calculateReflectionReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calculateRewardsAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calculateTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calculateTransferAmount","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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTaxPercent","type":"uint256"}],"name":"setBuyTaxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellTaxPercent","type":"uint256"}],"name":"setSellTaxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"swapTokensForETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600b556000600c553480156200001b57600080fd5b506040516200675338038062006753833981810160405281019062000041919062000ecb565b6040518060400160405280600c81526020017f496e766173696f6e4d61727300000000000000000000000000000000000000008152506040518060400160405280600481526020017f694d3639000000000000000000000000000000000000000000000000000000008152508160039081620000be9190620011bc565b508060049081620000d09190620011bc565b5050506000600560006101000a81548160ff0219169083151502179055506001600681905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160362000168576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200015f9062001304565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620001da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001d19062001376565b60405180910390fd5b33600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002bb306bdef376571332906a880000006200048760201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735f4ec3df9cbd43714fe2740f5e3616155c5b8419600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508051825114620003ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003a3906200140e565b60405180910390fd5b60005b82518110156200047c576000838281518110620003d157620003d062001430565b5b602002602001015190506000838381518110620003f357620003f262001430565b5b6020026020010151905062000410308383620005f460201b60201c565b62000421826200073c60201b60201c565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050808062000473906200148e565b915050620003af565b505050505062001903565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004f0906200152b565b60405180910390fd5b6200050d600083836200075660201b60201c565b80600260008282546200052191906200154d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005d4919062001599565b60405180910390a3620005f0600083836200076e60201b60201c565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620006a05750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b620006ae57600c54620006b2565b600b545b90506000620006c884836200077360201b60201c565b905080601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200071b91906200154d565b92505081905550620007358585856200080660201b60201c565b5050505050565b60006200074f8262000a9760201b60201c565b9050919050565b6200076983838362000afd60201b60201c565b505050565b505050565b60008062000787846200073c60201b60201c565b90506000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006064858385620007e09190620015b6565b620007ec9190620015f1565b620007f891906200166b565b905080935050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000878576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200086f9062001719565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008e190620017b1565b60405180910390fd5b620008fd8383836200075660201b60201c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101562000986576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200097d9062001849565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405162000a76919062001599565b60405180910390a362000a918484846200076e60201b60201c565b50505050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000aea8362000b6860201b60201c565b62000af691906200154d565b9050919050565b62000b1083838362000bb060201b60201c565b62000b2062000bb560201b60201c565b1562000b63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b5a90620018e1565b60405180910390fd5b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b505050565b6000600560009054906101000a900460ff16905090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c0d8262000be0565b9050919050565b62000c1f8162000c00565b811462000c2b57600080fd5b50565b60008151905062000c3f8162000c14565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000c958262000c4a565b810181811067ffffffffffffffff8211171562000cb75762000cb662000c5b565b5b80604052505050565b600062000ccc62000bcc565b905062000cda828262000c8a565b919050565b600067ffffffffffffffff82111562000cfd5762000cfc62000c5b565b5b602082029050602081019050919050565b600080fd5b600062000d2a62000d248462000cdf565b62000cc0565b9050808382526020820190506020840283018581111562000d505762000d4f62000d0e565b5b835b8181101562000d7d578062000d68888262000c2e565b84526020840193505060208101905062000d52565b5050509392505050565b600082601f83011262000d9f5762000d9e62000c45565b5b815162000db184826020860162000d13565b91505092915050565b600067ffffffffffffffff82111562000dd85762000dd762000c5b565b5b602082029050602081019050919050565b6000819050919050565b62000dfe8162000de9565b811462000e0a57600080fd5b50565b60008151905062000e1e8162000df3565b92915050565b600062000e3b62000e358462000dba565b62000cc0565b9050808382526020820190506020840283018581111562000e615762000e6062000d0e565b5b835b8181101562000e8e578062000e79888262000e0d565b84526020840193505060208101905062000e63565b5050509392505050565b600082601f83011262000eb05762000eaf62000c45565b5b815162000ec284826020860162000e24565b91505092915050565b6000806000806080858703121562000ee85762000ee762000bd6565b5b600062000ef88782880162000c2e565b945050602062000f0b8782880162000c2e565b935050604085015167ffffffffffffffff81111562000f2f5762000f2e62000bdb565b5b62000f3d8782880162000d87565b925050606085015167ffffffffffffffff81111562000f615762000f6062000bdb565b5b62000f6f8782880162000e98565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000fce57607f821691505b60208210810362000fe45762000fe362000f86565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200104e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200100f565b6200105a86836200100f565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200109d62001097620010918462000de9565b62001072565b62000de9565b9050919050565b6000819050919050565b620010b9836200107c565b620010d1620010c882620010a4565b8484546200101c565b825550505050565b600090565b620010e8620010d9565b620010f5818484620010ae565b505050565b5b818110156200111d5762001111600082620010de565b600181019050620010fb565b5050565b601f8211156200116c57620011368162000fea565b620011418462000fff565b8101602085101562001151578190505b62001169620011608562000fff565b830182620010fa565b50505b505050565b600082821c905092915050565b6000620011916000198460080262001171565b1980831691505092915050565b6000620011ac83836200117e565b9150826002028217905092915050565b620011c78262000f7b565b67ffffffffffffffff811115620011e357620011e262000c5b565b5b620011ef825462000fb5565b620011fc82828562001121565b600060209050601f8311600181146200123457600084156200121f578287015190505b6200122b85826200119e565b8655506200129b565b601f198416620012448662000fea565b60005b828110156200126e5784890151825560018201915060208501945060208101905062001247565b868310156200128e57848901516200128a601f8916826200117e565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f496e76616c6964206d61726b6574696e672077616c6c65742061646472657373600082015250565b6000620012ec602083620012a3565b9150620012f982620012b4565b602082019050919050565b600060208201905081810360008301526200131f81620012dd565b9050919050565b7f496e76616c6964206465762077616c6c65742061646472657373000000000000600082015250565b60006200135e601a83620012a3565b91506200136b8262001326565b602082019050919050565b6000602082019050818103600083015262001391816200134f565b9050919050565b7f526563697069656e747320616e6420616d6f756e747320617272617973206d7560008201527f73742068617665207468652073616d65206c656e677468000000000000000000602082015250565b6000620013f6603783620012a3565b9150620014038262001398565b604082019050919050565b600060208201905081810360008301526200142981620013e7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200149b8262000de9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620014d057620014cf6200145f565b5b600182019050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001513601f83620012a3565b91506200152082620014db565b602082019050919050565b60006020820190508181036000830152620015468162001504565b9050919050565b60006200155a8262000de9565b9150620015678362000de9565b92508282019050808211156200158257620015816200145f565b5b92915050565b620015938162000de9565b82525050565b6000602082019050620015b0600083018462001588565b92915050565b6000620015c38262000de9565b9150620015d08362000de9565b9250828203905081811115620015eb57620015ea6200145f565b5b92915050565b6000620015fe8262000de9565b91506200160b8362000de9565b92508282026200161b8162000de9565b915082820484148315176200163557620016346200145f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620016788262000de9565b9150620016858362000de9565b9250826200169857620016976200163c565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600062001701602583620012a3565b91506200170e82620016a3565b604082019050919050565b600060208201905081810360008301526200173481620016f2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600062001799602383620012a3565b9150620017a6826200173b565b604082019050919050565b60006020820190508181036000830152620017cc816200178a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600062001831602683620012a3565b91506200183e82620017d3565b604082019050919050565b60006020820190508181036000830152620018648162001822565b9050919050565b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b6000620018c9602a83620012a3565b9150620018d6826200186b565b604082019050919050565b60006020820190508181036000830152620018fc81620018ba565b9050919050565b614e4080620019136000396000f3fe6080604052600436106102885760003560e01c8063735de9f71161015a578063b416d1a3116100c1578063e56a645e1161007a578063e56a645e146109ff578063ea2f0b3714610a28578063ee42d3a314610a51578063f3acb4d514610a8e578063f83c2d0d14610ab7578063fd46aa1914610ae257610288565b8063b416d1a3146108c9578063c5c7647a146108f4578063d469686314610931578063d56926a01461096e578063dd62ed3e14610999578063e5685bed146109d657610288565b80638ce8e9d7116101135780638ce8e9d7146107a35780638da5cb5b146107ce5780638ea5220f146107f957806395d89b4114610824578063a457c2d71461084f578063a9059cbb1461088c57610288565b8063735de9f7146106a75780637400243c146106d257806375f0a8741461070f57806379cc67901461073a5780638456cb591461076357806388d695b21461077a57610288565b8063398ef5bd116101fe578063437823ec116101b7578063437823ec146105855780634d0adf6b146105ae5780635342acb4146105d95780635c975abb146106165780635d098b381461064157806370a082311461066a57610288565b8063398ef5bd146104985780633f4ba83a146104d557806340c10f19146104ec5780634174f1a51461051557806341a22cc21461054057806342966c681461055c57610288565b8063234cb05111610250578063234cb0511461038657806323b872dd1461039d5780632ac234c0146103da5780632ff2e9dc14610405578063313ce56714610430578063395093511461045b57610288565b806306fdde031461028d57806307fad7ae146102b8578063095ea7b3146102f557806318160ddd146103325780631f53ac021461035d575b600080fd5b34801561029957600080fd5b506102a2610b1f565b6040516102af91906135b1565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da919061361d565b610bb1565b6040516102ec9190613659565b60405180910390f35b34801561030157600080fd5b5061031c600480360381019061031791906136d2565b610bd4565b604051610329919061372d565b60405180910390f35b34801561033e57600080fd5b50610347610bf7565b6040516103549190613659565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f9190613748565b610c01565b005b34801561039257600080fd5b5061039b610d44565b005b3480156103a957600080fd5b506103c460048036038101906103bf9190613775565b610e9f565b6040516103d1919061372d565b60405180910390f35b3480156103e657600080fd5b506103ef611146565b6040516103fc9190613659565b60405180910390f35b34801561041157600080fd5b5061041a61114b565b6040516104279190613659565b60405180910390f35b34801561043c57600080fd5b5061044561115b565b60405161045291906137e4565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d91906136d2565b611164565b60405161048f919061372d565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba91906136d2565b61119b565b6040516104cc9190613659565b60405180910390f35b3480156104e157600080fd5b506104ea611220565b005b3480156104f857600080fd5b50610513600480360381019061050e91906136d2565b6112ba565b005b34801561052157600080fd5b5061052a6114c7565b6040516105379190613659565b60405180910390f35b61055a6004803603810190610555919061361d565b6114cd565b005b34801561056857600080fd5b50610583600480360381019061057e919061361d565b6117b4565b005b34801561059157600080fd5b506105ac60048036038101906105a79190613748565b611850565b005b3480156105ba57600080fd5b506105c361193b565b6040516105d09190613659565b60405180910390f35b3480156105e557600080fd5b5061060060048036038101906105fb9190613748565b611940565b60405161060d919061372d565b60405180910390f35b34801561062257600080fd5b5061062b611960565b604051610638919061372d565b60405180910390f35b34801561064d57600080fd5b5061066860048036038101906106639190613748565b611977565b005b34801561067657600080fd5b50610691600480360381019061068c9190613748565b611aba565b60405161069e9190613659565b60405180910390f35b3480156106b357600080fd5b506106bc611acc565b6040516106c9919061385e565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f4919061361d565b611af2565b6040516107069190613659565b60405180910390f35b34801561071b57600080fd5b50610724611b22565b6040516107319190613888565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c91906136d2565b611b48565b005b34801561076f57600080fd5b50610778611b68565b005b34801561078657600080fd5b506107a1600480360381019061079c9190613aae565b611c02565b005b3480156107af57600080fd5b506107b8611d39565b6040516107c59190613659565b60405180910390f35b3480156107da57600080fd5b506107e3611d3f565b6040516107f09190613b47565b60405180910390f35b34801561080557600080fd5b5061080e611d65565b60405161081b9190613888565b60405180910390f35b34801561083057600080fd5b50610839611d8b565b60405161084691906135b1565b60405180910390f35b34801561085b57600080fd5b50610876600480360381019061087191906136d2565b611e1d565b604051610883919061372d565b60405180910390f35b34801561089857600080fd5b506108b360048036038101906108ae91906136d2565b611e94565b6040516108c0919061372d565b60405180910390f35b3480156108d557600080fd5b506108de612130565b6040516108eb9190613659565b60405180910390f35b34801561090057600080fd5b5061091b6004803603810190610916919061361d565b612136565b6040516109289190613659565b60405180910390f35b34801561093d57600080fd5b5061095860048036038101906109539190613748565b612159565b6040516109659190613659565b60405180910390f35b34801561097a57600080fd5b506109836121b5565b6040516109909190613659565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb9190613b62565b6121c3565b6040516109cd9190613659565b60405180910390f35b3480156109e257600080fd5b506109fd60048036038101906109f8919061361d565b61224a565b005b348015610a0b57600080fd5b50610a266004803603810190610a21919061361d565b612335565b005b348015610a3457600080fd5b50610a4f6004803603810190610a4a9190613748565b6125df565b005b348015610a5d57600080fd5b50610a786004803603810190610a739190613748565b6126ca565b604051610a859190613659565b60405180910390f35b348015610a9a57600080fd5b50610ab56004803603810190610ab0919061361d565b6126e2565b005b348015610ac357600080fd5b50610acc6127cd565b604051610ad99190613659565b60405180910390f35b348015610aee57600080fd5b50610b096004803603810190610b04919061361d565b612846565b604051610b169190613659565b60405180910390f35b606060038054610b2e90613bd1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5a90613bd1565b8015610ba75780601f10610b7c57610100808354040283529160200191610ba7565b820191906000526020600020905b815481529060010190602001808311610b8a57829003601f168201915b5050505050905090565b60006064600c5483610bc39190613c31565b610bcd9190613ca2565b9050919050565b600080610bdf612868565b9050610bec818585612870565b600191505092915050565b6000600254905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890613d45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf790613db1565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90613d45565b60405180910390fd5b6000610dde6127cd565b9050610e0c600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612a39565b610e37600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611aba565b600f6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600080829050600080600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015610f4c5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561105c576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161480610ffc5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b61100857600c5461100c565b600b545b9050606481606461101d9190613dd1565b876110289190613c31565b6110329190613ca2565b9350606481876110429190613c31565b61104c9190613ca2565b9250611058878261119b565b9150505b611067878785612b8f565b61109f87611073612868565b85886110868c611081612868565b6121c3565b6110909190613dd1565b61109a9190613e05565b612870565b60008211806110ae5750600081115b156110ec576110eb86600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683856110e69190613e05565b612b8f565b5b6110f586611aba565b600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050509392505050565b600181565b6bdef376571332906a8800000081565b60006012905090565b60008061116f612868565b905061119081858561118185896121c3565b61118b9190613e05565b612870565b600191505092915050565b6000806111a784611aba565b90506000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600060648583856111fe9190613dd1565b6112089190613c31565b6112129190613ca2565b905080935050505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a790613d45565b60405180910390fd5b6112b8612cc2565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461134a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134190613d45565b60405180910390fd5b69021e19e0c9bab2400000811015611397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138e90613e85565b60405180910390fd5b6000606460016113a5610bf7565b6113af9190613c31565b6113b99190613ca2565b9050808211156113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590613f17565b60405180910390fd5b606460018261140d9190613c31565b6114179190613ca2565b8261142185611aba565b61142b9190613e05565b111561146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146390613fa9565b60405180910390fd5b6114768383612a39565b61147f83611aba565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61271081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461155d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155490613d45565b60405180910390fd5b80341461159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159690614015565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561160e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163291906140c2565b5050509150506000811361167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290614189565b60405180910390fd5b60006305f5e10061271083856116919190613c31565b61169b9190613c31565b6116a59190613ca2565b90506116d430600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612870565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719843084600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f426117489190613e05565b6040518863ffffffff1660e01b815260040161176996959493929190614205565b60606040518083038185885af1158015611787573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117ac9190614266565b505050505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183b90613d45565b60405180910390fd5b61184d81612d25565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d790613d45565b60405180910390fd5b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600181565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600560009054906101000a900460ff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe90613d45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6d90614305565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611ac582612159565b9050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080611afe83612136565b90506000611b0b84610bb1565b90508082611b199190613e05565b92505050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b5a82611b54612868565b83612d39565b611b648282612dc5565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bef90613d45565b60405180910390fd5b611c00612f92565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8990613d45565b60405180910390fd5b8051825114611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd90614397565b60405180910390fd5b60005b8251811015611d3457611d2133848381518110611cf957611cf86143b7565b5b6020026020010151848481518110611d1457611d136143b7565b5b6020026020010151612b8f565b8080611d2c906143e6565b915050611cd9565b505050565b600c5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054611d9a90613bd1565b80601f0160208091040260200160405190810160405280929190818152602001828054611dc690613bd1565b8015611e135780601f10611de857610100808354040283529160200191611e13565b820191906000526020600020905b815481529060010190602001808311611df657829003601f168201915b5050505050905090565b600080611e28612868565b90506000611e3682866121c3565b905083811015611e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e72906144a0565b60405180910390fd5b611e888286868403612870565b60019250505092915050565b600080829050600080600e6000611ea9612868565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f485750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561205f576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611f90612868565b73ffffffffffffffffffffffffffffffffffffffff161480611fff5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b61200b57600c5461200f565b600b545b905060648160646120209190613dd1565b8761202b9190613c31565b6120359190613ca2565b9350606481876120459190613c31565b61204f9190613ca2565b925061205b878261119b565b9150505b61207161206a612868565b8785612b8f565b61208161207c612868565b612ff5565b61208a86612ff5565b60008211806120995750600081115b156120d7576120d686600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683856120d19190613e05565b612b8f565b5b6120e086611aba565b600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001935050505092915050565b600b5481565b60006064600b54836121489190613c31565b6121529190613ca2565b9050919050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121a483613105565b6121ae9190613e05565b9050919050565b69021e19e0c9bab240000081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d190613d45565b60405180910390fd5b600081101580156122ec575060648111155b61232b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123229061450c565b60405180910390fd5b80600c8190555050565b61233d61314d565b8061234733611aba565b1015612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237f90614578565b60405180910390fd5b6123b533600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612870565b6000600267ffffffffffffffff8111156123d2576123d16138a8565b5b6040519080825280602002602001820160405280156124005781602001602082028036833780820191505090505b5090503081600081518110612418576124176143b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e391906145ad565b816001815181106124f7576124f66143b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008433600f426125819190613e05565b6040518663ffffffff1660e01b81526004016125a1959493929190614698565b600060405180830381600087803b1580156125bb57600080fd5b505af11580156125cf573d6000803e3d6000fd5b50505050506125dc61319c565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461266f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266690613d45565b60405180910390fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f6020528060005260406000206000915090505481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276990613d45565b60405180910390fd5b60008110158015612784575060648111155b6127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba9061473e565b60405180910390fd5b80600b8190555050565b600080606460016127dc610bf7565b6127e69190613c31565b6127f09190613ca2565b9050600061281f600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611aba565b612827610bf7565b6128319190613dd1565b9050808261283f9190613dd1565b9250505090565b60008061285283611af2565b905080836128609190613dd1565b915050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d6906147d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361294e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294590614862565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a2c9190613659565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9f906148ce565b60405180910390fd5b612ab4600083836131a6565b8060026000828254612ac69190613e05565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b779190613659565b60405180910390a3612b8b600083836131b6565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612c3a5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b612c4657600c54612c4a565b600b545b90506000612c58848361119b565b905080601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ca99190613e05565b92505081905550612cbb8585856131bb565b5050505050565b612cca613431565b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612d0e612868565b604051612d1b9190613888565b60405180910390a1565b612d36612d30612868565b82612dc5565b50565b6000612d4584846121c3565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612dbf5781811015612db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da89061493a565b60405180910390fd5b612dbe8484848403612870565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2b906149cc565b60405180910390fd5b612e40826000836131a6565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebd90614a5e565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f799190613659565b60405180910390a3612f8d836000846131b6565b505050565b612f9a61347a565b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612fde612868565b604051612feb9190613888565b60405180910390a1565b601260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613102576011819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260065403613192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318990614aca565b60405180910390fd5b6002600681905550565b6001600681905550565b6131b18383836134c4565b505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361322a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322190614b5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329090614bee565b60405180910390fd5b6132a48383836131a6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561332a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332190614c80565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134189190613659565b60405180910390a361342b8484846131b6565b50505050565b613439611960565b613478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346f90614cec565b60405180910390fd5b565b613482611960565b156134c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b990614d58565b60405180910390fd5b565b6134cf83838361351c565b6134d7611960565b15613517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350e90614dea565b60405180910390fd5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561355b578082015181840152602081019050613540565b60008484015250505050565b6000601f19601f8301169050919050565b600061358382613521565b61358d818561352c565b935061359d81856020860161353d565b6135a681613567565b840191505092915050565b600060208201905081810360008301526135cb8184613578565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6135fa816135e7565b811461360557600080fd5b50565b600081359050613617816135f1565b92915050565b600060208284031215613633576136326135dd565b5b600061364184828501613608565b91505092915050565b613653816135e7565b82525050565b600060208201905061366e600083018461364a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061369f82613674565b9050919050565b6136af81613694565b81146136ba57600080fd5b50565b6000813590506136cc816136a6565b92915050565b600080604083850312156136e9576136e86135dd565b5b60006136f7858286016136bd565b925050602061370885828601613608565b9150509250929050565b60008115159050919050565b61372781613712565b82525050565b6000602082019050613742600083018461371e565b92915050565b60006020828403121561375e5761375d6135dd565b5b600061376c848285016136bd565b91505092915050565b60008060006060848603121561378e5761378d6135dd565b5b600061379c868287016136bd565b93505060206137ad868287016136bd565b92505060406137be86828701613608565b9150509250925092565b600060ff82169050919050565b6137de816137c8565b82525050565b60006020820190506137f960008301846137d5565b92915050565b6000819050919050565b600061382461381f61381a84613674565b6137ff565b613674565b9050919050565b600061383682613809565b9050919050565b60006138488261382b565b9050919050565b6138588161383d565b82525050565b6000602082019050613873600083018461384f565b92915050565b61388281613694565b82525050565b600060208201905061389d6000830184613879565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6138e082613567565b810181811067ffffffffffffffff821117156138ff576138fe6138a8565b5b80604052505050565b60006139126135d3565b905061391e82826138d7565b919050565b600067ffffffffffffffff82111561393e5761393d6138a8565b5b602082029050602081019050919050565b600080fd5b600061396761396284613923565b613908565b9050808382526020820190506020840283018581111561398a5761398961394f565b5b835b818110156139b3578061399f88826136bd565b84526020840193505060208101905061398c565b5050509392505050565b600082601f8301126139d2576139d16138a3565b5b81356139e2848260208601613954565b91505092915050565b600067ffffffffffffffff821115613a0657613a056138a8565b5b602082029050602081019050919050565b6000613a2a613a25846139eb565b613908565b90508083825260208201905060208402830185811115613a4d57613a4c61394f565b5b835b81811015613a765780613a628882613608565b845260208401935050602081019050613a4f565b5050509392505050565b600082601f830112613a9557613a946138a3565b5b8135613aa5848260208601613a17565b91505092915050565b60008060408385031215613ac557613ac46135dd565b5b600083013567ffffffffffffffff811115613ae357613ae26135e2565b5b613aef858286016139bd565b925050602083013567ffffffffffffffff811115613b1057613b0f6135e2565b5b613b1c85828601613a80565b9150509250929050565b6000613b3182613674565b9050919050565b613b4181613b26565b82525050565b6000602082019050613b5c6000830184613b38565b92915050565b60008060408385031215613b7957613b786135dd565b5b6000613b87858286016136bd565b9250506020613b98858286016136bd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613be957607f821691505b602082108103613bfc57613bfb613ba2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c3c826135e7565b9150613c47836135e7565b9250828202613c55816135e7565b91508282048414831517613c6c57613c6b613c02565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613cad826135e7565b9150613cb8836135e7565b925082613cc857613cc7613c73565b5b828204905092915050565b7f4f6e6c792074686520636f6e7472616374206f776e65722063616e2063616c6c60008201527f20746869732066756e6374696f6e000000000000000000000000000000000000602082015250565b6000613d2f602e8361352c565b9150613d3a82613cd3565b604082019050919050565b60006020820190508181036000830152613d5e81613d22565b9050919050565b7f496e76616c6964206465762077616c6c65746164647265737300000000000000600082015250565b6000613d9b60198361352c565b9150613da682613d65565b602082019050919050565b60006020820190508181036000830152613dca81613d8e565b9050919050565b6000613ddc826135e7565b9150613de7836135e7565b9250828203905081811115613dff57613dfe613c02565b5b92915050565b6000613e10826135e7565b9150613e1b836135e7565b9250828201905080821115613e3357613e32613c02565b5b92915050565b7f4d696e696d756d206d696e7420616d6f756e74206e6f74206d65740000000000600082015250565b6000613e6f601b8361352c565b9150613e7a82613e39565b602082019050919050565b60006020820190508181036000830152613e9e81613e62565b9050919050565b7f4d696e7420616d6f756e742065786365656473206d6178696d756d206c696d6960008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f0160218361352c565b9150613f0c82613ea5565b604082019050919050565b60006020820190508181036000830152613f3081613ef4565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320616e74692d77686160008201527f6c65206c696d6974000000000000000000000000000000000000000000000000602082015250565b6000613f9360288361352c565b9150613f9e82613f37565b604082019050919050565b60006020820190508181036000830152613fc281613f86565b9050919050565b7f45544820616d6f756e74206d69736d6174636800000000000000000000000000600082015250565b6000613fff60138361352c565b915061400a82613fc9565b602082019050919050565b6000602082019050818103600083015261402e81613ff2565b9050919050565b600069ffffffffffffffffffff82169050919050565b61405481614035565b811461405f57600080fd5b50565b6000815190506140718161404b565b92915050565b6000819050919050565b61408a81614077565b811461409557600080fd5b50565b6000815190506140a781614081565b92915050565b6000815190506140bc816135f1565b92915050565b600080600080600060a086880312156140de576140dd6135dd565b5b60006140ec88828901614062565b95505060206140fd88828901614098565b945050604061410e888289016140ad565b935050606061411f888289016140ad565b925050608061413088828901614062565b9150509295509295909350565b7f496e76616c696420455448207072696365000000000000000000000000000000600082015250565b600061417360118361352c565b915061417e8261413d565b602082019050919050565b600060208201905081810360008301526141a281614166565b9050919050565b6000819050919050565b60006141ce6141c96141c4846141a9565b6137ff565b6135e7565b9050919050565b6141de816141b3565b82525050565b60006141ef8261382b565b9050919050565b6141ff816141e4565b82525050565b600060c08201905061421a6000830189613879565b614227602083018861364a565b61423460408301876141d5565b61424160608301866141d5565b61424e60808301856141f6565b61425b60a083018461364a565b979650505050505050565b60008060006060848603121561427f5761427e6135dd565b5b600061428d868287016140ad565b935050602061429e868287016140ad565b92505060406142af868287016140ad565b9150509250925092565b7f496e76616c6964206d61726b6574696e672077616c6c65742061646472657373600082015250565b60006142ef60208361352c565b91506142fa826142b9565b602082019050919050565b6000602082019050818103600083015261431e816142e2565b9050919050565b7f4d69736d61746368656420726563697069656e747320616e6420616d6f756e7460008201527f7320617272617973206c656e6774682e00000000000000000000000000000000602082015250565b600061438160308361352c565b915061438c82614325565b604082019050919050565b600060208201905081810360008301526143b081614374565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006143f1826135e7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361442357614422613c02565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061448a60258361352c565b91506144958261442e565b604082019050919050565b600060208201905081810360008301526144b98161447d565b9050919050565b7f496e76616c69642073656c6c207461782070657263656e740000000000000000600082015250565b60006144f660188361352c565b9150614501826144c0565b602082019050919050565b60006020820190508181036000830152614525816144e9565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e6365000000000000600082015250565b6000614562601a8361352c565b915061456d8261452c565b602082019050919050565b6000602082019050818103600083015261459181614555565b9050919050565b6000815190506145a7816136a6565b92915050565b6000602082840312156145c3576145c26135dd565b5b60006145d184828501614598565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61460f81613694565b82525050565b60006146218383614606565b60208301905092915050565b6000602082019050919050565b6000614645826145da565b61464f81856145e5565b935061465a836145f6565b8060005b8381101561468b5781516146728882614615565b975061467d8361462d565b92505060018101905061465e565b5085935050505092915050565b600060a0820190506146ad600083018861364a565b6146ba60208301876141d5565b81810360408301526146cc818661463a565b90506146db6060830185613879565b6146e8608083018461364a565b9695505050505050565b7f496e76616c696420627579207461782070657263656e74000000000000000000600082015250565b600061472860178361352c565b9150614733826146f2565b602082019050919050565b600060208201905081810360008301526147578161471b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006147ba60248361352c565b91506147c58261475e565b604082019050919050565b600060208201905081810360008301526147e9816147ad565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061484c60228361352c565b9150614857826147f0565b604082019050919050565b6000602082019050818103600083015261487b8161483f565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006148b8601f8361352c565b91506148c382614882565b602082019050919050565b600060208201905081810360008301526148e7816148ab565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614924601d8361352c565b915061492f826148ee565b602082019050919050565b6000602082019050818103600083015261495381614917565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006149b660218361352c565b91506149c18261495a565b604082019050919050565b600060208201905081810360008301526149e5816149a9565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a4860228361352c565b9150614a53826149ec565b604082019050919050565b60006020820190508181036000830152614a7781614a3b565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000614ab4601f8361352c565b9150614abf82614a7e565b602082019050919050565b60006020820190508181036000830152614ae381614aa7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614b4660258361352c565b9150614b5182614aea565b604082019050919050565b60006020820190508181036000830152614b7581614b39565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614bd860238361352c565b9150614be382614b7c565b604082019050919050565b60006020820190508181036000830152614c0781614bcb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614c6a60268361352c565b9150614c7582614c0e565b604082019050919050565b60006020820190508181036000830152614c9981614c5d565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000614cd660148361352c565b9150614ce182614ca0565b602082019050919050565b60006020820190508181036000830152614d0581614cc9565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000614d4260108361352c565b9150614d4d82614d0c565b602082019050919050565b60006020820190508181036000830152614d7181614d35565b9050919050565b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b6000614dd4602a8361352c565b9150614ddf82614d78565b604082019050919050565b60006020820190508181036000830152614e0381614dc7565b905091905056fea26469706673582212207073370a5c6abe3232101bebcf897e5623121f73e035250af4c2cc4629f57d5164736f6c6343000813003300000000000000000000000018be942604de4a717fce9f519c23eacbbc1bd078000000000000000000000000543cb0157f517c39bde98d7f2965c37621c1cef7000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000000090000000000000000000000004e9ce36e442e55ecd9025b9a6e0d88485d628a67000000000000000000000000bc8e8e75aa42284d9587160f8212852311bf917b000000000000000000000000c6b357ff3e81b75d13aacc97695f92a0fda67c480000000000000000000000002fc4d047a71f619bf63ab82449491ef44d03a3f7000000000000000000000000b7e401c952eb244cc4a079ef0bd20a471df71d36000000000000000000000000c1b2451e752ddd436b6cf1eb1d17db73bc434655000000000000000000000000f7901ed24a81b92dfea6e0e3f52b48a98c53957700000000000000000000000048e7344ecf7d1f9c4d5141f3f6b18910d3bc1410000000000000000000000000f241d7306ac62dcc16eb1b04f05d745c71c791a1000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000003635c9adc5dea0000000000000000000000000000000000000000000000006ba11125826dc365800000000000000000000000000000000000000000000000472e0ce635329a3600000000000000000000000000000000000000000000000016214b8fe5283681000000000000000000000000000000000000000000000000b58f6887be38fbaf0000000000000000000000000000000000000000000000013e342ccb4aa28b6c00000000000000000000000000000000000000000000015f8d402a5236804900000000000000000000000000000000000000000000000010f363024c8fb943a0400000000000000000000000000000000000000000000008b7d6492f2f9ec83200000

Deployed Bytecode

0x6080604052600436106102885760003560e01c8063735de9f71161015a578063b416d1a3116100c1578063e56a645e1161007a578063e56a645e146109ff578063ea2f0b3714610a28578063ee42d3a314610a51578063f3acb4d514610a8e578063f83c2d0d14610ab7578063fd46aa1914610ae257610288565b8063b416d1a3146108c9578063c5c7647a146108f4578063d469686314610931578063d56926a01461096e578063dd62ed3e14610999578063e5685bed146109d657610288565b80638ce8e9d7116101135780638ce8e9d7146107a35780638da5cb5b146107ce5780638ea5220f146107f957806395d89b4114610824578063a457c2d71461084f578063a9059cbb1461088c57610288565b8063735de9f7146106a75780637400243c146106d257806375f0a8741461070f57806379cc67901461073a5780638456cb591461076357806388d695b21461077a57610288565b8063398ef5bd116101fe578063437823ec116101b7578063437823ec146105855780634d0adf6b146105ae5780635342acb4146105d95780635c975abb146106165780635d098b381461064157806370a082311461066a57610288565b8063398ef5bd146104985780633f4ba83a146104d557806340c10f19146104ec5780634174f1a51461051557806341a22cc21461054057806342966c681461055c57610288565b8063234cb05111610250578063234cb0511461038657806323b872dd1461039d5780632ac234c0146103da5780632ff2e9dc14610405578063313ce56714610430578063395093511461045b57610288565b806306fdde031461028d57806307fad7ae146102b8578063095ea7b3146102f557806318160ddd146103325780631f53ac021461035d575b600080fd5b34801561029957600080fd5b506102a2610b1f565b6040516102af91906135b1565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da919061361d565b610bb1565b6040516102ec9190613659565b60405180910390f35b34801561030157600080fd5b5061031c600480360381019061031791906136d2565b610bd4565b604051610329919061372d565b60405180910390f35b34801561033e57600080fd5b50610347610bf7565b6040516103549190613659565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f9190613748565b610c01565b005b34801561039257600080fd5b5061039b610d44565b005b3480156103a957600080fd5b506103c460048036038101906103bf9190613775565b610e9f565b6040516103d1919061372d565b60405180910390f35b3480156103e657600080fd5b506103ef611146565b6040516103fc9190613659565b60405180910390f35b34801561041157600080fd5b5061041a61114b565b6040516104279190613659565b60405180910390f35b34801561043c57600080fd5b5061044561115b565b60405161045291906137e4565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d91906136d2565b611164565b60405161048f919061372d565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba91906136d2565b61119b565b6040516104cc9190613659565b60405180910390f35b3480156104e157600080fd5b506104ea611220565b005b3480156104f857600080fd5b50610513600480360381019061050e91906136d2565b6112ba565b005b34801561052157600080fd5b5061052a6114c7565b6040516105379190613659565b60405180910390f35b61055a6004803603810190610555919061361d565b6114cd565b005b34801561056857600080fd5b50610583600480360381019061057e919061361d565b6117b4565b005b34801561059157600080fd5b506105ac60048036038101906105a79190613748565b611850565b005b3480156105ba57600080fd5b506105c361193b565b6040516105d09190613659565b60405180910390f35b3480156105e557600080fd5b5061060060048036038101906105fb9190613748565b611940565b60405161060d919061372d565b60405180910390f35b34801561062257600080fd5b5061062b611960565b604051610638919061372d565b60405180910390f35b34801561064d57600080fd5b5061066860048036038101906106639190613748565b611977565b005b34801561067657600080fd5b50610691600480360381019061068c9190613748565b611aba565b60405161069e9190613659565b60405180910390f35b3480156106b357600080fd5b506106bc611acc565b6040516106c9919061385e565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f4919061361d565b611af2565b6040516107069190613659565b60405180910390f35b34801561071b57600080fd5b50610724611b22565b6040516107319190613888565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c91906136d2565b611b48565b005b34801561076f57600080fd5b50610778611b68565b005b34801561078657600080fd5b506107a1600480360381019061079c9190613aae565b611c02565b005b3480156107af57600080fd5b506107b8611d39565b6040516107c59190613659565b60405180910390f35b3480156107da57600080fd5b506107e3611d3f565b6040516107f09190613b47565b60405180910390f35b34801561080557600080fd5b5061080e611d65565b60405161081b9190613888565b60405180910390f35b34801561083057600080fd5b50610839611d8b565b60405161084691906135b1565b60405180910390f35b34801561085b57600080fd5b50610876600480360381019061087191906136d2565b611e1d565b604051610883919061372d565b60405180910390f35b34801561089857600080fd5b506108b360048036038101906108ae91906136d2565b611e94565b6040516108c0919061372d565b60405180910390f35b3480156108d557600080fd5b506108de612130565b6040516108eb9190613659565b60405180910390f35b34801561090057600080fd5b5061091b6004803603810190610916919061361d565b612136565b6040516109289190613659565b60405180910390f35b34801561093d57600080fd5b5061095860048036038101906109539190613748565b612159565b6040516109659190613659565b60405180910390f35b34801561097a57600080fd5b506109836121b5565b6040516109909190613659565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb9190613b62565b6121c3565b6040516109cd9190613659565b60405180910390f35b3480156109e257600080fd5b506109fd60048036038101906109f8919061361d565b61224a565b005b348015610a0b57600080fd5b50610a266004803603810190610a21919061361d565b612335565b005b348015610a3457600080fd5b50610a4f6004803603810190610a4a9190613748565b6125df565b005b348015610a5d57600080fd5b50610a786004803603810190610a739190613748565b6126ca565b604051610a859190613659565b60405180910390f35b348015610a9a57600080fd5b50610ab56004803603810190610ab0919061361d565b6126e2565b005b348015610ac357600080fd5b50610acc6127cd565b604051610ad99190613659565b60405180910390f35b348015610aee57600080fd5b50610b096004803603810190610b04919061361d565b612846565b604051610b169190613659565b60405180910390f35b606060038054610b2e90613bd1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5a90613bd1565b8015610ba75780601f10610b7c57610100808354040283529160200191610ba7565b820191906000526020600020905b815481529060010190602001808311610b8a57829003601f168201915b5050505050905090565b60006064600c5483610bc39190613c31565b610bcd9190613ca2565b9050919050565b600080610bdf612868565b9050610bec818585612870565b600191505092915050565b6000600254905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890613d45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf790613db1565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90613d45565b60405180910390fd5b6000610dde6127cd565b9050610e0c600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612a39565b610e37600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611aba565b600f6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600080829050600080600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015610f4c5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561105c576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161480610ffc5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b61100857600c5461100c565b600b545b9050606481606461101d9190613dd1565b876110289190613c31565b6110329190613ca2565b9350606481876110429190613c31565b61104c9190613ca2565b9250611058878261119b565b9150505b611067878785612b8f565b61109f87611073612868565b85886110868c611081612868565b6121c3565b6110909190613dd1565b61109a9190613e05565b612870565b60008211806110ae5750600081115b156110ec576110eb86600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683856110e69190613e05565b612b8f565b5b6110f586611aba565b600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050509392505050565b600181565b6bdef376571332906a8800000081565b60006012905090565b60008061116f612868565b905061119081858561118185896121c3565b61118b9190613e05565b612870565b600191505092915050565b6000806111a784611aba565b90506000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600060648583856111fe9190613dd1565b6112089190613c31565b6112129190613ca2565b905080935050505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a790613d45565b60405180910390fd5b6112b8612cc2565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461134a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134190613d45565b60405180910390fd5b69021e19e0c9bab2400000811015611397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138e90613e85565b60405180910390fd5b6000606460016113a5610bf7565b6113af9190613c31565b6113b99190613ca2565b9050808211156113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590613f17565b60405180910390fd5b606460018261140d9190613c31565b6114179190613ca2565b8261142185611aba565b61142b9190613e05565b111561146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146390613fa9565b60405180910390fd5b6114768383612a39565b61147f83611aba565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61271081565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461155d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155490613d45565b60405180910390fd5b80341461159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159690614015565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561160e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163291906140c2565b5050509150506000811361167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290614189565b60405180910390fd5b60006305f5e10061271083856116919190613c31565b61169b9190613c31565b6116a59190613ca2565b90506116d430600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612870565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719843084600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f426117489190613e05565b6040518863ffffffff1660e01b815260040161176996959493929190614205565b60606040518083038185885af1158015611787573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117ac9190614266565b505050505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183b90613d45565b60405180910390fd5b61184d81612d25565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d790613d45565b60405180910390fd5b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600181565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600560009054906101000a900460ff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe90613d45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6d90614305565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611ac582612159565b9050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080611afe83612136565b90506000611b0b84610bb1565b90508082611b199190613e05565b92505050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b5a82611b54612868565b83612d39565b611b648282612dc5565b5050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bef90613d45565b60405180910390fd5b611c00612f92565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8990613d45565b60405180910390fd5b8051825114611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd90614397565b60405180910390fd5b60005b8251811015611d3457611d2133848381518110611cf957611cf86143b7565b5b6020026020010151848481518110611d1457611d136143b7565b5b6020026020010151612b8f565b8080611d2c906143e6565b915050611cd9565b505050565b600c5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054611d9a90613bd1565b80601f0160208091040260200160405190810160405280929190818152602001828054611dc690613bd1565b8015611e135780601f10611de857610100808354040283529160200191611e13565b820191906000526020600020905b815481529060010190602001808311611df657829003601f168201915b5050505050905090565b600080611e28612868565b90506000611e3682866121c3565b905083811015611e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e72906144a0565b60405180910390fd5b611e888286868403612870565b60019250505092915050565b600080829050600080600e6000611ea9612868565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f485750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561205f576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611f90612868565b73ffffffffffffffffffffffffffffffffffffffff161480611fff5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b61200b57600c5461200f565b600b545b905060648160646120209190613dd1565b8761202b9190613c31565b6120359190613ca2565b9350606481876120459190613c31565b61204f9190613ca2565b925061205b878261119b565b9150505b61207161206a612868565b8785612b8f565b61208161207c612868565b612ff5565b61208a86612ff5565b60008211806120995750600081115b156120d7576120d686600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683856120d19190613e05565b612b8f565b5b6120e086611aba565b600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001935050505092915050565b600b5481565b60006064600b54836121489190613c31565b6121529190613ca2565b9050919050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121a483613105565b6121ae9190613e05565b9050919050565b69021e19e0c9bab240000081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d190613d45565b60405180910390fd5b600081101580156122ec575060648111155b61232b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123229061450c565b60405180910390fd5b80600c8190555050565b61233d61314d565b8061234733611aba565b1015612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237f90614578565b60405180910390fd5b6123b533600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612870565b6000600267ffffffffffffffff8111156123d2576123d16138a8565b5b6040519080825280602002602001820160405280156124005781602001602082028036833780820191505090505b5090503081600081518110612418576124176143b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e391906145ad565b816001815181106124f7576124f66143b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008433600f426125819190613e05565b6040518663ffffffff1660e01b81526004016125a1959493929190614698565b600060405180830381600087803b1580156125bb57600080fd5b505af11580156125cf573d6000803e3d6000fd5b50505050506125dc61319c565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461266f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266690613d45565b60405180910390fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f6020528060005260406000206000915090505481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276990613d45565b60405180910390fd5b60008110158015612784575060648111155b6127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba9061473e565b60405180910390fd5b80600b8190555050565b600080606460016127dc610bf7565b6127e69190613c31565b6127f09190613ca2565b9050600061281f600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611aba565b612827610bf7565b6128319190613dd1565b9050808261283f9190613dd1565b9250505090565b60008061285283611af2565b905080836128609190613dd1565b915050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d6906147d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361294e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294590614862565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a2c9190613659565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9f906148ce565b60405180910390fd5b612ab4600083836131a6565b8060026000828254612ac69190613e05565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b779190613659565b60405180910390a3612b8b600083836131b6565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612c3a5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b612c4657600c54612c4a565b600b545b90506000612c58848361119b565b905080601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ca99190613e05565b92505081905550612cbb8585856131bb565b5050505050565b612cca613431565b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612d0e612868565b604051612d1b9190613888565b60405180910390a1565b612d36612d30612868565b82612dc5565b50565b6000612d4584846121c3565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612dbf5781811015612db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da89061493a565b60405180910390fd5b612dbe8484848403612870565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2b906149cc565b60405180910390fd5b612e40826000836131a6565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebd90614a5e565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f799190613659565b60405180910390a3612f8d836000846131b6565b505050565b612f9a61347a565b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612fde612868565b604051612feb9190613888565b60405180910390a1565b601260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613102576011819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600260065403613192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318990614aca565b60405180910390fd5b6002600681905550565b6001600681905550565b6131b18383836134c4565b505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361322a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322190614b5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329090614bee565b60405180910390fd5b6132a48383836131a6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561332a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332190614c80565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134189190613659565b60405180910390a361342b8484846131b6565b50505050565b613439611960565b613478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346f90614cec565b60405180910390fd5b565b613482611960565b156134c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b990614d58565b60405180910390fd5b565b6134cf83838361351c565b6134d7611960565b15613517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350e90614dea565b60405180910390fd5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561355b578082015181840152602081019050613540565b60008484015250505050565b6000601f19601f8301169050919050565b600061358382613521565b61358d818561352c565b935061359d81856020860161353d565b6135a681613567565b840191505092915050565b600060208201905081810360008301526135cb8184613578565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6135fa816135e7565b811461360557600080fd5b50565b600081359050613617816135f1565b92915050565b600060208284031215613633576136326135dd565b5b600061364184828501613608565b91505092915050565b613653816135e7565b82525050565b600060208201905061366e600083018461364a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061369f82613674565b9050919050565b6136af81613694565b81146136ba57600080fd5b50565b6000813590506136cc816136a6565b92915050565b600080604083850312156136e9576136e86135dd565b5b60006136f7858286016136bd565b925050602061370885828601613608565b9150509250929050565b60008115159050919050565b61372781613712565b82525050565b6000602082019050613742600083018461371e565b92915050565b60006020828403121561375e5761375d6135dd565b5b600061376c848285016136bd565b91505092915050565b60008060006060848603121561378e5761378d6135dd565b5b600061379c868287016136bd565b93505060206137ad868287016136bd565b92505060406137be86828701613608565b9150509250925092565b600060ff82169050919050565b6137de816137c8565b82525050565b60006020820190506137f960008301846137d5565b92915050565b6000819050919050565b600061382461381f61381a84613674565b6137ff565b613674565b9050919050565b600061383682613809565b9050919050565b60006138488261382b565b9050919050565b6138588161383d565b82525050565b6000602082019050613873600083018461384f565b92915050565b61388281613694565b82525050565b600060208201905061389d6000830184613879565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6138e082613567565b810181811067ffffffffffffffff821117156138ff576138fe6138a8565b5b80604052505050565b60006139126135d3565b905061391e82826138d7565b919050565b600067ffffffffffffffff82111561393e5761393d6138a8565b5b602082029050602081019050919050565b600080fd5b600061396761396284613923565b613908565b9050808382526020820190506020840283018581111561398a5761398961394f565b5b835b818110156139b3578061399f88826136bd565b84526020840193505060208101905061398c565b5050509392505050565b600082601f8301126139d2576139d16138a3565b5b81356139e2848260208601613954565b91505092915050565b600067ffffffffffffffff821115613a0657613a056138a8565b5b602082029050602081019050919050565b6000613a2a613a25846139eb565b613908565b90508083825260208201905060208402830185811115613a4d57613a4c61394f565b5b835b81811015613a765780613a628882613608565b845260208401935050602081019050613a4f565b5050509392505050565b600082601f830112613a9557613a946138a3565b5b8135613aa5848260208601613a17565b91505092915050565b60008060408385031215613ac557613ac46135dd565b5b600083013567ffffffffffffffff811115613ae357613ae26135e2565b5b613aef858286016139bd565b925050602083013567ffffffffffffffff811115613b1057613b0f6135e2565b5b613b1c85828601613a80565b9150509250929050565b6000613b3182613674565b9050919050565b613b4181613b26565b82525050565b6000602082019050613b5c6000830184613b38565b92915050565b60008060408385031215613b7957613b786135dd565b5b6000613b87858286016136bd565b9250506020613b98858286016136bd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613be957607f821691505b602082108103613bfc57613bfb613ba2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c3c826135e7565b9150613c47836135e7565b9250828202613c55816135e7565b91508282048414831517613c6c57613c6b613c02565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613cad826135e7565b9150613cb8836135e7565b925082613cc857613cc7613c73565b5b828204905092915050565b7f4f6e6c792074686520636f6e7472616374206f776e65722063616e2063616c6c60008201527f20746869732066756e6374696f6e000000000000000000000000000000000000602082015250565b6000613d2f602e8361352c565b9150613d3a82613cd3565b604082019050919050565b60006020820190508181036000830152613d5e81613d22565b9050919050565b7f496e76616c6964206465762077616c6c65746164647265737300000000000000600082015250565b6000613d9b60198361352c565b9150613da682613d65565b602082019050919050565b60006020820190508181036000830152613dca81613d8e565b9050919050565b6000613ddc826135e7565b9150613de7836135e7565b9250828203905081811115613dff57613dfe613c02565b5b92915050565b6000613e10826135e7565b9150613e1b836135e7565b9250828201905080821115613e3357613e32613c02565b5b92915050565b7f4d696e696d756d206d696e7420616d6f756e74206e6f74206d65740000000000600082015250565b6000613e6f601b8361352c565b9150613e7a82613e39565b602082019050919050565b60006020820190508181036000830152613e9e81613e62565b9050919050565b7f4d696e7420616d6f756e742065786365656473206d6178696d756d206c696d6960008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f0160218361352c565b9150613f0c82613ea5565b604082019050919050565b60006020820190508181036000830152613f3081613ef4565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320616e74692d77686160008201527f6c65206c696d6974000000000000000000000000000000000000000000000000602082015250565b6000613f9360288361352c565b9150613f9e82613f37565b604082019050919050565b60006020820190508181036000830152613fc281613f86565b9050919050565b7f45544820616d6f756e74206d69736d6174636800000000000000000000000000600082015250565b6000613fff60138361352c565b915061400a82613fc9565b602082019050919050565b6000602082019050818103600083015261402e81613ff2565b9050919050565b600069ffffffffffffffffffff82169050919050565b61405481614035565b811461405f57600080fd5b50565b6000815190506140718161404b565b92915050565b6000819050919050565b61408a81614077565b811461409557600080fd5b50565b6000815190506140a781614081565b92915050565b6000815190506140bc816135f1565b92915050565b600080600080600060a086880312156140de576140dd6135dd565b5b60006140ec88828901614062565b95505060206140fd88828901614098565b945050604061410e888289016140ad565b935050606061411f888289016140ad565b925050608061413088828901614062565b9150509295509295909350565b7f496e76616c696420455448207072696365000000000000000000000000000000600082015250565b600061417360118361352c565b915061417e8261413d565b602082019050919050565b600060208201905081810360008301526141a281614166565b9050919050565b6000819050919050565b60006141ce6141c96141c4846141a9565b6137ff565b6135e7565b9050919050565b6141de816141b3565b82525050565b60006141ef8261382b565b9050919050565b6141ff816141e4565b82525050565b600060c08201905061421a6000830189613879565b614227602083018861364a565b61423460408301876141d5565b61424160608301866141d5565b61424e60808301856141f6565b61425b60a083018461364a565b979650505050505050565b60008060006060848603121561427f5761427e6135dd565b5b600061428d868287016140ad565b935050602061429e868287016140ad565b92505060406142af868287016140ad565b9150509250925092565b7f496e76616c6964206d61726b6574696e672077616c6c65742061646472657373600082015250565b60006142ef60208361352c565b91506142fa826142b9565b602082019050919050565b6000602082019050818103600083015261431e816142e2565b9050919050565b7f4d69736d61746368656420726563697069656e747320616e6420616d6f756e7460008201527f7320617272617973206c656e6774682e00000000000000000000000000000000602082015250565b600061438160308361352c565b915061438c82614325565b604082019050919050565b600060208201905081810360008301526143b081614374565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006143f1826135e7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361442357614422613c02565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061448a60258361352c565b91506144958261442e565b604082019050919050565b600060208201905081810360008301526144b98161447d565b9050919050565b7f496e76616c69642073656c6c207461782070657263656e740000000000000000600082015250565b60006144f660188361352c565b9150614501826144c0565b602082019050919050565b60006020820190508181036000830152614525816144e9565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e6365000000000000600082015250565b6000614562601a8361352c565b915061456d8261452c565b602082019050919050565b6000602082019050818103600083015261459181614555565b9050919050565b6000815190506145a7816136a6565b92915050565b6000602082840312156145c3576145c26135dd565b5b60006145d184828501614598565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61460f81613694565b82525050565b60006146218383614606565b60208301905092915050565b6000602082019050919050565b6000614645826145da565b61464f81856145e5565b935061465a836145f6565b8060005b8381101561468b5781516146728882614615565b975061467d8361462d565b92505060018101905061465e565b5085935050505092915050565b600060a0820190506146ad600083018861364a565b6146ba60208301876141d5565b81810360408301526146cc818661463a565b90506146db6060830185613879565b6146e8608083018461364a565b9695505050505050565b7f496e76616c696420627579207461782070657263656e74000000000000000000600082015250565b600061472860178361352c565b9150614733826146f2565b602082019050919050565b600060208201905081810360008301526147578161471b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006147ba60248361352c565b91506147c58261475e565b604082019050919050565b600060208201905081810360008301526147e9816147ad565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061484c60228361352c565b9150614857826147f0565b604082019050919050565b6000602082019050818103600083015261487b8161483f565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006148b8601f8361352c565b91506148c382614882565b602082019050919050565b600060208201905081810360008301526148e7816148ab565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614924601d8361352c565b915061492f826148ee565b602082019050919050565b6000602082019050818103600083015261495381614917565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006149b660218361352c565b91506149c18261495a565b604082019050919050565b600060208201905081810360008301526149e5816149a9565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a4860228361352c565b9150614a53826149ec565b604082019050919050565b60006020820190508181036000830152614a7781614a3b565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000614ab4601f8361352c565b9150614abf82614a7e565b602082019050919050565b60006020820190508181036000830152614ae381614aa7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614b4660258361352c565b9150614b5182614aea565b604082019050919050565b60006020820190508181036000830152614b7581614b39565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614bd860238361352c565b9150614be382614b7c565b604082019050919050565b60006020820190508181036000830152614c0781614bcb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614c6a60268361352c565b9150614c7582614c0e565b604082019050919050565b60006020820190508181036000830152614c9981614c5d565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000614cd660148361352c565b9150614ce182614ca0565b602082019050919050565b60006020820190508181036000830152614d0581614cc9565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000614d4260108361352c565b9150614d4d82614d0c565b602082019050919050565b60006020820190508181036000830152614d7181614d35565b9050919050565b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b6000614dd4602a8361352c565b9150614ddf82614d78565b604082019050919050565b60006020820190508181036000830152614e0381614dc7565b905091905056fea26469706673582212207073370a5c6abe3232101bebcf897e5623121f73e035250af4c2cc4629f57d5164736f6c63430008130033

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

00000000000000000000000018be942604de4a717fce9f519c23eacbbc1bd078000000000000000000000000543cb0157f517c39bde98d7f2965c37621c1cef7000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000000090000000000000000000000004e9ce36e442e55ecd9025b9a6e0d88485d628a67000000000000000000000000bc8e8e75aa42284d9587160f8212852311bf917b000000000000000000000000c6b357ff3e81b75d13aacc97695f92a0fda67c480000000000000000000000002fc4d047a71f619bf63ab82449491ef44d03a3f7000000000000000000000000b7e401c952eb244cc4a079ef0bd20a471df71d36000000000000000000000000c1b2451e752ddd436b6cf1eb1d17db73bc434655000000000000000000000000f7901ed24a81b92dfea6e0e3f52b48a98c53957700000000000000000000000048e7344ecf7d1f9c4d5141f3f6b18910d3bc1410000000000000000000000000f241d7306ac62dcc16eb1b04f05d745c71c791a1000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000003635c9adc5dea0000000000000000000000000000000000000000000000006ba11125826dc365800000000000000000000000000000000000000000000000472e0ce635329a3600000000000000000000000000000000000000000000000016214b8fe5283681000000000000000000000000000000000000000000000000b58f6887be38fbaf0000000000000000000000000000000000000000000000013e342ccb4aa28b6c00000000000000000000000000000000000000000000015f8d402a5236804900000000000000000000000000000000000000000000000010f363024c8fb943a0400000000000000000000000000000000000000000000008b7d6492f2f9ec83200000

-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0x18BE942604DE4a717fcE9F519c23eAcbBc1bd078
Arg [1] : _devWallet (address): 0x543cB0157f517c39bDe98D7F2965c37621C1cEf7
Arg [2] : airdropRecipients (address[]): 0x4E9ce36E442e55EcD9025B9a6E0D88485d628A67,0xBc8e8e75Aa42284d9587160F8212852311Bf917B,0xC6B357ff3e81b75d13aaCc97695f92A0Fda67c48,0x2FC4D047a71f619BF63ab82449491eF44D03a3F7,0xb7E401C952EB244CC4a079eF0BD20a471dF71d36,0xc1b2451E752dDd436B6CF1EB1d17DB73Bc434655,0xF7901eD24a81B92DFEA6e0e3F52B48A98c539577,0x48E7344Ecf7d1F9C4d5141f3f6B18910D3BC1410,0xF241d7306aC62Dcc16Eb1b04f05D745C71c791A1
Arg [3] : airdropAmounts (uint256[]): 1000000000000000000000,8132230000000000000000000,5378200000000000000000000,1672100000000000000000000,13718300000000000000000000,24042800000000000000000000,6800000000000000000000000000,327874793000000000000000000,168632840000000000000000000

-----Encoded View---------------
24 Constructor Arguments found :
Arg [0] : 00000000000000000000000018be942604de4a717fce9f519c23eacbbc1bd078
Arg [1] : 000000000000000000000000543cb0157f517c39bde98d7f2965c37621c1cef7
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [3] : 00000000000000000000000000000000000000000000000000000000000001c0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [5] : 0000000000000000000000004e9ce36e442e55ecd9025b9a6e0d88485d628a67
Arg [6] : 000000000000000000000000bc8e8e75aa42284d9587160f8212852311bf917b
Arg [7] : 000000000000000000000000c6b357ff3e81b75d13aacc97695f92a0fda67c48
Arg [8] : 0000000000000000000000002fc4d047a71f619bf63ab82449491ef44d03a3f7
Arg [9] : 000000000000000000000000b7e401c952eb244cc4a079ef0bd20a471df71d36
Arg [10] : 000000000000000000000000c1b2451e752ddd436b6cf1eb1d17db73bc434655
Arg [11] : 000000000000000000000000f7901ed24a81b92dfea6e0e3f52b48a98c539577
Arg [12] : 00000000000000000000000048e7344ecf7d1f9c4d5141f3f6b18910d3bc1410
Arg [13] : 000000000000000000000000f241d7306ac62dcc16eb1b04f05d745c71c791a1
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [15] : 00000000000000000000000000000000000000000000003635c9adc5dea00000
Arg [16] : 00000000000000000000000000000000000000000006ba11125826dc36580000
Arg [17] : 0000000000000000000000000000000000000000000472e0ce635329a3600000
Arg [18] : 000000000000000000000000000000000000000000016214b8fe528368100000
Arg [19] : 0000000000000000000000000000000000000000000b58f6887be38fbaf00000
Arg [20] : 00000000000000000000000000000000000000000013e342ccb4aa28b6c00000
Arg [21] : 000000000000000000000000000000000000000015f8d402a523680490000000
Arg [22] : 0000000000000000000000000000000000000000010f363024c8fb943a040000
Arg [23] : 0000000000000000000000000000000000000000008b7d6492f2f9ec83200000


Deployed Bytecode Sourcemap

31881:12081:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18114:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39424:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20465:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19234:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43451:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39070:205;;;;;;;;;;;;;:::i;:::-;;42040:950;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32440:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32257:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19076:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21950:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40288:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43763:56;;;;;;;;;;;;;:::i;:::-;;38478:584;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32208:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34932:915;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43617:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42998:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32324:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32537:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11374:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43233:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37589:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32491:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39842:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32057:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31631:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43706:52;;;;;;;;;;;;;:::i;:::-;;35855:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32166:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32022:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32094:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18333:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22691:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41113:919;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32125:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39283:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37421:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32377:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19994:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40881:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34147:741;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43116:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32594:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40656:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39567:267;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40110:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18114:100;18168:13;18201:5;18194:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18114:100;:::o;39424:135::-;39493:7;39548:3;39529:16;;39520:6;:25;;;;:::i;:::-;:31;;;;:::i;:::-;39513:38;;39424:135;;;:::o;20465:201::-;20548:4;20565:13;20581:12;:10;:12::i;:::-;20565:28;;20604:32;20613:5;20620:7;20629:6;20604:8;:32::i;:::-;20654:4;20647:11;;;20465:201;;;;:::o;19234:108::-;19295:7;19322:12;;19315:19;;19234:108;:::o;43451:163::-;43881:5;;;;;;;;;;;43867:19;;:10;:19;;;43859:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;43551:1:::1;43529:24;;:10;:24;;::::0;43521:62:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;43599:10;43587:9;;:22;;;;;;;;;;;;;;;;;;43451:163:::0;:::o;39070:205::-;43881:5;;;;;;;;;;;43867:19;;:10;:19;;;43859:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;39121:21:::1;39145:24;:22;:24::i;:::-;39121:48;;39180:31;39186:9;;;;;;;;;;;39197:13;39180:5;:31::i;:::-;39247:20;39257:9;;;;;;;;;;;39247;:20::i;:::-;39222:11;:22;39234:9;;;;;;;;;;;39222:22;;;;;;;;;;;;;;;:45;;;;39110:165;39070:205::o:0;42040:950::-;42128:4;42145:22;42170:5;42145:30;;42186:20;42221:24;42267:17;:23;42285:4;42267:23;;;;;;;;;;;;;;;;;;;;;;;;;42266:24;:50;;;;;42295:17;:21;42313:2;42295:21;;;;;;;;;;;;;;;;;;;;;;;;;42294:22;42266:50;42262:364;;;42333:18;42363:5;;;;;;;;;;;42355:13;;:4;:13;;;:28;;;;42378:5;;;;;;;;;;;42372:11;;:2;:11;;;42355:28;42354:67;;42405:16;;42354:67;;;42387:15;;42354:67;42333:88;;42482:3;42468:10;42462:3;:16;;;;:::i;:::-;42453:5;:26;;;;:::i;:::-;:32;;;;:::i;:::-;42436:49;;42536:3;42523:10;42515:5;:18;;;;:::i;:::-;:24;;;;:::i;:::-;42500:39;;42573:41;42599:2;42603:10;42573:25;:41::i;:::-;42554:60;;42318:308;42262:364;42638:35;42648:4;42654:2;42658:14;42638:9;:35::i;:::-;42684:84;42693:4;42699:12;:10;:12::i;:::-;42753:14;42745:5;42713:29;42723:4;42729:12;:10;:12::i;:::-;42713:9;:29::i;:::-;:37;;;;:::i;:::-;:54;;;;:::i;:::-;42684:8;:84::i;:::-;42800:1;42785:12;:16;:40;;;;42824:1;42805:16;:20;42785:40;42781:136;;;42842:63;42852:2;42856:15;;;;;;;;;;;42888:16;42873:12;:31;;;;:::i;:::-;42842:9;:63::i;:::-;42781:136;42947:13;42957:2;42947:9;:13::i;:::-;42929:11;:15;42941:2;42929:15;;;;;;;;;;;;;;;:31;;;;42978:4;42971:11;;;;;42040:950;;;;;:::o;32440:44::-;32483:1;32440:44;:::o;32257:60::-;32298:19;32257:60;:::o;19076:93::-;19134:5;19159:2;19152:9;;19076:93;:::o;21950:238::-;22038:4;22055:13;22071:12;:10;:12::i;:::-;22055:28;;22094:64;22103:5;22110:7;22147:10;22119:25;22129:5;22136:7;22119:9;:25::i;:::-;:38;;;;:::i;:::-;22094:8;:64::i;:::-;22176:4;22169:11;;;21950:238;;;;:::o;40288:360::-;40383:7;40403:22;40428:20;40438:9;40428;:20::i;:::-;40403:45;;40459:27;40489:11;:22;40501:9;40489:22;;;;;;;;;;;;;;;;40459:52;;40522:24;40603:3;40590:10;40567:19;40550:14;:36;;;;:::i;:::-;40549:51;;;;:::i;:::-;:57;;;;:::i;:::-;40522:84;;40624:16;40617:23;;;;;40288:360;;;;:::o;43763:56::-;43881:5;;;;;;;;;;;43867:19;;:10;:19;;;43859:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;43804:10:::1;:8;:10::i;:::-;43763:56::o:0;38478:584::-;43881:5;;;;;;;;;;;43867:19;;:10;:19;;;43859:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;32419:14:::1;38555:5;:24;;38547:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;38622:23;38683:3;32483:1;38648:13;:11;:13::i;:::-;:32;;;;:::i;:::-;:38;;;;:::i;:::-;38622:64;;38714:15;38705:5;:24;;38697:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;38850:3;32369:1;38811:15;:36;;;;:::i;:::-;:42;;;;:::i;:::-;38802:5;38786:13;38796:2;38786:9;:13::i;:::-;:21;;;;:::i;:::-;:67;;38778:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;38943:16;38949:2;38953:5;38943;:16::i;:::-;39041:13;39051:2;39041:9;:13::i;:::-;39023:11;:15;39035:2;39023:15;;;;;;;;;;;;;;;:31;;;;38536:526;38478:584:::0;;:::o;32208:42::-;32245:5;32208:42;:::o;34932:915::-;43881:5;;;;;;;;;;;43867:19;;:10;:19;;;43859:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;35039:9:::1;35026;:22;35018:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;35141:15;35166:9;;;;;;;;;;;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35138:55;;;;;;35227:1;35216:8;:12;35208:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;35340:19;35407:5;32245;35382:8;35362:9;:29;;;;:::i;:::-;:42;;;;:::i;:::-;:50;;;;:::i;:::-;35340:72;;35473:60;35490:4;35505:13;;;;;;;;;;;35521:11;35473:8;:60::i;:::-;35548:13;;;;;;;;;;;:29;;;35585:9;35622:4;35646:11;35676:1;35723::::0;35770:5:::1;;;;;;;;;;;35812:2;35794:15;:20;;;;:::i;:::-;35548:281;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;35007:840;;34932:915:::0;:::o;43617:84::-;43881:5;;;;;;;;;;;43867:19;;:10;:19;;;43859:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;43679:17:::1;43690:5;43679:10;:17::i;:::-;43617:84:::0;:::o;42998:110::-;43881:5;;;;;;;;;;;43867:19;;:10;:19;;;43859:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;43096:4:::1;43067:17;:26;43085:7;43067:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;42998:110:::0;:::o;32324:46::-;32369:1;32324:46;:::o;32537:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;11374:86::-;11421:4;11445:7;;;;;;;;;;;11438:14;;11374:86;:::o;43233:210::-;43881:5;;;;;;;;;;;43867:19;;:10;:19;;;43859:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;43351:1:::1;43323:30;;:16;:30;;::::0;43315:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;43419:16;43401:15;;:34;;;;;;;;;;;;;;;;;;43233:210:::0;:::o;37589:133::-;37655:7;37682:32;37706:7;37682:23;:32::i;:::-;37675:39;;37589:133;;;:::o;32491:39::-;;;;;;;;;;;;;:::o;39842:256::-;39907:7;39927:20;39950:29;39972:6;39950:21;:29::i;:::-;39927:52;;39990:21;40014:30;40037:6;40014:22;:30::i;:::-;39990:54;;40077:13;40062:12;:28;;;;:::i;:::-;40055:35;;;;39842:256;;;:::o;32057:30::-;;;;;;;;;;;;;:::o;31631:164::-;31708:46;31724:7;31733:12;:10;:12::i;:::-;31747:6;31708:15;:46::i;:::-;31765:22;31771:7;31780:6;31765:5;:22::i;:::-;31631:164;;:::o;43706:52::-;43881:5;;;;;;;;;;;43867:19;;:10;:19;;;43859:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;43745:8:::1;:6;:8::i;:::-;43706:52::o:0;35855:344::-;43881:5;;;;;;;;;;;43867:19;;:10;:19;;;43859:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;35989:7:::1;:14;35968:10;:17;:35;35960:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;36074:9;36069:123;36093:10;:17;36089:1;:21;36069:123;;;36132:48;36142:10;36154;36165:1;36154:13;;;;;;;;:::i;:::-;;;;;;;;36169:7;36177:1;36169:10;;;;;;;;:::i;:::-;;;;;;;;36132:9;:48::i;:::-;36112:3;;;;;:::i;:::-;;;;36069:123;;;;35855:344:::0;;:::o;32166:35::-;;;;:::o;32022:28::-;;;;;;;;;;;;;:::o;32094:24::-;;;;;;;;;;;;;:::o;18333:104::-;18389:13;18422:7;18415:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18333:104;:::o;22691:436::-;22784:4;22801:13;22817:12;:10;:12::i;:::-;22801:28;;22840:24;22867:25;22877:5;22884:7;22867:9;:25::i;:::-;22840:52;;22931:15;22911:16;:35;;22903:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;23024:60;23033:5;23040:7;23068:15;23049:16;:34;23024:8;:60::i;:::-;23115:4;23108:11;;;;22691:436;;;;:::o;41113:919::-;41183:4;41200:22;41225:5;41200:30;;41241:20;41276:24;41322:17;:31;41340:12;:10;:12::i;:::-;41322:31;;;;;;;;;;;;;;;;;;;;;;;;;41321:32;:58;;;;;41358:17;:21;41376:2;41358:21;;;;;;;;;;;;;;;;;;;;;;;;;41357:22;41321:58;41317:380;;;41396:18;41434:5;;;;;;;;;;;41418:21;;:12;:10;:12::i;:::-;:21;;;:36;;;;41449:5;;;;;;;;;;;41443:11;;:2;:11;;;41418:36;41417:75;;41476:16;;41417:75;;;41458:15;;41417:75;41396:96;;41553:3;41539:10;41533:3;:16;;;;:::i;:::-;41524:5;:26;;;;:::i;:::-;:32;;;;:::i;:::-;41507:49;;41607:3;41594:10;41586:5;:18;;;;:::i;:::-;:24;;;;:::i;:::-;41571:39;;41644:41;41670:2;41674:10;41644:25;:41::i;:::-;41625:60;;41381:316;41317:380;41707:43;41717:12;:10;:12::i;:::-;41731:2;41735:14;41707:9;:43::i;:::-;41761:24;41772:12;:10;:12::i;:::-;41761:10;:24::i;:::-;41796:14;41807:2;41796:10;:14::i;:::-;41842:1;41827:12;:16;:40;;;;41866:1;41847:16;:20;41827:40;41823:136;;;41884:63;41894:2;41898:15;;;;;;;;;;;41930:16;41915:12;:31;;;;:::i;:::-;41884:9;:63::i;:::-;41823:136;41989:13;41999:2;41989:9;:13::i;:::-;41971:11;:15;41983:2;41971:15;;;;;;;;;;;;;;;:31;;;;42020:4;42013:11;;;;;41113:919;;;;:::o;32125:34::-;;;;:::o;39283:133::-;39351:7;39405:3;39387:15;;39378:6;:24;;;;:::i;:::-;:30;;;;:::i;:::-;39371:37;;39283:133;;;:::o;37421:160::-;37492:7;37546:18;:27;37565:7;37546:27;;;;;;;;;;;;;;;;37519:24;37535:7;37519:15;:24::i;:::-;:54;;;;:::i;:::-;37512:61;;37421:160;;;:::o;32377:56::-;32419:14;32377:56;:::o;19994:151::-;20083:7;20110:11;:18;20122:5;20110:18;;;;;;;;;;;;;;;:27;20129:7;20110:27;;;;;;;;;;;;;;;;20103:34;;19994:151;;;;:::o;40881:224::-;43881:5;;;;;;;;;;;43867:19;;:10;:19;;;43859:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;40992:1:::1;40971:17;:22;;:50;;;;;41018:3;40997:17;:24;;40971:50;40963:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;41080:17;41061:16;:36;;;;40881:224:::0;:::o;34147:741::-;8207:21;:19;:21::i;:::-;34302:11:::1;34277:21;34287:10;34277:9;:21::i;:::-;:36;;34269:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;34415:57;34424:10;34444:13;;;;;;;;;;;34460:11;34415:8;:57::i;:::-;34512:21;34550:1;34536:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34512:40;;34577:4;34559;34564:1;34559:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;34599:13;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34589:4;34594:1;34589:7;;;;;;;;:::i;:::-;;;;;;;:30;;;;;;;;;::::0;::::1;34628:13;;;;;;;;;;;:64;;;34703:11;34725:1;34765:4;34780:10;34843:2;34825:15;:20;;;;:::i;:::-;34628:256;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34216:672;8251:20:::0;:18;:20::i;:::-;34147:741;:::o;43116:109::-;43881:5;;;;;;;;;;;43867:19;;:10;:19;;;43859:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;43212:5:::1;43183:17;:26;43201:7;43183:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;43116:109:::0;:::o;32594:47::-;;;;;;;;;;;;;;;;;:::o;40656:217::-;43881:5;;;;;;;;;;;43867:19;;:10;:19;;;43859:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;40764:1:::1;40744:16;:21;;:48;;;;;40789:3;40769:16;:23;;40744:48;40736:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;40849:16;40831:15;:34;;;;40656:217:::0;:::o;39567:267::-;39622:7;39642:23;39703:3;32483:1;39668:13;:11;:13::i;:::-;:32;;;;:::i;:::-;:38;;;;:::i;:::-;39642:64;;39717:21;39757:20;39767:9;;;;;;;;;;;39757;:20::i;:::-;39741:13;:11;:13::i;:::-;:36;;;;:::i;:::-;39717:60;;39813:13;39795:15;:31;;;;:::i;:::-;39788:38;;;;39567:267;:::o;40110:170::-;40180:7;40200:12;40215:26;40234:6;40215:18;:26::i;:::-;40200:41;;40268:4;40259:6;:13;;;;:::i;:::-;40252:20;;;40110:170;;;:::o;9487:98::-;9540:7;9567:10;9560:17;;9487:98;:::o;26718:380::-;26871:1;26854:19;;:5;:19;;;26846:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26952:1;26933:21;;:7;:21;;;26925:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27036:6;27006:11;:18;27018:5;27006:18;;;;;;;;;;;;;;;:27;27025:7;27006:27;;;;;;;;;;;;;;;:36;;;;27074:7;27058:32;;27067:5;27058:32;;;27083:6;27058:32;;;;;;:::i;:::-;;;;;;;;26718:380;;;:::o;24724:548::-;24827:1;24808:21;;:7;:21;;;24800:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;24878:49;24907:1;24911:7;24920:6;24878:20;:49::i;:::-;24956:6;24940:12;;:22;;;;;;;:::i;:::-;;;;;;;;25133:6;25111:9;:18;25121:7;25111:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;25187:7;25166:37;;25183:1;25166:37;;;25196:6;25166:37;;;;;;:::i;:::-;;;;;;;;25216:48;25244:1;25248:7;25257:6;25216:19;:48::i;:::-;24724:548;;:::o;37730:511::-;37904:18;37936:5;;;;;;;;;;;37926:15;;:6;:15;;;:37;;;;37958:5;;;;;;;;;;;37945:18;;:9;:18;;;37926:37;37925:76;;37985:16;;37925:76;;;37967:15;;37925:76;37904:97;;38008:24;38035:48;38061:9;38072:10;38035:25;:48::i;:::-;38008:75;;38123:16;38090:18;:29;38109:9;38090:29;;;;;;;;;;;;;;;;:49;;;;;;;:::i;:::-;;;;;;;;38191:42;38207:6;38215:9;38226:6;38191:15;:42::i;:::-;37818:423;;37730:511;;;:::o;12229:120::-;11238:16;:14;:16::i;:::-;12298:5:::1;12288:7;;:15;;;;;;;;;;;;;;;;;;12319:22;12328:12;:10;:12::i;:::-;12319:22;;;;;;:::i;:::-;;;;;;;;12229:120::o:0;31221:91::-;31277:27;31283:12;:10;:12::i;:::-;31297:6;31277:5;:27::i;:::-;31221:91;:::o;27389:453::-;27524:24;27551:25;27561:5;27568:7;27551:9;:25::i;:::-;27524:52;;27611:17;27591:16;:37;27587:248;;27673:6;27653:16;:26;;27645:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27757:51;27766:5;27773:7;27801:6;27782:16;:25;27757:8;:51::i;:::-;27587:248;27513:329;27389:453;;;:::o;25605:675::-;25708:1;25689:21;;:7;:21;;;25681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25761:49;25782:7;25799:1;25803:6;25761:20;:49::i;:::-;25823:22;25848:9;:18;25858:7;25848:18;;;;;;;;;;;;;;;;25823:43;;25903:6;25885:14;:24;;25877:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26022:6;26005:14;:23;25984:9;:18;25994:7;25984:18;;;;;;;;;;;;;;;:44;;;;26139:6;26123:12;;:22;;;;;;;;;;;26200:1;26174:37;;26183:7;26174:37;;;26204:6;26174:37;;;;;;:::i;:::-;;;;;;;;26224:48;26244:7;26261:1;26265:6;26224:19;:48::i;:::-;25670:610;25605:675;;:::o;11970:118::-;10979:19;:17;:19::i;:::-;12040:4:::1;12030:7;;:14;;;;;;;;;;;;;;;;;;12060:20;12067:12;:10;:12::i;:::-;12060:20;;;;;;:::i;:::-;;;;;;;;11970:118::o:0;36207:174::-;36268:9;:17;36278:6;36268:17;;;;;;;;;;;;;;;;;;;;;;;;;36263:111;;36302:8;36316:6;36302:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36358:4;36338:9;:17;36348:6;36338:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;36263:111;36207:174;:::o;19405:127::-;19479:7;19506:9;:18;19516:7;19506:18;;;;;;;;;;;;;;;;19499:25;;19405:127;;;:::o;8287:293::-;7689:1;8421:7;;:19;8413:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7689:1;8554:7;:18;;;;8287:293::o;8588:213::-;7645:1;8771:7;:22;;;;8588:213::o;38251:175::-;38374:44;38401:4;38407:2;38411:6;38374:26;:44::i;:::-;38251:175;;;:::o;29171:124::-;;;;:::o;23597:840::-;23744:1;23728:18;;:4;:18;;;23720:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23821:1;23807:16;;:2;:16;;;23799:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23876:38;23897:4;23903:2;23907:6;23876:20;:38::i;:::-;23927:19;23949:9;:15;23959:4;23949:15;;;;;;;;;;;;;;;;23927:37;;23998:6;23983:11;:21;;23975:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;24115:6;24101:11;:20;24083:9;:15;24093:4;24083:15;;;;;;;;;;;;;;;:38;;;;24318:6;24301:9;:13;24311:2;24301:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;24368:2;24353:26;;24362:4;24353:26;;;24372:6;24353:26;;;;;;:::i;:::-;;;;;;;;24392:37;24412:4;24418:2;24422:6;24392:19;:37::i;:::-;23709:728;23597:840;;;:::o;11718:108::-;11785:8;:6;:8::i;:::-;11777:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;11718:108::o;11533:::-;11604:8;:6;:8::i;:::-;11603:9;11595:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11533:108::o;30359:272::-;30502:44;30529:4;30535:2;30539:6;30502:26;:44::i;:::-;30568:8;:6;:8::i;:::-;30567:9;30559:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30359:272;;;:::o;28442:125::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:329::-;2091:6;2140:2;2128:9;2119:7;2115:23;2111:32;2108:119;;;2146:79;;:::i;:::-;2108:119;2266:1;2291:53;2336:7;2327:6;2316:9;2312:22;2291:53;:::i;:::-;2281:63;;2237:117;2032:329;;;;:::o;2367:118::-;2454:24;2472:5;2454:24;:::i;:::-;2449:3;2442:37;2367:118;;:::o;2491:222::-;2584:4;2622:2;2611:9;2607:18;2599:26;;2635:71;2703:1;2692:9;2688:17;2679:6;2635:71;:::i;:::-;2491:222;;;;:::o;2719:126::-;2756:7;2796:42;2789:5;2785:54;2774:65;;2719:126;;;:::o;2851:96::-;2888:7;2917:24;2935:5;2917:24;:::i;:::-;2906:35;;2851:96;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:329::-;4192:6;4241:2;4229:9;4220:7;4216:23;4212:32;4209:119;;;4247:79;;:::i;:::-;4209:119;4367:1;4392:53;4437:7;4428:6;4417:9;4413:22;4392:53;:::i;:::-;4382:63;;4338:117;4133:329;;;;:::o;4468:619::-;4545:6;4553;4561;4610:2;4598:9;4589:7;4585:23;4581:32;4578:119;;;4616:79;;:::i;:::-;4578:119;4736:1;4761:53;4806:7;4797:6;4786:9;4782:22;4761:53;:::i;:::-;4751:63;;4707:117;4863:2;4889:53;4934:7;4925:6;4914:9;4910:22;4889:53;:::i;:::-;4879:63;;4834:118;4991:2;5017:53;5062:7;5053:6;5042:9;5038:22;5017:53;:::i;:::-;5007:63;;4962:118;4468:619;;;;;:::o;5093:86::-;5128:7;5168:4;5161:5;5157:16;5146:27;;5093:86;;;:::o;5185:112::-;5268:22;5284:5;5268:22;:::i;:::-;5263:3;5256:35;5185:112;;:::o;5303:214::-;5392:4;5430:2;5419:9;5415:18;5407:26;;5443:67;5507:1;5496:9;5492:17;5483:6;5443:67;:::i;:::-;5303:214;;;;:::o;5523:60::-;5551:3;5572:5;5565:12;;5523:60;;;:::o;5589:142::-;5639:9;5672:53;5690:34;5699:24;5717:5;5699:24;:::i;:::-;5690:34;:::i;:::-;5672:53;:::i;:::-;5659:66;;5589:142;;;:::o;5737:126::-;5787:9;5820:37;5851:5;5820:37;:::i;:::-;5807:50;;5737:126;;;:::o;5869:152::-;5945:9;5978:37;6009:5;5978:37;:::i;:::-;5965:50;;5869:152;;;:::o;6027:183::-;6140:63;6197:5;6140:63;:::i;:::-;6135:3;6128:76;6027:183;;:::o;6216:274::-;6335:4;6373:2;6362:9;6358:18;6350:26;;6386:97;6480:1;6469:9;6465:17;6456:6;6386:97;:::i;:::-;6216:274;;;;:::o;6496:118::-;6583:24;6601:5;6583:24;:::i;:::-;6578:3;6571:37;6496:118;;:::o;6620:222::-;6713:4;6751:2;6740:9;6736:18;6728:26;;6764:71;6832:1;6821:9;6817:17;6808:6;6764:71;:::i;:::-;6620:222;;;;:::o;6848:117::-;6957:1;6954;6947:12;6971:180;7019:77;7016:1;7009:88;7116:4;7113:1;7106:15;7140:4;7137:1;7130:15;7157:281;7240:27;7262:4;7240:27;:::i;:::-;7232:6;7228:40;7370:6;7358:10;7355:22;7334:18;7322:10;7319:34;7316:62;7313:88;;;7381:18;;:::i;:::-;7313:88;7421:10;7417:2;7410:22;7200:238;7157:281;;:::o;7444:129::-;7478:6;7505:20;;:::i;:::-;7495:30;;7534:33;7562:4;7554:6;7534:33;:::i;:::-;7444:129;;;:::o;7579:311::-;7656:4;7746:18;7738:6;7735:30;7732:56;;;7768:18;;:::i;:::-;7732:56;7818:4;7810:6;7806:17;7798:25;;7878:4;7872;7868:15;7860:23;;7579:311;;;:::o;7896:117::-;8005:1;8002;7995:12;8036:710;8132:5;8157:81;8173:64;8230:6;8173:64;:::i;:::-;8157:81;:::i;:::-;8148:90;;8258:5;8287:6;8280:5;8273:21;8321:4;8314:5;8310:16;8303:23;;8374:4;8366:6;8362:17;8354:6;8350:30;8403:3;8395:6;8392:15;8389:122;;;8422:79;;:::i;:::-;8389:122;8537:6;8520:220;8554:6;8549:3;8546:15;8520:220;;;8629:3;8658:37;8691:3;8679:10;8658:37;:::i;:::-;8653:3;8646:50;8725:4;8720:3;8716:14;8709:21;;8596:144;8580:4;8575:3;8571:14;8564:21;;8520:220;;;8524:21;8138:608;;8036:710;;;;;:::o;8769:370::-;8840:5;8889:3;8882:4;8874:6;8870:17;8866:27;8856:122;;8897:79;;:::i;:::-;8856:122;9014:6;9001:20;9039:94;9129:3;9121:6;9114:4;9106:6;9102:17;9039:94;:::i;:::-;9030:103;;8846:293;8769:370;;;;:::o;9145:311::-;9222:4;9312:18;9304:6;9301:30;9298:56;;;9334:18;;:::i;:::-;9298:56;9384:4;9376:6;9372:17;9364:25;;9444:4;9438;9434:15;9426:23;;9145:311;;;:::o;9479:710::-;9575:5;9600:81;9616:64;9673:6;9616:64;:::i;:::-;9600:81;:::i;:::-;9591:90;;9701:5;9730:6;9723:5;9716:21;9764:4;9757:5;9753:16;9746:23;;9817:4;9809:6;9805:17;9797:6;9793:30;9846:3;9838:6;9835:15;9832:122;;;9865:79;;:::i;:::-;9832:122;9980:6;9963:220;9997:6;9992:3;9989:15;9963:220;;;10072:3;10101:37;10134:3;10122:10;10101:37;:::i;:::-;10096:3;10089:50;10168:4;10163:3;10159:14;10152:21;;10039:144;10023:4;10018:3;10014:14;10007:21;;9963:220;;;9967:21;9581:608;;9479:710;;;;;:::o;10212:370::-;10283:5;10332:3;10325:4;10317:6;10313:17;10309:27;10299:122;;10340:79;;:::i;:::-;10299:122;10457:6;10444:20;10482:94;10572:3;10564:6;10557:4;10549:6;10545:17;10482:94;:::i;:::-;10473:103;;10289:293;10212:370;;;;:::o;10588:894::-;10706:6;10714;10763:2;10751:9;10742:7;10738:23;10734:32;10731:119;;;10769:79;;:::i;:::-;10731:119;10917:1;10906:9;10902:17;10889:31;10947:18;10939:6;10936:30;10933:117;;;10969:79;;:::i;:::-;10933:117;11074:78;11144:7;11135:6;11124:9;11120:22;11074:78;:::i;:::-;11064:88;;10860:302;11229:2;11218:9;11214:18;11201:32;11260:18;11252:6;11249:30;11246:117;;;11282:79;;:::i;:::-;11246:117;11387:78;11457:7;11448:6;11437:9;11433:22;11387:78;:::i;:::-;11377:88;;11172:303;10588:894;;;;;:::o;11488:104::-;11533:7;11562:24;11580:5;11562:24;:::i;:::-;11551:35;;11488:104;;;:::o;11598:142::-;11701:32;11727:5;11701:32;:::i;:::-;11696:3;11689:45;11598:142;;:::o;11746:254::-;11855:4;11893:2;11882:9;11878:18;11870:26;;11906:87;11990:1;11979:9;11975:17;11966:6;11906:87;:::i;:::-;11746:254;;;;:::o;12006:474::-;12074:6;12082;12131:2;12119:9;12110:7;12106:23;12102:32;12099:119;;;12137:79;;:::i;:::-;12099:119;12257:1;12282:53;12327:7;12318:6;12307:9;12303:22;12282:53;:::i;:::-;12272:63;;12228:117;12384:2;12410:53;12455:7;12446:6;12435:9;12431:22;12410:53;:::i;:::-;12400:63;;12355:118;12006:474;;;;;:::o;12486:180::-;12534:77;12531:1;12524:88;12631:4;12628:1;12621:15;12655:4;12652:1;12645:15;12672:320;12716:6;12753:1;12747:4;12743:12;12733:22;;12800:1;12794:4;12790:12;12821:18;12811:81;;12877:4;12869:6;12865:17;12855:27;;12811:81;12939:2;12931:6;12928:14;12908:18;12905:38;12902:84;;12958:18;;:::i;:::-;12902:84;12723:269;12672:320;;;:::o;12998:180::-;13046:77;13043:1;13036:88;13143:4;13140:1;13133:15;13167:4;13164:1;13157:15;13184:410;13224:7;13247:20;13265:1;13247:20;:::i;:::-;13242:25;;13281:20;13299:1;13281:20;:::i;:::-;13276:25;;13336:1;13333;13329:9;13358:30;13376:11;13358:30;:::i;:::-;13347:41;;13537:1;13528:7;13524:15;13521:1;13518:22;13498:1;13491:9;13471:83;13448:139;;13567:18;;:::i;:::-;13448:139;13232:362;13184:410;;;;:::o;13600:180::-;13648:77;13645:1;13638:88;13745:4;13742:1;13735:15;13769:4;13766:1;13759:15;13786:185;13826:1;13843:20;13861:1;13843:20;:::i;:::-;13838:25;;13877:20;13895:1;13877:20;:::i;:::-;13872:25;;13916:1;13906:35;;13921:18;;:::i;:::-;13906:35;13963:1;13960;13956:9;13951:14;;13786:185;;;;:::o;13977:233::-;14117:34;14113:1;14105:6;14101:14;14094:58;14186:16;14181:2;14173:6;14169:15;14162:41;13977:233;:::o;14216:366::-;14358:3;14379:67;14443:2;14438:3;14379:67;:::i;:::-;14372:74;;14455:93;14544:3;14455:93;:::i;:::-;14573:2;14568:3;14564:12;14557:19;;14216:366;;;:::o;14588:419::-;14754:4;14792:2;14781:9;14777:18;14769:26;;14841:9;14835:4;14831:20;14827:1;14816:9;14812:17;14805:47;14869:131;14995:4;14869:131;:::i;:::-;14861:139;;14588:419;;;:::o;15013:175::-;15153:27;15149:1;15141:6;15137:14;15130:51;15013:175;:::o;15194:366::-;15336:3;15357:67;15421:2;15416:3;15357:67;:::i;:::-;15350:74;;15433:93;15522:3;15433:93;:::i;:::-;15551:2;15546:3;15542:12;15535:19;;15194:366;;;:::o;15566:419::-;15732:4;15770:2;15759:9;15755:18;15747:26;;15819:9;15813:4;15809:20;15805:1;15794:9;15790:17;15783:47;15847:131;15973:4;15847:131;:::i;:::-;15839:139;;15566:419;;;:::o;15991:194::-;16031:4;16051:20;16069:1;16051:20;:::i;:::-;16046:25;;16085:20;16103:1;16085:20;:::i;:::-;16080:25;;16129:1;16126;16122:9;16114:17;;16153:1;16147:4;16144:11;16141:37;;;16158:18;;:::i;:::-;16141:37;15991:194;;;;:::o;16191:191::-;16231:3;16250:20;16268:1;16250:20;:::i;:::-;16245:25;;16284:20;16302:1;16284:20;:::i;:::-;16279:25;;16327:1;16324;16320:9;16313:16;;16348:3;16345:1;16342:10;16339:36;;;16355:18;;:::i;:::-;16339:36;16191:191;;;;:::o;16388:177::-;16528:29;16524:1;16516:6;16512:14;16505:53;16388:177;:::o;16571:366::-;16713:3;16734:67;16798:2;16793:3;16734:67;:::i;:::-;16727:74;;16810:93;16899:3;16810:93;:::i;:::-;16928:2;16923:3;16919:12;16912:19;;16571:366;;;:::o;16943:419::-;17109:4;17147:2;17136:9;17132:18;17124:26;;17196:9;17190:4;17186:20;17182:1;17171:9;17167:17;17160:47;17224:131;17350:4;17224:131;:::i;:::-;17216:139;;16943:419;;;:::o;17368:220::-;17508:34;17504:1;17496:6;17492:14;17485:58;17577:3;17572:2;17564:6;17560:15;17553:28;17368:220;:::o;17594:366::-;17736:3;17757:67;17821:2;17816:3;17757:67;:::i;:::-;17750:74;;17833:93;17922:3;17833:93;:::i;:::-;17951:2;17946:3;17942:12;17935:19;;17594:366;;;:::o;17966:419::-;18132:4;18170:2;18159:9;18155:18;18147:26;;18219:9;18213:4;18209:20;18205:1;18194:9;18190:17;18183:47;18247:131;18373:4;18247:131;:::i;:::-;18239:139;;17966:419;;;:::o;18391:227::-;18531:34;18527:1;18519:6;18515:14;18508:58;18600:10;18595:2;18587:6;18583:15;18576:35;18391:227;:::o;18624:366::-;18766:3;18787:67;18851:2;18846:3;18787:67;:::i;:::-;18780:74;;18863:93;18952:3;18863:93;:::i;:::-;18981:2;18976:3;18972:12;18965:19;;18624:366;;;:::o;18996:419::-;19162:4;19200:2;19189:9;19185:18;19177:26;;19249:9;19243:4;19239:20;19235:1;19224:9;19220:17;19213:47;19277:131;19403:4;19277:131;:::i;:::-;19269:139;;18996:419;;;:::o;19421:169::-;19561:21;19557:1;19549:6;19545:14;19538:45;19421:169;:::o;19596:366::-;19738:3;19759:67;19823:2;19818:3;19759:67;:::i;:::-;19752:74;;19835:93;19924:3;19835:93;:::i;:::-;19953:2;19948:3;19944:12;19937:19;;19596:366;;;:::o;19968:419::-;20134:4;20172:2;20161:9;20157:18;20149:26;;20221:9;20215:4;20211:20;20207:1;20196:9;20192:17;20185:47;20249:131;20375:4;20249:131;:::i;:::-;20241:139;;19968:419;;;:::o;20393:105::-;20429:7;20469:22;20462:5;20458:34;20447:45;;20393:105;;;:::o;20504:120::-;20576:23;20593:5;20576:23;:::i;:::-;20569:5;20566:34;20556:62;;20614:1;20611;20604:12;20556:62;20504:120;:::o;20630:141::-;20686:5;20717:6;20711:13;20702:22;;20733:32;20759:5;20733:32;:::i;:::-;20630:141;;;;:::o;20777:76::-;20813:7;20842:5;20831:16;;20777:76;;;:::o;20859:120::-;20931:23;20948:5;20931:23;:::i;:::-;20924:5;20921:34;20911:62;;20969:1;20966;20959:12;20911:62;20859:120;:::o;20985:141::-;21041:5;21072:6;21066:13;21057:22;;21088:32;21114:5;21088:32;:::i;:::-;20985:141;;;;:::o;21132:143::-;21189:5;21220:6;21214:13;21205:22;;21236:33;21263:5;21236:33;:::i;:::-;21132:143;;;;:::o;21281:971::-;21384:6;21392;21400;21408;21416;21465:3;21453:9;21444:7;21440:23;21436:33;21433:120;;;21472:79;;:::i;:::-;21433:120;21592:1;21617:63;21672:7;21663:6;21652:9;21648:22;21617:63;:::i;:::-;21607:73;;21563:127;21729:2;21755:63;21810:7;21801:6;21790:9;21786:22;21755:63;:::i;:::-;21745:73;;21700:128;21867:2;21893:64;21949:7;21940:6;21929:9;21925:22;21893:64;:::i;:::-;21883:74;;21838:129;22006:2;22032:64;22088:7;22079:6;22068:9;22064:22;22032:64;:::i;:::-;22022:74;;21977:129;22145:3;22172:63;22227:7;22218:6;22207:9;22203:22;22172:63;:::i;:::-;22162:73;;22116:129;21281:971;;;;;;;;:::o;22258:167::-;22398:19;22394:1;22386:6;22382:14;22375:43;22258:167;:::o;22431:366::-;22573:3;22594:67;22658:2;22653:3;22594:67;:::i;:::-;22587:74;;22670:93;22759:3;22670:93;:::i;:::-;22788:2;22783:3;22779:12;22772:19;;22431:366;;;:::o;22803:419::-;22969:4;23007:2;22996:9;22992:18;22984:26;;23056:9;23050:4;23046:20;23042:1;23031:9;23027:17;23020:47;23084:131;23210:4;23084:131;:::i;:::-;23076:139;;22803:419;;;:::o;23228:85::-;23273:7;23302:5;23291:16;;23228:85;;;:::o;23319:158::-;23377:9;23410:61;23428:42;23437:32;23463:5;23437:32;:::i;:::-;23428:42;:::i;:::-;23410:61;:::i;:::-;23397:74;;23319:158;;;:::o;23483:147::-;23578:45;23617:5;23578:45;:::i;:::-;23573:3;23566:58;23483:147;;:::o;23636:134::-;23694:9;23727:37;23758:5;23727:37;:::i;:::-;23714:50;;23636:134;;;:::o;23776:147::-;23871:45;23910:5;23871:45;:::i;:::-;23866:3;23859:58;23776:147;;:::o;23929:823::-;24186:4;24224:3;24213:9;24209:19;24201:27;;24238:71;24306:1;24295:9;24291:17;24282:6;24238:71;:::i;:::-;24319:72;24387:2;24376:9;24372:18;24363:6;24319:72;:::i;:::-;24401:80;24477:2;24466:9;24462:18;24453:6;24401:80;:::i;:::-;24491;24567:2;24556:9;24552:18;24543:6;24491:80;:::i;:::-;24581:81;24657:3;24646:9;24642:19;24633:6;24581:81;:::i;:::-;24672:73;24740:3;24729:9;24725:19;24716:6;24672:73;:::i;:::-;23929:823;;;;;;;;;:::o;24758:663::-;24846:6;24854;24862;24911:2;24899:9;24890:7;24886:23;24882:32;24879:119;;;24917:79;;:::i;:::-;24879:119;25037:1;25062:64;25118:7;25109:6;25098:9;25094:22;25062:64;:::i;:::-;25052:74;;25008:128;25175:2;25201:64;25257:7;25248:6;25237:9;25233:22;25201:64;:::i;:::-;25191:74;;25146:129;25314:2;25340:64;25396:7;25387:6;25376:9;25372:22;25340:64;:::i;:::-;25330:74;;25285:129;24758:663;;;;;:::o;25427:182::-;25567:34;25563:1;25555:6;25551:14;25544:58;25427:182;:::o;25615:366::-;25757:3;25778:67;25842:2;25837:3;25778:67;:::i;:::-;25771:74;;25854:93;25943:3;25854:93;:::i;:::-;25972:2;25967:3;25963:12;25956:19;;25615:366;;;:::o;25987:419::-;26153:4;26191:2;26180:9;26176:18;26168:26;;26240:9;26234:4;26230:20;26226:1;26215:9;26211:17;26204:47;26268:131;26394:4;26268:131;:::i;:::-;26260:139;;25987:419;;;:::o;26412:235::-;26552:34;26548:1;26540:6;26536:14;26529:58;26621:18;26616:2;26608:6;26604:15;26597:43;26412:235;:::o;26653:366::-;26795:3;26816:67;26880:2;26875:3;26816:67;:::i;:::-;26809:74;;26892:93;26981:3;26892:93;:::i;:::-;27010:2;27005:3;27001:12;26994:19;;26653:366;;;:::o;27025:419::-;27191:4;27229:2;27218:9;27214:18;27206:26;;27278:9;27272:4;27268:20;27264:1;27253:9;27249:17;27242:47;27306:131;27432:4;27306:131;:::i;:::-;27298:139;;27025:419;;;:::o;27450:180::-;27498:77;27495:1;27488:88;27595:4;27592:1;27585:15;27619:4;27616:1;27609:15;27636:233;27675:3;27698:24;27716:5;27698:24;:::i;:::-;27689:33;;27744:66;27737:5;27734:77;27731:103;;27814:18;;:::i;:::-;27731:103;27861:1;27854:5;27850:13;27843:20;;27636:233;;;:::o;27875:224::-;28015:34;28011:1;28003:6;27999:14;27992:58;28084:7;28079:2;28071:6;28067:15;28060:32;27875:224;:::o;28105:366::-;28247:3;28268:67;28332:2;28327:3;28268:67;:::i;:::-;28261:74;;28344:93;28433:3;28344:93;:::i;:::-;28462:2;28457:3;28453:12;28446:19;;28105:366;;;:::o;28477:419::-;28643:4;28681:2;28670:9;28666:18;28658:26;;28730:9;28724:4;28720:20;28716:1;28705:9;28701:17;28694:47;28758:131;28884:4;28758:131;:::i;:::-;28750:139;;28477:419;;;:::o;28902:174::-;29042:26;29038:1;29030:6;29026:14;29019:50;28902:174;:::o;29082:366::-;29224:3;29245:67;29309:2;29304:3;29245:67;:::i;:::-;29238:74;;29321:93;29410:3;29321:93;:::i;:::-;29439:2;29434:3;29430:12;29423:19;;29082:366;;;:::o;29454:419::-;29620:4;29658:2;29647:9;29643:18;29635:26;;29707:9;29701:4;29697:20;29693:1;29682:9;29678:17;29671:47;29735:131;29861:4;29735:131;:::i;:::-;29727:139;;29454:419;;;:::o;29879:176::-;30019:28;30015:1;30007:6;30003:14;29996:52;29879:176;:::o;30061:366::-;30203:3;30224:67;30288:2;30283:3;30224:67;:::i;:::-;30217:74;;30300:93;30389:3;30300:93;:::i;:::-;30418:2;30413:3;30409:12;30402:19;;30061:366;;;:::o;30433:419::-;30599:4;30637:2;30626:9;30622:18;30614:26;;30686:9;30680:4;30676:20;30672:1;30661:9;30657:17;30650:47;30714:131;30840:4;30714:131;:::i;:::-;30706:139;;30433:419;;;:::o;30858:143::-;30915:5;30946:6;30940:13;30931:22;;30962:33;30989:5;30962:33;:::i;:::-;30858:143;;;;:::o;31007:351::-;31077:6;31126:2;31114:9;31105:7;31101:23;31097:32;31094:119;;;31132:79;;:::i;:::-;31094:119;31252:1;31277:64;31333:7;31324:6;31313:9;31309:22;31277:64;:::i;:::-;31267:74;;31223:128;31007:351;;;;:::o;31364:114::-;31431:6;31465:5;31459:12;31449:22;;31364:114;;;:::o;31484:184::-;31583:11;31617:6;31612:3;31605:19;31657:4;31652:3;31648:14;31633:29;;31484:184;;;;:::o;31674:132::-;31741:4;31764:3;31756:11;;31794:4;31789:3;31785:14;31777:22;;31674:132;;;:::o;31812:108::-;31889:24;31907:5;31889:24;:::i;:::-;31884:3;31877:37;31812:108;;:::o;31926:179::-;31995:10;32016:46;32058:3;32050:6;32016:46;:::i;:::-;32094:4;32089:3;32085:14;32071:28;;31926:179;;;;:::o;32111:113::-;32181:4;32213;32208:3;32204:14;32196:22;;32111:113;;;:::o;32260:732::-;32379:3;32408:54;32456:5;32408:54;:::i;:::-;32478:86;32557:6;32552:3;32478:86;:::i;:::-;32471:93;;32588:56;32638:5;32588:56;:::i;:::-;32667:7;32698:1;32683:284;32708:6;32705:1;32702:13;32683:284;;;32784:6;32778:13;32811:63;32870:3;32855:13;32811:63;:::i;:::-;32804:70;;32897:60;32950:6;32897:60;:::i;:::-;32887:70;;32743:224;32730:1;32727;32723:9;32718:14;;32683:284;;;32687:14;32983:3;32976:10;;32384:608;;;32260:732;;;;:::o;32998:831::-;33261:4;33299:3;33288:9;33284:19;33276:27;;33313:71;33381:1;33370:9;33366:17;33357:6;33313:71;:::i;:::-;33394:80;33470:2;33459:9;33455:18;33446:6;33394:80;:::i;:::-;33521:9;33515:4;33511:20;33506:2;33495:9;33491:18;33484:48;33549:108;33652:4;33643:6;33549:108;:::i;:::-;33541:116;;33667:72;33735:2;33724:9;33720:18;33711:6;33667:72;:::i;:::-;33749:73;33817:3;33806:9;33802:19;33793:6;33749:73;:::i;:::-;32998:831;;;;;;;;:::o;33835:173::-;33975:25;33971:1;33963:6;33959:14;33952:49;33835:173;:::o;34014:366::-;34156:3;34177:67;34241:2;34236:3;34177:67;:::i;:::-;34170:74;;34253:93;34342:3;34253:93;:::i;:::-;34371:2;34366:3;34362:12;34355:19;;34014:366;;;:::o;34386:419::-;34552:4;34590:2;34579:9;34575:18;34567:26;;34639:9;34633:4;34629:20;34625:1;34614:9;34610:17;34603:47;34667:131;34793:4;34667:131;:::i;:::-;34659:139;;34386:419;;;:::o;34811:223::-;34951:34;34947:1;34939:6;34935:14;34928:58;35020:6;35015:2;35007:6;35003:15;34996:31;34811:223;:::o;35040:366::-;35182:3;35203:67;35267:2;35262:3;35203:67;:::i;:::-;35196:74;;35279:93;35368:3;35279:93;:::i;:::-;35397:2;35392:3;35388:12;35381:19;;35040:366;;;:::o;35412:419::-;35578:4;35616:2;35605:9;35601:18;35593:26;;35665:9;35659:4;35655:20;35651:1;35640:9;35636:17;35629:47;35693:131;35819:4;35693:131;:::i;:::-;35685:139;;35412:419;;;:::o;35837:221::-;35977:34;35973:1;35965:6;35961:14;35954:58;36046:4;36041:2;36033:6;36029:15;36022:29;35837:221;:::o;36064:366::-;36206:3;36227:67;36291:2;36286:3;36227:67;:::i;:::-;36220:74;;36303:93;36392:3;36303:93;:::i;:::-;36421:2;36416:3;36412:12;36405:19;;36064:366;;;:::o;36436:419::-;36602:4;36640:2;36629:9;36625:18;36617:26;;36689:9;36683:4;36679:20;36675:1;36664:9;36660:17;36653:47;36717:131;36843:4;36717:131;:::i;:::-;36709:139;;36436:419;;;:::o;36861:181::-;37001:33;36997:1;36989:6;36985:14;36978:57;36861:181;:::o;37048:366::-;37190:3;37211:67;37275:2;37270:3;37211:67;:::i;:::-;37204:74;;37287:93;37376:3;37287:93;:::i;:::-;37405:2;37400:3;37396:12;37389:19;;37048:366;;;:::o;37420:419::-;37586:4;37624:2;37613:9;37609:18;37601:26;;37673:9;37667:4;37663:20;37659:1;37648:9;37644:17;37637:47;37701:131;37827:4;37701:131;:::i;:::-;37693:139;;37420:419;;;:::o;37845:179::-;37985:31;37981:1;37973:6;37969:14;37962:55;37845:179;:::o;38030:366::-;38172:3;38193:67;38257:2;38252:3;38193:67;:::i;:::-;38186:74;;38269:93;38358:3;38269:93;:::i;:::-;38387:2;38382:3;38378:12;38371:19;;38030:366;;;:::o;38402:419::-;38568:4;38606:2;38595:9;38591:18;38583:26;;38655:9;38649:4;38645:20;38641:1;38630:9;38626:17;38619:47;38683:131;38809:4;38683:131;:::i;:::-;38675:139;;38402:419;;;:::o;38827:220::-;38967:34;38963:1;38955:6;38951:14;38944:58;39036:3;39031:2;39023:6;39019:15;39012:28;38827:220;:::o;39053:366::-;39195:3;39216:67;39280:2;39275:3;39216:67;:::i;:::-;39209:74;;39292:93;39381:3;39292:93;:::i;:::-;39410:2;39405:3;39401:12;39394:19;;39053:366;;;:::o;39425:419::-;39591:4;39629:2;39618:9;39614:18;39606:26;;39678:9;39672:4;39668:20;39664:1;39653:9;39649:17;39642:47;39706:131;39832:4;39706:131;:::i;:::-;39698:139;;39425:419;;;:::o;39850:221::-;39990:34;39986:1;39978:6;39974:14;39967:58;40059:4;40054:2;40046:6;40042:15;40035:29;39850:221;:::o;40077:366::-;40219:3;40240:67;40304:2;40299:3;40240:67;:::i;:::-;40233:74;;40316:93;40405:3;40316:93;:::i;:::-;40434:2;40429:3;40425:12;40418:19;;40077:366;;;:::o;40449:419::-;40615:4;40653:2;40642:9;40638:18;40630:26;;40702:9;40696:4;40692:20;40688:1;40677:9;40673:17;40666:47;40730:131;40856:4;40730:131;:::i;:::-;40722:139;;40449:419;;;:::o;40874:181::-;41014:33;41010:1;41002:6;40998:14;40991:57;40874:181;:::o;41061:366::-;41203:3;41224:67;41288:2;41283:3;41224:67;:::i;:::-;41217:74;;41300:93;41389:3;41300:93;:::i;:::-;41418:2;41413:3;41409:12;41402:19;;41061:366;;;:::o;41433:419::-;41599:4;41637:2;41626:9;41622:18;41614:26;;41686:9;41680:4;41676:20;41672:1;41661:9;41657:17;41650:47;41714:131;41840:4;41714:131;:::i;:::-;41706:139;;41433:419;;;:::o;41858:224::-;41998:34;41994:1;41986:6;41982:14;41975:58;42067:7;42062:2;42054:6;42050:15;42043:32;41858:224;:::o;42088:366::-;42230:3;42251:67;42315:2;42310:3;42251:67;:::i;:::-;42244:74;;42327:93;42416:3;42327:93;:::i;:::-;42445:2;42440:3;42436:12;42429:19;;42088:366;;;:::o;42460:419::-;42626:4;42664:2;42653:9;42649:18;42641:26;;42713:9;42707:4;42703:20;42699:1;42688:9;42684:17;42677:47;42741:131;42867:4;42741:131;:::i;:::-;42733:139;;42460:419;;;:::o;42885:222::-;43025:34;43021:1;43013:6;43009:14;43002:58;43094:5;43089:2;43081:6;43077:15;43070:30;42885:222;:::o;43113:366::-;43255:3;43276:67;43340:2;43335:3;43276:67;:::i;:::-;43269:74;;43352:93;43441:3;43352:93;:::i;:::-;43470:2;43465:3;43461:12;43454:19;;43113:366;;;:::o;43485:419::-;43651:4;43689:2;43678:9;43674:18;43666:26;;43738:9;43732:4;43728:20;43724:1;43713:9;43709:17;43702:47;43766:131;43892:4;43766:131;:::i;:::-;43758:139;;43485:419;;;:::o;43910:225::-;44050:34;44046:1;44038:6;44034:14;44027:58;44119:8;44114:2;44106:6;44102:15;44095:33;43910:225;:::o;44141:366::-;44283:3;44304:67;44368:2;44363:3;44304:67;:::i;:::-;44297:74;;44380:93;44469:3;44380:93;:::i;:::-;44498:2;44493:3;44489:12;44482:19;;44141:366;;;:::o;44513:419::-;44679:4;44717:2;44706:9;44702:18;44694:26;;44766:9;44760:4;44756:20;44752:1;44741:9;44737:17;44730:47;44794:131;44920:4;44794:131;:::i;:::-;44786:139;;44513:419;;;:::o;44938:170::-;45078:22;45074:1;45066:6;45062:14;45055:46;44938:170;:::o;45114:366::-;45256:3;45277:67;45341:2;45336:3;45277:67;:::i;:::-;45270:74;;45353:93;45442:3;45353:93;:::i;:::-;45471:2;45466:3;45462:12;45455:19;;45114:366;;;:::o;45486:419::-;45652:4;45690:2;45679:9;45675:18;45667:26;;45739:9;45733:4;45729:20;45725:1;45714:9;45710:17;45703:47;45767:131;45893:4;45767:131;:::i;:::-;45759:139;;45486:419;;;:::o;45911:166::-;46051:18;46047:1;46039:6;46035:14;46028:42;45911:166;:::o;46083:366::-;46225:3;46246:67;46310:2;46305:3;46246:67;:::i;:::-;46239:74;;46322:93;46411:3;46322:93;:::i;:::-;46440:2;46435:3;46431:12;46424:19;;46083:366;;;:::o;46455:419::-;46621:4;46659:2;46648:9;46644:18;46636:26;;46708:9;46702:4;46698:20;46694:1;46683:9;46679:17;46672:47;46736:131;46862:4;46736:131;:::i;:::-;46728:139;;46455:419;;;:::o;46880:229::-;47020:34;47016:1;47008:6;47004:14;46997:58;47089:12;47084:2;47076:6;47072:15;47065:37;46880:229;:::o;47115:366::-;47257:3;47278:67;47342:2;47337:3;47278:67;:::i;:::-;47271:74;;47354:93;47443:3;47354:93;:::i;:::-;47472:2;47467:3;47463:12;47456:19;;47115:366;;;:::o;47487:419::-;47653:4;47691:2;47680:9;47676:18;47668:26;;47740:9;47734:4;47730:20;47726:1;47715:9;47711:17;47704:47;47768:131;47894:4;47768:131;:::i;:::-;47760:139;;47487:419;;;:::o

Swarm Source

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