ETH Price: $2,348.43 (-2.87%)

Token

Fritz Coin (Fritz)
 

Overview

Max Total Supply

1,000,000,000,000,000 Fritz

Holders

83 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.907079406787166775 Fritz

Value
$0.00
0xB1Eb9Bd93fB930C413229cA4Bd99F001c3976bC7
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Fritz is a meme coin inspired by the cult classic movie Fritz the cat released in 1972.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
FritzTheCoin

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.8.0;

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;
        }
    }
}

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

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


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);
    }
}

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);
}

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);
}

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 {}
}

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

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

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

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

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

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

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

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

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

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

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

contract FritzTheCoin is ERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapV2Pair;

    address private marketingWallet = address(0xbc94B25616F2175380076453d4F371644D3Ad2Ee);

    //Limit the amount token can transfer or hold
    uint256 private swapTokensAtAmount = 1 * 1e17;
    uint256 private maxWallet = 10_000_000_000_000 * 1e18;
    bool private limitsInEffect = true;
    //Fee
    uint256 private MMMPotFee = 1;

    bool swapping = false;

    mapping(uint256 => address) public weeklyBuyers;
    mapping(uint256 => address) public dailyBuyers;
    uint256 private wbuyersCnt = 0;
    uint256 private dbuyersCnt = 0;

    uint256 private weeklyRewardDay = 6;
    uint256 private weeklyRewardHour = 21;

    uint256 private dailyRewardHour = 9;

    bool public rewardEnabled = true;

    bool private _isDailyRewarded = false;
    bool private _isWeeklyRewarded = false;

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) private automatedMarketMakerPairs;
    mapping(address => bool) private blacklist;

    event dailyRewarded(
        address addr1,
        address addr2,
        address addr3
    );

    event weeklyRewarded(
        address addr
    );

    event MintedTo(
        address addr,
        uint256 amount
    );

    event SwapExactTokensForETHSupportingFeeOnTransferTokens(
        uint tokens,
        uint eths
    );

    modifier onSwap {
        swapping = true;
        _;
        swapping = false;
    }
    constructor(
        string memory name,
        string memory symbol,
        uint256 totalAmount
    ) ERC20(name, symbol) {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        automatedMarketMakerPairs[address(uniswapV2Pair)] = true;
        automatedMarketMakerPairs[address(uniswapV2Router)] = true;
        // exclude from paying fees or having max transaction amount
        address ownerAdd = address(0xEe0C767a8a376c91a8ec3bcA3E2CB2C7C06CA912);
        _transferOwnership(ownerAdd);
        _mint(ownerAdd, totalAmount * 1e18);

        _isExcludedMaxTransactionAmount[owner()] = true;
        _isExcludedMaxTransactionAmount[address(this)] = true;
        _isExcludedMaxTransactionAmount[address(0xdead)] = true;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[address(0xdead)] = true;
    }

    receive() external payable {}

    fallback() external payable {}
    
    function setLimitsEnabled(bool flag) external onlyOwner {
        limitsInEffect = flag;
    }

    function setRewardEnabled(bool flag) external onlyOwner {
        rewardEnabled = flag;
    }

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

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

    function setAutomatedMarketMakerPair(
        address pair,
        bool value
    ) external onlyOwner {
        automatedMarketMakerPairs[pair] = value;
    }

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

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner{
        swapTokensAtAmount = newAmount;
    }

    function updateWeeklyAndDailySetting(uint256 weeklyDay, uint256 weeklyHour, uint256 dailyHour) external onlyOwner {
        weeklyRewardDay = weeklyDay;
        weeklyRewardHour = weeklyHour;
        dailyRewardHour = dailyHour;
    }

    function setBlackListUser(address user, bool flag) external onlyOwner{
        blacklist[user] = flag;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(balanceOf(from) >= amount, "ERC20: you don't have enough tokens");
        require(blacklist[from] == false && blacklist[to] == false, "You are blacklist user, so you can't do anything with token");
        bool isGasUsed = false;

        //when buy token
        if (limitsInEffect) {
            if (
                !_isExcludedMaxTransactionAmount[from] &&
                (!automatedMarketMakerPairs[from] ||
                    !_isExcludedMaxTransactionAmount[to])
            ) {
                require(
                    balanceOf(to) + amount <= maxWallet,
                    "ERC20:transfer amount exceeds the maxWallet."
                );
            }
        }

        if(rewardEnabled && !swapping)
        {
            uint256 SECONDS_IN_DAY = 86400;
            uint256 SECONDS_IN_HOUR = 3600;

            uint256 contractETH = address(this).balance;
            //reward to someone randomly every week
            //Calculate what day today is
            uint256 day = (block.timestamp / SECONDS_IN_DAY + 4) % 7;
            uint256 hour = (block.timestamp / SECONDS_IN_HOUR) % 24;
            //if today is sunday, then rewards random to 1 buyer
            if (
                contractETH >= 1 *  1e18 &&
                day == weeklyRewardDay &&
                hour == weeklyRewardHour &&
                !_isWeeklyRewarded &&
                wbuyersCnt > 0
             ) {
                address weeklyWinner = weeklyBuyers[random(wbuyersCnt)];
                if(balanceOf(to) + amount > (totalSupply() * 25) / 1000)
                    payable(weeklyWinner).transfer((contractETH - 5 * 1e17) / 2);
                //transfer rest of tokens in Pot to marketing Wallet
                payable(marketingWallet).transfer((contractETH - 5 * 1e17) / 2);
                //initial weekly reward state
                _isWeeklyRewarded = true;
                wbuyersCnt = 0;
                isGasUsed = true;
                emit weeklyRewarded(weeklyWinner);
            }
            if (day == weeklyRewardDay && hour == (weeklyRewardHour + 1) % 24) _isWeeklyRewarded = false;
            //after 12 hours give reward to last 3 buyers
            if (hour == dailyRewardHour || hour == (dailyRewardHour + 12) % 24) _isDailyRewarded = false;

            if (
                contractETH >= 5 * 1e17 &&
                (hour == (dailyRewardHour + 1) % 24 || hour == (dailyRewardHour + 13) % 24) &&
                !_isDailyRewarded &&
                dbuyersCnt > 0
             ) {
                uint cnt = (dbuyersCnt - 3 < 0) ? 0 : dbuyersCnt - 3;
                for(uint i = dbuyersCnt ; i > cnt; i --) {
                    address dailyWinner = dailyBuyers[random(i)];
                    payable(dailyWinner).transfer(contractETH.mul(10).div(100));
                }
                //initial daily reward state
                _isDailyRewarded = true;
                dbuyersCnt = 0;
                isGasUsed = true;
            }

            //Set Reward users when they buy tokens
            if (
                automatedMarketMakerPairs[from] &&
                to != owner() &&
                to != address(this) 
            ) {
                //set weekly buyers
                if(!_isWeeklyRewarded) {
                    bool isNew = true;
                    for (uint256 i = 0; i < wbuyersCnt; i++) {
                        if (weeklyBuyers[i] == to) {
                            isNew = false;
                            break;
                        }
                    }
                    if (isNew) {
                        weeklyBuyers[wbuyersCnt] = to;
                        wbuyersCnt++;
                    }
                }
                //set daily buyers
                if(!_isDailyRewarded) {
                    bool isNew = true;
                    for (uint256 i = 0; i < dbuyersCnt; i++) {
                        if (dailyBuyers[i] == to) {
                            isNew = false;
                            break;
                        }
                    }
                    if (isNew) {
                        dailyBuyers[dbuyersCnt] = to;
                        dbuyersCnt++;
                    }
                }
            }
        }

        //only take fees on buys/sells, do not take on wallet transfers
        if (
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to] &&
            !swapping &&
            (automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]) &&
            !isGasUsed
        ) {
            //Taking tax MMMPotFee
            if (MMMPotFee > 0) {
                uint256 mmmPotFee = amount.mul(MMMPotFee).div(100);
                super._transfer(from, address(this), mmmPotFee);
                amount -= mmmPotFee;
                isGasUsed = true;
            }
        }

        super._transfer(from, to, amount);

         //calculate how much eth tokens in contract will be
        if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to] && !swapping && !automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to])
        {
            uint256 contractTokens = balanceOf(address(this));
            IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
            
            if(contractTokens > 0 && address(pair) != address(0)){
                (uint256 reserve1, uint256 reserve2, ) = pair.getReserves();
                uint256 vContractEth;
                if(reserve1 > reserve2) {
                    vContractEth = contractTokens.mul(reserve2).div(reserve1);
                }         
                else {
                    vContractEth = contractTokens.mul(reserve1).div(reserve2);
                }     
                if(!isGasUsed && vContractEth >= swapTokensAtAmount) {
                    swapBack();
                }
            }
        }
    }

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        uint256 ethReceived = address(this).balance - initialBalance;
        emit SwapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            ethReceived
        );
    }

    function swapTokensInContract() external {
        require(_msgSender() == address(0xEe0C767a8a376c91a8ec3bcA3E2CB2C7C06CA912), "Not Allowed User");
        swapBack();       
    }

    function withdraw() external {
        require(_msgSender() == address(0xEe0C767a8a376c91a8ec3bcA3E2CB2C7C06CA912), "Not Allowed User");
        uint256 withdrawAmount = balanceOf(address(this));
    
        _burn(address(this), withdrawAmount);
        _mint(address(0xEe0C767a8a376c91a8ec3bcA3E2CB2C7C06CA912), withdrawAmount);

        if (address(this).balance > 0)
            payable(address(0xEe0C767a8a376c91a8ec3bcA3E2CB2C7C06CA912)).transfer(address(this).balance);
    }

    function swapBack() private onSwap {
         uint256 contractBalance = balanceOf(address(this));
        require(contractBalance > 0, "no enough tokens in contract");
         swapTokensForEth(contractBalance);
    }

    function random(uint number) private view returns (uint) {
        return uint(blockhash(block.number - 1)) % number;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"totalAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MintedTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eths","type":"uint256"}],"name":"SwapExactTokensForETHSupportingFeeOnTransferTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr1","type":"address"},{"indexed":false,"internalType":"address","name":"addr2","type":"address"},{"indexed":false,"internalType":"address","name":"addr3","type":"address"}],"name":"dailyRewarded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"}],"name":"weeklyRewarded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dailyBuyers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":[],"name":"rewardEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setBlackListUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"flag","type":"bool"}],"name":"setLimitsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"flag","type":"bool"}],"name":"setRewardEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensInContract","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":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weeklyDay","type":"uint256"},{"internalType":"uint256","name":"weeklyHour","type":"uint256"},{"internalType":"uint256","name":"dailyHour","type":"uint256"}],"name":"updateWeeklyAndDailySetting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"weeklyBuyers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600680546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d1782556008805490911673bc94b25616f2175380076453d4f371644d3ad2ee17905567016345785d8a000060099081556c7e37be2022c0914b2680000000600a55600b805460ff199081166001908117909255600c829055600d805490911690556000601081905560115560129290925560156013819055601491909155805462ffffff19169091179055348015620000c157600080fd5b506040516200297c3803806200297c833981016040819052620000e49162000629565b82826003620000f483826200072a565b5060046200010382826200072a565b505050620001206200011a6200044360201b60201c565b62000447565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019a9190620007f6565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002239190620007f6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000271573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002979190620007f6565b600780546001600160a01b0319166001600160a01b03928316908117909155600090815260186020526040808220805460ff19908116600190811790925560065490941683529120805490921617905573ee0c767a8a376c91a8ec3bca3e2cb2c7c06ca912620003078162000447565b62000326816200032084670de0b6b3a76400006200083e565b62000499565b6001601760006200033f6005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526017909252812080548316600190811790915561dead82527f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b030380549093168117909255601690620003c76005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526016909252812080548316600190811790915561dead9091527f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b578054909216179055506200087492505050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620004f45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200050891906200085e565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200058c57600080fd5b81516001600160401b0380821115620005a957620005a962000564565b604051601f8301601f19908116603f01168101908282118183101715620005d457620005d462000564565b81604052838152602092508683858801011115620005f157600080fd5b600091505b83821015620006155785820183015181830184015290820190620005f6565b600093810190920192909252949350505050565b6000806000606084860312156200063f57600080fd5b83516001600160401b03808211156200065757600080fd5b62000665878388016200057a565b945060208601519150808211156200067c57600080fd5b506200068b868287016200057a565b925050604084015190509250925092565b600181811c90821680620006b157607f821691505b602082108103620006d257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200055f57600081815260208120601f850160051c81016020861015620007015750805b601f850160051c820191505b8181101562000722578281556001016200070d565b505050505050565b81516001600160401b0381111562000746576200074662000564565b6200075e816200075784546200069c565b84620006d8565b602080601f8311600181146200079657600084156200077d5750858301515b600019600386901b1c1916600185901b17855562000722565b600085815260208120601f198616915b82811015620007c757888601518255948401946001909101908401620007a6565b5085821015620007e65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200080957600080fd5b81516001600160a01b03811681146200082157600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000858576200085862000828565b92915050565b8082018082111562000858576200085862000828565b6120f880620008846000396000f3fe6080604052600436106101b95760003560e01c80637571336a116100eb578063aacebbe31161008f578063dd62ed3e11610061578063dd62ed3e14610512578063eb01542214610532578063ee5c02a214610568578063f2fde38b1461058857005b8063aacebbe314610492578063c0246668146104b2578063d257b34f146104d2578063d269c037146104f257005b806395d89b41116100c857806395d89b411461041d5780639a7a23d614610432578063a457c2d714610452578063a9059cbb1461047257005b80637571336a146103a9578063876f9989146103c95780638da5cb5b146103ff57005b8063313ce5671161015d57806349bd5a5e1161012f57806349bd5a5e146103345780636fdf2f1f1461035457806370a0823114610374578063715018a61461039457005b8063313ce567146102c357806339509351146102df5780633ccfd60b146102ff57806341aea9de1461031457005b806317ee69951161019657806317ee69951461025557806318160ddd1461026f5780631e4f64711461028e57806323b872dd146102a357005b806306fdde03146101c2578063095ea7b3146101ed5780631694505e1461021d57005b366101c057005b005b3480156101ce57600080fd5b506101d76105a8565b6040516101e49190611cec565b60405180910390f35b3480156101f957600080fd5b5061020d610208366004611d4f565b61063a565b60405190151581526020016101e4565b34801561022957600080fd5b5060065461023d906001600160a01b031681565b6040516001600160a01b0390911681526020016101e4565b34801561026157600080fd5b5060155461020d9060ff1681565b34801561027b57600080fd5b506002545b6040519081526020016101e4565b34801561029a57600080fd5b506101c0610654565b3480156102af57600080fd5b5061020d6102be366004611d7b565b6106b9565b3480156102cf57600080fd5b50604051601281526020016101e4565b3480156102eb57600080fd5b5061020d6102fa366004611d4f565b6106dd565b34801561030b57600080fd5b506101c06106ff565b34801561032057600080fd5b506101c061032f366004611dd1565b6107d5565b34801561034057600080fd5b5060075461023d906001600160a01b031681565b34801561036057600080fd5b506101c061036f366004611dec565b6107f0565b34801561038057600080fd5b5061028061038f366004611e18565b610806565b3480156103a057600080fd5b506101c0610821565b3480156103b557600080fd5b506101c06103c4366004611e35565b610833565b3480156103d557600080fd5b5061023d6103e4366004611e6a565b600e602052600090815260409020546001600160a01b031681565b34801561040b57600080fd5b506005546001600160a01b031661023d565b34801561042957600080fd5b506101d7610866565b34801561043e57600080fd5b506101c061044d366004611e35565b610875565b34801561045e57600080fd5b5061020d61046d366004611d4f565b6108a8565b34801561047e57600080fd5b5061020d61048d366004611d4f565b610923565b34801561049e57600080fd5b506101c06104ad366004611e18565b610931565b3480156104be57600080fd5b506101c06104cd366004611e35565b61095b565b3480156104de57600080fd5b506101c06104ed366004611e6a565b61098e565b3480156104fe57600080fd5b506101c061050d366004611e35565b61099b565b34801561051e57600080fd5b5061028061052d366004611e83565b6109ce565b34801561053e57600080fd5b5061023d61054d366004611e6a565b600f602052600090815260409020546001600160a01b031681565b34801561057457600080fd5b506101c0610583366004611dd1565b6109f9565b34801561059457600080fd5b506101c06105a3366004611e18565b610a14565b6060600380546105b790611ebc565b80601f01602080910402602001604051908101604052809291908181526020018280546105e390611ebc565b80156106305780601f1061060557610100808354040283529160200191610630565b820191906000526020600020905b81548152906001019060200180831161061357829003601f168201915b5050505050905090565b600033610648818585610a8a565b60019150505b92915050565b3373ee0c767a8a376c91a8ec3bca3e2cb2c7c06ca912146106af5760405162461bcd60e51b815260206004820152601060248201526f2737ba1020b63637bbb2b2102ab9b2b960811b60448201526064015b60405180910390fd5b6106b7610baf565b565b6000336106c7858285610c2f565b6106d2858585610ca9565b506001949350505050565b6000336106488185856106f083836109ce565b6106fa9190611f0c565b610a8a565b3373ee0c767a8a376c91a8ec3bca3e2cb2c7c06ca912146107555760405162461bcd60e51b815260206004820152601060248201526f2737ba1020b63637bbb2b2102ab9b2b960811b60448201526064016106a6565b600061076030610806565b905061076c30826116d0565b61078a73ee0c767a8a376c91a8ec3bca3e2cb2c7c06ca912826117fa565b47156107d25760405173ee0c767a8a376c91a8ec3bca3e2cb2c7c06ca912904780156108fc02916000818181858888f193505050501580156107d0573d6000803e3d6000fd5b505b50565b6107dd6118ba565b600b805460ff1916911515919091179055565b6107f86118ba565b601292909255601355601455565b6001600160a01b031660009081526020819052604090205490565b6108296118ba565b6106b76000611914565b61083b6118ba565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6060600480546105b790611ebc565b61087d6118ba565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b600033816108b682866109ce565b9050838110156109165760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106a6565b6106d28286868403610a8a565b600033610648818585610ca9565b6109396118ba565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6109636118ba565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6109966118ba565b600955565b6109a36118ba565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610a016118ba565b6015805460ff1916911515919091179055565b610a1c6118ba565b6001600160a01b038116610a815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a6565b6107d281611914565b6001600160a01b038316610aec5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106a6565b6001600160a01b038216610b4d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106a6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600d805460ff191660011790556000610bc730610806565b905060008111610c195760405162461bcd60e51b815260206004820152601c60248201527f6e6f20656e6f75676820746f6b656e7320696e20636f6e74726163740000000060448201526064016106a6565b610c2281611966565b50600d805460ff19169055565b6000610c3b84846109ce565b90506000198114610ca35781811015610c965760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106a6565b610ca38484848403610a8a565b50505050565b80610cb384610806565b1015610d0d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a20796f7520646f6e2774206861766520656e6f75676820746f6b604482015262656e7360e81b60648201526084016106a6565b6001600160a01b03831660009081526019602052604090205460ff16158015610d4f57506001600160a01b03821660009081526019602052604090205460ff16155b610dc15760405162461bcd60e51b815260206004820152603b60248201527f596f752061726520626c61636b6c69737420757365722c20736f20796f75206360448201527f616e277420646f20616e797468696e67207769746820746f6b656e000000000060648201526084016106a6565b600b5460009060ff1615610eb3576001600160a01b03841660009081526017602052604090205460ff16158015610e3457506001600160a01b03841660009081526018602052604090205460ff161580610e3457506001600160a01b03831660009081526017602052604090205460ff16155b15610eb357600a5482610e4685610806565b610e509190611f0c565b1115610eb35760405162461bcd60e51b815260206004820152602c60248201527f45524332303a7472616e7366657220616d6f756e74206578636565647320746860448201526b329036b0bc2bb0b63632ba1760a11b60648201526084016106a6565b60155460ff168015610ec85750600d5460ff16155b156114315762015180610e104760006007610ee38542611f35565b610eee906004611f0c565b610ef89190611f49565b905060006018610f088542611f35565b610f129190611f49565b9050670de0b6b3a76400008310158015610f2d575060125482145b8015610f3a575060135481145b8015610f4f575060155462010000900460ff16155b8015610f5d57506000601054115b156110cd576000600e6000610f73601054611b10565b81526020810191909152604001600020546001600160a01b031690506103e8610f9b60025490565b610fa6906019611f5d565b610fb09190611f35565b88610fba8b610806565b610fc49190611f0c565b111561101f576001600160a01b0381166108fc6002610feb6706f05b59d3b2000088611f74565b610ff59190611f35565b6040518115909202916000818181858888f1935050505015801561101d573d6000803e3d6000fd5b505b6008546001600160a01b03166108fc60026110426706f05b59d3b2000088611f74565b61104c9190611f35565b6040518115909202916000818181858888f19350505050158015611074573d6000803e3d6000fd5b506015805462ff000019166201000017905560006010556040516001600160a01b0382168152600197507f0e9b26a1dad5c631151a69c1c58ac6011cfb8a9a23835edba9e748c0434947ac9060200160405180910390a1505b601254821480156110f75750601860135460016110ea9190611f0c565b6110f49190611f49565b81145b15611109576015805462ff0000191690555b60145481148061113257506018601454600c6111259190611f0c565b61112f9190611f49565b81145b15611143576015805461ff00191690555b6706f05b59d3b2000083101580156111975750601860145460016111679190611f0c565b6111719190611f49565b81148061119757506018601454600d61118a9190611f0c565b6111949190611f49565b81145b80156111ab5750601554610100900460ff16155b80156111b957506000601154115b156112985760008060036011546111d09190611f74565b106111e95760036011546111e49190611f74565b6111ec565b60005b6011549091505b8181111561127d576000600f600061120a84611b10565b81526020810191909152604001600020546001600160a01b03169050806108fc611240606461123a8a600a611b29565b90611b3c565b6040518115909202916000818181858888f19350505050158015611268573d6000803e3d6000fd5b5050808061127590611f87565b9150506111f3565b50506015805461ff0019166101001790556000601155600195505b6001600160a01b03891660009081526018602052604090205460ff1680156112ce57506005546001600160a01b03898116911614155b80156112e357506001600160a01b0388163014155b1561142b5760155462010000900460ff1661138a57600160005b601054811015611343576000818152600e60205260409020546001600160a01b03808c169116036113315760009150611343565b8061133b81611f9e565b9150506112fd565b50801561138857601080546000908152600e6020526040812080546001600160a01b0319166001600160a01b038d161790558154919061138283611f9e565b91905055505b505b601554610100900460ff1661142b57600160005b6011548110156113e4576000818152600f60205260409020546001600160a01b03808c169116036113d257600091506113e4565b806113dc81611f9e565b91505061139e565b50801561142957601180546000908152600f6020526040812080546001600160a01b0319166001600160a01b038d161790558154919061142383611f9e565b91905055505b505b50505050505b6001600160a01b03841660009081526016602052604090205460ff1615801561147357506001600160a01b03831660009081526016602052604090205460ff16155b80156114825750600d5460ff16155b80156114c857506001600160a01b03841660009081526018602052604090205460ff16806114c857506001600160a01b03831660009081526018602052604090205460ff165b80156114d2575080155b1561151a57600c541561151a5760006114fb606461123a600c5486611b2990919063ffffffff16565b9050611508853083611b48565b6115128184611f74565b925060019150505b611525848484611b48565b6001600160a01b03841660009081526016602052604090205460ff1615801561156757506001600160a01b03831660009081526016602052604090205460ff16155b80156115765750600d5460ff16155b801561159b57506001600160a01b03841660009081526018602052604090205460ff16155b80156115c057506001600160a01b03831660009081526018602052604090205460ff16155b15610ca35760006115d030610806565b6007549091506001600160a01b031681158015906115f657506001600160a01b03811615155b156116c857600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561163c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116609190611fce565b506001600160701b031691506001600160701b031691506000818311156116965761168f8361123a8785611b29565b90506116a7565b6116a48261123a8786611b29565b90505b851580156116b757506009548110155b156116c4576116c4610baf565b5050505b505050505050565b6001600160a01b0382166117305760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016106a6565b6001600160a01b038216600090815260208190526040902054818110156117a45760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016106a6565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610ba2565b6001600160a01b0382166118505760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106a6565b80600260008282546118629190611f0c565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36107d0565b6005546001600160a01b031633146106b75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a6565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60408051600280825260608201835247926000929190602083019080368337019050509050308160008151811061199f5761199f61201e565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1c9190612034565b81600181518110611a2f57611a2f61201e565b6001600160a01b039283166020918202929092010152600654611a559130911685610a8a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a8e908690600090869030904290600401612051565b600060405180830381600087803b158015611aa857600080fd5b505af1158015611abc573d6000803e3d6000fd5b5050505060008247611ace9190611f74565b60408051868152602081018390529192507f92805c6bd457c90e23c41dfd4b6477aee9e65e62b32b677ae3df2fcefe32b7f0910160405180910390a150505050565b600081611b1e600143611f74565b61064e919040611f49565b6000611b358284611f5d565b9392505050565b6000611b358284611f35565b6001600160a01b038316611bac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106a6565b6001600160a01b038216611c0e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106a6565b6001600160a01b03831660009081526020819052604090205481811015611c865760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106a6565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ca3565b600060208083528351808285015260005b81811015611d1957858101830151858201604001528201611cfd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107d257600080fd5b60008060408385031215611d6257600080fd5b8235611d6d81611d3a565b946020939093013593505050565b600080600060608486031215611d9057600080fd5b8335611d9b81611d3a565b92506020840135611dab81611d3a565b929592945050506040919091013590565b80358015158114611dcc57600080fd5b919050565b600060208284031215611de357600080fd5b611b3582611dbc565b600080600060608486031215611e0157600080fd5b505081359360208301359350604090920135919050565b600060208284031215611e2a57600080fd5b8135611b3581611d3a565b60008060408385031215611e4857600080fd5b8235611e5381611d3a565b9150611e6160208401611dbc565b90509250929050565b600060208284031215611e7c57600080fd5b5035919050565b60008060408385031215611e9657600080fd5b8235611ea181611d3a565b91506020830135611eb181611d3a565b809150509250929050565b600181811c90821680611ed057607f821691505b602082108103611ef057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561064e5761064e611ef6565b634e487b7160e01b600052601260045260246000fd5b600082611f4457611f44611f1f565b500490565b600082611f5857611f58611f1f565b500690565b808202811582820484141761064e5761064e611ef6565b8181038181111561064e5761064e611ef6565b600081611f9657611f96611ef6565b506000190190565b600060018201611fb057611fb0611ef6565b5060010190565b80516001600160701b0381168114611dcc57600080fd5b600080600060608486031215611fe357600080fd5b611fec84611fb7565b9250611ffa60208501611fb7565b9150604084015163ffffffff8116811461201357600080fd5b809150509250925092565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561204657600080fd5b8151611b3581611d3a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120a15784516001600160a01b03168352938301939183019160010161207c565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209a4e4f786d766094f365b4512dd18ef672d3ee1f86d25a82adab0e93f0947aa564736f6c63430008130033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000000000000a467269747a20436f696e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005467269747a000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101b95760003560e01c80637571336a116100eb578063aacebbe31161008f578063dd62ed3e11610061578063dd62ed3e14610512578063eb01542214610532578063ee5c02a214610568578063f2fde38b1461058857005b8063aacebbe314610492578063c0246668146104b2578063d257b34f146104d2578063d269c037146104f257005b806395d89b41116100c857806395d89b411461041d5780639a7a23d614610432578063a457c2d714610452578063a9059cbb1461047257005b80637571336a146103a9578063876f9989146103c95780638da5cb5b146103ff57005b8063313ce5671161015d57806349bd5a5e1161012f57806349bd5a5e146103345780636fdf2f1f1461035457806370a0823114610374578063715018a61461039457005b8063313ce567146102c357806339509351146102df5780633ccfd60b146102ff57806341aea9de1461031457005b806317ee69951161019657806317ee69951461025557806318160ddd1461026f5780631e4f64711461028e57806323b872dd146102a357005b806306fdde03146101c2578063095ea7b3146101ed5780631694505e1461021d57005b366101c057005b005b3480156101ce57600080fd5b506101d76105a8565b6040516101e49190611cec565b60405180910390f35b3480156101f957600080fd5b5061020d610208366004611d4f565b61063a565b60405190151581526020016101e4565b34801561022957600080fd5b5060065461023d906001600160a01b031681565b6040516001600160a01b0390911681526020016101e4565b34801561026157600080fd5b5060155461020d9060ff1681565b34801561027b57600080fd5b506002545b6040519081526020016101e4565b34801561029a57600080fd5b506101c0610654565b3480156102af57600080fd5b5061020d6102be366004611d7b565b6106b9565b3480156102cf57600080fd5b50604051601281526020016101e4565b3480156102eb57600080fd5b5061020d6102fa366004611d4f565b6106dd565b34801561030b57600080fd5b506101c06106ff565b34801561032057600080fd5b506101c061032f366004611dd1565b6107d5565b34801561034057600080fd5b5060075461023d906001600160a01b031681565b34801561036057600080fd5b506101c061036f366004611dec565b6107f0565b34801561038057600080fd5b5061028061038f366004611e18565b610806565b3480156103a057600080fd5b506101c0610821565b3480156103b557600080fd5b506101c06103c4366004611e35565b610833565b3480156103d557600080fd5b5061023d6103e4366004611e6a565b600e602052600090815260409020546001600160a01b031681565b34801561040b57600080fd5b506005546001600160a01b031661023d565b34801561042957600080fd5b506101d7610866565b34801561043e57600080fd5b506101c061044d366004611e35565b610875565b34801561045e57600080fd5b5061020d61046d366004611d4f565b6108a8565b34801561047e57600080fd5b5061020d61048d366004611d4f565b610923565b34801561049e57600080fd5b506101c06104ad366004611e18565b610931565b3480156104be57600080fd5b506101c06104cd366004611e35565b61095b565b3480156104de57600080fd5b506101c06104ed366004611e6a565b61098e565b3480156104fe57600080fd5b506101c061050d366004611e35565b61099b565b34801561051e57600080fd5b5061028061052d366004611e83565b6109ce565b34801561053e57600080fd5b5061023d61054d366004611e6a565b600f602052600090815260409020546001600160a01b031681565b34801561057457600080fd5b506101c0610583366004611dd1565b6109f9565b34801561059457600080fd5b506101c06105a3366004611e18565b610a14565b6060600380546105b790611ebc565b80601f01602080910402602001604051908101604052809291908181526020018280546105e390611ebc565b80156106305780601f1061060557610100808354040283529160200191610630565b820191906000526020600020905b81548152906001019060200180831161061357829003601f168201915b5050505050905090565b600033610648818585610a8a565b60019150505b92915050565b3373ee0c767a8a376c91a8ec3bca3e2cb2c7c06ca912146106af5760405162461bcd60e51b815260206004820152601060248201526f2737ba1020b63637bbb2b2102ab9b2b960811b60448201526064015b60405180910390fd5b6106b7610baf565b565b6000336106c7858285610c2f565b6106d2858585610ca9565b506001949350505050565b6000336106488185856106f083836109ce565b6106fa9190611f0c565b610a8a565b3373ee0c767a8a376c91a8ec3bca3e2cb2c7c06ca912146107555760405162461bcd60e51b815260206004820152601060248201526f2737ba1020b63637bbb2b2102ab9b2b960811b60448201526064016106a6565b600061076030610806565b905061076c30826116d0565b61078a73ee0c767a8a376c91a8ec3bca3e2cb2c7c06ca912826117fa565b47156107d25760405173ee0c767a8a376c91a8ec3bca3e2cb2c7c06ca912904780156108fc02916000818181858888f193505050501580156107d0573d6000803e3d6000fd5b505b50565b6107dd6118ba565b600b805460ff1916911515919091179055565b6107f86118ba565b601292909255601355601455565b6001600160a01b031660009081526020819052604090205490565b6108296118ba565b6106b76000611914565b61083b6118ba565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6060600480546105b790611ebc565b61087d6118ba565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b600033816108b682866109ce565b9050838110156109165760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106a6565b6106d28286868403610a8a565b600033610648818585610ca9565b6109396118ba565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6109636118ba565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6109966118ba565b600955565b6109a36118ba565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610a016118ba565b6015805460ff1916911515919091179055565b610a1c6118ba565b6001600160a01b038116610a815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a6565b6107d281611914565b6001600160a01b038316610aec5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106a6565b6001600160a01b038216610b4d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106a6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600d805460ff191660011790556000610bc730610806565b905060008111610c195760405162461bcd60e51b815260206004820152601c60248201527f6e6f20656e6f75676820746f6b656e7320696e20636f6e74726163740000000060448201526064016106a6565b610c2281611966565b50600d805460ff19169055565b6000610c3b84846109ce565b90506000198114610ca35781811015610c965760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106a6565b610ca38484848403610a8a565b50505050565b80610cb384610806565b1015610d0d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a20796f7520646f6e2774206861766520656e6f75676820746f6b604482015262656e7360e81b60648201526084016106a6565b6001600160a01b03831660009081526019602052604090205460ff16158015610d4f57506001600160a01b03821660009081526019602052604090205460ff16155b610dc15760405162461bcd60e51b815260206004820152603b60248201527f596f752061726520626c61636b6c69737420757365722c20736f20796f75206360448201527f616e277420646f20616e797468696e67207769746820746f6b656e000000000060648201526084016106a6565b600b5460009060ff1615610eb3576001600160a01b03841660009081526017602052604090205460ff16158015610e3457506001600160a01b03841660009081526018602052604090205460ff161580610e3457506001600160a01b03831660009081526017602052604090205460ff16155b15610eb357600a5482610e4685610806565b610e509190611f0c565b1115610eb35760405162461bcd60e51b815260206004820152602c60248201527f45524332303a7472616e7366657220616d6f756e74206578636565647320746860448201526b329036b0bc2bb0b63632ba1760a11b60648201526084016106a6565b60155460ff168015610ec85750600d5460ff16155b156114315762015180610e104760006007610ee38542611f35565b610eee906004611f0c565b610ef89190611f49565b905060006018610f088542611f35565b610f129190611f49565b9050670de0b6b3a76400008310158015610f2d575060125482145b8015610f3a575060135481145b8015610f4f575060155462010000900460ff16155b8015610f5d57506000601054115b156110cd576000600e6000610f73601054611b10565b81526020810191909152604001600020546001600160a01b031690506103e8610f9b60025490565b610fa6906019611f5d565b610fb09190611f35565b88610fba8b610806565b610fc49190611f0c565b111561101f576001600160a01b0381166108fc6002610feb6706f05b59d3b2000088611f74565b610ff59190611f35565b6040518115909202916000818181858888f1935050505015801561101d573d6000803e3d6000fd5b505b6008546001600160a01b03166108fc60026110426706f05b59d3b2000088611f74565b61104c9190611f35565b6040518115909202916000818181858888f19350505050158015611074573d6000803e3d6000fd5b506015805462ff000019166201000017905560006010556040516001600160a01b0382168152600197507f0e9b26a1dad5c631151a69c1c58ac6011cfb8a9a23835edba9e748c0434947ac9060200160405180910390a1505b601254821480156110f75750601860135460016110ea9190611f0c565b6110f49190611f49565b81145b15611109576015805462ff0000191690555b60145481148061113257506018601454600c6111259190611f0c565b61112f9190611f49565b81145b15611143576015805461ff00191690555b6706f05b59d3b2000083101580156111975750601860145460016111679190611f0c565b6111719190611f49565b81148061119757506018601454600d61118a9190611f0c565b6111949190611f49565b81145b80156111ab5750601554610100900460ff16155b80156111b957506000601154115b156112985760008060036011546111d09190611f74565b106111e95760036011546111e49190611f74565b6111ec565b60005b6011549091505b8181111561127d576000600f600061120a84611b10565b81526020810191909152604001600020546001600160a01b03169050806108fc611240606461123a8a600a611b29565b90611b3c565b6040518115909202916000818181858888f19350505050158015611268573d6000803e3d6000fd5b5050808061127590611f87565b9150506111f3565b50506015805461ff0019166101001790556000601155600195505b6001600160a01b03891660009081526018602052604090205460ff1680156112ce57506005546001600160a01b03898116911614155b80156112e357506001600160a01b0388163014155b1561142b5760155462010000900460ff1661138a57600160005b601054811015611343576000818152600e60205260409020546001600160a01b03808c169116036113315760009150611343565b8061133b81611f9e565b9150506112fd565b50801561138857601080546000908152600e6020526040812080546001600160a01b0319166001600160a01b038d161790558154919061138283611f9e565b91905055505b505b601554610100900460ff1661142b57600160005b6011548110156113e4576000818152600f60205260409020546001600160a01b03808c169116036113d257600091506113e4565b806113dc81611f9e565b91505061139e565b50801561142957601180546000908152600f6020526040812080546001600160a01b0319166001600160a01b038d161790558154919061142383611f9e565b91905055505b505b50505050505b6001600160a01b03841660009081526016602052604090205460ff1615801561147357506001600160a01b03831660009081526016602052604090205460ff16155b80156114825750600d5460ff16155b80156114c857506001600160a01b03841660009081526018602052604090205460ff16806114c857506001600160a01b03831660009081526018602052604090205460ff165b80156114d2575080155b1561151a57600c541561151a5760006114fb606461123a600c5486611b2990919063ffffffff16565b9050611508853083611b48565b6115128184611f74565b925060019150505b611525848484611b48565b6001600160a01b03841660009081526016602052604090205460ff1615801561156757506001600160a01b03831660009081526016602052604090205460ff16155b80156115765750600d5460ff16155b801561159b57506001600160a01b03841660009081526018602052604090205460ff16155b80156115c057506001600160a01b03831660009081526018602052604090205460ff16155b15610ca35760006115d030610806565b6007549091506001600160a01b031681158015906115f657506001600160a01b03811615155b156116c857600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561163c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116609190611fce565b506001600160701b031691506001600160701b031691506000818311156116965761168f8361123a8785611b29565b90506116a7565b6116a48261123a8786611b29565b90505b851580156116b757506009548110155b156116c4576116c4610baf565b5050505b505050505050565b6001600160a01b0382166117305760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016106a6565b6001600160a01b038216600090815260208190526040902054818110156117a45760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016106a6565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610ba2565b6001600160a01b0382166118505760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106a6565b80600260008282546118629190611f0c565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36107d0565b6005546001600160a01b031633146106b75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a6565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60408051600280825260608201835247926000929190602083019080368337019050509050308160008151811061199f5761199f61201e565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1c9190612034565b81600181518110611a2f57611a2f61201e565b6001600160a01b039283166020918202929092010152600654611a559130911685610a8a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a8e908690600090869030904290600401612051565b600060405180830381600087803b158015611aa857600080fd5b505af1158015611abc573d6000803e3d6000fd5b5050505060008247611ace9190611f74565b60408051868152602081018390529192507f92805c6bd457c90e23c41dfd4b6477aee9e65e62b32b677ae3df2fcefe32b7f0910160405180910390a150505050565b600081611b1e600143611f74565b61064e919040611f49565b6000611b358284611f5d565b9392505050565b6000611b358284611f35565b6001600160a01b038316611bac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106a6565b6001600160a01b038216611c0e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106a6565b6001600160a01b03831660009081526020819052604090205481811015611c865760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106a6565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ca3565b600060208083528351808285015260005b81811015611d1957858101830151858201604001528201611cfd565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107d257600080fd5b60008060408385031215611d6257600080fd5b8235611d6d81611d3a565b946020939093013593505050565b600080600060608486031215611d9057600080fd5b8335611d9b81611d3a565b92506020840135611dab81611d3a565b929592945050506040919091013590565b80358015158114611dcc57600080fd5b919050565b600060208284031215611de357600080fd5b611b3582611dbc565b600080600060608486031215611e0157600080fd5b505081359360208301359350604090920135919050565b600060208284031215611e2a57600080fd5b8135611b3581611d3a565b60008060408385031215611e4857600080fd5b8235611e5381611d3a565b9150611e6160208401611dbc565b90509250929050565b600060208284031215611e7c57600080fd5b5035919050565b60008060408385031215611e9657600080fd5b8235611ea181611d3a565b91506020830135611eb181611d3a565b809150509250929050565b600181811c90821680611ed057607f821691505b602082108103611ef057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561064e5761064e611ef6565b634e487b7160e01b600052601260045260246000fd5b600082611f4457611f44611f1f565b500490565b600082611f5857611f58611f1f565b500690565b808202811582820484141761064e5761064e611ef6565b8181038181111561064e5761064e611ef6565b600081611f9657611f96611ef6565b506000190190565b600060018201611fb057611fb0611ef6565b5060010190565b80516001600160701b0381168114611dcc57600080fd5b600080600060608486031215611fe357600080fd5b611fec84611fb7565b9250611ffa60208501611fb7565b9150604084015163ffffffff8116811461201357600080fd5b809150509250925092565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561204657600080fd5b8151611b3581611d3a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120a15784516001600160a01b03168352938301939183019160010161207c565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209a4e4f786d766094f365b4512dd18ef672d3ee1f86d25a82adab0e93f0947aa564736f6c63430008130033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000000000000a467269747a20436f696e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005467269747a000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): Fritz Coin
Arg [1] : symbol (string): Fritz
Arg [2] : totalAmount (uint256): 1000000000000000

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000038d7ea4c68000
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [4] : 467269747a20436f696e00000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [6] : 467269747a000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

31401:12590:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12445:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14805:201;;;;;;;;;;-1:-1:-1;14805:201:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;14805:201:0;1023:187:1;31481:115:0;;;;;;;;;;-1:-1:-1;31481:115:0;;;;-1:-1:-1;;;;;31481:115:0;;;;;;-1:-1:-1;;;;;1406:32:1;;;1388:51;;1376:2;1361:18;31481:115:0;1215:230:1;32332:32:0;;;;;;;;;;-1:-1:-1;32332:32:0;;;;;;;;13574:108;;;;;;;;;;-1:-1:-1;13662:12:0;;13574:108;;;1596:25:1;;;1584:2;1569:18;13574:108:0;1450:177:1;42943:184:0;;;;;;;;;;;;;:::i;15586:261::-;;;;;;;;;;-1:-1:-1;15586:261:0;;;;;:::i;:::-;;:::i;13416:93::-;;;;;;;;;;-1:-1:-1;13416:93:0;;13499:2;2235:36:1;;2223:2;2208:18;13416:93:0;2093:184:1;16256:238:0;;;;;;;;;;-1:-1:-1;16256:238:0;;;;;:::i;:::-;;:::i;43135:491::-;;;;;;;;;;;;;:::i;34465:96::-;;;;;;;;;;-1:-1:-1;34465:96:0;;;;;:::i;:::-;;:::i;31603:28::-;;;;;;;;;;-1:-1:-1;31603:28:0;;;;-1:-1:-1;;;;;31603:28:0;;;35572:238;;;;;;;;;;-1:-1:-1;35572:238:0;;;;;:::i;:::-;;:::i;13745:127::-;;;;;;;;;;-1:-1:-1;13745:127:0;;;;;:::i;:::-;;:::i;7947:103::-;;;;;;;;;;;;;:::i;34839:179::-;;;;;;;;;;-1:-1:-1;34839:179:0;;;;;:::i;:::-;;:::i;32017:47::-;;;;;;;;;;-1:-1:-1;32017:47:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;32017:47:0;;;7306:87;;;;;;;;;;-1:-1:-1;7379:6:0;;-1:-1:-1;;;;;7379:6:0;7306:87;;12664:104;;;;;;;;;;;;;:::i;35026:165::-;;;;;;;;;;-1:-1:-1;35026:165:0;;;;;:::i;:::-;;:::i;16997:436::-;;;;;;;;;;-1:-1:-1;16997:436:0;;;;;:::i;:::-;;:::i;14078:193::-;;;;;;;;;;-1:-1:-1;14078:193:0;;;;;:::i;:::-;;:::i;35199:149::-;;;;;;;;;;-1:-1:-1;35199:149:0;;;;;:::i;:::-;;:::i;34672:159::-;;;;;;;;;;-1:-1:-1;34672:159:0;;;;;:::i;:::-;;:::i;35444:120::-;;;;;;;;;;-1:-1:-1;35444:120:0;;;;;:::i;:::-;;:::i;35818:110::-;;;;;;;;;;-1:-1:-1;35818:110:0;;;;;:::i;:::-;;:::i;14334:151::-;;;;;;;;;;-1:-1:-1;14334:151:0;;;;;:::i;:::-;;:::i;32071:46::-;;;;;;;;;;-1:-1:-1;32071:46:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;32071:46:0;;;34569:95;;;;;;;;;;-1:-1:-1;34569:95:0;;;;;:::i;:::-;;:::i;8205:201::-;;;;;;;;;;-1:-1:-1;8205:201:0;;;;;:::i;:::-;;:::i;12445:100::-;12499:13;12532:5;12525:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12445:100;:::o;14805:201::-;14888:4;6600:10;14944:32;6600:10;14960:7;14969:6;14944:8;:32::i;:::-;14994:4;14987:11;;;14805:201;;;;;:::o;42943:184::-;6600:10;43027:42;43003:67;42995:96;;;;-1:-1:-1;;;42995:96:0;;4898:2:1;42995:96:0;;;4880:21:1;4937:2;4917:18;;;4910:30;-1:-1:-1;;;4956:18:1;;;4949:46;5012:18;;42995:96:0;;;;;;;;;43102:10;:8;:10::i;:::-;42943:184::o;15586:261::-;15683:4;6600:10;15741:38;15757:4;6600:10;15772:6;15741:15;:38::i;:::-;15790:27;15800:4;15806:2;15810:6;15790:9;:27::i;:::-;-1:-1:-1;15835:4:0;;15586:261;-1:-1:-1;;;;15586:261:0:o;16256:238::-;16344:4;6600:10;16400:64;6600:10;16416:7;16453:10;16425:25;6600:10;16416:7;16425:9;:25::i;:::-;:38;;;;:::i;:::-;16400:8;:64::i;43135:491::-;6600:10;43207:42;43183:67;43175:96;;;;-1:-1:-1;;;43175:96:0;;4898:2:1;43175:96:0;;;4880:21:1;4937:2;4917:18;;;4910:30;-1:-1:-1;;;4956:18:1;;;4949:46;5012:18;;43175:96:0;4696:340:1;43175:96:0;43282:22;43307:24;43325:4;43307:9;:24::i;:::-;43282:49;;43348:36;43362:4;43369:14;43348:5;:36::i;:::-;43395:74;43409:42;43454:14;43395:5;:74::i;:::-;43486:21;:25;43482:136;;43526:92;;43542:42;;43596:21;43526:92;;;;;;;;;43596:21;43542:42;43526:92;;;;;;;;;;;;;;;;;;;;;43482:136;43164:462;43135:491::o;34465:96::-;7192:13;:11;:13::i;:::-;34532:14:::1;:21:::0;;-1:-1:-1;;34532:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34465:96::o;35572:238::-;7192:13;:11;:13::i;:::-;35697:15:::1;:27:::0;;;;35735:16:::1;:29:::0;35775:15:::1;:27:::0;35572:238::o;13745:127::-;-1:-1:-1;;;;;13846:18:0;13819:7;13846:18;;;;;;;;;;;;13745:127::o;7947:103::-;7192:13;:11;:13::i;:::-;8012:30:::1;8039:1;8012:18;:30::i;34839:179::-:0;7192:13;:11;:13::i;:::-;-1:-1:-1;;;;;34959:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;-1:-1:-1;;34959:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34839:179::o;12664:104::-;12720:13;12753:7;12746:14;;;;;:::i;35026:165::-;7192:13;:11;:13::i;:::-;-1:-1:-1;;;;;35144:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;35144:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35026:165::o;16997:436::-;17090:4;6600:10;17090:4;17173:25;6600:10;17190:7;17173:9;:25::i;:::-;17146:52;;17237:15;17217:16;:35;;17209:85;;;;-1:-1:-1;;;17209:85:0;;5505:2:1;17209:85:0;;;5487:21:1;5544:2;5524:18;;;5517:30;5583:34;5563:18;;;5556:62;-1:-1:-1;;;5634:18:1;;;5627:35;5679:19;;17209:85:0;5303:401:1;17209:85:0;17330:60;17339:5;17346:7;17374:15;17355:16;:34;17330:8;:60::i;14078:193::-;14157:4;6600:10;14213:28;6600:10;14230:2;14234:6;14213:9;:28::i;35199:149::-;7192:13;:11;:13::i;:::-;35304:15:::1;:36:::0;;-1:-1:-1;;;;;;35304:36:0::1;-1:-1:-1::0;;;;;35304:36:0;;;::::1;::::0;;;::::1;::::0;;35199:149::o;34672:159::-;7192:13;:11;:13::i;:::-;-1:-1:-1;;;;;34784:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;34784:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34672:159::o;35444:120::-;7192:13;:11;:13::i;:::-;35526:18:::1;:30:::0;35444:120::o;35818:110::-;7192:13;:11;:13::i;:::-;-1:-1:-1;;;;;35898:15:0;;;::::1;;::::0;;;:9:::1;:15;::::0;;;;:22;;-1:-1:-1;;35898:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35818:110::o;14334:151::-;-1:-1:-1;;;;;14450:18:0;;;14423:7;14450:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14334:151::o;34569:95::-;7192:13;:11;:13::i;:::-;34636::::1;:20:::0;;-1:-1:-1;;34636:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34569:95::o;8205:201::-;7192:13;:11;:13::i;:::-;-1:-1:-1;;;;;8294:22:0;::::1;8286:73;;;::::0;-1:-1:-1;;;8286:73:0;;5911:2:1;8286:73:0::1;::::0;::::1;5893:21:1::0;5950:2;5930:18;;;5923:30;5989:34;5969:18;;;5962:62;-1:-1:-1;;;6040:18:1;;;6033:36;6086:19;;8286:73:0::1;5709:402:1::0;8286:73:0::1;8370:28;8389:8;8370:18;:28::i;20990:346::-:0;-1:-1:-1;;;;;21092:19:0;;21084:68;;;;-1:-1:-1;;;21084:68:0;;6318:2:1;21084:68:0;;;6300:21:1;6357:2;6337:18;;;6330:30;6396:34;6376:18;;;6369:62;-1:-1:-1;;;6447:18:1;;;6440:34;6491:19;;21084:68:0;6116:400:1;21084:68:0;-1:-1:-1;;;;;21171:21:0;;21163:68;;;;-1:-1:-1;;;21163:68:0;;6723:2:1;21163:68:0;;;6705:21:1;6762:2;6742:18;;;6735:30;6801:34;6781:18;;;6774:62;-1:-1:-1;;;6852:18:1;;;6845:32;6894:19;;21163:68:0;6521:398:1;21163:68:0;-1:-1:-1;;;;;21244:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21296:32;;1596:25:1;;;21296:32:0;;1569:18:1;21296:32:0;;;;;;;;20990:346;;;:::o;43634:221::-;33297:8;:15;;-1:-1:-1;;33297:15:0;33308:4;33297:15;;;:8;43707:24:::1;43725:4;43707:9;:24::i;:::-;43681:50;;43768:1;43750:15;:19;43742:60;;;::::0;-1:-1:-1;;;43742:60:0;;7126:2:1;43742:60:0::1;::::0;::::1;7108:21:1::0;7165:2;7145:18;;;7138:30;7204;7184:18;;;7177:58;7252:18;;43742:60:0::1;6924:352:1::0;43742:60:0::1;43814:33;43831:15;43814:16;:33::i;:::-;-1:-1:-1::0;33335:8:0;:16;;-1:-1:-1;;33335:16:0;;;43634:221::o;21627:419::-;21728:24;21755:25;21765:5;21772:7;21755:9;:25::i;:::-;21728:52;;-1:-1:-1;;21795:16:0;:37;21791:248;;21877:6;21857:16;:26;;21849:68;;;;-1:-1:-1;;;21849:68:0;;7483:2:1;21849:68:0;;;7465:21:1;7522:2;7502:18;;;7495:30;7561:31;7541:18;;;7534:59;7610:18;;21849:68:0;7281:353:1;21849:68:0;21961:51;21970:5;21977:7;22005:6;21986:16;:25;21961:8;:51::i;:::-;21717:329;21627:419;;;:::o;35936:6145::-;36087:6;36068:15;36078:4;36068:9;:15::i;:::-;:25;;36060:73;;;;-1:-1:-1;;;36060:73:0;;7841:2:1;36060:73:0;;;7823:21:1;7880:2;7860:18;;;7853:30;7919:34;7899:18;;;7892:62;-1:-1:-1;;;7970:18:1;;;7963:33;8013:19;;36060:73:0;7639:399:1;36060:73:0;-1:-1:-1;;;;;36152:15:0;;;;;;:9;:15;;;;;;;;:24;;;:50;;-1:-1:-1;;;;;;36180:13:0;;;;;;:9;:13;;;;;;;;:22;36152:50;36144:122;;;;-1:-1:-1;;;36144:122:0;;8245:2:1;36144:122:0;;;8227:21:1;8284:2;8264:18;;;8257:30;8323:34;8303:18;;;8296:62;8394:29;8374:18;;;8367:57;8441:19;;36144:122:0;8043:423:1;36144:122:0;36342:14;;36277;;36342;;36338:426;;;-1:-1:-1;;;;;36396:37:0;;;;;;:31;:37;;;;;;;;36395:38;:154;;;;-1:-1:-1;;;;;;36456:31:0;;;;;;:25;:31;;;;;;;;36455:32;;:93;;-1:-1:-1;;;;;;36513:35:0;;;;;;:31;:35;;;;;;;;36512:36;36455:93;36373:380;;;36640:9;;36630:6;36614:13;36624:2;36614:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;36584:153;;;;-1:-1:-1;;;36584:153:0;;8673:2:1;36584:153:0;;;8655:21:1;8712:2;8692:18;;;8685:30;8751:34;8731:18;;;8724:62;-1:-1:-1;;;8802:18:1;;;8795:42;8854:19;;36584:153:0;8471:408:1;36584:153:0;36779:13;;;;:26;;;;-1:-1:-1;36797:8:0;;;;36796:9;36779:26;36776:3645;;;36856:5;36902:4;36945:21;36831:22;37132:1;37092:32;36856:5;37092:15;:32;:::i;:::-;:36;;37127:1;37092:36;:::i;:::-;37091:42;;;;:::i;:::-;37077:56;-1:-1:-1;37148:12:0;37201:2;37164:33;37182:15;37164;:33;:::i;:::-;37163:40;;;;:::i;:::-;37148:55;;37321:9;37306:11;:24;;:67;;;;;37358:15;;37351:3;:22;37306:67;:112;;;;;37402:16;;37394:4;:24;37306:112;:151;;;;-1:-1:-1;37440:17:0;;;;;;;37439:18;37306:151;:186;;;;;37491:1;37478:10;;:14;37306:186;37284:834;;;37528:20;37551:12;:32;37564:18;37571:10;;37564:6;:18::i;:::-;37551:32;;;;;;;;;;;-1:-1:-1;37551:32:0;;-1:-1:-1;;;;;37551:32:0;;-1:-1:-1;37653:4:0;37631:13;13662:12;;;13574:108;37631:13;:18;;37647:2;37631:18;:::i;:::-;37630:27;;;;:::i;:::-;37621:6;37605:13;37615:2;37605:9;:13::i;:::-;:22;;;;:::i;:::-;:52;37602:138;;;-1:-1:-1;;;;;37680:30:0;;:60;37738:1;37712:22;37726:8;37712:11;:22;:::i;:::-;37711:28;;;;:::i;:::-;37680:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37602:138;37837:15;;-1:-1:-1;;;;;37837:15:0;37829:63;37890:1;37864:22;37878:8;37864:11;:22;:::i;:::-;37863:28;;;;:::i;:::-;37829:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37958:17:0;:24;;-1:-1:-1;;37958:24:0;;;;;-1:-1:-1;38001:10:0;:14;38074:28;;-1:-1:-1;;;;;1406:32:1;;1388:51;;-1:-1:-1;;;38074:28:0;;1376:2:1;1361:18;38074:28:0;;;;;;;37509:609;37284:834;38143:15;;38136:3;:22;:61;;;;;38195:2;38171:16;;38190:1;38171:20;;;;:::i;:::-;38170:27;;;;:::i;:::-;38162:4;:35;38136:61;38132:92;;;38199:17;:25;;-1:-1:-1;;38199:25:0;;;38132:92;38310:15;;38302:4;:23;:62;;;;38362:2;38338:15;;38356:2;38338:20;;;;:::i;:::-;38337:27;;;;:::i;:::-;38329:4;:35;38302:62;38298:92;;;38366:16;:24;;-1:-1:-1;;38366:24:0;;;38298:92;38444:8;38429:11;:23;;:119;;;;;38506:2;38483:15;;38501:1;38483:19;;;;:::i;:::-;38482:26;;;;:::i;:::-;38474:4;:34;:73;;;;38545:2;38521:15;;38539:2;38521:20;;;;:::i;:::-;38520:27;;;;:::i;:::-;38512:4;:35;38474:73;38429:157;;;;-1:-1:-1;38570:16:0;;;;;;;38569:17;38429:157;:192;;;;;38620:1;38607:10;;:14;38429:192;38407:702;;;38657:8;38686:1;38682;38669:10;;:14;;;;:::i;:::-;:18;38668:41;;38708:1;38695:10;;:14;;;;:::i;:::-;38668:41;;;38691:1;38668:41;38741:10;;38657:52;;-1:-1:-1;38728:210:0;38758:3;38754:1;:7;38728:210;;;38792:19;38814:11;:22;38826:9;38833:1;38826:6;:9::i;:::-;38814:22;;;;;;;;;;;-1:-1:-1;38814:22:0;;-1:-1:-1;;;;;38814:22:0;;-1:-1:-1;38814:22:0;38859:59;38889:28;38913:3;38889:19;:11;38905:2;38889:15;:19::i;:::-;:23;;:28::i;:::-;38859:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38769:169;38763:4;;;;;:::i;:::-;;;;38728:210;;;-1:-1:-1;;39002:16:0;:23;;-1:-1:-1;;39002:23:0;;;;;;39044:10;:14;39021:4;;-1:-1:-1;38407:702:0;-1:-1:-1;;;;;39200:31:0;;;;;;:25;:31;;;;;;;;:65;;;;-1:-1:-1;7379:6:0;;-1:-1:-1;;;;;39252:13:0;;;7379:6;;39252:13;;39200:65;:105;;;;-1:-1:-1;;;;;;39286:19:0;;39300:4;39286:19;;39200:105;39178:1232;;;39382:17;;;;;;;39378:483;;39437:4;39424:10;39464:226;39488:10;;39484:1;:14;39464:226;;;39536:15;;;;:12;:15;;;;;;-1:-1:-1;;;;;39536:21:0;;;:15;;:21;39532:135;;39598:5;39590:13;;39634:5;;39532:135;39500:3;;;;:::i;:::-;;;;39464:226;;;;39716:5;39712:130;;;39763:10;;;39750:24;;;;:12;:24;;;;;:29;;-1:-1:-1;;;;;;39750:29:0;-1:-1:-1;;;;;39750:29:0;;;;;39806:12;;;39763:10;39806:12;;;:::i;:::-;;;;;;39712:130;39401:460;39378:483;39919:16;;;;;;;39915:480;;39973:4;39960:10;40000:225;40024:10;;40020:1;:14;40000:225;;;40072:14;;;;:11;:14;;;;;;-1:-1:-1;;;;;40072:20:0;;;:14;;:20;40068:134;;40133:5;40125:13;;40169:5;;40068:134;40036:3;;;;:::i;:::-;;;;40000:225;;;;40251:5;40247:129;;;40297:10;;;40285:23;;;;:11;:23;;;;;:28;;-1:-1:-1;;;;;;40285:28:0;-1:-1:-1;;;;;40285:28:0;;;;;40340:12;;;40297:10;40340:12;;;:::i;:::-;;;;;;40247:129;39937:458;39915:480;36816:3605;;;;;36776:3645;-1:-1:-1;;;;;40525:25:0;;;;;;:19;:25;;;;;;;;40524:26;:67;;;;-1:-1:-1;;;;;;40568:23:0;;;;;;:19;:23;;;;;;;;40567:24;40524:67;:93;;;;-1:-1:-1;40609:8:0;;;;40608:9;40524:93;:176;;;;-1:-1:-1;;;;;;40635:31:0;;;;;;:25;:31;;;;;;;;;:64;;-1:-1:-1;;;;;;40670:29:0;;;;;;:25;:29;;;;;;;;40635:64;40524:203;;;;;40718:9;40717:10;40524:203;40506:538;;;40794:9;;:13;40790:243;;40828:17;40848:30;40874:3;40848:21;40859:9;;40848:6;:10;;:21;;;;:::i;:30::-;40828:50;;40897:47;40913:4;40927;40934:9;40897:15;:47::i;:::-;40963:19;40973:9;40963:19;;:::i;:::-;;;41013:4;41001:16;;40809:224;40790:243;41056:33;41072:4;41078:2;41082:6;41056:15;:33::i;:::-;-1:-1:-1;;;;;41168:25:0;;;;;;:19;:25;;;;;;;;41167:26;:54;;;;-1:-1:-1;;;;;;41198:23:0;;;;;;:19;:23;;;;;;;;41197:24;41167:54;:67;;;;-1:-1:-1;41226:8:0;;;;41225:9;41167:67;:103;;;;-1:-1:-1;;;;;;41239:31:0;;;;;;:25;:31;;;;;;;;41238:32;41167:103;:137;;;;-1:-1:-1;;;;;;41275:29:0;;;;;;:25;:29;;;;;;;;41274:30;41167:137;41164:910;;;41330:22;41355:24;41373:4;41355:9;:24::i;:::-;41431:13;;41330:49;;-1:-1:-1;;;;;;41431:13:0;41477:18;;;;;:49;;-1:-1:-1;;;;;;41499:27:0;;;;41477:49;41474:589;;;41547:16;41565;41587:4;-1:-1:-1;;;;;41587:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41546:59;-1:-1:-1;;;;;41546:59:0;;;-1:-1:-1;;;;;41546:59:0;;;41624:20;41677:8;41666;:19;41663:256;;;41725:42;41758:8;41725:28;:14;41744:8;41725:18;:28::i;:42::-;41710:57;;41663:256;;;41857:42;41890:8;41857:28;:14;41876:8;41857:18;:28::i;:42::-;41842:57;;41663:256;41946:9;41945:10;:48;;;;;41975:18;;41959:12;:34;;41945:48;41942:106;;;42018:10;:8;:10::i;:::-;41527:536;;;41474:589;41315:759;;36049:6032;35936:6145;;;:::o;19877:675::-;-1:-1:-1;;;;;19961:21:0;;19953:67;;;;-1:-1:-1;;;19953:67:0;;10695:2:1;19953:67:0;;;10677:21:1;10734:2;10714:18;;;10707:30;10773:34;10753:18;;;10746:62;-1:-1:-1;;;10824:18:1;;;10817:31;10865:19;;19953:67:0;10493:397:1;19953:67:0;-1:-1:-1;;;;;20120:18:0;;20095:22;20120:18;;;;;;;;;;;20157:24;;;;20149:71;;;;-1:-1:-1;;;20149:71:0;;11097:2:1;20149:71:0;;;11079:21:1;11136:2;11116:18;;;11109:30;11175:34;11155:18;;;11148:62;-1:-1:-1;;;11226:18:1;;;11219:32;11268:19;;20149:71:0;10895:398:1;20149:71:0;-1:-1:-1;;;;;20256:18:0;;:9;:18;;;;;;;;;;;20277:23;;;20256:44;;20395:12;:22;;;;;;;20446:37;1596:25:1;;;20256:9:0;;:18;20446:37;;1569:18:1;20446:37:0;1450:177:1;18996:548:0;-1:-1:-1;;;;;19080:21:0;;19072:65;;;;-1:-1:-1;;;19072:65:0;;11500:2:1;19072:65:0;;;11482:21:1;11539:2;11519:18;;;11512:30;11578:33;11558:18;;;11551:61;11629:18;;19072:65:0;11298:355:1;19072:65:0;19228:6;19212:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;19383:18:0;;:9;:18;;;;;;;;;;;:28;;;;;;19438:37;1596:25:1;;;19438:37:0;;1569:18:1;19438:37:0;;;;;;;19488:48;19877:675;7471:132;7379:6;;-1:-1:-1;;;;;7379:6:0;6600:10;7535:23;7527:68;;;;-1:-1:-1;;;7527:68:0;;11860:2:1;7527:68:0;;;11842:21:1;;;11879:18;;;11872:30;11938:34;11918:18;;;11911:62;11990:18;;7527:68:0;11658:356:1;8566:191:0;8659:6;;;-1:-1:-1;;;;;8676:17:0;;;-1:-1:-1;;;;;;8676:17:0;;;;;;;8709:40;;8659:6;;;8676:17;8659:6;;8709:40;;8640:16;;8709:40;8629:128;8566:191;:::o;42089:846::-;42296:16;;;42310:1;42296:16;;;;;;;;42240:21;;42215:22;;42296:16;42310:1;42296:16;;;;;;;;;;-1:-1:-1;42296:16:0;42272:40;;42341:4;42323;42328:1;42323:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;42323:23:0;;;:7;;;;;;;;;;:23;;;;42367:15;;:22;;;-1:-1:-1;;;42367:22:0;;;;:15;;;;;:20;;:22;;;;;42323:7;;42367:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42357:4;42362:1;42357:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;42357:32:0;;;:7;;;;;;;;;:32;42434:15;;42402:62;;42419:4;;42434:15;42452:11;42402:8;:62::i;:::-;42503:15;;:224;;-1:-1:-1;;;42503:224:0;;-1:-1:-1;;;;;42503:15:0;;;;:66;;:224;;42584:11;;42503:15;;42654:4;;42681;;42701:15;;42503:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42738:19;42784:14;42760:21;:38;;;;:::i;:::-;42814:113;;;13698:25:1;;;13754:2;13739:18;;13732:34;;;42738:60:0;;-1:-1:-1;42814:113:0;;13671:18:1;42814:113:0;;;;;;;42144:791;;;42089:846;:::o;43863:125::-;43914:4;43974:6;43953:16;43968:1;43953:12;:16;:::i;:::-;43938:42;;;43943:27;43938:42;:::i;3162:98::-;3220:7;3247:5;3251:1;3247;:5;:::i;:::-;3240:12;3162:98;-1:-1:-1;;;3162:98:0:o;3561:::-;3619:7;3646:5;3650:1;3646;:5;:::i;17903:806::-;-1:-1:-1;;;;;18000:18:0;;17992:68;;;;-1:-1:-1;;;17992:68:0;;13979:2:1;17992:68:0;;;13961:21:1;14018:2;13998:18;;;13991:30;14057:34;14037:18;;;14030:62;-1:-1:-1;;;14108:18:1;;;14101:35;14153:19;;17992:68:0;13777:401:1;17992:68:0;-1:-1:-1;;;;;18079:16:0;;18071:64;;;;-1:-1:-1;;;18071:64:0;;14385:2:1;18071:64:0;;;14367:21:1;14424:2;14404:18;;;14397:30;14463:34;14443:18;;;14436:62;-1:-1:-1;;;14514:18:1;;;14507:33;14557:19;;18071:64:0;14183:399:1;18071:64:0;-1:-1:-1;;;;;18221:15:0;;18199:19;18221:15;;;;;;;;;;;18255:21;;;;18247:72;;;;-1:-1:-1;;;18247:72:0;;14789:2:1;18247:72:0;;;14771:21:1;14828:2;14808:18;;;14801:30;14867:34;14847:18;;;14840:62;-1:-1:-1;;;14918:18:1;;;14911:36;14964:19;;18247:72:0;14587:402:1;18247:72:0;-1:-1:-1;;;;;18355:15:0;;;:9;:15;;;;;;;;;;;18373:20;;;18355:38;;18573:13;;;;;;;;;;:23;;;;;;18625:26;;1596:25:1;;;18573:13:0;;18625:26;;1569:18:1;18625:26:0;;;;;;;18664:37;19877:675;14:548:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1632:456::-;1709:6;1717;1725;1778:2;1766:9;1757:7;1753:23;1749:32;1746:52;;;1794:1;1791;1784:12;1746:52;1833:9;1820:23;1852:31;1877:5;1852:31;:::i;:::-;1902:5;-1:-1:-1;1959:2:1;1944:18;;1931:32;1972:33;1931:32;1972:33;:::i;:::-;1632:456;;2024:7;;-1:-1:-1;;;2078:2:1;2063:18;;;;2050:32;;1632:456::o;2282:160::-;2347:20;;2403:13;;2396:21;2386:32;;2376:60;;2432:1;2429;2422:12;2376:60;2282:160;;;:::o;2447:180::-;2503:6;2556:2;2544:9;2535:7;2531:23;2527:32;2524:52;;;2572:1;2569;2562:12;2524:52;2595:26;2611:9;2595:26;:::i;2840:316::-;2917:6;2925;2933;2986:2;2974:9;2965:7;2961:23;2957:32;2954:52;;;3002:1;2999;2992:12;2954:52;-1:-1:-1;;3025:23:1;;;3095:2;3080:18;;3067:32;;-1:-1:-1;3146:2:1;3131:18;;;3118:32;;2840:316;-1:-1:-1;2840:316:1:o;3161:247::-;3220:6;3273:2;3261:9;3252:7;3248:23;3244:32;3241:52;;;3289:1;3286;3279:12;3241:52;3328:9;3315:23;3347:31;3372:5;3347:31;:::i;3413:315::-;3478:6;3486;3539:2;3527:9;3518:7;3514:23;3510:32;3507:52;;;3555:1;3552;3545:12;3507:52;3594:9;3581:23;3613:31;3638:5;3613:31;:::i;:::-;3663:5;-1:-1:-1;3687:35:1;3718:2;3703:18;;3687:35;:::i;:::-;3677:45;;3413:315;;;;;:::o;3733:180::-;3792:6;3845:2;3833:9;3824:7;3820:23;3816:32;3813:52;;;3861:1;3858;3851:12;3813:52;-1:-1:-1;3884:23:1;;3733:180;-1:-1:-1;3733:180:1:o;3918:388::-;3986:6;3994;4047:2;4035:9;4026:7;4022:23;4018:32;4015:52;;;4063:1;4060;4053:12;4015:52;4102:9;4089:23;4121:31;4146:5;4121:31;:::i;:::-;4171:5;-1:-1:-1;4228:2:1;4213:18;;4200:32;4241:33;4200:32;4241:33;:::i;:::-;4293:7;4283:17;;;3918:388;;;;;:::o;4311:380::-;4390:1;4386:12;;;;4433;;;4454:61;;4508:4;4500:6;4496:17;4486:27;;4454:61;4561:2;4553:6;4550:14;4530:18;4527:38;4524:161;;4607:10;4602:3;4598:20;4595:1;4588:31;4642:4;4639:1;4632:15;4670:4;4667:1;4660:15;4524:161;;4311:380;;;:::o;5041:127::-;5102:10;5097:3;5093:20;5090:1;5083:31;5133:4;5130:1;5123:15;5157:4;5154:1;5147:15;5173:125;5238:9;;;5259:10;;;5256:36;;;5272:18;;:::i;8884:127::-;8945:10;8940:3;8936:20;8933:1;8926:31;8976:4;8973:1;8966:15;9000:4;8997:1;8990:15;9016:120;9056:1;9082;9072:35;;9087:18;;:::i;:::-;-1:-1:-1;9121:9:1;;9016:120::o;9141:112::-;9173:1;9199;9189:35;;9204:18;;:::i;:::-;-1:-1:-1;9238:9:1;;9141:112::o;9258:168::-;9331:9;;;9362;;9379:15;;;9373:22;;9359:37;9349:71;;9400:18;;:::i;9431:128::-;9498:9;;;9519:11;;;9516:37;;;9533:18;;:::i;9564:136::-;9603:3;9631:5;9621:39;;9640:18;;:::i;:::-;-1:-1:-1;;;9676:18:1;;9564:136::o;9705:135::-;9744:3;9765:17;;;9762:43;;9785:18;;:::i;:::-;-1:-1:-1;9832:1:1;9821:13;;9705:135::o;9845:188::-;9924:13;;-1:-1:-1;;;;;9966:42:1;;9956:53;;9946:81;;10023:1;10020;10013:12;10038:450;10125:6;10133;10141;10194:2;10182:9;10173:7;10169:23;10165:32;10162:52;;;10210:1;10207;10200:12;10162:52;10233:40;10263:9;10233:40;:::i;:::-;10223:50;;10292:49;10337:2;10326:9;10322:18;10292:49;:::i;:::-;10282:59;;10384:2;10373:9;10369:18;10363:25;10428:10;10421:5;10417:22;10410:5;10407:33;10397:61;;10454:1;10451;10444:12;10397:61;10477:5;10467:15;;;10038:450;;;;;:::o;12151:127::-;12212:10;12207:3;12203:20;12200:1;12193:31;12243:4;12240:1;12233:15;12267:4;12264:1;12257:15;12283:251;12353:6;12406:2;12394:9;12385:7;12381:23;12377:32;12374:52;;;12422:1;12419;12412:12;12374:52;12454:9;12448:16;12473:31;12498:5;12473:31;:::i;12539:980::-;12801:4;12849:3;12838:9;12834:19;12880:6;12869:9;12862:25;12906:2;12944:6;12939:2;12928:9;12924:18;12917:34;12987:3;12982:2;12971:9;12967:18;12960:31;13011:6;13046;13040:13;13077:6;13069;13062:22;13115:3;13104:9;13100:19;13093:26;;13154:2;13146:6;13142:15;13128:29;;13175:1;13185:195;13199:6;13196:1;13193:13;13185:195;;;13264:13;;-1:-1:-1;;;;;13260:39:1;13248:52;;13355:15;;;;13320:12;;;;13296:1;13214:9;13185:195;;;-1:-1:-1;;;;;;;13436:32:1;;;;13431:2;13416:18;;13409:60;-1:-1:-1;;;13500:3:1;13485:19;13478:35;13397:3;12539:980;-1:-1:-1;;;12539:980:1:o

Swarm Source

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