ETH Price: $2,457.43 (+0.78%)

Token

DKKB token (DKKB)
 

Overview

Max Total Supply

3,814,699,132.730147086187714887 DKKB

Holders

35

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
144,111,968.823326245641919694 DKKB

Value
$0.00
0x2946cbda43ebde355445e8167242352003888c64
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:
DKKB

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-15
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.9;

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

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

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

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

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "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 {
        _setOwner(address(0));
    }

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

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

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


contract DKKB is ERC20("DKKB token", "DKKB"), Ownable {
    mapping(address => bool) public managers;

    function addManager(address _address) external onlyOwner {
        managers[_address] = true;
    }

    function removeManager(address _address) external onlyOwner {
        managers[_address] = false;
    }

    function mint(address _to, uint _amount) external {
        require(managers[msg.sender] == true, "This address is not allowed to interact with the contract");
        _mint(_to, _amount);
    }

    function burn(address _from, uint _amount) external {
        require(managers[msg.sender] == true, "This address is not allowed to interact with the contract");
        _burn(_from, _amount);
    }
}

Contract Security Audit

Contract ABI

[{"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":"_address","type":"address"}],"name":"addManager","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":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","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":[{"internalType":"address","name":"","type":"address"}],"name":"managers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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"}]

60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f444b4b4220746f6b656e000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f444b4b4200000000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620001a6565b508060049080519060200190620000af929190620001a6565b505050620000d2620000c6620000d860201b60201c565b620000e060201b60201c565b620002ba565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001b49062000285565b90600052602060002090601f016020900481019282620001d8576000855562000224565b82601f10620001f357805160ff191683800117855562000224565b8280016001018555821562000224579182015b828111156200022357825182559160200191906001019062000206565b5b50905062000233919062000237565b5090565b5b808211156200025257600081600090555060010162000238565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200029e57607f821691505b602082108103620002b457620002b362000256565b5b50919050565b61213380620002ca6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063a9059cbb11610071578063a9059cbb1461030a578063ac18de431461033a578063dd62ed3e14610356578063f2fde38b14610386578063fdff9b4d146103a257610121565b8063715018a6146102785780638da5cb5b1461028257806395d89b41146102a05780639dc29fac146102be578063a457c2d7146102da57610121565b80632d06177a116100f45780632d06177a146101c2578063313ce567146101de57806339509351146101fc57806340c10f191461022c57806370a082311461024857610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103d2565b60405161013b919061164a565b60405180910390f35b61015e60048036038101906101599190611705565b610464565b60405161016b9190611760565b60405180910390f35b61017c610482565b604051610189919061178a565b60405180910390f35b6101ac60048036038101906101a791906117a5565b61048c565b6040516101b99190611760565b60405180910390f35b6101dc60048036038101906101d791906117f8565b610584565b005b6101e661065b565b6040516101f39190611841565b60405180910390f35b61021660048036038101906102119190611705565b610664565b6040516102239190611760565b60405180910390f35b61024660048036038101906102419190611705565b610710565b005b610262600480360381019061025d91906117f8565b6107b1565b60405161026f919061178a565b60405180910390f35b6102806107f9565b005b61028a610881565b604051610297919061186b565b60405180910390f35b6102a86108ab565b6040516102b5919061164a565b60405180910390f35b6102d860048036038101906102d39190611705565b61093d565b005b6102f460048036038101906102ef9190611705565b6109de565b6040516103019190611760565b60405180910390f35b610324600480360381019061031f9190611705565b610ac9565b6040516103319190611760565b60405180910390f35b610354600480360381019061034f91906117f8565b610ae7565b005b610370600480360381019061036b9190611886565b610bbe565b60405161037d919061178a565b60405180910390f35b6103a0600480360381019061039b91906117f8565b610c45565b005b6103bc60048036038101906103b791906117f8565b610d3c565b6040516103c99190611760565b60405180910390f35b6060600380546103e1906118f5565b80601f016020809104026020016040519081016040528092919081815260200182805461040d906118f5565b801561045a5780601f1061042f5761010080835404028352916020019161045a565b820191906000526020600020905b81548152906001019060200180831161043d57829003601f168201915b5050505050905090565b6000610478610471610d5c565b8484610d64565b6001905092915050565b6000600254905090565b6000610499848484610f2d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104e4610d5c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b90611998565b60405180910390fd5b61057885610570610d5c565b858403610d64565b60019150509392505050565b61058c610d5c565b73ffffffffffffffffffffffffffffffffffffffff166105aa610881565b73ffffffffffffffffffffffffffffffffffffffff1614610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f790611a04565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b6000610706610671610d5c565b84846001600061067f610d5c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107019190611a53565b610d64565b6001905092915050565b60011515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079a90611b1b565b60405180910390fd5b6107ad82826111ac565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610801610d5c565b73ffffffffffffffffffffffffffffffffffffffff1661081f610881565b73ffffffffffffffffffffffffffffffffffffffff1614610875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086c90611a04565b60405180910390fd5b61087f600061130b565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546108ba906118f5565b80601f01602080910402602001604051908101604052809291908181526020018280546108e6906118f5565b80156109335780601f1061090857610100808354040283529160200191610933565b820191906000526020600020905b81548152906001019060200180831161091657829003601f168201915b5050505050905090565b60011515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146109d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c790611b1b565b60405180910390fd5b6109da82826113d1565b5050565b600080600160006109ed610d5c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa190611bad565b60405180910390fd5b610abe610ab5610d5c565b85858403610d64565b600191505092915050565b6000610add610ad6610d5c565b8484610f2d565b6001905092915050565b610aef610d5c565b73ffffffffffffffffffffffffffffffffffffffff16610b0d610881565b73ffffffffffffffffffffffffffffffffffffffff1614610b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5a90611a04565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c4d610d5c565b73ffffffffffffffffffffffffffffffffffffffff16610c6b610881565b73ffffffffffffffffffffffffffffffffffffffff1614610cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb890611a04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2790611c3f565b60405180910390fd5b610d398161130b565b50565b60066020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dca90611cd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990611d63565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f20919061178a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9390611df5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290611e87565b60405180910390fd5b6110168383836115a7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109390611f19565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461112f9190611a53565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611193919061178a565b60405180910390a36111a68484846115ac565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121290611f85565b60405180910390fd5b611227600083836115a7565b80600260008282546112399190611a53565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461128e9190611a53565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112f3919061178a565b60405180910390a3611307600083836115ac565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143790612017565b60405180910390fd5b61144c826000836115a7565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c9906120a9565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461152991906120c9565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161158e919061178a565b60405180910390a36115a2836000846115ac565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115eb5780820151818401526020810190506115d0565b838111156115fa576000848401525b50505050565b6000601f19601f8301169050919050565b600061161c826115b1565b61162681856115bc565b93506116368185602086016115cd565b61163f81611600565b840191505092915050565b600060208201905081810360008301526116648184611611565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061169c82611671565b9050919050565b6116ac81611691565b81146116b757600080fd5b50565b6000813590506116c9816116a3565b92915050565b6000819050919050565b6116e2816116cf565b81146116ed57600080fd5b50565b6000813590506116ff816116d9565b92915050565b6000806040838503121561171c5761171b61166c565b5b600061172a858286016116ba565b925050602061173b858286016116f0565b9150509250929050565b60008115159050919050565b61175a81611745565b82525050565b60006020820190506117756000830184611751565b92915050565b611784816116cf565b82525050565b600060208201905061179f600083018461177b565b92915050565b6000806000606084860312156117be576117bd61166c565b5b60006117cc868287016116ba565b93505060206117dd868287016116ba565b92505060406117ee868287016116f0565b9150509250925092565b60006020828403121561180e5761180d61166c565b5b600061181c848285016116ba565b91505092915050565b600060ff82169050919050565b61183b81611825565b82525050565b60006020820190506118566000830184611832565b92915050565b61186581611691565b82525050565b6000602082019050611880600083018461185c565b92915050565b6000806040838503121561189d5761189c61166c565b5b60006118ab858286016116ba565b92505060206118bc858286016116ba565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061190d57607f821691505b6020821081036119205761191f6118c6565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006119826028836115bc565b915061198d82611926565b604082019050919050565b600060208201905081810360008301526119b181611975565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006119ee6020836115bc565b91506119f9826119b8565b602082019050919050565b60006020820190508181036000830152611a1d816119e1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a5e826116cf565b9150611a69836116cf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611a9e57611a9d611a24565b5b828201905092915050565b7f546869732061646472657373206973206e6f7420616c6c6f77656420746f206960008201527f6e74657261637420776974682074686520636f6e747261637400000000000000602082015250565b6000611b056039836115bc565b9150611b1082611aa9565b604082019050919050565b60006020820190508181036000830152611b3481611af8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611b976025836115bc565b9150611ba282611b3b565b604082019050919050565b60006020820190508181036000830152611bc681611b8a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611c296026836115bc565b9150611c3482611bcd565b604082019050919050565b60006020820190508181036000830152611c5881611c1c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611cbb6024836115bc565b9150611cc682611c5f565b604082019050919050565b60006020820190508181036000830152611cea81611cae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d4d6022836115bc565b9150611d5882611cf1565b604082019050919050565b60006020820190508181036000830152611d7c81611d40565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611ddf6025836115bc565b9150611dea82611d83565b604082019050919050565b60006020820190508181036000830152611e0e81611dd2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611e716023836115bc565b9150611e7c82611e15565b604082019050919050565b60006020820190508181036000830152611ea081611e64565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611f036026836115bc565b9150611f0e82611ea7565b604082019050919050565b60006020820190508181036000830152611f3281611ef6565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611f6f601f836115bc565b9150611f7a82611f39565b602082019050919050565b60006020820190508181036000830152611f9e81611f62565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006120016021836115bc565b915061200c82611fa5565b604082019050919050565b6000602082019050818103600083015261203081611ff4565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006120936022836115bc565b915061209e82612037565b604082019050919050565b600060208201905081810360008301526120c281612086565b9050919050565b60006120d4826116cf565b91506120df836116cf565b9250828210156120f2576120f1611a24565b5b82820390509291505056fea26469706673582212201a629b29cca1094b52359006975955185ebf333796390b6cb404453ebe943b5a64736f6c634300080d0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063a9059cbb11610071578063a9059cbb1461030a578063ac18de431461033a578063dd62ed3e14610356578063f2fde38b14610386578063fdff9b4d146103a257610121565b8063715018a6146102785780638da5cb5b1461028257806395d89b41146102a05780639dc29fac146102be578063a457c2d7146102da57610121565b80632d06177a116100f45780632d06177a146101c2578063313ce567146101de57806339509351146101fc57806340c10f191461022c57806370a082311461024857610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103d2565b60405161013b919061164a565b60405180910390f35b61015e60048036038101906101599190611705565b610464565b60405161016b9190611760565b60405180910390f35b61017c610482565b604051610189919061178a565b60405180910390f35b6101ac60048036038101906101a791906117a5565b61048c565b6040516101b99190611760565b60405180910390f35b6101dc60048036038101906101d791906117f8565b610584565b005b6101e661065b565b6040516101f39190611841565b60405180910390f35b61021660048036038101906102119190611705565b610664565b6040516102239190611760565b60405180910390f35b61024660048036038101906102419190611705565b610710565b005b610262600480360381019061025d91906117f8565b6107b1565b60405161026f919061178a565b60405180910390f35b6102806107f9565b005b61028a610881565b604051610297919061186b565b60405180910390f35b6102a86108ab565b6040516102b5919061164a565b60405180910390f35b6102d860048036038101906102d39190611705565b61093d565b005b6102f460048036038101906102ef9190611705565b6109de565b6040516103019190611760565b60405180910390f35b610324600480360381019061031f9190611705565b610ac9565b6040516103319190611760565b60405180910390f35b610354600480360381019061034f91906117f8565b610ae7565b005b610370600480360381019061036b9190611886565b610bbe565b60405161037d919061178a565b60405180910390f35b6103a0600480360381019061039b91906117f8565b610c45565b005b6103bc60048036038101906103b791906117f8565b610d3c565b6040516103c99190611760565b60405180910390f35b6060600380546103e1906118f5565b80601f016020809104026020016040519081016040528092919081815260200182805461040d906118f5565b801561045a5780601f1061042f5761010080835404028352916020019161045a565b820191906000526020600020905b81548152906001019060200180831161043d57829003601f168201915b5050505050905090565b6000610478610471610d5c565b8484610d64565b6001905092915050565b6000600254905090565b6000610499848484610f2d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104e4610d5c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b90611998565b60405180910390fd5b61057885610570610d5c565b858403610d64565b60019150509392505050565b61058c610d5c565b73ffffffffffffffffffffffffffffffffffffffff166105aa610881565b73ffffffffffffffffffffffffffffffffffffffff1614610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f790611a04565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b6000610706610671610d5c565b84846001600061067f610d5c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107019190611a53565b610d64565b6001905092915050565b60011515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079a90611b1b565b60405180910390fd5b6107ad82826111ac565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610801610d5c565b73ffffffffffffffffffffffffffffffffffffffff1661081f610881565b73ffffffffffffffffffffffffffffffffffffffff1614610875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086c90611a04565b60405180910390fd5b61087f600061130b565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546108ba906118f5565b80601f01602080910402602001604051908101604052809291908181526020018280546108e6906118f5565b80156109335780601f1061090857610100808354040283529160200191610933565b820191906000526020600020905b81548152906001019060200180831161091657829003601f168201915b5050505050905090565b60011515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146109d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c790611b1b565b60405180910390fd5b6109da82826113d1565b5050565b600080600160006109ed610d5c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa190611bad565b60405180910390fd5b610abe610ab5610d5c565b85858403610d64565b600191505092915050565b6000610add610ad6610d5c565b8484610f2d565b6001905092915050565b610aef610d5c565b73ffffffffffffffffffffffffffffffffffffffff16610b0d610881565b73ffffffffffffffffffffffffffffffffffffffff1614610b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5a90611a04565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c4d610d5c565b73ffffffffffffffffffffffffffffffffffffffff16610c6b610881565b73ffffffffffffffffffffffffffffffffffffffff1614610cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb890611a04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2790611c3f565b60405180910390fd5b610d398161130b565b50565b60066020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dca90611cd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990611d63565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f20919061178a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9390611df5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290611e87565b60405180910390fd5b6110168383836115a7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109390611f19565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461112f9190611a53565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611193919061178a565b60405180910390a36111a68484846115ac565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121290611f85565b60405180910390fd5b611227600083836115a7565b80600260008282546112399190611a53565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461128e9190611a53565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112f3919061178a565b60405180910390a3611307600083836115ac565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143790612017565b60405180910390fd5b61144c826000836115a7565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c9906120a9565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461152991906120c9565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161158e919061178a565b60405180910390a36115a2836000846115ac565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115eb5780820151818401526020810190506115d0565b838111156115fa576000848401525b50505050565b6000601f19601f8301169050919050565b600061161c826115b1565b61162681856115bc565b93506116368185602086016115cd565b61163f81611600565b840191505092915050565b600060208201905081810360008301526116648184611611565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061169c82611671565b9050919050565b6116ac81611691565b81146116b757600080fd5b50565b6000813590506116c9816116a3565b92915050565b6000819050919050565b6116e2816116cf565b81146116ed57600080fd5b50565b6000813590506116ff816116d9565b92915050565b6000806040838503121561171c5761171b61166c565b5b600061172a858286016116ba565b925050602061173b858286016116f0565b9150509250929050565b60008115159050919050565b61175a81611745565b82525050565b60006020820190506117756000830184611751565b92915050565b611784816116cf565b82525050565b600060208201905061179f600083018461177b565b92915050565b6000806000606084860312156117be576117bd61166c565b5b60006117cc868287016116ba565b93505060206117dd868287016116ba565b92505060406117ee868287016116f0565b9150509250925092565b60006020828403121561180e5761180d61166c565b5b600061181c848285016116ba565b91505092915050565b600060ff82169050919050565b61183b81611825565b82525050565b60006020820190506118566000830184611832565b92915050565b61186581611691565b82525050565b6000602082019050611880600083018461185c565b92915050565b6000806040838503121561189d5761189c61166c565b5b60006118ab858286016116ba565b92505060206118bc858286016116ba565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061190d57607f821691505b6020821081036119205761191f6118c6565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006119826028836115bc565b915061198d82611926565b604082019050919050565b600060208201905081810360008301526119b181611975565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006119ee6020836115bc565b91506119f9826119b8565b602082019050919050565b60006020820190508181036000830152611a1d816119e1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a5e826116cf565b9150611a69836116cf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611a9e57611a9d611a24565b5b828201905092915050565b7f546869732061646472657373206973206e6f7420616c6c6f77656420746f206960008201527f6e74657261637420776974682074686520636f6e747261637400000000000000602082015250565b6000611b056039836115bc565b9150611b1082611aa9565b604082019050919050565b60006020820190508181036000830152611b3481611af8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611b976025836115bc565b9150611ba282611b3b565b604082019050919050565b60006020820190508181036000830152611bc681611b8a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611c296026836115bc565b9150611c3482611bcd565b604082019050919050565b60006020820190508181036000830152611c5881611c1c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611cbb6024836115bc565b9150611cc682611c5f565b604082019050919050565b60006020820190508181036000830152611cea81611cae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d4d6022836115bc565b9150611d5882611cf1565b604082019050919050565b60006020820190508181036000830152611d7c81611d40565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611ddf6025836115bc565b9150611dea82611d83565b604082019050919050565b60006020820190508181036000830152611e0e81611dd2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611e716023836115bc565b9150611e7c82611e15565b604082019050919050565b60006020820190508181036000830152611ea081611e64565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611f036026836115bc565b9150611f0e82611ea7565b604082019050919050565b60006020820190508181036000830152611f3281611ef6565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611f6f601f836115bc565b9150611f7a82611f39565b602082019050919050565b60006020820190508181036000830152611f9e81611f62565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006120016021836115bc565b915061200c82611fa5565b604082019050919050565b6000602082019050818103600083015261203081611ff4565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006120936022836115bc565b915061209e82612037565b604082019050919050565b600060208201905081810360008301526120c281612086565b9050919050565b60006120d4826116cf565b91506120df836116cf565b9250828210156120f2576120f1611a24565b5b82820390509291505056fea26469706673582212201a629b29cca1094b52359006975955185ebf333796390b6cb404453ebe943b5a64736f6c634300080d0033

Deployed Bytecode Sourcemap

18240:741:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8277:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10444:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9397:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11095:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18350:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9239:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11996:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18572:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9568:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5670:94;;;:::i;:::-;;5019:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8496:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18777:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12714:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9908:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18459:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10146:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5919:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18301:40;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8277:100;8331:13;8364:5;8357:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8277:100;:::o;10444:169::-;10527:4;10544:39;10553:12;:10;:12::i;:::-;10567:7;10576:6;10544:8;:39::i;:::-;10601:4;10594:11;;10444:169;;;;:::o;9397:108::-;9458:7;9485:12;;9478:19;;9397:108;:::o;11095:492::-;11235:4;11252:36;11262:6;11270:9;11281:6;11252:9;:36::i;:::-;11301:24;11328:11;:19;11340:6;11328:19;;;;;;;;;;;;;;;:33;11348:12;:10;:12::i;:::-;11328:33;;;;;;;;;;;;;;;;11301:60;;11400:6;11380:16;:26;;11372:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11487:57;11496:6;11504:12;:10;:12::i;:::-;11537:6;11518:16;:25;11487:8;:57::i;:::-;11575:4;11568:11;;;11095:492;;;;;:::o;18350:101::-;5250:12;:10;:12::i;:::-;5239:23;;:7;:5;:7::i;:::-;:23;;;5231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18439:4:::1;18418:8;:18;18427:8;18418:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;18350:101:::0;:::o;9239:93::-;9297:5;9322:2;9315:9;;9239:93;:::o;11996:215::-;12084:4;12101:80;12110:12;:10;:12::i;:::-;12124:7;12170:10;12133:11;:25;12145:12;:10;:12::i;:::-;12133:25;;;;;;;;;;;;;;;:34;12159:7;12133:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12101:8;:80::i;:::-;12199:4;12192:11;;11996:215;;;;:::o;18572:197::-;18665:4;18641:28;;:8;:20;18650:10;18641:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;18633:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;18742:19;18748:3;18753:7;18742:5;:19::i;:::-;18572:197;;:::o;9568:127::-;9642:7;9669:9;:18;9679:7;9669:18;;;;;;;;;;;;;;;;9662:25;;9568:127;;;:::o;5670:94::-;5250:12;:10;:12::i;:::-;5239:23;;:7;:5;:7::i;:::-;:23;;;5231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5735:21:::1;5753:1;5735:9;:21::i;:::-;5670:94::o:0;5019:87::-;5065:7;5092:6;;;;;;;;;;;5085:13;;5019:87;:::o;8496:104::-;8552:13;8585:7;8578:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8496:104;:::o;18777:201::-;18872:4;18848:28;;:8;:20;18857:10;18848:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;18840:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;18949:21;18955:5;18962:7;18949:5;:21::i;:::-;18777:201;;:::o;12714:413::-;12807:4;12824:24;12851:11;:25;12863:12;:10;:12::i;:::-;12851:25;;;;;;;;;;;;;;;:34;12877:7;12851:34;;;;;;;;;;;;;;;;12824:61;;12924:15;12904:16;:35;;12896:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13017:67;13026:12;:10;:12::i;:::-;13040:7;13068:15;13049:16;:34;13017:8;:67::i;:::-;13115:4;13108:11;;;12714:413;;;;:::o;9908:175::-;9994:4;10011:42;10021:12;:10;:12::i;:::-;10035:9;10046:6;10011:9;:42::i;:::-;10071:4;10064:11;;9908:175;;;;:::o;18459:105::-;5250:12;:10;:12::i;:::-;5239:23;;:7;:5;:7::i;:::-;:23;;;5231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18551:5:::1;18530:8;:18;18539:8;18530:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;18459:105:::0;:::o;10146:151::-;10235:7;10262:11;:18;10274:5;10262:18;;;;;;;;;;;;;;;:27;10281:7;10262:27;;;;;;;;;;;;;;;;10255:34;;10146:151;;;;:::o;5919:192::-;5250:12;:10;:12::i;:::-;5239:23;;:7;:5;:7::i;:::-;:23;;;5231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6028:1:::1;6008:22;;:8;:22;;::::0;6000:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6084:19;6094:8;6084:9;:19::i;:::-;5919:192:::0;:::o;18301:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;602:98::-;655:7;682:10;675:17;;602:98;:::o;16398:380::-;16551:1;16534:19;;:5;:19;;;16526:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16632:1;16613:21;;:7;:21;;;16605:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16716:6;16686:11;:18;16698:5;16686:18;;;;;;;;;;;;;;;:27;16705:7;16686:27;;;;;;;;;;;;;;;:36;;;;16754:7;16738:32;;16747:5;16738:32;;;16763:6;16738:32;;;;;;:::i;:::-;;;;;;;;16398:380;;;:::o;13617:733::-;13775:1;13757:20;;:6;:20;;;13749:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13859:1;13838:23;;:9;:23;;;13830:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13914:47;13935:6;13943:9;13954:6;13914:20;:47::i;:::-;13974:21;13998:9;:17;14008:6;13998:17;;;;;;;;;;;;;;;;13974:41;;14051:6;14034:13;:23;;14026:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14172:6;14156:13;:22;14136:9;:17;14146:6;14136:17;;;;;;;;;;;;;;;:42;;;;14224:6;14200:9;:20;14210:9;14200:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;14265:9;14248:35;;14257:6;14248:35;;;14276:6;14248:35;;;;;;:::i;:::-;;;;;;;;14296:46;14316:6;14324:9;14335:6;14296:19;:46::i;:::-;13738:612;13617:733;;;:::o;14637:399::-;14740:1;14721:21;;:7;:21;;;14713:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14791:49;14820:1;14824:7;14833:6;14791:20;:49::i;:::-;14869:6;14853:12;;:22;;;;;;;:::i;:::-;;;;;;;;14908:6;14886:9;:18;14896:7;14886:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;14951:7;14930:37;;14947:1;14930:37;;;14960:6;14930:37;;;;;;:::i;:::-;;;;;;;;14980:48;15008:1;15012:7;15021:6;14980:19;:48::i;:::-;14637:399;;:::o;6119:173::-;6175:16;6194:6;;;;;;;;;;;6175:25;;6220:8;6211:6;;:17;;;;;;;;;;;;;;;;;;6275:8;6244:40;;6265:8;6244:40;;;;;;;;;;;;6164:128;6119:173;:::o;15369:591::-;15472:1;15453:21;;:7;:21;;;15445:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15525:49;15546:7;15563:1;15567:6;15525:20;:49::i;:::-;15587:22;15612:9;:18;15622:7;15612:18;;;;;;;;;;;;;;;;15587:43;;15667:6;15649:14;:24;;15641:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15786:6;15769:14;:23;15748:9;:18;15758:7;15748:18;;;;;;;;;;;;;;;:44;;;;15830:6;15814:12;;:22;;;;;;;:::i;:::-;;;;;;;;15880:1;15854:37;;15863:7;15854:37;;;15884:6;15854:37;;;;;;:::i;:::-;;;;;;;;15904:48;15924:7;15941:1;15945:6;15904:19;:48::i;:::-;15434:526;15369:591;;:::o;17378:125::-;;;;:::o;18107:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:329::-;4530:6;4579:2;4567:9;4558:7;4554:23;4550:32;4547:119;;;4585:79;;:::i;:::-;4547:119;4705:1;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4676:117;4471:329;;;;:::o;4806:86::-;4841:7;4881:4;4874:5;4870:16;4859:27;;4806:86;;;:::o;4898:112::-;4981:22;4997:5;4981:22;:::i;:::-;4976:3;4969:35;4898:112;;:::o;5016:214::-;5105:4;5143:2;5132:9;5128:18;5120:26;;5156:67;5220:1;5209:9;5205:17;5196:6;5156:67;:::i;:::-;5016:214;;;;:::o;5236:118::-;5323:24;5341:5;5323:24;:::i;:::-;5318:3;5311:37;5236:118;;:::o;5360:222::-;5453:4;5491:2;5480:9;5476:18;5468:26;;5504:71;5572:1;5561:9;5557:17;5548:6;5504:71;:::i;:::-;5360:222;;;;:::o;5588:474::-;5656:6;5664;5713:2;5701:9;5692:7;5688:23;5684:32;5681:119;;;5719:79;;:::i;:::-;5681:119;5839:1;5864:53;5909:7;5900:6;5889:9;5885:22;5864:53;:::i;:::-;5854:63;;5810:117;5966:2;5992:53;6037:7;6028:6;6017:9;6013:22;5992:53;:::i;:::-;5982:63;;5937:118;5588:474;;;;;:::o;6068:180::-;6116:77;6113:1;6106:88;6213:4;6210:1;6203:15;6237:4;6234:1;6227:15;6254:320;6298:6;6335:1;6329:4;6325:12;6315:22;;6382:1;6376:4;6372:12;6403:18;6393:81;;6459:4;6451:6;6447:17;6437:27;;6393:81;6521:2;6513:6;6510:14;6490:18;6487:38;6484:84;;6540:18;;:::i;:::-;6484:84;6305:269;6254:320;;;:::o;6580:227::-;6720:34;6716:1;6708:6;6704:14;6697:58;6789:10;6784:2;6776:6;6772:15;6765:35;6580:227;:::o;6813:366::-;6955:3;6976:67;7040:2;7035:3;6976:67;:::i;:::-;6969:74;;7052:93;7141:3;7052:93;:::i;:::-;7170:2;7165:3;7161:12;7154:19;;6813:366;;;:::o;7185:419::-;7351:4;7389:2;7378:9;7374:18;7366:26;;7438:9;7432:4;7428:20;7424:1;7413:9;7409:17;7402:47;7466:131;7592:4;7466:131;:::i;:::-;7458:139;;7185:419;;;:::o;7610:182::-;7750:34;7746:1;7738:6;7734:14;7727:58;7610:182;:::o;7798:366::-;7940:3;7961:67;8025:2;8020:3;7961:67;:::i;:::-;7954:74;;8037:93;8126:3;8037:93;:::i;:::-;8155:2;8150:3;8146:12;8139:19;;7798:366;;;:::o;8170:419::-;8336:4;8374:2;8363:9;8359:18;8351:26;;8423:9;8417:4;8413:20;8409:1;8398:9;8394:17;8387:47;8451:131;8577:4;8451:131;:::i;:::-;8443:139;;8170:419;;;:::o;8595:180::-;8643:77;8640:1;8633:88;8740:4;8737:1;8730:15;8764:4;8761:1;8754:15;8781:305;8821:3;8840:20;8858:1;8840:20;:::i;:::-;8835:25;;8874:20;8892:1;8874:20;:::i;:::-;8869:25;;9028:1;8960:66;8956:74;8953:1;8950:81;8947:107;;;9034:18;;:::i;:::-;8947:107;9078:1;9075;9071:9;9064:16;;8781:305;;;;:::o;9092:244::-;9232:34;9228:1;9220:6;9216:14;9209:58;9301:27;9296:2;9288:6;9284:15;9277:52;9092:244;:::o;9342:366::-;9484:3;9505:67;9569:2;9564:3;9505:67;:::i;:::-;9498:74;;9581:93;9670:3;9581:93;:::i;:::-;9699:2;9694:3;9690:12;9683:19;;9342:366;;;:::o;9714:419::-;9880:4;9918:2;9907:9;9903:18;9895:26;;9967:9;9961:4;9957:20;9953:1;9942:9;9938:17;9931:47;9995:131;10121:4;9995:131;:::i;:::-;9987:139;;9714:419;;;:::o;10139:224::-;10279:34;10275:1;10267:6;10263:14;10256:58;10348:7;10343:2;10335:6;10331:15;10324:32;10139:224;:::o;10369:366::-;10511:3;10532:67;10596:2;10591:3;10532:67;:::i;:::-;10525:74;;10608:93;10697:3;10608:93;:::i;:::-;10726:2;10721:3;10717:12;10710:19;;10369:366;;;:::o;10741:419::-;10907:4;10945:2;10934:9;10930:18;10922:26;;10994:9;10988:4;10984:20;10980:1;10969:9;10965:17;10958:47;11022:131;11148:4;11022:131;:::i;:::-;11014:139;;10741:419;;;:::o;11166:225::-;11306:34;11302:1;11294:6;11290:14;11283:58;11375:8;11370:2;11362:6;11358:15;11351:33;11166:225;:::o;11397:366::-;11539:3;11560:67;11624:2;11619:3;11560:67;:::i;:::-;11553:74;;11636:93;11725:3;11636:93;:::i;:::-;11754:2;11749:3;11745:12;11738:19;;11397:366;;;:::o;11769:419::-;11935:4;11973:2;11962:9;11958:18;11950:26;;12022:9;12016:4;12012:20;12008:1;11997:9;11993:17;11986:47;12050:131;12176:4;12050:131;:::i;:::-;12042:139;;11769:419;;;:::o;12194:223::-;12334:34;12330:1;12322:6;12318:14;12311:58;12403:6;12398:2;12390:6;12386:15;12379:31;12194:223;:::o;12423:366::-;12565:3;12586:67;12650:2;12645:3;12586:67;:::i;:::-;12579:74;;12662:93;12751:3;12662:93;:::i;:::-;12780:2;12775:3;12771:12;12764:19;;12423:366;;;:::o;12795:419::-;12961:4;12999:2;12988:9;12984:18;12976:26;;13048:9;13042:4;13038:20;13034:1;13023:9;13019:17;13012:47;13076:131;13202:4;13076:131;:::i;:::-;13068:139;;12795:419;;;:::o;13220:221::-;13360:34;13356:1;13348:6;13344:14;13337:58;13429:4;13424:2;13416:6;13412:15;13405:29;13220:221;:::o;13447:366::-;13589:3;13610:67;13674:2;13669:3;13610:67;:::i;:::-;13603:74;;13686:93;13775:3;13686:93;:::i;:::-;13804:2;13799:3;13795:12;13788:19;;13447:366;;;:::o;13819:419::-;13985:4;14023:2;14012:9;14008:18;14000:26;;14072:9;14066:4;14062:20;14058:1;14047:9;14043:17;14036:47;14100:131;14226:4;14100:131;:::i;:::-;14092:139;;13819:419;;;:::o;14244:224::-;14384:34;14380:1;14372:6;14368:14;14361:58;14453:7;14448:2;14440:6;14436:15;14429:32;14244:224;:::o;14474:366::-;14616:3;14637:67;14701:2;14696:3;14637:67;:::i;:::-;14630:74;;14713:93;14802:3;14713:93;:::i;:::-;14831:2;14826:3;14822:12;14815:19;;14474:366;;;:::o;14846:419::-;15012:4;15050:2;15039:9;15035:18;15027:26;;15099:9;15093:4;15089:20;15085:1;15074:9;15070:17;15063:47;15127:131;15253:4;15127:131;:::i;:::-;15119:139;;14846:419;;;:::o;15271:222::-;15411:34;15407:1;15399:6;15395:14;15388:58;15480:5;15475:2;15467:6;15463:15;15456:30;15271:222;:::o;15499:366::-;15641:3;15662:67;15726:2;15721:3;15662:67;:::i;:::-;15655:74;;15738:93;15827:3;15738:93;:::i;:::-;15856:2;15851:3;15847:12;15840:19;;15499:366;;;:::o;15871:419::-;16037:4;16075:2;16064:9;16060:18;16052:26;;16124:9;16118:4;16114:20;16110:1;16099:9;16095:17;16088:47;16152:131;16278:4;16152:131;:::i;:::-;16144:139;;15871:419;;;:::o;16296:225::-;16436:34;16432:1;16424:6;16420:14;16413:58;16505:8;16500:2;16492:6;16488:15;16481:33;16296:225;:::o;16527:366::-;16669:3;16690:67;16754:2;16749:3;16690:67;:::i;:::-;16683:74;;16766:93;16855:3;16766:93;:::i;:::-;16884:2;16879:3;16875:12;16868:19;;16527:366;;;:::o;16899:419::-;17065:4;17103:2;17092:9;17088:18;17080:26;;17152:9;17146:4;17142:20;17138:1;17127:9;17123:17;17116:47;17180:131;17306:4;17180:131;:::i;:::-;17172:139;;16899:419;;;:::o;17324:181::-;17464:33;17460:1;17452:6;17448:14;17441:57;17324:181;:::o;17511:366::-;17653:3;17674:67;17738:2;17733:3;17674:67;:::i;:::-;17667:74;;17750:93;17839:3;17750:93;:::i;:::-;17868:2;17863:3;17859:12;17852:19;;17511:366;;;:::o;17883:419::-;18049:4;18087:2;18076:9;18072:18;18064:26;;18136:9;18130:4;18126:20;18122:1;18111:9;18107:17;18100:47;18164:131;18290:4;18164:131;:::i;:::-;18156:139;;17883:419;;;:::o;18308:220::-;18448:34;18444:1;18436:6;18432:14;18425:58;18517:3;18512:2;18504:6;18500:15;18493:28;18308:220;:::o;18534:366::-;18676:3;18697:67;18761:2;18756:3;18697:67;:::i;:::-;18690:74;;18773:93;18862:3;18773:93;:::i;:::-;18891:2;18886:3;18882:12;18875:19;;18534:366;;;:::o;18906:419::-;19072:4;19110:2;19099:9;19095:18;19087:26;;19159:9;19153:4;19149:20;19145:1;19134:9;19130:17;19123:47;19187:131;19313:4;19187:131;:::i;:::-;19179:139;;18906:419;;;:::o;19331:221::-;19471:34;19467:1;19459:6;19455:14;19448:58;19540:4;19535:2;19527:6;19523:15;19516:29;19331:221;:::o;19558:366::-;19700:3;19721:67;19785:2;19780:3;19721:67;:::i;:::-;19714:74;;19797:93;19886:3;19797:93;:::i;:::-;19915:2;19910:3;19906:12;19899:19;;19558:366;;;:::o;19930:419::-;20096:4;20134:2;20123:9;20119:18;20111:26;;20183:9;20177:4;20173:20;20169:1;20158:9;20154:17;20147:47;20211:131;20337:4;20211:131;:::i;:::-;20203:139;;19930:419;;;:::o;20355:191::-;20395:4;20415:20;20433:1;20415:20;:::i;:::-;20410:25;;20449:20;20467:1;20449:20;:::i;:::-;20444:25;;20488:1;20485;20482:8;20479:34;;;20493:18;;:::i;:::-;20479:34;20538:1;20535;20531:9;20523:17;;20355:191;;;;:::o

Swarm Source

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