ETH Price: $2,517.92 (-5.32%)

Token

Donald Trump Wif Ear (EAR)
 

Overview

Max Total Supply

100,000,000 EAR

Holders

41

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 EAR

Value
$0.00
0xe3205c93f6ef12fd5a26388acee836d162fdb93c
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
EAR

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 2024-07-14
*/

pragma solidity 0.8.19;

// SPDX-License-Identifier: MIT

/*
    website  : https://donaldtrumpwifear.live
    twitter  : https://x.com/donaldtrump_ear
    telegram : https://t.me/donaldtrumpwifear
*/

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

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

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

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

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

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

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

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

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

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

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

    function _transferStandard(
        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];

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

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    function functionCall(
        address target,
        bytes memory data
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                0,
                "Address: low-level call failed"
            );
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

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

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data
    ) internal view returns (bytes memory) {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data
    ) internal returns (bytes memory) {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return
            verifyCallResultFromTarget(
                target,
                success,
                returndata,
                errorMessage
            );
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(
        bytes memory returndata,
        string memory errorMessage
    ) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transfer.selector, to, value)
        );
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
        );
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(
            data,
            "SafeERC20: low-level call failed"
        );
        if (returndata.length > 0) {
            require(
                abi.decode(returndata, (bool)),
                "SafeERC20: ERC20 operation did not succeed"
            );
        }
    }

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.approve.selector, spender, value)
        );
    }
}

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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 swapETHForExactTokens(
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    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 getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
}

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

contract EAR is ERC20, Ownable {
    mapping(address => bool) public exemptFromFees;
    mapping(address => bool) public exemptFromLimits;

    bool public tradingActive;

    mapping(address => bool) public isAMMPair;

    uint256 public maxTransaction;
    uint256 public maxWallet;
    uint256 public maxTax;

    address public taxReceiverAddress;

    uint256 public buyTotalTax = 0;
    uint256 public sellTotalTax = 0;
    uint256 private reduceAt = 10;
    uint256 private initialTax = 4200;
    uint256 private buyCount = 0;

    bool public limitsInEffect = true;

    bool public swapEnabled = false;
    bool private swapping;

    address public lpPair;
    IDexRouter public dexRouter;

    uint256 public constant FEE_DIVISOR = 10000;

    // events

    event UpdatedMaxTransaction(uint256 newMax);
    event UpdatedMaxWallet(uint256 newMax);
    event SetExemptFromFees(address _address, bool _isExempt);
    event SetExemptFromLimits(address _address, bool _isExempt);
    event RemovedLimits();
    event UpdatedBuyTax(uint256 newAmt);
    event UpdatedSellTax(uint256 newAmt);

    // constructor

    constructor(address payable _wallet) ERC20("Donald Trump Wif Ear", "EAR") {
        address newOwner = msg.sender;
        _mint(newOwner, 100_000_000 * (10 ** decimals()));

        address _v2Router;

        // @dev assumes WETH pair
        if (block.chainid == 1) {
            _v2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else if (block.chainid == 5) {
            _v2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else if (block.chainid == 97) {
            _v2Router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1;
        } else if (block.chainid == 42161) {
            _v2Router = 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506;
        } else if (block.chainid == 8453) {
            _v2Router = 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24;
        } else {
            revert("Chain not configured");
        }

        dexRouter = IDexRouter(_v2Router);

        maxTransaction = (totalSupply() * 20) / 1000;
        maxWallet = (totalSupply() * 20) / 1000;
        maxTax = (totalSupply() * 10) / 1000;

        taxReceiverAddress = _wallet;

        exemptFromLimits[msg.sender] = true;
        exemptFromLimits[address(this)] = true;
        exemptFromLimits[taxReceiverAddress] = true;

        exemptFromFees[msg.sender] = true;
        exemptFromFees[address(this)] = true;
        exemptFromFees[taxReceiverAddress] = true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override {
        checkLimits(from, to, amount);

        if (!swapEnabled || swapping) return;

        amount -= handleEarTax(from, to, amount);

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

    function checkLimits(address from, address to, uint256 amount) internal {
        if (!tradingActive) {
            require(
                exemptFromFees[from] || exemptFromFees[to],
                "Trading is not active."
            );
        }

        if (!swapEnabled || swapping) {
            super._transfer(from, to, amount);
            return;
        }

        if (limitsInEffect) {
            // buy
            if (isAMMPair[from] && !exemptFromLimits[to]) {
                require(
                    amount <= maxTransaction,
                    "Buy transfer amount exceeded."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Unable to exceed Max Wallet"
                );
                buyCount++;
            }
            // sell
            else if (isAMMPair[to] && !exemptFromLimits[from]) {
                require(
                    amount <= maxTransaction,
                    "Sell transfer amount exceeds the maxTransactionAmt."
                );
            } else if (!exemptFromLimits[to]) {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Unable to exceed Max Wallet"
                );
            }
        }
    }

    function handleEarTax(
        address from,
        address to,
        uint256 amount
    ) internal returns (uint256) {
        if (
            swapEnabled && !swapping && isAMMPair[to] && !exemptFromFees[from]
        ) {
            swapping = true;
            swapBack(amount);
            swapping = false;
        }

        bool takeFee = true;
        if (exemptFromFees[from]) {
            takeFee = false;
        }

        uint256 tax = amount;

        // on sell
        if (takeFee) {
            tax = 0;
            if (isAMMPair[to]) {
                tax =
                    (amount *
                        (buyCount > reduceAt ? sellTotalTax : initialTax)) /
                    FEE_DIVISOR;
            }
            // on buy
            else if (isAMMPair[from]) {
                tax =
                    (amount *
                        (buyCount > reduceAt ? buyTotalTax : initialTax)) /
                    FEE_DIVISOR;
            }
            if (tax > 0) {
                super._transfer(from, address(this), tax);
            }
            return tax;
        } else {
            super._transferStandard(from, address(this), tax);
            return 0;
        }

    }

    function swapTokensForETH(uint256 tokenAmt) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = address(dexRouter.WETH());

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmt,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack(uint256 tokens) private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap;

        if (contractBalance > 0 && contractBalance < maxTax) {
            tokensToSwap = contractBalance;
        } else {
            if (tokens > maxTax) {
                tokensToSwap = maxTax;
            } else {
                tokensToSwap = tokens;
            }
        }

        if (contractBalance > 0) swapTokensForETH(tokensToSwap);

        uint256 contractETHBalance = address(this).balance;
        sendETH(contractETHBalance);
    }

    function sendETH(uint256 amount) private {
        payable(taxReceiverAddress).transfer(amount);
    }

    // owner functions
    function setExemptFromFees(
        address _address,
        bool _isExempt
    ) external onlyOwner {
        require(_address != address(0), "Zero Address");
        exemptFromFees[_address] = _isExempt;
        emit SetExemptFromFees(_address, _isExempt);
    }

    function setExemptFromLimits(
        address _address,
        bool _isExempt
    ) external onlyOwner {
        require(_address != address(0), "Zero Address");
        if (!_isExempt) {
            require(_address != lpPair, "Cannot remove pair");
        }
        exemptFromLimits[_address] = _isExempt;
        emit SetExemptFromLimits(_address, _isExempt);
    }

    function updateMaxTransaction(uint256 newNumInTokens) external onlyOwner {
        require(
            newNumInTokens >= ((totalSupply() * 5) / 1000) / (10 ** decimals()),
            "Too low"
        );
        maxTransaction = newNumInTokens * (10 ** decimals());
        emit UpdatedMaxTransaction(maxTransaction);
    }

    function updateMaxWallet(uint256 newNumInTokens) external onlyOwner {
        require(
            newNumInTokens >=
                ((totalSupply() * 15) / 1000) / (10 ** decimals()),
            "Too low"
        );
        maxWallet = newNumInTokens * (10 ** decimals());
        emit UpdatedMaxWallet(maxWallet);
    }

    function updateBuyTax(uint256 _taxWithTwoDecimals) external onlyOwner {
        buyTotalTax = _taxWithTwoDecimals;
        require(buyTotalTax <= 1200, "Keep tax below 12%");
        emit UpdatedBuyTax(buyTotalTax);
    }

    function updateSellTax(uint256 _taxWithTwoDecimals) external onlyOwner {
        sellTotalTax = _taxWithTwoDecimals;
        require(sellTotalTax <= 1200, "Keep tax below 12%");
        emit UpdatedSellTax(sellTotalTax);
    }

    function createLP() external onlyOwner {
        require(!tradingActive, "trading is already open");
        lpPair = IDexFactory(dexRouter.factory()).createPair(
            address(this),
            dexRouter.WETH()
        );

        isAMMPair[lpPair] = true;

        exemptFromLimits[lpPair] = true;

        _approve(address(this), address(dexRouter), type(uint256).max);
        _approve(address(msg.sender), address(dexRouter), totalSupply());

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(lpPair).approve(address(dexRouter), type(uint).max);
    }

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        maxTransaction = totalSupply();
        maxWallet = totalSupply();
        emit RemovedLimits();
    }

    function rescueStuckEth() external {
        require(msg.sender == owner());
        require(address(this).balance > 0, "Token: no ETH to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function rescueTokens(address _token, address _to) external onlyOwner {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        SafeERC20.safeTransfer(IERC20(_token), _to, _contractBalance);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_wallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromLimits","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":"uint256","name":"newAmt","type":"uint256"}],"name":"UpdatedBuyTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"UpdatedMaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"UpdatedMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmt","type":"uint256"}],"name":"UpdatedSellTax","type":"event"},{"inputs":[],"name":"FEE_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMMPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"setExemptFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"setExemptFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxReceiverAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":[{"internalType":"uint256","name":"_taxWithTwoDecimals","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNumInTokens","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNumInTokens","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxWithTwoDecimals","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600e819055600f819055600a6010556110686011556012556013805461ffff191660011790553480156200003957600080fd5b5060405162002fd438038062002fd48339810160408190526200005c9162000461565b6040518060400160405280601481526020017f446f6e616c64205472756d7020576966204561720000000000000000000000008152506040518060400160405280600381526020016222a0a960e91b8152508160039081620000bf919062000537565b506004620000ce828262000537565b5050506000620000e36200039560201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350336200015b81620001456012600a62000718565b62000155906305f5e10062000729565b62000399565b600046600103620001825750737a250d5630b4cf539739df2c5dacb4c659f2488d62000265565b46600503620001a75750737a250d5630b4cf539739df2c5dacb4c659f2488d62000265565b46606103620001cc575073d99d1c33f9fc3444f8101754abc46c52416550d162000265565b4661a4b103620001f25750731b02da8cb0d097eb8d57a175b88c7d8b4799750662000265565b4661210503620002185750734752ba5dbc23f44d87826276bf6fd6b1c372ad2462000265565b60405162461bcd60e51b815260206004820152601460248201527f436861696e206e6f7420636f6e6669677572656400000000000000000000000060448201526064015b60405180910390fd5b601480546001600160a01b0319166001600160a01b0383161790556103e86200028d60025490565b6200029a90601462000729565b620002a6919062000743565b600a556103e8620002b660025490565b620002c390601462000729565b620002cf919062000743565b600b556103e8620002df60025490565b620002ec90600a62000729565b620002f8919062000743565b600c555050600d80546001600160a01b0319166001600160a01b03928316178155336000818152600760209081526040808320805460ff1990811660019081179092553080865283862080548316841790558754891686528386208054831684179055958552600690935281842080548416821790559383528083208054831685179055935490941681529190912080549092161790556200077c565b3390565b6001600160a01b038216620003f15760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200025c565b806002600082825462000405919062000766565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b6000602082840312156200047457600080fd5b81516001600160a01b03811681146200048c57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004be57607f821691505b602082108103620004df57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200045c57600081815260208120601f850160051c810160208610156200050e5750805b601f850160051c820191505b818110156200052f578281556001016200051a565b505050505050565b81516001600160401b0381111562000553576200055362000493565b6200056b81620005648454620004a9565b84620004e5565b602080601f831160018114620005a357600084156200058a5750858301515b600019600386901b1c1916600185901b1785556200052f565b600085815260208120601f198616915b82811015620005d457888601518255948401946001909101908401620005b3565b5085821015620005f35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200065a5781600019048211156200063e576200063e62000603565b808516156200064c57918102915b93841c93908002906200061e565b509250929050565b600082620006735750600162000712565b81620006825750600062000712565b81600181146200069b5760028114620006a657620006c6565b600191505062000712565b60ff841115620006ba57620006ba62000603565b50506001821b62000712565b5060208310610133831016604e8410600b8410161715620006eb575081810a62000712565b620006f7838362000619565b80600019048211156200070e576200070e62000603565b0290505b92915050565b60006200048c60ff84168362000662565b808202811582820484141762000712576200071262000603565b6000826200076157634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000712576200071262000603565b612848806200078c6000396000f3fe60806040526004361061023f5760003560e01c806370a082311161012e578063a457c2d7116100ab578063dd62ed3e1161006f578063dd62ed3e146106ba578063e27a55fe146106da578063f2fde38b146106f0578063f7f23a0c14610710578063f8b45b051461072557600080fd5b8063a457c2d71461061a578063a9059cbb1461063a578063b0249cc61461065a578063bbc0c7421461068a578063c3f70b52146106a457600080fd5b80638d3e6e40116100f25780638d3e6e40146105815780638da5cb5b146105b157806395d89b41146105cf5780639e93ad8e146105e4578063a13d1a2b146105fa57600080fd5b806370a08231146104ec578063715018a614610522578063751039fc1461053757806377b27d1f1461054c5780638a8c523c1461056c57600080fd5b806339509351116101bc5780635431c94e116101805780635431c94e146104515780635a90a49e146104715780635df6e68e146104a15780636d8813c5146104b75780636ddd1713146104cd57600080fd5b806339509351146103bb5780633b611e00146103db578063436d3340146103f0578063452ed4f1146104105780634a62bb651461043757600080fd5b806312185a391161020357806312185a391461032057806318160ddd146103405780631c499ab01461035f57806323b872dd1461037f578063313ce5671461039f57600080fd5b80630517d13d1461024b57806306fdde031461026d5780630758d92414610298578063095ea7b3146102d0578063114ca2ed1461030057600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026b6102663660046122f2565b61073b565b005b34801561027957600080fd5b50610282610830565b60405161028f919061232f565b60405180910390f35b3480156102a457600080fd5b506014546102b8906001600160a01b031681565b6040516001600160a01b03909116815260200161028f565b3480156102dc57600080fd5b506102f06102eb366004612377565b6108c2565b604051901515815260200161028f565b34801561030c57600080fd5b50600d546102b8906001600160a01b031681565b34801561032c57600080fd5b5061026b61033b3660046122f2565b6108dc565b34801561034c57600080fd5b506002545b60405190815260200161028f565b34801561036b57600080fd5b5061026b61037a3660046122f2565b610985565b34801561038b57600080fd5b506102f061039a3660046123a3565b610a6a565b3480156103ab57600080fd5b506040516012815260200161028f565b3480156103c757600080fd5b506102f06103d6366004612377565b610a90565b3480156103e757600080fd5b5061026b610ab2565b3480156103fc57600080fd5b5061026b61040b3660046122f2565b610b41565b34801561041c57600080fd5b506013546102b890630100000090046001600160a01b031681565b34801561044357600080fd5b506013546102f09060ff1681565b34801561045d57600080fd5b5061026b61046c3660046123e4565b610bea565b34801561047d57600080fd5b506102f061048c36600461241d565b60066020526000908152604090205460ff1681565b3480156104ad57600080fd5b50610351600e5481565b3480156104c357600080fd5b50610351600c5481565b3480156104d957600080fd5b506013546102f090610100900460ff1681565b3480156104f857600080fd5b5061035161050736600461241d565b6001600160a01b031660009081526020819052604090205490565b34801561052e57600080fd5b5061026b610ce7565b34801561054357600080fd5b5061026b610d5b565b34801561055857600080fd5b5061026b610567366004612448565b610dc6565b34801561057857600080fd5b5061026b610e99565b34801561058d57600080fd5b506102f061059c36600461241d565b60076020526000908152604090205460ff1681565b3480156105bd57600080fd5b506005546001600160a01b03166102b8565b3480156105db57600080fd5b50610282610ee1565b3480156105f057600080fd5b5061035161271081565b34801561060657600080fd5b5061026b610615366004612448565b610ef0565b34801561062657600080fd5b506102f0610635366004612377565b61101a565b34801561064657600080fd5b506102f0610655366004612377565b6110a0565b34801561066657600080fd5b506102f061067536600461241d565b60096020526000908152604090205460ff1681565b34801561069657600080fd5b506008546102f09060ff1681565b3480156106b057600080fd5b50610351600a5481565b3480156106c657600080fd5b506103516106d53660046123e4565b6110ae565b3480156106e657600080fd5b50610351600f5481565b3480156106fc57600080fd5b5061026b61070b36600461241d565b6110d9565b34801561071c57600080fd5b5061026b6111c4565b34801561073157600080fd5b50610351600b5481565b6005546001600160a01b0316331461076e5760405162461bcd60e51b815260040161076590612476565b60405180910390fd5b61077a6012600a6125a5565b6103e861078660025490565b6107919060056125b4565b61079b91906125cb565b6107a591906125cb565b8110156107de5760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610765565b6107ea6012600a6125a5565b6107f490826125b4565b600a8190556040519081527f76a9278644b7300961aa0e7e86f10934585987f1daf1c6ecc971c18376691574906020015b60405180910390a150565b60606003805461083f906125ed565b80601f016020809104026020016040519081016040528092919081815260200182805461086b906125ed565b80156108b85780601f1061088d576101008083540402835291602001916108b8565b820191906000526020600020905b81548152906001019060200180831161089b57829003601f168201915b5050505050905090565b6000336108d081858561159d565b60019150505b92915050565b6005546001600160a01b031633146109065760405162461bcd60e51b815260040161076590612476565b600f8190556104b08111156109525760405162461bcd60e51b81526020600482015260126024820152714b656570207461782062656c6f772031322560701b6044820152606401610765565b7fa02824f65350567bc405e202b741e7ca6274004a9feeb44149df72b8bd599c97600f5460405161082591815260200190565b6005546001600160a01b031633146109af5760405162461bcd60e51b815260040161076590612476565b6109bb6012600a6125a5565b6103e86109c760025490565b6109d290600f6125b4565b6109dc91906125cb565b6109e691906125cb565b811015610a1f5760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610765565b610a2b6012600a6125a5565b610a3590826125b4565b600b8190556040519081527f3046ad62de8b70d396246aaed19ff2559ff20df8706520cbde58320766c4276290602001610825565b600033610a788582856116c1565b610a8385858561173b565b60019150505b9392505050565b6000336108d0818585610aa383836110ae565b610aad9190612627565b61159d565b6005546001600160a01b03163314610ac957600080fd5b60004711610b125760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b6044820152606401610765565b60405133904780156108fc02916000818181858888f19350505050158015610b3e573d6000803e3d6000fd5b50565b6005546001600160a01b03163314610b6b5760405162461bcd60e51b815260040161076590612476565b600e8190556104b0811115610bb75760405162461bcd60e51b81526020600482015260126024820152714b656570207461782062656c6f772031322560701b6044820152606401610765565b7f5380a61520019ce8270d583f62f1b2b9f4f4372e1acaaf708f4865cecece0508600e5460405161082591815260200190565b6005546001600160a01b03163314610c145760405162461bcd60e51b815260040161076590612476565b6001600160a01b038216610c6a5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610765565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd5919061263a565b9050610ce2838383611791565b505050565b6005546001600160a01b03163314610d115760405162461bcd60e51b815260040161076590612476565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610d855760405162461bcd60e51b815260040161076590612476565b6013805460ff19169055600254600a55600254600b556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610df05760405162461bcd60e51b815260040161076590612476565b6001600160a01b038216610e355760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610765565b6001600160a01b038216600081815260066020908152604091829020805460ff19168515159081179091558251938452908301527f998cce27cbf44405c67eb636a634d5e2f2e6ff248b3d71fbbbb022f3c4c6dd2d91015b60405180910390a15050565b6005546001600160a01b03163314610ec35760405162461bcd60e51b815260040161076590612476565b6008805460ff191660011790556013805461ff001916610100179055565b60606004805461083f906125ed565b6005546001600160a01b03163314610f1a5760405162461bcd60e51b815260040161076590612476565b6001600160a01b038216610f5f5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610765565b80610fbe576013546001600160a01b036301000000909104811690831603610fbe5760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb32903830b4b960711b6044820152606401610765565b6001600160a01b038216600081815260076020908152604091829020805460ff19168515159081179091558251938452908301527f8f9f40630a1d139e6cf69b4f447ca47a36f10a017524efaa38252e516fa227ce9101610e8d565b6000338161102882866110ae565b9050838110156110885760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610765565b611095828686840361159d565b506001949350505050565b6000336108d081858561173b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b031633146111035760405162461bcd60e51b815260040161076590612476565b6001600160a01b0381166111685760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610765565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111ee5760405162461bcd60e51b815260040161076590612476565b60085460ff16156112415760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610765565b601460009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b89190612653565b6001600160a01b031663c9c6539630601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561131a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133e9190612653565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561138b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113af9190612653565b601380546301000000600160b81b03191663010000006001600160a01b0393841681029190911780835581900483166000908152600960209081526040808320805460ff1990811660019081179092559554949094048616835260079091529020805490921617905560145461142a9130911660001961159d565b6014546114459033906001600160a01b0316610aad60025490565b6014546001600160a01b031663f305d7194730611477816001600160a01b031660009081526020819052604090205490565b60008061148c6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156114f4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115199190612670565b505060135460145460405163095ea7b360e01b81526001600160a01b0391821660048201526000196024820152630100000090920416915063095ea7b3906044016020604051808303816000875af1158015611579573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3e919061269e565b6001600160a01b0383166115ff5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610765565b6001600160a01b0382166116605760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610765565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006116cd84846110ae565b9050600019811461173557818110156117285760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610765565b611735848484840361159d565b50505050565b6117468383836117e3565b601354610100900460ff161580611765575060135462010000900460ff165b1561176f57505050565b61177a838383611b19565b61178490826126bb565b9050610ce2838383611cb9565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ce2908490611de4565b60085460ff16611871576001600160a01b03831660009081526006602052604090205460ff168061182c57506001600160a01b03821660009081526006602052604090205460ff165b6118715760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610765565b601354610100900460ff161580611890575060135462010000900460ff165b156118a057610ce2838383611cb9565b60135460ff1615610ce2576001600160a01b03831660009081526009602052604090205460ff1680156118ec57506001600160a01b03821660009081526007602052604090205460ff16155b156119d157600a548111156119435760405162461bcd60e51b815260206004820152601d60248201527f427579207472616e7366657220616d6f756e742065786365656465642e0000006044820152606401610765565b600b546001600160a01b0383166000908152602081905260409020546119699083612627565b11156119b75760405162461bcd60e51b815260206004820152601b60248201527f556e61626c6520746f20657863656564204d61782057616c6c657400000000006044820152606401610765565b601280549060006119c7836126ce565b9190505550505050565b6001600160a01b03821660009081526009602052604090205460ff168015611a1257506001600160a01b03831660009081526007602052604090205460ff16155b15611a8557600a54811115610ce25760405162461bcd60e51b815260206004820152603360248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152721036b0bc2a3930b739b0b1ba34b7b720b6ba1760691b6064820152608401610765565b6001600160a01b03821660009081526007602052604090205460ff16610ce257600b546001600160a01b038316600090815260208190526040902054611acb9083612627565b1115610ce25760405162461bcd60e51b815260206004820152601b60248201527f556e61626c6520746f20657863656564204d61782057616c6c657400000000006044820152606401610765565b601354600090610100900460ff168015611b3c575060135462010000900460ff16155b8015611b6057506001600160a01b03831660009081526009602052604090205460ff165b8015611b8557506001600160a01b03841660009081526006602052604090205460ff16155b15611bb1576013805462ff0000191662010000179055611ba482611eb6565b6013805462ff0000191690555b6001600160a01b03841660009081526006602052604090205460019060ff1615611bd9575060005b828115611ca357506001600160a01b03841660009081526009602052604081205460ff1615611c375761271060105460125411611c1857601154611c1c565b600f545b611c2690866125b4565b611c3091906125cb565b9050611c89565b6001600160a01b03861660009081526009602052604090205460ff1615611c895761271060105460125411611c6e57601154611c72565b600e545b611c7c90866125b4565b611c8691906125cb565b90505b8015611c9a57611c9a863083611cb9565b9150610a899050565b611cae863083611f12565b600092505050610a89565b6001600160a01b038316611cdf5760405162461bcd60e51b8152600401610765906126e7565b6001600160a01b038216611d055760405162461bcd60e51b81526004016107659061272c565b6001600160a01b03831660009081526020819052604090205481811015611d7d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610765565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a3611735565b6000611e39826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611fe39092919063ffffffff16565b805190915015610ce25780806020019051810190611e57919061269e565b610ce25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610765565b30600090815260208190526040812054908115801590611ed75750600c5482105b15611ee3575080611ef9565b600c54831115611ef65750600c54611ef9565b50815b8115611f0857611f0881611ffa565b476117358161213b565b6001600160a01b038316611f385760405162461bcd60e51b8152600401610765906126e7565b6001600160a01b038216611f5e5760405162461bcd60e51b81526004016107659061272c565b6001600160a01b038084166000908152602081905260408082208054858103909155928516825281208054849290611f97908490612627565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dd791815260200190565b6060611ff28484600085612179565b949350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061202f5761202f61276f565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ac9190612653565b816001815181106120bf576120bf61276f565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac94790612105908590600090869030904290600401612785565b600060405180830381600087803b15801561211f57600080fd5b505af1158015612133573d6000803e3d6000fd5b505050505050565b600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612175573d6000803e3d6000fd5b5050565b6060824710156121da5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610765565b600080866001600160a01b031685876040516121f691906127f6565b60006040518083038185875af1925050503d8060008114612233576040519150601f19603f3d011682016040523d82523d6000602084013e612238565b606091505b509150915061224987838387612254565b979650505050505050565b606083156122c35782516000036122bc576001600160a01b0385163b6122bc5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610765565b5081611ff2565b611ff283838151156122d85781518083602001fd5b8060405162461bcd60e51b8152600401610765919061232f565b60006020828403121561230457600080fd5b5035919050565b60005b8381101561232657818101518382015260200161230e565b50506000910152565b602081526000825180602084015261234e81604085016020870161230b565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610b3e57600080fd5b6000806040838503121561238a57600080fd5b823561239581612362565b946020939093013593505050565b6000806000606084860312156123b857600080fd5b83356123c381612362565b925060208401356123d381612362565b929592945050506040919091013590565b600080604083850312156123f757600080fd5b823561240281612362565b9150602083013561241281612362565b809150509250929050565b60006020828403121561242f57600080fd5b8135610a8981612362565b8015158114610b3e57600080fd5b6000806040838503121561245b57600080fd5b823561246681612362565b915060208301356124128161243a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156124fc5781600019048211156124e2576124e26124ab565b808516156124ef57918102915b93841c93908002906124c6565b509250929050565b600082612513575060016108d6565b81612520575060006108d6565b816001811461253657600281146125405761255c565b60019150506108d6565b60ff841115612551576125516124ab565b50506001821b6108d6565b5060208310610133831016604e8410600b841016171561257f575081810a6108d6565b61258983836124c1565b806000190482111561259d5761259d6124ab565b029392505050565b6000610a8960ff841683612504565b80820281158282048414176108d6576108d66124ab565b6000826125e857634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061260157607f821691505b60208210810361262157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156108d6576108d66124ab565b60006020828403121561264c57600080fd5b5051919050565b60006020828403121561266557600080fd5b8151610a8981612362565b60008060006060848603121561268557600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156126b057600080fd5b8151610a898161243a565b818103818111156108d6576108d66124ab565b6000600182016126e0576126e06124ab565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127d55784516001600160a01b0316835293830193918301916001016127b0565b50506001600160a01b03969096166060850152505050608001529392505050565b6000825161280881846020870161230b565b919091019291505056fea2646970667358221220cac5ab2b6727c730cff56df930f6ff0db84dc8e36b9ea1720849b8d7b57a404364736f6c63430008130033000000000000000000000000867c0be12938f94dcb15a6d29e4cbd6ce4edd831

Deployed Bytecode

0x60806040526004361061023f5760003560e01c806370a082311161012e578063a457c2d7116100ab578063dd62ed3e1161006f578063dd62ed3e146106ba578063e27a55fe146106da578063f2fde38b146106f0578063f7f23a0c14610710578063f8b45b051461072557600080fd5b8063a457c2d71461061a578063a9059cbb1461063a578063b0249cc61461065a578063bbc0c7421461068a578063c3f70b52146106a457600080fd5b80638d3e6e40116100f25780638d3e6e40146105815780638da5cb5b146105b157806395d89b41146105cf5780639e93ad8e146105e4578063a13d1a2b146105fa57600080fd5b806370a08231146104ec578063715018a614610522578063751039fc1461053757806377b27d1f1461054c5780638a8c523c1461056c57600080fd5b806339509351116101bc5780635431c94e116101805780635431c94e146104515780635a90a49e146104715780635df6e68e146104a15780636d8813c5146104b75780636ddd1713146104cd57600080fd5b806339509351146103bb5780633b611e00146103db578063436d3340146103f0578063452ed4f1146104105780634a62bb651461043757600080fd5b806312185a391161020357806312185a391461032057806318160ddd146103405780631c499ab01461035f57806323b872dd1461037f578063313ce5671461039f57600080fd5b80630517d13d1461024b57806306fdde031461026d5780630758d92414610298578063095ea7b3146102d0578063114ca2ed1461030057600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026b6102663660046122f2565b61073b565b005b34801561027957600080fd5b50610282610830565b60405161028f919061232f565b60405180910390f35b3480156102a457600080fd5b506014546102b8906001600160a01b031681565b6040516001600160a01b03909116815260200161028f565b3480156102dc57600080fd5b506102f06102eb366004612377565b6108c2565b604051901515815260200161028f565b34801561030c57600080fd5b50600d546102b8906001600160a01b031681565b34801561032c57600080fd5b5061026b61033b3660046122f2565b6108dc565b34801561034c57600080fd5b506002545b60405190815260200161028f565b34801561036b57600080fd5b5061026b61037a3660046122f2565b610985565b34801561038b57600080fd5b506102f061039a3660046123a3565b610a6a565b3480156103ab57600080fd5b506040516012815260200161028f565b3480156103c757600080fd5b506102f06103d6366004612377565b610a90565b3480156103e757600080fd5b5061026b610ab2565b3480156103fc57600080fd5b5061026b61040b3660046122f2565b610b41565b34801561041c57600080fd5b506013546102b890630100000090046001600160a01b031681565b34801561044357600080fd5b506013546102f09060ff1681565b34801561045d57600080fd5b5061026b61046c3660046123e4565b610bea565b34801561047d57600080fd5b506102f061048c36600461241d565b60066020526000908152604090205460ff1681565b3480156104ad57600080fd5b50610351600e5481565b3480156104c357600080fd5b50610351600c5481565b3480156104d957600080fd5b506013546102f090610100900460ff1681565b3480156104f857600080fd5b5061035161050736600461241d565b6001600160a01b031660009081526020819052604090205490565b34801561052e57600080fd5b5061026b610ce7565b34801561054357600080fd5b5061026b610d5b565b34801561055857600080fd5b5061026b610567366004612448565b610dc6565b34801561057857600080fd5b5061026b610e99565b34801561058d57600080fd5b506102f061059c36600461241d565b60076020526000908152604090205460ff1681565b3480156105bd57600080fd5b506005546001600160a01b03166102b8565b3480156105db57600080fd5b50610282610ee1565b3480156105f057600080fd5b5061035161271081565b34801561060657600080fd5b5061026b610615366004612448565b610ef0565b34801561062657600080fd5b506102f0610635366004612377565b61101a565b34801561064657600080fd5b506102f0610655366004612377565b6110a0565b34801561066657600080fd5b506102f061067536600461241d565b60096020526000908152604090205460ff1681565b34801561069657600080fd5b506008546102f09060ff1681565b3480156106b057600080fd5b50610351600a5481565b3480156106c657600080fd5b506103516106d53660046123e4565b6110ae565b3480156106e657600080fd5b50610351600f5481565b3480156106fc57600080fd5b5061026b61070b36600461241d565b6110d9565b34801561071c57600080fd5b5061026b6111c4565b34801561073157600080fd5b50610351600b5481565b6005546001600160a01b0316331461076e5760405162461bcd60e51b815260040161076590612476565b60405180910390fd5b61077a6012600a6125a5565b6103e861078660025490565b6107919060056125b4565b61079b91906125cb565b6107a591906125cb565b8110156107de5760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610765565b6107ea6012600a6125a5565b6107f490826125b4565b600a8190556040519081527f76a9278644b7300961aa0e7e86f10934585987f1daf1c6ecc971c18376691574906020015b60405180910390a150565b60606003805461083f906125ed565b80601f016020809104026020016040519081016040528092919081815260200182805461086b906125ed565b80156108b85780601f1061088d576101008083540402835291602001916108b8565b820191906000526020600020905b81548152906001019060200180831161089b57829003601f168201915b5050505050905090565b6000336108d081858561159d565b60019150505b92915050565b6005546001600160a01b031633146109065760405162461bcd60e51b815260040161076590612476565b600f8190556104b08111156109525760405162461bcd60e51b81526020600482015260126024820152714b656570207461782062656c6f772031322560701b6044820152606401610765565b7fa02824f65350567bc405e202b741e7ca6274004a9feeb44149df72b8bd599c97600f5460405161082591815260200190565b6005546001600160a01b031633146109af5760405162461bcd60e51b815260040161076590612476565b6109bb6012600a6125a5565b6103e86109c760025490565b6109d290600f6125b4565b6109dc91906125cb565b6109e691906125cb565b811015610a1f5760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610765565b610a2b6012600a6125a5565b610a3590826125b4565b600b8190556040519081527f3046ad62de8b70d396246aaed19ff2559ff20df8706520cbde58320766c4276290602001610825565b600033610a788582856116c1565b610a8385858561173b565b60019150505b9392505050565b6000336108d0818585610aa383836110ae565b610aad9190612627565b61159d565b6005546001600160a01b03163314610ac957600080fd5b60004711610b125760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b6044820152606401610765565b60405133904780156108fc02916000818181858888f19350505050158015610b3e573d6000803e3d6000fd5b50565b6005546001600160a01b03163314610b6b5760405162461bcd60e51b815260040161076590612476565b600e8190556104b0811115610bb75760405162461bcd60e51b81526020600482015260126024820152714b656570207461782062656c6f772031322560701b6044820152606401610765565b7f5380a61520019ce8270d583f62f1b2b9f4f4372e1acaaf708f4865cecece0508600e5460405161082591815260200190565b6005546001600160a01b03163314610c145760405162461bcd60e51b815260040161076590612476565b6001600160a01b038216610c6a5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610765565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd5919061263a565b9050610ce2838383611791565b505050565b6005546001600160a01b03163314610d115760405162461bcd60e51b815260040161076590612476565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610d855760405162461bcd60e51b815260040161076590612476565b6013805460ff19169055600254600a55600254600b556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b03163314610df05760405162461bcd60e51b815260040161076590612476565b6001600160a01b038216610e355760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610765565b6001600160a01b038216600081815260066020908152604091829020805460ff19168515159081179091558251938452908301527f998cce27cbf44405c67eb636a634d5e2f2e6ff248b3d71fbbbb022f3c4c6dd2d91015b60405180910390a15050565b6005546001600160a01b03163314610ec35760405162461bcd60e51b815260040161076590612476565b6008805460ff191660011790556013805461ff001916610100179055565b60606004805461083f906125ed565b6005546001600160a01b03163314610f1a5760405162461bcd60e51b815260040161076590612476565b6001600160a01b038216610f5f5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610765565b80610fbe576013546001600160a01b036301000000909104811690831603610fbe5760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb32903830b4b960711b6044820152606401610765565b6001600160a01b038216600081815260076020908152604091829020805460ff19168515159081179091558251938452908301527f8f9f40630a1d139e6cf69b4f447ca47a36f10a017524efaa38252e516fa227ce9101610e8d565b6000338161102882866110ae565b9050838110156110885760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610765565b611095828686840361159d565b506001949350505050565b6000336108d081858561173b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b031633146111035760405162461bcd60e51b815260040161076590612476565b6001600160a01b0381166111685760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610765565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111ee5760405162461bcd60e51b815260040161076590612476565b60085460ff16156112415760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610765565b601460009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b89190612653565b6001600160a01b031663c9c6539630601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561131a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133e9190612653565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561138b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113af9190612653565b601380546301000000600160b81b03191663010000006001600160a01b0393841681029190911780835581900483166000908152600960209081526040808320805460ff1990811660019081179092559554949094048616835260079091529020805490921617905560145461142a9130911660001961159d565b6014546114459033906001600160a01b0316610aad60025490565b6014546001600160a01b031663f305d7194730611477816001600160a01b031660009081526020819052604090205490565b60008061148c6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156114f4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115199190612670565b505060135460145460405163095ea7b360e01b81526001600160a01b0391821660048201526000196024820152630100000090920416915063095ea7b3906044016020604051808303816000875af1158015611579573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3e919061269e565b6001600160a01b0383166115ff5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610765565b6001600160a01b0382166116605760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610765565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006116cd84846110ae565b9050600019811461173557818110156117285760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610765565b611735848484840361159d565b50505050565b6117468383836117e3565b601354610100900460ff161580611765575060135462010000900460ff165b1561176f57505050565b61177a838383611b19565b61178490826126bb565b9050610ce2838383611cb9565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ce2908490611de4565b60085460ff16611871576001600160a01b03831660009081526006602052604090205460ff168061182c57506001600160a01b03821660009081526006602052604090205460ff165b6118715760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610765565b601354610100900460ff161580611890575060135462010000900460ff165b156118a057610ce2838383611cb9565b60135460ff1615610ce2576001600160a01b03831660009081526009602052604090205460ff1680156118ec57506001600160a01b03821660009081526007602052604090205460ff16155b156119d157600a548111156119435760405162461bcd60e51b815260206004820152601d60248201527f427579207472616e7366657220616d6f756e742065786365656465642e0000006044820152606401610765565b600b546001600160a01b0383166000908152602081905260409020546119699083612627565b11156119b75760405162461bcd60e51b815260206004820152601b60248201527f556e61626c6520746f20657863656564204d61782057616c6c657400000000006044820152606401610765565b601280549060006119c7836126ce565b9190505550505050565b6001600160a01b03821660009081526009602052604090205460ff168015611a1257506001600160a01b03831660009081526007602052604090205460ff16155b15611a8557600a54811115610ce25760405162461bcd60e51b815260206004820152603360248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152721036b0bc2a3930b739b0b1ba34b7b720b6ba1760691b6064820152608401610765565b6001600160a01b03821660009081526007602052604090205460ff16610ce257600b546001600160a01b038316600090815260208190526040902054611acb9083612627565b1115610ce25760405162461bcd60e51b815260206004820152601b60248201527f556e61626c6520746f20657863656564204d61782057616c6c657400000000006044820152606401610765565b601354600090610100900460ff168015611b3c575060135462010000900460ff16155b8015611b6057506001600160a01b03831660009081526009602052604090205460ff165b8015611b8557506001600160a01b03841660009081526006602052604090205460ff16155b15611bb1576013805462ff0000191662010000179055611ba482611eb6565b6013805462ff0000191690555b6001600160a01b03841660009081526006602052604090205460019060ff1615611bd9575060005b828115611ca357506001600160a01b03841660009081526009602052604081205460ff1615611c375761271060105460125411611c1857601154611c1c565b600f545b611c2690866125b4565b611c3091906125cb565b9050611c89565b6001600160a01b03861660009081526009602052604090205460ff1615611c895761271060105460125411611c6e57601154611c72565b600e545b611c7c90866125b4565b611c8691906125cb565b90505b8015611c9a57611c9a863083611cb9565b9150610a899050565b611cae863083611f12565b600092505050610a89565b6001600160a01b038316611cdf5760405162461bcd60e51b8152600401610765906126e7565b6001600160a01b038216611d055760405162461bcd60e51b81526004016107659061272c565b6001600160a01b03831660009081526020819052604090205481811015611d7d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610765565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a3611735565b6000611e39826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611fe39092919063ffffffff16565b805190915015610ce25780806020019051810190611e57919061269e565b610ce25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610765565b30600090815260208190526040812054908115801590611ed75750600c5482105b15611ee3575080611ef9565b600c54831115611ef65750600c54611ef9565b50815b8115611f0857611f0881611ffa565b476117358161213b565b6001600160a01b038316611f385760405162461bcd60e51b8152600401610765906126e7565b6001600160a01b038216611f5e5760405162461bcd60e51b81526004016107659061272c565b6001600160a01b038084166000908152602081905260408082208054858103909155928516825281208054849290611f97908490612627565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dd791815260200190565b6060611ff28484600085612179565b949350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061202f5761202f61276f565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ac9190612653565b816001815181106120bf576120bf61276f565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b815291169063791ac94790612105908590600090869030904290600401612785565b600060405180830381600087803b15801561211f57600080fd5b505af1158015612133573d6000803e3d6000fd5b505050505050565b600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612175573d6000803e3d6000fd5b5050565b6060824710156121da5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610765565b600080866001600160a01b031685876040516121f691906127f6565b60006040518083038185875af1925050503d8060008114612233576040519150601f19603f3d011682016040523d82523d6000602084013e612238565b606091505b509150915061224987838387612254565b979650505050505050565b606083156122c35782516000036122bc576001600160a01b0385163b6122bc5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610765565b5081611ff2565b611ff283838151156122d85781518083602001fd5b8060405162461bcd60e51b8152600401610765919061232f565b60006020828403121561230457600080fd5b5035919050565b60005b8381101561232657818101518382015260200161230e565b50506000910152565b602081526000825180602084015261234e81604085016020870161230b565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610b3e57600080fd5b6000806040838503121561238a57600080fd5b823561239581612362565b946020939093013593505050565b6000806000606084860312156123b857600080fd5b83356123c381612362565b925060208401356123d381612362565b929592945050506040919091013590565b600080604083850312156123f757600080fd5b823561240281612362565b9150602083013561241281612362565b809150509250929050565b60006020828403121561242f57600080fd5b8135610a8981612362565b8015158114610b3e57600080fd5b6000806040838503121561245b57600080fd5b823561246681612362565b915060208301356124128161243a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156124fc5781600019048211156124e2576124e26124ab565b808516156124ef57918102915b93841c93908002906124c6565b509250929050565b600082612513575060016108d6565b81612520575060006108d6565b816001811461253657600281146125405761255c565b60019150506108d6565b60ff841115612551576125516124ab565b50506001821b6108d6565b5060208310610133831016604e8410600b841016171561257f575081810a6108d6565b61258983836124c1565b806000190482111561259d5761259d6124ab565b029392505050565b6000610a8960ff841683612504565b80820281158282048414176108d6576108d66124ab565b6000826125e857634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061260157607f821691505b60208210810361262157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156108d6576108d66124ab565b60006020828403121561264c57600080fd5b5051919050565b60006020828403121561266557600080fd5b8151610a8981612362565b60008060006060848603121561268557600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156126b057600080fd5b8151610a898161243a565b818103818111156108d6576108d66124ab565b6000600182016126e0576126e06124ab565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127d55784516001600160a01b0316835293830193918301916001016127b0565b50506001600160a01b03969096166060850152505050608001529392505050565b6000825161280881846020870161230b565b919091019291505056fea2646970667358221220cac5ab2b6727c730cff56df930f6ff0db84dc8e36b9ea1720849b8d7b57a404364736f6c63430008130033

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

000000000000000000000000867c0be12938f94dcb15a6d29e4cbd6ce4edd831

-----Decoded View---------------
Arg [0] : _wallet (address): 0x867c0be12938F94DCb15a6d29e4CBd6cE4EDd831

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000867c0be12938f94dcb15a6d29e4cbd6ce4edd831


Deployed Bytecode Sourcemap

28390:10143:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35723:332;;;;;;;;;;-1:-1:-1;35723:332:0;;;;;:::i;:::-;;:::i;:::-;;4424:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29087:27;;;;;;;;;;-1:-1:-1;29087:27:0;;;;-1:-1:-1;;;;;29087:27:0;;;;;;-1:-1:-1;;;;;1038:32:1;;;1020:51;;1008:2;993:18;29087:27:0;855:222:1;6850:226:0;;;;;;;;;;-1:-1:-1;6850:226:0;;;;;:::i;:::-;;:::i;:::-;;;1703:14:1;;1696:22;1678:41;;1666:2;1651:18;6850:226:0;1538:187:1;28719:33:0;;;;;;;;;;-1:-1:-1;28719:33:0;;;;-1:-1:-1;;;;;28719:33:0;;;36634:230;;;;;;;;;;-1:-1:-1;36634:230:0;;;;;:::i;:::-;;:::i;5553:108::-;;;;;;;;;;-1:-1:-1;5641:12:0;;5553:108;;;2084:25:1;;;2072:2;2057:18;5553:108:0;1938:177:1;36063:330:0;;;;;;;;;;-1:-1:-1;36063:330:0;;;;;:::i;:::-;;:::i;7656:295::-;;;;;;;;;;-1:-1:-1;7656:295:0;;;;;:::i;:::-;;:::i;5395:93::-;;;;;;;;;;-1:-1:-1;5395:93:0;;5478:2;2723:36:1;;2711:2;2696:18;5395:93:0;2581:184:1;8360:263:0;;;;;;;;;;-1:-1:-1;8360:263:0;;;;;:::i;:::-;;:::i;37971:217::-;;;;;;;;;;;;;:::i;36401:225::-;;;;;;;;;;-1:-1:-1;36401:225:0;;;;;:::i;:::-;;:::i;29059:21::-;;;;;;;;;;-1:-1:-1;29059:21:0;;;;;;;-1:-1:-1;;;;;29059:21:0;;;28949:33;;;;;;;;;;-1:-1:-1;28949:33:0;;;;;;;;38196:297;;;;;;;;;;-1:-1:-1;38196:297:0;;;;;:::i;:::-;;:::i;28428:46::-;;;;;;;;;;-1:-1:-1;28428:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28761:30;;;;;;;;;;;;;;;;28689:21;;;;;;;;;;;;;;;;28991:31;;;;;;;;;;-1:-1:-1;28991:31:0;;;;;;;;;;;5724:143;;;;;;;;;;-1:-1:-1;5724:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;5841:18:0;5814:7;5841:18;;;;;;;;;;;;5724:143;17212:150;;;;;;;;;;;;;:::i;37771:192::-;;;;;;;;;;;;;:::i;35055:272::-;;;;;;;;;;-1:-1:-1;35055:272:0;;;;;:::i;:::-;;:::i;37651:112::-;;;;;;;;;;;;;:::i;28481:48::-;;;;;;;;;;-1:-1:-1;28481:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16998:79;;;;;;;;;;-1:-1:-1;17063:6:0;;-1:-1:-1;;;;;17063:6:0;16998:79;;4643:104;;;;;;;;;;;;;:::i;29123:43::-;;;;;;;;;;;;29161:5;29123:43;;35335:380;;;;;;;;;;-1:-1:-1;35335:380:0;;;;;:::i;:::-;;:::i;9126:498::-;;;;;;;;;;-1:-1:-1;9126:498:0;;;;;:::i;:::-;;:::i;6073:218::-;;;;;;;;;;-1:-1:-1;6073:218:0;;;;;:::i;:::-;;:::i;28572:41::-;;;;;;;;;;-1:-1:-1;28572:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28538:25;;;;;;;;;;-1:-1:-1;28538:25:0;;;;;;;;28622:29;;;;;;;;;;;;;;;;6354:176;;;;;;;;;;-1:-1:-1;6354:176:0;;;;;:::i;:::-;;:::i;28798:31::-;;;;;;;;;;;;;;;;17370:281;;;;;;;;;;-1:-1:-1;17370:281:0;;;;;:::i;:::-;;:::i;36872:771::-;;;;;;;;;;;;;:::i;28658:24::-;;;;;;;;;;;;;;;;35723:332;17125:6;;-1:-1:-1;;;;;17125:6:0;325:10;17125:22;17117:67;;;;-1:-1:-1;;;17117:67:0;;;;;;;:::i;:::-;;;;;;;;;35879:16:::1;5478:2:::0;35879::::1;:16;:::i;:::-;35870:4;35849:13;5641:12:::0;;;5553:108;35849:13:::1;:17;::::0;35865:1:::1;35849:17;:::i;:::-;35848:26;;;;:::i;:::-;35847:49;;;;:::i;:::-;35829:14;:67;;35807:124;;;::::0;-1:-1:-1;;;35807:124:0;;6398:2:1;35807:124:0::1;::::0;::::1;6380:21:1::0;6437:1;6417:18;;;6410:29;-1:-1:-1;;;6455:18:1;;;6448:37;6502:18;;35807:124:0::1;6196:330:1::0;35807:124:0::1;35977:16;5478:2:::0;35977::::1;:16;:::i;:::-;35959:35;::::0;:14;:35:::1;:::i;:::-;35942:14;:52:::0;;;36010:37:::1;::::0;2084:25:1;;;36010:37:0::1;::::0;2072:2:1;2057:18;36010:37:0::1;;;;;;;;35723:332:::0;:::o;4424:100::-;4478:13;4511:5;4504:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4424:100;:::o;6850:226::-;6958:4;325:10;7014:32;325:10;7030:7;7039:6;7014:8;:32::i;:::-;7064:4;7057:11;;;6850:226;;;;;:::o;36634:230::-;17125:6;;-1:-1:-1;;;;;17125:6:0;325:10;17125:22;17117:67;;;;-1:-1:-1;;;17117:67:0;;;;;;;:::i;:::-;36716:12:::1;:34:::0;;;36785:4:::1;36769:20:::0;::::1;;36761:51;;;::::0;-1:-1:-1;;;36761:51:0;;7118:2:1;36761:51:0::1;::::0;::::1;7100:21:1::0;7157:2;7137:18;;;7130:30;-1:-1:-1;;;7176:18:1;;;7169:48;7234:18;;36761:51:0::1;6916:342:1::0;36761:51:0::1;36828:28;36843:12;;36828:28;;;;2084:25:1::0;;2072:2;2057:18;;1938:177;36063:330:0;17125:6;;-1:-1:-1;;;;;17125:6:0;325:10;17125:22;17117:67;;;;-1:-1:-1;;;17117:67:0;;;;;;;:::i;:::-;36232:16:::1;5478:2:::0;36232::::1;:16;:::i;:::-;36223:4;36201:13;5641:12:::0;;;5553:108;36201:13:::1;:18;::::0;36217:2:::1;36201:18;:::i;:::-;36200:27;;;;:::i;:::-;36199:50;;;;:::i;:::-;36164:14;:85;;36142:142;;;::::0;-1:-1:-1;;;36142:142:0;;6398:2:1;36142:142:0::1;::::0;::::1;6380:21:1::0;6437:1;6417:18;;;6410:29;-1:-1:-1;;;6455:18:1;;;6448:37;6502:18;;36142:142:0::1;6196:330:1::0;36142:142:0::1;36325:16;5478:2:::0;36325::::1;:16;:::i;:::-;36307:35;::::0;:14;:35:::1;:::i;:::-;36295:9;:47:::0;;;36358:27:::1;::::0;2084:25:1;;;36358:27:0::1;::::0;2072:2:1;2057:18;36358:27:0::1;1938:177:1::0;7656:295:0;7787:4;325:10;7845:38;7861:4;325:10;7876:6;7845:15;:38::i;:::-;7894:27;7904:4;7910:2;7914:6;7894:9;:27::i;:::-;7939:4;7932:11;;;7656:295;;;;;;:::o;8360:263::-;8473:4;325:10;8529:64;325:10;8545:7;8582:10;8554:25;325:10;8545:7;8554:9;:25::i;:::-;:38;;;;:::i;:::-;8529:8;:64::i;37971:217::-;17063:6;;-1:-1:-1;;;;;17063:6:0;38025:10;:21;38017:30;;;;;;38090:1;38066:21;:25;38058:60;;;;-1:-1:-1;;;38058:60:0;;7595:2:1;38058:60:0;;;7577:21:1;7634:2;7614:18;;;7607:30;-1:-1:-1;;;7653:18:1;;;7646:52;7715:18;;38058:60:0;7393:346:1;38058:60:0;38129:51;;38137:10;;38158:21;38129:51;;;;;;;;;38158:21;38137:10;38129:51;;;;;;;;;;;;;;;;;;;;;37971:217::o;36401:225::-;17125:6;;-1:-1:-1;;;;;17125:6:0;325:10;17125:22;17117:67;;;;-1:-1:-1;;;17117:67:0;;;;;;;:::i;:::-;36482:11:::1;:33:::0;;;36549:4:::1;36534:19:::0;::::1;;36526:50;;;::::0;-1:-1:-1;;;36526:50:0;;7118:2:1;36526:50:0::1;::::0;::::1;7100:21:1::0;7157:2;7137:18;;;7130:30;-1:-1:-1;;;7176:18:1;;;7169:48;7234:18;;36526:50:0::1;6916:342:1::0;36526:50:0::1;36592:26;36606:11;;36592:26;;;;2084:25:1::0;;2072:2;2057:18;;1938:177;38196:297:0;17125:6;;-1:-1:-1;;;;;17125:6:0;325:10;17125:22;17117:67;;;;-1:-1:-1;;;17117:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38285:20:0;::::1;38277:59;;;::::0;-1:-1:-1;;;38277:59:0;;7946:2:1;38277:59:0::1;::::0;::::1;7928:21:1::0;7985:2;7965:18;;;7958:30;8024:28;8004:18;;;7997:56;8070:18;;38277:59:0::1;7744:350:1::0;38277:59:0::1;38374:39;::::0;-1:-1:-1;;;38374:39:0;;38407:4:::1;38374:39;::::0;::::1;1020:51:1::0;38347:24:0::1;::::0;-1:-1:-1;;;;;38374:24:0;::::1;::::0;::::1;::::0;993:18:1;;38374:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38347:66;;38424:61;38454:6;38463:3;38468:16;38424:22;:61::i;:::-;38266:227;38196:297:::0;;:::o;17212:150::-;17125:6;;-1:-1:-1;;;;;17125:6:0;325:10;17125:22;17117:67;;;;-1:-1:-1;;;17117:67:0;;;;;;;:::i;:::-;17305:6:::1;::::0;17284:40:::1;::::0;17321:1:::1;::::0;-1:-1:-1;;;;;17305:6:0::1;::::0;17284:40:::1;::::0;17321:1;;17284:40:::1;17335:6;:19:::0;;-1:-1:-1;;;;;;17335:19:0::1;::::0;;17212:150::o;37771:192::-;17125:6;;-1:-1:-1;;;;;17125:6:0;325:10;17125:22;17117:67;;;;-1:-1:-1;;;17117:67:0;;;;;;;:::i;:::-;37825:14:::1;:22:::0;;-1:-1:-1;;37825:22:0::1;::::0;;5641:12;;37858:14:::1;:30:::0;5641:12;;37899:9:::1;:25:::0;37940:15:::1;::::0;::::1;::::0;;;::::1;37771:192::o:0;35055:272::-;17125:6;;-1:-1:-1;;;;;17125:6:0;325:10;17125:22;17117:67;;;;-1:-1:-1;;;17117:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35179:22:0;::::1;35171:47;;;::::0;-1:-1:-1;;;35171:47:0;;8490:2:1;35171:47:0::1;::::0;::::1;8472:21:1::0;8529:2;8509:18;;;8502:30;-1:-1:-1;;;8548:18:1;;;8541:42;8600:18;;35171:47:0::1;8288:336:1::0;35171:47:0::1;-1:-1:-1::0;;;;;35229:24:0;::::1;;::::0;;;:14:::1;:24;::::0;;;;;;;;:36;;-1:-1:-1;;35229:36:0::1;::::0;::::1;;::::0;;::::1;::::0;;;35281:38;;8797:51:1;;;8864:18;;;8857:50;35281:38:0::1;::::0;8770:18:1;35281:38:0::1;;;;;;;;35055:272:::0;;:::o;37651:112::-;17125:6;;-1:-1:-1;;;;;17125:6:0;325:10;17125:22;17117:67;;;;-1:-1:-1;;;17117:67:0;;;;;;;:::i;:::-;37706:13:::1;:20:::0;;-1:-1:-1;;37706:20:0::1;37722:4;37706:20;::::0;;37737:11:::1;:18:::0;;-1:-1:-1;;37737:18:0::1;37706:20;37737:18;::::0;;37651:112::o;4643:104::-;4699:13;4732:7;4725:14;;;;;:::i;35335:380::-;17125:6;;-1:-1:-1;;;;;17125:6:0;325:10;17125:22;17117:67;;;;-1:-1:-1;;;17117:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35461:22:0;::::1;35453:47;;;::::0;-1:-1:-1;;;35453:47:0;;8490:2:1;35453:47:0::1;::::0;::::1;8472:21:1::0;8529:2;8509:18;;;8502:30;-1:-1:-1;;;8548:18:1;;;8541:42;8600:18;;35453:47:0::1;8288:336:1::0;35453:47:0::1;35516:9;35511:92;;35562:6;::::0;-1:-1:-1;;;;;35562:6:0;;;::::1;::::0;::::1;35550:18:::0;;::::1;::::0;35542:49:::1;;;::::0;-1:-1:-1;;;35542:49:0;;9120:2:1;35542:49:0::1;::::0;::::1;9102:21:1::0;9159:2;9139:18;;;9132:30;-1:-1:-1;;;9178:18:1;;;9171:48;9236:18;;35542:49:0::1;8918:342:1::0;35542:49:0::1;-1:-1:-1::0;;;;;35613:26:0;::::1;;::::0;;;:16:::1;:26;::::0;;;;;;;;:38;;-1:-1:-1;;35613:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;35667:40;;8797:51:1;;;8864:18;;;8857:50;35667:40:0::1;::::0;8770:18:1;35667:40:0::1;8629:284:1::0;9126:498:0;9244:4;325:10;9244:4;9327:25;325:10;9344:7;9327:9;:25::i;:::-;9300:52;;9405:15;9385:16;:35;;9363:122;;;;-1:-1:-1;;;9363:122:0;;9467:2:1;9363:122:0;;;9449:21:1;9506:2;9486:18;;;9479:30;9545:34;9525:18;;;9518:62;-1:-1:-1;;;9596:18:1;;;9589:35;9641:19;;9363:122:0;9265:401:1;9363:122:0;9521:60;9530:5;9537:7;9565:15;9546:16;:34;9521:8;:60::i;:::-;-1:-1:-1;9612:4:0;;9126:498;-1:-1:-1;;;;9126:498:0:o;6073:218::-;6177:4;325:10;6233:28;325:10;6250:2;6254:6;6233:9;:28::i;6354:176::-;-1:-1:-1;;;;;6495:18:0;;;6468:7;6495:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6354:176::o;17370:281::-;17125:6;;-1:-1:-1;;;;;17125:6:0;325:10;17125:22;17117:67;;;;-1:-1:-1;;;17117:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17473:22:0;::::1;17451:110;;;::::0;-1:-1:-1;;;17451:110:0;;9873:2:1;17451:110:0::1;::::0;::::1;9855:21:1::0;9912:2;9892:18;;;9885:30;9951:34;9931:18;;;9924:62;-1:-1:-1;;;10002:18:1;;;9995:36;10048:19;;17451:110:0::1;9671:402:1::0;17451:110:0::1;17598:6;::::0;17577:38:::1;::::0;-1:-1:-1;;;;;17577:38:0;;::::1;::::0;17598:6:::1;::::0;17577:38:::1;::::0;17598:6:::1;::::0;17577:38:::1;17626:6;:17:::0;;-1:-1:-1;;;;;;17626:17:0::1;-1:-1:-1::0;;;;;17626:17:0;;;::::1;::::0;;;::::1;::::0;;17370:281::o;36872:771::-;17125:6;;-1:-1:-1;;;;;17125:6:0;325:10;17125:22;17117:67;;;;-1:-1:-1;;;17117:67:0;;;;;;;:::i;:::-;36931:13:::1;::::0;::::1;;36930:14;36922:50;;;::::0;-1:-1:-1;;;36922:50:0;;10280:2:1;36922:50:0::1;::::0;::::1;10262:21:1::0;10319:2;10299:18;;;10292:30;10358:25;10338:18;;;10331:53;10401:18;;36922:50:0::1;10078:347:1::0;36922:50:0::1;37004:9;;;;;;;;;-1:-1:-1::0;;;;;37004:9:0::1;-1:-1:-1::0;;;;;37004:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36992:43:0::1;;37058:4;37078:9;;;;;;;;;-1:-1:-1::0;;;;;37078:9:0::1;-1:-1:-1::0;;;;;37078:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36992:113;::::0;-1:-1:-1;;;;;;36992:113:0::1;::::0;;;;;;-1:-1:-1;;;;;10916:15:1;;;36992:113:0::1;::::0;::::1;10898:34:1::0;10968:15;;10948:18;;;10941:43;10833:18;;36992:113:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36983:6;:122:::0;;-1:-1:-1;;;;;;36983:122:0::1;::::0;-1:-1:-1;;;;;36983:122:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;37128:6;;::::1;::::0;::::1;-1:-1:-1::0;37118:17:0;;;:9:::1;:17;::::0;;;;;;;:24;;-1:-1:-1;;37118:24:0;;::::1;-1:-1:-1::0;37118:24:0;;::::1;::::0;;;37172:6;;;;;::::1;::::0;::::1;37155:24:::0;;:16:::1;:24:::0;;;;;:31;;;;::::1;;::::0;;37231:9:::1;::::0;37199:62:::1;::::0;37216:4:::1;::::0;37231:9:::1;-1:-1:-1::0;;37199:8:0::1;:62::i;:::-;37310:9;::::0;37272:64:::1;::::0;37289:10:::1;::::0;-1:-1:-1;;;;;37310:9:0::1;37322:13;5641:12:::0;;;5553:108;37272:64:::1;37349:9;::::0;-1:-1:-1;;;;;37349:9:0::1;:25;37382:21;37427:4;37447:24;37427:4:::0;-1:-1:-1;;;;;5841:18:0;5814:7;5841:18;;;;;;;;;;;;5724:143;37447:24:::1;37486:1;37502::::0;37518:7:::1;17063:6:::0;;-1:-1:-1;;;;;17063:6:0;;16998:79;37518:7:::1;37349:217;::::0;::::1;::::0;;;-1:-1:-1;;;;;;37349:217:0;;;-1:-1:-1;;;;;11354:15:1;;;37349:217:0::1;::::0;::::1;11336:34:1::0;11386:18;;;11379:34;;;;11429:18;;;11422:34;;;;11472:18;;;11465:34;11536:15;;;11515:19;;;11508:44;37540:15:0::1;11568:19:1::0;;;11561:35;11270:19;;37349:217:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;37584:6:0::1;::::0;37608:9:::1;::::0;37577:58:::1;::::0;-1:-1:-1;;;37577:58:0;;-1:-1:-1;;;;;37608:9:0;;::::1;37577:58;::::0;::::1;12092:51:1::0;-1:-1:-1;;12159:18:1;;;12152:34;37584:6:0;;;::::1;;::::0;-1:-1:-1;37577:22:0::1;::::0;12065:18:1;;37577:58:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14021:380::-:0;-1:-1:-1;;;;;14157:19:0;;14149:68;;;;-1:-1:-1;;;14149:68:0;;12649:2:1;14149:68:0;;;12631:21:1;12688:2;12668:18;;;12661:30;12727:34;12707:18;;;12700:62;-1:-1:-1;;;12778:18:1;;;12771:34;12822:19;;14149:68:0;12447:400:1;14149:68:0;-1:-1:-1;;;;;14236:21:0;;14228:68;;;;-1:-1:-1;;;14228:68:0;;13054:2:1;14228:68:0;;;13036:21:1;13093:2;13073:18;;;13066:30;13132:34;13112:18;;;13105:62;-1:-1:-1;;;13183:18:1;;;13176:32;13225:19;;14228:68:0;12852:398:1;14228:68:0;-1:-1:-1;;;;;14309:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14361:32;;2084:25:1;;;14361:32:0;;2057:18:1;14361:32:0;;;;;;;14021:380;;;:::o;14692:502::-;14827:24;14854:25;14864:5;14871:7;14854:9;:25::i;:::-;14827:52;;-1:-1:-1;;14894:16:0;:37;14890:297;;14994:6;14974:16;:26;;14948:117;;;;-1:-1:-1;;;14948:117:0;;13457:2:1;14948:117:0;;;13439:21:1;13496:2;13476:18;;;13469:30;13535:31;13515:18;;;13508:59;13584:18;;14948:117:0;13255:353:1;14948:117:0;15109:51;15118:5;15125:7;15153:6;15134:16;:25;15109:8;:51::i;:::-;14816:378;14692:502;;;:::o;30978:317::-;31110:29;31122:4;31128:2;31132:6;31110:11;:29::i;:::-;31157:11;;;;;;;31156:12;;:24;;-1:-1:-1;31172:8:0;;;;;;;31156:24;31152:37;;;30978:317;;;:::o;31152:37::-;31211:30;31224:4;31230:2;31234:6;31211:12;:30::i;:::-;31201:40;;;;:::i;:::-;;;31254:33;31270:4;31276:2;31280:6;31254:15;:33::i;24694:214::-;24831:58;;;-1:-1:-1;;;;;12110:32:1;;24831:58:0;;;12092:51:1;12159:18;;;;12152:34;;;24831:58:0;;;;;;;;;;12065:18:1;;;;24831:58:0;;;;;;;;-1:-1:-1;;;;;24831:58:0;-1:-1:-1;;;24831:58:0;;;24777:123;;24811:5;;24777:19;:123::i;31303:1330::-;31391:13;;;;31386:173;;-1:-1:-1;;;;;31447:20:0;;;;;;:14;:20;;;;;;;;;:42;;-1:-1:-1;;;;;;31471:18:0;;;;;;:14;:18;;;;;;;;31447:42;31421:126;;;;-1:-1:-1;;;31421:126:0;;13948:2:1;31421:126:0;;;13930:21:1;13987:2;13967:18;;;13960:30;-1:-1:-1;;;14006:18:1;;;13999:52;14068:18;;31421:126:0;13746:346:1;31421:126:0;31576:11;;;;;;;31575:12;;:24;;-1:-1:-1;31591:8:0;;;;;;;31575:24;31571:111;;;31616:33;31632:4;31638:2;31642:6;31616:15;:33::i;31571:111::-;31698:14;;;;31694:932;;;-1:-1:-1;;;;;31753:15:0;;;;;;:9;:15;;;;;;;;:40;;;;-1:-1:-1;;;;;;31773:20:0;;;;;;:16;:20;;;;;;;;31772:21;31753:40;31749:866;;;31854:14;;31844:6;:24;;31814:127;;;;-1:-1:-1;;;31814:127:0;;14299:2:1;31814:127:0;;;14281:21:1;14338:2;14318:18;;;14311:30;14377:31;14357:18;;;14350:59;14426:18;;31814:127:0;14097:353:1;31814:127:0;32016:9;;-1:-1:-1;;;;;5841:18:0;;5814:7;5841:18;;;;;;;;;;;31990:22;;:6;:22;:::i;:::-;:35;;31960:136;;;;-1:-1:-1;;;31960:136:0;;14657:2:1;31960:136:0;;;14639:21:1;14696:2;14676:18;;;14669:30;14735:29;14715:18;;;14708:57;14782:18;;31960:136:0;14455:351:1;31960:136:0;32115:8;:10;;;:8;:10;;;:::i;:::-;;;;;;38266:227:::1;38196:297:::0;;:::o;31749:866::-;-1:-1:-1;;;;;32185:13:0;;;;;;:9;:13;;;;;;;;:40;;;;-1:-1:-1;;;;;;32203:22:0;;;;;;:16;:22;;;;;;;;32202:23;32185:40;32181:434;;;32286:14;;32276:6;:24;;32246:149;;;;-1:-1:-1;;;32246:149:0;;15153:2:1;32246:149:0;;;15135:21:1;15192:2;15172:18;;;15165:30;15231:34;15211:18;;;15204:62;-1:-1:-1;;;15282:18:1;;;15275:49;15341:19;;32246:149:0;14951:415:1;32181:434:0;-1:-1:-1;;;;;32422:20:0;;;;;;:16;:20;;;;;;;;32417:198;;32519:9;;-1:-1:-1;;;;;5841:18:0;;5814:7;5841:18;;;;;;;;;;;32493:22;;:6;:22;:::i;:::-;:35;;32463:136;;;;-1:-1:-1;;;32463:136:0;;14657:2:1;32463:136:0;;;14639:21:1;14696:2;14676:18;;;14669:30;14735:29;14715:18;;;14708:57;14782:18;;32463:136:0;14455:351:1;32641:1259:0;32795:11;;32757:7;;32795:11;;;;;:24;;;;-1:-1:-1;32811:8:0;;;;;;;32810:9;32795:24;:41;;;;-1:-1:-1;;;;;;32823:13:0;;;;;;:9;:13;;;;;;;;32795:41;:66;;;;-1:-1:-1;;;;;;32841:20:0;;;;;;:14;:20;;;;;;;;32840:21;32795:66;32777:200;;;32888:8;:15;;-1:-1:-1;;32888:15:0;;;;;32918:16;32927:6;32918:8;:16::i;:::-;32949:8;:16;;-1:-1:-1;;32949:16:0;;;32777:200;-1:-1:-1;;;;;33023:20:0;;32989:12;33023:20;;;:14;:20;;;;;;33004:4;;33023:20;;33019:68;;;-1:-1:-1;33070:5:0;33019:68;33113:6;33152:739;;;;-1:-1:-1;;;;;;33206:13:0;;33186:1;33206:13;;;:9;:13;;;;;;;;33202:445;;;29161:5;33314:8;;33303;;:19;:47;;33340:10;;33303:47;;;33325:12;;33303:47;33268:83;;:6;:83;:::i;:::-;33267:120;;;;:::i;:::-;33240:147;;33202:445;;;-1:-1:-1;;;;;33449:15:0;;;;;;:9;:15;;;;;;;;33445:202;;;29161:5;33559:8;;33548;;:19;:46;;33584:10;;33548:46;;;33570:11;;33548:46;33513:82;;:6;:82;:::i;:::-;33512:119;;;;:::i;:::-;33485:146;;33445:202;33665:7;;33661:89;;33693:41;33709:4;33723;33730:3;33693:15;:41::i;:::-;33771:3;-1:-1:-1;33764:10:0;;-1:-1:-1;33764:10:0;33152:739;33807:49;33831:4;33845;33852:3;33807:23;:49::i;:::-;33878:1;33871:8;;;;;;10094:877;-1:-1:-1;;;;;10225:18:0;;10217:68;;;;-1:-1:-1;;;10217:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10304:16:0;;10296:64;;;;-1:-1:-1;;;10296:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10446:15:0;;10424:19;10446:15;;;;;;;;;;;10494:21;;;;10472:109;;;;-1:-1:-1;;;10472:109:0;;16383:2:1;10472:109:0;;;16365:21:1;16422:2;16402:18;;;16395:30;16461:34;16441:18;;;16434:62;-1:-1:-1;;;16512:18:1;;;16505:36;16558:19;;10472:109:0;16181:402:1;10472:109:0;-1:-1:-1;;;;;10617:15:0;;;:9;:15;;;;;;;;;;;10635:20;;;10617:38;;10835:13;;;;;;;;;;:23;;;;;;10887:26;;2084:25:1;;;10835:13:0;;10887:26;;2057:18:1;10887:26:0;;;;;;;;10926:37;38196:297;25209:419;25290:23;25316:106;25358:4;25316:106;;;;;;;;;;;;;;;;;25324:5;-1:-1:-1;;;;;25316:27:0;;;:106;;;;;:::i;:::-;25437:17;;25290:132;;-1:-1:-1;25437:21:0;25433:188;;25512:10;25501:30;;;;;;;;;;;;:::i;:::-;25475:134;;;;-1:-1:-1;;;25475:134:0;;16790:2:1;25475:134:0;;;16772:21:1;16829:2;16809:18;;;16802:30;16868:34;16848:18;;;16841:62;-1:-1:-1;;;16919:18:1;;;16912:40;16969:19;;25475:134:0;16588:406:1;34307:604:0;34404:4;34360:23;5841:18;;;;;;;;;;;;34458:19;;;;;:47;;;34499:6;;34481:15;:24;34458:47;34454:281;;;-1:-1:-1;34537:15:0;34454:281;;;34598:6;;34589;:15;34585:139;;;-1:-1:-1;34640:6:0;;34585:139;;;-1:-1:-1;34702:6:0;34585:139;34751:19;;34747:55;;34772:30;34789:12;34772:16;:30::i;:::-;34844:21;34876:27;34844:21;34876:7;:27::i;12822:763::-;-1:-1:-1;;;;;12961:18:0;;12953:68;;;;-1:-1:-1;;;12953:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13040:16:0;;13032:64;;;;-1:-1:-1;;;13032:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13182:15:0;;;13160:19;13182:15;;;;;;;;;;;;;13253:20;;;13235:38;;;13460:13;;;;;;;:23;;13267:6;;13160:19;13460:23;;13267:6;;13460:23;:::i;:::-;;;;;;;;13516:2;-1:-1:-1;;;;;13501:26:0;13510:4;-1:-1:-1;;;;;13501:26:0;;13520:6;13501:26;;;;2084:25:1;;2072:2;2057:18;;1938:177;18519:229:0;18656:12;18688:52;18710:6;18718:4;18724:1;18727:12;18688:21;:52::i;:::-;18681:59;18519:229;-1:-1:-1;;;;18519:229:0:o;33908:391::-;33995:16;;;34009:1;33995:16;;;;;;;;33971:21;;33995:16;;;;;;;;;;-1:-1:-1;33995:16:0;33971:40;;34040:4;34022;34027:1;34022:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;34022:23:0;;;:7;;;;;;;;;;:23;;;;34074:9;;:16;;;-1:-1:-1;;;34074:16:0;;;;:9;;;;;:14;;:16;;;;;34022:7;;34074:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34056:4;34061:1;34056:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;34056:35:0;;;:7;;;;;;;;;:35;34104:9;;:187;;-1:-1:-1;;;34104:187:0;;:9;;;:60;;:187;;34179:8;;34104:9;;34218:4;;34245;;34265:15;;34104:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33960:339;33908:391;:::o;34919:104::-;34979:18;;34971:44;;-1:-1:-1;;;;;34979:18:0;;;;34971:44;;;;;35008:6;;34979:18;34971:44;34979:18;34971:44;35008:6;34979:18;34971:44;;;;;;;;;;;;;;;;;;;;;34919:104;:::o;19735:612::-;19905:12;19977:5;19952:21;:30;;19930:118;;;;-1:-1:-1;;;19930:118:0;;18450:2:1;19930:118:0;;;18432:21:1;18489:2;18469:18;;;18462:30;18528:34;18508:18;;;18501:62;-1:-1:-1;;;18579:18:1;;;18572:36;18625:19;;19930:118:0;18248:402:1;19930:118:0;20060:12;20074:23;20101:6;-1:-1:-1;;;;;20101:11:0;20120:5;20141:4;20101:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20059:97;;;;20187:152;20232:6;20257:7;20283:10;20312:12;20187:26;:152::i;:::-;20167:172;19735:612;-1:-1:-1;;;;;;;19735:612:0:o;22865:644::-;23050:12;23079:7;23075:427;;;23107:10;:17;23128:1;23107:22;23103:290;;-1:-1:-1;;;;;17765:19:0;;;23317:60;;;;-1:-1:-1;;;23317:60:0;;19149:2:1;23317:60:0;;;19131:21:1;19188:2;19168:18;;;19161:30;19227:31;19207:18;;;19200:59;19276:18;;23317:60:0;18947:353:1;23317:60:0;-1:-1:-1;23414:10:0;23407:17;;23075:427;23457:33;23465:10;23477:12;24237:17;;:21;24233:388;;24469:10;24463:17;24526:15;24513:10;24509:2;24505:19;24498:44;24233:388;24596:12;24589:20;;-1:-1:-1;;;24589:20:0;;;;;;;;:::i;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:250::-;284:1;294:113;308:6;305:1;302:13;294:113;;;384:11;;;378:18;365:11;;;358:39;330:2;323:10;294:113;;;-1:-1:-1;;441:1:1;423:16;;416:27;199:250::o;454:396::-;603:2;592:9;585:21;566:4;635:6;629:13;678:6;673:2;662:9;658:18;651:34;694:79;766:6;761:2;750:9;746:18;741:2;733:6;729:15;694:79;:::i;:::-;834:2;813:15;-1:-1:-1;;809:29:1;794:45;;;;841:2;790:54;;454:396;-1:-1:-1;;454:396:1:o;1082:131::-;-1:-1:-1;;;;;1157:31:1;;1147:42;;1137:70;;1203:1;1200;1193:12;1218:315;1286:6;1294;1347:2;1335:9;1326:7;1322:23;1318:32;1315:52;;;1363:1;1360;1353:12;1315:52;1402:9;1389:23;1421:31;1446:5;1421:31;:::i;:::-;1471:5;1523:2;1508:18;;;;1495:32;;-1:-1:-1;;;1218:315:1:o;2120:456::-;2197:6;2205;2213;2266:2;2254:9;2245:7;2241:23;2237:32;2234:52;;;2282:1;2279;2272:12;2234:52;2321:9;2308:23;2340:31;2365:5;2340:31;:::i;:::-;2390:5;-1:-1:-1;2447:2:1;2432:18;;2419:32;2460:33;2419:32;2460:33;:::i;:::-;2120:456;;2512:7;;-1:-1:-1;;;2566:2:1;2551:18;;;;2538:32;;2120:456::o;2770:388::-;2838:6;2846;2899:2;2887:9;2878:7;2874:23;2870:32;2867:52;;;2915:1;2912;2905:12;2867:52;2954:9;2941:23;2973:31;2998:5;2973:31;:::i;:::-;3023:5;-1:-1:-1;3080:2:1;3065:18;;3052:32;3093:33;3052:32;3093:33;:::i;:::-;3145:7;3135:17;;;2770:388;;;;;:::o;3163:247::-;3222:6;3275:2;3263:9;3254:7;3250:23;3246:32;3243:52;;;3291:1;3288;3281:12;3243:52;3330:9;3317:23;3349:31;3374:5;3349:31;:::i;3415:118::-;3501:5;3494:13;3487:21;3480:5;3477:32;3467:60;;3523:1;3520;3513:12;3538:382;3603:6;3611;3664:2;3652:9;3643:7;3639:23;3635:32;3632:52;;;3680:1;3677;3670:12;3632:52;3719:9;3706:23;3738:31;3763:5;3738:31;:::i;:::-;3788:5;-1:-1:-1;3845:2:1;3830:18;;3817:32;3858:30;3817:32;3858:30;:::i;3925:356::-;4127:2;4109:21;;;4146:18;;;4139:30;4205:34;4200:2;4185:18;;4178:62;4272:2;4257:18;;3925:356::o;4286:127::-;4347:10;4342:3;4338:20;4335:1;4328:31;4378:4;4375:1;4368:15;4402:4;4399:1;4392:15;4418:422;4507:1;4550:5;4507:1;4564:270;4585:7;4575:8;4572:21;4564:270;;;4644:4;4640:1;4636:6;4632:17;4626:4;4623:27;4620:53;;;4653:18;;:::i;:::-;4703:7;4693:8;4689:22;4686:55;;;4723:16;;;;4686:55;4802:22;;;;4762:15;;;;4564:270;;;4568:3;4418:422;;;;;:::o;4845:806::-;4894:5;4924:8;4914:80;;-1:-1:-1;4965:1:1;4979:5;;4914:80;5013:4;5003:76;;-1:-1:-1;5050:1:1;5064:5;;5003:76;5095:4;5113:1;5108:59;;;;5181:1;5176:130;;;;5088:218;;5108:59;5138:1;5129:10;;5152:5;;;5176:130;5213:3;5203:8;5200:17;5197:43;;;5220:18;;:::i;:::-;-1:-1:-1;;5276:1:1;5262:16;;5291:5;;5088:218;;5390:2;5380:8;5377:16;5371:3;5365:4;5362:13;5358:36;5352:2;5342:8;5339:16;5334:2;5328:4;5325:12;5321:35;5318:77;5315:159;;;-1:-1:-1;5427:19:1;;;5459:5;;5315:159;5506:34;5531:8;5525:4;5506:34;:::i;:::-;5576:6;5572:1;5568:6;5564:19;5555:7;5552:32;5549:58;;;5587:18;;:::i;:::-;5625:20;;4845:806;-1:-1:-1;;;4845:806:1:o;5656:140::-;5714:5;5743:47;5784:4;5774:8;5770:19;5764:4;5743:47;:::i;5801:168::-;5874:9;;;5905;;5922:15;;;5916:22;;5902:37;5892:71;;5943:18;;:::i;5974:217::-;6014:1;6040;6030:132;;6084:10;6079:3;6075:20;6072:1;6065:31;6119:4;6116:1;6109:15;6147:4;6144:1;6137:15;6030:132;-1:-1:-1;6176:9:1;;5974:217::o;6531:380::-;6610:1;6606:12;;;;6653;;;6674:61;;6728:4;6720:6;6716:17;6706:27;;6674:61;6781:2;6773:6;6770:14;6750:18;6747:38;6744:161;;6827:10;6822:3;6818:20;6815:1;6808:31;6862:4;6859:1;6852:15;6890:4;6887:1;6880:15;6744:161;;6531:380;;;:::o;7263:125::-;7328:9;;;7349:10;;;7346:36;;;7362:18;;:::i;8099:184::-;8169:6;8222:2;8210:9;8201:7;8197:23;8193:32;8190:52;;;8238:1;8235;8228:12;8190:52;-1:-1:-1;8261:16:1;;8099:184;-1:-1:-1;8099:184:1:o;10430:251::-;10500:6;10553:2;10541:9;10532:7;10528:23;10524:32;10521:52;;;10569:1;10566;10559:12;10521:52;10601:9;10595:16;10620:31;10645:5;10620:31;:::i;11607:306::-;11695:6;11703;11711;11764:2;11752:9;11743:7;11739:23;11735:32;11732:52;;;11780:1;11777;11770:12;11732:52;11809:9;11803:16;11793:26;;11859:2;11848:9;11844:18;11838:25;11828:35;;11903:2;11892:9;11888:18;11882:25;11872:35;;11607:306;;;;;:::o;12197:245::-;12264:6;12317:2;12305:9;12296:7;12292:23;12288:32;12285:52;;;12333:1;12330;12323:12;12285:52;12365:9;12359:16;12384:28;12406:5;12384:28;:::i;13613:128::-;13680:9;;;13701:11;;;13698:37;;;13715:18;;:::i;14811:135::-;14850:3;14871:17;;;14868:43;;14891:18;;:::i;:::-;-1:-1:-1;14938:1:1;14927:13;;14811:135::o;15371:401::-;15573:2;15555:21;;;15612:2;15592:18;;;15585:30;15651:34;15646:2;15631:18;;15624:62;-1:-1:-1;;;15717:2:1;15702:18;;15695:35;15762:3;15747:19;;15371:401::o;15777:399::-;15979:2;15961:21;;;16018:2;15998:18;;;15991:30;16057:34;16052:2;16037:18;;16030:62;-1:-1:-1;;;16123:2:1;16108:18;;16101:33;16166:3;16151:19;;15777:399::o;17131:127::-;17192:10;17187:3;17183:20;17180:1;17173:31;17223:4;17220:1;17213:15;17247:4;17244:1;17237:15;17263:980;17525:4;17573:3;17562:9;17558:19;17604:6;17593:9;17586:25;17630:2;17668:6;17663:2;17652:9;17648:18;17641:34;17711:3;17706:2;17695:9;17691:18;17684:31;17735:6;17770;17764:13;17801:6;17793;17786:22;17839:3;17828:9;17824:19;17817:26;;17878:2;17870:6;17866:15;17852:29;;17899:1;17909:195;17923:6;17920:1;17917:13;17909:195;;;17988:13;;-1:-1:-1;;;;;17984:39:1;17972:52;;18079:15;;;;18044:12;;;;18020:1;17938:9;17909:195;;;-1:-1:-1;;;;;;;18160:32:1;;;;18155:2;18140:18;;18133:60;-1:-1:-1;;;18224:3:1;18209:19;18202:35;18121:3;17263:980;-1:-1:-1;;;17263:980:1:o;18655:287::-;18784:3;18822:6;18816:13;18838:66;18897:6;18892:3;18885:4;18877:6;18873:17;18838:66;:::i;:::-;18920:16;;;;;18655:287;-1:-1:-1;;18655:287:1:o

Swarm Source

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