ETH Price: $2,445.37 (+3.53%)

Token

PepeGod (PepeGod)
 

Overview

Max Total Supply

10,000,000,000 PepeGod

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
sa9azzo.eth
Balance
189,999,999.999999999999999999 PepeGod

Value
$0.00
0x09084a32a4286830cc2d859be325cfd1f7a5f223
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:
pepegod

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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



/**
 * @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 Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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);
    }
}




/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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

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

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

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

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



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



/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * 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}.
     *
     * 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 default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

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

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

    bool public limited;
    uint256 public maxHoldingAmount;
    uint256 public minHoldingAmount;
    bool public enableWhitel;
    mapping(address => bool) public whitelists;
    address public uniswapV2Pair;


    constructor() ERC20("PepeGod", "PepeGod") {
        uint256 _totalSupplyss = 20000000000 * 10 ** 18;
        _mint(msg.sender, _totalSupplyss);

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        limited = true;
        maxHoldingAmount = _totalSupplyss.mul(1).div(100);
        minHoldingAmount = 0;

        enableWhitel = true;
        whitelists[msg.sender] = true;
        whitelists[address(this)] = true;
        whitelists[address(_router)] = true;
        whitelists[uniswapV2Pair] = true;
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) override internal virtual {
        if (to == owner() || from == owner()) { return; }

        if(enableWhitel) {
            require(whitelists[from]==true && whitelists[to]==true, "whitelist");
        }

        if(limited && from == uniswapV2Pair) {
            require(balanceOf(to) + amount <= maxHoldingAmount && balanceOf(to) + amount >= minHoldingAmount, "Forbid");
        }
    }

    function Burn(uint256 amount) public {
        _burn(msg.sender, amount);
    }

    function settwhite(address accounts, bool _iswhitelisting) external onlyOwner {
        whitelists[accounts] = _iswhitelisting;
    }

    function settwhitelist(address[] memory accounts, bool _iswhitelisting) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            whitelists[accounts[i]] = _iswhitelisting;
        }
    }

    function setEnableWhitel(bool isEnableWhitel)  external onlyOwner {
        enableWhitel = isEnableWhitel;
    }


    function multiTransfer(address[] calldata addresses, uint256[] calldata amounts) external {
        require(addresses.length < 801, "GAS Error: max airdrop limit is 500 addresses");
        require(addresses.length == amounts.length, "Mismatch between Address and token count");

        uint256 sum = 0;
        for (uint256 i = 0; i < addresses.length; i++) {
            sum = sum + amounts[i];
        }

        require(balanceOf(msg.sender) >= sum, "Not enough amount in wallet");
        for (uint256 i = 0; i < addresses.length; i++) {
            _transfer(msg.sender, addresses[i], amounts[i]);
        }
    }

    function multiTransfer_fixed(address[] calldata addresses, uint256 amount) external {
        require(addresses.length < 2001, "GAS Error: max airdrop limit is 2000 addresses");

        uint256 sum = amount.mul(addresses.length);
        require(balanceOf(msg.sender) >= sum, "Not enough amount in wallet");

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

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":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableWhitel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isEnableWhitel","type":"bool"}],"name":"setEnableWhitel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"accounts","type":"address"},{"internalType":"bool","name":"_iswhitelisting","type":"bool"}],"name":"settwhite","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"_iswhitelisting","type":"bool"}],"name":"settwhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":[{"internalType":"address","name":"","type":"address"}],"name":"whitelists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600781526020017f50657065476f64000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f50657065476f64000000000000000000000000000000000000000000000000008152506200009e62000092620004a860201b60201c565b620004b060201b60201c565b8160049081620000af919062000c9e565b508060059081620000c1919062000c9e565b50505060006b409f9cbc7c4a04c2200000009050620000e733826200057460201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200014c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000172919062000def565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000200919062000def565b6040518363ffffffff1660e01b81526004016200021f92919062000e32565b6020604051808303816000875af11580156200023f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000265919062000def565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660006101000a81548160ff021916908315150217905550620002f56064620002e1600185620006e260201b62000d3f1790919060201c565b620006fa60201b62000d551790919060201c565b60078190555060006008819055506001600960006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062001110565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005dd9062000ec0565b60405180910390fd5b620005fa600083836200071260201b60201c565b80600360008282546200060e919062000f11565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006c2919062000f5d565b60405180910390a3620006de60008383620009ad60201b60201c565b5050565b60008183620006f2919062000f7a565b905092915050565b600081836200070a919062000ff4565b905092915050565b62000722620009b260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148062000796575062000767620009b260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b620009a857600960009054906101000a900460ff1615620008a55760011515600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801562000862575060011515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b620008a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089b906200107c565b60405180910390fd5b5b600660009054906101000a900460ff1680156200090f5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15620009a757600754816200092a84620009db60201b60201c565b62000936919062000f11565b11158015620009645750600854816200095584620009db60201b60201c565b62000961919062000f11565b10155b620009a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200099d90620010ee565b60405180910390fd5b5b5b505050565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000aa657607f821691505b60208210810362000abc5762000abb62000a5e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ae7565b62000b32868362000ae7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7f62000b7962000b738462000b4a565b62000b54565b62000b4a565b9050919050565b6000819050919050565b62000b9b8362000b5e565b62000bb362000baa8262000b86565b84845462000af4565b825550505050565b600090565b62000bca62000bbb565b62000bd781848462000b90565b505050565b5b8181101562000bff5762000bf360008262000bc0565b60018101905062000bdd565b5050565b601f82111562000c4e5762000c188162000ac2565b62000c238462000ad7565b8101602085101562000c33578190505b62000c4b62000c428562000ad7565b83018262000bdc565b50505b505050565b600082821c905092915050565b600062000c736000198460080262000c53565b1980831691505092915050565b600062000c8e838362000c60565b9150826002028217905092915050565b62000ca98262000a24565b67ffffffffffffffff81111562000cc55762000cc462000a2f565b5b62000cd1825462000a8d565b62000cde82828562000c03565b600060209050601f83116001811462000d16576000841562000d01578287015190505b62000d0d858262000c80565b86555062000d7d565b601f19841662000d268662000ac2565b60005b8281101562000d505784890151825560018201915060208501945060208101905062000d29565b8683101562000d70578489015162000d6c601f89168262000c60565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000db78262000d8a565b9050919050565b62000dc98162000daa565b811462000dd557600080fd5b50565b60008151905062000de98162000dbe565b92915050565b60006020828403121562000e085762000e0762000d85565b5b600062000e188482850162000dd8565b91505092915050565b62000e2c8162000daa565b82525050565b600060408201905062000e49600083018562000e21565b62000e58602083018462000e21565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ea8601f8362000e5f565b915062000eb58262000e70565b602082019050919050565b6000602082019050818103600083015262000edb8162000e99565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f1e8262000b4a565b915062000f2b8362000b4a565b925082820190508082111562000f465762000f4562000ee2565b5b92915050565b62000f578162000b4a565b82525050565b600060208201905062000f74600083018462000f4c565b92915050565b600062000f878262000b4a565b915062000f948362000b4a565b925082820262000fa48162000b4a565b9150828204841483151762000fbe5762000fbd62000ee2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010018262000b4a565b91506200100e8362000b4a565b92508262001021576200102062000fc5565b5b828204905092915050565b7f77686974656c6973740000000000000000000000000000000000000000000000600082015250565b60006200106460098362000e5f565b915062001071826200102c565b602082019050919050565b60006020820190508181036000830152620010978162001055565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000620010d660068362000e5f565b9150620010e3826200109e565b602082019050919050565b600060208201905081810360008301526200110981620010c7565b9050919050565b6129de80620011206000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de578063a457c2d711610097578063b90306ad11610071578063b90306ad14610489578063d59093f6146104a5578063dd62ed3e146104c1578063f2fde38b146104f15761018e565b8063a457c2d71461040d578063a9059cbb1461043d578063abdd77dd1461046d5761018e565b8063715018a61461036d578063860a32ec1461037757806389f9a1d3146103955780638da5cb5b146103b357806395c45729146103d157806395d89b41146103ef5761018e565b80631e89d5451161014b578063395093511161012557806339509351146102d357806349bd5a5e14610303578063632e54421461032157806370a082311461033d5761018e565b80631e89d5451461026957806323b872dd14610285578063313ce567146102b55761018e565b806306fdde0314610193578063081fee1e146101b1578063095ea7b3146101cd57806318160ddd146101fd5780631ab99e121461021b5780631e7be21014610239575b600080fd5b61019b61050d565b6040516101a89190611851565b60405180910390f35b6101cb60048036038101906101c6919061191d565b61059f565b005b6101e760048036038101906101e29190611993565b610602565b6040516101f491906119e2565b60405180910390f35b610205610625565b6040516102129190611a0c565b60405180910390f35b61022361062f565b6040516102309190611a0c565b60405180910390f35b610253600480360381019061024e9190611a27565b610635565b60405161026091906119e2565b60405180910390f35b610283600480360381019061027e9190611b0f565b610655565b005b61029f600480360381019061029a9190611b90565b6107ed565b6040516102ac91906119e2565b60405180910390f35b6102bd61081c565b6040516102ca9190611bff565b60405180910390f35b6102ed60048036038101906102e89190611993565b610825565b6040516102fa91906119e2565b60405180910390f35b61030b61085c565b6040516103189190611c29565b60405180910390f35b61033b60048036038101906103369190611c44565b610882565b005b61035760048036038101906103529190611a27565b610988565b6040516103649190611a0c565b60405180910390f35b6103756109d1565b005b61037f6109e5565b60405161038c91906119e2565b60405180910390f35b61039d6109f8565b6040516103aa9190611a0c565b60405180910390f35b6103bb6109fe565b6040516103c89190611c29565b60405180910390f35b6103d9610a27565b6040516103e691906119e2565b60405180910390f35b6103f7610a3a565b6040516104049190611851565b60405180910390f35b61042760048036038101906104229190611993565b610acc565b60405161043491906119e2565b60405180910390f35b61045760048036038101906104529190611993565b610b43565b60405161046491906119e2565b60405180910390f35b61048760048036038101906104829190611de2565b610b66565b005b6104a3600480360381019061049e9190611e3e565b610c03565b005b6104bf60048036038101906104ba9190611e6b565b610c10565b005b6104db60048036038101906104d69190611e98565b610c35565b6040516104e89190611a0c565b60405180910390f35b61050b60048036038101906105069190611a27565b610cbc565b005b60606004805461051c90611f07565b80601f016020809104026020016040519081016040528092919081815260200182805461054890611f07565b80156105955780601f1061056a57610100808354040283529160200191610595565b820191906000526020600020905b81548152906001019060200180831161057857829003601f168201915b5050505050905090565b6105a7610d6b565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008061060d610de9565b905061061a818585610df1565b600191505092915050565b6000600354905090565b60085481565b600a6020528060005260406000206000915054906101000a900460ff1681565b610321848490501061069c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069390611faa565b60405180910390fd5b8181905084849050146106e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106db9061203c565b60405180910390fd5b6000805b8585905081101561072d578383828181106107065761070561205c565b5b905060200201358261071891906120ba565b91508080610725906120ee565b9150506106e8565b508061073833610988565b1015610779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077090612182565b60405180910390fd5b60005b858590508110156107e5576107d23387878481811061079e5761079d61205c565b5b90506020020160208101906107b39190611a27565b8686858181106107c6576107c561205c565b5b90506020020135610fba565b80806107dd906120ee565b91505061077c565b505050505050565b6000806107f8610de9565b9050610805858285611233565b610810858585610fba565b60019150509392505050565b60006012905090565b600080610830610de9565b90506108518185856108428589610c35565b61084c91906120ba565b610df1565b600191505092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107d183839050106108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c090612214565b60405180910390fd5b60006108e18484905083610d3f90919063ffffffff16565b9050806108ed33610988565b101561092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092590612182565b60405180910390fd5b60005b848490508110156109815761096e338686848181106109535761095261205c565b5b90506020020160208101906109689190611a27565b85610fba565b8080610979906120ee565b915050610931565b5050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109d9610d6b565b6109e360006112bf565b565b600660009054906101000a900460ff1681565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900460ff1681565b606060058054610a4990611f07565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7590611f07565b8015610ac25780601f10610a9757610100808354040283529160200191610ac2565b820191906000526020600020905b815481529060010190602001808311610aa557829003601f168201915b5050505050905090565b600080610ad7610de9565b90506000610ae58286610c35565b905083811015610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b21906122a6565b60405180910390fd5b610b378286868403610df1565b60019250505092915050565b600080610b4e610de9565b9050610b5b818585610fba565b600191505092915050565b610b6e610d6b565b60005b8251811015610bfe5781600a6000858481518110610b9257610b9161205c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610bf6906120ee565b915050610b71565b505050565b610c0d3382611383565b50565b610c18610d6b565b80600960006101000a81548160ff02191690831515021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610cc4610d6b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2a90612338565b60405180910390fd5b610d3c816112bf565b50565b60008183610d4d9190612358565b905092915050565b60008183610d6391906123c9565b905092915050565b610d73610de9565b73ffffffffffffffffffffffffffffffffffffffff16610d916109fe565b73ffffffffffffffffffffffffffffffffffffffff1614610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde90612446565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e57906124d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec69061256a565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fad9190611a0c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611029576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611020906125fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108f9061268e565b60405180910390fd5b6110a3838383611552565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561112a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112190612720565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161121a9190611a0c565b60405180910390a361122d8484846117bc565b50505050565b600061123f8484610c35565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112b957818110156112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a29061278c565b60405180910390fd5b6112b88484848403610df1565b5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e99061281e565b60405180910390fd5b6113fe82600083611552565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c906128b0565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115399190611a0c565b60405180910390a361154d836000846117bc565b505050565b61155a6109fe565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806115c557506115966109fe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6117b757600960009054906101000a900460ff16156116ce5760011515600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561168e575060011515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b6116cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c49061291c565b60405180910390fd5b5b600660009054906101000a900460ff1680156117375750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156117b6576007548161174984610988565b61175391906120ba565b1115801561177657506008548161176984610988565b61177391906120ba565b10155b6117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac90612988565b60405180910390fd5b5b5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156117fb5780820151818401526020810190506117e0565b60008484015250505050565b6000601f19601f8301169050919050565b6000611823826117c1565b61182d81856117cc565b935061183d8185602086016117dd565b61184681611807565b840191505092915050565b6000602082019050818103600083015261186b8184611818565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118b282611887565b9050919050565b6118c2816118a7565b81146118cd57600080fd5b50565b6000813590506118df816118b9565b92915050565b60008115159050919050565b6118fa816118e5565b811461190557600080fd5b50565b600081359050611917816118f1565b92915050565b600080604083850312156119345761193361187d565b5b6000611942858286016118d0565b925050602061195385828601611908565b9150509250929050565b6000819050919050565b6119708161195d565b811461197b57600080fd5b50565b60008135905061198d81611967565b92915050565b600080604083850312156119aa576119a961187d565b5b60006119b8858286016118d0565b92505060206119c98582860161197e565b9150509250929050565b6119dc816118e5565b82525050565b60006020820190506119f760008301846119d3565b92915050565b611a068161195d565b82525050565b6000602082019050611a2160008301846119fd565b92915050565b600060208284031215611a3d57611a3c61187d565b5b6000611a4b848285016118d0565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611a7957611a78611a54565b5b8235905067ffffffffffffffff811115611a9657611a95611a59565b5b602083019150836020820283011115611ab257611ab1611a5e565b5b9250929050565b60008083601f840112611acf57611ace611a54565b5b8235905067ffffffffffffffff811115611aec57611aeb611a59565b5b602083019150836020820283011115611b0857611b07611a5e565b5b9250929050565b60008060008060408587031215611b2957611b2861187d565b5b600085013567ffffffffffffffff811115611b4757611b46611882565b5b611b5387828801611a63565b9450945050602085013567ffffffffffffffff811115611b7657611b75611882565b5b611b8287828801611ab9565b925092505092959194509250565b600080600060608486031215611ba957611ba861187d565b5b6000611bb7868287016118d0565b9350506020611bc8868287016118d0565b9250506040611bd98682870161197e565b9150509250925092565b600060ff82169050919050565b611bf981611be3565b82525050565b6000602082019050611c146000830184611bf0565b92915050565b611c23816118a7565b82525050565b6000602082019050611c3e6000830184611c1a565b92915050565b600080600060408486031215611c5d57611c5c61187d565b5b600084013567ffffffffffffffff811115611c7b57611c7a611882565b5b611c8786828701611a63565b93509350506020611c9a8682870161197e565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611cdc82611807565b810181811067ffffffffffffffff82111715611cfb57611cfa611ca4565b5b80604052505050565b6000611d0e611873565b9050611d1a8282611cd3565b919050565b600067ffffffffffffffff821115611d3a57611d39611ca4565b5b602082029050602081019050919050565b6000611d5e611d5984611d1f565b611d04565b90508083825260208201905060208402830185811115611d8157611d80611a5e565b5b835b81811015611daa5780611d9688826118d0565b845260208401935050602081019050611d83565b5050509392505050565b600082601f830112611dc957611dc8611a54565b5b8135611dd9848260208601611d4b565b91505092915050565b60008060408385031215611df957611df861187d565b5b600083013567ffffffffffffffff811115611e1757611e16611882565b5b611e2385828601611db4565b9250506020611e3485828601611908565b9150509250929050565b600060208284031215611e5457611e5361187d565b5b6000611e628482850161197e565b91505092915050565b600060208284031215611e8157611e8061187d565b5b6000611e8f84828501611908565b91505092915050565b60008060408385031215611eaf57611eae61187d565b5b6000611ebd858286016118d0565b9250506020611ece858286016118d0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f1f57607f821691505b602082108103611f3257611f31611ed8565b5b50919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b6000611f94602d836117cc565b9150611f9f82611f38565b604082019050919050565b60006020820190508181036000830152611fc381611f87565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b60006120266028836117cc565b915061203182611fca565b604082019050919050565b6000602082019050818103600083015261205581612019565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006120c58261195d565b91506120d08361195d565b92508282019050808211156120e8576120e761208b565b5b92915050565b60006120f98261195d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361212b5761212a61208b565b5b600182019050919050565b7f4e6f7420656e6f75676820616d6f756e7420696e2077616c6c65740000000000600082015250565b600061216c601b836117cc565b915061217782612136565b602082019050919050565b6000602082019050818103600083015261219b8161215f565b9050919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3230303020616464726573736573000000000000000000000000000000000000602082015250565b60006121fe602e836117cc565b9150612209826121a2565b604082019050919050565b6000602082019050818103600083015261222d816121f1565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006122906025836117cc565b915061229b82612234565b604082019050919050565b600060208201905081810360008301526122bf81612283565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006123226026836117cc565b915061232d826122c6565b604082019050919050565b6000602082019050818103600083015261235181612315565b9050919050565b60006123638261195d565b915061236e8361195d565b925082820261237c8161195d565b915082820484148315176123935761239261208b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006123d48261195d565b91506123df8361195d565b9250826123ef576123ee61239a565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006124306020836117cc565b915061243b826123fa565b602082019050919050565b6000602082019050818103600083015261245f81612423565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006124c26024836117cc565b91506124cd82612466565b604082019050919050565b600060208201905081810360008301526124f1816124b5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006125546022836117cc565b915061255f826124f8565b604082019050919050565b6000602082019050818103600083015261258381612547565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006125e66025836117cc565b91506125f18261258a565b604082019050919050565b60006020820190508181036000830152612615816125d9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006126786023836117cc565b91506126838261261c565b604082019050919050565b600060208201905081810360008301526126a78161266b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061270a6026836117cc565b9150612715826126ae565b604082019050919050565b60006020820190508181036000830152612739816126fd565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612776601d836117cc565b915061278182612740565b602082019050919050565b600060208201905081810360008301526127a581612769565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006128086021836117cc565b9150612813826127ac565b604082019050919050565b60006020820190508181036000830152612837816127fb565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061289a6022836117cc565b91506128a58261283e565b604082019050919050565b600060208201905081810360008301526128c98161288d565b9050919050565b7f77686974656c6973740000000000000000000000000000000000000000000000600082015250565b60006129066009836117cc565b9150612911826128d0565b602082019050919050565b60006020820190508181036000830152612935816128f9565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b60006129726006836117cc565b915061297d8261293c565b602082019050919050565b600060208201905081810360008301526129a181612965565b905091905056fea26469706673582212207e7d2e70fb681d4da51c093efbca2d1c3f57b78bb3113e94388709f8d9ed5bb864736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de578063a457c2d711610097578063b90306ad11610071578063b90306ad14610489578063d59093f6146104a5578063dd62ed3e146104c1578063f2fde38b146104f15761018e565b8063a457c2d71461040d578063a9059cbb1461043d578063abdd77dd1461046d5761018e565b8063715018a61461036d578063860a32ec1461037757806389f9a1d3146103955780638da5cb5b146103b357806395c45729146103d157806395d89b41146103ef5761018e565b80631e89d5451161014b578063395093511161012557806339509351146102d357806349bd5a5e14610303578063632e54421461032157806370a082311461033d5761018e565b80631e89d5451461026957806323b872dd14610285578063313ce567146102b55761018e565b806306fdde0314610193578063081fee1e146101b1578063095ea7b3146101cd57806318160ddd146101fd5780631ab99e121461021b5780631e7be21014610239575b600080fd5b61019b61050d565b6040516101a89190611851565b60405180910390f35b6101cb60048036038101906101c6919061191d565b61059f565b005b6101e760048036038101906101e29190611993565b610602565b6040516101f491906119e2565b60405180910390f35b610205610625565b6040516102129190611a0c565b60405180910390f35b61022361062f565b6040516102309190611a0c565b60405180910390f35b610253600480360381019061024e9190611a27565b610635565b60405161026091906119e2565b60405180910390f35b610283600480360381019061027e9190611b0f565b610655565b005b61029f600480360381019061029a9190611b90565b6107ed565b6040516102ac91906119e2565b60405180910390f35b6102bd61081c565b6040516102ca9190611bff565b60405180910390f35b6102ed60048036038101906102e89190611993565b610825565b6040516102fa91906119e2565b60405180910390f35b61030b61085c565b6040516103189190611c29565b60405180910390f35b61033b60048036038101906103369190611c44565b610882565b005b61035760048036038101906103529190611a27565b610988565b6040516103649190611a0c565b60405180910390f35b6103756109d1565b005b61037f6109e5565b60405161038c91906119e2565b60405180910390f35b61039d6109f8565b6040516103aa9190611a0c565b60405180910390f35b6103bb6109fe565b6040516103c89190611c29565b60405180910390f35b6103d9610a27565b6040516103e691906119e2565b60405180910390f35b6103f7610a3a565b6040516104049190611851565b60405180910390f35b61042760048036038101906104229190611993565b610acc565b60405161043491906119e2565b60405180910390f35b61045760048036038101906104529190611993565b610b43565b60405161046491906119e2565b60405180910390f35b61048760048036038101906104829190611de2565b610b66565b005b6104a3600480360381019061049e9190611e3e565b610c03565b005b6104bf60048036038101906104ba9190611e6b565b610c10565b005b6104db60048036038101906104d69190611e98565b610c35565b6040516104e89190611a0c565b60405180910390f35b61050b60048036038101906105069190611a27565b610cbc565b005b60606004805461051c90611f07565b80601f016020809104026020016040519081016040528092919081815260200182805461054890611f07565b80156105955780601f1061056a57610100808354040283529160200191610595565b820191906000526020600020905b81548152906001019060200180831161057857829003601f168201915b5050505050905090565b6105a7610d6b565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008061060d610de9565b905061061a818585610df1565b600191505092915050565b6000600354905090565b60085481565b600a6020528060005260406000206000915054906101000a900460ff1681565b610321848490501061069c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069390611faa565b60405180910390fd5b8181905084849050146106e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106db9061203c565b60405180910390fd5b6000805b8585905081101561072d578383828181106107065761070561205c565b5b905060200201358261071891906120ba565b91508080610725906120ee565b9150506106e8565b508061073833610988565b1015610779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077090612182565b60405180910390fd5b60005b858590508110156107e5576107d23387878481811061079e5761079d61205c565b5b90506020020160208101906107b39190611a27565b8686858181106107c6576107c561205c565b5b90506020020135610fba565b80806107dd906120ee565b91505061077c565b505050505050565b6000806107f8610de9565b9050610805858285611233565b610810858585610fba565b60019150509392505050565b60006012905090565b600080610830610de9565b90506108518185856108428589610c35565b61084c91906120ba565b610df1565b600191505092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107d183839050106108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c090612214565b60405180910390fd5b60006108e18484905083610d3f90919063ffffffff16565b9050806108ed33610988565b101561092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092590612182565b60405180910390fd5b60005b848490508110156109815761096e338686848181106109535761095261205c565b5b90506020020160208101906109689190611a27565b85610fba565b8080610979906120ee565b915050610931565b5050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109d9610d6b565b6109e360006112bf565b565b600660009054906101000a900460ff1681565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900460ff1681565b606060058054610a4990611f07565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7590611f07565b8015610ac25780601f10610a9757610100808354040283529160200191610ac2565b820191906000526020600020905b815481529060010190602001808311610aa557829003601f168201915b5050505050905090565b600080610ad7610de9565b90506000610ae58286610c35565b905083811015610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b21906122a6565b60405180910390fd5b610b378286868403610df1565b60019250505092915050565b600080610b4e610de9565b9050610b5b818585610fba565b600191505092915050565b610b6e610d6b565b60005b8251811015610bfe5781600a6000858481518110610b9257610b9161205c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610bf6906120ee565b915050610b71565b505050565b610c0d3382611383565b50565b610c18610d6b565b80600960006101000a81548160ff02191690831515021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610cc4610d6b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2a90612338565b60405180910390fd5b610d3c816112bf565b50565b60008183610d4d9190612358565b905092915050565b60008183610d6391906123c9565b905092915050565b610d73610de9565b73ffffffffffffffffffffffffffffffffffffffff16610d916109fe565b73ffffffffffffffffffffffffffffffffffffffff1614610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde90612446565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e57906124d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec69061256a565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fad9190611a0c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611029576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611020906125fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108f9061268e565b60405180910390fd5b6110a3838383611552565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561112a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112190612720565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161121a9190611a0c565b60405180910390a361122d8484846117bc565b50505050565b600061123f8484610c35565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112b957818110156112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a29061278c565b60405180910390fd5b6112b88484848403610df1565b5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e99061281e565b60405180910390fd5b6113fe82600083611552565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c906128b0565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115399190611a0c565b60405180910390a361154d836000846117bc565b505050565b61155a6109fe565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806115c557506115966109fe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6117b757600960009054906101000a900460ff16156116ce5760011515600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561168e575060011515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b6116cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c49061291c565b60405180910390fd5b5b600660009054906101000a900460ff1680156117375750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156117b6576007548161174984610988565b61175391906120ba565b1115801561177657506008548161176984610988565b61177391906120ba565b10155b6117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac90612988565b60405180910390fd5b5b5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156117fb5780820151818401526020810190506117e0565b60008484015250505050565b6000601f19601f8301169050919050565b6000611823826117c1565b61182d81856117cc565b935061183d8185602086016117dd565b61184681611807565b840191505092915050565b6000602082019050818103600083015261186b8184611818565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118b282611887565b9050919050565b6118c2816118a7565b81146118cd57600080fd5b50565b6000813590506118df816118b9565b92915050565b60008115159050919050565b6118fa816118e5565b811461190557600080fd5b50565b600081359050611917816118f1565b92915050565b600080604083850312156119345761193361187d565b5b6000611942858286016118d0565b925050602061195385828601611908565b9150509250929050565b6000819050919050565b6119708161195d565b811461197b57600080fd5b50565b60008135905061198d81611967565b92915050565b600080604083850312156119aa576119a961187d565b5b60006119b8858286016118d0565b92505060206119c98582860161197e565b9150509250929050565b6119dc816118e5565b82525050565b60006020820190506119f760008301846119d3565b92915050565b611a068161195d565b82525050565b6000602082019050611a2160008301846119fd565b92915050565b600060208284031215611a3d57611a3c61187d565b5b6000611a4b848285016118d0565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611a7957611a78611a54565b5b8235905067ffffffffffffffff811115611a9657611a95611a59565b5b602083019150836020820283011115611ab257611ab1611a5e565b5b9250929050565b60008083601f840112611acf57611ace611a54565b5b8235905067ffffffffffffffff811115611aec57611aeb611a59565b5b602083019150836020820283011115611b0857611b07611a5e565b5b9250929050565b60008060008060408587031215611b2957611b2861187d565b5b600085013567ffffffffffffffff811115611b4757611b46611882565b5b611b5387828801611a63565b9450945050602085013567ffffffffffffffff811115611b7657611b75611882565b5b611b8287828801611ab9565b925092505092959194509250565b600080600060608486031215611ba957611ba861187d565b5b6000611bb7868287016118d0565b9350506020611bc8868287016118d0565b9250506040611bd98682870161197e565b9150509250925092565b600060ff82169050919050565b611bf981611be3565b82525050565b6000602082019050611c146000830184611bf0565b92915050565b611c23816118a7565b82525050565b6000602082019050611c3e6000830184611c1a565b92915050565b600080600060408486031215611c5d57611c5c61187d565b5b600084013567ffffffffffffffff811115611c7b57611c7a611882565b5b611c8786828701611a63565b93509350506020611c9a8682870161197e565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611cdc82611807565b810181811067ffffffffffffffff82111715611cfb57611cfa611ca4565b5b80604052505050565b6000611d0e611873565b9050611d1a8282611cd3565b919050565b600067ffffffffffffffff821115611d3a57611d39611ca4565b5b602082029050602081019050919050565b6000611d5e611d5984611d1f565b611d04565b90508083825260208201905060208402830185811115611d8157611d80611a5e565b5b835b81811015611daa5780611d9688826118d0565b845260208401935050602081019050611d83565b5050509392505050565b600082601f830112611dc957611dc8611a54565b5b8135611dd9848260208601611d4b565b91505092915050565b60008060408385031215611df957611df861187d565b5b600083013567ffffffffffffffff811115611e1757611e16611882565b5b611e2385828601611db4565b9250506020611e3485828601611908565b9150509250929050565b600060208284031215611e5457611e5361187d565b5b6000611e628482850161197e565b91505092915050565b600060208284031215611e8157611e8061187d565b5b6000611e8f84828501611908565b91505092915050565b60008060408385031215611eaf57611eae61187d565b5b6000611ebd858286016118d0565b9250506020611ece858286016118d0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f1f57607f821691505b602082108103611f3257611f31611ed8565b5b50919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b6000611f94602d836117cc565b9150611f9f82611f38565b604082019050919050565b60006020820190508181036000830152611fc381611f87565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b60006120266028836117cc565b915061203182611fca565b604082019050919050565b6000602082019050818103600083015261205581612019565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006120c58261195d565b91506120d08361195d565b92508282019050808211156120e8576120e761208b565b5b92915050565b60006120f98261195d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361212b5761212a61208b565b5b600182019050919050565b7f4e6f7420656e6f75676820616d6f756e7420696e2077616c6c65740000000000600082015250565b600061216c601b836117cc565b915061217782612136565b602082019050919050565b6000602082019050818103600083015261219b8161215f565b9050919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3230303020616464726573736573000000000000000000000000000000000000602082015250565b60006121fe602e836117cc565b9150612209826121a2565b604082019050919050565b6000602082019050818103600083015261222d816121f1565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006122906025836117cc565b915061229b82612234565b604082019050919050565b600060208201905081810360008301526122bf81612283565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006123226026836117cc565b915061232d826122c6565b604082019050919050565b6000602082019050818103600083015261235181612315565b9050919050565b60006123638261195d565b915061236e8361195d565b925082820261237c8161195d565b915082820484148315176123935761239261208b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006123d48261195d565b91506123df8361195d565b9250826123ef576123ee61239a565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006124306020836117cc565b915061243b826123fa565b602082019050919050565b6000602082019050818103600083015261245f81612423565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006124c26024836117cc565b91506124cd82612466565b604082019050919050565b600060208201905081810360008301526124f1816124b5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006125546022836117cc565b915061255f826124f8565b604082019050919050565b6000602082019050818103600083015261258381612547565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006125e66025836117cc565b91506125f18261258a565b604082019050919050565b60006020820190508181036000830152612615816125d9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006126786023836117cc565b91506126838261261c565b604082019050919050565b600060208201905081810360008301526126a78161266b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061270a6026836117cc565b9150612715826126ae565b604082019050919050565b60006020820190508181036000830152612739816126fd565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612776601d836117cc565b915061278182612740565b602082019050919050565b600060208201905081810360008301526127a581612769565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006128086021836117cc565b9150612813826127ac565b604082019050919050565b60006020820190508181036000830152612837816127fb565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061289a6022836117cc565b91506128a58261283e565b604082019050919050565b600060208201905081810360008301526128c98161288d565b9050919050565b7f77686974656c6973740000000000000000000000000000000000000000000000600082015250565b60006129066009836117cc565b9150612911826128d0565b602082019050919050565b60006020820190508181036000830152612935816128f9565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b60006129726006836117cc565b915061297d8261293c565b602082019050919050565b600060208201905081810360008301526129a181612965565b905091905056fea26469706673582212207e7d2e70fb681d4da51c093efbca2d1c3f57b78bb3113e94388709f8d9ed5bb864736f6c63430008120033

Deployed Bytecode Sourcemap

26658:3151:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8630:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28219:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10990:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9759:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26799:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26868:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28717:633;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11771:261;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9601:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12441:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26917:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29358:448;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9930:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2592:103;;;:::i;:::-;;26735:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26761:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1951:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26837:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8849:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13182:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10263:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28362:223;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28130:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28593:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10519:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2850:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8630:100;8684:13;8717:5;8710:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8630:100;:::o;28219:135::-;1837:13;:11;:13::i;:::-;28331:15:::1;28308:10;:20;28319:8;28308:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;28219:135:::0;;:::o;10990:201::-;11073:4;11090:13;11106:12;:10;:12::i;:::-;11090:28;;11129:32;11138:5;11145:7;11154:6;11129:8;:32::i;:::-;11179:4;11172:11;;;10990:201;;;;:::o;9759:108::-;9820:7;9847:12;;9840:19;;9759:108;:::o;26799:31::-;;;;:::o;26868:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;28717:633::-;28845:3;28826:9;;:16;;:22;28818:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;28937:7;;:14;;28917:9;;:16;;:34;28909:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;29009:11;29040:9;29035:96;29059:9;;:16;;29055:1;:20;29035:96;;;29109:7;;29117:1;29109:10;;;;;;;:::i;:::-;;;;;;;;29103:3;:16;;;;:::i;:::-;29097:22;;29077:3;;;;;:::i;:::-;;;;29035:96;;;;29176:3;29151:21;29161:10;29151:9;:21::i;:::-;:28;;29143:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29227:9;29222:121;29246:9;;:16;;29242:1;:20;29222:121;;;29284:47;29294:10;29306:9;;29316:1;29306:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;29320:7;;29328:1;29320:10;;;;;;;:::i;:::-;;;;;;;;29284:9;:47::i;:::-;29264:3;;;;;:::i;:::-;;;;29222:121;;;;28807:543;28717:633;;;;:::o;11771:261::-;11868:4;11885:15;11903:12;:10;:12::i;:::-;11885:30;;11926:38;11942:4;11948:7;11957:6;11926:15;:38::i;:::-;11975:27;11985:4;11991:2;11995:6;11975:9;:27::i;:::-;12020:4;12013:11;;;11771:261;;;;;:::o;9601:93::-;9659:5;9684:2;9677:9;;9601:93;:::o;12441:238::-;12529:4;12546:13;12562:12;:10;:12::i;:::-;12546:28;;12585:64;12594:5;12601:7;12638:10;12610:25;12620:5;12627:7;12610:9;:25::i;:::-;:38;;;;:::i;:::-;12585:8;:64::i;:::-;12667:4;12660:11;;;12441:238;;;;:::o;26917:28::-;;;;;;;;;;;;;:::o;29358:448::-;29480:4;29461:9;;:16;;:23;29453:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;29548:11;29562:28;29573:9;;:16;;29562:6;:10;;:28;;;;:::i;:::-;29548:42;;29634:3;29609:21;29619:10;29609:9;:21::i;:::-;:28;;29601:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29687:9;29682:117;29706:9;;:16;;29702:1;:20;29682:117;;;29744:43;29754:10;29766:9;;29776:1;29766:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;29780:6;29744:9;:43::i;:::-;29724:3;;;;;:::i;:::-;;;;29682:117;;;;29442:364;29358:448;;;:::o;9930:127::-;10004:7;10031:9;:18;10041:7;10031:18;;;;;;;;;;;;;;;;10024:25;;9930:127;;;:::o;2592:103::-;1837:13;:11;:13::i;:::-;2657:30:::1;2684:1;2657:18;:30::i;:::-;2592:103::o:0;26735:19::-;;;;;;;;;;;;;:::o;26761:31::-;;;;:::o;1951:87::-;1997:7;2024:6;;;;;;;;;;;2017:13;;1951:87;:::o;26837:24::-;;;;;;;;;;;;;:::o;8849:104::-;8905:13;8938:7;8931:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8849:104;:::o;13182:436::-;13275:4;13292:13;13308:12;:10;:12::i;:::-;13292:28;;13331:24;13358:25;13368:5;13375:7;13358:9;:25::i;:::-;13331:52;;13422:15;13402:16;:35;;13394:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13515:60;13524:5;13531:7;13559:15;13540:16;:34;13515:8;:60::i;:::-;13606:4;13599:11;;;;13182:436;;;;:::o;10263:193::-;10342:4;10359:13;10375:12;:10;:12::i;:::-;10359:28;;10398;10408:5;10415:2;10419:6;10398:9;:28::i;:::-;10444:4;10437:11;;;10263:193;;;;:::o;28362:223::-;1837:13;:11;:13::i;:::-;28469:9:::1;28464:114;28488:8;:15;28484:1;:19;28464:114;;;28551:15;28525:10;:23;28536:8;28545:1;28536:11;;;;;;;;:::i;:::-;;;;;;;;28525:23;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;28505:3;;;;;:::i;:::-;;;;28464:114;;;;28362:223:::0;;:::o;28130:81::-;28178:25;28184:10;28196:6;28178:5;:25::i;:::-;28130:81;:::o;28593:114::-;1837:13;:11;:13::i;:::-;28685:14:::1;28670:12;;:29;;;;;;;;;;;;;;;;;;28593:114:::0;:::o;10519:151::-;10608:7;10635:11;:18;10647:5;10635:18;;;;;;;;;;;;;;;:27;10654:7;10635:27;;;;;;;;;;;;;;;;10628:34;;10519:151;;;;:::o;2850:201::-;1837:13;:11;:13::i;:::-;2959:1:::1;2939:22;;:8;:22;;::::0;2931:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3015:28;3034:8;3015:18;:28::i;:::-;2850:201:::0;:::o;23075:98::-;23133:7;23164:1;23160;:5;;;;:::i;:::-;23153:12;;23075:98;;;;:::o;23474:::-;23532:7;23563:1;23559;:5;;;;:::i;:::-;23552:12;;23474:98;;;;:::o;2116:132::-;2191:12;:10;:12::i;:::-;2180:23;;:7;:5;:7::i;:::-;:23;;;2172:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2116:132::o;656:98::-;709:7;736:10;729:17;;656:98;:::o;17175:346::-;17294:1;17277:19;;:5;:19;;;17269:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17375:1;17356:21;;:7;:21;;;17348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17459:6;17429:11;:18;17441:5;17429:18;;;;;;;;;;;;;;;:27;17448:7;17429:27;;;;;;;;;;;;;;;:36;;;;17497:7;17481:32;;17490:5;17481:32;;;17506:6;17481:32;;;;;;:::i;:::-;;;;;;;;17175:346;;;:::o;14088:806::-;14201:1;14185:18;;:4;:18;;;14177:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14278:1;14264:16;;:2;:16;;;14256:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14333:38;14354:4;14360:2;14364:6;14333:20;:38::i;:::-;14384:19;14406:9;:15;14416:4;14406:15;;;;;;;;;;;;;;;;14384:37;;14455:6;14440:11;:21;;14432:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14572:6;14558:11;:20;14540:9;:15;14550:4;14540:15;;;;;;;;;;;;;;;:38;;;;14775:6;14758:9;:13;14768:2;14758:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;14825:2;14810:26;;14819:4;14810:26;;;14829:6;14810:26;;;;;;:::i;:::-;;;;;;;;14849:37;14869:4;14875:2;14879:6;14849:19;:37::i;:::-;14166:728;14088:806;;;:::o;17812:419::-;17913:24;17940:25;17950:5;17957:7;17940:9;:25::i;:::-;17913:52;;18000:17;17980:16;:37;17976:248;;18062:6;18042:16;:26;;18034:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18146:51;18155:5;18162:7;18190:6;18171:16;:25;18146:8;:51::i;:::-;17976:248;17902:329;17812:419;;;:::o;3211:191::-;3285:16;3304:6;;;;;;;;;;;3285:25;;3330:8;3321:6;;:17;;;;;;;;;;;;;;;;;;3385:8;3354:40;;3375:8;3354:40;;;;;;;;;;;;3274:128;3211:191;:::o;16062:675::-;16165:1;16146:21;;:7;:21;;;16138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16218:49;16239:7;16256:1;16260:6;16218:20;:49::i;:::-;16280:22;16305:9;:18;16315:7;16305:18;;;;;;;;;;;;;;;;16280:43;;16360:6;16342:14;:24;;16334:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16479:6;16462:14;:23;16441:9;:18;16451:7;16441:18;;;;;;;;;;;;;;;:44;;;;16596:6;16580:12;;:22;;;;;;;;;;;16657:1;16631:37;;16640:7;16631:37;;;16661:6;16631:37;;;;;;:::i;:::-;;;;;;;;16681:48;16701:7;16718:1;16722:6;16681:19;:48::i;:::-;16127:610;16062:675;;:::o;27616:506::-;27769:7;:5;:7::i;:::-;27763:13;;:2;:13;;;:32;;;;27788:7;:5;:7::i;:::-;27780:15;;:4;:15;;;27763:32;27799:7;27759:49;27823:12;;;;;;;;;;;27820:112;;;27878:4;27860:22;;:10;:16;27871:4;27860:16;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;:46;;;;;27902:4;27886:20;;:10;:14;27897:2;27886:14;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;27860:46;27852:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27820:112;27947:7;;;;;;;;;;;:32;;;;;27966:13;;;;;;;;;;;27958:21;;:4;:21;;;27947:32;27944:171;;;28030:16;;28020:6;28004:13;28014:2;28004:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;:88;;;;;28076:16;;28066:6;28050:13;28060:2;28050:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;28004:88;27996:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;27944:171;27616:506;;;;:::o;19526:90::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:90::-;2217:7;2260:5;2253:13;2246:21;2235:32;;2183:90;;;:::o;2279:116::-;2349:21;2364:5;2349:21;:::i;:::-;2342:5;2339:32;2329:60;;2385:1;2382;2375:12;2329:60;2279:116;:::o;2401:133::-;2444:5;2482:6;2469:20;2460:29;;2498:30;2522:5;2498:30;:::i;:::-;2401:133;;;;:::o;2540:468::-;2605:6;2613;2662:2;2650:9;2641:7;2637:23;2633:32;2630:119;;;2668:79;;:::i;:::-;2630:119;2788:1;2813:53;2858:7;2849:6;2838:9;2834:22;2813:53;:::i;:::-;2803:63;;2759:117;2915:2;2941:50;2983:7;2974:6;2963:9;2959:22;2941:50;:::i;:::-;2931:60;;2886:115;2540:468;;;;;:::o;3014:77::-;3051:7;3080:5;3069:16;;3014:77;;;:::o;3097:122::-;3170:24;3188:5;3170:24;:::i;:::-;3163:5;3160:35;3150:63;;3209:1;3206;3199:12;3150:63;3097:122;:::o;3225:139::-;3271:5;3309:6;3296:20;3287:29;;3325:33;3352:5;3325:33;:::i;:::-;3225:139;;;;:::o;3370:474::-;3438:6;3446;3495:2;3483:9;3474:7;3470:23;3466:32;3463:119;;;3501:79;;:::i;:::-;3463:119;3621:1;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;:::i;:::-;3636:63;;3592:117;3748:2;3774:53;3819:7;3810:6;3799:9;3795:22;3774:53;:::i;:::-;3764:63;;3719:118;3370:474;;;;;:::o;3850:109::-;3931:21;3946:5;3931:21;:::i;:::-;3926:3;3919:34;3850:109;;:::o;3965:210::-;4052:4;4090:2;4079:9;4075:18;4067:26;;4103:65;4165:1;4154:9;4150:17;4141:6;4103:65;:::i;:::-;3965:210;;;;:::o;4181:118::-;4268:24;4286:5;4268:24;:::i;:::-;4263:3;4256:37;4181:118;;:::o;4305:222::-;4398:4;4436:2;4425:9;4421:18;4413:26;;4449:71;4517:1;4506:9;4502:17;4493:6;4449:71;:::i;:::-;4305:222;;;;:::o;4533:329::-;4592:6;4641:2;4629:9;4620:7;4616:23;4612:32;4609:119;;;4647:79;;:::i;:::-;4609:119;4767:1;4792:53;4837:7;4828:6;4817:9;4813:22;4792:53;:::i;:::-;4782:63;;4738:117;4533:329;;;;:::o;4868:117::-;4977:1;4974;4967:12;4991:117;5100:1;5097;5090:12;5114:117;5223:1;5220;5213:12;5254:568;5327:8;5337:6;5387:3;5380:4;5372:6;5368:17;5364:27;5354:122;;5395:79;;:::i;:::-;5354:122;5508:6;5495:20;5485:30;;5538:18;5530:6;5527:30;5524:117;;;5560:79;;:::i;:::-;5524:117;5674:4;5666:6;5662:17;5650:29;;5728:3;5720:4;5712:6;5708:17;5698:8;5694:32;5691:41;5688:128;;;5735:79;;:::i;:::-;5688:128;5254:568;;;;;:::o;5845:::-;5918:8;5928:6;5978:3;5971:4;5963:6;5959:17;5955:27;5945:122;;5986:79;;:::i;:::-;5945:122;6099:6;6086:20;6076:30;;6129:18;6121:6;6118:30;6115:117;;;6151:79;;:::i;:::-;6115:117;6265:4;6257:6;6253:17;6241:29;;6319:3;6311:4;6303:6;6299:17;6289:8;6285:32;6282:41;6279:128;;;6326:79;;:::i;:::-;6279:128;5845:568;;;;;:::o;6419:934::-;6541:6;6549;6557;6565;6614:2;6602:9;6593:7;6589:23;6585:32;6582:119;;;6620:79;;:::i;:::-;6582:119;6768:1;6757:9;6753:17;6740:31;6798:18;6790:6;6787:30;6784:117;;;6820:79;;:::i;:::-;6784:117;6933:80;7005:7;6996:6;6985:9;6981:22;6933:80;:::i;:::-;6915:98;;;;6711:312;7090:2;7079:9;7075:18;7062:32;7121:18;7113:6;7110:30;7107:117;;;7143:79;;:::i;:::-;7107:117;7256:80;7328:7;7319:6;7308:9;7304:22;7256:80;:::i;:::-;7238:98;;;;7033:313;6419:934;;;;;;;:::o;7359:619::-;7436:6;7444;7452;7501:2;7489:9;7480:7;7476:23;7472:32;7469:119;;;7507:79;;:::i;:::-;7469:119;7627:1;7652:53;7697:7;7688:6;7677:9;7673:22;7652:53;:::i;:::-;7642:63;;7598:117;7754:2;7780:53;7825:7;7816:6;7805:9;7801:22;7780:53;:::i;:::-;7770:63;;7725:118;7882:2;7908:53;7953:7;7944:6;7933:9;7929:22;7908:53;:::i;:::-;7898:63;;7853:118;7359:619;;;;;:::o;7984:86::-;8019:7;8059:4;8052:5;8048:16;8037:27;;7984:86;;;:::o;8076:112::-;8159:22;8175:5;8159:22;:::i;:::-;8154:3;8147:35;8076:112;;:::o;8194:214::-;8283:4;8321:2;8310:9;8306:18;8298:26;;8334:67;8398:1;8387:9;8383:17;8374:6;8334:67;:::i;:::-;8194:214;;;;:::o;8414:118::-;8501:24;8519:5;8501:24;:::i;:::-;8496:3;8489:37;8414:118;;:::o;8538:222::-;8631:4;8669:2;8658:9;8654:18;8646:26;;8682:71;8750:1;8739:9;8735:17;8726:6;8682:71;:::i;:::-;8538:222;;;;:::o;8766:704::-;8861:6;8869;8877;8926:2;8914:9;8905:7;8901:23;8897:32;8894:119;;;8932:79;;:::i;:::-;8894:119;9080:1;9069:9;9065:17;9052:31;9110:18;9102:6;9099:30;9096:117;;;9132:79;;:::i;:::-;9096:117;9245:80;9317:7;9308:6;9297:9;9293:22;9245:80;:::i;:::-;9227:98;;;;9023:312;9374:2;9400:53;9445:7;9436:6;9425:9;9421:22;9400:53;:::i;:::-;9390:63;;9345:118;8766:704;;;;;:::o;9476:180::-;9524:77;9521:1;9514:88;9621:4;9618:1;9611:15;9645:4;9642:1;9635:15;9662:281;9745:27;9767:4;9745:27;:::i;:::-;9737:6;9733:40;9875:6;9863:10;9860:22;9839:18;9827:10;9824:34;9821:62;9818:88;;;9886:18;;:::i;:::-;9818:88;9926:10;9922:2;9915:22;9705:238;9662:281;;:::o;9949:129::-;9983:6;10010:20;;:::i;:::-;10000:30;;10039:33;10067:4;10059:6;10039:33;:::i;:::-;9949:129;;;:::o;10084:311::-;10161:4;10251:18;10243:6;10240:30;10237:56;;;10273:18;;:::i;:::-;10237:56;10323:4;10315:6;10311:17;10303:25;;10383:4;10377;10373:15;10365:23;;10084:311;;;:::o;10418:710::-;10514:5;10539:81;10555:64;10612:6;10555:64;:::i;:::-;10539:81;:::i;:::-;10530:90;;10640:5;10669:6;10662:5;10655:21;10703:4;10696:5;10692:16;10685:23;;10756:4;10748:6;10744:17;10736:6;10732:30;10785:3;10777:6;10774:15;10771:122;;;10804:79;;:::i;:::-;10771:122;10919:6;10902:220;10936:6;10931:3;10928:15;10902:220;;;11011:3;11040:37;11073:3;11061:10;11040:37;:::i;:::-;11035:3;11028:50;11107:4;11102:3;11098:14;11091:21;;10978:144;10962:4;10957:3;10953:14;10946:21;;10902:220;;;10906:21;10520:608;;10418:710;;;;;:::o;11151:370::-;11222:5;11271:3;11264:4;11256:6;11252:17;11248:27;11238:122;;11279:79;;:::i;:::-;11238:122;11396:6;11383:20;11421:94;11511:3;11503:6;11496:4;11488:6;11484:17;11421:94;:::i;:::-;11412:103;;11228:293;11151:370;;;;:::o;11527:678::-;11617:6;11625;11674:2;11662:9;11653:7;11649:23;11645:32;11642:119;;;11680:79;;:::i;:::-;11642:119;11828:1;11817:9;11813:17;11800:31;11858:18;11850:6;11847:30;11844:117;;;11880:79;;:::i;:::-;11844:117;11985:78;12055:7;12046:6;12035:9;12031:22;11985:78;:::i;:::-;11975:88;;11771:302;12112:2;12138:50;12180:7;12171:6;12160:9;12156:22;12138:50;:::i;:::-;12128:60;;12083:115;11527:678;;;;;:::o;12211:329::-;12270:6;12319:2;12307:9;12298:7;12294:23;12290:32;12287:119;;;12325:79;;:::i;:::-;12287:119;12445:1;12470:53;12515:7;12506:6;12495:9;12491:22;12470:53;:::i;:::-;12460:63;;12416:117;12211:329;;;;:::o;12546:323::-;12602:6;12651:2;12639:9;12630:7;12626:23;12622:32;12619:119;;;12657:79;;:::i;:::-;12619:119;12777:1;12802:50;12844:7;12835:6;12824:9;12820:22;12802:50;:::i;:::-;12792:60;;12748:114;12546:323;;;;:::o;12875:474::-;12943:6;12951;13000:2;12988:9;12979:7;12975:23;12971:32;12968:119;;;13006:79;;:::i;:::-;12968:119;13126:1;13151:53;13196:7;13187:6;13176:9;13172:22;13151:53;:::i;:::-;13141:63;;13097:117;13253:2;13279:53;13324:7;13315:6;13304:9;13300:22;13279:53;:::i;:::-;13269:63;;13224:118;12875:474;;;;;:::o;13355:180::-;13403:77;13400:1;13393:88;13500:4;13497:1;13490:15;13524:4;13521:1;13514:15;13541:320;13585:6;13622:1;13616:4;13612:12;13602:22;;13669:1;13663:4;13659:12;13690:18;13680:81;;13746:4;13738:6;13734:17;13724:27;;13680:81;13808:2;13800:6;13797:14;13777:18;13774:38;13771:84;;13827:18;;:::i;:::-;13771:84;13592:269;13541:320;;;:::o;13867:232::-;14007:34;14003:1;13995:6;13991:14;13984:58;14076:15;14071:2;14063:6;14059:15;14052:40;13867:232;:::o;14105:366::-;14247:3;14268:67;14332:2;14327:3;14268:67;:::i;:::-;14261:74;;14344:93;14433:3;14344:93;:::i;:::-;14462:2;14457:3;14453:12;14446:19;;14105:366;;;:::o;14477:419::-;14643:4;14681:2;14670:9;14666:18;14658:26;;14730:9;14724:4;14720:20;14716:1;14705:9;14701:17;14694:47;14758:131;14884:4;14758:131;:::i;:::-;14750:139;;14477:419;;;:::o;14902:227::-;15042:34;15038:1;15030:6;15026:14;15019:58;15111:10;15106:2;15098:6;15094:15;15087:35;14902:227;:::o;15135:366::-;15277:3;15298:67;15362:2;15357:3;15298:67;:::i;:::-;15291:74;;15374:93;15463:3;15374:93;:::i;:::-;15492:2;15487:3;15483:12;15476:19;;15135:366;;;:::o;15507:419::-;15673:4;15711:2;15700:9;15696:18;15688:26;;15760:9;15754:4;15750:20;15746:1;15735:9;15731:17;15724:47;15788:131;15914:4;15788:131;:::i;:::-;15780:139;;15507:419;;;:::o;15932:180::-;15980:77;15977:1;15970:88;16077:4;16074:1;16067:15;16101:4;16098:1;16091:15;16118:180;16166:77;16163:1;16156:88;16263:4;16260:1;16253:15;16287:4;16284:1;16277:15;16304:191;16344:3;16363:20;16381:1;16363:20;:::i;:::-;16358:25;;16397:20;16415:1;16397:20;:::i;:::-;16392:25;;16440:1;16437;16433:9;16426:16;;16461:3;16458:1;16455:10;16452:36;;;16468:18;;:::i;:::-;16452:36;16304:191;;;;:::o;16501:233::-;16540:3;16563:24;16581:5;16563:24;:::i;:::-;16554:33;;16609:66;16602:5;16599:77;16596:103;;16679:18;;:::i;:::-;16596:103;16726:1;16719:5;16715:13;16708:20;;16501:233;;;:::o;16740:177::-;16880:29;16876:1;16868:6;16864:14;16857:53;16740:177;:::o;16923:366::-;17065:3;17086:67;17150:2;17145:3;17086:67;:::i;:::-;17079:74;;17162:93;17251:3;17162:93;:::i;:::-;17280:2;17275:3;17271:12;17264:19;;16923:366;;;:::o;17295:419::-;17461:4;17499:2;17488:9;17484:18;17476:26;;17548:9;17542:4;17538:20;17534:1;17523:9;17519:17;17512:47;17576:131;17702:4;17576:131;:::i;:::-;17568:139;;17295:419;;;:::o;17720:233::-;17860:34;17856:1;17848:6;17844:14;17837:58;17929:16;17924:2;17916:6;17912:15;17905:41;17720:233;:::o;17959:366::-;18101:3;18122:67;18186:2;18181:3;18122:67;:::i;:::-;18115:74;;18198:93;18287:3;18198:93;:::i;:::-;18316:2;18311:3;18307:12;18300:19;;17959:366;;;:::o;18331:419::-;18497:4;18535:2;18524:9;18520:18;18512:26;;18584:9;18578:4;18574:20;18570:1;18559:9;18555:17;18548:47;18612:131;18738:4;18612:131;:::i;:::-;18604:139;;18331:419;;;:::o;18756:224::-;18896:34;18892:1;18884:6;18880:14;18873:58;18965:7;18960:2;18952:6;18948:15;18941:32;18756:224;:::o;18986:366::-;19128:3;19149:67;19213:2;19208:3;19149:67;:::i;:::-;19142:74;;19225:93;19314:3;19225:93;:::i;:::-;19343:2;19338:3;19334:12;19327:19;;18986:366;;;:::o;19358:419::-;19524:4;19562:2;19551:9;19547:18;19539:26;;19611:9;19605:4;19601:20;19597:1;19586:9;19582:17;19575:47;19639:131;19765:4;19639:131;:::i;:::-;19631:139;;19358:419;;;:::o;19783:225::-;19923:34;19919:1;19911:6;19907:14;19900:58;19992:8;19987:2;19979:6;19975:15;19968:33;19783:225;:::o;20014:366::-;20156:3;20177:67;20241:2;20236:3;20177:67;:::i;:::-;20170:74;;20253:93;20342:3;20253:93;:::i;:::-;20371:2;20366:3;20362:12;20355:19;;20014:366;;;:::o;20386:419::-;20552:4;20590:2;20579:9;20575:18;20567:26;;20639:9;20633:4;20629:20;20625:1;20614:9;20610:17;20603:47;20667:131;20793:4;20667:131;:::i;:::-;20659:139;;20386:419;;;:::o;20811:410::-;20851:7;20874:20;20892:1;20874:20;:::i;:::-;20869:25;;20908:20;20926:1;20908:20;:::i;:::-;20903:25;;20963:1;20960;20956:9;20985:30;21003:11;20985:30;:::i;:::-;20974:41;;21164:1;21155:7;21151:15;21148:1;21145:22;21125:1;21118:9;21098:83;21075:139;;21194:18;;:::i;:::-;21075:139;20859:362;20811:410;;;;:::o;21227:180::-;21275:77;21272:1;21265:88;21372:4;21369:1;21362:15;21396:4;21393:1;21386:15;21413:185;21453:1;21470:20;21488:1;21470:20;:::i;:::-;21465:25;;21504:20;21522:1;21504:20;:::i;:::-;21499:25;;21543:1;21533:35;;21548:18;;:::i;:::-;21533:35;21590:1;21587;21583:9;21578:14;;21413:185;;;;:::o;21604:182::-;21744:34;21740:1;21732:6;21728:14;21721:58;21604:182;:::o;21792:366::-;21934:3;21955:67;22019:2;22014:3;21955:67;:::i;:::-;21948:74;;22031:93;22120:3;22031:93;:::i;:::-;22149:2;22144:3;22140:12;22133:19;;21792:366;;;:::o;22164:419::-;22330:4;22368:2;22357:9;22353:18;22345:26;;22417:9;22411:4;22407:20;22403:1;22392:9;22388:17;22381:47;22445:131;22571:4;22445:131;:::i;:::-;22437:139;;22164:419;;;:::o;22589:223::-;22729:34;22725:1;22717:6;22713:14;22706:58;22798:6;22793:2;22785:6;22781:15;22774:31;22589:223;:::o;22818:366::-;22960:3;22981:67;23045:2;23040:3;22981:67;:::i;:::-;22974:74;;23057:93;23146:3;23057:93;:::i;:::-;23175:2;23170:3;23166:12;23159:19;;22818:366;;;:::o;23190:419::-;23356:4;23394:2;23383:9;23379:18;23371:26;;23443:9;23437:4;23433:20;23429:1;23418:9;23414:17;23407:47;23471:131;23597:4;23471:131;:::i;:::-;23463:139;;23190:419;;;:::o;23615:221::-;23755:34;23751:1;23743:6;23739:14;23732:58;23824:4;23819:2;23811:6;23807:15;23800:29;23615:221;:::o;23842:366::-;23984:3;24005:67;24069:2;24064:3;24005:67;:::i;:::-;23998:74;;24081:93;24170:3;24081:93;:::i;:::-;24199:2;24194:3;24190:12;24183:19;;23842:366;;;:::o;24214:419::-;24380:4;24418:2;24407:9;24403:18;24395:26;;24467:9;24461:4;24457:20;24453:1;24442:9;24438:17;24431:47;24495:131;24621:4;24495:131;:::i;:::-;24487:139;;24214:419;;;:::o;24639:224::-;24779:34;24775:1;24767:6;24763:14;24756:58;24848:7;24843:2;24835:6;24831:15;24824:32;24639:224;:::o;24869:366::-;25011:3;25032:67;25096:2;25091:3;25032:67;:::i;:::-;25025:74;;25108:93;25197:3;25108:93;:::i;:::-;25226:2;25221:3;25217:12;25210:19;;24869:366;;;:::o;25241:419::-;25407:4;25445:2;25434:9;25430:18;25422:26;;25494:9;25488:4;25484:20;25480:1;25469:9;25465:17;25458:47;25522:131;25648:4;25522:131;:::i;:::-;25514:139;;25241:419;;;:::o;25666:222::-;25806:34;25802:1;25794:6;25790:14;25783:58;25875:5;25870:2;25862:6;25858:15;25851:30;25666:222;:::o;25894:366::-;26036:3;26057:67;26121:2;26116:3;26057:67;:::i;:::-;26050:74;;26133:93;26222:3;26133:93;:::i;:::-;26251:2;26246:3;26242:12;26235:19;;25894:366;;;:::o;26266:419::-;26432:4;26470:2;26459:9;26455:18;26447:26;;26519:9;26513:4;26509:20;26505:1;26494:9;26490:17;26483:47;26547:131;26673:4;26547:131;:::i;:::-;26539:139;;26266:419;;;:::o;26691:225::-;26831:34;26827:1;26819:6;26815:14;26808:58;26900:8;26895:2;26887:6;26883:15;26876:33;26691:225;:::o;26922:366::-;27064:3;27085:67;27149:2;27144:3;27085:67;:::i;:::-;27078:74;;27161:93;27250:3;27161:93;:::i;:::-;27279:2;27274:3;27270:12;27263:19;;26922:366;;;:::o;27294:419::-;27460:4;27498:2;27487:9;27483:18;27475:26;;27547:9;27541:4;27537:20;27533:1;27522:9;27518:17;27511:47;27575:131;27701:4;27575:131;:::i;:::-;27567:139;;27294:419;;;:::o;27719:179::-;27859:31;27855:1;27847:6;27843:14;27836:55;27719:179;:::o;27904:366::-;28046:3;28067:67;28131:2;28126:3;28067:67;:::i;:::-;28060:74;;28143:93;28232:3;28143:93;:::i;:::-;28261:2;28256:3;28252:12;28245:19;;27904:366;;;:::o;28276:419::-;28442:4;28480:2;28469:9;28465:18;28457:26;;28529:9;28523:4;28519:20;28515:1;28504:9;28500:17;28493:47;28557:131;28683:4;28557:131;:::i;:::-;28549:139;;28276:419;;;:::o;28701:220::-;28841:34;28837:1;28829:6;28825:14;28818:58;28910:3;28905:2;28897:6;28893:15;28886:28;28701:220;:::o;28927:366::-;29069:3;29090:67;29154:2;29149:3;29090:67;:::i;:::-;29083:74;;29166:93;29255:3;29166:93;:::i;:::-;29284:2;29279:3;29275:12;29268:19;;28927:366;;;:::o;29299:419::-;29465:4;29503:2;29492:9;29488:18;29480:26;;29552:9;29546:4;29542:20;29538:1;29527:9;29523:17;29516:47;29580:131;29706:4;29580:131;:::i;:::-;29572:139;;29299:419;;;:::o;29724:221::-;29864:34;29860:1;29852:6;29848:14;29841:58;29933:4;29928:2;29920:6;29916:15;29909:29;29724:221;:::o;29951:366::-;30093:3;30114:67;30178:2;30173:3;30114:67;:::i;:::-;30107:74;;30190:93;30279:3;30190:93;:::i;:::-;30308:2;30303:3;30299:12;30292:19;;29951:366;;;:::o;30323:419::-;30489:4;30527:2;30516:9;30512:18;30504:26;;30576:9;30570:4;30566:20;30562:1;30551:9;30547:17;30540:47;30604:131;30730:4;30604:131;:::i;:::-;30596:139;;30323:419;;;:::o;30748:159::-;30888:11;30884:1;30876:6;30872:14;30865:35;30748:159;:::o;30913:365::-;31055:3;31076:66;31140:1;31135:3;31076:66;:::i;:::-;31069:73;;31151:93;31240:3;31151:93;:::i;:::-;31269:2;31264:3;31260:12;31253:19;;30913:365;;;:::o;31284:419::-;31450:4;31488:2;31477:9;31473:18;31465:26;;31537:9;31531:4;31527:20;31523:1;31512:9;31508:17;31501:47;31565:131;31691:4;31565:131;:::i;:::-;31557:139;;31284:419;;;:::o;31709:156::-;31849:8;31845:1;31837:6;31833:14;31826:32;31709:156;:::o;31871:365::-;32013:3;32034:66;32098:1;32093:3;32034:66;:::i;:::-;32027:73;;32109:93;32198:3;32109:93;:::i;:::-;32227:2;32222:3;32218:12;32211:19;;31871:365;;;:::o;32242:419::-;32408:4;32446:2;32435:9;32431:18;32423:26;;32495:9;32489:4;32485:20;32481:1;32470:9;32466:17;32459:47;32523:131;32649:4;32523:131;:::i;:::-;32515:139;;32242:419;;;:::o

Swarm Source

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