Token Goo

Gaming 
 

Overview ERC-20

Price
$0.00 @ 0.000024 MATIC (-1.22%)
Fully Diluted Market Cap
Total Supply:
7,987,231,911.1625 GOO

Holders:
676 addresses

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

GOO is the primary token used in the Play to Earn gaming title, Gooeys. GOO is earned through Questing with the Gooey, and can be spent/burned on in-game mechanics such as Fruit NFTs to feed or buff Gooey, along with breeding/tumbling new Gooeys.

Market

Volume (24H):$927.02
Market Capitalization:$0.00
Circulating Supply:0.00 GOO
Market Data Source: Coinmarketcap


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

Contract Source Code Verified (Exact Match)

Contract Name:
Goo

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 3 of 6: Goo.sol
/**
 * Gooeys, a fully on-chain game by Dogira Studios
 *
 * https://gooeys.io
 * Telegram: https://t.me/GooeysP2E
 * Twitter: https://twitter.com/GooeysP2E
 * Discord: https://discord.dogira.net
 * Game Guide/GooBook : https://dogira.gitbook.io/goobook/
 *
 * NFT Generation & Launch via Dogira NFT-Kit
 * P2E Game Developed in-house at Dogira Studios
 *
 * The $GOO Token serves as the primary in-game currency for Gooeys,
 * with both earn & spending mechanics made available in-game.
 *
 * Dogira Studios
 * Home: https://Dogira.net
 * Telegram: https://t.me/DogiraToken
 * Staking: https://Dogira.finance
 */

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "ERC20.sol";
import "Ownable.sol";

contract Goo is ERC20, Ownable {

    mapping(address => bool) gameControllers;
    mapping(address => bool) supplyLimitExemptions; //for adding pairs, deployer wallet etc.
    uint public deploymentBlock;
    uint public TWO_MONTHS_BLOCKS = 2225664;

    address public treasury;
    address DEAD = address(0x000000000000000000000000000000000000dEaD);

    uint public mintedWithoutChefCut = 0;
    uint public chefCutThreshold = 100000e9;
    uint public maxSupplyPerWallet = 10000000e9;
    bool public walletSupplyLimitsEnabled = true;

    event GameControllerSet(address _addr, bool _set, uint _block);
    event SupplyExemptWalletSet(address _addr, bool _set, uint _block);
    event WalletSupplyLimitsSet(bool _status, uint _block);
    event TreasuryUpdated(address _treasury);

    constructor(address _treasury) ERC20("Goo", "GOO") {
        supplyLimitExemptions[msg.sender] = true;
        supplyLimitExemptions[_treasury] = true;
        supplyLimitExemptions[DEAD] = true;
        treasury = _treasury;
        _mint(msg.sender, 2000000000e9);
        deploymentBlock = block.number;
    }

    modifier isGameController() {
        if (owner() != msg.sender && gameControllers[msg.sender] == false) {
            revert("Must be owner, or game controller!");
        }
        _;
    }

    modifier walletSupplyLimitCheck(address from, address to, uint amount) {
        if (to != owner() && from != owner()) {
            if (walletSupplyLimitsEnabled && !isWalletSupplyExempt(to)) {
                require(balanceOf(to) + amount <= maxSupplyPerWallet, "Maximum supply on recipient wallet reached");
            }
        }
        _;
    }

    function setGameController(address _addr, bool _set) external onlyOwner {
        gameControllers[_addr] = _set;
        supplyLimitExemptions[_addr] = _set;
        emit GameControllerSet(_addr, _set, block.number);
    }

    function setSupplyLimitExemption(address _addr, bool _set) external onlyOwner {
        supplyLimitExemptions[_addr] = _set;
        emit SupplyExemptWalletSet(_addr, _set, block.number);
    }

    function setWalletSupplyLimits(bool _set) external onlyOwner {
        walletSupplyLimitsEnabled = _set;
        emit WalletSupplyLimitsSet(_set, block.number);
    }

    function isWalletSupplyExempt(address _addr) view public returns (bool) {
        return supplyLimitExemptions[_addr] == true;
    }

    function getDivisionRate() view public returns(uint) {
        uint divider = 1;
        uint blocksSinceDeployment = block.number - deploymentBlock;
        uint divisionPeriods = blocksSinceDeployment / TWO_MONTHS_BLOCKS;
        for (uint i = 0; i < divisionPeriods; i++) {
            divider = divider * 2;
        }
        return divider;
    }

    function updateTreasury(address _treasury) external onlyOwner {
        treasury = _treasury;
        emit TreasuryUpdated(_treasury);
    }

    function mint(address to, uint256 amount) external isGameController {
        amount = amount / getDivisionRate();
        _mint(to, amount);
        mintedWithoutChefCut = mintedWithoutChefCut + amount;
        if (to != treasury && mintedWithoutChefCut > chefCutThreshold) {
            _mint(treasury, mintedWithoutChefCut / 20);
            mintedWithoutChefCut = 0;
        }
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public walletSupplyLimitCheck(from, to, amount) override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function transfer(address to, uint256 amount) public
    walletSupplyLimitCheck(msg.sender, to, amount) override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }
}

File 1 of 6: Context.sol
// SPDX-License-Identifier: MIT

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 2 of 6: ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

import "IERC20.sol";
import "IERC20Metadata.sol";
import "Context.sol";

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

    /**
     * @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 `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `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;
    }
        _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;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    unchecked {
        _balances[account] = accountBalance - amount;
    }
        _totalSupply -= amount;

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

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

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

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

    /**
     * @dev 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 4 of 6: IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

    /**
     * @dev Moves `amount` tokens from the caller's account to `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);

    function mint(
        address to,
        uint256 amount
    ) external;

    function updateTreasury(address _treasury) external;

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

File 5 of 6: IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";

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

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

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

File 6 of 6: Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "Context.sol";

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

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

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

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_treasury","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":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"bool","name":"_set","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_block","type":"uint256"}],"name":"GameControllerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"bool","name":"_set","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_block","type":"uint256"}],"name":"SupplyExemptWalletSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_treasury","type":"address"}],"name":"TreasuryUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_status","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_block","type":"uint256"}],"name":"WalletSupplyLimitsSet","type":"event"},{"inputs":[],"name":"TWO_MONTHS_BLOCKS","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":"chefCutThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deploymentBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDivisionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_addr","type":"address"}],"name":"isWalletSupplyExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintedWithoutChefCut","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_set","type":"bool"}],"name":"setGameController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_set","type":"bool"}],"name":"setSupplyLimitExemption","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_set","type":"bool"}],"name":"setWalletSupplyLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"updateTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletSupplyLimitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

60806040526221f60060095561dead600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600c55655af3107a4000600d55662386f26fc10000600e556001600f60006101000a81548160ff0219169083151502179055503480156200009057600080fd5b5060405162002f7a38038062002f7a8339818101604052810190620000b6919062000674565b6040518060400160405280600381526020017f476f6f00000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f474f4f000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200013a9291906200055a565b508060049080519060200190620001539291906200055a565b505050620001766200016a6200030960201b60201c565b6200031160201b60201c565b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002fb33671bc16d674ec80000620003d760201b60201c565b436008819055505062000852565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200044a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004419062000707565b60405180910390fd5b6200045e600083836200055060201b60201c565b806002600082825462000472919062000762565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620004c9919062000762565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005309190620007d0565b60405180910390a36200054c600083836200055560201b60201c565b5050565b505050565b505050565b82805462000568906200081c565b90600052602060002090601f0160209004810192826200058c5760008555620005d8565b82601f10620005a757805160ff1916838001178555620005d8565b82800160010185558215620005d8579182015b82811115620005d7578251825591602001919060010190620005ba565b5b509050620005e79190620005eb565b5090565b5b8082111562000606576000816000905550600101620005ec565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200063c826200060f565b9050919050565b6200064e816200062f565b81146200065a57600080fd5b50565b6000815190506200066e8162000643565b92915050565b6000602082840312156200068d576200068c6200060a565b5b60006200069d848285016200065d565b91505092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620006ef601f83620006a6565b9150620006fc82620006b7565b602082019050919050565b600060208201905081810360008301526200072281620006e0565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200076f8262000729565b91506200077c8362000729565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620007b457620007b362000733565b5b828201905092915050565b620007ca8162000729565b82525050565b6000602082019050620007e76000830184620007bf565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200083557607f821691505b602082108114156200084c576200084b620007ed565b5b50919050565b61271880620008626000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80637e8b088e116100f957806395d89b4111610097578063af4425c411610071578063af4425c4146104fb578063dd62ed3e14610519578063e9cf8bb914610549578063f2fde38b14610565576101c4565b806395d89b411461047d578063a457c2d71461049b578063a9059cbb146104cb576101c4565b806382100e3f116100d357806382100e3f146103f35780638da5cb5b1461041157806394ffa1a21461042f57806395a252101461045f576101c4565b80637e8b088e1461039b5780637edc647e146103b95780637f51bb1f146103d7576101c4565b80633b8e6ccb1161016657806361d027b31161014057806361d027b31461032757806370a0823114610345578063715018a61461037557806372fe941d1461037f576101c4565b80633b8e6ccb146102cf57806340c10f19146102ed5780635df103b714610309576101c4565b806323b872dd116101a257806323b872dd146102355780632eecebae14610265578063313ce56714610281578063395093511461029f576101c4565b806306fdde03146101c9578063095ea7b3146101e757806318160ddd14610217575b600080fd5b6101d1610581565b6040516101de9190611b10565b60405180910390f35b61020160048036038101906101fc9190611bcb565b610613565b60405161020e9190611c26565b60405180910390f35b61021f610636565b60405161022c9190611c50565b60405180910390f35b61024f600480360381019061024a9190611c6b565b610640565b60405161025c9190611c26565b60405180910390f35b61027f600480360381019061027a9190611cea565b610772565b005b610289610884565b6040516102969190611d46565b60405180910390f35b6102b960048036038101906102b49190611bcb565b61088d565b6040516102c69190611c26565b60405180910390f35b6102d76108c4565b6040516102e49190611c50565b60405180910390f35b61030760048036038101906103029190611bcb565b6108ca565b005b610311610a7d565b60405161031e9190611c50565b60405180910390f35b61032f610a83565b60405161033c9190611d70565b60405180910390f35b61035f600480360381019061035a9190611d8b565b610aa9565b60405161036c9190611c50565b60405180910390f35b61037d610af1565b005b61039960048036038101906103949190611cea565b610b79565b005b6103a3610ce2565b6040516103b09190611c50565b60405180910390f35b6103c1610d44565b6040516103ce9190611c50565b60405180910390f35b6103f160048036038101906103ec9190611d8b565b610d4a565b005b6103fb610e41565b6040516104089190611c50565b60405180910390f35b610419610e47565b6040516104269190611d70565b60405180910390f35b61044960048036038101906104449190611d8b565b610e71565b6040516104569190611c26565b60405180910390f35b610467610ece565b6040516104749190611c50565b60405180910390f35b610485610ed4565b6040516104929190611b10565b60405180910390f35b6104b560048036038101906104b09190611bcb565b610f66565b6040516104c29190611c26565b60405180910390f35b6104e560048036038101906104e09190611bcb565b610fdd565b6040516104f29190611c26565b60405180910390f35b610503611103565b6040516105109190611c26565b60405180910390f35b610533600480360381019061052e9190611db8565b611116565b6040516105409190611c50565b60405180910390f35b610563600480360381019061055e9190611df8565b61119d565b005b61057f600480360381019061057a9190611d8b565b61126f565b005b60606003805461059090611e54565b80601f01602080910402602001604051908101604052809291908181526020018280546105bc90611e54565b80156106095780601f106105de57610100808354040283529160200191610609565b820191906000526020600020905b8154815290600101906020018083116105ec57829003601f168201915b5050505050905090565b60008061061e611367565b905061062b81858561136f565b600191505092915050565b6000600254905090565b600083838361064d610e47565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156106bb575061068b610e47565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561074157600f60009054906101000a900460ff1680156106e257506106e082610e71565b155b1561074057600e54816106f484610aa9565b6106fe9190611eb5565b111561073f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073690611f7d565b60405180910390fd5b5b5b600061074b611367565b905061075888828861153a565b6107638888886115c6565b60019450505050509392505050565b61077a611367565b73ffffffffffffffffffffffffffffffffffffffff16610798610e47565b73ffffffffffffffffffffffffffffffffffffffff16146107ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e590611fe9565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f974d76fdbd0c38bc42b1ee60d575533ec0ba00c28dd3b9cdd4fa56d0370b3c6682824360405161087893929190612009565b60405180910390a15050565b60006009905090565b600080610898611367565b90506108b98185856108aa8589611116565b6108b49190611eb5565b61136f565b600191505092915050565b60095481565b3373ffffffffffffffffffffffffffffffffffffffff166108e9610e47565b73ffffffffffffffffffffffffffffffffffffffff161415801561095d575060001515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1561099d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610994906120b2565b60405180910390fd5b6109a5610ce2565b816109b09190612101565b90506109bc8282611847565b80600c546109ca9190611eb5565b600c81905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015610a315750600d54600c54115b15610a7957610a70600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166014600c54610a6b9190612101565b611847565b6000600c819055505b5050565b600d5481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610af9611367565b73ffffffffffffffffffffffffffffffffffffffff16610b17610e47565b73ffffffffffffffffffffffffffffffffffffffff1614610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6490611fe9565b60405180910390fd5b610b7760006119a7565b565b610b81611367565b73ffffffffffffffffffffffffffffffffffffffff16610b9f610e47565b73ffffffffffffffffffffffffffffffffffffffff1614610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec90611fe9565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f61e1c75eab4fd8e05efa50ec340a1da8cc7e5c628d90088bd0cf9ea844d12b8a828243604051610cd693929190612009565b60405180910390a15050565b60008060019050600060085443610cf99190612132565b9050600060095482610d0b9190612101565b905060005b81811015610d3a57600284610d259190612166565b93508080610d32906121c0565b915050610d10565b5082935050505090565b600c5481565b610d52611367565b73ffffffffffffffffffffffffffffffffffffffff16610d70610e47565b73ffffffffffffffffffffffffffffffffffffffff1614610dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbd90611fe9565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d181604051610e369190611d70565b60405180910390a150565b60085481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600060011515600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515149050919050565b600e5481565b606060048054610ee390611e54565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0f90611e54565b8015610f5c5780601f10610f3157610100808354040283529160200191610f5c565b820191906000526020600020905b815481529060010190602001808311610f3f57829003601f168201915b5050505050905090565b600080610f71611367565b90506000610f7f8286611116565b905083811015610fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbb9061227b565b60405180910390fd5b610fd1828686840361136f565b60019250505092915050565b6000338383610fea610e47565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156110585750611028610e47565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156110de57600f60009054906101000a900460ff16801561107f575061107d82610e71565b155b156110dd57600e548161109184610aa9565b61109b9190611eb5565b11156110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d390611f7d565b60405180910390fd5b5b5b60006110e8611367565b90506110f58188886115c6565b600194505050505092915050565b600f60009054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111a5611367565b73ffffffffffffffffffffffffffffffffffffffff166111c3610e47565b73ffffffffffffffffffffffffffffffffffffffff1614611219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121090611fe9565b60405180910390fd5b80600f60006101000a81548160ff0219169083151502179055507f46a68cd0b949c46aed9e460a848db838f09032fa0e9bbc58faed7d3d6ed3a2a2814360405161126492919061229b565b60405180910390a150565b611277611367565b73ffffffffffffffffffffffffffffffffffffffff16611295610e47565b73ffffffffffffffffffffffffffffffffffffffff16146112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290611fe9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561135b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135290612310565b60405180910390fd5b611364816119a7565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d6906123a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561144f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144690612434565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161152d9190611c50565b60405180910390a3505050565b60006115468484611116565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115c057818110156115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a9906124a0565b60405180910390fd5b6115bf848484840361136f565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162d90612532565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169d906125c4565b60405180910390fd5b6116b1838383611a6d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e90612656565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117ca9190611eb5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161182e9190611c50565b60405180910390a3611841848484611a72565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ae906126c2565b60405180910390fd5b6118c360008383611a6d565b80600260008282546118d59190611eb5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461192a9190611eb5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161198f9190611c50565b60405180910390a36119a360008383611a72565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ab1578082015181840152602081019050611a96565b83811115611ac0576000848401525b50505050565b6000601f19601f8301169050919050565b6000611ae282611a77565b611aec8185611a82565b9350611afc818560208601611a93565b611b0581611ac6565b840191505092915050565b60006020820190508181036000830152611b2a8184611ad7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611b6282611b37565b9050919050565b611b7281611b57565b8114611b7d57600080fd5b50565b600081359050611b8f81611b69565b92915050565b6000819050919050565b611ba881611b95565b8114611bb357600080fd5b50565b600081359050611bc581611b9f565b92915050565b60008060408385031215611be257611be1611b32565b5b6000611bf085828601611b80565b9250506020611c0185828601611bb6565b9150509250929050565b60008115159050919050565b611c2081611c0b565b82525050565b6000602082019050611c3b6000830184611c17565b92915050565b611c4a81611b95565b82525050565b6000602082019050611c656000830184611c41565b92915050565b600080600060608486031215611c8457611c83611b32565b5b6000611c9286828701611b80565b9350506020611ca386828701611b80565b9250506040611cb486828701611bb6565b9150509250925092565b611cc781611c0b565b8114611cd257600080fd5b50565b600081359050611ce481611cbe565b92915050565b60008060408385031215611d0157611d00611b32565b5b6000611d0f85828601611b80565b9250506020611d2085828601611cd5565b9150509250929050565b600060ff82169050919050565b611d4081611d2a565b82525050565b6000602082019050611d5b6000830184611d37565b92915050565b611d6a81611b57565b82525050565b6000602082019050611d856000830184611d61565b92915050565b600060208284031215611da157611da0611b32565b5b6000611daf84828501611b80565b91505092915050565b60008060408385031215611dcf57611dce611b32565b5b6000611ddd85828601611b80565b9250506020611dee85828601611b80565b9150509250929050565b600060208284031215611e0e57611e0d611b32565b5b6000611e1c84828501611cd5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611e6c57607f821691505b60208210811415611e8057611e7f611e25565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ec082611b95565b9150611ecb83611b95565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611f0057611eff611e86565b5b828201905092915050565b7f4d6178696d756d20737570706c79206f6e20726563697069656e742077616c6c60008201527f6574207265616368656400000000000000000000000000000000000000000000602082015250565b6000611f67602a83611a82565b9150611f7282611f0b565b604082019050919050565b60006020820190508181036000830152611f9681611f5a565b9050919050565b7f4f30000000000000000000000000000000000000000000000000000000000000600082015250565b6000611fd3600283611a82565b9150611fde82611f9d565b602082019050919050565b6000602082019050818103600083015261200281611fc6565b9050919050565b600060608201905061201e6000830186611d61565b61202b6020830185611c17565b6120386040830184611c41565b949350505050565b7f4d757374206265206f776e65722c206f722067616d6520636f6e74726f6c6c6560008201527f7221000000000000000000000000000000000000000000000000000000000000602082015250565b600061209c602283611a82565b91506120a782612040565b604082019050919050565b600060208201905081810360008301526120cb8161208f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061210c82611b95565b915061211783611b95565b925082612127576121266120d2565b5b828204905092915050565b600061213d82611b95565b915061214883611b95565b92508282101561215b5761215a611e86565b5b828203905092915050565b600061217182611b95565b915061217c83611b95565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156121b5576121b4611e86565b5b828202905092915050565b60006121cb82611b95565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156121fe576121fd611e86565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612265602583611a82565b915061227082612209565b604082019050919050565b6000602082019050818103600083015261229481612258565b9050919050565b60006040820190506122b06000830185611c17565b6122bd6020830184611c41565b9392505050565b7f4f31000000000000000000000000000000000000000000000000000000000000600082015250565b60006122fa600283611a82565b9150612305826122c4565b602082019050919050565b60006020820190508181036000830152612329816122ed565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061238c602483611a82565b915061239782612330565b604082019050919050565b600060208201905081810360008301526123bb8161237f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061241e602283611a82565b9150612429826123c2565b604082019050919050565b6000602082019050818103600083015261244d81612411565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061248a601d83611a82565b915061249582612454565b602082019050919050565b600060208201905081810360008301526124b98161247d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061251c602583611a82565b9150612527826124c0565b604082019050919050565b6000602082019050818103600083015261254b8161250f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006125ae602383611a82565b91506125b982612552565b604082019050919050565b600060208201905081810360008301526125dd816125a1565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612640602683611a82565b915061264b826125e4565b604082019050919050565b6000602082019050818103600083015261266f81612633565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006126ac601f83611a82565b91506126b782612676565b602082019050919050565b600060208201905081810360008301526126db8161269f565b905091905056fea26469706673582212207d59040624fde0f687c004e82722bd198afb3ebaf552beff4549a5af478bc82b64736f6c634300080a003300000000000000000000000047c5aa82fda7a79c7965beb6d7c6a265fe59921b

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

00000000000000000000000047c5aa82fda7a79c7965beb6d7c6a265fe59921b

-----Decoded View---------------
Arg [0] : _treasury (address): 0x47c5aa82fda7a79c7965beb6d7c6a265fe59921b

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000047c5aa82fda7a79c7965beb6d7c6a265fe59921b


Deployed ByteCode Sourcemap

742:3963:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2199:100:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4549:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3318:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4129:328:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2686:196;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3161:92:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6034:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;957:39:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3727:394;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1153:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1005:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3489:127:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1618:94:5;;;:::i;:::-;;2452:226:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3209:359;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1110:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3576:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;923:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;997:87:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3067:134:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1199:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2418:104:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6775:424;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4465:237:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1249:44;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4078:151:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2890:169:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1867:156:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2199:100:1;2253:13;2286:5;2279:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2199:100;:::o;4549:201::-;4632:4;4649:13;4665:12;:10;:12::i;:::-;4649:28;;4688:32;4697:5;4704:7;4713:6;4688:8;:32::i;:::-;4738:4;4731:11;;;4549:201;;;;:::o;3318:108::-;3379:7;3406:12;;3399:19;;3318:108;:::o;4129:328:2:-;4293:4;4257;4263:2;4267:6;2177:7;:5;:7::i;:::-;2171:13;;:2;:13;;;;:32;;;;;2196:7;:5;:7::i;:::-;2188:15;;:4;:15;;;;2171:32;2167:258;;;2224:25;;;;;;;;;;;:54;;;;;2254:24;2275:2;2254:20;:24::i;:::-;2253:25;2224:54;2220:194;;;2333:18;;2323:6;2307:13;2317:2;2307:9;:13::i;:::-;:22;;;;:::i;:::-;:44;;2299:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;2220:194;2167:258;4310:15:::1;4328:12;:10;:12::i;:::-;4310:30;;4351:38;4367:4;4373:7;4382:6;4351:15;:38::i;:::-;4400:27;4410:4;4416:2;4420:6;4400:9;:27::i;:::-;4445:4;4438:11;;;4129:328:::0;;;;;;;;:::o;2686:196::-;1228:12:5;:10;:12::i;:::-;1217:23;;:7;:5;:7::i;:::-;:23;;;1209:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2806:4:2::1;2775:21;:28;2797:5;2775:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;2826:48;2848:5;2855:4;2861:12;2826:48;;;;;;;;:::i;:::-;;;;;;;;2686:196:::0;;:::o;3161:92:1:-;3219:5;3244:1;3237:8;;3161:92;:::o;6034:238::-;6122:4;6139:13;6155:12;:10;:12::i;:::-;6139:28;;6178:64;6187:5;6194:7;6231:10;6203:25;6213:5;6220:7;6203:9;:25::i;:::-;:38;;;;:::i;:::-;6178:8;:64::i;:::-;6260:4;6253:11;;;6034:238;;;;:::o;957:39:2:-;;;;:::o;3727:394::-;1935:10;1924:21;;:7;:5;:7::i;:::-;:21;;;;:61;;;;;1980:5;1949:36;;:15;:27;1965:10;1949:27;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;1924:61;1920:138;;;2002:44;;;;;;;;;;:::i;:::-;;;;;;;;1920:138;3824:17:::1;:15;:17::i;:::-;3815:6;:26;;;;:::i;:::-;3806:35;;3852:17;3858:2;3862:6;3852:5;:17::i;:::-;3926:6;3903:20;;:29;;;;:::i;:::-;3880:20;:52;;;;3953:8;;;;;;;;;;;3947:14;;:2;:14;;;;:57;;;;;3988:16;;3965:20;;:39;3947:57;3943:171;;;4021:42;4027:8;;;;;;;;;;;4060:2;4037:20;;:25;;;;:::i;:::-;4021:5;:42::i;:::-;4101:1;4078:20;:24;;;;3943:171;3727:394:::0;;:::o;1153:39::-;;;;:::o;1005:23::-;;;;;;;;;;;;;:::o;3489:127:1:-;3563:7;3590:9;:18;3600:7;3590:18;;;;;;;;;;;;;;;;3583:25;;3489:127;;;:::o;1618:94:5:-;1228:12;:10;:12::i;:::-;1217:23;;:7;:5;:7::i;:::-;:23;;;1209:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1683:21:::1;1701:1;1683:9;:21::i;:::-;1618:94::o:0;2452:226:2:-;1228:12:5;:10;:12::i;:::-;1217:23;;:7;:5;:7::i;:::-;:23;;;1209:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2560:4:2::1;2535:15;:22;2551:5;2535:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;2606:4;2575:21;:28;2597:5;2575:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;2626:44;2644:5;2651:4;2657:12;2626:44;;;;;;;;:::i;:::-;;;;;;;;2452:226:::0;;:::o;3209:359::-;3256:4;3273:12;3288:1;3273:16;;3300:26;3344:15;;3329:12;:30;;;;:::i;:::-;3300:59;;3370:20;3417:17;;3393:21;:41;;;;:::i;:::-;3370:64;;3450:6;3445:91;3466:15;3462:1;:19;3445:91;;;3523:1;3513:7;:11;;;;:::i;:::-;3503:21;;3483:3;;;;;:::i;:::-;;;;3445:91;;;;3553:7;3546:14;;;;;3209:359;:::o;1110:36::-;;;;:::o;3576:143::-;1228:12:5;:10;:12::i;:::-;1217:23;;:7;:5;:7::i;:::-;:23;;;1209:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3660:9:2::1;3649:8;;:20;;;;;;;;;;;;;;;;;;3685:26;3701:9;3685:26;;;;;;:::i;:::-;;;;;;;;3576:143:::0;:::o;923:27::-;;;;:::o;997:87:5:-;1043:7;1070:6;;;;;;;;;;;1063:13;;997:87;:::o;3067:134:2:-;3133:4;3189;3157:36;;:21;:28;3179:5;3157:28;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;3150:43;;3067:134;;;:::o;1199:43::-;;;;:::o;2418:104:1:-;2474:13;2507:7;2500:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2418:104;:::o;6775:424::-;6868:4;6885:13;6901:12;:10;:12::i;:::-;6885:28;;6924:24;6951:25;6961:5;6968:7;6951:9;:25::i;:::-;6924:52;;7015:15;6995:16;:35;;6987:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7100:60;7109:5;7116:7;7144:15;7125:16;:34;7100:8;:60::i;:::-;7187:4;7180:11;;;;6775:424;;;;:::o;4465:237:2:-;4588:4;4546:10;4558:2;4562:6;2177:7;:5;:7::i;:::-;2171:13;;:2;:13;;;;:32;;;;;2196:7;:5;:7::i;:::-;2188:15;;:4;:15;;;;2171:32;2167:258;;;2224:25;;;;;;;;;;;:54;;;;;2254:24;2275:2;2254:20;:24::i;:::-;2253:25;2224:54;2220:194;;;2333:18;;2323:6;2307:13;2317:2;2307:9;:13::i;:::-;:22;;;;:::i;:::-;:44;;2299:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;2220:194;2167:258;4605:13:::1;4621:12;:10;:12::i;:::-;4605:28;;4644;4654:5;4661:2;4665:6;4644:9;:28::i;:::-;4690:4;4683:11;;;4465:237:::0;;;;;;;:::o;1249:44::-;;;;;;;;;;;;;:::o;4078:151:1:-;4167:7;4194:11;:18;4206:5;4194:18;;;;;;;;;;;;;;;:27;4213:7;4194:27;;;;;;;;;;;;;;;;4187:34;;4078:151;;;;:::o;2890:169:2:-;1228:12:5;:10;:12::i;:::-;1217:23;;:7;:5;:7::i;:::-;:23;;;1209:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2990:4:2::1;2962:25;;:32;;;;;;;;;;;;;;;;;;3010:41;3032:4;3038:12;3010:41;;;;;;;:::i;:::-;;;;;;;;2890:169:::0;:::o;1867:156:5:-;1228:12;:10;:12::i;:::-;1217:23;;:7;:5;:7::i;:::-;:23;;;1209:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1976:1:::1;1956:22;;:8;:22;;;;1948:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;1996:19;2006:8;1996:9;:19::i;:::-;1867:156:::0;:::o;602:98:0:-;655:7;682:10;675:17;;602:98;:::o;10373:380:1:-;10526:1;10509:19;;:5;:19;;;;10501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10607:1;10588:21;;:7;:21;;;;10580:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10691:6;10661:11;:18;10673:5;10661:18;;;;;;;;;;;;;;;:27;10680:7;10661:27;;;;;;;;;;;;;;;:36;;;;10729:7;10713:32;;10722:5;10713:32;;;10738:6;10713:32;;;;;;:::i;:::-;;;;;;;;10373:380;;;:::o;11044:433::-;11179:24;11206:25;11216:5;11223:7;11206:9;:25::i;:::-;11179:52;;11266:17;11246:16;:37;11242:228;;11324:6;11304:16;:26;;11296:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11396:51;11405:5;11412:7;11440:6;11421:16;:25;11396:8;:51::i;:::-;11242:228;11168:309;11044:433;;;:::o;7678:659::-;7825:1;7809:18;;:4;:18;;;;7801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7902:1;7888:16;;:2;:16;;;;7880:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7957:38;7978:4;7984:2;7988:6;7957:20;:38::i;:::-;8008:19;8030:9;:15;8040:4;8030:15;;;;;;;;;;;;;;;;8008:37;;8079:6;8064:11;:21;;8056:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;8188:6;8174:11;:20;8156:9;:15;8166:4;8156:15;;;;;;;;;;;;;;;:38;;;;8229:6;8212:9;:13;8222:2;8212:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;8268:2;8253:26;;8262:4;8253:26;;;8272:6;8253:26;;;;;;:::i;:::-;;;;;;;;8292:37;8312:4;8318:2;8322:6;8292:19;:37::i;:::-;7790:547;7678:659;;;:::o;8624:399::-;8727:1;8708:21;;:7;:21;;;;8700:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8778:49;8807:1;8811:7;8820:6;8778:20;:49::i;:::-;8856:6;8840:12;;:22;;;;;;;:::i;:::-;;;;;;;;8895:6;8873:9;:18;8883:7;8873:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;8938:7;8917:37;;8934:1;8917:37;;;8947:6;8917:37;;;;;;:::i;:::-;;;;;;;;8967:48;8995:1;8999:7;9008:6;8967:19;:48::i;:::-;8624:399;;:::o;2031:173:5:-;2087:16;2106:6;;;;;;;;;;;2087:25;;2132:8;2123:6;;:17;;;;;;;;;;;;;;;;;;2187:8;2156:40;;2177:8;2156:40;;;;;;;;;;;;2076:128;2031:173;:::o;12077:125:1:-;;;;:::o;12806:124::-;;;;:::o;7:99:6:-;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:116::-;4541:21;4556:5;4541:21;:::i;:::-;4534:5;4531:32;4521:60;;4577:1;4574;4567:12;4521:60;4471:116;:::o;4593:133::-;4636:5;4674:6;4661:20;4652:29;;4690:30;4714:5;4690:30;:::i;:::-;4593:133;;;;:::o;4732:468::-;4797:6;4805;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;5107:2;5133:50;5175:7;5166:6;5155:9;5151:22;5133:50;:::i;:::-;5123:60;;5078:115;4732:468;;;;;:::o;5206:86::-;5241:7;5281:4;5274:5;5270:16;5259:27;;5206:86;;;:::o;5298:112::-;5381:22;5397:5;5381:22;:::i;:::-;5376:3;5369:35;5298:112;;:::o;5416:214::-;5505:4;5543:2;5532:9;5528:18;5520:26;;5556:67;5620:1;5609:9;5605:17;5596:6;5556:67;:::i;:::-;5416:214;;;;:::o;5636:118::-;5723:24;5741:5;5723:24;:::i;:::-;5718:3;5711:37;5636:118;;:::o;5760:222::-;5853:4;5891:2;5880:9;5876:18;5868:26;;5904:71;5972:1;5961:9;5957:17;5948:6;5904:71;:::i;:::-;5760:222;;;;:::o;5988:329::-;6047:6;6096:2;6084:9;6075:7;6071:23;6067:32;6064:119;;;6102:79;;:::i;:::-;6064:119;6222:1;6247:53;6292:7;6283:6;6272:9;6268:22;6247:53;:::i;:::-;6237:63;;6193:117;5988:329;;;;:::o;6323:474::-;6391:6;6399;6448:2;6436:9;6427:7;6423:23;6419:32;6416:119;;;6454:79;;:::i;:::-;6416:119;6574:1;6599:53;6644:7;6635:6;6624:9;6620:22;6599:53;:::i;:::-;6589:63;;6545:117;6701:2;6727:53;6772:7;6763:6;6752:9;6748:22;6727:53;:::i;:::-;6717:63;;6672:118;6323:474;;;;;:::o;6803:323::-;6859:6;6908:2;6896:9;6887:7;6883:23;6879:32;6876:119;;;6914:79;;:::i;:::-;6876:119;7034:1;7059:50;7101:7;7092:6;7081:9;7077:22;7059:50;:::i;:::-;7049:60;;7005:114;6803:323;;;;:::o;7132:180::-;7180:77;7177:1;7170:88;7277:4;7274:1;7267:15;7301:4;7298:1;7291:15;7318:320;7362:6;7399:1;7393:4;7389:12;7379:22;;7446:1;7440:4;7436:12;7467:18;7457:81;;7523:4;7515:6;7511:17;7501:27;;7457:81;7585:2;7577:6;7574:14;7554:18;7551:38;7548:84;;;7604:18;;:::i;:::-;7548:84;7369:269;7318:320;;;:::o;7644:180::-;7692:77;7689:1;7682:88;7789:4;7786:1;7779:15;7813:4;7810:1;7803:15;7830:305;7870:3;7889:20;7907:1;7889:20;:::i;:::-;7884:25;;7923:20;7941:1;7923:20;:::i;:::-;7918:25;;8077:1;8009:66;8005:74;8002:1;7999:81;7996:107;;;8083:18;;:::i;:::-;7996:107;8127:1;8124;8120:9;8113:16;;7830:305;;;;:::o;8141:229::-;8281:34;8277:1;8269:6;8265:14;8258:58;8350:12;8345:2;8337:6;8333:15;8326:37;8141:229;:::o;8376:366::-;8518:3;8539:67;8603:2;8598:3;8539:67;:::i;:::-;8532:74;;8615:93;8704:3;8615:93;:::i;:::-;8733:2;8728:3;8724:12;8717:19;;8376:366;;;:::o;8748:419::-;8914:4;8952:2;8941:9;8937:18;8929:26;;9001:9;8995:4;8991:20;8987:1;8976:9;8972:17;8965:47;9029:131;9155:4;9029:131;:::i;:::-;9021:139;;8748:419;;;:::o;9173:152::-;9313:4;9309:1;9301:6;9297:14;9290:28;9173:152;:::o;9331:365::-;9473:3;9494:66;9558:1;9553:3;9494:66;:::i;:::-;9487:73;;9569:93;9658:3;9569:93;:::i;:::-;9687:2;9682:3;9678:12;9671:19;;9331:365;;;:::o;9702:419::-;9868:4;9906:2;9895:9;9891:18;9883:26;;9955:9;9949:4;9945:20;9941:1;9930:9;9926:17;9919:47;9983:131;10109:4;9983:131;:::i;:::-;9975:139;;9702:419;;;:::o;10127:430::-;10270:4;10308:2;10297:9;10293:18;10285:26;;10321:71;10389:1;10378:9;10374:17;10365:6;10321:71;:::i;:::-;10402:66;10464:2;10453:9;10449:18;10440:6;10402:66;:::i;:::-;10478:72;10546:2;10535:9;10531:18;10522:6;10478:72;:::i;:::-;10127:430;;;;;;:::o;10563:221::-;10703:34;10699:1;10691:6;10687:14;10680:58;10772:4;10767:2;10759:6;10755:15;10748:29;10563:221;:::o;10790:366::-;10932:3;10953:67;11017:2;11012:3;10953:67;:::i;:::-;10946:74;;11029:93;11118:3;11029:93;:::i;:::-;11147:2;11142:3;11138:12;11131:19;;10790:366;;;:::o;11162:419::-;11328:4;11366:2;11355:9;11351:18;11343:26;;11415:9;11409:4;11405:20;11401:1;11390:9;11386:17;11379:47;11443:131;11569:4;11443:131;:::i;:::-;11435:139;;11162:419;;;:::o;11587:180::-;11635:77;11632:1;11625:88;11732:4;11729:1;11722:15;11756:4;11753:1;11746:15;11773:185;11813:1;11830:20;11848:1;11830:20;:::i;:::-;11825:25;;11864:20;11882:1;11864:20;:::i;:::-;11859:25;;11903:1;11893:35;;11908:18;;:::i;:::-;11893:35;11950:1;11947;11943:9;11938:14;;11773:185;;;;:::o;11964:191::-;12004:4;12024:20;12042:1;12024:20;:::i;:::-;12019:25;;12058:20;12076:1;12058:20;:::i;:::-;12053:25;;12097:1;12094;12091:8;12088:34;;;12102:18;;:::i;:::-;12088:34;12147:1;12144;12140:9;12132:17;;11964:191;;;;:::o;12161:348::-;12201:7;12224:20;12242:1;12224:20;:::i;:::-;12219:25;;12258:20;12276:1;12258:20;:::i;:::-;12253:25;;12446:1;12378:66;12374:74;12371:1;12368:81;12363:1;12356:9;12349:17;12345:105;12342:131;;;12453:18;;:::i;:::-;12342:131;12501:1;12498;12494:9;12483:20;;12161:348;;;;:::o;12515:233::-;12554:3;12577:24;12595:5;12577:24;:::i;:::-;12568:33;;12623:66;12616:5;12613:77;12610:103;;;12693:18;;:::i;:::-;12610:103;12740:1;12733:5;12729:13;12722:20;;12515:233;;;:::o;12754:224::-;12894:34;12890:1;12882:6;12878:14;12871:58;12963:7;12958:2;12950:6;12946:15;12939:32;12754:224;:::o;12984:366::-;13126:3;13147:67;13211:2;13206:3;13147:67;:::i;:::-;13140:74;;13223:93;13312:3;13223:93;:::i;:::-;13341:2;13336:3;13332:12;13325:19;;12984:366;;;:::o;13356:419::-;13522:4;13560:2;13549:9;13545:18;13537:26;;13609:9;13603:4;13599:20;13595:1;13584:9;13580:17;13573:47;13637:131;13763:4;13637:131;:::i;:::-;13629:139;;13356:419;;;:::o;13781:320::-;13896:4;13934:2;13923:9;13919:18;13911:26;;13947:65;14009:1;13998:9;13994:17;13985:6;13947:65;:::i;:::-;14022:72;14090:2;14079:9;14075:18;14066:6;14022:72;:::i;:::-;13781:320;;;;;:::o;14107:152::-;14247:4;14243:1;14235:6;14231:14;14224:28;14107:152;:::o;14265:365::-;14407:3;14428:66;14492:1;14487:3;14428:66;:::i;:::-;14421:73;;14503:93;14592:3;14503:93;:::i;:::-;14621:2;14616:3;14612:12;14605:19;;14265:365;;;:::o;14636:419::-;14802:4;14840:2;14829:9;14825:18;14817:26;;14889:9;14883:4;14879:20;14875:1;14864:9;14860:17;14853:47;14917:131;15043:4;14917:131;:::i;:::-;14909:139;;14636:419;;;:::o;15061:223::-;15201:34;15197:1;15189:6;15185:14;15178:58;15270:6;15265:2;15257:6;15253:15;15246:31;15061:223;:::o;15290:366::-;15432:3;15453:67;15517:2;15512:3;15453:67;:::i;:::-;15446:74;;15529:93;15618:3;15529:93;:::i;:::-;15647:2;15642:3;15638:12;15631:19;;15290:366;;;:::o;15662:419::-;15828:4;15866:2;15855:9;15851:18;15843:26;;15915:9;15909:4;15905:20;15901:1;15890:9;15886:17;15879:47;15943:131;16069:4;15943:131;:::i;:::-;15935:139;;15662:419;;;:::o;16087:221::-;16227:34;16223:1;16215:6;16211:14;16204:58;16296:4;16291:2;16283:6;16279:15;16272:29;16087:221;:::o;16314:366::-;16456:3;16477:67;16541:2;16536:3;16477:67;:::i;:::-;16470:74;;16553:93;16642:3;16553:93;:::i;:::-;16671:2;16666:3;16662:12;16655:19;;16314:366;;;:::o;16686:419::-;16852:4;16890:2;16879:9;16875:18;16867:26;;16939:9;16933:4;16929:20;16925:1;16914:9;16910:17;16903:47;16967:131;17093:4;16967:131;:::i;:::-;16959:139;;16686:419;;;:::o;17111:179::-;17251:31;17247:1;17239:6;17235:14;17228:55;17111:179;:::o;17296:366::-;17438:3;17459:67;17523:2;17518:3;17459:67;:::i;:::-;17452:74;;17535:93;17624:3;17535:93;:::i;:::-;17653:2;17648:3;17644:12;17637:19;;17296:366;;;:::o;17668:419::-;17834:4;17872:2;17861:9;17857:18;17849:26;;17921:9;17915:4;17911:20;17907:1;17896:9;17892:17;17885:47;17949:131;18075:4;17949:131;:::i;:::-;17941:139;;17668:419;;;:::o;18093:224::-;18233:34;18229:1;18221:6;18217:14;18210:58;18302:7;18297:2;18289:6;18285:15;18278:32;18093:224;:::o;18323:366::-;18465:3;18486:67;18550:2;18545:3;18486:67;:::i;:::-;18479:74;;18562:93;18651:3;18562:93;:::i;:::-;18680:2;18675:3;18671:12;18664:19;;18323:366;;;:::o;18695:419::-;18861:4;18899:2;18888:9;18884:18;18876:26;;18948:9;18942:4;18938:20;18934:1;18923:9;18919:17;18912:47;18976:131;19102:4;18976:131;:::i;:::-;18968:139;;18695:419;;;:::o;19120:222::-;19260:34;19256:1;19248:6;19244:14;19237:58;19329:5;19324:2;19316:6;19312:15;19305:30;19120:222;:::o;19348:366::-;19490:3;19511:67;19575:2;19570:3;19511:67;:::i;:::-;19504:74;;19587:93;19676:3;19587:93;:::i;:::-;19705:2;19700:3;19696:12;19689:19;;19348:366;;;:::o;19720:419::-;19886:4;19924:2;19913:9;19909:18;19901:26;;19973:9;19967:4;19963:20;19959:1;19948:9;19944:17;19937:47;20001:131;20127:4;20001:131;:::i;:::-;19993:139;;19720:419;;;:::o;20145:225::-;20285:34;20281:1;20273:6;20269:14;20262:58;20354:8;20349:2;20341:6;20337:15;20330:33;20145:225;:::o;20376:366::-;20518:3;20539:67;20603:2;20598:3;20539:67;:::i;:::-;20532:74;;20615:93;20704:3;20615:93;:::i;:::-;20733:2;20728:3;20724:12;20717:19;;20376:366;;;:::o;20748:419::-;20914:4;20952:2;20941:9;20937:18;20929:26;;21001:9;20995:4;20991:20;20987:1;20976:9;20972:17;20965:47;21029:131;21155:4;21029:131;:::i;:::-;21021:139;;20748:419;;;:::o;21173:181::-;21313:33;21309:1;21301:6;21297:14;21290:57;21173:181;:::o;21360:366::-;21502:3;21523:67;21587:2;21582:3;21523:67;:::i;:::-;21516:74;;21599:93;21688:3;21599:93;:::i;:::-;21717:2;21712:3;21708:12;21701:19;;21360:366;;;:::o;21732:419::-;21898:4;21936:2;21925:9;21921:18;21913:26;;21985:9;21979:4;21975:20;21971:1;21960:9;21956:17;21949:47;22013:131;22139:4;22013:131;:::i;:::-;22005:139;;21732:419;;;:::o

Swarm Source

ipfs://7d59040624fde0f687c004e82722bd198afb3ebaf552beff4549a5af478bc82b
Loading