ETH Price: $2,430.60 (+3.09%)

Token

Oswald the Lucky Rabbit (OSWALD)
 

Overview

Max Total Supply

100,000,000 OSWALD

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: OSWALD 3
Balance
1,531,081.302179264921367551 OSWALD

Value
$0.00
0x702cd2aa56becefc48f6645641179a5004766637
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:
Oswald

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
                                                                               
                                                                               
  .g8""8q.    .M"""bgd `7MMF'     A     `7MF' db      `7MMF'      `7MM"""Yb.   
.dP'    `YM. ,MI    "Y   `MA     ,MA     ,V  ;MM:       MM          MM    `Yb. 
dM'      `MM `MMb.        VM:   ,VVM:   ,V  ,V^MM.      MM          MM     `Mb 
MM        MM   `YMMNq.     MM.  M' MM.  M' ,M  `MM      MM          MM      MM 
MM.      ,MP .     `MM     `MM A'  `MM A'  AbmmmqMA     MM      ,   MM     ,MP 
`Mb.    ,dP' Mb     dM      :MM;    :MM;  A'     VML    MM     ,M   MM    ,dP' 
  `"bmmd"'   P"Ybmmd"        VF      VF .AMA.   .AMMA..JMMmmmmMMM .JMMmmmdP'   
                                                                               
*/                                                                               
// SPDX-License-Identifier: MIT

/*


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


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

pragma solidity ^0.8.0;

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

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

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


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

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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


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

pragma solidity ^0.8.0;


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

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

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

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


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

pragma solidity ^0.8.0;




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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// File: Oswald.sol

pragma solidity ^0.8.9;

contract Oswald is ERC20 {
    address public owner;
    uint256 public maxWalletToken; // New variable for maximum wallet tokens
    bool public maxWalletTokenEnabled = false; // New variable for maxWalletToken status
    bool public saleStarted = false; // New variable for one-time sale switch
    address public lpAddress;

    modifier onlyOwner() {
        require(msg.sender == owner, "Caller is not the owner");
        _;
    }

    constructor() ERC20("Oswald the Lucky Rabbit", "OSWALD") {
        owner = msg.sender;
        _mint(msg.sender, 100000000 * 10 ** decimals());
        // Set the maximum wallet token limit to 2% of the total supply. Can be switched off later.
        maxWalletToken = (totalSupply() * 20) / 1000;
    }
    function setLpAddress(address _lpAddress) external onlyOwner {
        require(_lpAddress != address(0), "Invalid LP address");
        lpAddress = _lpAddress;
    }

    function renounceOwnership() public onlyOwner {
        owner = address(0);
    }

    function setMaxWalletTokenStatus(bool status) external onlyOwner { // New function for setting maxWalletToken status
        maxWalletTokenEnabled = status;
    }

    function startSale() external onlyOwner {
        require(!saleStarted, "Sale has already started");
        saleStarted = true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        // If the sale hasn't started, only allow the owner to perform transactions
        if (!saleStarted) {
            require(sender == owner, "Sales haven't started yet");
        }

        // Check if the recipient's balance will not exceed the maximum wallet token limit
        if (recipient != owner && recipient != lpAddress && maxWalletTokenEnabled) {
            uint256 newBalance = balanceOf(recipient) + amount;
            require(newBalance <= maxWalletToken, "Recipient's wallet balance will exceed the maxWalletToken limit");
        }
            super._transfer(sender, recipient, amount);
        }
    }

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokenEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpAddress","type":"address"}],"name":"setLpAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setMaxWalletTokenStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526000600760006101000a81548160ff0219169083151502179055506000600760016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280601781526020017f4f7377616c6420746865204c75636b79205261626269740000000000000000008152506040518060400160405280600681526020017f4f5357414c4400000000000000000000000000000000000000000000000000008152508160039080519060200190620000cc9291906200032d565b508060049080519060200190620000e59291906200032d565b50505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000169336200013e620001a260201b60201c565b600a6200014c919062000577565b6305f5e1006200015d9190620005c8565b620001ab60201b60201c565b6103e860146200017e6200031960201b60201c565b6200018a9190620005c8565b62000196919062000658565b60068190555062000803565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200021e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200021590620006f1565b60405180910390fd5b62000232600083836200032360201b60201c565b806002600082825462000246919062000713565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002f9919062000781565b60405180910390a362000315600083836200032860201b60201c565b5050565b6000600254905090565b505050565b505050565b8280546200033b90620007cd565b90600052602060002090601f0160209004810192826200035f5760008555620003ab565b82601f106200037a57805160ff1916838001178555620003ab565b82800160010185558215620003ab579182015b82811115620003aa5782518255916020019190600101906200038d565b5b509050620003ba9190620003be565b5090565b5b80821115620003d9576000816000905550600101620003bf565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200046b57808604811115620004435762000442620003dd565b5b6001851615620004535780820291505b808102905062000463856200040c565b945062000423565b94509492505050565b60008262000486576001905062000559565b8162000496576000905062000559565b8160018114620004af5760028114620004ba57620004f0565b600191505062000559565b60ff841115620004cf57620004ce620003dd565b5b8360020a915084821115620004e957620004e8620003dd565b5b5062000559565b5060208310610133831016604e8410600b84101617156200052a5782820a905083811115620005245762000523620003dd565b5b62000559565b62000539848484600162000419565b92509050818404811115620005535762000552620003dd565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620005848262000560565b915062000591836200056a565b9250620005c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000474565b905092915050565b6000620005d58262000560565b9150620005e28362000560565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200061e576200061d620003dd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006658262000560565b9150620006728362000560565b92508262000685576200068462000629565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620006d9601f8362000690565b9150620006e682620006a1565b602082019050919050565b600060208201905081810360008301526200070c81620006ca565b9050919050565b6000620007208262000560565b91506200072d8362000560565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620007655762000764620003dd565b5b828201905092915050565b6200077b8162000560565b82525050565b600060208201905062000798600083018462000770565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007e657607f821691505b60208210811415620007fd57620007fc6200079e565b5b50919050565b611ca080620008136000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063a9059cbb11610071578063a9059cbb14610337578063af91338f14610367578063b66a0e5d14610383578063dd62ed3e1461038d578063e6c75f71146103bd5761012c565b8063715018a6146102a35780638da5cb5b146102ad57806395d89b41146102cb5780639b4dc8cc146102e9578063a457c2d7146103075761012c565b806339509351116100f457806339509351146101eb5780635c474f9e1461021b57806362e81f53146102395780636f5e02121461025757806370a08231146102735761012c565b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017f57806323b872dd1461019d578063313ce567146101cd575b600080fd5b6101396103db565b6040516101469190611295565b60405180910390f35b61016960048036038101906101649190611350565b61046d565b60405161017691906113ab565b60405180910390f35b610187610490565b60405161019491906113d5565b60405180910390f35b6101b760048036038101906101b291906113f0565b61049a565b6040516101c491906113ab565b60405180910390f35b6101d56104c9565b6040516101e2919061145f565b60405180910390f35b61020560048036038101906102009190611350565b6104d2565b60405161021291906113ab565b60405180910390f35b610223610509565b60405161023091906113ab565b60405180910390f35b61024161051c565b60405161024e91906113ab565b60405180910390f35b610271600480360381019061026c919061147a565b61052f565b005b61028d6004803603810190610288919061147a565b610673565b60405161029a91906113d5565b60405180910390f35b6102ab6106bb565b005b6102b561078f565b6040516102c291906114b6565b60405180910390f35b6102d36107b5565b6040516102e09190611295565b60405180910390f35b6102f1610847565b6040516102fe91906114b6565b60405180910390f35b610321600480360381019061031c9190611350565b61086d565b60405161032e91906113ab565b60405180910390f35b610351600480360381019061034c9190611350565b6108e4565b60405161035e91906113ab565b60405180910390f35b610381600480360381019061037c91906114fd565b610907565b005b61038b6109b4565b005b6103a760048036038101906103a2919061152a565b610ab1565b6040516103b491906113d5565b60405180910390f35b6103c5610b38565b6040516103d291906113d5565b60405180910390f35b6060600380546103ea90611599565b80601f016020809104026020016040519081016040528092919081815260200182805461041690611599565b80156104635780601f1061043857610100808354040283529160200191610463565b820191906000526020600020905b81548152906001019060200180831161044657829003601f168201915b5050505050905090565b600080610478610b3e565b9050610485818585610b46565b600191505092915050565b6000600254905090565b6000806104a5610b3e565b90506104b2858285610d11565b6104bd858585610d9d565b60019150509392505050565b60006012905090565b6000806104dd610b3e565b90506104fe8185856104ef8589610ab1565b6104f991906115fa565b610b46565b600191505092915050565b600760019054906101000a900460ff1681565b600760009054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b69061169c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561062f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062690611708565b60405180910390fd5b80600760026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461074b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107429061169c565b60405180910390fd5b6000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546107c490611599565b80601f01602080910402602001604051908101604052809291908181526020018280546107f090611599565b801561083d5780601f106108125761010080835404028352916020019161083d565b820191906000526020600020905b81548152906001019060200180831161082057829003601f168201915b5050505050905090565b600760029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610878610b3e565b905060006108868286610ab1565b9050838110156108cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c29061179a565b60405180910390fd5b6108d88286868403610b46565b60019250505092915050565b6000806108ef610b3e565b90506108fc818585610d9d565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098e9061169c565b60405180910390fd5b80600760006101000a81548160ff02191690831515021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3b9061169c565b60405180910390fd5b600760019054906101000a900460ff1615610a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8b90611806565b60405180910390fd5b6001600760016101000a81548160ff021916908315150217905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60065481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bad90611898565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d9061192a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d0491906113d5565b60405180910390a3505050565b6000610d1d8484610ab1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d975781811015610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8090611996565b60405180910390fd5b610d968484848403610b46565b5b50505050565b600760019054906101000a900460ff16610e4257600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3890611a02565b60405180910390fd5b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015610eee5750600760029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610f065750600760009054906101000a900460ff165b15610f6a57600081610f1784610673565b610f2191906115fa565b9050600654811115610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90611a94565b60405180910390fd5b505b610f75838383610f7a565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe190611b26565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561105a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105190611bb8565b60405180910390fd5b6110658383836111f2565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e290611c4a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111d991906113d5565b60405180910390a36111ec8484846111f7565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561123657808201518184015260208101905061121b565b83811115611245576000848401525b50505050565b6000601f19601f8301169050919050565b6000611267826111fc565b6112718185611207565b9350611281818560208601611218565b61128a8161124b565b840191505092915050565b600060208201905081810360008301526112af818461125c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112e7826112bc565b9050919050565b6112f7816112dc565b811461130257600080fd5b50565b600081359050611314816112ee565b92915050565b6000819050919050565b61132d8161131a565b811461133857600080fd5b50565b60008135905061134a81611324565b92915050565b60008060408385031215611367576113666112b7565b5b600061137585828601611305565b92505060206113868582860161133b565b9150509250929050565b60008115159050919050565b6113a581611390565b82525050565b60006020820190506113c0600083018461139c565b92915050565b6113cf8161131a565b82525050565b60006020820190506113ea60008301846113c6565b92915050565b600080600060608486031215611409576114086112b7565b5b600061141786828701611305565b935050602061142886828701611305565b92505060406114398682870161133b565b9150509250925092565b600060ff82169050919050565b61145981611443565b82525050565b60006020820190506114746000830184611450565b92915050565b6000602082840312156114905761148f6112b7565b5b600061149e84828501611305565b91505092915050565b6114b0816112dc565b82525050565b60006020820190506114cb60008301846114a7565b92915050565b6114da81611390565b81146114e557600080fd5b50565b6000813590506114f7816114d1565b92915050565b600060208284031215611513576115126112b7565b5b6000611521848285016114e8565b91505092915050565b60008060408385031215611541576115406112b7565b5b600061154f85828601611305565b925050602061156085828601611305565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806115b157607f821691505b602082108114156115c5576115c461156a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006116058261131a565b91506116108361131a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611645576116446115cb565b5b828201905092915050565b7f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b6000611686601783611207565b915061169182611650565b602082019050919050565b600060208201905081810360008301526116b581611679565b9050919050565b7f496e76616c6964204c5020616464726573730000000000000000000000000000600082015250565b60006116f2601283611207565b91506116fd826116bc565b602082019050919050565b60006020820190508181036000830152611721816116e5565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611784602583611207565b915061178f82611728565b604082019050919050565b600060208201905081810360008301526117b381611777565b9050919050565b7f53616c652068617320616c726561647920737461727465640000000000000000600082015250565b60006117f0601883611207565b91506117fb826117ba565b602082019050919050565b6000602082019050818103600083015261181f816117e3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611882602483611207565b915061188d82611826565b604082019050919050565b600060208201905081810360008301526118b181611875565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611914602283611207565b915061191f826118b8565b604082019050919050565b6000602082019050818103600083015261194381611907565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611980601d83611207565b915061198b8261194a565b602082019050919050565b600060208201905081810360008301526119af81611973565b9050919050565b7f53616c657320686176656e277420737461727465642079657400000000000000600082015250565b60006119ec601983611207565b91506119f7826119b6565b602082019050919050565b60006020820190508181036000830152611a1b816119df565b9050919050565b7f526563697069656e7427732077616c6c65742062616c616e63652077696c6c2060008201527f65786365656420746865206d617857616c6c6574546f6b656e206c696d697400602082015250565b6000611a7e603f83611207565b9150611a8982611a22565b604082019050919050565b60006020820190508181036000830152611aad81611a71565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611b10602583611207565b9150611b1b82611ab4565b604082019050919050565b60006020820190508181036000830152611b3f81611b03565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611ba2602383611207565b9150611bad82611b46565b604082019050919050565b60006020820190508181036000830152611bd181611b95565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611c34602683611207565b9150611c3f82611bd8565b604082019050919050565b60006020820190508181036000830152611c6381611c27565b905091905056fea264697066735822122031acfdd43ec2453494488afb76a2ce3821c868b47bbf31be7fd59f282031552664736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063a9059cbb11610071578063a9059cbb14610337578063af91338f14610367578063b66a0e5d14610383578063dd62ed3e1461038d578063e6c75f71146103bd5761012c565b8063715018a6146102a35780638da5cb5b146102ad57806395d89b41146102cb5780639b4dc8cc146102e9578063a457c2d7146103075761012c565b806339509351116100f457806339509351146101eb5780635c474f9e1461021b57806362e81f53146102395780636f5e02121461025757806370a08231146102735761012c565b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017f57806323b872dd1461019d578063313ce567146101cd575b600080fd5b6101396103db565b6040516101469190611295565b60405180910390f35b61016960048036038101906101649190611350565b61046d565b60405161017691906113ab565b60405180910390f35b610187610490565b60405161019491906113d5565b60405180910390f35b6101b760048036038101906101b291906113f0565b61049a565b6040516101c491906113ab565b60405180910390f35b6101d56104c9565b6040516101e2919061145f565b60405180910390f35b61020560048036038101906102009190611350565b6104d2565b60405161021291906113ab565b60405180910390f35b610223610509565b60405161023091906113ab565b60405180910390f35b61024161051c565b60405161024e91906113ab565b60405180910390f35b610271600480360381019061026c919061147a565b61052f565b005b61028d6004803603810190610288919061147a565b610673565b60405161029a91906113d5565b60405180910390f35b6102ab6106bb565b005b6102b561078f565b6040516102c291906114b6565b60405180910390f35b6102d36107b5565b6040516102e09190611295565b60405180910390f35b6102f1610847565b6040516102fe91906114b6565b60405180910390f35b610321600480360381019061031c9190611350565b61086d565b60405161032e91906113ab565b60405180910390f35b610351600480360381019061034c9190611350565b6108e4565b60405161035e91906113ab565b60405180910390f35b610381600480360381019061037c91906114fd565b610907565b005b61038b6109b4565b005b6103a760048036038101906103a2919061152a565b610ab1565b6040516103b491906113d5565b60405180910390f35b6103c5610b38565b6040516103d291906113d5565b60405180910390f35b6060600380546103ea90611599565b80601f016020809104026020016040519081016040528092919081815260200182805461041690611599565b80156104635780601f1061043857610100808354040283529160200191610463565b820191906000526020600020905b81548152906001019060200180831161044657829003601f168201915b5050505050905090565b600080610478610b3e565b9050610485818585610b46565b600191505092915050565b6000600254905090565b6000806104a5610b3e565b90506104b2858285610d11565b6104bd858585610d9d565b60019150509392505050565b60006012905090565b6000806104dd610b3e565b90506104fe8185856104ef8589610ab1565b6104f991906115fa565b610b46565b600191505092915050565b600760019054906101000a900460ff1681565b600760009054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b69061169c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561062f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062690611708565b60405180910390fd5b80600760026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461074b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107429061169c565b60405180910390fd5b6000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546107c490611599565b80601f01602080910402602001604051908101604052809291908181526020018280546107f090611599565b801561083d5780601f106108125761010080835404028352916020019161083d565b820191906000526020600020905b81548152906001019060200180831161082057829003601f168201915b5050505050905090565b600760029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610878610b3e565b905060006108868286610ab1565b9050838110156108cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c29061179a565b60405180910390fd5b6108d88286868403610b46565b60019250505092915050565b6000806108ef610b3e565b90506108fc818585610d9d565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098e9061169c565b60405180910390fd5b80600760006101000a81548160ff02191690831515021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3b9061169c565b60405180910390fd5b600760019054906101000a900460ff1615610a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8b90611806565b60405180910390fd5b6001600760016101000a81548160ff021916908315150217905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60065481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bad90611898565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d9061192a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d0491906113d5565b60405180910390a3505050565b6000610d1d8484610ab1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d975781811015610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8090611996565b60405180910390fd5b610d968484848403610b46565b5b50505050565b600760019054906101000a900460ff16610e4257600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3890611a02565b60405180910390fd5b5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015610eee5750600760029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610f065750600760009054906101000a900460ff165b15610f6a57600081610f1784610673565b610f2191906115fa565b9050600654811115610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90611a94565b60405180910390fd5b505b610f75838383610f7a565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe190611b26565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561105a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105190611bb8565b60405180910390fd5b6110658383836111f2565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e290611c4a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111d991906113d5565b60405180910390a36111ec8484846111f7565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561123657808201518184015260208101905061121b565b83811115611245576000848401525b50505050565b6000601f19601f8301169050919050565b6000611267826111fc565b6112718185611207565b9350611281818560208601611218565b61128a8161124b565b840191505092915050565b600060208201905081810360008301526112af818461125c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112e7826112bc565b9050919050565b6112f7816112dc565b811461130257600080fd5b50565b600081359050611314816112ee565b92915050565b6000819050919050565b61132d8161131a565b811461133857600080fd5b50565b60008135905061134a81611324565b92915050565b60008060408385031215611367576113666112b7565b5b600061137585828601611305565b92505060206113868582860161133b565b9150509250929050565b60008115159050919050565b6113a581611390565b82525050565b60006020820190506113c0600083018461139c565b92915050565b6113cf8161131a565b82525050565b60006020820190506113ea60008301846113c6565b92915050565b600080600060608486031215611409576114086112b7565b5b600061141786828701611305565b935050602061142886828701611305565b92505060406114398682870161133b565b9150509250925092565b600060ff82169050919050565b61145981611443565b82525050565b60006020820190506114746000830184611450565b92915050565b6000602082840312156114905761148f6112b7565b5b600061149e84828501611305565b91505092915050565b6114b0816112dc565b82525050565b60006020820190506114cb60008301846114a7565b92915050565b6114da81611390565b81146114e557600080fd5b50565b6000813590506114f7816114d1565b92915050565b600060208284031215611513576115126112b7565b5b6000611521848285016114e8565b91505092915050565b60008060408385031215611541576115406112b7565b5b600061154f85828601611305565b925050602061156085828601611305565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806115b157607f821691505b602082108114156115c5576115c461156a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006116058261131a565b91506116108361131a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611645576116446115cb565b5b828201905092915050565b7f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b6000611686601783611207565b915061169182611650565b602082019050919050565b600060208201905081810360008301526116b581611679565b9050919050565b7f496e76616c6964204c5020616464726573730000000000000000000000000000600082015250565b60006116f2601283611207565b91506116fd826116bc565b602082019050919050565b60006020820190508181036000830152611721816116e5565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611784602583611207565b915061178f82611728565b604082019050919050565b600060208201905081810360008301526117b381611777565b9050919050565b7f53616c652068617320616c726561647920737461727465640000000000000000600082015250565b60006117f0601883611207565b91506117fb826117ba565b602082019050919050565b6000602082019050818103600083015261181f816117e3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611882602483611207565b915061188d82611826565b604082019050919050565b600060208201905081810360008301526118b181611875565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611914602283611207565b915061191f826118b8565b604082019050919050565b6000602082019050818103600083015261194381611907565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611980601d83611207565b915061198b8261194a565b602082019050919050565b600060208201905081810360008301526119af81611973565b9050919050565b7f53616c657320686176656e277420737461727465642079657400000000000000600082015250565b60006119ec601983611207565b91506119f7826119b6565b602082019050919050565b60006020820190508181036000830152611a1b816119df565b9050919050565b7f526563697069656e7427732077616c6c65742062616c616e63652077696c6c2060008201527f65786365656420746865206d617857616c6c6574546f6b656e206c696d697400602082015250565b6000611a7e603f83611207565b9150611a8982611a22565b604082019050919050565b60006020820190508181036000830152611aad81611a71565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611b10602583611207565b9150611b1b82611ab4565b604082019050919050565b60006020820190508181036000830152611b3f81611b03565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611ba2602383611207565b9150611bad82611b46565b604082019050919050565b60006020820190508181036000830152611bd181611b95565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611c34602683611207565b9150611c3f82611bd8565b604082019050919050565b60006020820190508181036000830152611c6381611c27565b905091905056fea264697066735822122031acfdd43ec2453494488afb76a2ce3821c868b47bbf31be7fd59f282031552664736f6c63430008090033

Deployed Bytecode Sourcemap

18829:2118:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7591:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9942:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8711:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10723:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8553:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11427:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19056:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18966:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19597:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8882:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19773:83;;;:::i;:::-;;18861:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7810:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19135:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12168:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9215:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19864:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20036:137;;;:::i;:::-;;9471:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18888:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7591:100;7645:13;7678:5;7671:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7591:100;:::o;9942:201::-;10025:4;10042:13;10058:12;:10;:12::i;:::-;10042:28;;10081:32;10090:5;10097:7;10106:6;10081:8;:32::i;:::-;10131:4;10124:11;;;9942:201;;;;:::o;8711:108::-;8772:7;8799:12;;8792:19;;8711:108;:::o;10723:295::-;10854:4;10871:15;10889:12;:10;:12::i;:::-;10871:30;;10912:38;10928:4;10934:7;10943:6;10912:15;:38::i;:::-;10961:27;10971:4;10977:2;10981:6;10961:9;:27::i;:::-;11006:4;10999:11;;;10723:295;;;;;:::o;8553:93::-;8611:5;8636:2;8629:9;;8553:93;:::o;11427:238::-;11515:4;11532:13;11548:12;:10;:12::i;:::-;11532:28;;11571:64;11580:5;11587:7;11624:10;11596:25;11606:5;11613:7;11596:9;:25::i;:::-;:38;;;;:::i;:::-;11571:8;:64::i;:::-;11653:4;11646:11;;;11427:238;;;;:::o;19056:31::-;;;;;;;;;;;;;:::o;18966:41::-;;;;;;;;;;;;;:::o;19597:168::-;19222:5;;;;;;;;;;;19208:19;;:10;:19;;;19200:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;19699:1:::1;19677:24;;:10;:24;;;;19669:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;19747:10;19735:9;;:22;;;;;;;;;;;;;;;;;;19597:168:::0;:::o;8882:127::-;8956:7;8983:9;:18;8993:7;8983:18;;;;;;;;;;;;;;;;8976:25;;8882:127;;;:::o;19773:83::-;19222:5;;;;;;;;;;;19208:19;;:10;:19;;;19200:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;19846:1:::1;19830:5;;:18;;;;;;;;;;;;;;;;;;19773:83::o:0;18861:20::-;;;;;;;;;;;;;:::o;7810:104::-;7866:13;7899:7;7892:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7810:104;:::o;19135:24::-;;;;;;;;;;;;;:::o;12168:436::-;12261:4;12278:13;12294:12;:10;:12::i;:::-;12278:28;;12317:24;12344:25;12354:5;12361:7;12344:9;:25::i;:::-;12317:52;;12408:15;12388:16;:35;;12380:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12501:60;12510:5;12517:7;12545:15;12526:16;:34;12501:8;:60::i;:::-;12592:4;12585:11;;;;12168:436;;;;:::o;9215:193::-;9294:4;9311:13;9327:12;:10;:12::i;:::-;9311:28;;9350;9360:5;9367:2;9371:6;9350:9;:28::i;:::-;9396:4;9389:11;;;9215:193;;;;:::o;19864:164::-;19222:5;;;;;;;;;;;19208:19;;:10;:19;;;19200:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;20014:6:::1;19990:21;;:30;;;;;;;;;;;;;;;;;;19864:164:::0;:::o;20036:137::-;19222:5;;;;;;;;;;;19208:19;;:10;:19;;;19200:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;20096:11:::1;;;;;;;;;;;20095:12;20087:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20161:4;20147:11;;:18;;;;;;;;;;;;;;;;;;20036:137::o:0;9471:151::-;9560:7;9587:11;:18;9599:5;9587:18;;;;;;;;;;;;;;;:27;9606:7;9587:27;;;;;;;;;;;;;;;;9580:34;;9471:151;;;;:::o;18888:29::-;;;;:::o;1619:98::-;1672:7;1699:10;1692:17;;1619:98;:::o;16195:380::-;16348:1;16331:19;;:5;:19;;;;16323:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16429:1;16410:21;;:7;:21;;;;16402:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16513:6;16483:11;:18;16495:5;16483:18;;;;;;;;;;;;;;;:27;16502:7;16483:27;;;;;;;;;;;;;;;:36;;;;16551:7;16535:32;;16544:5;16535:32;;;16560:6;16535:32;;;;;;:::i;:::-;;;;;;;;16195:380;;;:::o;16866:453::-;17001:24;17028:25;17038:5;17045:7;17028:9;:25::i;:::-;17001:52;;17088:17;17068:16;:37;17064:248;;17150:6;17130:16;:26;;17122:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17234:51;17243:5;17250:7;17278:6;17259:16;:25;17234:8;:51::i;:::-;17064:248;16990:329;16866:453;;;:::o;20181:759::-;20404:11;;;;;;;;;;;20399:98;;20450:5;;;;;;;;;;;20440:15;;:6;:15;;;20432:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;20399:98;20618:5;;;;;;;;;;;20605:18;;:9;:18;;;;:44;;;;;20640:9;;;;;;;;;;;20627:22;;:9;:22;;;;20605:44;:69;;;;;20653:21;;;;;;;;;;;20605:69;20601:271;;;20691:18;20735:6;20712:20;20722:9;20712;:20::i;:::-;:29;;;;:::i;:::-;20691:50;;20778:14;;20764:10;:28;;20756:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;20676:196;20601:271;20886:42;20902:6;20910:9;20921:6;20886:15;:42::i;:::-;20181:759;;;:::o;13074:840::-;13221:1;13205:18;;:4;:18;;;;13197:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13298:1;13284:16;;:2;:16;;;;13276:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13353:38;13374:4;13380:2;13384:6;13353:20;:38::i;:::-;13404:19;13426:9;:15;13436:4;13426:15;;;;;;;;;;;;;;;;13404:37;;13475:6;13460:11;:21;;13452:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13592:6;13578:11;:20;13560:9;:15;13570:4;13560:15;;;;;;;;;;;;;;;:38;;;;13795:6;13778:9;:13;13788:2;13778:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;13845:2;13830:26;;13839:4;13830:26;;;13849:6;13830:26;;;;;;:::i;:::-;;;;;;;;13869:37;13889:4;13895:2;13899:6;13869:19;:37::i;:::-;13186:728;13074:840;;;:::o;17919:125::-;;;;:::o;18648:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:329::-;4960:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:119;;;5015:79;;:::i;:::-;4977:119;5135:1;5160:53;5205:7;5196:6;5185:9;5181:22;5160:53;:::i;:::-;5150:63;;5106:117;4901:329;;;;:::o;5236:118::-;5323:24;5341:5;5323:24;:::i;:::-;5318:3;5311:37;5236:118;;:::o;5360:222::-;5453:4;5491:2;5480:9;5476:18;5468:26;;5504:71;5572:1;5561:9;5557:17;5548:6;5504:71;:::i;:::-;5360:222;;;;:::o;5588:116::-;5658:21;5673:5;5658:21;:::i;:::-;5651:5;5648:32;5638:60;;5694:1;5691;5684:12;5638:60;5588:116;:::o;5710:133::-;5753:5;5791:6;5778:20;5769:29;;5807:30;5831:5;5807:30;:::i;:::-;5710:133;;;;:::o;5849:323::-;5905:6;5954:2;5942:9;5933:7;5929:23;5925:32;5922:119;;;5960:79;;:::i;:::-;5922:119;6080:1;6105:50;6147:7;6138:6;6127:9;6123:22;6105:50;:::i;:::-;6095:60;;6051:114;5849:323;;;;:::o;6178:474::-;6246:6;6254;6303:2;6291:9;6282:7;6278:23;6274:32;6271:119;;;6309:79;;:::i;:::-;6271:119;6429:1;6454:53;6499:7;6490:6;6479:9;6475:22;6454:53;:::i;:::-;6444:63;;6400:117;6556:2;6582:53;6627:7;6618:6;6607:9;6603:22;6582:53;:::i;:::-;6572:63;;6527:118;6178:474;;;;;:::o;6658:180::-;6706:77;6703:1;6696:88;6803:4;6800:1;6793:15;6827:4;6824:1;6817:15;6844:320;6888:6;6925:1;6919:4;6915:12;6905:22;;6972:1;6966:4;6962:12;6993:18;6983:81;;7049:4;7041:6;7037:17;7027:27;;6983:81;7111:2;7103:6;7100:14;7080:18;7077:38;7074:84;;;7130:18;;:::i;:::-;7074:84;6895:269;6844:320;;;:::o;7170:180::-;7218:77;7215:1;7208:88;7315:4;7312:1;7305:15;7339:4;7336:1;7329:15;7356:305;7396:3;7415:20;7433:1;7415:20;:::i;:::-;7410:25;;7449:20;7467:1;7449:20;:::i;:::-;7444:25;;7603:1;7535:66;7531:74;7528:1;7525:81;7522:107;;;7609:18;;:::i;:::-;7522:107;7653:1;7650;7646:9;7639:16;;7356:305;;;;:::o;7667:173::-;7807:25;7803:1;7795:6;7791:14;7784:49;7667:173;:::o;7846:366::-;7988:3;8009:67;8073:2;8068:3;8009:67;:::i;:::-;8002:74;;8085:93;8174:3;8085:93;:::i;:::-;8203:2;8198:3;8194:12;8187:19;;7846:366;;;:::o;8218:419::-;8384:4;8422:2;8411:9;8407:18;8399:26;;8471:9;8465:4;8461:20;8457:1;8446:9;8442:17;8435:47;8499:131;8625:4;8499:131;:::i;:::-;8491:139;;8218:419;;;:::o;8643:168::-;8783:20;8779:1;8771:6;8767:14;8760:44;8643:168;:::o;8817:366::-;8959:3;8980:67;9044:2;9039:3;8980:67;:::i;:::-;8973:74;;9056:93;9145:3;9056:93;:::i;:::-;9174:2;9169:3;9165:12;9158:19;;8817:366;;;:::o;9189:419::-;9355:4;9393:2;9382:9;9378:18;9370:26;;9442:9;9436:4;9432:20;9428:1;9417:9;9413:17;9406:47;9470:131;9596:4;9470:131;:::i;:::-;9462:139;;9189:419;;;:::o;9614:224::-;9754:34;9750:1;9742:6;9738:14;9731:58;9823:7;9818:2;9810:6;9806:15;9799:32;9614:224;:::o;9844:366::-;9986:3;10007:67;10071:2;10066:3;10007:67;:::i;:::-;10000:74;;10083:93;10172:3;10083:93;:::i;:::-;10201:2;10196:3;10192:12;10185:19;;9844:366;;;:::o;10216:419::-;10382:4;10420:2;10409:9;10405:18;10397:26;;10469:9;10463:4;10459:20;10455:1;10444:9;10440:17;10433:47;10497:131;10623:4;10497:131;:::i;:::-;10489:139;;10216:419;;;:::o;10641:174::-;10781:26;10777:1;10769:6;10765:14;10758:50;10641:174;:::o;10821:366::-;10963:3;10984:67;11048:2;11043:3;10984:67;:::i;:::-;10977:74;;11060:93;11149:3;11060:93;:::i;:::-;11178:2;11173:3;11169:12;11162:19;;10821:366;;;:::o;11193:419::-;11359:4;11397:2;11386:9;11382:18;11374:26;;11446:9;11440:4;11436:20;11432:1;11421:9;11417:17;11410:47;11474:131;11600:4;11474:131;:::i;:::-;11466:139;;11193:419;;;:::o;11618:223::-;11758:34;11754:1;11746:6;11742:14;11735:58;11827:6;11822:2;11814:6;11810:15;11803:31;11618:223;:::o;11847:366::-;11989:3;12010:67;12074:2;12069:3;12010:67;:::i;:::-;12003:74;;12086:93;12175:3;12086:93;:::i;:::-;12204:2;12199:3;12195:12;12188:19;;11847:366;;;:::o;12219:419::-;12385:4;12423:2;12412:9;12408:18;12400:26;;12472:9;12466:4;12462:20;12458:1;12447:9;12443:17;12436:47;12500:131;12626:4;12500:131;:::i;:::-;12492:139;;12219:419;;;:::o;12644:221::-;12784:34;12780:1;12772:6;12768:14;12761:58;12853:4;12848:2;12840:6;12836:15;12829:29;12644:221;:::o;12871:366::-;13013:3;13034:67;13098:2;13093:3;13034:67;:::i;:::-;13027:74;;13110:93;13199:3;13110:93;:::i;:::-;13228:2;13223:3;13219:12;13212:19;;12871:366;;;:::o;13243:419::-;13409:4;13447:2;13436:9;13432:18;13424:26;;13496:9;13490:4;13486:20;13482:1;13471:9;13467:17;13460:47;13524:131;13650:4;13524:131;:::i;:::-;13516:139;;13243:419;;;:::o;13668:179::-;13808:31;13804:1;13796:6;13792:14;13785:55;13668:179;:::o;13853:366::-;13995:3;14016:67;14080:2;14075:3;14016:67;:::i;:::-;14009:74;;14092:93;14181:3;14092:93;:::i;:::-;14210:2;14205:3;14201:12;14194:19;;13853:366;;;:::o;14225:419::-;14391:4;14429:2;14418:9;14414:18;14406:26;;14478:9;14472:4;14468:20;14464:1;14453:9;14449:17;14442:47;14506:131;14632:4;14506:131;:::i;:::-;14498:139;;14225:419;;;:::o;14650:175::-;14790:27;14786:1;14778:6;14774:14;14767:51;14650:175;:::o;14831:366::-;14973:3;14994:67;15058:2;15053:3;14994:67;:::i;:::-;14987:74;;15070:93;15159:3;15070:93;:::i;:::-;15188:2;15183:3;15179:12;15172:19;;14831:366;;;:::o;15203:419::-;15369:4;15407:2;15396:9;15392:18;15384:26;;15456:9;15450:4;15446:20;15442:1;15431:9;15427:17;15420:47;15484:131;15610:4;15484:131;:::i;:::-;15476:139;;15203:419;;;:::o;15628:250::-;15768:34;15764:1;15756:6;15752:14;15745:58;15837:33;15832:2;15824:6;15820:15;15813:58;15628:250;:::o;15884:366::-;16026:3;16047:67;16111:2;16106:3;16047:67;:::i;:::-;16040:74;;16123:93;16212:3;16123:93;:::i;:::-;16241:2;16236:3;16232:12;16225:19;;15884:366;;;:::o;16256:419::-;16422:4;16460:2;16449:9;16445:18;16437:26;;16509:9;16503:4;16499:20;16495:1;16484:9;16480:17;16473:47;16537:131;16663:4;16537:131;:::i;:::-;16529:139;;16256:419;;;:::o;16681:224::-;16821:34;16817:1;16809:6;16805:14;16798:58;16890:7;16885:2;16877:6;16873:15;16866:32;16681:224;:::o;16911:366::-;17053:3;17074:67;17138:2;17133:3;17074:67;:::i;:::-;17067:74;;17150:93;17239:3;17150:93;:::i;:::-;17268:2;17263:3;17259:12;17252:19;;16911:366;;;:::o;17283:419::-;17449:4;17487:2;17476:9;17472:18;17464:26;;17536:9;17530:4;17526:20;17522:1;17511:9;17507:17;17500:47;17564:131;17690:4;17564:131;:::i;:::-;17556:139;;17283:419;;;:::o;17708:222::-;17848:34;17844:1;17836:6;17832:14;17825:58;17917:5;17912:2;17904:6;17900:15;17893:30;17708:222;:::o;17936:366::-;18078:3;18099:67;18163:2;18158:3;18099:67;:::i;:::-;18092:74;;18175:93;18264:3;18175:93;:::i;:::-;18293:2;18288:3;18284:12;18277:19;;17936:366;;;:::o;18308:419::-;18474:4;18512:2;18501:9;18497:18;18489:26;;18561:9;18555:4;18551:20;18547:1;18536:9;18532:17;18525:47;18589:131;18715:4;18589:131;:::i;:::-;18581:139;;18308:419;;;:::o;18733:225::-;18873:34;18869:1;18861:6;18857:14;18850:58;18942:8;18937:2;18929:6;18925:15;18918:33;18733:225;:::o;18964:366::-;19106:3;19127:67;19191:2;19186:3;19127:67;:::i;:::-;19120:74;;19203:93;19292:3;19203:93;:::i;:::-;19321:2;19316:3;19312:12;19305:19;;18964:366;;;:::o;19336:419::-;19502:4;19540:2;19529:9;19525:18;19517:26;;19589:9;19583:4;19579:20;19575:1;19564:9;19560:17;19553:47;19617:131;19743:4;19617:131;:::i;:::-;19609:139;;19336:419;;;:::o

Swarm Source

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