ETH Price: $2,739.42 (-3.22%)

Token

𝕏Blue𝕏Spaces𝕏A... (𝕏EVERYTHING)
 

Overview

Max Total Supply

100,000,000 𝕏EVERYTHING

Holders

22

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.678020399451660157 𝕏EVERYTHING

Value
$0.00
0x8a4d6001a5cef9281bbe7ffc9f114d5af6397fcf
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:
XEverything

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-26
*/

/**

TG: https://t.me/XEverythingETH

TWITTER: https://twitter.com/XEverythingERC


*/

// SPDX-License-Identifier: MIT
pragma solidity =0.8.10 >=0.8.10 >=0.8.0 <0.9.0;
pragma experimental ABIEncoderV2;

////// lib/openzeppelin-contracts/contracts/utils/Context.sol
// OpenZeppelin Contracts v4.4.0 (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;
    }
}

////// lib/openzeppelin-contracts/contracts/access/Ownable.sol
// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

/* pragma solidity ^0.8.0; */

/* import "../utils/Context.sol"; */

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

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

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

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

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

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

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

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

////// lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol
// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)

/* pragma solidity ^0.8.0; */

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

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

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

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

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

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

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

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

////// lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol
// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol)

/* pragma solidity ^0.8.0; */

/* import "../IERC20.sol"; */

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

////// lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol
// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)

/* pragma solidity ^0.8.0; */

/* import "./IERC20.sol"; */
/* import "./extensions/IERC20Metadata.sol"; */
/* import "../../utils/Context.sol"; */

/**
 * @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.zeppelin.solutions/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:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), 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}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - 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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * 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:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, 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;
        _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;
        }
        _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 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 {}
}

////// lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol
// OpenZeppelin Contracts v4.4.0 (utils/math/SafeMath.sol)

/* pragma solidity ^0.8.0; */

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

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

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

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

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

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

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

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

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

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

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

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

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

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

////// src/IUniswapV2Factory.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

////// src/IUniswapV2Pair.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

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

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

////// src/IUniswapV2Router02.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

/* pragma solidity >=0.8.10; */

/* import {IUniswapV2Router02} from "./IUniswapV2Router02.sol"; */
/* import {IUniswapV2Factory} from "./IUniswapV2Factory.sol"; */
/* import {IUniswapV2Pair} from "./IUniswapV2Pair.sol"; */
/* import {IERC20} from "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; */
/* import {ERC20} from "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; */
/* import {Ownable} from "lib/openzeppelin-contracts/contracts/access/Ownable.sol"; */
/* import {SafeMath} from "lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol"; */

contract XEverything is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;
    address public devWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    uint256 public percentForLPBurn = 25; // 25 = .25%
    bool public lpBurnEnabled = false;
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;

    /******************/

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event devWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event AutoNukeLP();

    event ManualNukeLP();

    constructor() ERC20(unicode"𝕏Blue𝕏Spaces𝕏AI𝕏Engineering𝕏Developers𝕏Business𝕏EET𝕏𝕏𝕏", unicode"𝕏EVERYTHING") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

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

        uint256 _buyMarketingFee = 25;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 50;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;

        uint256 totalSupply = 100_000_000 * 1e18;

        maxTransactionAmount = 2_000_000 * 1e18; // 2% from total supply maxTransactionAmountTxn
        maxWallet = 2_000_000 * 1e18; // 2% from total supply maxWallet
        swapTokensAtAmount = (totalSupply * 10) / 10000; // 0.1% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        marketingWallet = address(0x1eab42092DC065DF0DF7D6dA6DE1dd46241Ad882); // set as marketing wallet
        devWallet = address(0x1eab42092DC065DF0DF7D6dA6DE1dd46241Ad882); // set as dev wallet

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
         _mint(address(this), totalSupply);
    }

    receive() external payable {}


    function addLP() external onlyOwner{
        uint256 ethAmount = address(this).balance;
        uint256 tokenAmount = balanceOf(address(this)) * 80 / 100;
        

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

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
                0, // slippage is unavoidable
                0, // slippage is unavoidable
            devWallet,
            block.timestamp
        );
    }

    // once enabled, can never be turned off
    function goLive() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10**18);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyTax(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 30, "Must keep fees at 30% or less");
    }

    function updateSellTax(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 30, "Must keep fees at 30% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(address newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    event BoughtEarly(address indexed sniper);

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        if (
            !swapping &&
            automatedMarketMakerPairs[to] &&
            lpBurnEnabled &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadAddress,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing +
            tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        (success, ) = address(devWallet).call{value: ethForDev}("");

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

    function setAutoLPBurnSettings(
        uint256 _frequencyInSeconds,
        uint256 _percent,
        bool _Enabled
    ) external onlyOwner {
        require(
            _frequencyInSeconds >= 600,
            "cannot set buyback more often than every 10 minutes"
        );
        require(
            _percent <= 1000 && _percent >= 0,
            "Must set auto LP burn percent between 0% and 10%"
        );
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }

    function autoBurnLiquidityPairTokens() internal returns (bool) {
        lastLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(
            10000
        );

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }

    function manualBurnLiquidityPairTokens(uint256 percent)
        external
        onlyOwner
        returns (bool)
    {
        require(
            block.timestamp > lastManualLpBurnTime + manualBurnFrequency,
            "Must wait for cooldown to finish"
        );
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit ManualNukeLP();
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"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":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"goLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526019600b556000600c60006101000a81548160ff021916908315150217905550610e10600d55610708600f556001601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff0219169083151502179055506000601160026101000a81548160ff0219169083151502179055506001601360006101000a81548160ff021916908315150217905550348015620000a957600080fd5b5060405180608001604052806054815260200162006dc0605491396040518060400160405280600e81526020017ff09d958f45564552595448494e4700000000000000000000000000000000000081525081600390805190602001906200011292919062000af0565b5080600490805190602001906200012b92919062000af0565b5050506200014e62000142620005b060201b60201c565b620005b860201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200017a8160016200067e60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000220919062000c0a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000288573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ae919062000c0a565b6040518363ffffffff1660e01b8152600401620002cd92919062000c4d565b6020604051808303816000875af1158015620002ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000313919062000c0a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200035b60a05160016200067e60201b60201c565b6200037060a05160016200076860201b60201c565b60006019905060008060006032905060008060006a52b7d2dcc80cd2e400000090506a01a784379d99db420000006008819055506a01a784379d99db42000000600a81905550612710600a82620003c8919062000cb3565b620003d4919062000d43565b60098190555086601581905550856016819055508460178190555060175460165460155462000404919062000d7b565b62000410919062000d7b565b6014819055508360198190555082601a8190555081601b81905550601b54601a5460195462000440919062000d7b565b6200044c919062000d7b565b601881905550731eab42092dc065df0df7d6da6de1dd46241ad882600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731eab42092dc065df0df7d6da6de1dd46241ad882600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200051e620005106200080960201b60201c565b60016200083360201b60201c565b620005313060016200083360201b60201c565b6200054661dead60016200083360201b60201c565b620005686200055a6200080960201b60201c565b60016200067e60201b60201c565b6200057b3060016200067e60201b60201c565b6200059061dead60016200067e60201b60201c565b620005a230826200096d60201b60201c565b505050505050505062000f9a565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200068e620005b060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006b46200080960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200070d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007049062000e39565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000843620005b060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008696200080960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b99062000e39565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000961919062000e78565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620009e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d79062000ee5565b60405180910390fd5b620009f46000838362000ae660201b60201c565b806002600082825462000a08919062000d7b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a5f919062000d7b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ac6919062000f18565b60405180910390a362000ae26000838362000aeb60201b60201c565b5050565b505050565b505050565b82805462000afe9062000f64565b90600052602060002090601f01602090048101928262000b22576000855562000b6e565b82601f1062000b3d57805160ff191683800117855562000b6e565b8280016001018555821562000b6e579182015b8281111562000b6d57825182559160200191906001019062000b50565b5b50905062000b7d919062000b81565b5090565b5b8082111562000b9c57600081600090555060010162000b82565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bd28262000ba5565b9050919050565b62000be48162000bc5565b811462000bf057600080fd5b50565b60008151905062000c048162000bd9565b92915050565b60006020828403121562000c235762000c2262000ba0565b5b600062000c338482850162000bf3565b91505092915050565b62000c478162000bc5565b82525050565b600060408201905062000c64600083018562000c3c565b62000c73602083018462000c3c565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cc08262000c7a565b915062000ccd8362000c7a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d095762000d0862000c84565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d508262000c7a565b915062000d5d8362000c7a565b92508262000d705762000d6f62000d14565b5b828204905092915050565b600062000d888262000c7a565b915062000d958362000c7a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000dcd5762000dcc62000c84565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e2160208362000dd8565b915062000e2e8262000de9565b602082019050919050565b6000602082019050818103600083015262000e548162000e12565b9050919050565b60008115159050919050565b62000e728162000e5b565b82525050565b600060208201905062000e8f600083018462000e67565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ecd601f8362000dd8565b915062000eda8262000e95565b602082019050919050565b6000602082019050818103600083015262000f008162000ebe565b9050919050565b62000f128162000c7a565b82525050565b600060208201905062000f2f600083018462000f07565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f7d57607f821691505b6020821081141562000f945762000f9362000f35565b5b50919050565b60805160a051615d9062001030600039600081816115c901528181611c1f0152818161290b015281816129c2015281816129ef0152818161303301528181614137015281816141f0015261421d0152600081816110b1015281816120fb0152818161212201528181612fdb01528181614393015281816144740152818161449b01528181614537015261455e0152615d906000f3fe6080604052600436106103bc5760003560e01c80638da5cb5b116101f2578063bbc0c7421161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610e25578063f637434214610e4e578063f8b45b0514610e79578063fe72b27a14610ea4576103c3565b8063dd62ed3e14610d67578063e2f4560514610da4578063e884f26014610dcf578063f11a24d314610dfa576103c3565b8063c876d0b9116100dc578063c876d0b914610ca9578063c8c8ebe414610cd4578063d257b34f14610cff578063d85ba06314610d3c576103c3565b8063bbc0c74214610c15578063bc37e1a314610c40578063c024666814610c57578063c18bc19514610c80576103c3565b80639fccce3211610185578063a4c82a0011610154578063a4c82a0014610b47578063a9059cbb14610b72578063aacebbe314610baf578063b62496f514610bd8576103c3565b80639fccce3214610a8b578063a0a485ca14610ab6578063a0d82dc514610adf578063a457c2d714610b0a576103c3565b806395d89b41116101c157806395d89b41146109e15780639a7a23d614610a0c5780639c3b4fdc14610a355780639ec22c0e14610a60576103c3565b80638da5cb5b146109375780638ea5220f14610962578063921369131461098d578063924de9b7146109b8576103c3565b80632c3e486c116102e25780636ddd171311610275578063751039fc11610244578063751039fc1461088d5780637571336a146108b857806375f0a874146108e15780637bce5a041461090c576103c3565b80636ddd1713146107e557806370a0823114610810578063715018a61461084d578063730c188814610864576103c3565b806349bd5a5e116102b157806349bd5a5e146107275780634a62bb65146107525780634fbee1931461077d5780636a486a8e146107ba576103c3565b80632c3e486c146106695780632e82f1a014610694578063313ce567146106bf57806339509351146106ea576103c3565b8063184c16c51161035a578063203e727e11610329578063203e727e146105c157806323b872dd146105ea57806327c8f835146106275780632c28f57914610652576103c3565b8063184c16c514610515578063199ffc72146105405780631a8145bb1461056b5780631f3fed8f14610596576103c3565b806310d5de531161039657806310d5de53146104595780631694505e1461049657806318160ddd146104c15780631816467f146104ec576103c3565b806305f93650146103c857806306fdde03146103f1578063095ea7b31461041c576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103ef60048036038101906103ea9190614648565b610ee1565b005b3480156103fd57600080fd5b50610406610fe0565b6040516104139190614734565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e91906147b4565b611072565b604051610450919061480f565b60405180910390f35b34801561046557600080fd5b50610480600480360381019061047b919061482a565b611090565b60405161048d919061480f565b60405180910390f35b3480156104a257600080fd5b506104ab6110af565b6040516104b891906148b6565b60405180910390f35b3480156104cd57600080fd5b506104d66110d3565b6040516104e391906148e0565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e919061482a565b6110dd565b005b34801561052157600080fd5b5061052a611219565b60405161053791906148e0565b60405180910390f35b34801561054c57600080fd5b5061055561121f565b60405161056291906148e0565b60405180910390f35b34801561057757600080fd5b50610580611225565b60405161058d91906148e0565b60405180910390f35b3480156105a257600080fd5b506105ab61122b565b6040516105b891906148e0565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e391906148fb565b611231565b005b3480156105f657600080fd5b50610611600480360381019061060c9190614928565b611340565b60405161061e919061480f565b60405180910390f35b34801561063357600080fd5b5061063c611438565b604051610649919061498a565b60405180910390f35b34801561065e57600080fd5b5061066761143e565b005b34801561067557600080fd5b5061067e6114f9565b60405161068b91906148e0565b60405180910390f35b3480156106a057600080fd5b506106a96114ff565b6040516106b6919061480f565b60405180910390f35b3480156106cb57600080fd5b506106d4611512565b6040516106e191906149c1565b60405180910390f35b3480156106f657600080fd5b50610711600480360381019061070c91906147b4565b61151b565b60405161071e919061480f565b60405180910390f35b34801561073357600080fd5b5061073c6115c7565b604051610749919061498a565b60405180910390f35b34801561075e57600080fd5b506107676115eb565b604051610774919061480f565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f919061482a565b6115fe565b6040516107b1919061480f565b60405180910390f35b3480156107c657600080fd5b506107cf611654565b6040516107dc91906148e0565b60405180910390f35b3480156107f157600080fd5b506107fa61165a565b604051610807919061480f565b60405180910390f35b34801561081c57600080fd5b506108376004803603810190610832919061482a565b61166d565b60405161084491906148e0565b60405180910390f35b34801561085957600080fd5b506108626116b5565b005b34801561087057600080fd5b5061088b60048036038101906108869190614a08565b61173d565b005b34801561089957600080fd5b506108a261187d565b6040516108af919061480f565b60405180910390f35b3480156108c457600080fd5b506108df60048036038101906108da9190614a5b565b61191d565b005b3480156108ed57600080fd5b506108f66119f4565b604051610903919061498a565b60405180910390f35b34801561091857600080fd5b50610921611a1a565b60405161092e91906148e0565b60405180910390f35b34801561094357600080fd5b5061094c611a20565b604051610959919061498a565b60405180910390f35b34801561096e57600080fd5b50610977611a4a565b604051610984919061498a565b60405180910390f35b34801561099957600080fd5b506109a2611a70565b6040516109af91906148e0565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da9190614a9b565b611a76565b005b3480156109ed57600080fd5b506109f6611b0f565b604051610a039190614734565b60405180910390f35b348015610a1857600080fd5b50610a336004803603810190610a2e9190614a5b565b611ba1565b005b348015610a4157600080fd5b50610a4a611cba565b604051610a5791906148e0565b60405180910390f35b348015610a6c57600080fd5b50610a75611cc0565b604051610a8291906148e0565b60405180910390f35b348015610a9757600080fd5b50610aa0611cc6565b604051610aad91906148e0565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190614648565b611ccc565b005b348015610aeb57600080fd5b50610af4611dcb565b604051610b0191906148e0565b60405180910390f35b348015610b1657600080fd5b50610b316004803603810190610b2c91906147b4565b611dd1565b604051610b3e919061480f565b60405180910390f35b348015610b5357600080fd5b50610b5c611ebc565b604051610b6991906148e0565b60405180910390f35b348015610b7e57600080fd5b50610b996004803603810190610b9491906147b4565b611ec2565b604051610ba6919061480f565b60405180910390f35b348015610bbb57600080fd5b50610bd66004803603810190610bd1919061482a565b611ee0565b005b348015610be457600080fd5b50610bff6004803603810190610bfa919061482a565b61201c565b604051610c0c919061480f565b60405180910390f35b348015610c2157600080fd5b50610c2a61203c565b604051610c37919061480f565b60405180910390f35b348015610c4c57600080fd5b50610c5561204f565b005b348015610c6357600080fd5b50610c7e6004803603810190610c799190614a5b565b6121f1565b005b348015610c8c57600080fd5b50610ca76004803603810190610ca291906148fb565b612316565b005b348015610cb557600080fd5b50610cbe612425565b604051610ccb919061480f565b60405180910390f35b348015610ce057600080fd5b50610ce9612438565b604051610cf691906148e0565b60405180910390f35b348015610d0b57600080fd5b50610d266004803603810190610d2191906148fb565b61243e565b604051610d33919061480f565b60405180910390f35b348015610d4857600080fd5b50610d51612593565b604051610d5e91906148e0565b60405180910390f35b348015610d7357600080fd5b50610d8e6004803603810190610d899190614ac8565b612599565b604051610d9b91906148e0565b60405180910390f35b348015610db057600080fd5b50610db9612620565b604051610dc691906148e0565b60405180910390f35b348015610ddb57600080fd5b50610de4612626565b604051610df1919061480f565b60405180910390f35b348015610e0657600080fd5b50610e0f6126c6565b604051610e1c91906148e0565b60405180910390f35b348015610e3157600080fd5b50610e4c6004803603810190610e47919061482a565b6126cc565b005b348015610e5a57600080fd5b50610e636127c4565b604051610e7091906148e0565b60405180910390f35b348015610e8557600080fd5b50610e8e6127ca565b604051610e9b91906148e0565b60405180910390f35b348015610eb057600080fd5b50610ecb6004803603810190610ec691906148fb565b6127d0565b604051610ed8919061480f565b60405180910390f35b610ee9612aa8565b73ffffffffffffffffffffffffffffffffffffffff16610f07611a20565b73ffffffffffffffffffffffffffffffffffffffff1614610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5490614b54565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a54601954610f859190614ba3565b610f8f9190614ba3565b601881905550601e6018541115610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290614c45565b60405180910390fd5b505050565b606060038054610fef90614c94565b80601f016020809104026020016040519081016040528092919081815260200182805461101b90614c94565b80156110685780601f1061103d57610100808354040283529160200191611068565b820191906000526020600020905b81548152906001019060200180831161104b57829003601f168201915b5050505050905090565b600061108661107f612aa8565b8484612ab0565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6110e5612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611103611a20565b73ffffffffffffffffffffffffffffffffffffffff1614611159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115090614b54565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b601d5481565b601c5481565b611239612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611257611a20565b73ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490614b54565b60405180910390fd5b670de0b6b3a76400006103e860016112c36110d3565b6112cd9190614cc6565b6112d79190614d4f565b6112e19190614d4f565b811015611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a90614df2565b60405180910390fd5b670de0b6b3a7640000816113379190614cc6565b60088190555050565b600061134d848484612c7b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611398612aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90614e84565b60405180910390fd5b61142c85611424612aa8565b858403612ab0565b60019150509392505050565b61dead81565b611446612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611464611a20565b73ffffffffffffffffffffffffffffffffffffffff16146114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b190614b54565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b600d5481565b600c60009054906101000a900460ff1681565b60006012905090565b60006115bd611528612aa8565b848460016000611536612aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115b89190614ba3565b612ab0565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601160009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116bd612aa8565b73ffffffffffffffffffffffffffffffffffffffff166116db611a20565b73ffffffffffffffffffffffffffffffffffffffff1614611731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172890614b54565b60405180910390fd5b61173b6000613a13565b565b611745612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611763611a20565b73ffffffffffffffffffffffffffffffffffffffff16146117b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b090614b54565b60405180910390fd5b6102588310156117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f590614f16565b60405180910390fd5b6103e88211158015611811575060008210155b611850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184790614fa8565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b6000611887612aa8565b73ffffffffffffffffffffffffffffffffffffffff166118a5611a20565b73ffffffffffffffffffffffffffffffffffffffff16146118fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f290614b54565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b611925612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611943611a20565b73ffffffffffffffffffffffffffffffffffffffff1614611999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199090614b54565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b611a7e612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611a9c611a20565b73ffffffffffffffffffffffffffffffffffffffff1614611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae990614b54565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b606060048054611b1e90614c94565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4a90614c94565b8015611b975780601f10611b6c57610100808354040283529160200191611b97565b820191906000526020600020905b815481529060010190602001808311611b7a57829003601f168201915b5050505050905090565b611ba9612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611bc7611a20565b73ffffffffffffffffffffffffffffffffffffffff1614611c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1490614b54565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca39061503a565b60405180910390fd5b611cb68282613ad9565b5050565b60175481565b60105481565b601e5481565b611cd4612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611cf2611a20565b73ffffffffffffffffffffffffffffffffffffffff1614611d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3f90614b54565b60405180910390fd5b826015819055508160168190555080601781905550601754601654601554611d709190614ba3565b611d7a9190614ba3565b601481905550601e6014541115611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd90614c45565b60405180910390fd5b505050565b601b5481565b60008060016000611de0612aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e94906150cc565b60405180910390fd5b611eb1611ea8612aa8565b85858403612ab0565b600191505092915050565b600e5481565b6000611ed6611ecf612aa8565b8484612c7b565b6001905092915050565b611ee8612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611f06611a20565b73ffffffffffffffffffffffffffffffffffffffff1614611f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5390614b54565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b612057612aa8565b73ffffffffffffffffffffffffffffffffffffffff16612075611a20565b73ffffffffffffffffffffffffffffffffffffffff16146120cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c290614b54565b60405180910390fd5b60004790506000606460506120df3061166d565b6120e99190614cc6565b6120f39190614d4f565b9050612120307f000000000000000000000000000000000000000000000000000000000000000083612ab0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719833084600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016121a796959493929190615127565b60606040518083038185885af11580156121c5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121ea919061519d565b5050505050565b6121f9612aa8565b73ffffffffffffffffffffffffffffffffffffffff16612217611a20565b73ffffffffffffffffffffffffffffffffffffffff161461226d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226490614b54565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161230a919061480f565b60405180910390a25050565b61231e612aa8565b73ffffffffffffffffffffffffffffffffffffffff1661233c611a20565b73ffffffffffffffffffffffffffffffffffffffff1614612392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238990614b54565b60405180910390fd5b670de0b6b3a76400006103e860056123a86110d3565b6123b29190614cc6565b6123bc9190614d4f565b6123c69190614d4f565b811015612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ff90615262565b60405180910390fd5b670de0b6b3a76400008161241c9190614cc6565b600a8190555050565b601360009054906101000a900460ff1681565b60085481565b6000612448612aa8565b73ffffffffffffffffffffffffffffffffffffffff16612466611a20565b73ffffffffffffffffffffffffffffffffffffffff16146124bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b390614b54565b60405180910390fd5b620186a060016124ca6110d3565b6124d49190614cc6565b6124de9190614d4f565b821015612520576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612517906152f4565b60405180910390fd5b6103e8600561252d6110d3565b6125379190614cc6565b6125419190614d4f565b821115612583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257a90615386565b60405180910390fd5b8160098190555060019050919050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000612630612aa8565b73ffffffffffffffffffffffffffffffffffffffff1661264e611a20565b73ffffffffffffffffffffffffffffffffffffffff16146126a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269b90614b54565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b60165481565b6126d4612aa8565b73ffffffffffffffffffffffffffffffffffffffff166126f2611a20565b73ffffffffffffffffffffffffffffffffffffffff1614612748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273f90614b54565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127af90615418565b60405180910390fd5b6127c181613a13565b50565b601a5481565b600a5481565b60006127da612aa8565b73ffffffffffffffffffffffffffffffffffffffff166127f8611a20565b73ffffffffffffffffffffffffffffffffffffffff161461284e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284590614b54565b60405180910390fd5b600f5460105461285e9190614ba3565b421161289f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289690615484565b60405180910390fd5b6103e88211156128e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128db90615516565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401612946919061498a565b602060405180830381865afa158015612963573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129879190615536565b905060006129b26127106129a48685613b7a90919063ffffffff16565b613b9090919063ffffffff16565b905060008111156129eb576129ea7f000000000000000000000000000000000000000000000000000000000000000061dead83613ba6565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a5857600080fd5b505af1158015612a6c573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b17906155d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8790615667565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c6e91906148e0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce2906156f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d529061578b565b60405180910390fd5b6000811415612d7557612d7083836000613ba6565b613a0e565b601160009054906101000a900460ff161561343857612d92611a20565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e005750612dd0611a20565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e395750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e73575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e8c5750600560149054906101000a900460ff16155b1561343757601160019054906101000a900460ff16612f8657601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f465750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7c906157f7565b60405180910390fd5b5b601360009054906101000a900460ff161561314e57612fa3611a20565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561302a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561308257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561314d5743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ff906158af565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131f15750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132985760085481111561323b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323290615941565b60405180910390fd5b600a546132478361166d565b826132529190614ba3565b1115613293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328a906159ad565b60405180910390fd5b613436565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561333b5750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561338a57600854811115613385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337c90615a3f565b60405180910390fd5b613435565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661343457600a546133e78361166d565b826133f29190614ba3565b1115613433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342a906159ad565b60405180910390fd5b5b5b5b5b5b60006134433061166d565b9050600060095482101590508080156134685750601160029054906101000a900460ff165b80156134815750600560149054906101000a900460ff16155b80156134d75750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561352d5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135835750601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135c7576001600560146101000a81548160ff0219169083151502179055506135ab613e27565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff1615801561362d5750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156136455750600c60009054906101000a900460ff165b80156136605750600d54600e5461365c9190614ba3565b4210155b80156136b65750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136c5576136c361410e565b505b6000600560149054906101000a900460ff16159050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061377b5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561378557600090505b600081156139fe57602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137e857506000601854115b156138b557613815606461380760185488613b7a90919063ffffffff16565b613b9090919063ffffffff16565b9050601854601a54826138289190614cc6565b6138329190614d4f565b601d60008282546138439190614ba3565b92505081905550601854601b548261385b9190614cc6565b6138659190614d4f565b601e60008282546138769190614ba3565b925050819055506018546019548261388e9190614cc6565b6138989190614d4f565b601c60008282546138a99190614ba3565b925050819055506139da565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561391057506000601454115b156139d95761393d606461392f60145488613b7a90919063ffffffff16565b613b9090919063ffffffff16565b9050601454601654826139509190614cc6565b61395a9190614d4f565b601d600082825461396b9190614ba3565b92505081905550601454601754826139839190614cc6565b61398d9190614d4f565b601e600082825461399e9190614ba3565b92505081905550601454601554826139b69190614cc6565b6139c09190614d4f565b601c60008282546139d19190614ba3565b925050819055505b5b60008111156139ef576139ee873083613ba6565b5b80856139fb9190615a5f565b94505b613a09878787613ba6565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008183613b889190614cc6565b905092915050565b60008183613b9e9190614d4f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c0d906156f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c7d9061578b565b60405180910390fd5b613c918383836142d4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d0e90615b05565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613daa9190614ba3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e0e91906148e0565b60405180910390a3613e218484846142d9565b50505050565b6000613e323061166d565b90506000601e54601c54601d54613e499190614ba3565b613e539190614ba3565b9050600080831480613e655750600082145b15613e725750505061410c565b6014600954613e819190614cc6565b831115613e9a576014600954613e979190614cc6565b92505b6000600283601d5486613ead9190614cc6565b613eb79190614d4f565b613ec19190614d4f565b90506000613ed882866142de90919063ffffffff16565b90506000479050613ee8826142f4565b6000613efd82476142de90919063ffffffff16565b90506000613f2887613f1a601c5485613b7a90919063ffffffff16565b613b9090919063ffffffff16565b90506000613f5388613f45601e5486613b7a90919063ffffffff16565b613b9090919063ffffffff16565b90506000818385613f649190615a5f565b613f6e9190615a5f565b90506000601d819055506000601c819055506000601e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613fce90615b56565b60006040518083038185875af1925050503d806000811461400b576040519150601f19603f3d011682016040523d82523d6000602084013e614010565b606091505b5050809850506000871180156140265750600081115b15614073576140358782614531565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601d5460405161406a93929190615b6b565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516140b990615b56565b60006040518083038185875af1925050503d80600081146140f6576040519150601f19603f3d011682016040523d82523d6000602084013e6140fb565b606091505b505080985050505050505050505050505b565b600042600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401614172919061498a565b602060405180830381865afa15801561418f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141b39190615536565b905060006141e06127106141d2600b5485613b7a90919063ffffffff16565b613b9090919063ffffffff16565b90506000811115614219576142187f000000000000000000000000000000000000000000000000000000000000000061dead83613ba6565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561428657600080fd5b505af115801561429a573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b600081836142ec9190615a5f565b905092915050565b6000600267ffffffffffffffff81111561431157614310615ba2565b5b60405190808252806020026020018201604052801561433f5781602001602082028036833780820191505090505b509050308160008151811061435757614356615bd1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144209190615c15565b8160018151811061443457614433615bd1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614499307f000000000000000000000000000000000000000000000000000000000000000084612ab0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016144fb959493929190615d00565b600060405180830381600087803b15801561451557600080fd5b505af1158015614529573d6000803e3d6000fd5b505050505050565b61455c307f000000000000000000000000000000000000000000000000000000000000000084612ab0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016145c396959493929190615127565b60606040518083038185885af11580156145e1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614606919061519d565b5050505050565b600080fd5b6000819050919050565b61462581614612565b811461463057600080fd5b50565b6000813590506146428161461c565b92915050565b6000806000606084860312156146615761466061460d565b5b600061466f86828701614633565b935050602061468086828701614633565b925050604061469186828701614633565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b838110156146d55780820151818401526020810190506146ba565b838111156146e4576000848401525b50505050565b6000601f19601f8301169050919050565b60006147068261469b565b61471081856146a6565b93506147208185602086016146b7565b614729816146ea565b840191505092915050565b6000602082019050818103600083015261474e81846146fb565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061478182614756565b9050919050565b61479181614776565b811461479c57600080fd5b50565b6000813590506147ae81614788565b92915050565b600080604083850312156147cb576147ca61460d565b5b60006147d98582860161479f565b92505060206147ea85828601614633565b9150509250929050565b60008115159050919050565b614809816147f4565b82525050565b60006020820190506148246000830184614800565b92915050565b6000602082840312156148405761483f61460d565b5b600061484e8482850161479f565b91505092915050565b6000819050919050565b600061487c61487761487284614756565b614857565b614756565b9050919050565b600061488e82614861565b9050919050565b60006148a082614883565b9050919050565b6148b081614895565b82525050565b60006020820190506148cb60008301846148a7565b92915050565b6148da81614612565b82525050565b60006020820190506148f560008301846148d1565b92915050565b6000602082840312156149115761491061460d565b5b600061491f84828501614633565b91505092915050565b6000806000606084860312156149415761494061460d565b5b600061494f8682870161479f565b93505060206149608682870161479f565b925050604061497186828701614633565b9150509250925092565b61498481614776565b82525050565b600060208201905061499f600083018461497b565b92915050565b600060ff82169050919050565b6149bb816149a5565b82525050565b60006020820190506149d660008301846149b2565b92915050565b6149e5816147f4565b81146149f057600080fd5b50565b600081359050614a02816149dc565b92915050565b600080600060608486031215614a2157614a2061460d565b5b6000614a2f86828701614633565b9350506020614a4086828701614633565b9250506040614a51868287016149f3565b9150509250925092565b60008060408385031215614a7257614a7161460d565b5b6000614a808582860161479f565b9250506020614a91858286016149f3565b9150509250929050565b600060208284031215614ab157614ab061460d565b5b6000614abf848285016149f3565b91505092915050565b60008060408385031215614adf57614ade61460d565b5b6000614aed8582860161479f565b9250506020614afe8582860161479f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b3e6020836146a6565b9150614b4982614b08565b602082019050919050565b60006020820190508181036000830152614b6d81614b31565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614bae82614612565b9150614bb983614612565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614bee57614bed614b74565b5b828201905092915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000614c2f601d836146a6565b9150614c3a82614bf9565b602082019050919050565b60006020820190508181036000830152614c5e81614c22565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614cac57607f821691505b60208210811415614cc057614cbf614c65565b5b50919050565b6000614cd182614612565b9150614cdc83614612565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614d1557614d14614b74565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d5a82614612565b9150614d6583614612565b925082614d7557614d74614d20565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614ddc602f836146a6565b9150614de782614d80565b604082019050919050565b60006020820190508181036000830152614e0b81614dcf565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614e6e6028836146a6565b9150614e7982614e12565b604082019050919050565b60006020820190508181036000830152614e9d81614e61565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614f006033836146a6565b9150614f0b82614ea4565b604082019050919050565b60006020820190508181036000830152614f2f81614ef3565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614f926030836146a6565b9150614f9d82614f36565b604082019050919050565b60006020820190508181036000830152614fc181614f85565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006150246039836146a6565b915061502f82614fc8565b604082019050919050565b6000602082019050818103600083015261505381615017565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006150b66025836146a6565b91506150c18261505a565b604082019050919050565b600060208201905081810360008301526150e5816150a9565b9050919050565b6000819050919050565b600061511161510c615107846150ec565b614857565b614612565b9050919050565b615121816150f6565b82525050565b600060c08201905061513c600083018961497b565b61514960208301886148d1565b6151566040830187615118565b6151636060830186615118565b615170608083018561497b565b61517d60a08301846148d1565b979650505050505050565b6000815190506151978161461c565b92915050565b6000806000606084860312156151b6576151b561460d565b5b60006151c486828701615188565b93505060206151d586828701615188565b92505060406151e686828701615188565b9150509250925092565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061524c6024836146a6565b9150615257826151f0565b604082019050919050565b6000602082019050818103600083015261527b8161523f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006152de6035836146a6565b91506152e982615282565b604082019050919050565b6000602082019050818103600083015261530d816152d1565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006153706034836146a6565b915061537b82615314565b604082019050919050565b6000602082019050818103600083015261539f81615363565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006154026026836146a6565b915061540d826153a6565b604082019050919050565b60006020820190508181036000830152615431816153f5565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b600061546e6020836146a6565b915061547982615438565b602082019050919050565b6000602082019050818103600083015261549d81615461565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000615500602a836146a6565b915061550b826154a4565b604082019050919050565b6000602082019050818103600083015261552f816154f3565b9050919050565b60006020828403121561554c5761554b61460d565b5b600061555a84828501615188565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006155bf6024836146a6565b91506155ca82615563565b604082019050919050565b600060208201905081810360008301526155ee816155b2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006156516022836146a6565b915061565c826155f5565b604082019050919050565b6000602082019050818103600083015261568081615644565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006156e36025836146a6565b91506156ee82615687565b604082019050919050565b60006020820190508181036000830152615712816156d6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006157756023836146a6565b915061578082615719565b604082019050919050565b600060208201905081810360008301526157a481615768565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006157e16016836146a6565b91506157ec826157ab565b602082019050919050565b60006020820190508181036000830152615810816157d4565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006158996049836146a6565b91506158a482615817565b606082019050919050565b600060208201905081810360008301526158c88161588c565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061592b6035836146a6565b9150615936826158cf565b604082019050919050565b6000602082019050818103600083015261595a8161591e565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006159976013836146a6565b91506159a282615961565b602082019050919050565b600060208201905081810360008301526159c68161598a565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615a296036836146a6565b9150615a34826159cd565b604082019050919050565b60006020820190508181036000830152615a5881615a1c565b9050919050565b6000615a6a82614612565b9150615a7583614612565b925082821015615a8857615a87614b74565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615aef6026836146a6565b9150615afa82615a93565b604082019050919050565b60006020820190508181036000830152615b1e81615ae2565b9050919050565b600081905092915050565b50565b6000615b40600083615b25565b9150615b4b82615b30565b600082019050919050565b6000615b6182615b33565b9150819050919050565b6000606082019050615b8060008301866148d1565b615b8d60208301856148d1565b615b9a60408301846148d1565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615c0f81614788565b92915050565b600060208284031215615c2b57615c2a61460d565b5b6000615c3984828501615c00565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615c7781614776565b82525050565b6000615c898383615c6e565b60208301905092915050565b6000602082019050919050565b6000615cad82615c42565b615cb78185615c4d565b9350615cc283615c5e565b8060005b83811015615cf3578151615cda8882615c7d565b9750615ce583615c95565b925050600181019050615cc6565b5085935050505092915050565b600060a082019050615d1560008301886148d1565b615d226020830187615118565b8181036040830152615d348186615ca2565b9050615d43606083018561497b565b615d5060808301846148d1565b969550505050505056fea26469706673582212202347b45d803cd601cd260bc6f75f9ad9ba2acd2e1d5112c8dad7aa362393f7f164736f6c634300080a0033f09d958f426c7565f09d958f537061636573f09d958f4149f09d958f456e67696e656572696e67f09d958f446576656c6f70657273f09d958f427573696e657373f09d958f454554f09d958ff09d958ff09d958f

Deployed Bytecode

0x6080604052600436106103bc5760003560e01c80638da5cb5b116101f2578063bbc0c7421161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610e25578063f637434214610e4e578063f8b45b0514610e79578063fe72b27a14610ea4576103c3565b8063dd62ed3e14610d67578063e2f4560514610da4578063e884f26014610dcf578063f11a24d314610dfa576103c3565b8063c876d0b9116100dc578063c876d0b914610ca9578063c8c8ebe414610cd4578063d257b34f14610cff578063d85ba06314610d3c576103c3565b8063bbc0c74214610c15578063bc37e1a314610c40578063c024666814610c57578063c18bc19514610c80576103c3565b80639fccce3211610185578063a4c82a0011610154578063a4c82a0014610b47578063a9059cbb14610b72578063aacebbe314610baf578063b62496f514610bd8576103c3565b80639fccce3214610a8b578063a0a485ca14610ab6578063a0d82dc514610adf578063a457c2d714610b0a576103c3565b806395d89b41116101c157806395d89b41146109e15780639a7a23d614610a0c5780639c3b4fdc14610a355780639ec22c0e14610a60576103c3565b80638da5cb5b146109375780638ea5220f14610962578063921369131461098d578063924de9b7146109b8576103c3565b80632c3e486c116102e25780636ddd171311610275578063751039fc11610244578063751039fc1461088d5780637571336a146108b857806375f0a874146108e15780637bce5a041461090c576103c3565b80636ddd1713146107e557806370a0823114610810578063715018a61461084d578063730c188814610864576103c3565b806349bd5a5e116102b157806349bd5a5e146107275780634a62bb65146107525780634fbee1931461077d5780636a486a8e146107ba576103c3565b80632c3e486c146106695780632e82f1a014610694578063313ce567146106bf57806339509351146106ea576103c3565b8063184c16c51161035a578063203e727e11610329578063203e727e146105c157806323b872dd146105ea57806327c8f835146106275780632c28f57914610652576103c3565b8063184c16c514610515578063199ffc72146105405780631a8145bb1461056b5780631f3fed8f14610596576103c3565b806310d5de531161039657806310d5de53146104595780631694505e1461049657806318160ddd146104c15780631816467f146104ec576103c3565b806305f93650146103c857806306fdde03146103f1578063095ea7b31461041c576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103ef60048036038101906103ea9190614648565b610ee1565b005b3480156103fd57600080fd5b50610406610fe0565b6040516104139190614734565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e91906147b4565b611072565b604051610450919061480f565b60405180910390f35b34801561046557600080fd5b50610480600480360381019061047b919061482a565b611090565b60405161048d919061480f565b60405180910390f35b3480156104a257600080fd5b506104ab6110af565b6040516104b891906148b6565b60405180910390f35b3480156104cd57600080fd5b506104d66110d3565b6040516104e391906148e0565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e919061482a565b6110dd565b005b34801561052157600080fd5b5061052a611219565b60405161053791906148e0565b60405180910390f35b34801561054c57600080fd5b5061055561121f565b60405161056291906148e0565b60405180910390f35b34801561057757600080fd5b50610580611225565b60405161058d91906148e0565b60405180910390f35b3480156105a257600080fd5b506105ab61122b565b6040516105b891906148e0565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e391906148fb565b611231565b005b3480156105f657600080fd5b50610611600480360381019061060c9190614928565b611340565b60405161061e919061480f565b60405180910390f35b34801561063357600080fd5b5061063c611438565b604051610649919061498a565b60405180910390f35b34801561065e57600080fd5b5061066761143e565b005b34801561067557600080fd5b5061067e6114f9565b60405161068b91906148e0565b60405180910390f35b3480156106a057600080fd5b506106a96114ff565b6040516106b6919061480f565b60405180910390f35b3480156106cb57600080fd5b506106d4611512565b6040516106e191906149c1565b60405180910390f35b3480156106f657600080fd5b50610711600480360381019061070c91906147b4565b61151b565b60405161071e919061480f565b60405180910390f35b34801561073357600080fd5b5061073c6115c7565b604051610749919061498a565b60405180910390f35b34801561075e57600080fd5b506107676115eb565b604051610774919061480f565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f919061482a565b6115fe565b6040516107b1919061480f565b60405180910390f35b3480156107c657600080fd5b506107cf611654565b6040516107dc91906148e0565b60405180910390f35b3480156107f157600080fd5b506107fa61165a565b604051610807919061480f565b60405180910390f35b34801561081c57600080fd5b506108376004803603810190610832919061482a565b61166d565b60405161084491906148e0565b60405180910390f35b34801561085957600080fd5b506108626116b5565b005b34801561087057600080fd5b5061088b60048036038101906108869190614a08565b61173d565b005b34801561089957600080fd5b506108a261187d565b6040516108af919061480f565b60405180910390f35b3480156108c457600080fd5b506108df60048036038101906108da9190614a5b565b61191d565b005b3480156108ed57600080fd5b506108f66119f4565b604051610903919061498a565b60405180910390f35b34801561091857600080fd5b50610921611a1a565b60405161092e91906148e0565b60405180910390f35b34801561094357600080fd5b5061094c611a20565b604051610959919061498a565b60405180910390f35b34801561096e57600080fd5b50610977611a4a565b604051610984919061498a565b60405180910390f35b34801561099957600080fd5b506109a2611a70565b6040516109af91906148e0565b60405180910390f35b3480156109c457600080fd5b506109df60048036038101906109da9190614a9b565b611a76565b005b3480156109ed57600080fd5b506109f6611b0f565b604051610a039190614734565b60405180910390f35b348015610a1857600080fd5b50610a336004803603810190610a2e9190614a5b565b611ba1565b005b348015610a4157600080fd5b50610a4a611cba565b604051610a5791906148e0565b60405180910390f35b348015610a6c57600080fd5b50610a75611cc0565b604051610a8291906148e0565b60405180910390f35b348015610a9757600080fd5b50610aa0611cc6565b604051610aad91906148e0565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190614648565b611ccc565b005b348015610aeb57600080fd5b50610af4611dcb565b604051610b0191906148e0565b60405180910390f35b348015610b1657600080fd5b50610b316004803603810190610b2c91906147b4565b611dd1565b604051610b3e919061480f565b60405180910390f35b348015610b5357600080fd5b50610b5c611ebc565b604051610b6991906148e0565b60405180910390f35b348015610b7e57600080fd5b50610b996004803603810190610b9491906147b4565b611ec2565b604051610ba6919061480f565b60405180910390f35b348015610bbb57600080fd5b50610bd66004803603810190610bd1919061482a565b611ee0565b005b348015610be457600080fd5b50610bff6004803603810190610bfa919061482a565b61201c565b604051610c0c919061480f565b60405180910390f35b348015610c2157600080fd5b50610c2a61203c565b604051610c37919061480f565b60405180910390f35b348015610c4c57600080fd5b50610c5561204f565b005b348015610c6357600080fd5b50610c7e6004803603810190610c799190614a5b565b6121f1565b005b348015610c8c57600080fd5b50610ca76004803603810190610ca291906148fb565b612316565b005b348015610cb557600080fd5b50610cbe612425565b604051610ccb919061480f565b60405180910390f35b348015610ce057600080fd5b50610ce9612438565b604051610cf691906148e0565b60405180910390f35b348015610d0b57600080fd5b50610d266004803603810190610d2191906148fb565b61243e565b604051610d33919061480f565b60405180910390f35b348015610d4857600080fd5b50610d51612593565b604051610d5e91906148e0565b60405180910390f35b348015610d7357600080fd5b50610d8e6004803603810190610d899190614ac8565b612599565b604051610d9b91906148e0565b60405180910390f35b348015610db057600080fd5b50610db9612620565b604051610dc691906148e0565b60405180910390f35b348015610ddb57600080fd5b50610de4612626565b604051610df1919061480f565b60405180910390f35b348015610e0657600080fd5b50610e0f6126c6565b604051610e1c91906148e0565b60405180910390f35b348015610e3157600080fd5b50610e4c6004803603810190610e47919061482a565b6126cc565b005b348015610e5a57600080fd5b50610e636127c4565b604051610e7091906148e0565b60405180910390f35b348015610e8557600080fd5b50610e8e6127ca565b604051610e9b91906148e0565b60405180910390f35b348015610eb057600080fd5b50610ecb6004803603810190610ec691906148fb565b6127d0565b604051610ed8919061480f565b60405180910390f35b610ee9612aa8565b73ffffffffffffffffffffffffffffffffffffffff16610f07611a20565b73ffffffffffffffffffffffffffffffffffffffff1614610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5490614b54565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a54601954610f859190614ba3565b610f8f9190614ba3565b601881905550601e6018541115610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290614c45565b60405180910390fd5b505050565b606060038054610fef90614c94565b80601f016020809104026020016040519081016040528092919081815260200182805461101b90614c94565b80156110685780601f1061103d57610100808354040283529160200191611068565b820191906000526020600020905b81548152906001019060200180831161104b57829003601f168201915b5050505050905090565b600061108661107f612aa8565b8484612ab0565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6110e5612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611103611a20565b73ffffffffffffffffffffffffffffffffffffffff1614611159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115090614b54565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b600b5481565b601d5481565b601c5481565b611239612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611257611a20565b73ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490614b54565b60405180910390fd5b670de0b6b3a76400006103e860016112c36110d3565b6112cd9190614cc6565b6112d79190614d4f565b6112e19190614d4f565b811015611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a90614df2565b60405180910390fd5b670de0b6b3a7640000816113379190614cc6565b60088190555050565b600061134d848484612c7b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611398612aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90614e84565b60405180910390fd5b61142c85611424612aa8565b858403612ab0565b60019150509392505050565b61dead81565b611446612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611464611a20565b73ffffffffffffffffffffffffffffffffffffffff16146114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b190614b54565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b600d5481565b600c60009054906101000a900460ff1681565b60006012905090565b60006115bd611528612aa8565b848460016000611536612aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115b89190614ba3565b612ab0565b6001905092915050565b7f000000000000000000000000ff91acc8681a77f516ca75c316e614fb23faa54a81565b601160009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116bd612aa8565b73ffffffffffffffffffffffffffffffffffffffff166116db611a20565b73ffffffffffffffffffffffffffffffffffffffff1614611731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172890614b54565b60405180910390fd5b61173b6000613a13565b565b611745612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611763611a20565b73ffffffffffffffffffffffffffffffffffffffff16146117b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b090614b54565b60405180910390fd5b6102588310156117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f590614f16565b60405180910390fd5b6103e88211158015611811575060008210155b611850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184790614fa8565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b6000611887612aa8565b73ffffffffffffffffffffffffffffffffffffffff166118a5611a20565b73ffffffffffffffffffffffffffffffffffffffff16146118fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f290614b54565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b611925612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611943611a20565b73ffffffffffffffffffffffffffffffffffffffff1614611999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199090614b54565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b611a7e612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611a9c611a20565b73ffffffffffffffffffffffffffffffffffffffff1614611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae990614b54565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b606060048054611b1e90614c94565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4a90614c94565b8015611b975780601f10611b6c57610100808354040283529160200191611b97565b820191906000526020600020905b815481529060010190602001808311611b7a57829003601f168201915b5050505050905090565b611ba9612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611bc7611a20565b73ffffffffffffffffffffffffffffffffffffffff1614611c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1490614b54565b60405180910390fd5b7f000000000000000000000000ff91acc8681a77f516ca75c316e614fb23faa54a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca39061503a565b60405180910390fd5b611cb68282613ad9565b5050565b60175481565b60105481565b601e5481565b611cd4612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611cf2611a20565b73ffffffffffffffffffffffffffffffffffffffff1614611d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3f90614b54565b60405180910390fd5b826015819055508160168190555080601781905550601754601654601554611d709190614ba3565b611d7a9190614ba3565b601481905550601e6014541115611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd90614c45565b60405180910390fd5b505050565b601b5481565b60008060016000611de0612aa8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e94906150cc565b60405180910390fd5b611eb1611ea8612aa8565b85858403612ab0565b600191505092915050565b600e5481565b6000611ed6611ecf612aa8565b8484612c7b565b6001905092915050565b611ee8612aa8565b73ffffffffffffffffffffffffffffffffffffffff16611f06611a20565b73ffffffffffffffffffffffffffffffffffffffff1614611f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5390614b54565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60216020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b612057612aa8565b73ffffffffffffffffffffffffffffffffffffffff16612075611a20565b73ffffffffffffffffffffffffffffffffffffffff16146120cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c290614b54565b60405180910390fd5b60004790506000606460506120df3061166d565b6120e99190614cc6565b6120f39190614d4f565b9050612120307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d83612ab0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719833084600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016121a796959493929190615127565b60606040518083038185885af11580156121c5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121ea919061519d565b5050505050565b6121f9612aa8565b73ffffffffffffffffffffffffffffffffffffffff16612217611a20565b73ffffffffffffffffffffffffffffffffffffffff161461226d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226490614b54565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161230a919061480f565b60405180910390a25050565b61231e612aa8565b73ffffffffffffffffffffffffffffffffffffffff1661233c611a20565b73ffffffffffffffffffffffffffffffffffffffff1614612392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238990614b54565b60405180910390fd5b670de0b6b3a76400006103e860056123a86110d3565b6123b29190614cc6565b6123bc9190614d4f565b6123c69190614d4f565b811015612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ff90615262565b60405180910390fd5b670de0b6b3a76400008161241c9190614cc6565b600a8190555050565b601360009054906101000a900460ff1681565b60085481565b6000612448612aa8565b73ffffffffffffffffffffffffffffffffffffffff16612466611a20565b73ffffffffffffffffffffffffffffffffffffffff16146124bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b390614b54565b60405180910390fd5b620186a060016124ca6110d3565b6124d49190614cc6565b6124de9190614d4f565b821015612520576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612517906152f4565b60405180910390fd5b6103e8600561252d6110d3565b6125379190614cc6565b6125419190614d4f565b821115612583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257a90615386565b60405180910390fd5b8160098190555060019050919050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000612630612aa8565b73ffffffffffffffffffffffffffffffffffffffff1661264e611a20565b73ffffffffffffffffffffffffffffffffffffffff16146126a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269b90614b54565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b60165481565b6126d4612aa8565b73ffffffffffffffffffffffffffffffffffffffff166126f2611a20565b73ffffffffffffffffffffffffffffffffffffffff1614612748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273f90614b54565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127af90615418565b60405180910390fd5b6127c181613a13565b50565b601a5481565b600a5481565b60006127da612aa8565b73ffffffffffffffffffffffffffffffffffffffff166127f8611a20565b73ffffffffffffffffffffffffffffffffffffffff161461284e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284590614b54565b60405180910390fd5b600f5460105461285e9190614ba3565b421161289f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289690615484565b60405180910390fd5b6103e88211156128e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128db90615516565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000ff91acc8681a77f516ca75c316e614fb23faa54a6040518263ffffffff1660e01b8152600401612946919061498a565b602060405180830381865afa158015612963573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129879190615536565b905060006129b26127106129a48685613b7a90919063ffffffff16565b613b9090919063ffffffff16565b905060008111156129eb576129ea7f000000000000000000000000ff91acc8681a77f516ca75c316e614fb23faa54a61dead83613ba6565b5b60007f000000000000000000000000ff91acc8681a77f516ca75c316e614fb23faa54a90508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a5857600080fd5b505af1158015612a6c573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b17906155d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8790615667565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c6e91906148e0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce2906156f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d529061578b565b60405180910390fd5b6000811415612d7557612d7083836000613ba6565b613a0e565b601160009054906101000a900460ff161561343857612d92611a20565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e005750612dd0611a20565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e395750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e73575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e8c5750600560149054906101000a900460ff16155b1561343757601160019054906101000a900460ff16612f8657601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f465750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7c906157f7565b60405180910390fd5b5b601360009054906101000a900460ff161561314e57612fa3611a20565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561302a57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561308257507f000000000000000000000000ff91acc8681a77f516ca75c316e614fb23faa54a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561314d5743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ff906158af565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131f15750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132985760085481111561323b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161323290615941565b60405180910390fd5b600a546132478361166d565b826132529190614ba3565b1115613293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328a906159ad565b60405180910390fd5b613436565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561333b5750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561338a57600854811115613385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337c90615a3f565b60405180910390fd5b613435565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661343457600a546133e78361166d565b826133f29190614ba3565b1115613433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342a906159ad565b60405180910390fd5b5b5b5b5b5b60006134433061166d565b9050600060095482101590508080156134685750601160029054906101000a900460ff165b80156134815750600560149054906101000a900460ff16155b80156134d75750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561352d5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135835750601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135c7576001600560146101000a81548160ff0219169083151502179055506135ab613e27565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff1615801561362d5750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156136455750600c60009054906101000a900460ff165b80156136605750600d54600e5461365c9190614ba3565b4210155b80156136b65750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136c5576136c361410e565b505b6000600560149054906101000a900460ff16159050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061377b5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561378557600090505b600081156139fe57602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137e857506000601854115b156138b557613815606461380760185488613b7a90919063ffffffff16565b613b9090919063ffffffff16565b9050601854601a54826138289190614cc6565b6138329190614d4f565b601d60008282546138439190614ba3565b92505081905550601854601b548261385b9190614cc6565b6138659190614d4f565b601e60008282546138769190614ba3565b925050819055506018546019548261388e9190614cc6565b6138989190614d4f565b601c60008282546138a99190614ba3565b925050819055506139da565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561391057506000601454115b156139d95761393d606461392f60145488613b7a90919063ffffffff16565b613b9090919063ffffffff16565b9050601454601654826139509190614cc6565b61395a9190614d4f565b601d600082825461396b9190614ba3565b92505081905550601454601754826139839190614cc6565b61398d9190614d4f565b601e600082825461399e9190614ba3565b92505081905550601454601554826139b69190614cc6565b6139c09190614d4f565b601c60008282546139d19190614ba3565b925050819055505b5b60008111156139ef576139ee873083613ba6565b5b80856139fb9190615a5f565b94505b613a09878787613ba6565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008183613b889190614cc6565b905092915050565b60008183613b9e9190614d4f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c0d906156f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c7d9061578b565b60405180910390fd5b613c918383836142d4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d0e90615b05565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613daa9190614ba3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613e0e91906148e0565b60405180910390a3613e218484846142d9565b50505050565b6000613e323061166d565b90506000601e54601c54601d54613e499190614ba3565b613e539190614ba3565b9050600080831480613e655750600082145b15613e725750505061410c565b6014600954613e819190614cc6565b831115613e9a576014600954613e979190614cc6565b92505b6000600283601d5486613ead9190614cc6565b613eb79190614d4f565b613ec19190614d4f565b90506000613ed882866142de90919063ffffffff16565b90506000479050613ee8826142f4565b6000613efd82476142de90919063ffffffff16565b90506000613f2887613f1a601c5485613b7a90919063ffffffff16565b613b9090919063ffffffff16565b90506000613f5388613f45601e5486613b7a90919063ffffffff16565b613b9090919063ffffffff16565b90506000818385613f649190615a5f565b613f6e9190615a5f565b90506000601d819055506000601c819055506000601e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613fce90615b56565b60006040518083038185875af1925050503d806000811461400b576040519150601f19603f3d011682016040523d82523d6000602084013e614010565b606091505b5050809850506000871180156140265750600081115b15614073576140358782614531565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601d5460405161406a93929190615b6b565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516140b990615b56565b60006040518083038185875af1925050503d80600081146140f6576040519150601f19603f3d011682016040523d82523d6000602084013e6140fb565b606091505b505080985050505050505050505050505b565b600042600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000ff91acc8681a77f516ca75c316e614fb23faa54a6040518263ffffffff1660e01b8152600401614172919061498a565b602060405180830381865afa15801561418f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141b39190615536565b905060006141e06127106141d2600b5485613b7a90919063ffffffff16565b613b9090919063ffffffff16565b90506000811115614219576142187f000000000000000000000000ff91acc8681a77f516ca75c316e614fb23faa54a61dead83613ba6565b5b60007f000000000000000000000000ff91acc8681a77f516ca75c316e614fb23faa54a90508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561428657600080fd5b505af115801561429a573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b600081836142ec9190615a5f565b905092915050565b6000600267ffffffffffffffff81111561431157614310615ba2565b5b60405190808252806020026020018201604052801561433f5781602001602082028036833780820191505090505b509050308160008151811061435757614356615bd1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144209190615c15565b8160018151811061443457614433615bd1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614499307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612ab0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016144fb959493929190615d00565b600060405180830381600087803b15801561451557600080fd5b505af1158015614529573d6000803e3d6000fd5b505050505050565b61455c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612ab0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016145c396959493929190615127565b60606040518083038185885af11580156145e1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614606919061519d565b5050505050565b600080fd5b6000819050919050565b61462581614612565b811461463057600080fd5b50565b6000813590506146428161461c565b92915050565b6000806000606084860312156146615761466061460d565b5b600061466f86828701614633565b935050602061468086828701614633565b925050604061469186828701614633565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b838110156146d55780820151818401526020810190506146ba565b838111156146e4576000848401525b50505050565b6000601f19601f8301169050919050565b60006147068261469b565b61471081856146a6565b93506147208185602086016146b7565b614729816146ea565b840191505092915050565b6000602082019050818103600083015261474e81846146fb565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061478182614756565b9050919050565b61479181614776565b811461479c57600080fd5b50565b6000813590506147ae81614788565b92915050565b600080604083850312156147cb576147ca61460d565b5b60006147d98582860161479f565b92505060206147ea85828601614633565b9150509250929050565b60008115159050919050565b614809816147f4565b82525050565b60006020820190506148246000830184614800565b92915050565b6000602082840312156148405761483f61460d565b5b600061484e8482850161479f565b91505092915050565b6000819050919050565b600061487c61487761487284614756565b614857565b614756565b9050919050565b600061488e82614861565b9050919050565b60006148a082614883565b9050919050565b6148b081614895565b82525050565b60006020820190506148cb60008301846148a7565b92915050565b6148da81614612565b82525050565b60006020820190506148f560008301846148d1565b92915050565b6000602082840312156149115761491061460d565b5b600061491f84828501614633565b91505092915050565b6000806000606084860312156149415761494061460d565b5b600061494f8682870161479f565b93505060206149608682870161479f565b925050604061497186828701614633565b9150509250925092565b61498481614776565b82525050565b600060208201905061499f600083018461497b565b92915050565b600060ff82169050919050565b6149bb816149a5565b82525050565b60006020820190506149d660008301846149b2565b92915050565b6149e5816147f4565b81146149f057600080fd5b50565b600081359050614a02816149dc565b92915050565b600080600060608486031215614a2157614a2061460d565b5b6000614a2f86828701614633565b9350506020614a4086828701614633565b9250506040614a51868287016149f3565b9150509250925092565b60008060408385031215614a7257614a7161460d565b5b6000614a808582860161479f565b9250506020614a91858286016149f3565b9150509250929050565b600060208284031215614ab157614ab061460d565b5b6000614abf848285016149f3565b91505092915050565b60008060408385031215614adf57614ade61460d565b5b6000614aed8582860161479f565b9250506020614afe8582860161479f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b3e6020836146a6565b9150614b4982614b08565b602082019050919050565b60006020820190508181036000830152614b6d81614b31565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614bae82614612565b9150614bb983614612565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614bee57614bed614b74565b5b828201905092915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000614c2f601d836146a6565b9150614c3a82614bf9565b602082019050919050565b60006020820190508181036000830152614c5e81614c22565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614cac57607f821691505b60208210811415614cc057614cbf614c65565b5b50919050565b6000614cd182614612565b9150614cdc83614612565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614d1557614d14614b74565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d5a82614612565b9150614d6583614612565b925082614d7557614d74614d20565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614ddc602f836146a6565b9150614de782614d80565b604082019050919050565b60006020820190508181036000830152614e0b81614dcf565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614e6e6028836146a6565b9150614e7982614e12565b604082019050919050565b60006020820190508181036000830152614e9d81614e61565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614f006033836146a6565b9150614f0b82614ea4565b604082019050919050565b60006020820190508181036000830152614f2f81614ef3565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614f926030836146a6565b9150614f9d82614f36565b604082019050919050565b60006020820190508181036000830152614fc181614f85565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006150246039836146a6565b915061502f82614fc8565b604082019050919050565b6000602082019050818103600083015261505381615017565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006150b66025836146a6565b91506150c18261505a565b604082019050919050565b600060208201905081810360008301526150e5816150a9565b9050919050565b6000819050919050565b600061511161510c615107846150ec565b614857565b614612565b9050919050565b615121816150f6565b82525050565b600060c08201905061513c600083018961497b565b61514960208301886148d1565b6151566040830187615118565b6151636060830186615118565b615170608083018561497b565b61517d60a08301846148d1565b979650505050505050565b6000815190506151978161461c565b92915050565b6000806000606084860312156151b6576151b561460d565b5b60006151c486828701615188565b93505060206151d586828701615188565b92505060406151e686828701615188565b9150509250925092565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061524c6024836146a6565b9150615257826151f0565b604082019050919050565b6000602082019050818103600083015261527b8161523f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006152de6035836146a6565b91506152e982615282565b604082019050919050565b6000602082019050818103600083015261530d816152d1565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006153706034836146a6565b915061537b82615314565b604082019050919050565b6000602082019050818103600083015261539f81615363565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006154026026836146a6565b915061540d826153a6565b604082019050919050565b60006020820190508181036000830152615431816153f5565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b600061546e6020836146a6565b915061547982615438565b602082019050919050565b6000602082019050818103600083015261549d81615461565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000615500602a836146a6565b915061550b826154a4565b604082019050919050565b6000602082019050818103600083015261552f816154f3565b9050919050565b60006020828403121561554c5761554b61460d565b5b600061555a84828501615188565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006155bf6024836146a6565b91506155ca82615563565b604082019050919050565b600060208201905081810360008301526155ee816155b2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006156516022836146a6565b915061565c826155f5565b604082019050919050565b6000602082019050818103600083015261568081615644565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006156e36025836146a6565b91506156ee82615687565b604082019050919050565b60006020820190508181036000830152615712816156d6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006157756023836146a6565b915061578082615719565b604082019050919050565b600060208201905081810360008301526157a481615768565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006157e16016836146a6565b91506157ec826157ab565b602082019050919050565b60006020820190508181036000830152615810816157d4565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006158996049836146a6565b91506158a482615817565b606082019050919050565b600060208201905081810360008301526158c88161588c565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061592b6035836146a6565b9150615936826158cf565b604082019050919050565b6000602082019050818103600083015261595a8161591e565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006159976013836146a6565b91506159a282615961565b602082019050919050565b600060208201905081810360008301526159c68161598a565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615a296036836146a6565b9150615a34826159cd565b604082019050919050565b60006020820190508181036000830152615a5881615a1c565b9050919050565b6000615a6a82614612565b9150615a7583614612565b925082821015615a8857615a87614b74565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615aef6026836146a6565b9150615afa82615a93565b604082019050919050565b60006020820190508181036000830152615b1e81615ae2565b9050919050565b600081905092915050565b50565b6000615b40600083615b25565b9150615b4b82615b30565b600082019050919050565b6000615b6182615b33565b9150819050919050565b6000606082019050615b8060008301866148d1565b615b8d60208301856148d1565b615b9a60408301846148d1565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615c0f81614788565b92915050565b600060208284031215615c2b57615c2a61460d565b5b6000615c3984828501615c00565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615c7781614776565b82525050565b6000615c898383615c6e565b60208301905092915050565b6000602082019050919050565b6000615cad82615c42565b615cb78185615c4d565b9350615cc283615c5e565b8060005b83811015615cf3578151615cda8882615c7d565b9750615ce583615c95565b925050600181019050615cc6565b5085935050505092915050565b600060a082019050615d1560008301886148d1565b615d226020830187615118565b8181036040830152615d348186615ca2565b9050615d43606083018561497b565b615d5060808301846148d1565b969550505050505056fea26469706673582212202347b45d803cd601cd260bc6f75f9ad9ba2acd2e1d5112c8dad7aa362393f7f164736f6c634300080a0033

Deployed Bytecode Sourcemap

32824:20081:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40877:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9652:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11819:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34457:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32905:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10772:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42233:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33471:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33285:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34241:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34201;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39549:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12470:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33008:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38457:148;;;;;;;;;;;;;:::i;:::-;;33381:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33341:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10614:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13371:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32963:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33569:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42398:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34056:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33649:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10943:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2887:103;;;;;;;;;;;;;:::i;:::-;;50487:555;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38657:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40096:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33100:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33949;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2236:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33137:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34091:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40359:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9871:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41486:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34023:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33525:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34281:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40467:402;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34167:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14089:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33433:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11283:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41994:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34678:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33609:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37872:531;;;;;;;;;;;;;:::i;:::-;;41296:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39832:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33867:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33170:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39044:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33915:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11521:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33212:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38839:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33986:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3145:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34129:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33252:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51846:1056;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40877:411;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41046:13:::1;41027:16;:32;;;;41089:13;41070:16;:32;;;;41126:7;41113:10;:20;;;;41198:10;;41179:16;;41160;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;41144:13;:64;;;;41244:2;41227:13;;:19;;41219:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;40877:411:::0;;;:::o;9652:100::-;9706:13;9739:5;9732:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9652:100;:::o;11819:169::-;11902:4;11919:39;11928:12;:10;:12::i;:::-;11942:7;11951:6;11919:8;:39::i;:::-;11976:4;11969:11;;11819:169;;;;:::o;34457:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;32905:51::-;;;:::o;10772:108::-;10833:7;10860:12;;10853:19;;10772:108;:::o;42233:157::-;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42340:9:::1;;;;;;;;;;;42312:38;;42329:9;42312:38;;;;;;;;;;;;42373:9;42361;;:21;;;;;;;;;;;;;;;;;;42233:157:::0;:::o;33471:47::-;;;;:::o;33285:36::-;;;;:::o;34241:33::-;;;;:::o;34201:::-;;;;:::o;39549:275::-;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39686:4:::1;39678;39673:1;39657:13;:11;:13::i;:::-;:17;;;;:::i;:::-;39656:26;;;;:::i;:::-;39655:35;;;;:::i;:::-;39645:6;:45;;39623:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;39809:6;39799;:17;;;;:::i;:::-;39776:20;:40;;;;39549:275:::0;:::o;12470:492::-;12610:4;12627:36;12637:6;12645:9;12656:6;12627:9;:36::i;:::-;12676:24;12703:11;:19;12715:6;12703:19;;;;;;;;;;;;;;;:33;12723:12;:10;:12::i;:::-;12703:33;;;;;;;;;;;;;;;;12676:60;;12775:6;12755:16;:26;;12747:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12862:57;12871:6;12879:12;:10;:12::i;:::-;12912:6;12893:16;:25;12862:8;:57::i;:::-;12950:4;12943:11;;;12470:492;;;;;:::o;33008:53::-;33054:6;33008:53;:::o;38457:148::-;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38521:4:::1;38505:13;;:20;;;;;;;;;;;;;;;;;;38550:4;38536:11;;:18;;;;;;;;;;;;;;;;;;38582:15;38565:14;:32;;;;38457:148::o:0;33381:45::-;;;;:::o;33341:33::-;;;;;;;;;;;;;:::o;10614:93::-;10672:5;10697:2;10690:9;;10614:93;:::o;13371:215::-;13459:4;13476:80;13485:12;:10;:12::i;:::-;13499:7;13545:10;13508:11;:25;13520:12;:10;:12::i;:::-;13508:25;;;;;;;;;;;;;;;:34;13534:7;13508:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13476:8;:80::i;:::-;13574:4;13567:11;;13371:215;;;;:::o;32963:38::-;;;:::o;33569:33::-;;;;;;;;;;;;;:::o;42398:126::-;42464:4;42488:19;:28;42508:7;42488:28;;;;;;;;;;;;;;;;;;;;;;;;;42481:35;;42398:126;;;:::o;34056:28::-;;;;:::o;33649:31::-;;;;;;;;;;;;;:::o;10943:127::-;11017:7;11044:9;:18;11054:7;11044:18;;;;;;;;;;;;;;;;11037:25;;10943:127;;;:::o;2887:103::-;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2952:30:::1;2979:1;2952:18;:30::i;:::-;2887:103::o:0;50487:555::-;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50689:3:::1;50666:19;:26;;50644:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;50816:4;50804:8;:16;;:33;;;;;50836:1;50824:8;:13;;50804:33;50782:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;50942:19;50924:15;:37;;;;50991:8;50972:16;:27;;;;51026:8;51010:13;;:24;;;;;;;;;;;;;;;;;;50487:555:::0;;;:::o;38657:121::-;38709:4;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38743:5:::1;38726:14;;:22;;;;;;;;;;;;;;;;;;38766:4;38759:11;;38657:121:::0;:::o;40096:167::-;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;40251:4:::1;40209:31;:39;40241:6;40209:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;40096:167:::0;;:::o;33100:30::-;;;;;;;;;;;;;:::o;33949:::-;;;;:::o;2236:87::-;2282:7;2309:6;;;;;;;;;;;2302:13;;2236:87;:::o;33137:24::-;;;;;;;;;;;;;:::o;34091:31::-;;;;:::o;40359:100::-;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;40444:7:::1;40430:11;;:21;;;;;;;;;;;;;;;;;;40359:100:::0;:::o;9871:104::-;9927:13;9960:7;9953:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9871:104;:::o;41486:304::-;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41630:13:::1;41622:21;;:4;:21;;;;41600:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;41741:41;41770:4;41776:5;41741:28;:41::i;:::-;41486:304:::0;;:::o;34023:24::-;;;;:::o;33525:35::-;;;;:::o;34281:27::-;;;;:::o;40467:402::-;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;40634:13:::1;40616:15;:31;;;;40676:13;40658:15;:31;;;;40712:7;40700:9;:19;;;;40781:9;;40763:15;;40745;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;40730:12;:60;;;;40825:2;40809:12;;:18;;40801:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;40467:402:::0;;;:::o;34167:25::-;;;;:::o;14089:413::-;14182:4;14199:24;14226:11;:25;14238:12;:10;:12::i;:::-;14226:25;;;;;;;;;;;;;;;:34;14252:7;14226:34;;;;;;;;;;;;;;;;14199:61;;14299:15;14279:16;:35;;14271:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14392:67;14401:12;:10;:12::i;:::-;14415:7;14443:15;14424:16;:34;14392:8;:67::i;:::-;14490:4;14483:11;;;14089:413;;;;:::o;33433:29::-;;;;:::o;11283:175::-;11369:4;11386:42;11396:12;:10;:12::i;:::-;11410:9;11421:6;11386:9;:42::i;:::-;11446:4;11439:11;;11283:175;;;;:::o;41994:231::-;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42154:15:::1;;;;;;;;;;;42111:59;;42134:18;42111:59;;;;;;;;;;;;42199:18;42181:15;;:36;;;;;;;;;;;;;;;;;;41994:231:::0;:::o;34678:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;33609:33::-;;;;;;;;;;;;;:::o;37872:531::-;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37918:17:::1;37938:21;37918:41;;37970:19;38024:3;38019:2;37992:24;38010:4;37992:9;:24::i;:::-;:29;;;;:::i;:::-;:35;;;;:::i;:::-;37970:57;;38058:62;38075:4;38090:15;38108:11;38058:8;:62::i;:::-;38133:15;:31;;;38172:9;38205:4;38225:11;38255:1;38302::::0;38345:9:::1;;;;;;;;;;;38369:15;38133:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;37907:496;;37872:531::o:0;41296:182::-;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41412:8:::1;41381:19;:28;41401:7;41381:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;41452:7;41436:34;;;41461:8;41436:34;;;;;;:::i;:::-;;;;;;;;41296:182:::0;;:::o;39832:256::-;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39972:4:::1;39964;39959:1;39943:13;:11;:13::i;:::-;:17;;;;:::i;:::-;39942:26;;;;:::i;:::-;39941:35;;;;:::i;:::-;39931:6;:45;;39909:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;40073:6;40063;:17;;;;:::i;:::-;40051:9;:29;;;;39832:256:::0;:::o;33867:39::-;;;;;;;;;;;;;:::o;33170:35::-;;;;:::o;39044:497::-;39152:4;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39231:6:::1;39226:1;39210:13;:11;:13::i;:::-;:17;;;;:::i;:::-;39209:28;;;;:::i;:::-;39196:9;:41;;39174:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;39386:4;39381:1;39365:13;:11;:13::i;:::-;:17;;;;:::i;:::-;39364:26;;;;:::i;:::-;39351:9;:39;;39329:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;39502:9;39481:18;:30;;;;39529:4;39522:11;;39044:497:::0;;;:::o;33915:27::-;;;;:::o;11521:151::-;11610:7;11637:11;:18;11649:5;11637:18;;;;;;;;;;;;;;;:27;11656:7;11637:27;;;;;;;;;;;;;;;;11630:34;;11521:151;;;;:::o;33212:33::-;;;;:::o;38839:135::-;38899:4;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38939:5:::1;38916:20;;:28;;;;;;;;;;;;;;;;;;38962:4;38955:11;;38839:135:::0;:::o;33986:30::-;;;;:::o;3145:201::-;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3254:1:::1;3234:22;;:8;:22;;;;3226:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3310:28;3329:8;3310:18;:28::i;:::-;3145:201:::0;:::o;34129:31::-;;;;:::o;33252:24::-;;;;:::o;51846:1056::-;51957:4;2467:12;:10;:12::i;:::-;2456:23;;:7;:5;:7::i;:::-;:23;;;2448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52042:19:::1;;52019:20;;:42;;;;:::i;:::-;52001:15;:60;51979:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;52151:4;52140:7;:15;;52132:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;52236:15;52213:20;:38;;;;52306:28;52337:4;:14;;;52352:13;52337:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;52306:60;;52416:20;52439:44;52477:5;52439:33;52464:7;52439:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;52416:67;;52603:1;52588:12;:16;52584:110;;;52621:61;52637:13;52660:6;52669:12;52621:15;:61::i;:::-;52584:110;52769:19;52806:13;52769:51;;52831:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;52858:14;;;;;;;;;;52890:4;52883:11;;;;;51846:1056:::0;;;:::o;909:98::-;962:7;989:10;982:17;;909:98;:::o;17773:380::-;17926:1;17909:19;;:5;:19;;;;17901:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18007:1;17988:21;;:7;:21;;;;17980:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18091:6;18061:11;:18;18073:5;18061:18;;;;;;;;;;;;;;;:27;18080:7;18061:27;;;;;;;;;;;;;;;:36;;;;18129:7;18113:32;;18122:5;18113:32;;;18138:6;18113:32;;;;;;:::i;:::-;;;;;;;;17773:380;;;:::o;42582:5011::-;42730:1;42714:18;;:4;:18;;;;42706:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42807:1;42793:16;;:2;:16;;;;42785:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;42876:1;42866:6;:11;42862:93;;;42894:28;42910:4;42916:2;42920:1;42894:15;:28::i;:::-;42937:7;;42862:93;42971:14;;;;;;;;;;;42967:2487;;;43032:7;:5;:7::i;:::-;43024:15;;:4;:15;;;;:49;;;;;43066:7;:5;:7::i;:::-;43060:13;;:2;:13;;;;43024:49;:86;;;;;43108:1;43094:16;;:2;:16;;;;43024:86;:128;;;;;43145:6;43131:21;;:2;:21;;;;43024:128;:158;;;;;43174:8;;;;;;;;;;;43173:9;43024:158;43002:2441;;;43222:13;;;;;;;;;;;43217:223;;43294:19;:25;43314:4;43294:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;43323:19;:23;43343:2;43323:23;;;;;;;;;;;;;;;;;;;;;;;;;43294:52;43260:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;43217:223;43596:20;;;;;;;;;;;43592:641;;;43677:7;:5;:7::i;:::-;43671:13;;:2;:13;;;;:72;;;;;43727:15;43713:30;;:2;:30;;;;43671:72;:129;;;;;43786:13;43772:28;;:2;:28;;;;43671:129;43641:573;;;43964:12;43889:28;:39;43918:9;43889:39;;;;;;;;;;;;;;;;:87;43851:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;44178:12;44136:28;:39;44165:9;44136:39;;;;;;;;;;;;;;;:54;;;;43641:573;43592:641;44307:25;:31;44333:4;44307:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;44364:31;:35;44396:2;44364:35;;;;;;;;;;;;;;;;;;;;;;;;;44363:36;44307:92;44281:1147;;;44486:20;;44476:6;:30;;44442:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;44694:9;;44677:13;44687:2;44677:9;:13::i;:::-;44668:6;:22;;;;:::i;:::-;:35;;44634:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;44281:1147;;;44872:25;:29;44898:2;44872:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;44927:31;:37;44959:4;44927:37;;;;;;;;;;;;;;;;;;;;;;;;;44926:38;44872:92;44846:582;;;45051:20;;45041:6;:30;;45007:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;44846:582;;;45208:31;:35;45240:2;45208:35;;;;;;;;;;;;;;;;;;;;;;;;;45203:225;;45328:9;;45311:13;45321:2;45311:9;:13::i;:::-;45302:6;:22;;;;:::i;:::-;:35;;45268:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;45203:225;44846:582;44281:1147;43002:2441;42967:2487;45466:28;45497:24;45515:4;45497:9;:24::i;:::-;45466:55;;45534:12;45573:18;;45549:20;:42;;45534:57;;45622:7;:35;;;;;45646:11;;;;;;;;;;;45622:35;:61;;;;;45675:8;;;;;;;;;;;45674:9;45622:61;:110;;;;;45701:25;:31;45727:4;45701:31;;;;;;;;;;;;;;;;;;;;;;;;;45700:32;45622:110;:153;;;;;45750:19;:25;45770:4;45750:25;;;;;;;;;;;;;;;;;;;;;;;;;45749:26;45622:153;:194;;;;;45793:19;:23;45813:2;45793:23;;;;;;;;;;;;;;;;;;;;;;;;;45792:24;45622:194;45604:326;;;45854:4;45843:8;;:15;;;;;;;;;;;;;;;;;;45875:10;:8;:10::i;:::-;45913:5;45902:8;;:16;;;;;;;;;;;;;;;;;;45604:326;45961:8;;;;;;;;;;;45960:9;:55;;;;;45986:25;:29;46012:2;45986:29;;;;;;;;;;;;;;;;;;;;;;;;;45960:55;:85;;;;;46032:13;;;;;;;;;;;45960:85;:153;;;;;46098:15;;46081:14;;:32;;;;:::i;:::-;46062:15;:51;;45960:153;:196;;;;;46131:19;:25;46151:4;46131:25;;;;;;;;;;;;;;;;;;;;;;;;;46130:26;45960:196;45942:282;;;46183:29;:27;:29::i;:::-;;45942:282;46236:12;46252:8;;;;;;;;;;;46251:9;46236:24;;46362:19;:25;46382:4;46362:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;46391:19;:23;46411:2;46391:23;;;;;;;;;;;;;;;;;;;;;;;;;46362:52;46358:100;;;46441:5;46431:15;;46358:100;46470:12;46575:7;46571:969;;;46627:25;:29;46653:2;46627:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;46676:1;46660:13;;:17;46627:50;46623:768;;;46705:34;46735:3;46705:25;46716:13;;46705:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;46698:41;;46808:13;;46788:16;;46781:4;:23;;;;:::i;:::-;46780:41;;;;:::i;:::-;46758:18;;:63;;;;;;;:::i;:::-;;;;;;;;46878:13;;46864:10;;46857:4;:17;;;;:::i;:::-;46856:35;;;;:::i;:::-;46840:12;;:51;;;;;;;:::i;:::-;;;;;;;;46960:13;;46940:16;;46933:4;:23;;;;:::i;:::-;46932:41;;;;:::i;:::-;46910:18;;:63;;;;;;;:::i;:::-;;;;;;;;46623:768;;;47035:25;:31;47061:4;47035:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;47085:1;47070:12;;:16;47035:51;47031:360;;;47114:33;47143:3;47114:24;47125:12;;47114:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;47107:40;;47215:12;;47196:15;;47189:4;:22;;;;:::i;:::-;47188:39;;;;:::i;:::-;47166:18;;:61;;;;;;;:::i;:::-;;;;;;;;47283:12;;47270:9;;47263:4;:16;;;;:::i;:::-;47262:33;;;;:::i;:::-;47246:12;;:49;;;;;;;:::i;:::-;;;;;;;;47363:12;;47344:15;;47337:4;:22;;;;:::i;:::-;47336:39;;;;:::i;:::-;47314:18;;:61;;;;;;;:::i;:::-;;;;;;;;47031:360;46623:768;47418:1;47411:4;:8;47407:91;;;47440:42;47456:4;47470;47477;47440:15;:42::i;:::-;47407:91;47524:4;47514:14;;;;;:::i;:::-;;;46571:969;47552:33;47568:4;47574:2;47578:6;47552:15;:33::i;:::-;42695:4898;;;;42582:5011;;;;:::o;3506:191::-;3580:16;3599:6;;;;;;;;;;;3580:25;;3625:8;3616:6;;:17;;;;;;;;;;;;;;;;;;3680:8;3649:40;;3670:8;3649:40;;;;;;;;;;;;3569:128;3506:191;:::o;41798:188::-;41915:5;41881:25;:31;41907:4;41881:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;41972:5;41938:40;;41966:4;41938:40;;;;;;;;;;;;41798:188;;:::o;23226:98::-;23284:7;23315:1;23311;:5;;;;:::i;:::-;23304:12;;23226:98;;;;:::o;23625:::-;23683:7;23714:1;23710;:5;;;;:::i;:::-;23703:12;;23625:98;;;;:::o;14992:733::-;15150:1;15132:20;;:6;:20;;;;15124:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15234:1;15213:23;;:9;:23;;;;15205:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15289:47;15310:6;15318:9;15329:6;15289:20;:47::i;:::-;15349:21;15373:9;:17;15383:6;15373:17;;;;;;;;;;;;;;;;15349:41;;15426:6;15409:13;:23;;15401:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15547:6;15531:13;:22;15511:9;:17;15521:6;15511:17;;;;;;;;;;;;;;;:42;;;;15599:6;15575:9;:20;15585:9;15575:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15640:9;15623:35;;15632:6;15623:35;;;15651:6;15623:35;;;;;;:::i;:::-;;;;;;;;15671:46;15691:6;15699:9;15710:6;15671:19;:46::i;:::-;15113:612;14992:733;;;:::o;48723:1756::-;48762:23;48788:24;48806:4;48788:9;:24::i;:::-;48762:50;;48823:25;48919:12;;48885:18;;48851;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;48823:108;;48942:12;48990:1;48971:15;:20;:46;;;;49016:1;48995:17;:22;48971:46;48967:85;;;49034:7;;;;;48967:85;49107:2;49086:18;;:23;;;;:::i;:::-;49068:15;:41;49064:115;;;49165:2;49144:18;;:23;;;;:::i;:::-;49126:41;;49064:115;49240:23;49353:1;49320:17;49285:18;;49267:15;:36;;;;:::i;:::-;49266:71;;;;:::i;:::-;:88;;;;:::i;:::-;49240:114;;49365:26;49394:36;49414:15;49394;:19;;:36;;;;:::i;:::-;49365:65;;49443:25;49471:21;49443:49;;49505:36;49522:18;49505:16;:36::i;:::-;49554:18;49575:44;49601:17;49575:21;:25;;:44;;;;:::i;:::-;49554:65;;49632:23;49658:81;49711:17;49658:34;49673:18;;49658:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;49632:107;;49750:17;49770:51;49803:17;49770:28;49785:12;;49770:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;49750:71;;49834:23;49891:9;49873:15;49860:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;49834:66;;49934:1;49913:18;:22;;;;49967:1;49946:18;:22;;;;49994:1;49979:12;:16;;;;50030:9;;;;;;;;;;;50022:23;;50053:9;50022:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50008:59;;;;;50102:1;50084:15;:19;:42;;;;;50125:1;50107:15;:19;50084:42;50080:278;;;50143:46;50156:15;50173;50143:12;:46::i;:::-;50209:137;50242:18;50279:15;50313:18;;50209:137;;;;;;;;:::i;:::-;;;;;;;;50080:278;50392:15;;;;;;;;;;;50384:29;;50435:21;50384:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50370:101;;;;;48751:1728;;;;;;;;;;48723:1756;:::o;51050:788::-;51107:4;51141:15;51124:14;:32;;;;51211:28;51242:4;:14;;;51257:13;51242:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;51211:60;;51321:20;51344:77;51405:5;51344:42;51369:16;;51344:20;:24;;:42;;;;:::i;:::-;:46;;:77;;;;:::i;:::-;51321:100;;51541:1;51526:12;:16;51522:110;;;51559:61;51575:13;51598:6;51607:12;51559:15;:61::i;:::-;51522:110;51707:19;51744:13;51707:51;;51769:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51796:12;;;;;;;;;;51826:4;51819:11;;;;;51050:788;:::o;18753:125::-;;;;:::o;19482:124::-;;;;:::o;22869:98::-;22927:7;22958:1;22954;:5;;;;:::i;:::-;22947:12;;22869:98;;;;:::o;47601:589::-;47727:21;47765:1;47751:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47727:40;;47796:4;47778;47783:1;47778:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;47822:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47812:4;47817:1;47812:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;47857:62;47874:4;47889:15;47907:11;47857:8;:62::i;:::-;47958:15;:66;;;48039:11;48065:1;48109:4;48136;48156:15;47958:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47656:534;47601:589;:::o;48198:517::-;48346:62;48363:4;48378:15;48396:11;48346:8;:62::i;:::-;48451:15;:31;;;48490:9;48523:4;48543:11;48569:1;48612;33054:6;48681:15;48451:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;48198:517;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:619::-;767:6;775;783;832:2;820:9;811:7;807:23;803:32;800:119;;;838:79;;:::i;:::-;800:119;958:1;983:53;1028:7;1019:6;1008:9;1004:22;983:53;:::i;:::-;973:63;;929:117;1085:2;1111:53;1156:7;1147:6;1136:9;1132:22;1111:53;:::i;:::-;1101:63;;1056:118;1213:2;1239:53;1284:7;1275:6;1264:9;1260:22;1239:53;:::i;:::-;1229:63;;1184:118;690:619;;;;;:::o;1315:99::-;1367:6;1401:5;1395:12;1385:22;;1315:99;;;:::o;1420:169::-;1504:11;1538:6;1533:3;1526:19;1578:4;1573:3;1569:14;1554:29;;1420:169;;;;:::o;1595:307::-;1663:1;1673:113;1687:6;1684:1;1681:13;1673:113;;;1772:1;1767:3;1763:11;1757:18;1753:1;1748:3;1744:11;1737:39;1709:2;1706:1;1702:10;1697:15;;1673:113;;;1804:6;1801:1;1798:13;1795:101;;;1884:1;1875:6;1870:3;1866:16;1859:27;1795:101;1644:258;1595:307;;;:::o;1908:102::-;1949:6;2000:2;1996:7;1991:2;1984:5;1980:14;1976:28;1966:38;;1908:102;;;:::o;2016:364::-;2104:3;2132:39;2165:5;2132:39;:::i;:::-;2187:71;2251:6;2246:3;2187:71;:::i;:::-;2180:78;;2267:52;2312:6;2307:3;2300:4;2293:5;2289:16;2267:52;:::i;:::-;2344:29;2366:6;2344:29;:::i;:::-;2339:3;2335:39;2328:46;;2108:272;2016:364;;;;:::o;2386:313::-;2499:4;2537:2;2526:9;2522:18;2514:26;;2586:9;2580:4;2576:20;2572:1;2561:9;2557:17;2550:47;2614:78;2687:4;2678:6;2614:78;:::i;:::-;2606:86;;2386:313;;;;:::o;2705:126::-;2742:7;2782:42;2775:5;2771:54;2760:65;;2705:126;;;:::o;2837:96::-;2874:7;2903:24;2921:5;2903:24;:::i;:::-;2892:35;;2837:96;;;:::o;2939:122::-;3012:24;3030:5;3012:24;:::i;:::-;3005:5;3002:35;2992:63;;3051:1;3048;3041:12;2992:63;2939:122;:::o;3067:139::-;3113:5;3151:6;3138:20;3129:29;;3167:33;3194:5;3167:33;:::i;:::-;3067:139;;;;:::o;3212:474::-;3280:6;3288;3337:2;3325:9;3316:7;3312:23;3308:32;3305:119;;;3343:79;;:::i;:::-;3305:119;3463:1;3488:53;3533:7;3524:6;3513:9;3509:22;3488:53;:::i;:::-;3478:63;;3434:117;3590:2;3616:53;3661:7;3652:6;3641:9;3637:22;3616:53;:::i;:::-;3606:63;;3561:118;3212:474;;;;;:::o;3692:90::-;3726:7;3769:5;3762:13;3755:21;3744:32;;3692:90;;;:::o;3788:109::-;3869:21;3884:5;3869:21;:::i;:::-;3864:3;3857:34;3788:109;;:::o;3903:210::-;3990:4;4028:2;4017:9;4013:18;4005:26;;4041:65;4103:1;4092:9;4088:17;4079:6;4041:65;:::i;:::-;3903:210;;;;:::o;4119:329::-;4178:6;4227:2;4215:9;4206:7;4202:23;4198:32;4195:119;;;4233:79;;:::i;:::-;4195:119;4353:1;4378:53;4423:7;4414:6;4403:9;4399:22;4378:53;:::i;:::-;4368:63;;4324:117;4119:329;;;;:::o;4454:60::-;4482:3;4503:5;4496:12;;4454:60;;;:::o;4520:142::-;4570:9;4603:53;4621:34;4630:24;4648:5;4630:24;:::i;:::-;4621:34;:::i;:::-;4603:53;:::i;:::-;4590:66;;4520:142;;;:::o;4668:126::-;4718:9;4751:37;4782:5;4751:37;:::i;:::-;4738:50;;4668:126;;;:::o;4800:153::-;4877:9;4910:37;4941:5;4910:37;:::i;:::-;4897:50;;4800:153;;;:::o;4959:185::-;5073:64;5131:5;5073:64;:::i;:::-;5068:3;5061:77;4959:185;;:::o;5150:276::-;5270:4;5308:2;5297:9;5293:18;5285:26;;5321:98;5416:1;5405:9;5401:17;5392:6;5321:98;:::i;:::-;5150:276;;;;:::o;5432:118::-;5519:24;5537:5;5519:24;:::i;:::-;5514:3;5507:37;5432:118;;:::o;5556:222::-;5649:4;5687:2;5676:9;5672:18;5664:26;;5700:71;5768:1;5757:9;5753:17;5744:6;5700:71;:::i;:::-;5556:222;;;;:::o;5784:329::-;5843:6;5892:2;5880:9;5871:7;5867:23;5863:32;5860:119;;;5898:79;;:::i;:::-;5860:119;6018:1;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5989:117;5784:329;;;;:::o;6119:619::-;6196:6;6204;6212;6261:2;6249:9;6240:7;6236:23;6232:32;6229:119;;;6267:79;;:::i;:::-;6229:119;6387:1;6412:53;6457:7;6448:6;6437:9;6433:22;6412:53;:::i;:::-;6402:63;;6358:117;6514:2;6540:53;6585:7;6576:6;6565:9;6561:22;6540:53;:::i;:::-;6530:63;;6485:118;6642:2;6668:53;6713:7;6704:6;6693:9;6689:22;6668:53;:::i;:::-;6658:63;;6613:118;6119:619;;;;;:::o;6744:118::-;6831:24;6849:5;6831:24;:::i;:::-;6826:3;6819:37;6744:118;;:::o;6868:222::-;6961:4;6999:2;6988:9;6984:18;6976:26;;7012:71;7080:1;7069:9;7065:17;7056:6;7012:71;:::i;:::-;6868:222;;;;:::o;7096:86::-;7131:7;7171:4;7164:5;7160:16;7149:27;;7096:86;;;:::o;7188:112::-;7271:22;7287:5;7271:22;:::i;:::-;7266:3;7259:35;7188:112;;:::o;7306:214::-;7395:4;7433:2;7422:9;7418:18;7410:26;;7446:67;7510:1;7499:9;7495:17;7486:6;7446:67;:::i;:::-;7306:214;;;;:::o;7526:116::-;7596:21;7611:5;7596:21;:::i;:::-;7589:5;7586:32;7576:60;;7632:1;7629;7622:12;7576:60;7526:116;:::o;7648:133::-;7691:5;7729:6;7716:20;7707:29;;7745:30;7769:5;7745:30;:::i;:::-;7648:133;;;;:::o;7787:613::-;7861:6;7869;7877;7926:2;7914:9;7905:7;7901:23;7897:32;7894:119;;;7932:79;;:::i;:::-;7894:119;8052:1;8077:53;8122:7;8113:6;8102:9;8098:22;8077:53;:::i;:::-;8067:63;;8023:117;8179:2;8205:53;8250:7;8241:6;8230:9;8226:22;8205:53;:::i;:::-;8195:63;;8150:118;8307:2;8333:50;8375:7;8366:6;8355:9;8351:22;8333:50;:::i;:::-;8323:60;;8278:115;7787:613;;;;;:::o;8406:468::-;8471:6;8479;8528:2;8516:9;8507:7;8503:23;8499:32;8496:119;;;8534:79;;:::i;:::-;8496:119;8654:1;8679:53;8724:7;8715:6;8704:9;8700:22;8679:53;:::i;:::-;8669:63;;8625:117;8781:2;8807:50;8849:7;8840:6;8829:9;8825:22;8807:50;:::i;:::-;8797:60;;8752:115;8406:468;;;;;:::o;8880:323::-;8936:6;8985:2;8973:9;8964:7;8960:23;8956:32;8953:119;;;8991:79;;:::i;:::-;8953:119;9111:1;9136:50;9178:7;9169:6;9158:9;9154:22;9136:50;:::i;:::-;9126:60;;9082:114;8880:323;;;;:::o;9209:474::-;9277:6;9285;9334:2;9322:9;9313:7;9309:23;9305:32;9302:119;;;9340:79;;:::i;:::-;9302:119;9460:1;9485:53;9530:7;9521:6;9510:9;9506:22;9485:53;:::i;:::-;9475:63;;9431:117;9587:2;9613:53;9658:7;9649:6;9638:9;9634:22;9613:53;:::i;:::-;9603:63;;9558:118;9209:474;;;;;:::o;9689:182::-;9829:34;9825:1;9817:6;9813:14;9806:58;9689:182;:::o;9877:366::-;10019:3;10040:67;10104:2;10099:3;10040:67;:::i;:::-;10033:74;;10116:93;10205:3;10116:93;:::i;:::-;10234:2;10229:3;10225:12;10218:19;;9877:366;;;:::o;10249:419::-;10415:4;10453:2;10442:9;10438:18;10430:26;;10502:9;10496:4;10492:20;10488:1;10477:9;10473:17;10466:47;10530:131;10656:4;10530:131;:::i;:::-;10522:139;;10249:419;;;:::o;10674:180::-;10722:77;10719:1;10712:88;10819:4;10816:1;10809:15;10843:4;10840:1;10833:15;10860:305;10900:3;10919:20;10937:1;10919:20;:::i;:::-;10914:25;;10953:20;10971:1;10953:20;:::i;:::-;10948:25;;11107:1;11039:66;11035:74;11032:1;11029:81;11026:107;;;11113:18;;:::i;:::-;11026:107;11157:1;11154;11150:9;11143:16;;10860:305;;;;:::o;11171:179::-;11311:31;11307:1;11299:6;11295:14;11288:55;11171:179;:::o;11356:366::-;11498:3;11519:67;11583:2;11578:3;11519:67;:::i;:::-;11512:74;;11595:93;11684:3;11595:93;:::i;:::-;11713:2;11708:3;11704:12;11697:19;;11356:366;;;:::o;11728:419::-;11894:4;11932:2;11921:9;11917:18;11909:26;;11981:9;11975:4;11971:20;11967:1;11956:9;11952:17;11945:47;12009:131;12135:4;12009:131;:::i;:::-;12001:139;;11728:419;;;:::o;12153:180::-;12201:77;12198:1;12191:88;12298:4;12295:1;12288:15;12322:4;12319:1;12312:15;12339:320;12383:6;12420:1;12414:4;12410:12;12400:22;;12467:1;12461:4;12457:12;12488:18;12478:81;;12544:4;12536:6;12532:17;12522:27;;12478:81;12606:2;12598:6;12595:14;12575:18;12572:38;12569:84;;;12625:18;;:::i;:::-;12569:84;12390:269;12339:320;;;:::o;12665:348::-;12705:7;12728:20;12746:1;12728:20;:::i;:::-;12723:25;;12762:20;12780:1;12762:20;:::i;:::-;12757:25;;12950:1;12882:66;12878:74;12875:1;12872:81;12867:1;12860:9;12853:17;12849:105;12846:131;;;12957:18;;:::i;:::-;12846:131;13005:1;13002;12998:9;12987:20;;12665:348;;;;:::o;13019:180::-;13067:77;13064:1;13057:88;13164:4;13161:1;13154:15;13188:4;13185:1;13178:15;13205:185;13245:1;13262:20;13280:1;13262:20;:::i;:::-;13257:25;;13296:20;13314:1;13296:20;:::i;:::-;13291:25;;13335:1;13325:35;;13340:18;;:::i;:::-;13325:35;13382:1;13379;13375:9;13370:14;;13205:185;;;;:::o;13396:234::-;13536:34;13532:1;13524:6;13520:14;13513:58;13605:17;13600:2;13592:6;13588:15;13581:42;13396:234;:::o;13636:366::-;13778:3;13799:67;13863:2;13858:3;13799:67;:::i;:::-;13792:74;;13875:93;13964:3;13875:93;:::i;:::-;13993:2;13988:3;13984:12;13977:19;;13636:366;;;:::o;14008:419::-;14174:4;14212:2;14201:9;14197:18;14189:26;;14261:9;14255:4;14251:20;14247:1;14236:9;14232:17;14225:47;14289:131;14415:4;14289:131;:::i;:::-;14281:139;;14008:419;;;:::o;14433:227::-;14573:34;14569:1;14561:6;14557:14;14550:58;14642:10;14637:2;14629:6;14625:15;14618:35;14433:227;:::o;14666:366::-;14808:3;14829:67;14893:2;14888:3;14829:67;:::i;:::-;14822:74;;14905:93;14994:3;14905:93;:::i;:::-;15023:2;15018:3;15014:12;15007:19;;14666:366;;;:::o;15038:419::-;15204:4;15242:2;15231:9;15227:18;15219:26;;15291:9;15285:4;15281:20;15277:1;15266:9;15262:17;15255:47;15319:131;15445:4;15319:131;:::i;:::-;15311:139;;15038:419;;;:::o;15463:238::-;15603:34;15599:1;15591:6;15587:14;15580:58;15672:21;15667:2;15659:6;15655:15;15648:46;15463:238;:::o;15707:366::-;15849:3;15870:67;15934:2;15929:3;15870:67;:::i;:::-;15863:74;;15946:93;16035:3;15946:93;:::i;:::-;16064:2;16059:3;16055:12;16048:19;;15707:366;;;:::o;16079:419::-;16245:4;16283:2;16272:9;16268:18;16260:26;;16332:9;16326:4;16322:20;16318:1;16307:9;16303:17;16296:47;16360:131;16486:4;16360:131;:::i;:::-;16352:139;;16079:419;;;:::o;16504:235::-;16644:34;16640:1;16632:6;16628:14;16621:58;16713:18;16708:2;16700:6;16696:15;16689:43;16504:235;:::o;16745:366::-;16887:3;16908:67;16972:2;16967:3;16908:67;:::i;:::-;16901:74;;16984:93;17073:3;16984:93;:::i;:::-;17102:2;17097:3;17093:12;17086:19;;16745:366;;;:::o;17117:419::-;17283:4;17321:2;17310:9;17306:18;17298:26;;17370:9;17364:4;17360:20;17356:1;17345:9;17341:17;17334:47;17398:131;17524:4;17398:131;:::i;:::-;17390:139;;17117:419;;;:::o;17542:244::-;17682:34;17678:1;17670:6;17666:14;17659:58;17751:27;17746:2;17738:6;17734:15;17727:52;17542:244;:::o;17792:366::-;17934:3;17955:67;18019:2;18014:3;17955:67;:::i;:::-;17948:74;;18031:93;18120:3;18031:93;:::i;:::-;18149:2;18144:3;18140:12;18133:19;;17792:366;;;:::o;18164:419::-;18330:4;18368:2;18357:9;18353:18;18345:26;;18417:9;18411:4;18407:20;18403:1;18392:9;18388:17;18381:47;18445:131;18571:4;18445:131;:::i;:::-;18437:139;;18164:419;;;:::o;18589:224::-;18729:34;18725:1;18717:6;18713:14;18706:58;18798:7;18793:2;18785:6;18781:15;18774:32;18589:224;:::o;18819:366::-;18961:3;18982:67;19046:2;19041:3;18982:67;:::i;:::-;18975:74;;19058:93;19147:3;19058:93;:::i;:::-;19176:2;19171:3;19167:12;19160:19;;18819:366;;;:::o;19191:419::-;19357:4;19395:2;19384:9;19380:18;19372:26;;19444:9;19438:4;19434:20;19430:1;19419:9;19415:17;19408:47;19472:131;19598:4;19472:131;:::i;:::-;19464:139;;19191:419;;;:::o;19616:85::-;19661:7;19690:5;19679:16;;19616:85;;;:::o;19707:158::-;19765:9;19798:61;19816:42;19825:32;19851:5;19825:32;:::i;:::-;19816:42;:::i;:::-;19798:61;:::i;:::-;19785:74;;19707:158;;;:::o;19871:147::-;19966:45;20005:5;19966:45;:::i;:::-;19961:3;19954:58;19871:147;;:::o;20024:807::-;20273:4;20311:3;20300:9;20296:19;20288:27;;20325:71;20393:1;20382:9;20378:17;20369:6;20325:71;:::i;:::-;20406:72;20474:2;20463:9;20459:18;20450:6;20406:72;:::i;:::-;20488:80;20564:2;20553:9;20549:18;20540:6;20488:80;:::i;:::-;20578;20654:2;20643:9;20639:18;20630:6;20578:80;:::i;:::-;20668:73;20736:3;20725:9;20721:19;20712:6;20668:73;:::i;:::-;20751;20819:3;20808:9;20804:19;20795:6;20751:73;:::i;:::-;20024:807;;;;;;;;;:::o;20837:143::-;20894:5;20925:6;20919:13;20910:22;;20941:33;20968:5;20941:33;:::i;:::-;20837:143;;;;:::o;20986:663::-;21074:6;21082;21090;21139:2;21127:9;21118:7;21114:23;21110:32;21107:119;;;21145:79;;:::i;:::-;21107:119;21265:1;21290:64;21346:7;21337:6;21326:9;21322:22;21290:64;:::i;:::-;21280:74;;21236:128;21403:2;21429:64;21485:7;21476:6;21465:9;21461:22;21429:64;:::i;:::-;21419:74;;21374:129;21542:2;21568:64;21624:7;21615:6;21604:9;21600:22;21568:64;:::i;:::-;21558:74;;21513:129;20986:663;;;;;:::o;21655:223::-;21795:34;21791:1;21783:6;21779:14;21772:58;21864:6;21859:2;21851:6;21847:15;21840:31;21655:223;:::o;21884:366::-;22026:3;22047:67;22111:2;22106:3;22047:67;:::i;:::-;22040:74;;22123:93;22212:3;22123:93;:::i;:::-;22241:2;22236:3;22232:12;22225:19;;21884:366;;;:::o;22256:419::-;22422:4;22460:2;22449:9;22445:18;22437:26;;22509:9;22503:4;22499:20;22495:1;22484:9;22480:17;22473:47;22537:131;22663:4;22537:131;:::i;:::-;22529:139;;22256:419;;;:::o;22681:240::-;22821:34;22817:1;22809:6;22805:14;22798:58;22890:23;22885:2;22877:6;22873:15;22866:48;22681:240;:::o;22927:366::-;23069:3;23090:67;23154:2;23149:3;23090:67;:::i;:::-;23083:74;;23166:93;23255:3;23166:93;:::i;:::-;23284:2;23279:3;23275:12;23268:19;;22927:366;;;:::o;23299:419::-;23465:4;23503:2;23492:9;23488:18;23480:26;;23552:9;23546:4;23542:20;23538:1;23527:9;23523:17;23516:47;23580:131;23706:4;23580:131;:::i;:::-;23572:139;;23299:419;;;:::o;23724:239::-;23864:34;23860:1;23852:6;23848:14;23841:58;23933:22;23928:2;23920:6;23916:15;23909:47;23724:239;:::o;23969:366::-;24111:3;24132:67;24196:2;24191:3;24132:67;:::i;:::-;24125:74;;24208:93;24297:3;24208:93;:::i;:::-;24326:2;24321:3;24317:12;24310:19;;23969:366;;;:::o;24341:419::-;24507:4;24545:2;24534:9;24530:18;24522:26;;24594:9;24588:4;24584:20;24580:1;24569:9;24565:17;24558:47;24622:131;24748:4;24622:131;:::i;:::-;24614:139;;24341:419;;;:::o;24766:225::-;24906:34;24902:1;24894:6;24890:14;24883:58;24975:8;24970:2;24962:6;24958:15;24951:33;24766:225;:::o;24997:366::-;25139:3;25160:67;25224:2;25219:3;25160:67;:::i;:::-;25153:74;;25236:93;25325:3;25236:93;:::i;:::-;25354:2;25349:3;25345:12;25338:19;;24997:366;;;:::o;25369:419::-;25535:4;25573:2;25562:9;25558:18;25550:26;;25622:9;25616:4;25612:20;25608:1;25597:9;25593:17;25586:47;25650:131;25776:4;25650:131;:::i;:::-;25642:139;;25369:419;;;:::o;25794:182::-;25934:34;25930:1;25922:6;25918:14;25911:58;25794:182;:::o;25982:366::-;26124:3;26145:67;26209:2;26204:3;26145:67;:::i;:::-;26138:74;;26221:93;26310:3;26221:93;:::i;:::-;26339:2;26334:3;26330:12;26323:19;;25982:366;;;:::o;26354:419::-;26520:4;26558:2;26547:9;26543:18;26535:26;;26607:9;26601:4;26597:20;26593:1;26582:9;26578:17;26571:47;26635:131;26761:4;26635:131;:::i;:::-;26627:139;;26354:419;;;:::o;26779:229::-;26919:34;26915:1;26907:6;26903:14;26896:58;26988:12;26983:2;26975:6;26971:15;26964:37;26779:229;:::o;27014:366::-;27156:3;27177:67;27241:2;27236:3;27177:67;:::i;:::-;27170:74;;27253:93;27342:3;27253:93;:::i;:::-;27371:2;27366:3;27362:12;27355:19;;27014:366;;;:::o;27386:419::-;27552:4;27590:2;27579:9;27575:18;27567:26;;27639:9;27633:4;27629:20;27625:1;27614:9;27610:17;27603:47;27667:131;27793:4;27667:131;:::i;:::-;27659:139;;27386:419;;;:::o;27811:351::-;27881:6;27930:2;27918:9;27909:7;27905:23;27901:32;27898:119;;;27936:79;;:::i;:::-;27898:119;28056:1;28081:64;28137:7;28128:6;28117:9;28113:22;28081:64;:::i;:::-;28071:74;;28027:128;27811:351;;;;:::o;28168:223::-;28308:34;28304:1;28296:6;28292:14;28285:58;28377:6;28372:2;28364:6;28360:15;28353:31;28168:223;:::o;28397:366::-;28539:3;28560:67;28624:2;28619:3;28560:67;:::i;:::-;28553:74;;28636:93;28725:3;28636:93;:::i;:::-;28754:2;28749:3;28745:12;28738:19;;28397:366;;;:::o;28769:419::-;28935:4;28973:2;28962:9;28958:18;28950:26;;29022:9;29016:4;29012:20;29008:1;28997:9;28993:17;28986:47;29050:131;29176:4;29050:131;:::i;:::-;29042:139;;28769:419;;;:::o;29194:221::-;29334:34;29330:1;29322:6;29318:14;29311:58;29403:4;29398:2;29390:6;29386:15;29379:29;29194:221;:::o;29421:366::-;29563:3;29584:67;29648:2;29643:3;29584:67;:::i;:::-;29577:74;;29660:93;29749:3;29660:93;:::i;:::-;29778:2;29773:3;29769:12;29762:19;;29421:366;;;:::o;29793:419::-;29959:4;29997:2;29986:9;29982:18;29974:26;;30046:9;30040:4;30036:20;30032:1;30021:9;30017:17;30010:47;30074:131;30200:4;30074:131;:::i;:::-;30066:139;;29793:419;;;:::o;30218:224::-;30358:34;30354:1;30346:6;30342:14;30335:58;30427:7;30422:2;30414:6;30410:15;30403:32;30218:224;:::o;30448:366::-;30590:3;30611:67;30675:2;30670:3;30611:67;:::i;:::-;30604:74;;30687:93;30776:3;30687:93;:::i;:::-;30805:2;30800:3;30796:12;30789:19;;30448:366;;;:::o;30820:419::-;30986:4;31024:2;31013:9;31009:18;31001:26;;31073:9;31067:4;31063:20;31059:1;31048:9;31044:17;31037:47;31101:131;31227:4;31101:131;:::i;:::-;31093:139;;30820:419;;;:::o;31245:222::-;31385:34;31381:1;31373:6;31369:14;31362:58;31454:5;31449:2;31441:6;31437:15;31430:30;31245:222;:::o;31473:366::-;31615:3;31636:67;31700:2;31695:3;31636:67;:::i;:::-;31629:74;;31712:93;31801:3;31712:93;:::i;:::-;31830:2;31825:3;31821:12;31814:19;;31473:366;;;:::o;31845:419::-;32011:4;32049:2;32038:9;32034:18;32026:26;;32098:9;32092:4;32088:20;32084:1;32073:9;32069:17;32062:47;32126:131;32252:4;32126:131;:::i;:::-;32118:139;;31845:419;;;:::o;32270:172::-;32410:24;32406:1;32398:6;32394:14;32387:48;32270:172;:::o;32448:366::-;32590:3;32611:67;32675:2;32670:3;32611:67;:::i;:::-;32604:74;;32687:93;32776:3;32687:93;:::i;:::-;32805:2;32800:3;32796:12;32789:19;;32448:366;;;:::o;32820:419::-;32986:4;33024:2;33013:9;33009:18;33001:26;;33073:9;33067:4;33063:20;33059:1;33048:9;33044:17;33037:47;33101:131;33227:4;33101:131;:::i;:::-;33093:139;;32820:419;;;:::o;33245:297::-;33385:34;33381:1;33373:6;33369:14;33362:58;33454:34;33449:2;33441:6;33437:15;33430:59;33523:11;33518:2;33510:6;33506:15;33499:36;33245:297;:::o;33548:366::-;33690:3;33711:67;33775:2;33770:3;33711:67;:::i;:::-;33704:74;;33787:93;33876:3;33787:93;:::i;:::-;33905:2;33900:3;33896:12;33889:19;;33548:366;;;:::o;33920:419::-;34086:4;34124:2;34113:9;34109:18;34101:26;;34173:9;34167:4;34163:20;34159:1;34148:9;34144:17;34137:47;34201:131;34327:4;34201:131;:::i;:::-;34193:139;;33920:419;;;:::o;34345:240::-;34485:34;34481:1;34473:6;34469:14;34462:58;34554:23;34549:2;34541:6;34537:15;34530:48;34345:240;:::o;34591:366::-;34733:3;34754:67;34818:2;34813:3;34754:67;:::i;:::-;34747:74;;34830:93;34919:3;34830:93;:::i;:::-;34948:2;34943:3;34939:12;34932:19;;34591:366;;;:::o;34963:419::-;35129:4;35167:2;35156:9;35152:18;35144:26;;35216:9;35210:4;35206:20;35202:1;35191:9;35187:17;35180:47;35244:131;35370:4;35244:131;:::i;:::-;35236:139;;34963:419;;;:::o;35388:169::-;35528:21;35524:1;35516:6;35512:14;35505:45;35388:169;:::o;35563:366::-;35705:3;35726:67;35790:2;35785:3;35726:67;:::i;:::-;35719:74;;35802:93;35891:3;35802:93;:::i;:::-;35920:2;35915:3;35911:12;35904:19;;35563:366;;;:::o;35935:419::-;36101:4;36139:2;36128:9;36124:18;36116:26;;36188:9;36182:4;36178:20;36174:1;36163:9;36159:17;36152:47;36216:131;36342:4;36216:131;:::i;:::-;36208:139;;35935:419;;;:::o;36360:241::-;36500:34;36496:1;36488:6;36484:14;36477:58;36569:24;36564:2;36556:6;36552:15;36545:49;36360:241;:::o;36607:366::-;36749:3;36770:67;36834:2;36829:3;36770:67;:::i;:::-;36763:74;;36846:93;36935:3;36846:93;:::i;:::-;36964:2;36959:3;36955:12;36948:19;;36607:366;;;:::o;36979:419::-;37145:4;37183:2;37172:9;37168:18;37160:26;;37232:9;37226:4;37222:20;37218:1;37207:9;37203:17;37196:47;37260:131;37386:4;37260:131;:::i;:::-;37252:139;;36979:419;;;:::o;37404:191::-;37444:4;37464:20;37482:1;37464:20;:::i;:::-;37459:25;;37498:20;37516:1;37498:20;:::i;:::-;37493:25;;37537:1;37534;37531:8;37528:34;;;37542:18;;:::i;:::-;37528:34;37587:1;37584;37580:9;37572:17;;37404:191;;;;:::o;37601:225::-;37741:34;37737:1;37729:6;37725:14;37718:58;37810:8;37805:2;37797:6;37793:15;37786:33;37601:225;:::o;37832:366::-;37974:3;37995:67;38059:2;38054:3;37995:67;:::i;:::-;37988:74;;38071:93;38160:3;38071:93;:::i;:::-;38189:2;38184:3;38180:12;38173:19;;37832:366;;;:::o;38204:419::-;38370:4;38408:2;38397:9;38393:18;38385:26;;38457:9;38451:4;38447:20;38443:1;38432:9;38428:17;38421:47;38485:131;38611:4;38485:131;:::i;:::-;38477:139;;38204:419;;;:::o;38629:147::-;38730:11;38767:3;38752:18;;38629:147;;;;:::o;38782:114::-;;:::o;38902:398::-;39061:3;39082:83;39163:1;39158:3;39082:83;:::i;:::-;39075:90;;39174:93;39263:3;39174:93;:::i;:::-;39292:1;39287:3;39283:11;39276:18;;38902:398;;;:::o;39306:379::-;39490:3;39512:147;39655:3;39512:147;:::i;:::-;39505:154;;39676:3;39669:10;;39306:379;;;:::o;39691:442::-;39840:4;39878:2;39867:9;39863:18;39855:26;;39891:71;39959:1;39948:9;39944:17;39935:6;39891:71;:::i;:::-;39972:72;40040:2;40029:9;40025:18;40016:6;39972:72;:::i;:::-;40054;40122:2;40111:9;40107:18;40098:6;40054:72;:::i;:::-;39691:442;;;;;;:::o;40139:180::-;40187:77;40184:1;40177:88;40284:4;40281:1;40274:15;40308:4;40305:1;40298:15;40325:180;40373:77;40370:1;40363:88;40470:4;40467:1;40460:15;40494:4;40491:1;40484:15;40511:143;40568:5;40599:6;40593:13;40584:22;;40615:33;40642:5;40615:33;:::i;:::-;40511:143;;;;:::o;40660:351::-;40730:6;40779:2;40767:9;40758:7;40754:23;40750:32;40747:119;;;40785:79;;:::i;:::-;40747:119;40905:1;40930:64;40986:7;40977:6;40966:9;40962:22;40930:64;:::i;:::-;40920:74;;40876:128;40660:351;;;;:::o;41017:114::-;41084:6;41118:5;41112:12;41102:22;;41017:114;;;:::o;41137:184::-;41236:11;41270:6;41265:3;41258:19;41310:4;41305:3;41301:14;41286:29;;41137:184;;;;:::o;41327:132::-;41394:4;41417:3;41409:11;;41447:4;41442:3;41438:14;41430:22;;41327:132;;;:::o;41465:108::-;41542:24;41560:5;41542:24;:::i;:::-;41537:3;41530:37;41465:108;;:::o;41579:179::-;41648:10;41669:46;41711:3;41703:6;41669:46;:::i;:::-;41747:4;41742:3;41738:14;41724:28;;41579:179;;;;:::o;41764:113::-;41834:4;41866;41861:3;41857:14;41849:22;;41764:113;;;:::o;41913:732::-;42032:3;42061:54;42109:5;42061:54;:::i;:::-;42131:86;42210:6;42205:3;42131:86;:::i;:::-;42124:93;;42241:56;42291:5;42241:56;:::i;:::-;42320:7;42351:1;42336:284;42361:6;42358:1;42355:13;42336:284;;;42437:6;42431:13;42464:63;42523:3;42508:13;42464:63;:::i;:::-;42457:70;;42550:60;42603:6;42550:60;:::i;:::-;42540:70;;42396:224;42383:1;42380;42376:9;42371:14;;42336:284;;;42340:14;42636:3;42629:10;;42037:608;;;41913:732;;;;:::o;42651:831::-;42914:4;42952:3;42941:9;42937:19;42929:27;;42966:71;43034:1;43023:9;43019:17;43010:6;42966:71;:::i;:::-;43047:80;43123:2;43112:9;43108:18;43099:6;43047:80;:::i;:::-;43174:9;43168:4;43164:20;43159:2;43148:9;43144:18;43137:48;43202:108;43305:4;43296:6;43202:108;:::i;:::-;43194:116;;43320:72;43388:2;43377:9;43373:18;43364:6;43320:72;:::i;:::-;43402:73;43470:3;43459:9;43455:19;43446:6;43402:73;:::i;:::-;42651:831;;;;;;;;:::o

Swarm Source

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