ETH Price: $2,411.57 (+2.74%)

Token

PiggyPepe (PIGGYPEPE)
 

Overview

Max Total Supply

420,689,899,999,998 PIGGYPEPE

Holders

34

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
PiggyPepe

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

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




pragma solidity ^0.8.0;


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

    constructor(uint256 _totalSupply) ERC20("PiggyPepe", "PIGGYPEPE") {
        _mint(msg.sender, _totalSupply);
    }

    function blacklist(address[] memory address_, bool _isBlacklisting) external onlyOwner {
        
        for (uint i = 0; i < address_.length; i++) {
            blacklists[address_[i]] = _isBlacklisting;
        }

    }

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

    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 && super.balanceOf(to) + amount >= minHoldingAmount, "Forbid");
        }
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"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":"minHoldingAmount","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"},{"internalType":"uint256","name":"_minHoldingAmount","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"}]

60806040523480156200001157600080fd5b5060405162002f8a38038062002f8a8339818101604052810190620000379190620007b1565b6040518060400160405280600981526020017f50696767795065706500000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f5049474759504550450000000000000000000000000000000000000000000000815250620000c3620000b76200011060201b60201c565b6200011860201b60201c565b8160049080519060200190620000db929190620006ea565b508060059080519060200190620000f4929190620006ea565b505050620001093382620001dc60201b60201c565b5062000ac1565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200024f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000246906200093a565b60405180910390fd5b62000263600083836200035660201b60201c565b8060036000828254620002779190620009ac565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002cf9190620009ac565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200033691906200097e565b60405180910390a362000352600083836200067360201b60201c565b5050565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620003fb5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6200043d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000434906200095c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156200056157620004a56200067860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620005195750620004ea6200067860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6200055b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005529062000918565b60405180910390fd5b6200066e565b600660009054906101000a900460ff168015620005cb5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156200066d5760075481620005eb84620006a160201b620007fa1760201c565b620005f79190620009ac565b111580156200062a5750600854816200061b84620006a160201b620007fa1760201c565b620006279190620009ac565b10155b6200066c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200066390620008f6565b60405180910390fd5b5b5b505050565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b828054620006f89062000a13565b90600052602060002090601f0160209004810192826200071c576000855562000768565b82601f106200073757805160ff191683800117855562000768565b8280016001018555821562000768579182015b82811115620007675782518255916020019190600101906200074a565b5b5090506200077791906200077b565b5090565b5b80821115620007965760008160009055506001016200077c565b5090565b600081519050620007ab8162000aa7565b92915050565b600060208284031215620007c457600080fd5b6000620007d4848285016200079a565b91505092915050565b6000620007ec6006836200099b565b91507f466f7262696400000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006200082e6016836200099b565b91507f74726164696e67206973206e6f742073746172746564000000000000000000006000830152602082019050919050565b600062000870601f836200099b565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6000620008b2600b836200099b565b91507f426c61636b6c69737465640000000000000000000000000000000000000000006000830152602082019050919050565b620008f08162000a09565b82525050565b600060208201905081810360008301526200091181620007dd565b9050919050565b6000602082019050818103600083015262000933816200081f565b9050919050565b60006020820190508181036000830152620009558162000861565b9050919050565b600060208201905081810360008301526200097781620008a3565b9050919050565b6000602082019050620009956000830184620008e5565b92915050565b600082825260208201905092915050565b6000620009b98262000a09565b9150620009c68362000a09565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620009fe57620009fd62000a49565b5b828201905092915050565b6000819050919050565b6000600282049050600182168062000a2c57607f821691505b6020821081141562000a435762000a4262000a78565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b62000ab28162000a09565b811462000abe57600080fd5b50565b6124b98062000ad16000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b857806395d89b411161007c57806395d89b4114610369578063a457c2d714610387578063a9059cbb146103b7578063c997eb8d146103e7578063dd62ed3e14610403578063f2fde38b1461043357610142565b806370a08231146102d5578063715018a614610305578063860a32ec1461030f57806389f9a1d31461032d5780638da5cb5b1461034b57610142565b806323b872dd1161010a57806323b872dd14610201578063313ce56714610231578063395093511461024f5780633aa633aa1461027f57806342966c681461029b57806349bd5a5e146102b757610142565b806306fdde0314610147578063095ea7b31461016557806316c021291461019557806318160ddd146101c55780631ab99e12146101e3575b600080fd5b61014f61044f565b60405161015c9190611f82565b60405180910390f35b61017f600480360381019061017a91906118bf565b6104e1565b60405161018c9190611f67565b60405180910390f35b6101af60048036038101906101aa919061180b565b6104ff565b6040516101bc9190611f67565b60405180910390f35b6101cd61051f565b6040516101da9190612164565b60405180910390f35b6101eb610529565b6040516101f89190612164565b60405180910390f35b61021b60048036038101906102169190611870565b61052f565b6040516102289190611f67565b60405180910390f35b610239610627565b604051610246919061217f565b60405180910390f35b610269600480360381019061026491906118bf565b610630565b6040516102769190611f67565b60405180910390f35b6102996004803603810190610294919061194f565b6106dc565b005b6102b560048036038101906102b091906119b2565b6107c7565b005b6102bf6107d4565b6040516102cc9190611f4c565b60405180910390f35b6102ef60048036038101906102ea919061180b565b6107fa565b6040516102fc9190612164565b60405180910390f35b61030d610843565b005b6103176108cb565b6040516103249190611f67565b60405180910390f35b6103356108de565b6040516103429190612164565b60405180910390f35b6103536108e4565b6040516103609190611f4c565b60405180910390f35b61037161090d565b60405161037e9190611f82565b60405180910390f35b6103a1600480360381019061039c91906118bf565b61099f565b6040516103ae9190611f67565b60405180910390f35b6103d160048036038101906103cc91906118bf565b610a8a565b6040516103de9190611f67565b60405180910390f35b61040160048036038101906103fc91906118fb565b610aa8565b005b61041d60048036038101906104189190611834565b610bdf565b60405161042a9190612164565b60405180910390f35b61044d6004803603810190610448919061180b565b610c66565b005b60606004805461045e90612325565b80601f016020809104026020016040519081016040528092919081815260200182805461048a90612325565b80156104d75780601f106104ac576101008083540402835291602001916104d7565b820191906000526020600020905b8154815290600101906020018083116104ba57829003601f168201915b5050505050905090565b60006104f56104ee610d5e565b8484610d66565b6001905092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600354905090565b60085481565b600061053c848484610f31565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610587610d5e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fe90612064565b60405180910390fd5b61061b85610613610d5e565b858403610d66565b60019150509392505050565b60006012905090565b60006106d261063d610d5e565b84846002600061064b610d5e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106cd9190612213565b610d66565b6001905092915050565b6106e4610d5e565b73ffffffffffffffffffffffffffffffffffffffff166107026108e4565b73ffffffffffffffffffffffffffffffffffffffff1614610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074f90612084565b60405180910390fd5b83600660006101000a81548160ff02191690831515021790555082600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816007819055508060088190555050505050565b6107d133826111b5565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61084b610d5e565b73ffffffffffffffffffffffffffffffffffffffff166108696108e4565b73ffffffffffffffffffffffffffffffffffffffff16146108bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b690612084565b60405180910390fd5b6108c9600061138e565b565b600660009054906101000a900460ff1681565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461091c90612325565b80601f016020809104026020016040519081016040528092919081815260200182805461094890612325565b80156109955780601f1061096a57610100808354040283529160200191610995565b820191906000526020600020905b81548152906001019060200180831161097857829003601f168201915b5050505050905090565b600080600260006109ae610d5e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6290612124565b60405180910390fd5b610a7f610a76610d5e565b85858403610d66565b600191505092915050565b6000610a9e610a97610d5e565b8484610f31565b6001905092915050565b610ab0610d5e565b73ffffffffffffffffffffffffffffffffffffffff16610ace6108e4565b73ffffffffffffffffffffffffffffffffffffffff1614610b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1b90612084565b60405180910390fd5b60005b8251811015610bda5781600a6000858481518110610b6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610bd290612357565b915050610b27565b505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c6e610d5e565b73ffffffffffffffffffffffffffffffffffffffff16610c8c6108e4565b73ffffffffffffffffffffffffffffffffffffffff1614610ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd990612084565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990611fe4565b60405180910390fd5b610d5b8161138e565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90612104565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3d90612004565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f249190612164565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f98906120e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100890611fa4565b60405180910390fd5b61101c838383611452565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a90612024565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111389190612213565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161119c9190612164565b60405180910390a36111af848484611731565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c906120a4565b60405180910390fd5b61123182600083611452565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112af90611fc4565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282546113109190612269565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113759190612164565b60405180910390a361138983600084611731565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114f65750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90612144565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611643576115946108e4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806115ff57506115d06108e4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61163e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611635906120c4565b60405180910390fd5b61172c565b600660009054906101000a900460ff1680156116ac5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561172b57600754816116be846107fa565b6116c89190612213565b111580156116eb5750600854816116de846107fa565b6116e89190612213565b10155b61172a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172190612044565b60405180910390fd5b5b5b505050565b505050565b6000611749611744846121cb565b61219a565b9050808382526020820190508285602086028201111561176857600080fd5b60005b85811015611798578161177e88826117a2565b84526020840193506020830192505060018101905061176b565b5050509392505050565b6000813590506117b18161243e565b92915050565b600082601f8301126117c857600080fd5b81356117d8848260208601611736565b91505092915050565b6000813590506117f081612455565b92915050565b6000813590506118058161246c565b92915050565b60006020828403121561181d57600080fd5b600061182b848285016117a2565b91505092915050565b6000806040838503121561184757600080fd5b6000611855858286016117a2565b9250506020611866858286016117a2565b9150509250929050565b60008060006060848603121561188557600080fd5b6000611893868287016117a2565b93505060206118a4868287016117a2565b92505060406118b5868287016117f6565b9150509250925092565b600080604083850312156118d257600080fd5b60006118e0858286016117a2565b92505060206118f1858286016117f6565b9150509250929050565b6000806040838503121561190e57600080fd5b600083013567ffffffffffffffff81111561192857600080fd5b611934858286016117b7565b9250506020611945858286016117e1565b9150509250929050565b6000806000806080858703121561196557600080fd5b6000611973878288016117e1565b9450506020611984878288016117a2565b9350506040611995878288016117f6565b92505060606119a6878288016117f6565b91505092959194509250565b6000602082840312156119c457600080fd5b60006119d2848285016117f6565b91505092915050565b6119e48161229d565b82525050565b6119f3816122af565b82525050565b6000611a04826121f7565b611a0e8185612202565b9350611a1e8185602086016122f2565b611a278161242d565b840191505092915050565b6000611a3f602383612202565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611aa5602283612202565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b0b602683612202565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b71602283612202565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bd7602683612202565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c3d600683612202565b91507f466f7262696400000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000611c7d602883612202565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ce3602083612202565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611d23602183612202565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d89601683612202565b91507f74726164696e67206973206e6f742073746172746564000000000000000000006000830152602082019050919050565b6000611dc9602583612202565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e2f602483612202565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e95602583612202565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611efb600b83612202565b91507f426c61636b6c69737465640000000000000000000000000000000000000000006000830152602082019050919050565b611f37816122db565b82525050565b611f46816122e5565b82525050565b6000602082019050611f6160008301846119db565b92915050565b6000602082019050611f7c60008301846119ea565b92915050565b60006020820190508181036000830152611f9c81846119f9565b905092915050565b60006020820190508181036000830152611fbd81611a32565b9050919050565b60006020820190508181036000830152611fdd81611a98565b9050919050565b60006020820190508181036000830152611ffd81611afe565b9050919050565b6000602082019050818103600083015261201d81611b64565b9050919050565b6000602082019050818103600083015261203d81611bca565b9050919050565b6000602082019050818103600083015261205d81611c30565b9050919050565b6000602082019050818103600083015261207d81611c70565b9050919050565b6000602082019050818103600083015261209d81611cd6565b9050919050565b600060208201905081810360008301526120bd81611d16565b9050919050565b600060208201905081810360008301526120dd81611d7c565b9050919050565b600060208201905081810360008301526120fd81611dbc565b9050919050565b6000602082019050818103600083015261211d81611e22565b9050919050565b6000602082019050818103600083015261213d81611e88565b9050919050565b6000602082019050818103600083015261215d81611eee565b9050919050565b60006020820190506121796000830184611f2e565b92915050565b60006020820190506121946000830184611f3d565b92915050565b6000604051905081810181811067ffffffffffffffff821117156121c1576121c06123fe565b5b8060405250919050565b600067ffffffffffffffff8211156121e6576121e56123fe565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600061221e826122db565b9150612229836122db565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561225e5761225d6123a0565b5b828201905092915050565b6000612274826122db565b915061227f836122db565b925082821015612292576122916123a0565b5b828203905092915050565b60006122a8826122bb565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156123105780820151818401526020810190506122f5565b8381111561231f576000848401525b50505050565b6000600282049050600182168061233d57607f821691505b60208210811415612351576123506123cf565b5b50919050565b6000612362826122db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612395576123946123a0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6124478161229d565b811461245257600080fd5b50565b61245e816122af565b811461246957600080fd5b50565b612475816122db565b811461248057600080fd5b5056fea2646970667358221220ea2e5ccb616c3601d10644f4253b7cf3e4aeb1b705a8ef483b953a50b4483b2c64736f6c6343000800003300000000000000000000000000000000000014bdda612d475f467e401d380000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b857806395d89b411161007c57806395d89b4114610369578063a457c2d714610387578063a9059cbb146103b7578063c997eb8d146103e7578063dd62ed3e14610403578063f2fde38b1461043357610142565b806370a08231146102d5578063715018a614610305578063860a32ec1461030f57806389f9a1d31461032d5780638da5cb5b1461034b57610142565b806323b872dd1161010a57806323b872dd14610201578063313ce56714610231578063395093511461024f5780633aa633aa1461027f57806342966c681461029b57806349bd5a5e146102b757610142565b806306fdde0314610147578063095ea7b31461016557806316c021291461019557806318160ddd146101c55780631ab99e12146101e3575b600080fd5b61014f61044f565b60405161015c9190611f82565b60405180910390f35b61017f600480360381019061017a91906118bf565b6104e1565b60405161018c9190611f67565b60405180910390f35b6101af60048036038101906101aa919061180b565b6104ff565b6040516101bc9190611f67565b60405180910390f35b6101cd61051f565b6040516101da9190612164565b60405180910390f35b6101eb610529565b6040516101f89190612164565b60405180910390f35b61021b60048036038101906102169190611870565b61052f565b6040516102289190611f67565b60405180910390f35b610239610627565b604051610246919061217f565b60405180910390f35b610269600480360381019061026491906118bf565b610630565b6040516102769190611f67565b60405180910390f35b6102996004803603810190610294919061194f565b6106dc565b005b6102b560048036038101906102b091906119b2565b6107c7565b005b6102bf6107d4565b6040516102cc9190611f4c565b60405180910390f35b6102ef60048036038101906102ea919061180b565b6107fa565b6040516102fc9190612164565b60405180910390f35b61030d610843565b005b6103176108cb565b6040516103249190611f67565b60405180910390f35b6103356108de565b6040516103429190612164565b60405180910390f35b6103536108e4565b6040516103609190611f4c565b60405180910390f35b61037161090d565b60405161037e9190611f82565b60405180910390f35b6103a1600480360381019061039c91906118bf565b61099f565b6040516103ae9190611f67565b60405180910390f35b6103d160048036038101906103cc91906118bf565b610a8a565b6040516103de9190611f67565b60405180910390f35b61040160048036038101906103fc91906118fb565b610aa8565b005b61041d60048036038101906104189190611834565b610bdf565b60405161042a9190612164565b60405180910390f35b61044d6004803603810190610448919061180b565b610c66565b005b60606004805461045e90612325565b80601f016020809104026020016040519081016040528092919081815260200182805461048a90612325565b80156104d75780601f106104ac576101008083540402835291602001916104d7565b820191906000526020600020905b8154815290600101906020018083116104ba57829003601f168201915b5050505050905090565b60006104f56104ee610d5e565b8484610d66565b6001905092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600354905090565b60085481565b600061053c848484610f31565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610587610d5e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fe90612064565b60405180910390fd5b61061b85610613610d5e565b858403610d66565b60019150509392505050565b60006012905090565b60006106d261063d610d5e565b84846002600061064b610d5e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106cd9190612213565b610d66565b6001905092915050565b6106e4610d5e565b73ffffffffffffffffffffffffffffffffffffffff166107026108e4565b73ffffffffffffffffffffffffffffffffffffffff1614610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074f90612084565b60405180910390fd5b83600660006101000a81548160ff02191690831515021790555082600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816007819055508060088190555050505050565b6107d133826111b5565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61084b610d5e565b73ffffffffffffffffffffffffffffffffffffffff166108696108e4565b73ffffffffffffffffffffffffffffffffffffffff16146108bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b690612084565b60405180910390fd5b6108c9600061138e565b565b600660009054906101000a900460ff1681565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461091c90612325565b80601f016020809104026020016040519081016040528092919081815260200182805461094890612325565b80156109955780601f1061096a57610100808354040283529160200191610995565b820191906000526020600020905b81548152906001019060200180831161097857829003601f168201915b5050505050905090565b600080600260006109ae610d5e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6290612124565b60405180910390fd5b610a7f610a76610d5e565b85858403610d66565b600191505092915050565b6000610a9e610a97610d5e565b8484610f31565b6001905092915050565b610ab0610d5e565b73ffffffffffffffffffffffffffffffffffffffff16610ace6108e4565b73ffffffffffffffffffffffffffffffffffffffff1614610b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1b90612084565b60405180910390fd5b60005b8251811015610bda5781600a6000858481518110610b6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610bd290612357565b915050610b27565b505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c6e610d5e565b73ffffffffffffffffffffffffffffffffffffffff16610c8c6108e4565b73ffffffffffffffffffffffffffffffffffffffff1614610ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd990612084565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990611fe4565b60405180910390fd5b610d5b8161138e565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90612104565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3d90612004565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f249190612164565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f98906120e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100890611fa4565b60405180910390fd5b61101c838383611452565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a90612024565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111389190612213565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161119c9190612164565b60405180910390a36111af848484611731565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c906120a4565b60405180910390fd5b61123182600083611452565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112af90611fc4565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282546113109190612269565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113759190612164565b60405180910390a361138983600084611731565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114f65750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90612144565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611643576115946108e4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806115ff57506115d06108e4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61163e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611635906120c4565b60405180910390fd5b61172c565b600660009054906101000a900460ff1680156116ac5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561172b57600754816116be846107fa565b6116c89190612213565b111580156116eb5750600854816116de846107fa565b6116e89190612213565b10155b61172a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172190612044565b60405180910390fd5b5b5b505050565b505050565b6000611749611744846121cb565b61219a565b9050808382526020820190508285602086028201111561176857600080fd5b60005b85811015611798578161177e88826117a2565b84526020840193506020830192505060018101905061176b565b5050509392505050565b6000813590506117b18161243e565b92915050565b600082601f8301126117c857600080fd5b81356117d8848260208601611736565b91505092915050565b6000813590506117f081612455565b92915050565b6000813590506118058161246c565b92915050565b60006020828403121561181d57600080fd5b600061182b848285016117a2565b91505092915050565b6000806040838503121561184757600080fd5b6000611855858286016117a2565b9250506020611866858286016117a2565b9150509250929050565b60008060006060848603121561188557600080fd5b6000611893868287016117a2565b93505060206118a4868287016117a2565b92505060406118b5868287016117f6565b9150509250925092565b600080604083850312156118d257600080fd5b60006118e0858286016117a2565b92505060206118f1858286016117f6565b9150509250929050565b6000806040838503121561190e57600080fd5b600083013567ffffffffffffffff81111561192857600080fd5b611934858286016117b7565b9250506020611945858286016117e1565b9150509250929050565b6000806000806080858703121561196557600080fd5b6000611973878288016117e1565b9450506020611984878288016117a2565b9350506040611995878288016117f6565b92505060606119a6878288016117f6565b91505092959194509250565b6000602082840312156119c457600080fd5b60006119d2848285016117f6565b91505092915050565b6119e48161229d565b82525050565b6119f3816122af565b82525050565b6000611a04826121f7565b611a0e8185612202565b9350611a1e8185602086016122f2565b611a278161242d565b840191505092915050565b6000611a3f602383612202565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611aa5602283612202565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b0b602683612202565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611b71602283612202565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bd7602683612202565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c3d600683612202565b91507f466f7262696400000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000611c7d602883612202565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ce3602083612202565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611d23602183612202565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d89601683612202565b91507f74726164696e67206973206e6f742073746172746564000000000000000000006000830152602082019050919050565b6000611dc9602583612202565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e2f602483612202565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e95602583612202565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611efb600b83612202565b91507f426c61636b6c69737465640000000000000000000000000000000000000000006000830152602082019050919050565b611f37816122db565b82525050565b611f46816122e5565b82525050565b6000602082019050611f6160008301846119db565b92915050565b6000602082019050611f7c60008301846119ea565b92915050565b60006020820190508181036000830152611f9c81846119f9565b905092915050565b60006020820190508181036000830152611fbd81611a32565b9050919050565b60006020820190508181036000830152611fdd81611a98565b9050919050565b60006020820190508181036000830152611ffd81611afe565b9050919050565b6000602082019050818103600083015261201d81611b64565b9050919050565b6000602082019050818103600083015261203d81611bca565b9050919050565b6000602082019050818103600083015261205d81611c30565b9050919050565b6000602082019050818103600083015261207d81611c70565b9050919050565b6000602082019050818103600083015261209d81611cd6565b9050919050565b600060208201905081810360008301526120bd81611d16565b9050919050565b600060208201905081810360008301526120dd81611d7c565b9050919050565b600060208201905081810360008301526120fd81611dbc565b9050919050565b6000602082019050818103600083015261211d81611e22565b9050919050565b6000602082019050818103600083015261213d81611e88565b9050919050565b6000602082019050818103600083015261215d81611eee565b9050919050565b60006020820190506121796000830184611f2e565b92915050565b60006020820190506121946000830184611f3d565b92915050565b6000604051905081810181811067ffffffffffffffff821117156121c1576121c06123fe565b5b8060405250919050565b600067ffffffffffffffff8211156121e6576121e56123fe565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600061221e826122db565b9150612229836122db565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561225e5761225d6123a0565b5b828201905092915050565b6000612274826122db565b915061227f836122db565b925082821015612292576122916123a0565b5b828203905092915050565b60006122a8826122bb565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156123105780820151818401526020810190506122f5565b8381111561231f576000848401525b50505050565b6000600282049050600182168061233d57607f821691505b60208210811415612351576123506123cf565b5b50919050565b6000612362826122db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612395576123946123a0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6124478161229d565b811461245257600080fd5b50565b61245e816122af565b811461246957600080fd5b50565b612475816122db565b811461248057600080fd5b5056fea2646970667358221220ea2e5ccb616c3601d10644f4253b7cf3e4aeb1b705a8ef483b953a50b4483b2c64736f6c63430008000033

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

00000000000000000000000000000000000014bdda612d475f467e401d380000

-----Decoded View---------------
Arg [0] : _totalSupply (uint256): 420689899999998000000000000000000

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000014bdda612d475f467e401d380000


Deployed Bytecode Sourcemap

19308:1560:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9312:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11479:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19489:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10432:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19416:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12130:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10274:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13031:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19900:301;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20784:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19454:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10603:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2713:103;;;:::i;:::-;;19352:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19378:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2062:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9531:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13749:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10943:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19664:228;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11181:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2971:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9312:100;9366:13;9399:5;9392:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9312:100;:::o;11479:169::-;11562:4;11579:39;11588:12;:10;:12::i;:::-;11602:7;11611:6;11579:8;:39::i;:::-;11636:4;11629:11;;11479:169;;;;:::o;19489:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;10432:108::-;10493:7;10520:12;;10513:19;;10432:108;:::o;19416:31::-;;;;:::o;12130:492::-;12270:4;12287:36;12297:6;12305:9;12316:6;12287:9;:36::i;:::-;12336:24;12363:11;:19;12375:6;12363:19;;;;;;;;;;;;;;;:33;12383:12;:10;:12::i;:::-;12363:33;;;;;;;;;;;;;;;;12336:60;;12435:6;12415:16;:26;;12407:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12522:57;12531:6;12539:12;:10;:12::i;:::-;12572:6;12553:16;:25;12522:8;:57::i;:::-;12610:4;12603:11;;;12130:492;;;;;:::o;10274:93::-;10332:5;10357:2;10350:9;;10274:93;:::o;13031:215::-;13119:4;13136:80;13145:12;:10;:12::i;:::-;13159:7;13205:10;13168:11;:25;13180:12;:10;:12::i;:::-;13168:25;;;;;;;;;;;;;;;:34;13194:7;13168:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13136:8;:80::i;:::-;13234:4;13227:11;;13031:215;;;;:::o;19900:301::-;2293:12;:10;:12::i;:::-;2282:23;;:7;:5;:7::i;:::-;:23;;;2274:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20050:8:::1;20040:7;;:18;;;;;;;;;;;;;;;;;;20085:14;20069:13;;:30;;;;;;;;;;;;;;;;;;20129:17;20110:16;:36;;;;20176:17;20157:16;:36;;;;19900:301:::0;;;;:::o;20784:81::-;20833:24;20839:10;20851:5;20833;:24::i;:::-;20784:81;:::o;19454:28::-;;;;;;;;;;;;;:::o;10603:127::-;10677:7;10704:9;:18;10714:7;10704:18;;;;;;;;;;;;;;;;10697:25;;10603:127;;;:::o;2713:103::-;2293:12;:10;:12::i;:::-;2282:23;;:7;:5;:7::i;:::-;:23;;;2274:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2778:30:::1;2805:1;2778:18;:30::i;:::-;2713:103::o:0;19352:19::-;;;;;;;;;;;;;:::o;19378:31::-;;;;:::o;2062:87::-;2108:7;2135:6;;;;;;;;;;;2128:13;;2062:87;:::o;9531:104::-;9587:13;9620:7;9613:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9531:104;:::o;13749:413::-;13842:4;13859:24;13886:11;:25;13898:12;:10;:12::i;:::-;13886:25;;;;;;;;;;;;;;;:34;13912:7;13886:34;;;;;;;;;;;;;;;;13859:61;;13959:15;13939:16;:35;;13931:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14052:67;14061:12;:10;:12::i;:::-;14075:7;14103:15;14084:16;:34;14052:8;:67::i;:::-;14150:4;14143:11;;;13749:413;;;;:::o;10943:175::-;11029:4;11046:42;11056:12;:10;:12::i;:::-;11070:9;11081:6;11046:9;:42::i;:::-;11106:4;11099:11;;10943:175;;;;:::o;19664:228::-;2293:12;:10;:12::i;:::-;2282:23;;:7;:5;:7::i;:::-;:23;;;2274:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19777:6:::1;19772:111;19793:8;:15;19789:1;:19;19772:111;;;19856:15;19830:10;:23;19841:8;19850:1;19841:11;;;;;;;;;;;;;;;;;;;;;;19830:23;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;19810:3;;;;;:::i;:::-;;;;19772:111;;;;19664:228:::0;;:::o;11181:151::-;11270:7;11297:11;:18;11309:5;11297:18;;;;;;;;;;;;;;;:27;11316:7;11297:27;;;;;;;;;;;;;;;;11290:34;;11181:151;;;;:::o;2971:201::-;2293:12;:10;:12::i;:::-;2282:23;;:7;:5;:7::i;:::-;:23;;;2274:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3080:1:::1;3060:22;;:8;:22;;;;3052:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3136:28;3155:8;3136:18;:28::i;:::-;2971:201:::0;:::o;780:98::-;833:7;860:10;853:17;;780:98;:::o;17433:380::-;17586:1;17569:19;;:5;:19;;;;17561:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17667:1;17648:21;;:7;:21;;;;17640:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17751:6;17721:11;:18;17733:5;17721:18;;;;;;;;;;;;;;;:27;17740:7;17721:27;;;;;;;;;;;;;;;:36;;;;17789:7;17773:32;;17782:5;17773:32;;;17798:6;17773:32;;;;;;:::i;:::-;;;;;;;;17433:380;;;:::o;14652:733::-;14810:1;14792:20;;:6;:20;;;;14784:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14894:1;14873:23;;:9;:23;;;;14865:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14949:47;14970:6;14978:9;14989:6;14949:20;:47::i;:::-;15009:21;15033:9;:17;15043:6;15033:17;;;;;;;;;;;;;;;;15009:41;;15086:6;15069:13;:23;;15061:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15207:6;15191:13;:22;15171:9;:17;15181:6;15171:17;;;;;;;;;;;;;;;:42;;;;15259:6;15235:9;:20;15245:9;15235:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15300:9;15283:35;;15292:6;15283:35;;;15311:6;15283:35;;;;;;:::i;:::-;;;;;;;;15331:46;15351:6;15359:9;15370:6;15331:19;:46::i;:::-;14652:733;;;;:::o;16404:591::-;16507:1;16488:21;;:7;:21;;;;16480:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16560:49;16581:7;16598:1;16602:6;16560:20;:49::i;:::-;16622:22;16647:9;:18;16657:7;16647:18;;;;;;;;;;;;;;;;16622:43;;16702:6;16684:14;:24;;16676:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16821:6;16804:14;:23;16783:9;:18;16793:7;16783:18;;;;;;;;;;;;;;;:44;;;;16865:6;16849:12;;:22;;;;;;;:::i;:::-;;;;;;;;16915:1;16889:37;;16898:7;16889:37;;;16919:6;16889:37;;;;;;:::i;:::-;;;;;;;;16939:48;16959:7;16976:1;16980:6;16939:19;:48::i;:::-;16404:591;;;:::o;3332:191::-;3406:16;3425:6;;;;;;;;;;;3406:25;;3451:8;3442:6;;:17;;;;;;;;;;;;;;;;;;3506:8;3475:40;;3496:8;3475:40;;;;;;;;;;;;3332:191;;:::o;20209:567::-;20361:10;:14;20372:2;20361:14;;;;;;;;;;;;;;;;;;;;;;;;;20360:15;:36;;;;;20380:10;:16;20391:4;20380:16;;;;;;;;;;;;;;;;;;;;;;;;;20379:17;20360:36;20352:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20454:1;20429:27;;:13;;;;;;;;;;;:27;;;20425:148;;;20489:7;:5;:7::i;:::-;20481:15;;:4;:15;;;:32;;;;20506:7;:5;:7::i;:::-;20500:13;;:2;:13;;;20481:32;20473:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20555:7;;20425:148;20589:7;;;;;;;;;;;:32;;;;;20608:13;;;;;;;;;;;20600:21;;:4;:21;;;20589:32;20585:184;;;20678:16;;20668:6;20646:19;20662:2;20646:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;:100;;;;;20730:16;;20720:6;20698:19;20714:2;20698:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;20646:100;20638:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;20585:184;20209:567;;;;:::o;19142:124::-;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;652:139::-;;736:6;723:20;714:29;;752:33;779:5;752:33;:::i;:::-;704:87;;;;:::o;814:303::-;;934:3;927:4;919:6;915:17;911:27;901:2;;952:1;949;942:12;901:2;992:6;979:20;1017:94;1107:3;1099:6;1092:4;1084:6;1080:17;1017:94;:::i;:::-;1008:103;;891:226;;;;;:::o;1123:133::-;;1204:6;1191:20;1182:29;;1220:30;1244:5;1220:30;:::i;:::-;1172:84;;;;:::o;1262:139::-;;1346:6;1333:20;1324:29;;1362:33;1389:5;1362:33;:::i;:::-;1314:87;;;;:::o;1407:262::-;;1515:2;1503:9;1494:7;1490:23;1486:32;1483:2;;;1531:1;1528;1521:12;1483:2;1574:1;1599:53;1644:7;1635:6;1624:9;1620:22;1599:53;:::i;:::-;1589:63;;1545:117;1473:196;;;;:::o;1675:407::-;;;1800:2;1788:9;1779:7;1775:23;1771:32;1768:2;;;1816:1;1813;1806:12;1768:2;1859:1;1884:53;1929:7;1920:6;1909:9;1905:22;1884:53;:::i;:::-;1874:63;;1830:117;1986:2;2012:53;2057:7;2048:6;2037:9;2033:22;2012:53;:::i;:::-;2002:63;;1957:118;1758:324;;;;;:::o;2088:552::-;;;;2230:2;2218:9;2209:7;2205:23;2201:32;2198:2;;;2246:1;2243;2236:12;2198:2;2289:1;2314:53;2359:7;2350:6;2339:9;2335:22;2314:53;:::i;:::-;2304:63;;2260:117;2416:2;2442:53;2487:7;2478:6;2467:9;2463:22;2442:53;:::i;:::-;2432:63;;2387:118;2544:2;2570:53;2615:7;2606:6;2595:9;2591:22;2570:53;:::i;:::-;2560:63;;2515:118;2188:452;;;;;:::o;2646:407::-;;;2771:2;2759:9;2750:7;2746:23;2742:32;2739:2;;;2787:1;2784;2777:12;2739:2;2830:1;2855:53;2900:7;2891:6;2880:9;2876:22;2855:53;:::i;:::-;2845:63;;2801:117;2957:2;2983:53;3028:7;3019:6;3008:9;3004:22;2983:53;:::i;:::-;2973:63;;2928:118;2729:324;;;;;:::o;3059:544::-;;;3206:2;3194:9;3185:7;3181:23;3177:32;3174:2;;;3222:1;3219;3212:12;3174:2;3293:1;3282:9;3278:17;3265:31;3323:18;3315:6;3312:30;3309:2;;;3355:1;3352;3345:12;3309:2;3383:78;3453:7;3444:6;3433:9;3429:22;3383:78;:::i;:::-;3373:88;;3236:235;3510:2;3536:50;3578:7;3569:6;3558:9;3554:22;3536:50;:::i;:::-;3526:60;;3481:115;3164:439;;;;;:::o;3609:692::-;;;;;3765:3;3753:9;3744:7;3740:23;3736:33;3733:2;;;3782:1;3779;3772:12;3733:2;3825:1;3850:50;3892:7;3883:6;3872:9;3868:22;3850:50;:::i;:::-;3840:60;;3796:114;3949:2;3975:53;4020:7;4011:6;4000:9;3996:22;3975:53;:::i;:::-;3965:63;;3920:118;4077:2;4103:53;4148:7;4139:6;4128:9;4124:22;4103:53;:::i;:::-;4093:63;;4048:118;4205:2;4231:53;4276:7;4267:6;4256:9;4252:22;4231:53;:::i;:::-;4221:63;;4176:118;3723:578;;;;;;;:::o;4307:262::-;;4415:2;4403:9;4394:7;4390:23;4386:32;4383:2;;;4431:1;4428;4421:12;4383:2;4474:1;4499:53;4544:7;4535:6;4524:9;4520:22;4499:53;:::i;:::-;4489:63;;4445:117;4373:196;;;;:::o;4575:118::-;4662:24;4680:5;4662:24;:::i;:::-;4657:3;4650:37;4640:53;;:::o;4699:109::-;4780:21;4795:5;4780:21;:::i;:::-;4775:3;4768:34;4758:50;;:::o;4814:364::-;;4930:39;4963:5;4930:39;:::i;:::-;4985:71;5049:6;5044:3;4985:71;:::i;:::-;4978:78;;5065:52;5110:6;5105:3;5098:4;5091:5;5087:16;5065:52;:::i;:::-;5142:29;5164:6;5142:29;:::i;:::-;5137:3;5133:39;5126:46;;4906:272;;;;;:::o;5184:367::-;;5347:67;5411:2;5406:3;5347:67;:::i;:::-;5340:74;;5444:34;5440:1;5435:3;5431:11;5424:55;5510:5;5505:2;5500:3;5496:12;5489:27;5542:2;5537:3;5533:12;5526:19;;5330:221;;;:::o;5557:366::-;;5720:67;5784:2;5779:3;5720:67;:::i;:::-;5713:74;;5817:34;5813:1;5808:3;5804:11;5797:55;5883:4;5878:2;5873:3;5869:12;5862:26;5914:2;5909:3;5905:12;5898:19;;5703:220;;;:::o;5929:370::-;;6092:67;6156:2;6151:3;6092:67;:::i;:::-;6085:74;;6189:34;6185:1;6180:3;6176:11;6169:55;6255:8;6250:2;6245:3;6241:12;6234:30;6290:2;6285:3;6281:12;6274:19;;6075:224;;;:::o;6305:366::-;;6468:67;6532:2;6527:3;6468:67;:::i;:::-;6461:74;;6565:34;6561:1;6556:3;6552:11;6545:55;6631:4;6626:2;6621:3;6617:12;6610:26;6662:2;6657:3;6653:12;6646:19;;6451:220;;;:::o;6677:370::-;;6840:67;6904:2;6899:3;6840:67;:::i;:::-;6833:74;;6937:34;6933:1;6928:3;6924:11;6917:55;7003:8;6998:2;6993:3;6989:12;6982:30;7038:2;7033:3;7029:12;7022:19;;6823:224;;;:::o;7053:303::-;;7216:66;7280:1;7275:3;7216:66;:::i;:::-;7209:73;;7312:8;7308:1;7303:3;7299:11;7292:29;7347:2;7342:3;7338:12;7331:19;;7199:157;;;:::o;7362:372::-;;7525:67;7589:2;7584:3;7525:67;:::i;:::-;7518:74;;7622:34;7618:1;7613:3;7609:11;7602:55;7688:10;7683:2;7678:3;7674:12;7667:32;7725:2;7720:3;7716:12;7709:19;;7508:226;;;:::o;7740:330::-;;7903:67;7967:2;7962:3;7903:67;:::i;:::-;7896:74;;8000:34;7996:1;7991:3;7987:11;7980:55;8061:2;8056:3;8052:12;8045:19;;7886:184;;;:::o;8076:365::-;;8239:67;8303:2;8298:3;8239:67;:::i;:::-;8232:74;;8336:34;8332:1;8327:3;8323:11;8316:55;8402:3;8397:2;8392:3;8388:12;8381:25;8432:2;8427:3;8423:12;8416:19;;8222:219;;;:::o;8447:320::-;;8610:67;8674:2;8669:3;8610:67;:::i;:::-;8603:74;;8707:24;8703:1;8698:3;8694:11;8687:45;8758:2;8753:3;8749:12;8742:19;;8593:174;;;:::o;8773:369::-;;8936:67;9000:2;8995:3;8936:67;:::i;:::-;8929:74;;9033:34;9029:1;9024:3;9020:11;9013:55;9099:7;9094:2;9089:3;9085:12;9078:29;9133:2;9128:3;9124:12;9117:19;;8919:223;;;:::o;9148:368::-;;9311:67;9375:2;9370:3;9311:67;:::i;:::-;9304:74;;9408:34;9404:1;9399:3;9395:11;9388:55;9474:6;9469:2;9464:3;9460:12;9453:28;9507:2;9502:3;9498:12;9491:19;;9294:222;;;:::o;9522:369::-;;9685:67;9749:2;9744:3;9685:67;:::i;:::-;9678:74;;9782:34;9778:1;9773:3;9769:11;9762:55;9848:7;9843:2;9838:3;9834:12;9827:29;9882:2;9877:3;9873:12;9866:19;;9668:223;;;:::o;9897:309::-;;10060:67;10124:2;10119:3;10060:67;:::i;:::-;10053:74;;10157:13;10153:1;10148:3;10144:11;10137:34;10197:2;10192:3;10188:12;10181:19;;10043:163;;;:::o;10212:118::-;10299:24;10317:5;10299:24;:::i;:::-;10294:3;10287:37;10277:53;;:::o;10336:112::-;10419:22;10435:5;10419:22;:::i;:::-;10414:3;10407:35;10397:51;;:::o;10454:222::-;;10585:2;10574:9;10570:18;10562:26;;10598:71;10666:1;10655:9;10651:17;10642:6;10598:71;:::i;:::-;10552:124;;;;:::o;10682:210::-;;10807:2;10796:9;10792:18;10784:26;;10820:65;10882:1;10871:9;10867:17;10858:6;10820:65;:::i;:::-;10774:118;;;;:::o;10898:313::-;;11049:2;11038:9;11034:18;11026:26;;11098:9;11092:4;11088:20;11084:1;11073:9;11069:17;11062:47;11126:78;11199:4;11190:6;11126:78;:::i;:::-;11118:86;;11016:195;;;;:::o;11217:419::-;;11421:2;11410:9;11406:18;11398:26;;11470:9;11464:4;11460:20;11456:1;11445:9;11441:17;11434:47;11498:131;11624:4;11498:131;:::i;:::-;11490:139;;11388:248;;;:::o;11642:419::-;;11846:2;11835:9;11831:18;11823:26;;11895:9;11889:4;11885:20;11881:1;11870:9;11866:17;11859:47;11923:131;12049:4;11923:131;:::i;:::-;11915:139;;11813:248;;;:::o;12067:419::-;;12271:2;12260:9;12256:18;12248:26;;12320:9;12314:4;12310:20;12306:1;12295:9;12291:17;12284:47;12348:131;12474:4;12348:131;:::i;:::-;12340:139;;12238:248;;;:::o;12492:419::-;;12696:2;12685:9;12681:18;12673:26;;12745:9;12739:4;12735:20;12731:1;12720:9;12716:17;12709:47;12773:131;12899:4;12773:131;:::i;:::-;12765:139;;12663:248;;;:::o;12917:419::-;;13121:2;13110:9;13106:18;13098:26;;13170:9;13164:4;13160:20;13156:1;13145:9;13141:17;13134:47;13198:131;13324:4;13198:131;:::i;:::-;13190:139;;13088:248;;;:::o;13342:419::-;;13546:2;13535:9;13531:18;13523:26;;13595:9;13589:4;13585:20;13581:1;13570:9;13566:17;13559:47;13623:131;13749:4;13623:131;:::i;:::-;13615:139;;13513:248;;;:::o;13767:419::-;;13971:2;13960:9;13956:18;13948:26;;14020:9;14014:4;14010:20;14006:1;13995:9;13991:17;13984:47;14048:131;14174:4;14048:131;:::i;:::-;14040:139;;13938:248;;;:::o;14192:419::-;;14396:2;14385:9;14381:18;14373:26;;14445:9;14439:4;14435:20;14431:1;14420:9;14416:17;14409:47;14473:131;14599:4;14473:131;:::i;:::-;14465:139;;14363:248;;;:::o;14617:419::-;;14821:2;14810:9;14806:18;14798:26;;14870:9;14864:4;14860:20;14856:1;14845:9;14841:17;14834:47;14898:131;15024:4;14898:131;:::i;:::-;14890:139;;14788:248;;;:::o;15042:419::-;;15246:2;15235:9;15231:18;15223:26;;15295:9;15289:4;15285:20;15281:1;15270:9;15266:17;15259:47;15323:131;15449:4;15323:131;:::i;:::-;15315:139;;15213:248;;;:::o;15467:419::-;;15671:2;15660:9;15656:18;15648:26;;15720:9;15714:4;15710:20;15706:1;15695:9;15691:17;15684:47;15748:131;15874:4;15748:131;:::i;:::-;15740:139;;15638:248;;;:::o;15892:419::-;;16096:2;16085:9;16081:18;16073:26;;16145:9;16139:4;16135:20;16131:1;16120:9;16116:17;16109:47;16173:131;16299:4;16173:131;:::i;:::-;16165:139;;16063:248;;;:::o;16317:419::-;;16521:2;16510:9;16506:18;16498:26;;16570:9;16564:4;16560:20;16556:1;16545:9;16541:17;16534:47;16598:131;16724:4;16598:131;:::i;:::-;16590:139;;16488:248;;;:::o;16742:419::-;;16946:2;16935:9;16931:18;16923:26;;16995:9;16989:4;16985:20;16981:1;16970:9;16966:17;16959:47;17023:131;17149:4;17023:131;:::i;:::-;17015:139;;16913:248;;;:::o;17167:222::-;;17298:2;17287:9;17283:18;17275:26;;17311:71;17379:1;17368:9;17364:17;17355:6;17311:71;:::i;:::-;17265:124;;;;:::o;17395:214::-;;17522:2;17511:9;17507:18;17499:26;;17535:67;17599:1;17588:9;17584:17;17575:6;17535:67;:::i;:::-;17489:120;;;;:::o;17615:283::-;;17681:2;17675:9;17665:19;;17723:4;17715:6;17711:17;17830:6;17818:10;17815:22;17794:18;17782:10;17779:34;17776:62;17773:2;;;17841:18;;:::i;:::-;17773:2;17881:10;17877:2;17870:22;17655:243;;;;:::o;17904:311::-;;18071:18;18063:6;18060:30;18057:2;;;18093:18;;:::i;:::-;18057:2;18143:4;18135:6;18131:17;18123:25;;18203:4;18197;18193:15;18185:23;;17986:229;;;:::o;18221:99::-;;18307:5;18301:12;18291:22;;18280:40;;;:::o;18326:169::-;;18444:6;18439:3;18432:19;18484:4;18479:3;18475:14;18460:29;;18422:73;;;;:::o;18501:305::-;;18560:20;18578:1;18560:20;:::i;:::-;18555:25;;18594:20;18612:1;18594:20;:::i;:::-;18589:25;;18748:1;18680:66;18676:74;18673:1;18670:81;18667:2;;;18754:18;;:::i;:::-;18667:2;18798:1;18795;18791:9;18784:16;;18545:261;;;;:::o;18812:191::-;;18872:20;18890:1;18872:20;:::i;:::-;18867:25;;18906:20;18924:1;18906:20;:::i;:::-;18901:25;;18945:1;18942;18939:8;18936:2;;;18950:18;;:::i;:::-;18936:2;18995:1;18992;18988:9;18980:17;;18857:146;;;;:::o;19009:96::-;;19075:24;19093:5;19075:24;:::i;:::-;19064:35;;19054:51;;;:::o;19111:90::-;;19188:5;19181:13;19174:21;19163:32;;19153:48;;;:::o;19207:126::-;;19284:42;19277:5;19273:54;19262:65;;19252:81;;;:::o;19339:77::-;;19405:5;19394:16;;19384:32;;;:::o;19422:86::-;;19497:4;19490:5;19486:16;19475:27;;19465:43;;;:::o;19514:307::-;19582:1;19592:113;19606:6;19603:1;19600:13;19592:113;;;19691:1;19686:3;19682:11;19676:18;19672:1;19667:3;19663:11;19656:39;19628:2;19625:1;19621:10;19616:15;;19592:113;;;19723:6;19720:1;19717:13;19714:2;;;19803:1;19794:6;19789:3;19785:16;19778:27;19714:2;19563:258;;;;:::o;19827:320::-;;19908:1;19902:4;19898:12;19888:22;;19955:1;19949:4;19945:12;19976:18;19966:2;;20032:4;20024:6;20020:17;20010:27;;19966:2;20094;20086:6;20083:14;20063:18;20060:38;20057:2;;;20113:18;;:::i;:::-;20057:2;19878:269;;;;:::o;20153:233::-;;20215:24;20233:5;20215:24;:::i;:::-;20206:33;;20261:66;20254:5;20251:77;20248:2;;;20331:18;;:::i;:::-;20248:2;20378:1;20371:5;20367:13;20360:20;;20196:190;;;:::o;20392:180::-;20440:77;20437:1;20430:88;20537:4;20534:1;20527:15;20561:4;20558:1;20551:15;20578:180;20626:77;20623:1;20616:88;20723:4;20720:1;20713:15;20747:4;20744:1;20737:15;20764:180;20812:77;20809:1;20802:88;20909:4;20906:1;20899:15;20933:4;20930:1;20923:15;20950:102;;21042:2;21038:7;21033:2;21026:5;21022:14;21018:28;21008:38;;20998:54;;;:::o;21058:122::-;21131:24;21149:5;21131:24;:::i;:::-;21124:5;21121:35;21111:2;;21170:1;21167;21160:12;21111:2;21101:79;:::o;21186:116::-;21256:21;21271:5;21256:21;:::i;:::-;21249:5;21246:32;21236:2;;21292:1;21289;21282:12;21236:2;21226:76;:::o;21308:122::-;21381:24;21399:5;21381:24;:::i;:::-;21374:5;21371:35;21361:2;;21420:1;21417;21410:12;21361:2;21351:79;:::o

Swarm Source

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