ETH Price: $3,327.94 (-1.66%)
Gas: 16 Gwei

Token

Discord (DISCORD)
 

Overview

Max Total Supply

1,000,000,000 DISCORD

Holders

17

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6,850,411.189000578558632238 DISCORD

Value
$0.00
0xe751b99d246f33f25f691677cb89d8b601d7700e
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:
Discord

Compiler Version
v0.8.7+commit.e28d00a7

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-02
*/

//
//      DISCORD  
//
//      https://t.me/DiscordErc
//
// Sources flattened with hardhat v2.7.0 https://hardhat.org

// File @openzeppelin/contracts/utils/[email protected]

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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


// File @openzeppelin/contracts/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 {}
}


// File: Discord.sol

pragma solidity ^0.8.0;

contract Discord is ERC20, Ownable {
    bool public limited;
    uint256 public maxHoldingAmount;
    address public uniswapV2Pair;
    mapping(address => bool) public blacklists;

    constructor() ERC20("Discord", "DISCORD") {
        _mint(msg.sender, 1000000000 * 10 ** decimals());
    }

    function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
        blacklists[_address] = _isBlacklisting;
    }

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) override internal virtual {
        require(!blacklists[to] && !blacklists[from], "Blacklisted");

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

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

    function burn(uint256 value) external {
        _burn(msg.sender, value);
    }
}

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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"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"}],"name":"setRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"}]

60806040523480156200001157600080fd5b506040518060400160405280600781526020017f446973636f7264000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f444953434f524400000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620006cb565b508060049080519060200190620000af929190620006cb565b505050620000d2620000c66200011860201b60201c565b6200012060201b60201c565b6200011233620000e7620001e660201b60201c565b600a620000f5919062000996565b633b9aca0062000106919062000ad3565b620001ef60201b60201c565b62000c90565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000259906200086c565b60405180910390fd5b62000276600083836200036860201b60201c565b80600260008282546200028a9190620008de565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002e19190620008de565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003489190620008b0565b60405180910390a362000364600083836200065460201b60201c565b5050565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156200040d5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6200044f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000446906200088e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156200057357620004b76200065960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806200052b5750620004fc6200065960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6200056d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000564906200084a565b60405180910390fd5b6200064f565b600560149054906101000a900460ff168015620005dd5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156200064e5760065481620005fd846200068360201b620007b71760201c565b620006099190620008de565b11156200064d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006449062000828565b60405180910390fd5b5b5b505050565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b828054620006d99062000b4b565b90600052602060002090601f016020900481019282620006fd576000855562000749565b82601f106200071857805160ff191683800117855562000749565b8280016001018555821562000749579182015b82811115620007485782518255916020019190600101906200072b565b5b5090506200075891906200075c565b5090565b5b80821115620007775760008160009055506001016200075d565b5090565b60006200078a600683620008cd565b9150620007978262000bec565b602082019050919050565b6000620007b1601683620008cd565b9150620007be8262000c15565b602082019050919050565b6000620007d8601f83620008cd565b9150620007e58262000c3e565b602082019050919050565b6000620007ff600b83620008cd565b91506200080c8262000c67565b602082019050919050565b620008228162000b34565b82525050565b6000602082019050818103600083015262000843816200077b565b9050919050565b600060208201905081810360008301526200086581620007a2565b9050919050565b600060208201905081810360008301526200088781620007c9565b9050919050565b60006020820190508181036000830152620008a981620007f0565b9050919050565b6000602082019050620008c7600083018462000817565b92915050565b600082825260208201905092915050565b6000620008eb8262000b34565b9150620008f88362000b34565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000930576200092f62000b81565b5b828201905092915050565b6000808291508390505b60018511156200098d5780860481111562000965576200096462000b81565b5b6001851615620009755780820291505b8081029050620009858562000bdf565b945062000945565b94509492505050565b6000620009a38262000b34565b9150620009b08362000b3e565b9250620009df7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009e7565b905092915050565b600082620009f9576001905062000acc565b8162000a09576000905062000acc565b816001811462000a22576002811462000a2d5762000a63565b600191505062000acc565b60ff84111562000a425762000a4162000b81565b5b8360020a91508482111562000a5c5762000a5b62000b81565b5b5062000acc565b5060208310610133831016604e8410600b841016171562000a9d5782820a90508381111562000a975762000a9662000b81565b5b62000acc565b62000aac84848460016200093b565b9250905081840481111562000ac65762000ac562000b81565b5b81810290505b9392505050565b600062000ae08262000b34565b915062000aed8362000b34565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b295762000b2862000b81565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000b6457607f821691505b6020821081141562000b7b5762000b7a62000bb0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6123308062000ca06000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b85780638da5cb5b1161007c5780638da5cb5b1461033e57806395d89b411461035c578063a457c2d71461037a578063a9059cbb146103aa578063dd62ed3e146103da578063f2fde38b1461040a57610137565b806370a08231146102ac578063715018a6146102dc5780637abf9d26146102e6578063860a32ec1461030257806389f9a1d31461032057610137565b8063313ce567116100ff578063313ce567146102085780633950935114610226578063404e51291461025657806342966c681461027257806349bd5a5e1461028e57610137565b806306fdde031461013c578063095ea7b31461015a57806316c021291461018a57806318160ddd146101ba57806323b872dd146101d8575b600080fd5b610144610426565b6040516101519190611b0f565b60405180910390f35b610174600480360381019061016f91906117ba565b6104b8565b6040516101819190611af4565b60405180910390f35b6101a4600480360381019061019f91906116ba565b6104d6565b6040516101b19190611af4565b60405180910390f35b6101c26104f6565b6040516101cf9190611cf1565b60405180910390f35b6101f260048036038101906101ed9190611727565b610500565b6040516101ff9190611af4565b60405180910390f35b6102106105f8565b60405161021d9190611d0c565b60405180910390f35b610240600480360381019061023b91906117ba565b610601565b60405161024d9190611af4565b60405180910390f35b610270600480360381019061026b919061177a565b6106ad565b005b61028c6004803603810190610287919061184d565b610784565b005b610296610791565b6040516102a39190611ad9565b60405180910390f35b6102c660048036038101906102c191906116ba565b6107b7565b6040516102d39190611cf1565b60405180910390f35b6102e46107ff565b005b61030060048036038101906102fb91906117fa565b610887565b005b61030a61096a565b6040516103179190611af4565b60405180910390f35b61032861097d565b6040516103359190611cf1565b60405180910390f35b610346610983565b6040516103539190611ad9565b60405180910390f35b6103646109ad565b6040516103719190611b0f565b60405180910390f35b610394600480360381019061038f91906117ba565b610a3f565b6040516103a19190611af4565b60405180910390f35b6103c460048036038101906103bf91906117ba565b610b2a565b6040516103d19190611af4565b60405180910390f35b6103f460048036038101906103ef91906116e7565b610b48565b6040516104019190611cf1565b60405180910390f35b610424600480360381019061041f91906116ba565b610bcf565b005b60606003805461043590611e55565b80601f016020809104026020016040519081016040528092919081815260200182805461046190611e55565b80156104ae5780601f10610483576101008083540402835291602001916104ae565b820191906000526020600020905b81548152906001019060200180831161049157829003601f168201915b5050505050905090565b60006104cc6104c5610cc7565b8484610ccf565b6001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b600061050d848484610e9a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610558610cc7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156105d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cf90611bf1565b60405180910390fd5b6105ec856105e4610cc7565b858403610ccf565b60019150509392505050565b60006012905090565b60006106a361060e610cc7565b84846001600061061c610cc7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461069e9190611d43565b610ccf565b6001905092915050565b6106b5610cc7565b73ffffffffffffffffffffffffffffffffffffffff166106d3610983565b73ffffffffffffffffffffffffffffffffffffffff1614610729576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072090611c11565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61078e338261111b565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610807610cc7565b73ffffffffffffffffffffffffffffffffffffffff16610825610983565b73ffffffffffffffffffffffffffffffffffffffff161461087b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087290611c11565b60405180910390fd5b61088560006112f2565b565b61088f610cc7565b73ffffffffffffffffffffffffffffffffffffffff166108ad610983565b73ffffffffffffffffffffffffffffffffffffffff1614610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fa90611c11565b60405180910390fd5b82600560146101000a81548160ff02191690831515021790555081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600681905550505050565b600560149054906101000a900460ff1681565b60065481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546109bc90611e55565b80601f01602080910402602001604051908101604052809291908181526020018280546109e890611e55565b8015610a355780601f10610a0a57610100808354040283529160200191610a35565b820191906000526020600020905b815481529060010190602001808311610a1857829003601f168201915b5050505050905090565b60008060016000610a4e610cc7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0290611cb1565b60405180910390fd5b610b1f610b16610cc7565b85858403610ccf565b600191505092915050565b6000610b3e610b37610cc7565b8484610e9a565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610bd7610cc7565b73ffffffffffffffffffffffffffffffffffffffff16610bf5610983565b73ffffffffffffffffffffffffffffffffffffffff1614610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4290611c11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb290611b71565b60405180910390fd5b610cc4816112f2565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3690611c91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da690611b91565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e8d9190611cf1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0190611c71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7190611b31565b60405180910390fd5b610f858383836113b8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290611bb1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461109e9190611d43565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111029190611cf1565b60405180910390a3611115848484611676565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561118b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118290611c31565b60405180910390fd5b611197826000836113b8565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490611b51565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546112749190611d99565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112d99190611cf1565b60405180910390a36112ed83600084611676565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561145c5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61149b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149290611cd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115a9576114fa610983565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806115655750611536610983565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90611c51565b60405180910390fd5b611671565b600560149054906101000a900460ff1680156116125750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156116705760065481611624846107b7565b61162e9190611d43565b111561166f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166690611bd1565b60405180910390fd5b5b5b505050565b505050565b60008135905061168a816122b5565b92915050565b60008135905061169f816122cc565b92915050565b6000813590506116b4816122e3565b92915050565b6000602082840312156116d0576116cf611ee5565b5b60006116de8482850161167b565b91505092915050565b600080604083850312156116fe576116fd611ee5565b5b600061170c8582860161167b565b925050602061171d8582860161167b565b9150509250929050565b6000806000606084860312156117405761173f611ee5565b5b600061174e8682870161167b565b935050602061175f8682870161167b565b9250506040611770868287016116a5565b9150509250925092565b6000806040838503121561179157611790611ee5565b5b600061179f8582860161167b565b92505060206117b085828601611690565b9150509250929050565b600080604083850312156117d1576117d0611ee5565b5b60006117df8582860161167b565b92505060206117f0858286016116a5565b9150509250929050565b60008060006060848603121561181357611812611ee5565b5b600061182186828701611690565b93505060206118328682870161167b565b9250506040611843868287016116a5565b9150509250925092565b60006020828403121561186357611862611ee5565b5b6000611871848285016116a5565b91505092915050565b61188381611dcd565b82525050565b61189281611ddf565b82525050565b60006118a382611d27565b6118ad8185611d32565b93506118bd818560208601611e22565b6118c681611eea565b840191505092915050565b60006118de602383611d32565b91506118e982611efb565b604082019050919050565b6000611901602283611d32565b915061190c82611f4a565b604082019050919050565b6000611924602683611d32565b915061192f82611f99565b604082019050919050565b6000611947602283611d32565b915061195282611fe8565b604082019050919050565b600061196a602683611d32565b915061197582612037565b604082019050919050565b600061198d600683611d32565b915061199882612086565b602082019050919050565b60006119b0602883611d32565b91506119bb826120af565b604082019050919050565b60006119d3602083611d32565b91506119de826120fe565b602082019050919050565b60006119f6602183611d32565b9150611a0182612127565b604082019050919050565b6000611a19601683611d32565b9150611a2482612176565b602082019050919050565b6000611a3c602583611d32565b9150611a478261219f565b604082019050919050565b6000611a5f602483611d32565b9150611a6a826121ee565b604082019050919050565b6000611a82602583611d32565b9150611a8d8261223d565b604082019050919050565b6000611aa5600b83611d32565b9150611ab08261228c565b602082019050919050565b611ac481611e0b565b82525050565b611ad381611e15565b82525050565b6000602082019050611aee600083018461187a565b92915050565b6000602082019050611b096000830184611889565b92915050565b60006020820190508181036000830152611b298184611898565b905092915050565b60006020820190508181036000830152611b4a816118d1565b9050919050565b60006020820190508181036000830152611b6a816118f4565b9050919050565b60006020820190508181036000830152611b8a81611917565b9050919050565b60006020820190508181036000830152611baa8161193a565b9050919050565b60006020820190508181036000830152611bca8161195d565b9050919050565b60006020820190508181036000830152611bea81611980565b9050919050565b60006020820190508181036000830152611c0a816119a3565b9050919050565b60006020820190508181036000830152611c2a816119c6565b9050919050565b60006020820190508181036000830152611c4a816119e9565b9050919050565b60006020820190508181036000830152611c6a81611a0c565b9050919050565b60006020820190508181036000830152611c8a81611a2f565b9050919050565b60006020820190508181036000830152611caa81611a52565b9050919050565b60006020820190508181036000830152611cca81611a75565b9050919050565b60006020820190508181036000830152611cea81611a98565b9050919050565b6000602082019050611d066000830184611abb565b92915050565b6000602082019050611d216000830184611aca565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611d4e82611e0b565b9150611d5983611e0b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d8e57611d8d611e87565b5b828201905092915050565b6000611da482611e0b565b9150611daf83611e0b565b925082821015611dc257611dc1611e87565b5b828203905092915050565b6000611dd882611deb565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611e40578082015181840152602081019050611e25565b83811115611e4f576000848401525b50505050565b60006002820490506001821680611e6d57607f821691505b60208210811415611e8157611e80611eb6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6122be81611dcd565b81146122c957600080fd5b50565b6122d581611ddf565b81146122e057600080fd5b50565b6122ec81611e0b565b81146122f757600080fd5b5056fea26469706673582212202b0a35a6ae2bca6fe87ff7cc6ab0c08fe3376ed5fc90d70bd95ca1273a33e62164736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b85780638da5cb5b1161007c5780638da5cb5b1461033e57806395d89b411461035c578063a457c2d71461037a578063a9059cbb146103aa578063dd62ed3e146103da578063f2fde38b1461040a57610137565b806370a08231146102ac578063715018a6146102dc5780637abf9d26146102e6578063860a32ec1461030257806389f9a1d31461032057610137565b8063313ce567116100ff578063313ce567146102085780633950935114610226578063404e51291461025657806342966c681461027257806349bd5a5e1461028e57610137565b806306fdde031461013c578063095ea7b31461015a57806316c021291461018a57806318160ddd146101ba57806323b872dd146101d8575b600080fd5b610144610426565b6040516101519190611b0f565b60405180910390f35b610174600480360381019061016f91906117ba565b6104b8565b6040516101819190611af4565b60405180910390f35b6101a4600480360381019061019f91906116ba565b6104d6565b6040516101b19190611af4565b60405180910390f35b6101c26104f6565b6040516101cf9190611cf1565b60405180910390f35b6101f260048036038101906101ed9190611727565b610500565b6040516101ff9190611af4565b60405180910390f35b6102106105f8565b60405161021d9190611d0c565b60405180910390f35b610240600480360381019061023b91906117ba565b610601565b60405161024d9190611af4565b60405180910390f35b610270600480360381019061026b919061177a565b6106ad565b005b61028c6004803603810190610287919061184d565b610784565b005b610296610791565b6040516102a39190611ad9565b60405180910390f35b6102c660048036038101906102c191906116ba565b6107b7565b6040516102d39190611cf1565b60405180910390f35b6102e46107ff565b005b61030060048036038101906102fb91906117fa565b610887565b005b61030a61096a565b6040516103179190611af4565b60405180910390f35b61032861097d565b6040516103359190611cf1565b60405180910390f35b610346610983565b6040516103539190611ad9565b60405180910390f35b6103646109ad565b6040516103719190611b0f565b60405180910390f35b610394600480360381019061038f91906117ba565b610a3f565b6040516103a19190611af4565b60405180910390f35b6103c460048036038101906103bf91906117ba565b610b2a565b6040516103d19190611af4565b60405180910390f35b6103f460048036038101906103ef91906116e7565b610b48565b6040516104019190611cf1565b60405180910390f35b610424600480360381019061041f91906116ba565b610bcf565b005b60606003805461043590611e55565b80601f016020809104026020016040519081016040528092919081815260200182805461046190611e55565b80156104ae5780601f10610483576101008083540402835291602001916104ae565b820191906000526020600020905b81548152906001019060200180831161049157829003601f168201915b5050505050905090565b60006104cc6104c5610cc7565b8484610ccf565b6001905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b600061050d848484610e9a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610558610cc7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156105d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cf90611bf1565b60405180910390fd5b6105ec856105e4610cc7565b858403610ccf565b60019150509392505050565b60006012905090565b60006106a361060e610cc7565b84846001600061061c610cc7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461069e9190611d43565b610ccf565b6001905092915050565b6106b5610cc7565b73ffffffffffffffffffffffffffffffffffffffff166106d3610983565b73ffffffffffffffffffffffffffffffffffffffff1614610729576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072090611c11565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61078e338261111b565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610807610cc7565b73ffffffffffffffffffffffffffffffffffffffff16610825610983565b73ffffffffffffffffffffffffffffffffffffffff161461087b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087290611c11565b60405180910390fd5b61088560006112f2565b565b61088f610cc7565b73ffffffffffffffffffffffffffffffffffffffff166108ad610983565b73ffffffffffffffffffffffffffffffffffffffff1614610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fa90611c11565b60405180910390fd5b82600560146101000a81548160ff02191690831515021790555081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600681905550505050565b600560149054906101000a900460ff1681565b60065481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546109bc90611e55565b80601f01602080910402602001604051908101604052809291908181526020018280546109e890611e55565b8015610a355780601f10610a0a57610100808354040283529160200191610a35565b820191906000526020600020905b815481529060010190602001808311610a1857829003601f168201915b5050505050905090565b60008060016000610a4e610cc7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0290611cb1565b60405180910390fd5b610b1f610b16610cc7565b85858403610ccf565b600191505092915050565b6000610b3e610b37610cc7565b8484610e9a565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610bd7610cc7565b73ffffffffffffffffffffffffffffffffffffffff16610bf5610983565b73ffffffffffffffffffffffffffffffffffffffff1614610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4290611c11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb290611b71565b60405180910390fd5b610cc4816112f2565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3690611c91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da690611b91565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e8d9190611cf1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0190611c71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7190611b31565b60405180910390fd5b610f858383836113b8565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290611bb1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461109e9190611d43565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111029190611cf1565b60405180910390a3611115848484611676565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561118b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118290611c31565b60405180910390fd5b611197826000836113b8565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490611b51565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546112749190611d99565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112d99190611cf1565b60405180910390a36112ed83600084611676565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561145c5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61149b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149290611cd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115a9576114fa610983565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806115655750611536610983565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90611c51565b60405180910390fd5b611671565b600560149054906101000a900460ff1680156116125750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156116705760065481611624846107b7565b61162e9190611d43565b111561166f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166690611bd1565b60405180910390fd5b5b5b505050565b505050565b60008135905061168a816122b5565b92915050565b60008135905061169f816122cc565b92915050565b6000813590506116b4816122e3565b92915050565b6000602082840312156116d0576116cf611ee5565b5b60006116de8482850161167b565b91505092915050565b600080604083850312156116fe576116fd611ee5565b5b600061170c8582860161167b565b925050602061171d8582860161167b565b9150509250929050565b6000806000606084860312156117405761173f611ee5565b5b600061174e8682870161167b565b935050602061175f8682870161167b565b9250506040611770868287016116a5565b9150509250925092565b6000806040838503121561179157611790611ee5565b5b600061179f8582860161167b565b92505060206117b085828601611690565b9150509250929050565b600080604083850312156117d1576117d0611ee5565b5b60006117df8582860161167b565b92505060206117f0858286016116a5565b9150509250929050565b60008060006060848603121561181357611812611ee5565b5b600061182186828701611690565b93505060206118328682870161167b565b9250506040611843868287016116a5565b9150509250925092565b60006020828403121561186357611862611ee5565b5b6000611871848285016116a5565b91505092915050565b61188381611dcd565b82525050565b61189281611ddf565b82525050565b60006118a382611d27565b6118ad8185611d32565b93506118bd818560208601611e22565b6118c681611eea565b840191505092915050565b60006118de602383611d32565b91506118e982611efb565b604082019050919050565b6000611901602283611d32565b915061190c82611f4a565b604082019050919050565b6000611924602683611d32565b915061192f82611f99565b604082019050919050565b6000611947602283611d32565b915061195282611fe8565b604082019050919050565b600061196a602683611d32565b915061197582612037565b604082019050919050565b600061198d600683611d32565b915061199882612086565b602082019050919050565b60006119b0602883611d32565b91506119bb826120af565b604082019050919050565b60006119d3602083611d32565b91506119de826120fe565b602082019050919050565b60006119f6602183611d32565b9150611a0182612127565b604082019050919050565b6000611a19601683611d32565b9150611a2482612176565b602082019050919050565b6000611a3c602583611d32565b9150611a478261219f565b604082019050919050565b6000611a5f602483611d32565b9150611a6a826121ee565b604082019050919050565b6000611a82602583611d32565b9150611a8d8261223d565b604082019050919050565b6000611aa5600b83611d32565b9150611ab08261228c565b602082019050919050565b611ac481611e0b565b82525050565b611ad381611e15565b82525050565b6000602082019050611aee600083018461187a565b92915050565b6000602082019050611b096000830184611889565b92915050565b60006020820190508181036000830152611b298184611898565b905092915050565b60006020820190508181036000830152611b4a816118d1565b9050919050565b60006020820190508181036000830152611b6a816118f4565b9050919050565b60006020820190508181036000830152611b8a81611917565b9050919050565b60006020820190508181036000830152611baa8161193a565b9050919050565b60006020820190508181036000830152611bca8161195d565b9050919050565b60006020820190508181036000830152611bea81611980565b9050919050565b60006020820190508181036000830152611c0a816119a3565b9050919050565b60006020820190508181036000830152611c2a816119c6565b9050919050565b60006020820190508181036000830152611c4a816119e9565b9050919050565b60006020820190508181036000830152611c6a81611a0c565b9050919050565b60006020820190508181036000830152611c8a81611a2f565b9050919050565b60006020820190508181036000830152611caa81611a52565b9050919050565b60006020820190508181036000830152611cca81611a75565b9050919050565b60006020820190508181036000830152611cea81611a98565b9050919050565b6000602082019050611d066000830184611abb565b92915050565b6000602082019050611d216000830184611aca565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611d4e82611e0b565b9150611d5983611e0b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d8e57611d8d611e87565b5b828201905092915050565b6000611da482611e0b565b9150611daf83611e0b565b925082821015611dc257611dc1611e87565b5b828203905092915050565b6000611dd882611deb565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611e40578082015181840152602081019050611e25565b83811115611e4f576000848401525b50505050565b60006002820490506001821680611e6d57607f821691505b60208210811415611e8157611e80611eb6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e67206973206e6f74207374617274656400000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6122be81611dcd565b81146122c957600080fd5b50565b6122d581611ddf565b81146122e057600080fd5b50565b6122ec81611e0b565b81146122f757600080fd5b5056fea26469706673582212202b0a35a6ae2bca6fe87ff7cc6ab0c08fe3376ed5fc90d70bd95ca1273a33e62164736f6c63430008070033

Deployed Bytecode Sourcemap

19390:1294:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9376:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11543:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19531:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10496:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12194:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10338:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13095:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19699:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20600:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19496:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10667:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2777:103;;;:::i;:::-;;19842:227;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19432:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19458:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2126:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9595:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13813:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11007:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11245:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3035:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9376:100;9430:13;9463:5;9456:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9376:100;:::o;11543:169::-;11626:4;11643:39;11652:12;:10;:12::i;:::-;11666:7;11675:6;11643:8;:39::i;:::-;11700:4;11693:11;;11543:169;;;;:::o;19531:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;10496:108::-;10557:7;10584:12;;10577:19;;10496:108;:::o;12194:492::-;12334:4;12351:36;12361:6;12369:9;12380:6;12351:9;:36::i;:::-;12400:24;12427:11;:19;12439:6;12427:19;;;;;;;;;;;;;;;:33;12447:12;:10;:12::i;:::-;12427:33;;;;;;;;;;;;;;;;12400:60;;12499:6;12479:16;:26;;12471:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12586:57;12595:6;12603:12;:10;:12::i;:::-;12636:6;12617:16;:25;12586:8;:57::i;:::-;12674:4;12667:11;;;12194:492;;;;;:::o;10338:93::-;10396:5;10421:2;10414:9;;10338:93;:::o;13095:215::-;13183:4;13200:80;13209:12;:10;:12::i;:::-;13223:7;13269:10;13232:11;:25;13244:12;:10;:12::i;:::-;13232:25;;;;;;;;;;;;;;;:34;13258:7;13232:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13200:8;:80::i;:::-;13298:4;13291:11;;13095:215;;;;:::o;19699:135::-;2357:12;:10;:12::i;:::-;2346:23;;:7;:5;:7::i;:::-;:23;;;2338:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19811:15:::1;19788:10;:20;19799:8;19788:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19699:135:::0;;:::o;20600:81::-;20649:24;20655:10;20667:5;20649;:24::i;:::-;20600:81;:::o;19496:28::-;;;;;;;;;;;;;:::o;10667:127::-;10741:7;10768:9;:18;10778:7;10768:18;;;;;;;;;;;;;;;;10761:25;;10667:127;;;:::o;2777:103::-;2357:12;:10;:12::i;:::-;2346:23;;:7;:5;:7::i;:::-;:23;;;2338:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2842:30:::1;2869:1;2842:18;:30::i;:::-;2777:103::o:0;19842:227::-;2357:12;:10;:12::i;:::-;2346:23;;:7;:5;:7::i;:::-;:23;;;2338:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19965:8:::1;19955:7;;:18;;;;;;;;;;;;;;;;;;20000:14;19984:13;;:30;;;;;;;;;;;;;;;;;;20044:17;20025:16;:36;;;;19842:227:::0;;;:::o;19432:19::-;;;;;;;;;;;;;:::o;19458:31::-;;;;:::o;2126:87::-;2172:7;2199:6;;;;;;;;;;;2192:13;;2126:87;:::o;9595:104::-;9651:13;9684:7;9677:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9595:104;:::o;13813:413::-;13906:4;13923:24;13950:11;:25;13962:12;:10;:12::i;:::-;13950:25;;;;;;;;;;;;;;;:34;13976:7;13950:34;;;;;;;;;;;;;;;;13923:61;;14023:15;14003:16;:35;;13995:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14116:67;14125:12;:10;:12::i;:::-;14139:7;14167:15;14148:16;:34;14116:8;:67::i;:::-;14214:4;14207:11;;;13813:413;;;;:::o;11007:175::-;11093:4;11110:42;11120:12;:10;:12::i;:::-;11134:9;11145:6;11110:9;:42::i;:::-;11170:4;11163:11;;11007:175;;;;:::o;11245:151::-;11334:7;11361:11;:18;11373:5;11361:18;;;;;;;;;;;;;;;:27;11380:7;11361:27;;;;;;;;;;;;;;;;11354:34;;11245:151;;;;:::o;3035:201::-;2357:12;:10;:12::i;:::-;2346:23;;:7;:5;:7::i;:::-;:23;;;2338:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3144:1:::1;3124:22;;:8;:22;;;;3116:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3200:28;3219:8;3200:18;:28::i;:::-;3035:201:::0;:::o;844:98::-;897:7;924:10;917:17;;844:98;:::o;17497:380::-;17650:1;17633:19;;:5;:19;;;;17625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17731:1;17712:21;;:7;:21;;;;17704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17815:6;17785:11;:18;17797:5;17785:18;;;;;;;;;;;;;;;:27;17804:7;17785:27;;;;;;;;;;;;;;;:36;;;;17853:7;17837:32;;17846:5;17837:32;;;17862:6;17837:32;;;;;;:::i;:::-;;;;;;;;17497:380;;;:::o;14716:733::-;14874:1;14856:20;;:6;:20;;;;14848:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14958:1;14937:23;;:9;:23;;;;14929:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15013:47;15034:6;15042:9;15053:6;15013:20;:47::i;:::-;15073:21;15097:9;:17;15107:6;15097:17;;;;;;;;;;;;;;;;15073:41;;15150:6;15133:13;:23;;15125:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15271:6;15255:13;:22;15235:9;:17;15245:6;15235:17;;;;;;;;;;;;;;;:42;;;;15323:6;15299:9;:20;15309:9;15299:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15364:9;15347:35;;15356:6;15347:35;;;15375:6;15347:35;;;;;;:::i;:::-;;;;;;;;15395:46;15415:6;15423:9;15434:6;15395:19;:46::i;:::-;14837:612;14716:733;;;:::o;16468:591::-;16571:1;16552:21;;:7;:21;;;;16544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16624:49;16645:7;16662:1;16666:6;16624:20;:49::i;:::-;16686:22;16711:9;:18;16721:7;16711:18;;;;;;;;;;;;;;;;16686:43;;16766:6;16748:14;:24;;16740:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16885:6;16868:14;:23;16847:9;:18;16857:7;16847:18;;;;;;;;;;;;;;;:44;;;;16929:6;16913:12;;:22;;;;;;;:::i;:::-;;;;;;;;16979:1;16953:37;;16962:7;16953:37;;;16983:6;16953:37;;;;;;:::i;:::-;;;;;;;;17003:48;17023:7;17040:1;17044:6;17003:19;:48::i;:::-;16533:526;16468:591;;:::o;3396:191::-;3470:16;3489:6;;;;;;;;;;;3470:25;;3515:8;3506:6;;:17;;;;;;;;;;;;;;;;;;3570:8;3539:40;;3560:8;3539:40;;;;;;;;;;;;3459:128;3396:191;:::o;20077:515::-;20229:10;:14;20240:2;20229:14;;;;;;;;;;;;;;;;;;;;;;;;;20228:15;:36;;;;;20248:10;:16;20259:4;20248:16;;;;;;;;;;;;;;;;;;;;;;;;;20247:17;20228:36;20220:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20322:1;20297:27;;:13;;;;;;;;;;;:27;;;20293:148;;;20357:7;:5;:7::i;:::-;20349:15;;:4;:15;;;:32;;;;20374:7;:5;:7::i;:::-;20368:13;;:2;:13;;;20349:32;20341:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20423:7;;20293:148;20457:7;;;;;;;;;;;:32;;;;;20476:13;;;;;;;;;;;20468:21;;:4;:21;;;20457:32;20453:132;;;20546:16;;20536:6;20514:19;20530:2;20514:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;20506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20453:132;20077:515;;;;:::o;19206:124::-;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:133::-;195:5;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;152:133;;;;:::o;291:139::-;337:5;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;291:139;;;;:::o;436:329::-;495:6;544:2;532:9;523:7;519:23;515:32;512:119;;;550:79;;:::i;:::-;512:119;670:1;695:53;740:7;731:6;720:9;716:22;695:53;:::i;:::-;685:63;;641:117;436:329;;;;:::o;771:474::-;839:6;847;896:2;884:9;875:7;871:23;867:32;864:119;;;902:79;;:::i;:::-;864:119;1022:1;1047:53;1092:7;1083:6;1072:9;1068:22;1047:53;:::i;:::-;1037:63;;993:117;1149:2;1175:53;1220:7;1211:6;1200:9;1196:22;1175:53;:::i;:::-;1165:63;;1120:118;771:474;;;;;:::o;1251:619::-;1328:6;1336;1344;1393:2;1381:9;1372:7;1368:23;1364:32;1361:119;;;1399:79;;:::i;:::-;1361:119;1519:1;1544:53;1589:7;1580:6;1569:9;1565:22;1544:53;:::i;:::-;1534:63;;1490:117;1646:2;1672:53;1717:7;1708:6;1697:9;1693:22;1672:53;:::i;:::-;1662:63;;1617:118;1774:2;1800:53;1845:7;1836:6;1825:9;1821:22;1800:53;:::i;:::-;1790:63;;1745:118;1251:619;;;;;:::o;1876:468::-;1941:6;1949;1998:2;1986:9;1977:7;1973:23;1969:32;1966:119;;;2004:79;;:::i;:::-;1966:119;2124:1;2149:53;2194:7;2185:6;2174:9;2170:22;2149:53;:::i;:::-;2139:63;;2095:117;2251:2;2277:50;2319:7;2310:6;2299:9;2295:22;2277:50;:::i;:::-;2267:60;;2222:115;1876:468;;;;;:::o;2350:474::-;2418:6;2426;2475:2;2463:9;2454:7;2450:23;2446:32;2443:119;;;2481:79;;:::i;:::-;2443:119;2601:1;2626:53;2671:7;2662:6;2651:9;2647:22;2626:53;:::i;:::-;2616:63;;2572:117;2728:2;2754:53;2799:7;2790:6;2779:9;2775:22;2754:53;:::i;:::-;2744:63;;2699:118;2350:474;;;;;:::o;2830:613::-;2904:6;2912;2920;2969:2;2957:9;2948:7;2944:23;2940:32;2937:119;;;2975:79;;:::i;:::-;2937:119;3095:1;3120:50;3162:7;3153:6;3142:9;3138:22;3120:50;:::i;:::-;3110:60;;3066:114;3219:2;3245:53;3290:7;3281:6;3270:9;3266:22;3245:53;:::i;:::-;3235:63;;3190:118;3347:2;3373:53;3418:7;3409:6;3398:9;3394:22;3373:53;:::i;:::-;3363:63;;3318:118;2830:613;;;;;:::o;3449:329::-;3508:6;3557:2;3545:9;3536:7;3532:23;3528:32;3525:119;;;3563:79;;:::i;:::-;3525:119;3683:1;3708:53;3753:7;3744:6;3733:9;3729:22;3708:53;:::i;:::-;3698:63;;3654:117;3449:329;;;;:::o;3784:118::-;3871:24;3889:5;3871:24;:::i;:::-;3866:3;3859:37;3784:118;;:::o;3908:109::-;3989:21;4004:5;3989:21;:::i;:::-;3984:3;3977:34;3908:109;;:::o;4023:364::-;4111:3;4139:39;4172:5;4139:39;:::i;:::-;4194:71;4258:6;4253:3;4194:71;:::i;:::-;4187:78;;4274:52;4319:6;4314:3;4307:4;4300:5;4296:16;4274:52;:::i;:::-;4351:29;4373:6;4351:29;:::i;:::-;4346:3;4342:39;4335:46;;4115:272;4023:364;;;;:::o;4393:366::-;4535:3;4556:67;4620:2;4615:3;4556:67;:::i;:::-;4549:74;;4632:93;4721:3;4632:93;:::i;:::-;4750:2;4745:3;4741:12;4734:19;;4393:366;;;:::o;4765:::-;4907:3;4928:67;4992:2;4987:3;4928:67;:::i;:::-;4921:74;;5004:93;5093:3;5004:93;:::i;:::-;5122:2;5117:3;5113:12;5106:19;;4765:366;;;:::o;5137:::-;5279:3;5300:67;5364:2;5359:3;5300:67;:::i;:::-;5293:74;;5376:93;5465:3;5376:93;:::i;:::-;5494:2;5489:3;5485:12;5478:19;;5137:366;;;:::o;5509:::-;5651:3;5672:67;5736:2;5731:3;5672:67;:::i;:::-;5665:74;;5748:93;5837:3;5748:93;:::i;:::-;5866:2;5861:3;5857:12;5850:19;;5509:366;;;:::o;5881:::-;6023:3;6044:67;6108:2;6103:3;6044:67;:::i;:::-;6037:74;;6120:93;6209:3;6120:93;:::i;:::-;6238:2;6233:3;6229:12;6222:19;;5881:366;;;:::o;6253:365::-;6395:3;6416:66;6480:1;6475:3;6416:66;:::i;:::-;6409:73;;6491:93;6580:3;6491:93;:::i;:::-;6609:2;6604:3;6600:12;6593:19;;6253:365;;;:::o;6624:366::-;6766:3;6787:67;6851:2;6846:3;6787:67;:::i;:::-;6780:74;;6863:93;6952:3;6863:93;:::i;:::-;6981:2;6976:3;6972:12;6965:19;;6624:366;;;:::o;6996:::-;7138:3;7159:67;7223:2;7218:3;7159:67;:::i;:::-;7152:74;;7235:93;7324:3;7235:93;:::i;:::-;7353:2;7348:3;7344:12;7337:19;;6996:366;;;:::o;7368:::-;7510:3;7531:67;7595:2;7590:3;7531:67;:::i;:::-;7524:74;;7607:93;7696:3;7607:93;:::i;:::-;7725:2;7720:3;7716:12;7709:19;;7368:366;;;:::o;7740:::-;7882:3;7903:67;7967:2;7962:3;7903:67;:::i;:::-;7896:74;;7979:93;8068:3;7979:93;:::i;:::-;8097:2;8092:3;8088:12;8081:19;;7740:366;;;:::o;8112:::-;8254:3;8275:67;8339:2;8334:3;8275:67;:::i;:::-;8268:74;;8351:93;8440:3;8351:93;:::i;:::-;8469:2;8464:3;8460:12;8453:19;;8112:366;;;:::o;8484:::-;8626:3;8647:67;8711:2;8706:3;8647:67;:::i;:::-;8640:74;;8723:93;8812:3;8723:93;:::i;:::-;8841:2;8836:3;8832:12;8825:19;;8484:366;;;:::o;8856:::-;8998:3;9019:67;9083:2;9078:3;9019:67;:::i;:::-;9012:74;;9095:93;9184:3;9095:93;:::i;:::-;9213:2;9208:3;9204:12;9197:19;;8856:366;;;:::o;9228:::-;9370:3;9391:67;9455:2;9450:3;9391:67;:::i;:::-;9384:74;;9467:93;9556:3;9467:93;:::i;:::-;9585:2;9580:3;9576:12;9569:19;;9228:366;;;:::o;9600:118::-;9687:24;9705:5;9687:24;:::i;:::-;9682:3;9675:37;9600:118;;:::o;9724:112::-;9807:22;9823:5;9807:22;:::i;:::-;9802:3;9795:35;9724:112;;:::o;9842:222::-;9935:4;9973:2;9962:9;9958:18;9950:26;;9986:71;10054:1;10043:9;10039:17;10030:6;9986:71;:::i;:::-;9842:222;;;;:::o;10070:210::-;10157:4;10195:2;10184:9;10180:18;10172:26;;10208:65;10270:1;10259:9;10255:17;10246:6;10208:65;:::i;:::-;10070:210;;;;:::o;10286:313::-;10399:4;10437:2;10426:9;10422:18;10414:26;;10486:9;10480:4;10476:20;10472:1;10461:9;10457:17;10450:47;10514:78;10587:4;10578:6;10514:78;:::i;:::-;10506:86;;10286:313;;;;:::o;10605:419::-;10771:4;10809:2;10798:9;10794:18;10786:26;;10858:9;10852:4;10848:20;10844:1;10833:9;10829:17;10822:47;10886:131;11012:4;10886:131;:::i;:::-;10878:139;;10605:419;;;:::o;11030:::-;11196:4;11234:2;11223:9;11219:18;11211:26;;11283:9;11277:4;11273:20;11269:1;11258:9;11254:17;11247:47;11311:131;11437:4;11311:131;:::i;:::-;11303:139;;11030:419;;;:::o;11455:::-;11621:4;11659:2;11648:9;11644:18;11636:26;;11708:9;11702:4;11698:20;11694:1;11683:9;11679:17;11672:47;11736:131;11862:4;11736:131;:::i;:::-;11728:139;;11455:419;;;:::o;11880:::-;12046:4;12084:2;12073:9;12069:18;12061:26;;12133:9;12127:4;12123:20;12119:1;12108:9;12104:17;12097:47;12161:131;12287:4;12161:131;:::i;:::-;12153:139;;11880:419;;;:::o;12305:::-;12471:4;12509:2;12498:9;12494:18;12486:26;;12558:9;12552:4;12548:20;12544:1;12533:9;12529:17;12522:47;12586:131;12712:4;12586:131;:::i;:::-;12578:139;;12305:419;;;:::o;12730:::-;12896:4;12934:2;12923:9;12919:18;12911:26;;12983:9;12977:4;12973:20;12969:1;12958:9;12954:17;12947:47;13011:131;13137:4;13011:131;:::i;:::-;13003:139;;12730:419;;;:::o;13155:::-;13321:4;13359:2;13348:9;13344:18;13336:26;;13408:9;13402:4;13398:20;13394:1;13383:9;13379:17;13372:47;13436:131;13562:4;13436:131;:::i;:::-;13428:139;;13155:419;;;:::o;13580:::-;13746:4;13784:2;13773:9;13769:18;13761:26;;13833:9;13827:4;13823:20;13819:1;13808:9;13804:17;13797:47;13861:131;13987:4;13861:131;:::i;:::-;13853:139;;13580:419;;;:::o;14005:::-;14171:4;14209:2;14198:9;14194:18;14186:26;;14258:9;14252:4;14248:20;14244:1;14233:9;14229:17;14222:47;14286:131;14412:4;14286:131;:::i;:::-;14278:139;;14005:419;;;:::o;14430:::-;14596:4;14634:2;14623:9;14619:18;14611:26;;14683:9;14677:4;14673:20;14669:1;14658:9;14654:17;14647:47;14711:131;14837:4;14711:131;:::i;:::-;14703:139;;14430:419;;;:::o;14855:::-;15021:4;15059:2;15048:9;15044:18;15036:26;;15108:9;15102:4;15098:20;15094:1;15083:9;15079:17;15072:47;15136:131;15262:4;15136:131;:::i;:::-;15128:139;;14855:419;;;:::o;15280:::-;15446:4;15484:2;15473:9;15469:18;15461:26;;15533:9;15527:4;15523:20;15519:1;15508:9;15504:17;15497:47;15561:131;15687:4;15561:131;:::i;:::-;15553:139;;15280:419;;;:::o;15705:::-;15871:4;15909:2;15898:9;15894:18;15886:26;;15958:9;15952:4;15948:20;15944:1;15933:9;15929:17;15922:47;15986:131;16112:4;15986:131;:::i;:::-;15978:139;;15705:419;;;:::o;16130:::-;16296:4;16334:2;16323:9;16319:18;16311:26;;16383:9;16377:4;16373:20;16369:1;16358:9;16354:17;16347:47;16411:131;16537:4;16411:131;:::i;:::-;16403:139;;16130:419;;;:::o;16555:222::-;16648:4;16686:2;16675:9;16671:18;16663:26;;16699:71;16767:1;16756:9;16752:17;16743:6;16699:71;:::i;:::-;16555:222;;;;:::o;16783:214::-;16872:4;16910:2;16899:9;16895:18;16887:26;;16923:67;16987:1;16976:9;16972:17;16963:6;16923:67;:::i;:::-;16783:214;;;;:::o;17084:99::-;17136:6;17170:5;17164:12;17154:22;;17084:99;;;:::o;17189:169::-;17273:11;17307:6;17302:3;17295:19;17347:4;17342:3;17338:14;17323:29;;17189:169;;;;:::o;17364:305::-;17404:3;17423:20;17441:1;17423:20;:::i;:::-;17418:25;;17457:20;17475:1;17457:20;:::i;:::-;17452:25;;17611:1;17543:66;17539:74;17536:1;17533:81;17530:107;;;17617:18;;:::i;:::-;17530:107;17661:1;17658;17654:9;17647:16;;17364:305;;;;:::o;17675:191::-;17715:4;17735:20;17753:1;17735:20;:::i;:::-;17730:25;;17769:20;17787:1;17769:20;:::i;:::-;17764:25;;17808:1;17805;17802:8;17799:34;;;17813:18;;:::i;:::-;17799:34;17858:1;17855;17851:9;17843:17;;17675:191;;;;:::o;17872:96::-;17909:7;17938:24;17956:5;17938:24;:::i;:::-;17927:35;;17872:96;;;:::o;17974:90::-;18008:7;18051:5;18044:13;18037:21;18026:32;;17974:90;;;:::o;18070:126::-;18107:7;18147:42;18140:5;18136:54;18125:65;;18070:126;;;:::o;18202:77::-;18239:7;18268:5;18257:16;;18202:77;;;:::o;18285:86::-;18320:7;18360:4;18353:5;18349:16;18338:27;;18285:86;;;:::o;18377:307::-;18445:1;18455:113;18469:6;18466:1;18463:13;18455:113;;;18554:1;18549:3;18545:11;18539:18;18535:1;18530:3;18526:11;18519:39;18491:2;18488:1;18484:10;18479:15;;18455:113;;;18586:6;18583:1;18580:13;18577:101;;;18666:1;18657:6;18652:3;18648:16;18641:27;18577:101;18426:258;18377:307;;;:::o;18690:320::-;18734:6;18771:1;18765:4;18761:12;18751:22;;18818:1;18812:4;18808:12;18839:18;18829:81;;18895:4;18887:6;18883:17;18873:27;;18829:81;18957:2;18949:6;18946:14;18926:18;18923:38;18920:84;;;18976:18;;:::i;:::-;18920:84;18741:269;18690:320;;;:::o;19016:180::-;19064:77;19061:1;19054:88;19161:4;19158:1;19151:15;19185:4;19182:1;19175:15;19202:180;19250:77;19247:1;19240:88;19347:4;19344:1;19337:15;19371:4;19368:1;19361:15;19511:117;19620:1;19617;19610:12;19634:102;19675:6;19726:2;19722:7;19717:2;19710:5;19706:14;19702:28;19692:38;;19634:102;;;:::o;19742:222::-;19882:34;19878:1;19870:6;19866:14;19859:58;19951:5;19946:2;19938:6;19934:15;19927:30;19742:222;:::o;19970:221::-;20110:34;20106:1;20098:6;20094:14;20087:58;20179:4;20174:2;20166:6;20162:15;20155:29;19970:221;:::o;20197:225::-;20337:34;20333:1;20325:6;20321:14;20314:58;20406:8;20401:2;20393:6;20389:15;20382:33;20197:225;:::o;20428:221::-;20568:34;20564:1;20556:6;20552:14;20545:58;20637:4;20632:2;20624:6;20620:15;20613:29;20428:221;:::o;20655:225::-;20795:34;20791:1;20783:6;20779:14;20772:58;20864:8;20859:2;20851:6;20847:15;20840:33;20655:225;:::o;20886:156::-;21026:8;21022:1;21014:6;21010:14;21003:32;20886:156;:::o;21048:227::-;21188:34;21184:1;21176:6;21172:14;21165:58;21257:10;21252:2;21244:6;21240:15;21233:35;21048:227;:::o;21281:182::-;21421:34;21417:1;21409:6;21405:14;21398:58;21281:182;:::o;21469:220::-;21609:34;21605:1;21597:6;21593:14;21586:58;21678:3;21673:2;21665:6;21661:15;21654:28;21469:220;:::o;21695:172::-;21835:24;21831:1;21823:6;21819:14;21812:48;21695:172;:::o;21873:224::-;22013:34;22009:1;22001:6;21997:14;21990:58;22082:7;22077:2;22069:6;22065:15;22058:32;21873:224;:::o;22103:223::-;22243:34;22239:1;22231:6;22227:14;22220:58;22312:6;22307:2;22299:6;22295:15;22288:31;22103:223;:::o;22332:224::-;22472:34;22468:1;22460:6;22456:14;22449:58;22541:7;22536:2;22528:6;22524:15;22517:32;22332:224;:::o;22562:161::-;22702:13;22698:1;22690:6;22686:14;22679:37;22562:161;:::o;22729:122::-;22802:24;22820:5;22802:24;:::i;:::-;22795:5;22792:35;22782:63;;22841:1;22838;22831:12;22782:63;22729:122;:::o;22857:116::-;22927:21;22942:5;22927:21;:::i;:::-;22920:5;22917:32;22907:60;;22963:1;22960;22953:12;22907:60;22857:116;:::o;22979:122::-;23052:24;23070:5;23052:24;:::i;:::-;23045:5;23042:35;23032:63;;23091:1;23088;23081:12;23032:63;22979:122;:::o

Swarm Source

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