ETH Price: $3,421.58 (-6.31%)

Token

Gandalf (GANDALF)
 

Overview

Max Total Supply

6,898,447,500,000 GANDALF

Holders

321

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
Gandalf

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//██████████████████████████████████████████████████████████████████████████████████████████████████████████████████
//█░░░░░░░░░░░░░░█░░░░░░░░░░░░░░█░░░░░░██████████░░░░░░█░░░░░░░░░░░░███░░░░░░░░░░░░░░█░░░░░░█████████░░░░░░░░░░░░░░█
//█░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀░░░░░░░░░░██░░▄▀░░█░░▄▀▄▀▄▀▄▀░░░░█░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀░░█████████░░▄▀▄▀▄▀▄▀▄▀░░█
//█░░▄▀░░░░░░░░░░█░░▄▀░░░░░░▄▀░░█░░▄▀▄▀▄▀▄▀▄▀░░██░░▄▀░░█░░▄▀░░░░▄▀▄▀░░█░░▄▀░░░░░░▄▀░░█░░▄▀░░█████████░░▄▀░░░░░░░░░░█
//█░░▄▀░░█████████░░▄▀░░██░░▄▀░░█░░▄▀░░░░░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░█████████░░▄▀░░█████████
//█░░▄▀░░█████████░░▄▀░░░░░░▄▀░░█░░▄▀░░██░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░░░░░▄▀░░█░░▄▀░░█████████░░▄▀░░░░░░░░░░█
//█░░▄▀░░██░░░░░░█░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀░░██░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀░░█████████░░▄▀▄▀▄▀▄▀▄▀░░█
//█░░▄▀░░██░░▄▀░░█░░▄▀░░░░░░▄▀░░█░░▄▀░░██░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░░░░░▄▀░░█░░▄▀░░█████████░░▄▀░░░░░░░░░░█
//█░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀░░░░░░▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░█████████░░▄▀░░█████████
//█░░▄▀░░░░░░▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀░░░░▄▀▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░░░░░░░░░█░░▄▀░░█████████
//█░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░██░░░░░░░░░░▄▀░░█░░▄▀▄▀▄▀▄▀░░░░█░░▄▀░░██░░▄▀░░█░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀░░█████████
//█░░░░░░░░░░░░░░█░░░░░░██░░░░░░█░░░░░░██████████░░░░░░█░░░░░░░░░░░░███░░░░░░██░░░░░░█░░░░░░░░░░░░░░█░░░░░░█████████
//██████████████████████████████████████████████████████████████████████████████████████████████████████████████████

//Welcome to the Gandalf smart contract, where Middle Earth's magic meets moon mission madness! Gandalf says,
//'You shall not pass... without a wild ride!' We're here to turn the crypto world upside down,
//just like a Hobbit's unexpected journey.

/*
Website: https://gandalf.yachts
Telegram: https://t.me/gandalfthewizardcoin
Twitter: https://twitter.com/theGANDALFcoin
*/

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/access/[email protected]


// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

pragma solidity ^0.8.0;

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

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

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

    /**
     * @dev 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(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @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 {
        _transferOwnership(address(0));
    }

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

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

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

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

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

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


// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]


// OpenZeppelin Contracts v4.4.0 (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/[email protected]


// OpenZeppelin Contracts v4.4.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.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}.
 */
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:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), 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}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
    unchecked {
        _approve(sender, _msgSender(), currentAllowance - 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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    unchecked {
        _approve(_msgSender(), 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:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
    unchecked {
        _balances[sender] = senderBalance - amount;
    }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, 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 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 {}
}

pragma solidity ^0.8.0;

contract Gandalf is Ownable, ERC20 {
    bool public limited = false;
    bool public presale = true;
    uint256 public maxHoldingAmount;
    uint256 public constant PRESALE_TOKENS = 2070000000000000000000000000000;
    uint256 public constant TOTAL_SUPPLY = 6900000000000000000000000000000 - PRESALE_TOKENS;
    uint256 public constant MIN_PURCHASE = 0.05 ether;
    uint256 public constant MAX_PURCHASE = 0.2 ether;
    uint256 public constant MAX_RAISE = 60 ether;
    uint256 public totalRaised;
    mapping(address => uint256) public contribution;
    mapping(address => bool) public whitelist;

    address public uniswapV2Pair;

    constructor() ERC20("Gandalf", "GANDALF") {
        _mint(msg.sender, TOTAL_SUPPLY);
    }

    function setRule(bool _limited, address _uniswapV2Pair, uint256 _maxHoldingAmount, bool _presale) external onlyOwner {
        limited = _limited;
        presale = _presale;
        uniswapV2Pair = _uniswapV2Pair;
        maxHoldingAmount = _maxHoldingAmount;
    }

    function addToWhitelist(address[] memory _addresses) public onlyOwner {
        for (uint256 i = 0; i < _addresses.length; i++) {
            whitelist[_addresses[i]] = true;
        }
    }

    function removeFromWhitelist(address _address) public onlyOwner {
        whitelist[_address] = false;
    }

    function buyTokens() public payable {
        if (presale) {
            require(whitelist[msg.sender], "You are not on the whitelist");
        }
        require(msg.value >= MIN_PURCHASE, "You need to send at least 0.05 Ether");
        require(contribution[msg.sender] + msg.value <= MAX_PURCHASE, "You cannot contribute more than 0.2 Ether in total");
        require(totalRaised + msg.value <= MAX_RAISE, "The presale has reached its maximum limit");

        contribution[msg.sender] += msg.value;
        totalRaised += msg.value;
        uint256 tokensToBuy = PRESALE_TOKENS * msg.value / MAX_RAISE;
        _mint(msg.sender, tokensToBuy);
    }

    function withdraw() public onlyOwner {
        payable(owner()).transfer(payable(address(this)).balance);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) override internal virtual {

        if (uniswapV2Pair == address(0) && limited) {
            require(from == owner() || to == owner(), "trading is not started");
            return;
        }

        if (limited && from != owner()) {
            require(super.balanceOf(to) + amount <= maxHoldingAmount, "Forbid");
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_PURCHASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_RAISE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_PURCHASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRESALE_TOKENS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"contribution","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":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"presale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_limited","type":"bool"},{"internalType":"address","name":"_uniswapV2Pair","type":"address"},{"internalType":"uint256","name":"_maxHoldingAmount","type":"uint256"},{"internalType":"bool","name":"_presale","type":"bool"}],"name":"setRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600660006101000a81548160ff0219169083151502179055506001600660016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600781526020017f47616e64616c66000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f47414e44414c4600000000000000000000000000000000000000000000000000815250620000d4620000c86200013960201b60201c565b6200014160201b60201c565b8160049081620000e591906200087b565b508060059081620000f791906200087b565b50505062000133336c1a2087de343fecec7bf00000006c57171a3a037fc0699d2000000062000127919062000991565b6200020560201b60201c565b62000b9c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000277576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200026e9062000a2d565b60405180910390fd5b6200028b600083836200037e60201b60201c565b80600360008282546200029f919062000a4f565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002f7919062000a4f565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200035e919062000a9b565b60405180910390a36200037a600083836200058a60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015620003e95750600660009054906101000a900460ff165b15620004bb57620003ff6200058f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620004735750620004446200058f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b620004b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004ac9062000b08565b60405180910390fd5b62000585565b600660009054906101000a900460ff168015620005135750620004e36200058f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156200058457600754816200053384620005b860201b62000bef1760201c565b6200053f919062000a4f565b111562000583576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200057a9062000b7a565b60405180910390fd5b5b5b505050565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200068357607f821691505b6020821081036200069957620006986200063b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006c4565b6200070f8683620006c4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200075c62000756620007508462000727565b62000731565b62000727565b9050919050565b6000819050919050565b62000778836200073b565b62000790620007878262000763565b848454620006d1565b825550505050565b600090565b620007a762000798565b620007b48184846200076d565b505050565b5b81811015620007dc57620007d06000826200079d565b600181019050620007ba565b5050565b601f8211156200082b57620007f5816200069f565b6200080084620006b4565b8101602085101562000810578190505b620008286200081f85620006b4565b830182620007b9565b50505b505050565b600082821c905092915050565b6000620008506000198460080262000830565b1980831691505092915050565b60006200086b83836200083d565b9150826002028217905092915050565b620008868262000601565b67ffffffffffffffff811115620008a257620008a16200060c565b5b620008ae82546200066a565b620008bb828285620007e0565b600060209050601f831160018114620008f35760008415620008de578287015190505b620008ea85826200085d565b8655506200095a565b601f19841662000903866200069f565b60005b828110156200092d5784890151825560018201915060208501945060208101905062000906565b868310156200094d578489015162000949601f8916826200083d565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200099e8262000727565b9150620009ab8362000727565b9250828203905081811115620009c657620009c562000962565b5b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000a15601f83620009cc565b915062000a2282620009dd565b602082019050919050565b6000602082019050818103600083015262000a488162000a06565b9050919050565b600062000a5c8262000727565b915062000a698362000727565b925082820190508082111562000a845762000a8362000962565b5b92915050565b62000a958162000727565b82525050565b600060208201905062000ab2600083018462000a8a565b92915050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b600062000af0601683620009cc565b915062000afd8262000ab8565b602082019050919050565b6000602082019050818103600083015262000b238162000ae1565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b600062000b62600683620009cc565b915062000b6f8262000b2a565b602082019050919050565b6000602082019050818103600083015262000b958162000b53565b9050919050565b612d578062000bac6000396000f3fe6080604052600436106101d85760003560e01c8063860a32ec11610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610695578063e2dc4310146106d2578063f2fde38b1461070f578063fdea8e0b14610738576101d8565b8063a9059cbb146105f8578063c5c4744c14610635578063d0febe4c14610660578063d439390c1461066a576101d8565b8063902d55a5116100d1578063902d55a51461052857806395d89b41146105535780639b19251a1461057e578063a457c2d7146105bb576101d8565b8063860a32ec1461047e57806389f9a1d3146104a95780638ab1d681146104d45780638da5cb5b146104fd576101d8565b806349bd5a5e1161017a57806370a082311161014957806370a08231146103d65780637146bd0814610413578063715018a61461043e5780637f64978314610455576101d8565b806349bd5a5e1461032c5780634ccfc5c7146103575780636ddb627c146103825780637038be3a146103ad576101d8565b806323b872dd116101b657806323b872dd14610270578063313ce567146102ad57806339509351146102d85780633ccfd60b14610315576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245575b600080fd5b3480156101e957600080fd5b506101f2610763565b6040516101ff9190611e00565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190611eca565b6107f5565b60405161023c9190611f25565b60405180910390f35b34801561025157600080fd5b5061025a610813565b6040516102679190611f4f565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190611f6a565b61081d565b6040516102a49190611f25565b60405180910390f35b3480156102b957600080fd5b506102c2610915565b6040516102cf9190611fd9565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190611eca565b61091e565b60405161030c9190611f25565b60405180910390f35b34801561032157600080fd5b5061032a6109ca565b005b34801561033857600080fd5b50610341610aad565b60405161034e9190612003565b60405180910390f35b34801561036357600080fd5b5061036c610ad3565b6040516103799190611f4f565b60405180910390f35b34801561038e57600080fd5b50610397610ae0565b6040516103a49190611f4f565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf919061204a565b610af1565b005b3480156103e257600080fd5b506103fd60048036038101906103f891906120b1565b610bef565b60405161040a9190611f4f565b60405180910390f35b34801561041f57600080fd5b50610428610c38565b6040516104359190611f4f565b60405180910390f35b34801561044a57600080fd5b50610453610c44565b005b34801561046157600080fd5b5061047c60048036038101906104779190612226565b610ccc565b005b34801561048a57600080fd5b50610493610ddd565b6040516104a09190611f25565b60405180910390f35b3480156104b557600080fd5b506104be610df0565b6040516104cb9190611f4f565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f691906120b1565b610df6565b005b34801561050957600080fd5b50610512610ecd565b60405161051f9190612003565b60405180910390f35b34801561053457600080fd5b5061053d610ef6565b60405161054a9190611f4f565b60405180910390f35b34801561055f57600080fd5b50610568610f1f565b6040516105759190611e00565b60405180910390f35b34801561058a57600080fd5b506105a560048036038101906105a091906120b1565b610fb1565b6040516105b29190611f25565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd9190611eca565b610fd1565b6040516105ef9190611f25565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190611eca565b6110bc565b60405161062c9190611f25565b60405180910390f35b34801561064157600080fd5b5061064a6110da565b6040516106579190611f4f565b60405180910390f35b6106686110e0565b005b34801561067657600080fd5b5061067f611367565b60405161068c9190611f4f565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b7919061226f565b611372565b6040516106c99190611f4f565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f491906120b1565b6113f9565b6040516107069190611f4f565b60405180910390f35b34801561071b57600080fd5b50610736600480360381019061073191906120b1565b611411565b005b34801561074457600080fd5b5061074d611508565b60405161075a9190611f25565b60405180910390f35b606060048054610772906122de565b80601f016020809104026020016040519081016040528092919081815260200182805461079e906122de565b80156107eb5780601f106107c0576101008083540402835291602001916107eb565b820191906000526020600020905b8154815290600101906020018083116107ce57829003601f168201915b5050505050905090565b600061080961080261151b565b8484611523565b6001905092915050565b6000600354905090565b600061082a8484846116ec565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061087561151b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec90612381565b60405180910390fd5b6109098561090161151b565b858403611523565b60019150509392505050565b60006012905090565b60006109c061092b61151b565b84846002600061093961151b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109bb91906123d0565b611523565b6001905092915050565b6109d261151b565b73ffffffffffffffffffffffffffffffffffffffff166109f0610ecd565b73ffffffffffffffffffffffffffffffffffffffff1614610a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3d90612450565b60405180910390fd5b610a4e610ecd565b73ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610aaa573d6000803e3d6000fd5b50565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b680340aad21b3b70000081565b6c1a2087de343fecec7bf000000081565b610af961151b565b73ffffffffffffffffffffffffffffffffffffffff16610b17610ecd565b73ffffffffffffffffffffffffffffffffffffffff1614610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6490612450565b60405180910390fd5b83600660006101000a81548160ff02191690831515021790555080600660016101000a81548160ff02191690831515021790555082600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160078190555050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6702c68af0bb14000081565b610c4c61151b565b73ffffffffffffffffffffffffffffffffffffffff16610c6a610ecd565b73ffffffffffffffffffffffffffffffffffffffff1614610cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb790612450565b60405180910390fd5b610cca600061196e565b565b610cd461151b565b73ffffffffffffffffffffffffffffffffffffffff16610cf2610ecd565b73ffffffffffffffffffffffffffffffffffffffff1614610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f90612450565b60405180910390fd5b60005b8151811015610dd9576001600a6000848481518110610d6d57610d6c612470565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610dd19061249f565b915050610d4b565b5050565b600660009054906101000a900460ff1681565b60075481565b610dfe61151b565b73ffffffffffffffffffffffffffffffffffffffff16610e1c610ecd565b73ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6990612450565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6c1a2087de343fecec7bf00000006c57171a3a037fc0699d20000000610f1c91906124e7565b81565b606060058054610f2e906122de565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5a906122de565b8015610fa75780601f10610f7c57610100808354040283529160200191610fa7565b820191906000526020600020905b815481529060010190602001808311610f8a57829003601f168201915b5050505050905090565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060026000610fe061151b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561109d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110949061258d565b60405180910390fd5b6110b16110a861151b565b85858403611523565b600191505092915050565b60006110d06110c961151b565b84846116ec565b6001905092915050565b60085481565b600660019054906101000a900460ff161561118257600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611181576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611178906125f9565b60405180910390fd5b5b66b1a2bc2ec500003410156111cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c39061268b565b60405180910390fd5b6702c68af0bb14000034600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461122091906123d0565b1115611261576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112589061271d565b60405180910390fd5b680340aad21b3b7000003460085461127991906123d0565b11156112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b1906127af565b60405180910390fd5b34600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461130991906123d0565b92505081905550346008600082825461132291906123d0565b925050819055506000680340aad21b3b700000346c1a2087de343fecec7bf000000061134e91906127cf565b6113589190612840565b90506113643382611a32565b50565b66b1a2bc2ec5000081565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60096020528060005260406000206000915090505481565b61141961151b565b73ffffffffffffffffffffffffffffffffffffffff16611437610ecd565b73ffffffffffffffffffffffffffffffffffffffff161461148d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148490612450565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f3906128e3565b60405180910390fd5b6115058161196e565b50565b600660019054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158990612975565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f890612a07565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116df9190611f4f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290612a99565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c190612b2b565b60405180910390fd5b6117d5838383611b92565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561185c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185390612bbd565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f191906123d0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119559190611f4f565b60405180910390a3611968848484611d6b565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9890612c29565b60405180910390fd5b611aad60008383611b92565b8060036000828254611abf91906123d0565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b1591906123d0565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b7a9190611f4f565b60405180910390a3611b8e60008383611d6b565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015611bfc5750600660009054906101000a900460ff165b15611cb857611c09610ecd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611c745750611c45610ecd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa90612c95565b60405180910390fd5b611d66565b600660009054906101000a900460ff168015611d075750611cd7610ecd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d655760075481611d1984610bef565b611d2391906123d0565b1115611d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5b90612d01565b60405180910390fd5b5b5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611daa578082015181840152602081019050611d8f565b60008484015250505050565b6000601f19601f8301169050919050565b6000611dd282611d70565b611ddc8185611d7b565b9350611dec818560208601611d8c565b611df581611db6565b840191505092915050565b60006020820190508181036000830152611e1a8184611dc7565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e6182611e36565b9050919050565b611e7181611e56565b8114611e7c57600080fd5b50565b600081359050611e8e81611e68565b92915050565b6000819050919050565b611ea781611e94565b8114611eb257600080fd5b50565b600081359050611ec481611e9e565b92915050565b60008060408385031215611ee157611ee0611e2c565b5b6000611eef85828601611e7f565b9250506020611f0085828601611eb5565b9150509250929050565b60008115159050919050565b611f1f81611f0a565b82525050565b6000602082019050611f3a6000830184611f16565b92915050565b611f4981611e94565b82525050565b6000602082019050611f646000830184611f40565b92915050565b600080600060608486031215611f8357611f82611e2c565b5b6000611f9186828701611e7f565b9350506020611fa286828701611e7f565b9250506040611fb386828701611eb5565b9150509250925092565b600060ff82169050919050565b611fd381611fbd565b82525050565b6000602082019050611fee6000830184611fca565b92915050565b611ffd81611e56565b82525050565b60006020820190506120186000830184611ff4565b92915050565b61202781611f0a565b811461203257600080fd5b50565b6000813590506120448161201e565b92915050565b6000806000806080858703121561206457612063611e2c565b5b600061207287828801612035565b945050602061208387828801611e7f565b935050604061209487828801611eb5565b92505060606120a587828801612035565b91505092959194509250565b6000602082840312156120c7576120c6611e2c565b5b60006120d584828501611e7f565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61211b82611db6565b810181811067ffffffffffffffff8211171561213a576121396120e3565b5b80604052505050565b600061214d611e22565b90506121598282612112565b919050565b600067ffffffffffffffff821115612179576121786120e3565b5b602082029050602081019050919050565b600080fd5b60006121a261219d8461215e565b612143565b905080838252602082019050602084028301858111156121c5576121c461218a565b5b835b818110156121ee57806121da8882611e7f565b8452602084019350506020810190506121c7565b5050509392505050565b600082601f83011261220d5761220c6120de565b5b813561221d84826020860161218f565b91505092915050565b60006020828403121561223c5761223b611e2c565b5b600082013567ffffffffffffffff81111561225a57612259611e31565b5b612266848285016121f8565b91505092915050565b6000806040838503121561228657612285611e2c565b5b600061229485828601611e7f565b92505060206122a585828601611e7f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122f657607f821691505b602082108103612309576123086122af565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061236b602883611d7b565b91506123768261230f565b604082019050919050565b6000602082019050818103600083015261239a8161235e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123db82611e94565b91506123e683611e94565b92508282019050808211156123fe576123fd6123a1565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061243a602083611d7b565b915061244582612404565b602082019050919050565b600060208201905081810360008301526124698161242d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006124aa82611e94565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036124dc576124db6123a1565b5b600182019050919050565b60006124f282611e94565b91506124fd83611e94565b9250828203905081811115612515576125146123a1565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612577602583611d7b565b91506125828261251b565b604082019050919050565b600060208201905081810360008301526125a68161256a565b9050919050565b7f596f7520617265206e6f74206f6e207468652077686974656c69737400000000600082015250565b60006125e3601c83611d7b565b91506125ee826125ad565b602082019050919050565b60006020820190508181036000830152612612816125d6565b9050919050565b7f596f75206e65656420746f2073656e64206174206c6561737420302e3035204560008201527f7468657200000000000000000000000000000000000000000000000000000000602082015250565b6000612675602483611d7b565b915061268082612619565b604082019050919050565b600060208201905081810360008301526126a481612668565b9050919050565b7f596f752063616e6e6f7420636f6e74726962757465206d6f7265207468616e2060008201527f302e3220457468657220696e20746f74616c0000000000000000000000000000602082015250565b6000612707603283611d7b565b9150612712826126ab565b604082019050919050565b60006020820190508181036000830152612736816126fa565b9050919050565b7f5468652070726573616c6520686173207265616368656420697473206d61786960008201527f6d756d206c696d69740000000000000000000000000000000000000000000000602082015250565b6000612799602983611d7b565b91506127a48261273d565b604082019050919050565b600060208201905081810360008301526127c88161278c565b9050919050565b60006127da82611e94565b91506127e583611e94565b92508282026127f381611e94565b9150828204841483151761280a576128096123a1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061284b82611e94565b915061285683611e94565b92508261286657612865612811565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006128cd602683611d7b565b91506128d882612871565b604082019050919050565b600060208201905081810360008301526128fc816128c0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061295f602483611d7b565b915061296a82612903565b604082019050919050565b6000602082019050818103600083015261298e81612952565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006129f1602283611d7b565b91506129fc82612995565b604082019050919050565b60006020820190508181036000830152612a20816129e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a83602583611d7b565b9150612a8e82612a27565b604082019050919050565b60006020820190508181036000830152612ab281612a76565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612b15602383611d7b565b9150612b2082612ab9565b604082019050919050565b60006020820190508181036000830152612b4481612b08565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612ba7602683611d7b565b9150612bb282612b4b565b604082019050919050565b60006020820190508181036000830152612bd681612b9a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612c13601f83611d7b565b9150612c1e82612bdd565b602082019050919050565b60006020820190508181036000830152612c4281612c06565b9050919050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b6000612c7f601683611d7b565b9150612c8a82612c49565b602082019050919050565b60006020820190508181036000830152612cae81612c72565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000612ceb600683611d7b565b9150612cf682612cb5565b602082019050919050565b60006020820190508181036000830152612d1a81612cde565b905091905056fea2646970667358221220ff155d29697f6b1f4d5a9cc9563da79aafd9c31b07ff092a49e866ca7f508a5864736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101d85760003560e01c8063860a32ec11610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610695578063e2dc4310146106d2578063f2fde38b1461070f578063fdea8e0b14610738576101d8565b8063a9059cbb146105f8578063c5c4744c14610635578063d0febe4c14610660578063d439390c1461066a576101d8565b8063902d55a5116100d1578063902d55a51461052857806395d89b41146105535780639b19251a1461057e578063a457c2d7146105bb576101d8565b8063860a32ec1461047e57806389f9a1d3146104a95780638ab1d681146104d45780638da5cb5b146104fd576101d8565b806349bd5a5e1161017a57806370a082311161014957806370a08231146103d65780637146bd0814610413578063715018a61461043e5780637f64978314610455576101d8565b806349bd5a5e1461032c5780634ccfc5c7146103575780636ddb627c146103825780637038be3a146103ad576101d8565b806323b872dd116101b657806323b872dd14610270578063313ce567146102ad57806339509351146102d85780633ccfd60b14610315576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245575b600080fd5b3480156101e957600080fd5b506101f2610763565b6040516101ff9190611e00565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190611eca565b6107f5565b60405161023c9190611f25565b60405180910390f35b34801561025157600080fd5b5061025a610813565b6040516102679190611f4f565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190611f6a565b61081d565b6040516102a49190611f25565b60405180910390f35b3480156102b957600080fd5b506102c2610915565b6040516102cf9190611fd9565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190611eca565b61091e565b60405161030c9190611f25565b60405180910390f35b34801561032157600080fd5b5061032a6109ca565b005b34801561033857600080fd5b50610341610aad565b60405161034e9190612003565b60405180910390f35b34801561036357600080fd5b5061036c610ad3565b6040516103799190611f4f565b60405180910390f35b34801561038e57600080fd5b50610397610ae0565b6040516103a49190611f4f565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf919061204a565b610af1565b005b3480156103e257600080fd5b506103fd60048036038101906103f891906120b1565b610bef565b60405161040a9190611f4f565b60405180910390f35b34801561041f57600080fd5b50610428610c38565b6040516104359190611f4f565b60405180910390f35b34801561044a57600080fd5b50610453610c44565b005b34801561046157600080fd5b5061047c60048036038101906104779190612226565b610ccc565b005b34801561048a57600080fd5b50610493610ddd565b6040516104a09190611f25565b60405180910390f35b3480156104b557600080fd5b506104be610df0565b6040516104cb9190611f4f565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f691906120b1565b610df6565b005b34801561050957600080fd5b50610512610ecd565b60405161051f9190612003565b60405180910390f35b34801561053457600080fd5b5061053d610ef6565b60405161054a9190611f4f565b60405180910390f35b34801561055f57600080fd5b50610568610f1f565b6040516105759190611e00565b60405180910390f35b34801561058a57600080fd5b506105a560048036038101906105a091906120b1565b610fb1565b6040516105b29190611f25565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd9190611eca565b610fd1565b6040516105ef9190611f25565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190611eca565b6110bc565b60405161062c9190611f25565b60405180910390f35b34801561064157600080fd5b5061064a6110da565b6040516106579190611f4f565b60405180910390f35b6106686110e0565b005b34801561067657600080fd5b5061067f611367565b60405161068c9190611f4f565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b7919061226f565b611372565b6040516106c99190611f4f565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f491906120b1565b6113f9565b6040516107069190611f4f565b60405180910390f35b34801561071b57600080fd5b50610736600480360381019061073191906120b1565b611411565b005b34801561074457600080fd5b5061074d611508565b60405161075a9190611f25565b60405180910390f35b606060048054610772906122de565b80601f016020809104026020016040519081016040528092919081815260200182805461079e906122de565b80156107eb5780601f106107c0576101008083540402835291602001916107eb565b820191906000526020600020905b8154815290600101906020018083116107ce57829003601f168201915b5050505050905090565b600061080961080261151b565b8484611523565b6001905092915050565b6000600354905090565b600061082a8484846116ec565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061087561151b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec90612381565b60405180910390fd5b6109098561090161151b565b858403611523565b60019150509392505050565b60006012905090565b60006109c061092b61151b565b84846002600061093961151b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109bb91906123d0565b611523565b6001905092915050565b6109d261151b565b73ffffffffffffffffffffffffffffffffffffffff166109f0610ecd565b73ffffffffffffffffffffffffffffffffffffffff1614610a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3d90612450565b60405180910390fd5b610a4e610ecd565b73ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610aaa573d6000803e3d6000fd5b50565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b680340aad21b3b70000081565b6c1a2087de343fecec7bf000000081565b610af961151b565b73ffffffffffffffffffffffffffffffffffffffff16610b17610ecd565b73ffffffffffffffffffffffffffffffffffffffff1614610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6490612450565b60405180910390fd5b83600660006101000a81548160ff02191690831515021790555080600660016101000a81548160ff02191690831515021790555082600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160078190555050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6702c68af0bb14000081565b610c4c61151b565b73ffffffffffffffffffffffffffffffffffffffff16610c6a610ecd565b73ffffffffffffffffffffffffffffffffffffffff1614610cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb790612450565b60405180910390fd5b610cca600061196e565b565b610cd461151b565b73ffffffffffffffffffffffffffffffffffffffff16610cf2610ecd565b73ffffffffffffffffffffffffffffffffffffffff1614610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f90612450565b60405180910390fd5b60005b8151811015610dd9576001600a6000848481518110610d6d57610d6c612470565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610dd19061249f565b915050610d4b565b5050565b600660009054906101000a900460ff1681565b60075481565b610dfe61151b565b73ffffffffffffffffffffffffffffffffffffffff16610e1c610ecd565b73ffffffffffffffffffffffffffffffffffffffff1614610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6990612450565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6c1a2087de343fecec7bf00000006c57171a3a037fc0699d20000000610f1c91906124e7565b81565b606060058054610f2e906122de565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5a906122de565b8015610fa75780601f10610f7c57610100808354040283529160200191610fa7565b820191906000526020600020905b815481529060010190602001808311610f8a57829003601f168201915b5050505050905090565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060026000610fe061151b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561109d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110949061258d565b60405180910390fd5b6110b16110a861151b565b85858403611523565b600191505092915050565b60006110d06110c961151b565b84846116ec565b6001905092915050565b60085481565b600660019054906101000a900460ff161561118257600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611181576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611178906125f9565b60405180910390fd5b5b66b1a2bc2ec500003410156111cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c39061268b565b60405180910390fd5b6702c68af0bb14000034600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461122091906123d0565b1115611261576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112589061271d565b60405180910390fd5b680340aad21b3b7000003460085461127991906123d0565b11156112ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b1906127af565b60405180910390fd5b34600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461130991906123d0565b92505081905550346008600082825461132291906123d0565b925050819055506000680340aad21b3b700000346c1a2087de343fecec7bf000000061134e91906127cf565b6113589190612840565b90506113643382611a32565b50565b66b1a2bc2ec5000081565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60096020528060005260406000206000915090505481565b61141961151b565b73ffffffffffffffffffffffffffffffffffffffff16611437610ecd565b73ffffffffffffffffffffffffffffffffffffffff161461148d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148490612450565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f3906128e3565b60405180910390fd5b6115058161196e565b50565b600660019054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158990612975565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f890612a07565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116df9190611f4f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361175b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175290612a99565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c190612b2b565b60405180910390fd5b6117d5838383611b92565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561185c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185390612bbd565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f191906123d0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119559190611f4f565b60405180910390a3611968848484611d6b565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9890612c29565b60405180910390fd5b611aad60008383611b92565b8060036000828254611abf91906123d0565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b1591906123d0565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b7a9190611f4f565b60405180910390a3611b8e60008383611d6b565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015611bfc5750600660009054906101000a900460ff165b15611cb857611c09610ecd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611c745750611c45610ecd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa90612c95565b60405180910390fd5b611d66565b600660009054906101000a900460ff168015611d075750611cd7610ecd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d655760075481611d1984610bef565b611d2391906123d0565b1115611d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5b90612d01565b60405180910390fd5b5b5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611daa578082015181840152602081019050611d8f565b60008484015250505050565b6000601f19601f8301169050919050565b6000611dd282611d70565b611ddc8185611d7b565b9350611dec818560208601611d8c565b611df581611db6565b840191505092915050565b60006020820190508181036000830152611e1a8184611dc7565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e6182611e36565b9050919050565b611e7181611e56565b8114611e7c57600080fd5b50565b600081359050611e8e81611e68565b92915050565b6000819050919050565b611ea781611e94565b8114611eb257600080fd5b50565b600081359050611ec481611e9e565b92915050565b60008060408385031215611ee157611ee0611e2c565b5b6000611eef85828601611e7f565b9250506020611f0085828601611eb5565b9150509250929050565b60008115159050919050565b611f1f81611f0a565b82525050565b6000602082019050611f3a6000830184611f16565b92915050565b611f4981611e94565b82525050565b6000602082019050611f646000830184611f40565b92915050565b600080600060608486031215611f8357611f82611e2c565b5b6000611f9186828701611e7f565b9350506020611fa286828701611e7f565b9250506040611fb386828701611eb5565b9150509250925092565b600060ff82169050919050565b611fd381611fbd565b82525050565b6000602082019050611fee6000830184611fca565b92915050565b611ffd81611e56565b82525050565b60006020820190506120186000830184611ff4565b92915050565b61202781611f0a565b811461203257600080fd5b50565b6000813590506120448161201e565b92915050565b6000806000806080858703121561206457612063611e2c565b5b600061207287828801612035565b945050602061208387828801611e7f565b935050604061209487828801611eb5565b92505060606120a587828801612035565b91505092959194509250565b6000602082840312156120c7576120c6611e2c565b5b60006120d584828501611e7f565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61211b82611db6565b810181811067ffffffffffffffff8211171561213a576121396120e3565b5b80604052505050565b600061214d611e22565b90506121598282612112565b919050565b600067ffffffffffffffff821115612179576121786120e3565b5b602082029050602081019050919050565b600080fd5b60006121a261219d8461215e565b612143565b905080838252602082019050602084028301858111156121c5576121c461218a565b5b835b818110156121ee57806121da8882611e7f565b8452602084019350506020810190506121c7565b5050509392505050565b600082601f83011261220d5761220c6120de565b5b813561221d84826020860161218f565b91505092915050565b60006020828403121561223c5761223b611e2c565b5b600082013567ffffffffffffffff81111561225a57612259611e31565b5b612266848285016121f8565b91505092915050565b6000806040838503121561228657612285611e2c565b5b600061229485828601611e7f565b92505060206122a585828601611e7f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122f657607f821691505b602082108103612309576123086122af565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061236b602883611d7b565b91506123768261230f565b604082019050919050565b6000602082019050818103600083015261239a8161235e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123db82611e94565b91506123e683611e94565b92508282019050808211156123fe576123fd6123a1565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061243a602083611d7b565b915061244582612404565b602082019050919050565b600060208201905081810360008301526124698161242d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006124aa82611e94565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036124dc576124db6123a1565b5b600182019050919050565b60006124f282611e94565b91506124fd83611e94565b9250828203905081811115612515576125146123a1565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612577602583611d7b565b91506125828261251b565b604082019050919050565b600060208201905081810360008301526125a68161256a565b9050919050565b7f596f7520617265206e6f74206f6e207468652077686974656c69737400000000600082015250565b60006125e3601c83611d7b565b91506125ee826125ad565b602082019050919050565b60006020820190508181036000830152612612816125d6565b9050919050565b7f596f75206e65656420746f2073656e64206174206c6561737420302e3035204560008201527f7468657200000000000000000000000000000000000000000000000000000000602082015250565b6000612675602483611d7b565b915061268082612619565b604082019050919050565b600060208201905081810360008301526126a481612668565b9050919050565b7f596f752063616e6e6f7420636f6e74726962757465206d6f7265207468616e2060008201527f302e3220457468657220696e20746f74616c0000000000000000000000000000602082015250565b6000612707603283611d7b565b9150612712826126ab565b604082019050919050565b60006020820190508181036000830152612736816126fa565b9050919050565b7f5468652070726573616c6520686173207265616368656420697473206d61786960008201527f6d756d206c696d69740000000000000000000000000000000000000000000000602082015250565b6000612799602983611d7b565b91506127a48261273d565b604082019050919050565b600060208201905081810360008301526127c88161278c565b9050919050565b60006127da82611e94565b91506127e583611e94565b92508282026127f381611e94565b9150828204841483151761280a576128096123a1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061284b82611e94565b915061285683611e94565b92508261286657612865612811565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006128cd602683611d7b565b91506128d882612871565b604082019050919050565b600060208201905081810360008301526128fc816128c0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061295f602483611d7b565b915061296a82612903565b604082019050919050565b6000602082019050818103600083015261298e81612952565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006129f1602283611d7b565b91506129fc82612995565b604082019050919050565b60006020820190508181036000830152612a20816129e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a83602583611d7b565b9150612a8e82612a27565b604082019050919050565b60006020820190508181036000830152612ab281612a76565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612b15602383611d7b565b9150612b2082612ab9565b604082019050919050565b60006020820190508181036000830152612b4481612b08565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612ba7602683611d7b565b9150612bb282612b4b565b604082019050919050565b60006020820190508181036000830152612bd681612b9a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612c13601f83611d7b565b9150612c1e82612bdd565b602082019050919050565b60006020820190508181036000830152612c4281612c06565b9050919050565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b6000612c7f601683611d7b565b9150612c8a82612c49565b602082019050919050565b60006020820190508181036000830152612cae81612c72565b9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000612ceb600683611d7b565b9150612cf682612cb5565b602082019050919050565b60006020820190508181036000830152612d1a81612cde565b905091905056fea2646970667358221220ff155d29697f6b1f4d5a9cc9563da79aafd9c31b07ff092a49e866ca7f508a5864736f6c63430008120033

Deployed Bytecode Sourcemap

23926:2567:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13986:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16153:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15106:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16804:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14948:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17693:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25954:113;;;;;;;;;;;;;:::i;:::-;;24545:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24357:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24073:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24682:271;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15277:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24302:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7387:103;;;;;;;;;;;;;:::i;:::-;;24961:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23968:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24035:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25163:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6736:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24152;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14205:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24495:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18411:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15617:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24408:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25281:665;;;:::i;:::-;;24246:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15855:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24441:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7645:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24002:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13986:100;14040:13;14073:5;14066:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13986:100;:::o;16153:169::-;16236:4;16253:39;16262:12;:10;:12::i;:::-;16276:7;16285:6;16253:8;:39::i;:::-;16310:4;16303:11;;16153:169;;;;:::o;15106:108::-;15167:7;15194:12;;15187:19;;15106:108;:::o;16804:480::-;16944:4;16961:36;16971:6;16979:9;16990:6;16961:9;:36::i;:::-;17010:24;17037:11;:19;17049:6;17037:19;;;;;;;;;;;;;;;:33;17057:12;:10;:12::i;:::-;17037:33;;;;;;;;;;;;;;;;17010:60;;17109:6;17089:16;:26;;17081:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;17188:57;17197:6;17205:12;:10;:12::i;:::-;17238:6;17219:16;:25;17188:8;:57::i;:::-;17272:4;17265:11;;;16804:480;;;;;:::o;14948:93::-;15006:5;15031:2;15024:9;;14948:93;:::o;17693:215::-;17781:4;17798:80;17807:12;:10;:12::i;:::-;17821:7;17867:10;17830:11;:25;17842:12;:10;:12::i;:::-;17830:25;;;;;;;;;;;;;;;:34;17856:7;17830:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;17798:8;:80::i;:::-;17896:4;17889:11;;17693:215;;;;:::o;25954:113::-;6967:12;:10;:12::i;:::-;6956:23;;:7;:5;:7::i;:::-;:23;;;6948:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26010:7:::1;:5;:7::i;:::-;26002:25;;:57;26044:4;26028:30;;;26002:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25954:113::o:0;24545:28::-;;;;;;;;;;;;;:::o;24357:44::-;24393:8;24357:44;:::o;24073:72::-;24114:31;24073:72;:::o;24682:271::-;6967:12;:10;:12::i;:::-;6956:23;;:7;:5;:7::i;:::-;:23;;;6948:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24820:8:::1;24810:7;;:18;;;;;;;;;;;;;;;;;;24849:8;24839:7;;:18;;;;;;;;;;;;;;;;;;24884:14;24868:13;;:30;;;;;;;;;;;;;;;;;;24928:17;24909:16;:36;;;;24682:271:::0;;;;:::o;15277:127::-;15351:7;15378:9;:18;15388:7;15378:18;;;;;;;;;;;;;;;;15371:25;;15277:127;;;:::o;24302:48::-;24341:9;24302:48;:::o;7387:103::-;6967:12;:10;:12::i;:::-;6956:23;;:7;:5;:7::i;:::-;:23;;;6948:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7452:30:::1;7479:1;7452:18;:30::i;:::-;7387:103::o:0;24961:194::-;6967:12;:10;:12::i;:::-;6956:23;;:7;:5;:7::i;:::-;:23;;;6948:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25047:9:::1;25042:106;25066:10;:17;25062:1;:21;25042:106;;;25132:4;25105:9;:24;25115:10;25126:1;25115:13;;;;;;;;:::i;:::-;;;;;;;;25105:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;25085:3;;;;;:::i;:::-;;;;25042:106;;;;24961:194:::0;:::o;23968:27::-;;;;;;;;;;;;;:::o;24035:31::-;;;;:::o;25163:110::-;6967:12;:10;:12::i;:::-;6956:23;;:7;:5;:7::i;:::-;:23;;;6948:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25260:5:::1;25238:9;:19;25248:8;25238:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;25163:110:::0;:::o;6736:87::-;6782:7;6809:6;;;;;;;;;;;6802:13;;6736:87;:::o;24152:::-;24114:31;24191;:48;;;;:::i;:::-;24152:87;:::o;14205:104::-;14261:13;14294:7;14287:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14205:104;:::o;24495:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;18411:401::-;18504:4;18521:24;18548:11;:25;18560:12;:10;:12::i;:::-;18548:25;;;;;;;;;;;;;;;:34;18574:7;18548:34;;;;;;;;;;;;;;;;18521:61;;18621:15;18601:16;:35;;18593:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;18706:67;18715:12;:10;:12::i;:::-;18729:7;18757:15;18738:16;:34;18706:8;:67::i;:::-;18800:4;18793:11;;;18411:401;;;;:::o;15617:175::-;15703:4;15720:42;15730:12;:10;:12::i;:::-;15744:9;15755:6;15720:9;:42::i;:::-;15780:4;15773:11;;15617:175;;;;:::o;24408:26::-;;;;:::o;25281:665::-;25332:7;;;;;;;;;;;25328:102;;;25364:9;:21;25374:10;25364:21;;;;;;;;;;;;;;;;;;;;;;;;;25356:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;25328:102;24285:10;25448:9;:25;;25440:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;24341:9;25560;25533:12;:24;25546:10;25533:24;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;:52;;25525:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;24393:8;25673:9;25659:11;;:23;;;;:::i;:::-;:36;;25651:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;25782:9;25754:12;:24;25767:10;25754:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;25817:9;25802:11;;:24;;;;;;;:::i;:::-;;;;;;;;25837:19;24393:8;25876:9;24114:31;25859:26;;;;:::i;:::-;:38;;;;:::i;:::-;25837:60;;25908:30;25914:10;25926:11;25908:5;:30::i;:::-;25317:629;25281:665::o;24246:49::-;24285:10;24246:49;:::o;15855:151::-;15944:7;15971:11;:18;15983:5;15971:18;;;;;;;;;;;;;;;:27;15990:7;15971:27;;;;;;;;;;;;;;;;15964:34;;15855:151;;;;:::o;24441:47::-;;;;;;;;;;;;;;;;;:::o;7645:201::-;6967:12;:10;:12::i;:::-;6956:23;;:7;:5;:7::i;:::-;:23;;;6948:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7754:1:::1;7734:22;;:8;:22;;::::0;7726:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7810:28;7829:8;7810:18;:28::i;:::-;7645:201:::0;:::o;24002:26::-;;;;;;;;;;;;;:::o;5454:98::-;5507:7;5534:10;5527:17;;5454:98;:::o;22059:380::-;22212:1;22195:19;;:5;:19;;;22187:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22293:1;22274:21;;:7;:21;;;22266:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22377:6;22347:11;:18;22359:5;22347:18;;;;;;;;;;;;;;;:27;22366:7;22347:27;;;;;;;;;;;;;;;:36;;;;22415:7;22399:32;;22408:5;22399:32;;;22424:6;22399:32;;;;;;:::i;:::-;;;;;;;;22059:380;;;:::o;19302:721::-;19460:1;19442:20;;:6;:20;;;19434:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19544:1;19523:23;;:9;:23;;;19515:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19599:47;19620:6;19628:9;19639:6;19599:20;:47::i;:::-;19659:21;19683:9;:17;19693:6;19683:17;;;;;;;;;;;;;;;;19659:41;;19736:6;19719:13;:23;;19711:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;19849:6;19833:13;:22;19813:9;:17;19823:6;19813:17;;;;;;;;;;;;;;;:42;;;;19897:6;19873:9;:20;19883:9;19873:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;19938:9;19921:35;;19930:6;19921:35;;;19949:6;19921:35;;;;;;:::i;:::-;;;;;;;;19969:46;19989:6;19997:9;20008:6;19969:19;:46::i;:::-;19423:600;19302:721;;;:::o;8006:191::-;8080:16;8099:6;;;;;;;;;;;8080:25;;8125:8;8116:6;;:17;;;;;;;;;;;;;;;;;;8180:8;8149:40;;8170:8;8149:40;;;;;;;;;;;;8069:128;8006:191;:::o;20310:399::-;20413:1;20394:21;;:7;:21;;;20386:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20464:49;20493:1;20497:7;20506:6;20464:20;:49::i;:::-;20542:6;20526:12;;:22;;;;;;;:::i;:::-;;;;;;;;20581:6;20559:9;:18;20569:7;20559:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;20624:7;20603:37;;20620:1;20603:37;;;20633:6;20603:37;;;;;;:::i;:::-;;;;;;;;20653:48;20681:1;20685:7;20694:6;20653:19;:48::i;:::-;20310:399;;:::o;26075:415::-;26215:1;26190:27;;:13;;;;;;;;;;;:27;;;:38;;;;;26221:7;;;;;;;;;;;26190:38;26186:159;;;26261:7;:5;:7::i;:::-;26253:15;;:4;:15;;;:32;;;;26278:7;:5;:7::i;:::-;26272:13;;:2;:13;;;26253:32;26245:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26327:7;;26186:159;26361:7;;;;;;;;;;;:26;;;;;26380:7;:5;:7::i;:::-;26372:15;;:4;:15;;;;26361:26;26357:126;;;26444:16;;26434:6;26412:19;26428:2;26412:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;26404:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26357:126;26075:415;;;;:::o;23768: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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4940:24;4958:5;4940:24;:::i;:::-;4935:3;4928:37;4853:118;;:::o;4977:222::-;5070:4;5108:2;5097:9;5093:18;5085:26;;5121:71;5189:1;5178:9;5174:17;5165:6;5121:71;:::i;:::-;4977:222;;;;:::o;5205:116::-;5275:21;5290:5;5275:21;:::i;:::-;5268:5;5265:32;5255:60;;5311:1;5308;5301:12;5255:60;5205:116;:::o;5327:133::-;5370:5;5408:6;5395:20;5386:29;;5424:30;5448:5;5424:30;:::i;:::-;5327:133;;;;:::o;5466:753::-;5546:6;5554;5562;5570;5619:3;5607:9;5598:7;5594:23;5590:33;5587:120;;;5626:79;;:::i;:::-;5587:120;5746:1;5771:50;5813:7;5804:6;5793:9;5789:22;5771:50;:::i;:::-;5761:60;;5717:114;5870:2;5896:53;5941:7;5932:6;5921:9;5917:22;5896:53;:::i;:::-;5886:63;;5841:118;5998:2;6024:53;6069:7;6060:6;6049:9;6045:22;6024:53;:::i;:::-;6014:63;;5969:118;6126:2;6152:50;6194:7;6185:6;6174:9;6170:22;6152:50;:::i;:::-;6142:60;;6097:115;5466:753;;;;;;;:::o;6225:329::-;6284:6;6333:2;6321:9;6312:7;6308:23;6304:32;6301:119;;;6339:79;;:::i;:::-;6301:119;6459:1;6484:53;6529:7;6520:6;6509:9;6505:22;6484:53;:::i;:::-;6474:63;;6430:117;6225:329;;;;:::o;6560:117::-;6669:1;6666;6659:12;6683:180;6731:77;6728:1;6721:88;6828:4;6825:1;6818:15;6852:4;6849:1;6842:15;6869:281;6952:27;6974:4;6952:27;:::i;:::-;6944:6;6940:40;7082:6;7070:10;7067:22;7046:18;7034:10;7031:34;7028:62;7025:88;;;7093:18;;:::i;:::-;7025:88;7133:10;7129:2;7122:22;6912:238;6869:281;;:::o;7156:129::-;7190:6;7217:20;;:::i;:::-;7207:30;;7246:33;7274:4;7266:6;7246:33;:::i;:::-;7156:129;;;:::o;7291:311::-;7368:4;7458:18;7450:6;7447:30;7444:56;;;7480:18;;:::i;:::-;7444:56;7530:4;7522:6;7518:17;7510:25;;7590:4;7584;7580:15;7572:23;;7291:311;;;:::o;7608:117::-;7717:1;7714;7707:12;7748:710;7844:5;7869:81;7885:64;7942:6;7885:64;:::i;:::-;7869:81;:::i;:::-;7860:90;;7970:5;7999:6;7992:5;7985:21;8033:4;8026:5;8022:16;8015:23;;8086:4;8078:6;8074:17;8066:6;8062:30;8115:3;8107:6;8104:15;8101:122;;;8134:79;;:::i;:::-;8101:122;8249:6;8232:220;8266:6;8261:3;8258:15;8232:220;;;8341:3;8370:37;8403:3;8391:10;8370:37;:::i;:::-;8365:3;8358:50;8437:4;8432:3;8428:14;8421:21;;8308:144;8292:4;8287:3;8283:14;8276:21;;8232:220;;;8236:21;7850:608;;7748:710;;;;;:::o;8481:370::-;8552:5;8601:3;8594:4;8586:6;8582:17;8578:27;8568:122;;8609:79;;:::i;:::-;8568:122;8726:6;8713:20;8751:94;8841:3;8833:6;8826:4;8818:6;8814:17;8751:94;:::i;:::-;8742:103;;8558:293;8481:370;;;;:::o;8857:539::-;8941:6;8990:2;8978:9;8969:7;8965:23;8961:32;8958:119;;;8996:79;;:::i;:::-;8958:119;9144:1;9133:9;9129:17;9116:31;9174:18;9166:6;9163:30;9160:117;;;9196:79;;:::i;:::-;9160:117;9301:78;9371:7;9362:6;9351:9;9347:22;9301:78;:::i;:::-;9291:88;;9087:302;8857:539;;;;:::o;9402:474::-;9470:6;9478;9527:2;9515:9;9506:7;9502:23;9498:32;9495:119;;;9533:79;;:::i;:::-;9495:119;9653:1;9678:53;9723:7;9714:6;9703:9;9699:22;9678:53;:::i;:::-;9668:63;;9624:117;9780:2;9806:53;9851:7;9842:6;9831:9;9827:22;9806:53;:::i;:::-;9796:63;;9751:118;9402:474;;;;;:::o;9882:180::-;9930:77;9927:1;9920:88;10027:4;10024:1;10017:15;10051:4;10048:1;10041:15;10068:320;10112:6;10149:1;10143:4;10139:12;10129:22;;10196:1;10190:4;10186:12;10217:18;10207:81;;10273:4;10265:6;10261:17;10251:27;;10207:81;10335:2;10327:6;10324:14;10304:18;10301:38;10298:84;;10354:18;;:::i;:::-;10298:84;10119:269;10068:320;;;:::o;10394:227::-;10534:34;10530:1;10522:6;10518:14;10511:58;10603:10;10598:2;10590:6;10586:15;10579:35;10394:227;:::o;10627:366::-;10769:3;10790:67;10854:2;10849:3;10790:67;:::i;:::-;10783:74;;10866:93;10955:3;10866:93;:::i;:::-;10984:2;10979:3;10975:12;10968:19;;10627:366;;;:::o;10999:419::-;11165:4;11203:2;11192:9;11188:18;11180:26;;11252:9;11246:4;11242:20;11238:1;11227:9;11223:17;11216:47;11280:131;11406:4;11280:131;:::i;:::-;11272:139;;10999:419;;;:::o;11424:180::-;11472:77;11469:1;11462:88;11569:4;11566:1;11559:15;11593:4;11590:1;11583:15;11610:191;11650:3;11669:20;11687:1;11669:20;:::i;:::-;11664:25;;11703:20;11721:1;11703:20;:::i;:::-;11698:25;;11746:1;11743;11739:9;11732:16;;11767:3;11764:1;11761:10;11758:36;;;11774:18;;:::i;:::-;11758:36;11610:191;;;;:::o;11807:182::-;11947:34;11943:1;11935:6;11931:14;11924:58;11807:182;:::o;11995:366::-;12137:3;12158:67;12222:2;12217:3;12158:67;:::i;:::-;12151:74;;12234:93;12323:3;12234:93;:::i;:::-;12352:2;12347:3;12343:12;12336:19;;11995:366;;;:::o;12367:419::-;12533:4;12571:2;12560:9;12556:18;12548:26;;12620:9;12614:4;12610:20;12606:1;12595:9;12591:17;12584:47;12648:131;12774:4;12648:131;:::i;:::-;12640:139;;12367:419;;;:::o;12792:180::-;12840:77;12837:1;12830:88;12937:4;12934:1;12927:15;12961:4;12958:1;12951:15;12978:233;13017:3;13040:24;13058:5;13040:24;:::i;:::-;13031:33;;13086:66;13079:5;13076:77;13073:103;;13156:18;;:::i;:::-;13073:103;13203:1;13196:5;13192:13;13185:20;;12978:233;;;:::o;13217:194::-;13257:4;13277:20;13295:1;13277:20;:::i;:::-;13272:25;;13311:20;13329:1;13311:20;:::i;:::-;13306:25;;13355:1;13352;13348:9;13340:17;;13379:1;13373:4;13370:11;13367:37;;;13384:18;;:::i;:::-;13367:37;13217:194;;;;:::o;13417:224::-;13557:34;13553:1;13545:6;13541:14;13534:58;13626:7;13621:2;13613:6;13609:15;13602:32;13417:224;:::o;13647:366::-;13789:3;13810:67;13874:2;13869:3;13810:67;:::i;:::-;13803:74;;13886:93;13975:3;13886:93;:::i;:::-;14004:2;13999:3;13995:12;13988:19;;13647:366;;;:::o;14019:419::-;14185:4;14223:2;14212:9;14208:18;14200:26;;14272:9;14266:4;14262:20;14258:1;14247:9;14243:17;14236:47;14300:131;14426:4;14300:131;:::i;:::-;14292:139;;14019:419;;;:::o;14444:178::-;14584:30;14580:1;14572:6;14568:14;14561:54;14444:178;:::o;14628:366::-;14770:3;14791:67;14855:2;14850:3;14791:67;:::i;:::-;14784:74;;14867:93;14956:3;14867:93;:::i;:::-;14985:2;14980:3;14976:12;14969:19;;14628:366;;;:::o;15000:419::-;15166:4;15204:2;15193:9;15189:18;15181:26;;15253:9;15247:4;15243:20;15239:1;15228:9;15224:17;15217:47;15281:131;15407:4;15281:131;:::i;:::-;15273:139;;15000:419;;;:::o;15425:223::-;15565:34;15561:1;15553:6;15549:14;15542:58;15634:6;15629:2;15621:6;15617:15;15610:31;15425:223;:::o;15654:366::-;15796:3;15817:67;15881:2;15876:3;15817:67;:::i;:::-;15810:74;;15893:93;15982:3;15893:93;:::i;:::-;16011:2;16006:3;16002:12;15995:19;;15654:366;;;:::o;16026:419::-;16192:4;16230:2;16219:9;16215:18;16207:26;;16279:9;16273:4;16269:20;16265:1;16254:9;16250:17;16243:47;16307:131;16433:4;16307:131;:::i;:::-;16299:139;;16026:419;;;:::o;16451:237::-;16591:34;16587:1;16579:6;16575:14;16568:58;16660:20;16655:2;16647:6;16643:15;16636:45;16451:237;:::o;16694:366::-;16836:3;16857:67;16921:2;16916:3;16857:67;:::i;:::-;16850:74;;16933:93;17022:3;16933:93;:::i;:::-;17051:2;17046:3;17042:12;17035:19;;16694:366;;;:::o;17066:419::-;17232:4;17270:2;17259:9;17255:18;17247:26;;17319:9;17313:4;17309:20;17305:1;17294:9;17290:17;17283:47;17347:131;17473:4;17347:131;:::i;:::-;17339:139;;17066:419;;;:::o;17491:228::-;17631:34;17627:1;17619:6;17615:14;17608:58;17700:11;17695:2;17687:6;17683:15;17676:36;17491:228;:::o;17725:366::-;17867:3;17888:67;17952:2;17947:3;17888:67;:::i;:::-;17881:74;;17964:93;18053:3;17964:93;:::i;:::-;18082:2;18077:3;18073:12;18066:19;;17725:366;;;:::o;18097:419::-;18263:4;18301:2;18290:9;18286:18;18278:26;;18350:9;18344:4;18340:20;18336:1;18325:9;18321:17;18314:47;18378:131;18504:4;18378:131;:::i;:::-;18370:139;;18097:419;;;:::o;18522:410::-;18562:7;18585:20;18603:1;18585:20;:::i;:::-;18580:25;;18619:20;18637:1;18619:20;:::i;:::-;18614:25;;18674:1;18671;18667:9;18696:30;18714:11;18696:30;:::i;:::-;18685:41;;18875:1;18866:7;18862:15;18859:1;18856:22;18836:1;18829:9;18809:83;18786:139;;18905:18;;:::i;:::-;18786:139;18570:362;18522:410;;;;:::o;18938:180::-;18986:77;18983:1;18976:88;19083:4;19080:1;19073:15;19107:4;19104:1;19097:15;19124:185;19164:1;19181:20;19199:1;19181:20;:::i;:::-;19176:25;;19215:20;19233:1;19215:20;:::i;:::-;19210:25;;19254:1;19244:35;;19259:18;;:::i;:::-;19244:35;19301:1;19298;19294:9;19289:14;;19124:185;;;;:::o;19315:225::-;19455:34;19451:1;19443:6;19439:14;19432:58;19524:8;19519:2;19511:6;19507:15;19500:33;19315:225;:::o;19546:366::-;19688:3;19709:67;19773:2;19768:3;19709:67;:::i;:::-;19702:74;;19785:93;19874:3;19785:93;:::i;:::-;19903:2;19898:3;19894:12;19887:19;;19546:366;;;:::o;19918:419::-;20084:4;20122:2;20111:9;20107:18;20099:26;;20171:9;20165:4;20161:20;20157:1;20146:9;20142:17;20135:47;20199:131;20325:4;20199:131;:::i;:::-;20191:139;;19918:419;;;:::o;20343:223::-;20483:34;20479:1;20471:6;20467:14;20460:58;20552:6;20547:2;20539:6;20535:15;20528:31;20343:223;:::o;20572:366::-;20714:3;20735:67;20799:2;20794:3;20735:67;:::i;:::-;20728:74;;20811:93;20900:3;20811:93;:::i;:::-;20929:2;20924:3;20920:12;20913:19;;20572:366;;;:::o;20944:419::-;21110:4;21148:2;21137:9;21133:18;21125:26;;21197:9;21191:4;21187:20;21183:1;21172:9;21168:17;21161:47;21225:131;21351:4;21225:131;:::i;:::-;21217:139;;20944:419;;;:::o;21369:221::-;21509:34;21505:1;21497:6;21493:14;21486:58;21578:4;21573:2;21565:6;21561:15;21554:29;21369:221;:::o;21596:366::-;21738:3;21759:67;21823:2;21818:3;21759:67;:::i;:::-;21752:74;;21835:93;21924:3;21835:93;:::i;:::-;21953:2;21948:3;21944:12;21937:19;;21596:366;;;:::o;21968:419::-;22134:4;22172:2;22161:9;22157:18;22149:26;;22221:9;22215:4;22211:20;22207:1;22196:9;22192:17;22185:47;22249:131;22375:4;22249:131;:::i;:::-;22241:139;;21968:419;;;:::o;22393:224::-;22533:34;22529:1;22521:6;22517:14;22510:58;22602:7;22597:2;22589:6;22585:15;22578:32;22393:224;:::o;22623:366::-;22765:3;22786:67;22850:2;22845:3;22786:67;:::i;:::-;22779:74;;22862:93;22951:3;22862:93;:::i;:::-;22980:2;22975:3;22971:12;22964:19;;22623:366;;;:::o;22995:419::-;23161:4;23199:2;23188:9;23184:18;23176:26;;23248:9;23242:4;23238:20;23234:1;23223:9;23219:17;23212:47;23276:131;23402:4;23276:131;:::i;:::-;23268:139;;22995:419;;;:::o;23420:222::-;23560:34;23556:1;23548:6;23544:14;23537:58;23629:5;23624:2;23616:6;23612:15;23605:30;23420:222;:::o;23648:366::-;23790:3;23811:67;23875:2;23870:3;23811:67;:::i;:::-;23804:74;;23887:93;23976:3;23887:93;:::i;:::-;24005:2;24000:3;23996:12;23989:19;;23648:366;;;:::o;24020:419::-;24186:4;24224:2;24213:9;24209:18;24201:26;;24273:9;24267:4;24263:20;24259:1;24248:9;24244:17;24237:47;24301:131;24427:4;24301:131;:::i;:::-;24293:139;;24020:419;;;:::o;24445:225::-;24585:34;24581:1;24573:6;24569:14;24562:58;24654:8;24649:2;24641:6;24637:15;24630:33;24445:225;:::o;24676:366::-;24818:3;24839:67;24903:2;24898:3;24839:67;:::i;:::-;24832:74;;24915:93;25004:3;24915:93;:::i;:::-;25033:2;25028:3;25024:12;25017:19;;24676:366;;;:::o;25048:419::-;25214:4;25252:2;25241:9;25237:18;25229:26;;25301:9;25295:4;25291:20;25287:1;25276:9;25272:17;25265:47;25329:131;25455:4;25329:131;:::i;:::-;25321:139;;25048:419;;;:::o;25473:181::-;25613:33;25609:1;25601:6;25597:14;25590:57;25473:181;:::o;25660:366::-;25802:3;25823:67;25887:2;25882:3;25823:67;:::i;:::-;25816:74;;25899:93;25988:3;25899:93;:::i;:::-;26017:2;26012:3;26008:12;26001:19;;25660:366;;;:::o;26032:419::-;26198:4;26236:2;26225:9;26221:18;26213:26;;26285:9;26279:4;26275:20;26271:1;26260:9;26256:17;26249:47;26313:131;26439:4;26313:131;:::i;:::-;26305:139;;26032:419;;;:::o;26457:172::-;26597:24;26593:1;26585:6;26581:14;26574:48;26457:172;:::o;26635:366::-;26777:3;26798:67;26862:2;26857:3;26798:67;:::i;:::-;26791:74;;26874:93;26963:3;26874:93;:::i;:::-;26992:2;26987:3;26983:12;26976:19;;26635:366;;;:::o;27007:419::-;27173:4;27211:2;27200:9;27196:18;27188:26;;27260:9;27254:4;27250:20;27246:1;27235:9;27231:17;27224:47;27288:131;27414:4;27288:131;:::i;:::-;27280:139;;27007:419;;;:::o;27432:156::-;27572:8;27568:1;27560:6;27556:14;27549:32;27432:156;:::o;27594:365::-;27736:3;27757:66;27821:1;27816:3;27757:66;:::i;:::-;27750:73;;27832:93;27921:3;27832:93;:::i;:::-;27950:2;27945:3;27941:12;27934:19;;27594:365;;;:::o;27965:419::-;28131:4;28169:2;28158:9;28154:18;28146:26;;28218:9;28212:4;28208:20;28204:1;28193:9;28189:17;28182:47;28246:131;28372:4;28246:131;:::i;:::-;28238:139;;27965:419;;;:::o

Swarm Source

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