ETH Price: $3,672.30 (+2.41%)

Token

ERC-20: Icarus (ICARUS)
 

Overview

Max Total Supply

149,597,870,700 ICARUS

Holders

530

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.834406449751541242 ICARUS

Value
$0.00
0xc4da5f4820ed4911bb59b119bccad5ff4134704f
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:
Icarus

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-11
*/

// SPDX-License-Identifier: MIT

// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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 Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

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

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

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






// OpenZeppelin Contracts v4.4.1 (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);
}





// OpenZeppelin Contracts v4.4.1 (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;
    }
}






// OpenZeppelin Contracts (last updated v4.9.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.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * 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}.
     *
     * 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 default value returned by this function, unless
     * it's 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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _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;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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

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

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

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}







// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}







// OpenZeppelin Contracts (last updated v4.9.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 Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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);
    }
}







// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        _requirePaused();
        _;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Throws if the contract is paused.
     */
    function _requireNotPaused() internal view virtual {
        require(!paused(), "Pausable: paused");
    }

    /**
     * @dev Throws if the contract is not paused.
     */
    function _requirePaused() internal view virtual {
        require(paused(), "Pausable: not paused");
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}




pragma solidity ^0.8.20;

//-------------------------------------------------------------------------------------------------------------------------------------
// CONTRACT
contract Icarus is ERC20, ERC20Burnable, Pausable, Ownable {
    uint256 public immutable initialSupply;
    uint256 public immutable dexSupply;
    uint256 public immutable cexSupply;
    uint256 public immutable creatorSupply;
    
    address public immutable mainWallet;
    address public immutable cexWallet;
    address public immutable creatorWallet;
    
    mapping(address => bool) public blacklists;
    
    bool public limitTrading;
    uint256 public maxHoldingAmount;
    uint256 public minHoldingAmount;
    address public uniswapPool;
        
    uint256 public immutable creationBlock;
    uint256 public immutable blockLimit;
    uint256 public immutable minTransactions;
    uint256 public transactionCounter;

    //--------------------------------------------------------------
    // CONSTRUCTOR
    constructor() ERC20("Icarus", "ICARUS") {
        initialSupply = 149597870700 * 10 ** decimals();
        dexSupply = initialSupply / 10 * 8;
        cexSupply = initialSupply / 10;
        creatorSupply = initialSupply - dexSupply - cexSupply;
                
        mainWallet = msg.sender;
        cexWallet = 0x042DAe440FD05cd84d84EB1a2F6e3811a9D57800;
        creatorWallet = 0x9622e79e6a0D138d60a36aa5cB7c063462277fe5;
        
        limitTrading = true;
        maxHoldingAmount = 1000000;
        minHoldingAmount = 0;
        
        creationBlock = block.number;
        blockLimit = 2600000;
        minTransactions = 1000000;
        transactionCounter = 0;
           
        _mint(mainWallet, dexSupply);
        _mint(cexWallet, cexSupply);
        _mint(creatorWallet, creatorSupply);
    }
    
    //--------------------------------------------------------------
    // BLACKLIST
    function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
        blacklists[_address] = _isBlacklisting;
    }   
    
    //--------------------------------------------------------------
    // SET TRADING RULES
    function setRule(bool _limitTrading, address _uniswapPool, uint256 _maxHoldingAmount, uint256 _minHoldingAmount) external onlyOwner {
        limitTrading = _limitTrading;
        uniswapPool = _uniswapPool;
        maxHoldingAmount = _maxHoldingAmount;
        minHoldingAmount = _minHoldingAmount;
    }
    
    //--------------------------------------------------------------
    // TRANSACTION CONTROL
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal whenNotPaused override {
        require(!blacklists[to] && !blacklists[from], "Address Blacklisted");
        if (uniswapPool == address(0)) {
            require(from == mainWallet || to == mainWallet || to == cexWallet || to == creatorWallet, "Token transfer not available");
            return;
        }
        if (limitTrading && from == uniswapPool) {
            require(super.balanceOf(to) + amount <= maxHoldingAmount && super.balanceOf(to) + amount >= minHoldingAmount, "Trading limited");
        }
        super._beforeTokenTransfer(from, to, amount);
    }

    //--------------------------------------------------------------
    // TRANSACTION COUNTER    
    function _afterTokenTransfer(address from, address to, uint256 amount) internal override {
        transactionCounter += 1;
        super._afterTokenTransfer(from, to, amount);
    }
       
    //--------------------------------------------------------------
    // PAUSE FOREVER
    function pauseForever() external whenNotPaused {
        require(block.number >= creationBlock + blockLimit, "The Doomsday Block hasn't been reached.");
        require(transactionCounter < minTransactions, "Hurray, self-destruction has been avoided!");
        payable(msg.sender).transfer (address(this).balance);
        _pause();
    }
    
    //--------------------------------------------------------------
    // UNPAUSE
    function unpauseContract() external whenPaused onlyOwner {
        _unpause();
    }
   
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","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":[],"name":"blockLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cexSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cexWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creationBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creatorSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creatorWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"minTransactions","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":"pauseForever","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_limitTrading","type":"bool"},{"internalType":"address","name":"_uniswapPool","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":[],"name":"transactionCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpauseContract","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6101c060405234801562000011575f80fd5b506040518060400160405280600681526020017f49636172757300000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f494341525553000000000000000000000000000000000000000000000000000081525081600390816200008f919062000bef565b508060049081620000a1919062000bef565b5050505f60055f6101000a81548160ff021916908315150217905550620000dd620000d1620002df60201b60201c565b620002e660201b60201c565b620000ed620003ab60201b60201c565b600a620000fb919062000e5c565b6422d4ba5a6c6200010d919062000eac565b608081815250506008600a60805162000127919062000f23565b62000133919062000eac565b60a08181525050600a6080516200014b919062000f23565b60c0818152505060c05160a05160805162000167919062000f5a565b62000173919062000f5a565b60e081815250503373ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff168152505073042dae440fd05cd84d84eb1a2f6e3811a9d5780073ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1681525050739622e79e6a0d138d60a36aa5cb7c063462277fe573ffffffffffffffffffffffffffffffffffffffff166101408173ffffffffffffffffffffffffffffffffffffffff1681525050600160075f6101000a81548160ff021916908315150217905550620f42406008819055505f6009819055504361016081815250506227ac406101808181525050620f42406101a081815250505f600b81905550620002ab6101005160a051620003b360201b60201c565b620002c26101205160c051620003b360201b60201c565b620002d96101405160e051620003b360201b60201c565b62001230565b5f33905090565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000424576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200041b9062000ff2565b60405180910390fd5b620004375f83836200051860201b60201c565b8060025f8282546200044a919062001012565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004f991906200105d565b60405180910390a3620005145f83836200089f60201b60201c565b5050565b62000528620008d260201b60201c565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015620005c7575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b62000609576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200060090620010c6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160362000786576101005173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620006ca57506101005173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806200070457506101205173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806200073e57506101405173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b62000780576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007779062001134565b60405180910390fd5b6200089a565b60075f9054906101000a900460ff168015620007ee5750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000886576008548162000809846200092760201b60201c565b62000815919062001012565b111580156200084357506009548162000834846200092760201b60201c565b62000840919062001012565b10155b62000885576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200087c90620011a2565b60405180910390fd5b5b620008998383836200096c60201b60201c565b5b505050565b6001600b5f828254620008b3919062001012565b92505081905550620008cd8383836200097160201b60201c565b505050565b620008e26200097660201b60201c565b1562000925576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200091c9062001210565b60405180910390fd5b565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b505050565b505050565b5f60055f9054906101000a900460ff16905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a0757607f821691505b60208210810362000a1d5762000a1c620009c2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000a817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a44565b62000a8d868362000a44565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000ad762000ad162000acb8462000aa5565b62000aae565b62000aa5565b9050919050565b5f819050919050565b62000af28362000ab7565b62000b0a62000b018262000ade565b84845462000a50565b825550505050565b5f90565b62000b2062000b12565b62000b2d81848462000ae7565b505050565b5b8181101562000b545762000b485f8262000b16565b60018101905062000b33565b5050565b601f82111562000ba35762000b6d8162000a23565b62000b788462000a35565b8101602085101562000b88578190505b62000ba062000b978562000a35565b83018262000b32565b50505b505050565b5f82821c905092915050565b5f62000bc55f198460080262000ba8565b1980831691505092915050565b5f62000bdf838362000bb4565b9150826002028217905092915050565b62000bfa826200098b565b67ffffffffffffffff81111562000c165762000c1562000995565b5b62000c228254620009ef565b62000c2f82828562000b58565b5f60209050601f83116001811462000c65575f841562000c50578287015190505b62000c5c858262000bd2565b86555062000ccb565b601f19841662000c758662000a23565b5f5b8281101562000c9e5784890151825560018201915060208501945060208101905062000c77565b8683101562000cbe578489015162000cba601f89168262000bb4565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000d5d5780860481111562000d355762000d3462000cd3565b5b600185161562000d455780820291505b808102905062000d558562000d00565b945062000d15565b94509492505050565b5f8262000d77576001905062000e49565b8162000d86575f905062000e49565b816001811462000d9f576002811462000daa5762000de0565b600191505062000e49565b60ff84111562000dbf5762000dbe62000cd3565b5b8360020a91508482111562000dd95762000dd862000cd3565b5b5062000e49565b5060208310610133831016604e8410600b841016171562000e1a5782820a90508381111562000e145762000e1362000cd3565b5b62000e49565b62000e29848484600162000d0c565b9250905081840481111562000e435762000e4262000cd3565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000e688262000aa5565b915062000e758362000e50565b925062000ea47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d66565b905092915050565b5f62000eb88262000aa5565b915062000ec58362000aa5565b925082820262000ed58162000aa5565b9150828204841483151762000eef5762000eee62000cd3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000f2f8262000aa5565b915062000f3c8362000aa5565b92508262000f4f5762000f4e62000ef6565b5b828204905092915050565b5f62000f668262000aa5565b915062000f738362000aa5565b925082820390508181111562000f8e5762000f8d62000cd3565b5b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000fda601f8362000f94565b915062000fe78262000fa4565b602082019050919050565b5f6020820190508181035f8301526200100b8162000fcc565b9050919050565b5f6200101e8262000aa5565b91506200102b8362000aa5565b925082820190508082111562001046576200104562000cd3565b5b92915050565b620010578162000aa5565b82525050565b5f602082019050620010725f8301846200104c565b92915050565b7f4164647265737320426c61636b6c6973746564000000000000000000000000005f82015250565b5f620010ae60138362000f94565b9150620010bb8262001078565b602082019050919050565b5f6020820190508181035f830152620010df81620010a0565b9050919050565b7f546f6b656e207472616e73666572206e6f7420617661696c61626c65000000005f82015250565b5f6200111c601c8362000f94565b91506200112982620010e6565b602082019050919050565b5f6020820190508181035f8301526200114d816200110e565b9050919050565b7f54726164696e67206c696d6974656400000000000000000000000000000000005f82015250565b5f6200118a600f8362000f94565b9150620011978262001154565b602082019050919050565b5f6020820190508181035f830152620011bb816200117c565b9050919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f620011f860108362000f94565b91506200120582620011c2565b602082019050919050565b5f6020820190508181035f8301526200122981620011ea565b9050919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516129c4620012d15f395f81816108df0152610bc301525f81816108510152610ec801525f81816107c4015261087201525f8181610b9f0152611a4301525f8181610d3d01526119ed01525f81816107f701528181611942015261199701525f6106cb01525f610af101525f610da001525f61099901526129c45ff3fe608060405234801561000f575f80fd5b5060043610610225575f3560e01c8063611c53181161012e57806395d89b41116100b6578063bdd3d8251161007a578063bdd3d82514610623578063ced1e80b14610641578063dd62ed3e1461065f578063f2fde38b1461068f578063f3bcd237146106ab57610225565b806395d89b411461057d578063a457c2d71461059b578063a9059cbb146105cb578063b1075943146105fb578063b33712c51461061957610225565b806379cc6790116100fd57806379cc6790146104e95780637cdc65f214610505578063819d2ed81461052357806389f9a1d3146105415780638da5cb5b1461055f57610225565b8063611c531814610473578063641344791461049157806370a08231146104af578063715018a6146104df57610225565b806323b872dd116101b1578063395093511161018057806339509351146103d15780633aa633aa14610401578063404e51291461041d57806342966c68146104395780635c975abb1461045557610225565b806323b872dd1461035b5780632d62975a1461038b578063313ce56714610395578063378dc3dc146103b357610225565b806316c02129116101f857806316c02129146102b357806317634514146102e357806318160ddd146103015780631ab99e121461031f57806323b62b751461033d57610225565b8063059caad31461022957806306fdde0314610247578063095ea7b31461026557806314e887e814610295575b5f80fd5b6102316106c9565b60405161023e9190611c17565b60405180910390f35b61024f6106ed565b60405161025c9190611cba565b60405180910390f35b61027f600480360381019061027a9190611d62565b61077d565b60405161028c9190611dba565b60405180910390f35b61029d61079f565b6040516102aa9190611c17565b60405180910390f35b6102cd60048036038101906102c89190611dd3565b6107a5565b6040516102da9190611dba565b60405180910390f35b6102eb6107c2565b6040516102f89190611c17565b60405180910390f35b6103096107e6565b6040516103169190611c17565b60405180910390f35b6103276107ef565b6040516103349190611c17565b60405180910390f35b6103456107f5565b6040516103529190611e0d565b60405180910390f35b61037560048036038101906103709190611e26565b610819565b6040516103829190611dba565b60405180910390f35b610393610847565b005b61039d61098f565b6040516103aa9190611e91565b60405180910390f35b6103bb610997565b6040516103c89190611c17565b60405180910390f35b6103eb60048036038101906103e69190611d62565b6109bb565b6040516103f89190611dba565b60405180910390f35b61041b60048036038101906104169190611ed4565b6109f1565b005b61043760048036038101906104329190611f38565b610a66565b005b610453600480360381019061044e9190611f76565b610ac6565b005b61045d610ada565b60405161046a9190611dba565b60405180910390f35b61047b610aef565b6040516104889190611c17565b60405180910390f35b610499610b13565b6040516104a69190611dba565b60405180910390f35b6104c960048036038101906104c49190611dd3565b610b25565b6040516104d69190611c17565b60405180910390f35b6104e7610b6a565b005b61050360048036038101906104fe9190611d62565b610b7d565b005b61050d610b9d565b60405161051a9190611e0d565b60405180910390f35b61052b610bc1565b6040516105389190611c17565b60405180910390f35b610549610be5565b6040516105569190611c17565b60405180910390f35b610567610beb565b6040516105749190611e0d565b60405180910390f35b610585610c14565b6040516105929190611cba565b60405180910390f35b6105b560048036038101906105b09190611d62565b610ca4565b6040516105c29190611dba565b60405180910390f35b6105e560048036038101906105e09190611d62565b610d19565b6040516105f29190611dba565b60405180910390f35b610603610d3b565b6040516106109190611e0d565b60405180910390f35b610621610d5f565b005b61062b610d79565b6040516106389190611e0d565b60405180910390f35b610649610d9e565b6040516106569190611c17565b60405180910390f35b61067960048036038101906106749190611fa1565b610dc2565b6040516106869190611c17565b60405180910390f35b6106a960048036038101906106a49190611dd3565b610e44565b005b6106b3610ec6565b6040516106c09190611c17565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546106fc9061200c565b80601f01602080910402602001604051908101604052809291908181526020018280546107289061200c565b80156107735780601f1061074a57610100808354040283529160200191610773565b820191905f5260205f20905b81548152906001019060200180831161075657829003601f168201915b5050505050905090565b5f80610787610eea565b9050610794818585610ef1565b600191505092915050565b600b5481565b6006602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b60095481565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f80610823610eea565b90506108308582856110b4565b61083b85858561113f565b60019150509392505050565b61084f6113ab565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061089b9190612069565b4310156108dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d49061210c565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000600b5410610941576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109389061219a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610984573d5f803e3d5ffd5b5061098d6113f5565b565b5f6012905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f806109c5610eea565b90506109e68185856109d78589610dc2565b6109e19190612069565b610ef1565b600191505092915050565b6109f9611457565b8360075f6101000a81548160ff02191690831515021790555082600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816008819055508060098190555050505050565b610a6e611457565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610ad7610ad1610eea565b826114d5565b50565b5f60055f9054906101000a900460ff16905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60075f9054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b72611457565b610b7b5f611698565b565b610b8f82610b89610eea565b836110b4565b610b9982826114d5565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60085481565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c239061200c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4f9061200c565b8015610c9a5780601f10610c7157610100808354040283529160200191610c9a565b820191905f5260205f20905b815481529060010190602001808311610c7d57829003601f168201915b5050505050905090565b5f80610cae610eea565b90505f610cbb8286610dc2565b905083811015610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf790612228565b60405180910390fd5b610d0d8286868403610ef1565b60019250505092915050565b5f80610d23610eea565b9050610d3081858561113f565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610d6761175d565b610d6f611457565b610d776117a6565b565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e4c611457565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb1906122b6565b60405180910390fd5b610ec381611698565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5690612344565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc4906123d2565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110a79190611c17565b60405180910390a3505050565b5f6110bf8484610dc2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611139578181101561112b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111229061243a565b60405180910390fd5b6111388484848403610ef1565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a4906124c8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121290612556565b60405180910390fd5b611226838383611807565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a0906125e4565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113929190611c17565b60405180910390a36113a5848484611bcc565b50505050565b6113b3610ada565b156113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea9061264c565b60405180910390fd5b565b6113fd6113ab565b600160055f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611440610eea565b60405161144d9190611e0d565b60405180910390a1565b61145f610eea565b73ffffffffffffffffffffffffffffffffffffffff1661147d610beb565b73ffffffffffffffffffffffffffffffffffffffff16146114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca906126b4565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a90612742565b60405180910390fd5b61154e825f83611807565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156115d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c8906127d0565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116809190611c17565b60405180910390a3611693835f84611bcc565b505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611765610ada565b6117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b90612838565b60405180910390fd5b565b6117ae61175d565b5f60055f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6117f0610eea565b6040516117fd9190611e0d565b60405180910390a1565b61180f6113ab565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156118ad575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6118ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e3906128a0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611ad5577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806119e557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611a3b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611a9157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac790612908565b60405180910390fd5b611bc7565b60075f9054906101000a900460ff168015611b3c5750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611bbb5760085481611b4e84610b25565b611b589190612069565b11158015611b7b575060095481611b6e84610b25565b611b789190612069565b10155b611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190612970565b60405180910390fd5b5b611bc6838383611bf5565b5b505050565b6001600b5f828254611bde9190612069565b92505081905550611bf0838383611bfa565b505050565b505050565b505050565b5f819050919050565b611c1181611bff565b82525050565b5f602082019050611c2a5f830184611c08565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611c67578082015181840152602081019050611c4c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611c8c82611c30565b611c968185611c3a565b9350611ca6818560208601611c4a565b611caf81611c72565b840191505092915050565b5f6020820190508181035f830152611cd28184611c82565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d0782611cde565b9050919050565b611d1781611cfd565b8114611d21575f80fd5b50565b5f81359050611d3281611d0e565b92915050565b611d4181611bff565b8114611d4b575f80fd5b50565b5f81359050611d5c81611d38565b92915050565b5f8060408385031215611d7857611d77611cda565b5b5f611d8585828601611d24565b9250506020611d9685828601611d4e565b9150509250929050565b5f8115159050919050565b611db481611da0565b82525050565b5f602082019050611dcd5f830184611dab565b92915050565b5f60208284031215611de857611de7611cda565b5b5f611df584828501611d24565b91505092915050565b611e0781611cfd565b82525050565b5f602082019050611e205f830184611dfe565b92915050565b5f805f60608486031215611e3d57611e3c611cda565b5b5f611e4a86828701611d24565b9350506020611e5b86828701611d24565b9250506040611e6c86828701611d4e565b9150509250925092565b5f60ff82169050919050565b611e8b81611e76565b82525050565b5f602082019050611ea45f830184611e82565b92915050565b611eb381611da0565b8114611ebd575f80fd5b50565b5f81359050611ece81611eaa565b92915050565b5f805f8060808587031215611eec57611eeb611cda565b5b5f611ef987828801611ec0565b9450506020611f0a87828801611d24565b9350506040611f1b87828801611d4e565b9250506060611f2c87828801611d4e565b91505092959194509250565b5f8060408385031215611f4e57611f4d611cda565b5b5f611f5b85828601611d24565b9250506020611f6c85828601611ec0565b9150509250929050565b5f60208284031215611f8b57611f8a611cda565b5b5f611f9884828501611d4e565b91505092915050565b5f8060408385031215611fb757611fb6611cda565b5b5f611fc485828601611d24565b9250506020611fd585828601611d24565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061202357607f821691505b60208210810361203657612035611fdf565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61207382611bff565b915061207e83611bff565b92508282019050808211156120965761209561203c565b5b92915050565b7f54686520446f6f6d7364617920426c6f636b206861736e2774206265656e20725f8201527f6561636865642e00000000000000000000000000000000000000000000000000602082015250565b5f6120f6602783611c3a565b91506121018261209c565b604082019050919050565b5f6020820190508181035f830152612123816120ea565b9050919050565b7f4875727261792c2073656c662d6465737472756374696f6e20686173206265655f8201527f6e2061766f696465642100000000000000000000000000000000000000000000602082015250565b5f612184602a83611c3a565b915061218f8261212a565b604082019050919050565b5f6020820190508181035f8301526121b181612178565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612212602583611c3a565b915061221d826121b8565b604082019050919050565b5f6020820190508181035f83015261223f81612206565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6122a0602683611c3a565b91506122ab82612246565b604082019050919050565b5f6020820190508181035f8301526122cd81612294565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61232e602483611c3a565b9150612339826122d4565b604082019050919050565b5f6020820190508181035f83015261235b81612322565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6123bc602283611c3a565b91506123c782612362565b604082019050919050565b5f6020820190508181035f8301526123e9816123b0565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612424601d83611c3a565b915061242f826123f0565b602082019050919050565b5f6020820190508181035f83015261245181612418565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6124b2602583611c3a565b91506124bd82612458565b604082019050919050565b5f6020820190508181035f8301526124df816124a6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612540602383611c3a565b915061254b826124e6565b604082019050919050565b5f6020820190508181035f83015261256d81612534565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6125ce602683611c3a565b91506125d982612574565b604082019050919050565b5f6020820190508181035f8301526125fb816125c2565b9050919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f612636601083611c3a565b915061264182612602565b602082019050919050565b5f6020820190508181035f8301526126638161262a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61269e602083611c3a565b91506126a98261266a565b602082019050919050565b5f6020820190508181035f8301526126cb81612692565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f61272c602183611c3a565b9150612737826126d2565b604082019050919050565b5f6020820190508181035f83015261275981612720565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6127ba602283611c3a565b91506127c582612760565b604082019050919050565b5f6020820190508181035f8301526127e7816127ae565b9050919050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f612822601483611c3a565b915061282d826127ee565b602082019050919050565b5f6020820190508181035f83015261284f81612816565b9050919050565b7f4164647265737320426c61636b6c6973746564000000000000000000000000005f82015250565b5f61288a601383611c3a565b915061289582612856565b602082019050919050565b5f6020820190508181035f8301526128b78161287e565b9050919050565b7f546f6b656e207472616e73666572206e6f7420617661696c61626c65000000005f82015250565b5f6128f2601c83611c3a565b91506128fd826128be565b602082019050919050565b5f6020820190508181035f83015261291f816128e6565b9050919050565b7f54726164696e67206c696d6974656400000000000000000000000000000000005f82015250565b5f61295a600f83611c3a565b915061296582612926565b602082019050919050565b5f6020820190508181035f8301526129878161294e565b905091905056fea264697066735822122076fe1d7ba4d9aff4112b749288034666281241617cfe76c6384f8917b8c8270b64736f6c63430008140033

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610225575f3560e01c8063611c53181161012e57806395d89b41116100b6578063bdd3d8251161007a578063bdd3d82514610623578063ced1e80b14610641578063dd62ed3e1461065f578063f2fde38b1461068f578063f3bcd237146106ab57610225565b806395d89b411461057d578063a457c2d71461059b578063a9059cbb146105cb578063b1075943146105fb578063b33712c51461061957610225565b806379cc6790116100fd57806379cc6790146104e95780637cdc65f214610505578063819d2ed81461052357806389f9a1d3146105415780638da5cb5b1461055f57610225565b8063611c531814610473578063641344791461049157806370a08231146104af578063715018a6146104df57610225565b806323b872dd116101b1578063395093511161018057806339509351146103d15780633aa633aa14610401578063404e51291461041d57806342966c68146104395780635c975abb1461045557610225565b806323b872dd1461035b5780632d62975a1461038b578063313ce56714610395578063378dc3dc146103b357610225565b806316c02129116101f857806316c02129146102b357806317634514146102e357806318160ddd146103015780631ab99e121461031f57806323b62b751461033d57610225565b8063059caad31461022957806306fdde0314610247578063095ea7b31461026557806314e887e814610295575b5f80fd5b6102316106c9565b60405161023e9190611c17565b60405180910390f35b61024f6106ed565b60405161025c9190611cba565b60405180910390f35b61027f600480360381019061027a9190611d62565b61077d565b60405161028c9190611dba565b60405180910390f35b61029d61079f565b6040516102aa9190611c17565b60405180910390f35b6102cd60048036038101906102c89190611dd3565b6107a5565b6040516102da9190611dba565b60405180910390f35b6102eb6107c2565b6040516102f89190611c17565b60405180910390f35b6103096107e6565b6040516103169190611c17565b60405180910390f35b6103276107ef565b6040516103349190611c17565b60405180910390f35b6103456107f5565b6040516103529190611e0d565b60405180910390f35b61037560048036038101906103709190611e26565b610819565b6040516103829190611dba565b60405180910390f35b610393610847565b005b61039d61098f565b6040516103aa9190611e91565b60405180910390f35b6103bb610997565b6040516103c89190611c17565b60405180910390f35b6103eb60048036038101906103e69190611d62565b6109bb565b6040516103f89190611dba565b60405180910390f35b61041b60048036038101906104169190611ed4565b6109f1565b005b61043760048036038101906104329190611f38565b610a66565b005b610453600480360381019061044e9190611f76565b610ac6565b005b61045d610ada565b60405161046a9190611dba565b60405180910390f35b61047b610aef565b6040516104889190611c17565b60405180910390f35b610499610b13565b6040516104a69190611dba565b60405180910390f35b6104c960048036038101906104c49190611dd3565b610b25565b6040516104d69190611c17565b60405180910390f35b6104e7610b6a565b005b61050360048036038101906104fe9190611d62565b610b7d565b005b61050d610b9d565b60405161051a9190611e0d565b60405180910390f35b61052b610bc1565b6040516105389190611c17565b60405180910390f35b610549610be5565b6040516105569190611c17565b60405180910390f35b610567610beb565b6040516105749190611e0d565b60405180910390f35b610585610c14565b6040516105929190611cba565b60405180910390f35b6105b560048036038101906105b09190611d62565b610ca4565b6040516105c29190611dba565b60405180910390f35b6105e560048036038101906105e09190611d62565b610d19565b6040516105f29190611dba565b60405180910390f35b610603610d3b565b6040516106109190611e0d565b60405180910390f35b610621610d5f565b005b61062b610d79565b6040516106389190611e0d565b60405180910390f35b610649610d9e565b6040516106569190611c17565b60405180910390f35b61067960048036038101906106749190611fa1565b610dc2565b6040516106869190611c17565b60405180910390f35b6106a960048036038101906106a49190611dd3565b610e44565b005b6106b3610ec6565b6040516106c09190611c17565b60405180910390f35b7f0000000000000000000000000000000000000000305672220f8bddedfa38000081565b6060600380546106fc9061200c565b80601f01602080910402602001604051908101604052809291908181526020018280546107289061200c565b80156107735780601f1061074a57610100808354040283529160200191610773565b820191905f5260205f20905b81548152906001019060200180831161075657829003601f168201915b5050505050905090565b5f80610787610eea565b9050610794818585610ef1565b600191505092915050565b600b5481565b6006602052805f5260405f205f915054906101000a900460ff1681565b7f00000000000000000000000000000000000000000000000000000000010a616b81565b5f600254905090565b60095481565b7f000000000000000000000000a38ef3d07804195a0cf4c0dc137ac650af5e158b81565b5f80610823610eea565b90506108308582856110b4565b61083b85858561113f565b60019150509392505050565b61084f6113ab565b7f000000000000000000000000000000000000000000000000000000000027ac407f00000000000000000000000000000000000000000000000000000000010a616b61089b9190612069565b4310156108dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d49061210c565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000f4240600b5410610941576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109389061219a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610984573d5f803e3d5ffd5b5061098d6113f5565b565b5f6012905090565b7f0000000000000000000000000000000000000001e36075549b76ab4bc630000081565b5f806109c5610eea565b90506109e68185856109d78589610dc2565b6109e19190612069565b610ef1565b600191505092915050565b6109f9611457565b8360075f6101000a81548160ff02191690831515021790555082600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816008819055508060098190555050505050565b610a6e611457565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610ad7610ad1610eea565b826114d5565b50565b5f60055f9054906101000a900460ff16905090565b7f0000000000000000000000000000000000000000305672220f8bddedfa38000081565b60075f9054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b72611457565b610b7b5f611698565b565b610b8f82610b89610eea565b836110b4565b610b9982826114d5565b5050565b7f0000000000000000000000009622e79e6a0d138d60a36aa5cb7c063462277fe581565b7f00000000000000000000000000000000000000000000000000000000000f424081565b60085481565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c239061200c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4f9061200c565b8015610c9a5780601f10610c7157610100808354040283529160200191610c9a565b820191905f5260205f20905b815481529060010190602001808311610c7d57829003601f168201915b5050505050905090565b5f80610cae610eea565b90505f610cbb8286610dc2565b905083811015610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf790612228565b60405180910390fd5b610d0d8286868403610ef1565b60019250505092915050565b5f80610d23610eea565b9050610d3081858561113f565b600191505092915050565b7f000000000000000000000000042dae440fd05cd84d84eb1a2f6e3811a9d5780081565b610d6761175d565b610d6f611457565b610d776117a6565b565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000182b391107c5eef6fd1c0000081565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e4c611457565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb1906122b6565b60405180910390fd5b610ec381611698565b50565b7f000000000000000000000000000000000000000000000000000000000027ac4081565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5690612344565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc4906123d2565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110a79190611c17565b60405180910390a3505050565b5f6110bf8484610dc2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611139578181101561112b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111229061243a565b60405180910390fd5b6111388484848403610ef1565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a4906124c8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121290612556565b60405180910390fd5b611226838383611807565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a0906125e4565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113929190611c17565b60405180910390a36113a5848484611bcc565b50505050565b6113b3610ada565b156113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea9061264c565b60405180910390fd5b565b6113fd6113ab565b600160055f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611440610eea565b60405161144d9190611e0d565b60405180910390a1565b61145f610eea565b73ffffffffffffffffffffffffffffffffffffffff1661147d610beb565b73ffffffffffffffffffffffffffffffffffffffff16146114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca906126b4565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a90612742565b60405180910390fd5b61154e825f83611807565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156115d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c8906127d0565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116809190611c17565b60405180910390a3611693835f84611bcc565b505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611765610ada565b6117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b90612838565b60405180910390fd5b565b6117ae61175d565b5f60055f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6117f0610eea565b6040516117fd9190611e0d565b60405180910390a1565b61180f6113ab565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156118ad575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6118ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e3906128a0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611ad5577f000000000000000000000000a38ef3d07804195a0cf4c0dc137ac650af5e158b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806119e557507f000000000000000000000000a38ef3d07804195a0cf4c0dc137ac650af5e158b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611a3b57507f000000000000000000000000042dae440fd05cd84d84eb1a2f6e3811a9d5780073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611a9157507f0000000000000000000000009622e79e6a0d138d60a36aa5cb7c063462277fe573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac790612908565b60405180910390fd5b611bc7565b60075f9054906101000a900460ff168015611b3c5750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611bbb5760085481611b4e84610b25565b611b589190612069565b11158015611b7b575060095481611b6e84610b25565b611b789190612069565b10155b611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190612970565b60405180910390fd5b5b611bc6838383611bf5565b5b505050565b6001600b5f828254611bde9190612069565b92505081905550611bf0838383611bfa565b505050565b505050565b505050565b5f819050919050565b611c1181611bff565b82525050565b5f602082019050611c2a5f830184611c08565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611c67578082015181840152602081019050611c4c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611c8c82611c30565b611c968185611c3a565b9350611ca6818560208601611c4a565b611caf81611c72565b840191505092915050565b5f6020820190508181035f830152611cd28184611c82565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d0782611cde565b9050919050565b611d1781611cfd565b8114611d21575f80fd5b50565b5f81359050611d3281611d0e565b92915050565b611d4181611bff565b8114611d4b575f80fd5b50565b5f81359050611d5c81611d38565b92915050565b5f8060408385031215611d7857611d77611cda565b5b5f611d8585828601611d24565b9250506020611d9685828601611d4e565b9150509250929050565b5f8115159050919050565b611db481611da0565b82525050565b5f602082019050611dcd5f830184611dab565b92915050565b5f60208284031215611de857611de7611cda565b5b5f611df584828501611d24565b91505092915050565b611e0781611cfd565b82525050565b5f602082019050611e205f830184611dfe565b92915050565b5f805f60608486031215611e3d57611e3c611cda565b5b5f611e4a86828701611d24565b9350506020611e5b86828701611d24565b9250506040611e6c86828701611d4e565b9150509250925092565b5f60ff82169050919050565b611e8b81611e76565b82525050565b5f602082019050611ea45f830184611e82565b92915050565b611eb381611da0565b8114611ebd575f80fd5b50565b5f81359050611ece81611eaa565b92915050565b5f805f8060808587031215611eec57611eeb611cda565b5b5f611ef987828801611ec0565b9450506020611f0a87828801611d24565b9350506040611f1b87828801611d4e565b9250506060611f2c87828801611d4e565b91505092959194509250565b5f8060408385031215611f4e57611f4d611cda565b5b5f611f5b85828601611d24565b9250506020611f6c85828601611ec0565b9150509250929050565b5f60208284031215611f8b57611f8a611cda565b5b5f611f9884828501611d4e565b91505092915050565b5f8060408385031215611fb757611fb6611cda565b5b5f611fc485828601611d24565b9250506020611fd585828601611d24565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061202357607f821691505b60208210810361203657612035611fdf565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61207382611bff565b915061207e83611bff565b92508282019050808211156120965761209561203c565b5b92915050565b7f54686520446f6f6d7364617920426c6f636b206861736e2774206265656e20725f8201527f6561636865642e00000000000000000000000000000000000000000000000000602082015250565b5f6120f6602783611c3a565b91506121018261209c565b604082019050919050565b5f6020820190508181035f830152612123816120ea565b9050919050565b7f4875727261792c2073656c662d6465737472756374696f6e20686173206265655f8201527f6e2061766f696465642100000000000000000000000000000000000000000000602082015250565b5f612184602a83611c3a565b915061218f8261212a565b604082019050919050565b5f6020820190508181035f8301526121b181612178565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612212602583611c3a565b915061221d826121b8565b604082019050919050565b5f6020820190508181035f83015261223f81612206565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6122a0602683611c3a565b91506122ab82612246565b604082019050919050565b5f6020820190508181035f8301526122cd81612294565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61232e602483611c3a565b9150612339826122d4565b604082019050919050565b5f6020820190508181035f83015261235b81612322565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6123bc602283611c3a565b91506123c782612362565b604082019050919050565b5f6020820190508181035f8301526123e9816123b0565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612424601d83611c3a565b915061242f826123f0565b602082019050919050565b5f6020820190508181035f83015261245181612418565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6124b2602583611c3a565b91506124bd82612458565b604082019050919050565b5f6020820190508181035f8301526124df816124a6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612540602383611c3a565b915061254b826124e6565b604082019050919050565b5f6020820190508181035f83015261256d81612534565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6125ce602683611c3a565b91506125d982612574565b604082019050919050565b5f6020820190508181035f8301526125fb816125c2565b9050919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f612636601083611c3a565b915061264182612602565b602082019050919050565b5f6020820190508181035f8301526126638161262a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61269e602083611c3a565b91506126a98261266a565b602082019050919050565b5f6020820190508181035f8301526126cb81612692565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f61272c602183611c3a565b9150612737826126d2565b604082019050919050565b5f6020820190508181035f83015261275981612720565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6127ba602283611c3a565b91506127c582612760565b604082019050919050565b5f6020820190508181035f8301526127e7816127ae565b9050919050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f612822601483611c3a565b915061282d826127ee565b602082019050919050565b5f6020820190508181035f83015261284f81612816565b9050919050565b7f4164647265737320426c61636b6c6973746564000000000000000000000000005f82015250565b5f61288a601383611c3a565b915061289582612856565b602082019050919050565b5f6020820190508181035f8301526128b78161287e565b9050919050565b7f546f6b656e207472616e73666572206e6f7420617661696c61626c65000000005f82015250565b5f6128f2601c83611c3a565b91506128fd826128be565b602082019050919050565b5f6020820190508181035f83015261291f816128e6565b9050919050565b7f54726164696e67206c696d6974656400000000000000000000000000000000005f82015250565b5f61295a600f83611c3a565b915061296582612926565b602082019050919050565b5f6020820190508181035f8301526129878161294e565b905091905056fea264697066735822122076fe1d7ba4d9aff4112b749288034666281241617cfe76c6384f8917b8c8270b64736f6c63430008140033

Deployed Bytecode Sourcemap

23940:4050:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24133:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6419:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8779:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24657:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24318:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24523:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7548:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24442:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24184:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9560:261;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27454:344;;;:::i;:::-;;7390:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24006:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10230:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25970:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25724:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17924:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22774:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24092:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24373:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7719:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20334:103;;;:::i;:::-;;18334:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24267:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24610:40;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24404:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19693:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6638:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10971:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8052:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24226:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27896:86;;;:::i;:::-;;24480:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24051:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8308:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20592:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24568:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24133:38;;;:::o;6419:100::-;6473:13;6506:5;6499:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6419:100;:::o;8779:201::-;8862:4;8879:13;8895:12;:10;:12::i;:::-;8879:28;;8918:32;8927:5;8934:7;8943:6;8918:8;:32::i;:::-;8968:4;8961:11;;;8779:201;;;;:::o;24657:33::-;;;;:::o;24318:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;24523:38::-;;;:::o;7548:108::-;7609:7;7636:12;;7629:19;;7548:108;:::o;24442:31::-;;;;:::o;24184:35::-;;;:::o;9560:261::-;9657:4;9674:15;9692:12;:10;:12::i;:::-;9674:30;;9715:38;9731:4;9737:7;9746:6;9715:15;:38::i;:::-;9764:27;9774:4;9780:2;9784:6;9764:9;:27::i;:::-;9809:4;9802:11;;;9560:261;;;;;:::o;27454:344::-;22379:19;:17;:19::i;:::-;27552:10:::1;27536:13;:26;;;;:::i;:::-;27520:12;:42;;27512:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;27646:15;27625:18;;:36;27617:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;27727:10;27719:28;;:52;27749:21;27719:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27782:8;:6;:8::i;:::-;27454:344::o:0;7390:93::-;7448:5;7473:2;7466:9;;7390:93;:::o;24006:38::-;;;:::o;10230:238::-;10318:4;10335:13;10351:12;:10;:12::i;:::-;10335:28;;10374:64;10383:5;10390:7;10427:10;10399:25;10409:5;10416:7;10399:9;:25::i;:::-;:38;;;;:::i;:::-;10374:8;:64::i;:::-;10456:4;10449:11;;;10230:238;;;;:::o;25970:310::-;19579:13;:11;:13::i;:::-;26128::::1;26113:12;;:28;;;;;;;;;;;;;;;;;;26166:12;26152:11;;:26;;;;;;;;;;;;;;;;;;26208:17;26189:16;:36;;;;26255:17;26236:16;:36;;;;25970:310:::0;;;;:::o;25724:135::-;19579:13;:11;:13::i;:::-;25836:15:::1;25813:10;:20;25824:8;25813:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;25724:135:::0;;:::o;17924:91::-;17980:27;17986:12;:10;:12::i;:::-;18000:6;17980:5;:27::i;:::-;17924:91;:::o;22774:86::-;22821:4;22845:7;;;;;;;;;;;22838:14;;22774:86;:::o;24092:34::-;;;:::o;24373:24::-;;;;;;;;;;;;;:::o;7719:127::-;7793:7;7820:9;:18;7830:7;7820:18;;;;;;;;;;;;;;;;7813:25;;7719:127;;;:::o;20334:103::-;19579:13;:11;:13::i;:::-;20399:30:::1;20426:1;20399:18;:30::i;:::-;20334:103::o:0;18334:164::-;18411:46;18427:7;18436:12;:10;:12::i;:::-;18450:6;18411:15;:46::i;:::-;18468:22;18474:7;18483:6;18468:5;:22::i;:::-;18334:164;;:::o;24267:38::-;;;:::o;24610:40::-;;;:::o;24404:31::-;;;;:::o;19693:87::-;19739:7;19766:6;;;;;;;;;;;19759:13;;19693:87;:::o;6638:104::-;6694:13;6727:7;6720:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6638:104;:::o;10971:436::-;11064:4;11081:13;11097:12;:10;:12::i;:::-;11081:28;;11120:24;11147:25;11157:5;11164:7;11147:9;:25::i;:::-;11120:52;;11211:15;11191:16;:35;;11183:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11304:60;11313:5;11320:7;11348:15;11329:16;:34;11304:8;:60::i;:::-;11395:4;11388:11;;;;10971:436;;;;:::o;8052:193::-;8131:4;8148:13;8164:12;:10;:12::i;:::-;8148:28;;8187;8197:5;8204:2;8208:6;8187:9;:28::i;:::-;8233:4;8226:11;;;8052:193;;;;:::o;24226:34::-;;;:::o;27896:86::-;22638:16;:14;:16::i;:::-;19579:13:::1;:11;:13::i;:::-;27964:10:::2;:8;:10::i;:::-;27896:86::o:0;24480:26::-;;;;;;;;;;;;;:::o;24051:34::-;;;:::o;8308:151::-;8397:7;8424:11;:18;8436:5;8424:18;;;;;;;;;;;;;;;:27;8443:7;8424:27;;;;;;;;;;;;;;;;8417:34;;8308:151;;;;:::o;20592:201::-;19579:13;:11;:13::i;:::-;20701:1:::1;20681:22;;:8;:22;;::::0;20673:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20757:28;20776:8;20757:18;:28::i;:::-;20592:201:::0;:::o;24568:35::-;;;:::o;4113:98::-;4166:7;4193:10;4186:17;;4113:98;:::o;14964:346::-;15083:1;15066:19;;:5;:19;;;15058:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15164:1;15145:21;;:7;:21;;;15137:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15248:6;15218:11;:18;15230:5;15218:18;;;;;;;;;;;;;;;:27;15237:7;15218:27;;;;;;;;;;;;;;;:36;;;;15286:7;15270:32;;15279:5;15270:32;;;15295:6;15270:32;;;;;;:::i;:::-;;;;;;;;14964:346;;;:::o;15601:419::-;15702:24;15729:25;15739:5;15746:7;15729:9;:25::i;:::-;15702:52;;15789:17;15769:16;:37;15765:248;;15851:6;15831:16;:26;;15823:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15935:51;15944:5;15951:7;15979:6;15960:16;:25;15935:8;:51::i;:::-;15765:248;15691:329;15601:419;;;:::o;11877:806::-;11990:1;11974:18;;:4;:18;;;11966:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12067:1;12053:16;;:2;:16;;;12045:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12122:38;12143:4;12149:2;12153:6;12122:20;:38::i;:::-;12173:19;12195:9;:15;12205:4;12195:15;;;;;;;;;;;;;;;;12173:37;;12244:6;12229:11;:21;;12221:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12361:6;12347:11;:20;12329:9;:15;12339:4;12329:15;;;;;;;;;;;;;;;:38;;;;12564:6;12547:9;:13;12557:2;12547:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12614:2;12599:26;;12608:4;12599:26;;;12618:6;12599:26;;;;;;:::i;:::-;;;;;;;;12638:37;12658:4;12664:2;12668:6;12638:19;:37::i;:::-;11955:728;11877:806;;;:::o;22933:108::-;23004:8;:6;:8::i;:::-;23003:9;22995:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;22933:108::o;23370:118::-;22379:19;:17;:19::i;:::-;23440:4:::1;23430:7;;:14;;;;;;;;;;;;;;;;;;23460:20;23467:12;:10;:12::i;:::-;23460:20;;;;;;:::i;:::-;;;;;;;;23370:118::o:0;19858:132::-;19933:12;:10;:12::i;:::-;19922:23;;:7;:5;:7::i;:::-;:23;;;19914:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19858:132::o;13851:675::-;13954:1;13935:21;;:7;:21;;;13927:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14007:49;14028:7;14045:1;14049:6;14007:20;:49::i;:::-;14069:22;14094:9;:18;14104:7;14094:18;;;;;;;;;;;;;;;;14069:43;;14149:6;14131:14;:24;;14123:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14268:6;14251:14;:23;14230:9;:18;14240:7;14230:18;;;;;;;;;;;;;;;:44;;;;14385:6;14369:12;;:22;;;;;;;;;;;14446:1;14420:37;;14429:7;14420:37;;;14450:6;14420:37;;;;;;:::i;:::-;;;;;;;;14470:48;14490:7;14507:1;14511:6;14470:19;:48::i;:::-;13916:610;13851:675;;:::o;20953:191::-;21027:16;21046:6;;;;;;;;;;;21027:25;;21072:8;21063:6;;:17;;;;;;;;;;;;;;;;;;21127:8;21096:40;;21117:8;21096:40;;;;;;;;;;;;21016:128;20953:191;:::o;23118:108::-;23185:8;:6;:8::i;:::-;23177:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;23118:108::o;23629:120::-;22638:16;:14;:16::i;:::-;23698:5:::1;23688:7;;:15;;;;;;;;;;;;;;;;;;23719:22;23728:12;:10;:12::i;:::-;23719:22;;;;;;:::i;:::-;;;;;;;;23629:120::o:0;26390:662::-;22379:19;:17;:19::i;:::-;26514:10:::1;:14;26525:2;26514:14;;;;;;;;;;;;;;;;;;;;;;;;;26513:15;:36;;;;;26533:10;:16;26544:4;26533:16;;;;;;;;;;;;;;;;;;;;;;;;;26532:17;26513:36;26505:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26611:1;26588:25;;:11;;;;;;;;;;;:25;;::::0;26584:200:::1;;26646:10;26638:18;;:4;:18;;;:38;;;;26666:10;26660:16;;:2;:16;;;26638:38;:57;;;;26686:9;26680:15;;:2;:15;;;26638:57;:80;;;;26705:13;26699:19;;:2;:19;;;26638:80;26630:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;26766:7;;26584:200;26798:12;;;;;;;;;;;:35;;;;;26822:11;;;;;;;;;;;26814:19;;:4;:19;;;26798:35;26794:196;;;26890:16;;26880:6;26858:19;26874:2;26858:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;:100;;;;;26942:16;;26932:6;26910:19;26926:2;26910:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;26858:100;26850:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;26794:196;27000:44;27027:4;27033:2;27037:6;27000:26;:44::i;:::-;22409:1;26390:662:::0;;;:::o;27162:185::-;27284:1;27262:18;;:23;;;;;;;:::i;:::-;;;;;;;;27296:43;27322:4;27328:2;27332:6;27296:25;:43::i;:::-;27162:185;;;:::o;16620:91::-;;;;:::o;17315:90::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:118::-;4220:24;4238:5;4220:24;:::i;:::-;4215:3;4208:37;4133:118;;:::o;4257:222::-;4350:4;4388:2;4377:9;4373:18;4365:26;;4401:71;4469:1;4458:9;4454:17;4445:6;4401:71;:::i;:::-;4257:222;;;;:::o;4485:619::-;4562:6;4570;4578;4627:2;4615:9;4606:7;4602:23;4598:32;4595:119;;;4633:79;;:::i;:::-;4595:119;4753:1;4778:53;4823:7;4814:6;4803:9;4799:22;4778:53;:::i;:::-;4768:63;;4724:117;4880:2;4906:53;4951:7;4942:6;4931:9;4927:22;4906:53;:::i;:::-;4896:63;;4851:118;5008:2;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4979:118;4485:619;;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::o;5540:116::-;5610:21;5625:5;5610:21;:::i;:::-;5603:5;5600:32;5590:60;;5646:1;5643;5636:12;5590:60;5540:116;:::o;5662:133::-;5705:5;5743:6;5730:20;5721:29;;5759:30;5783:5;5759:30;:::i;:::-;5662:133;;;;:::o;5801:759::-;5884:6;5892;5900;5908;5957:3;5945:9;5936:7;5932:23;5928:33;5925:120;;;5964:79;;:::i;:::-;5925:120;6084:1;6109:50;6151:7;6142:6;6131:9;6127:22;6109:50;:::i;:::-;6099:60;;6055:114;6208:2;6234:53;6279:7;6270:6;6259:9;6255:22;6234:53;:::i;:::-;6224:63;;6179:118;6336:2;6362:53;6407:7;6398:6;6387:9;6383:22;6362:53;:::i;:::-;6352:63;;6307:118;6464:2;6490:53;6535:7;6526:6;6515:9;6511:22;6490:53;:::i;:::-;6480:63;;6435:118;5801:759;;;;;;;:::o;6566:468::-;6631:6;6639;6688:2;6676:9;6667:7;6663:23;6659:32;6656:119;;;6694:79;;:::i;:::-;6656:119;6814:1;6839:53;6884:7;6875:6;6864:9;6860:22;6839:53;:::i;:::-;6829:63;;6785:117;6941:2;6967:50;7009:7;7000:6;6989:9;6985:22;6967:50;:::i;:::-;6957:60;;6912:115;6566:468;;;;;:::o;7040:329::-;7099:6;7148:2;7136:9;7127:7;7123:23;7119:32;7116:119;;;7154:79;;:::i;:::-;7116:119;7274:1;7299:53;7344:7;7335:6;7324:9;7320:22;7299:53;:::i;:::-;7289:63;;7245:117;7040:329;;;;:::o;7375:474::-;7443:6;7451;7500:2;7488:9;7479:7;7475:23;7471:32;7468:119;;;7506:79;;:::i;:::-;7468:119;7626:1;7651:53;7696:7;7687:6;7676:9;7672:22;7651:53;:::i;:::-;7641:63;;7597:117;7753:2;7779:53;7824:7;7815:6;7804:9;7800:22;7779:53;:::i;:::-;7769:63;;7724:118;7375:474;;;;;:::o;7855:180::-;7903:77;7900:1;7893:88;8000:4;7997:1;7990:15;8024:4;8021:1;8014:15;8041:320;8085:6;8122:1;8116:4;8112:12;8102:22;;8169:1;8163:4;8159:12;8190:18;8180:81;;8246:4;8238:6;8234:17;8224:27;;8180:81;8308:2;8300:6;8297:14;8277:18;8274:38;8271:84;;8327:18;;:::i;:::-;8271:84;8092:269;8041:320;;;:::o;8367:180::-;8415:77;8412:1;8405:88;8512:4;8509:1;8502:15;8536:4;8533:1;8526:15;8553:191;8593:3;8612:20;8630:1;8612:20;:::i;:::-;8607:25;;8646:20;8664:1;8646:20;:::i;:::-;8641:25;;8689:1;8686;8682:9;8675:16;;8710:3;8707:1;8704:10;8701:36;;;8717:18;;:::i;:::-;8701:36;8553:191;;;;:::o;8750:226::-;8890:34;8886:1;8878:6;8874:14;8867:58;8959:9;8954:2;8946:6;8942:15;8935:34;8750:226;:::o;8982:366::-;9124:3;9145:67;9209:2;9204:3;9145:67;:::i;:::-;9138:74;;9221:93;9310:3;9221:93;:::i;:::-;9339:2;9334:3;9330:12;9323:19;;8982:366;;;:::o;9354:419::-;9520:4;9558:2;9547:9;9543:18;9535:26;;9607:9;9601:4;9597:20;9593:1;9582:9;9578:17;9571:47;9635:131;9761:4;9635:131;:::i;:::-;9627:139;;9354:419;;;:::o;9779:229::-;9919:34;9915:1;9907:6;9903:14;9896:58;9988:12;9983:2;9975:6;9971:15;9964:37;9779:229;:::o;10014:366::-;10156:3;10177:67;10241:2;10236:3;10177:67;:::i;:::-;10170:74;;10253:93;10342:3;10253:93;:::i;:::-;10371:2;10366:3;10362:12;10355:19;;10014:366;;;:::o;10386:419::-;10552:4;10590:2;10579:9;10575:18;10567:26;;10639:9;10633:4;10629:20;10625:1;10614:9;10610:17;10603:47;10667:131;10793:4;10667:131;:::i;:::-;10659:139;;10386:419;;;:::o;10811:224::-;10951:34;10947:1;10939:6;10935:14;10928:58;11020:7;11015:2;11007:6;11003:15;10996:32;10811:224;:::o;11041:366::-;11183:3;11204:67;11268:2;11263:3;11204:67;:::i;:::-;11197:74;;11280:93;11369:3;11280:93;:::i;:::-;11398:2;11393:3;11389:12;11382:19;;11041:366;;;:::o;11413:419::-;11579:4;11617:2;11606:9;11602:18;11594:26;;11666:9;11660:4;11656:20;11652:1;11641:9;11637:17;11630:47;11694:131;11820:4;11694:131;:::i;:::-;11686:139;;11413:419;;;:::o;11838:225::-;11978:34;11974:1;11966:6;11962:14;11955:58;12047:8;12042:2;12034:6;12030:15;12023:33;11838:225;:::o;12069:366::-;12211:3;12232:67;12296:2;12291:3;12232:67;:::i;:::-;12225:74;;12308:93;12397:3;12308:93;:::i;:::-;12426:2;12421:3;12417:12;12410:19;;12069:366;;;:::o;12441:419::-;12607:4;12645:2;12634:9;12630:18;12622:26;;12694:9;12688:4;12684:20;12680:1;12669:9;12665:17;12658:47;12722:131;12848:4;12722:131;:::i;:::-;12714:139;;12441:419;;;:::o;12866:223::-;13006:34;13002:1;12994:6;12990:14;12983:58;13075:6;13070:2;13062:6;13058:15;13051:31;12866:223;:::o;13095:366::-;13237:3;13258:67;13322:2;13317:3;13258:67;:::i;:::-;13251:74;;13334:93;13423:3;13334:93;:::i;:::-;13452:2;13447:3;13443:12;13436:19;;13095:366;;;:::o;13467:419::-;13633:4;13671:2;13660:9;13656:18;13648:26;;13720:9;13714:4;13710:20;13706:1;13695:9;13691:17;13684:47;13748:131;13874:4;13748:131;:::i;:::-;13740:139;;13467:419;;;:::o;13892:221::-;14032:34;14028:1;14020:6;14016:14;14009:58;14101:4;14096:2;14088:6;14084:15;14077:29;13892:221;:::o;14119:366::-;14261:3;14282:67;14346:2;14341:3;14282:67;:::i;:::-;14275:74;;14358:93;14447:3;14358:93;:::i;:::-;14476:2;14471:3;14467:12;14460:19;;14119:366;;;:::o;14491:419::-;14657:4;14695:2;14684:9;14680:18;14672:26;;14744:9;14738:4;14734:20;14730:1;14719:9;14715:17;14708:47;14772:131;14898:4;14772:131;:::i;:::-;14764:139;;14491:419;;;:::o;14916:179::-;15056:31;15052:1;15044:6;15040:14;15033:55;14916:179;:::o;15101:366::-;15243:3;15264:67;15328:2;15323:3;15264:67;:::i;:::-;15257:74;;15340:93;15429:3;15340:93;:::i;:::-;15458:2;15453:3;15449:12;15442:19;;15101:366;;;:::o;15473:419::-;15639:4;15677:2;15666:9;15662:18;15654:26;;15726:9;15720:4;15716:20;15712:1;15701:9;15697:17;15690:47;15754:131;15880:4;15754:131;:::i;:::-;15746:139;;15473:419;;;:::o;15898:224::-;16038:34;16034:1;16026:6;16022:14;16015:58;16107:7;16102:2;16094:6;16090:15;16083:32;15898:224;:::o;16128:366::-;16270:3;16291:67;16355:2;16350:3;16291:67;:::i;:::-;16284:74;;16367:93;16456:3;16367:93;:::i;:::-;16485:2;16480:3;16476:12;16469:19;;16128:366;;;:::o;16500:419::-;16666:4;16704:2;16693:9;16689:18;16681:26;;16753:9;16747:4;16743:20;16739:1;16728:9;16724:17;16717:47;16781:131;16907:4;16781:131;:::i;:::-;16773:139;;16500:419;;;:::o;16925:222::-;17065:34;17061:1;17053:6;17049:14;17042:58;17134:5;17129:2;17121:6;17117:15;17110:30;16925:222;:::o;17153:366::-;17295:3;17316:67;17380:2;17375:3;17316:67;:::i;:::-;17309:74;;17392:93;17481:3;17392:93;:::i;:::-;17510:2;17505:3;17501:12;17494:19;;17153:366;;;:::o;17525:419::-;17691:4;17729:2;17718:9;17714:18;17706:26;;17778:9;17772:4;17768:20;17764:1;17753:9;17749:17;17742:47;17806:131;17932:4;17806:131;:::i;:::-;17798:139;;17525:419;;;:::o;17950:225::-;18090:34;18086:1;18078:6;18074:14;18067:58;18159:8;18154:2;18146:6;18142:15;18135:33;17950:225;:::o;18181:366::-;18323:3;18344:67;18408:2;18403:3;18344:67;:::i;:::-;18337:74;;18420:93;18509:3;18420:93;:::i;:::-;18538:2;18533:3;18529:12;18522:19;;18181:366;;;:::o;18553:419::-;18719:4;18757:2;18746:9;18742:18;18734:26;;18806:9;18800:4;18796:20;18792:1;18781:9;18777:17;18770:47;18834:131;18960:4;18834:131;:::i;:::-;18826:139;;18553:419;;;:::o;18978:166::-;19118:18;19114:1;19106:6;19102:14;19095:42;18978:166;:::o;19150:366::-;19292:3;19313:67;19377:2;19372:3;19313:67;:::i;:::-;19306:74;;19389:93;19478:3;19389:93;:::i;:::-;19507:2;19502:3;19498:12;19491:19;;19150:366;;;:::o;19522:419::-;19688:4;19726:2;19715:9;19711:18;19703:26;;19775:9;19769:4;19765:20;19761:1;19750:9;19746:17;19739:47;19803:131;19929:4;19803:131;:::i;:::-;19795:139;;19522:419;;;:::o;19947:182::-;20087:34;20083:1;20075:6;20071:14;20064:58;19947:182;:::o;20135:366::-;20277:3;20298:67;20362:2;20357:3;20298:67;:::i;:::-;20291:74;;20374:93;20463:3;20374:93;:::i;:::-;20492:2;20487:3;20483:12;20476:19;;20135:366;;;:::o;20507:419::-;20673:4;20711:2;20700:9;20696:18;20688:26;;20760:9;20754:4;20750:20;20746:1;20735:9;20731:17;20724:47;20788:131;20914:4;20788:131;:::i;:::-;20780:139;;20507:419;;;:::o;20932:220::-;21072:34;21068:1;21060:6;21056:14;21049:58;21141:3;21136:2;21128:6;21124:15;21117:28;20932:220;:::o;21158:366::-;21300:3;21321:67;21385:2;21380:3;21321:67;:::i;:::-;21314:74;;21397:93;21486:3;21397:93;:::i;:::-;21515:2;21510:3;21506:12;21499:19;;21158:366;;;:::o;21530:419::-;21696:4;21734:2;21723:9;21719:18;21711:26;;21783:9;21777:4;21773:20;21769:1;21758:9;21754:17;21747:47;21811:131;21937:4;21811:131;:::i;:::-;21803:139;;21530:419;;;:::o;21955:221::-;22095:34;22091:1;22083:6;22079:14;22072:58;22164:4;22159:2;22151:6;22147:15;22140:29;21955:221;:::o;22182:366::-;22324:3;22345:67;22409:2;22404:3;22345:67;:::i;:::-;22338:74;;22421:93;22510:3;22421:93;:::i;:::-;22539:2;22534:3;22530:12;22523:19;;22182:366;;;:::o;22554:419::-;22720:4;22758:2;22747:9;22743:18;22735:26;;22807:9;22801:4;22797:20;22793:1;22782:9;22778:17;22771:47;22835:131;22961:4;22835:131;:::i;:::-;22827:139;;22554:419;;;:::o;22979:170::-;23119:22;23115:1;23107:6;23103:14;23096:46;22979:170;:::o;23155:366::-;23297:3;23318:67;23382:2;23377:3;23318:67;:::i;:::-;23311:74;;23394:93;23483:3;23394:93;:::i;:::-;23512:2;23507:3;23503:12;23496:19;;23155:366;;;:::o;23527:419::-;23693:4;23731:2;23720:9;23716:18;23708:26;;23780:9;23774:4;23770:20;23766:1;23755:9;23751:17;23744:47;23808:131;23934:4;23808:131;:::i;:::-;23800:139;;23527:419;;;:::o;23952:169::-;24092:21;24088:1;24080:6;24076:14;24069:45;23952:169;:::o;24127:366::-;24269:3;24290:67;24354:2;24349:3;24290:67;:::i;:::-;24283:74;;24366:93;24455:3;24366:93;:::i;:::-;24484:2;24479:3;24475:12;24468:19;;24127:366;;;:::o;24499:419::-;24665:4;24703:2;24692:9;24688:18;24680:26;;24752:9;24746:4;24742:20;24738:1;24727:9;24723:17;24716:47;24780:131;24906:4;24780:131;:::i;:::-;24772:139;;24499:419;;;:::o;24924:178::-;25064:30;25060:1;25052:6;25048:14;25041:54;24924:178;:::o;25108:366::-;25250:3;25271:67;25335:2;25330:3;25271:67;:::i;:::-;25264:74;;25347:93;25436:3;25347:93;:::i;:::-;25465:2;25460:3;25456:12;25449:19;;25108:366;;;:::o;25480:419::-;25646:4;25684:2;25673:9;25669:18;25661:26;;25733:9;25727:4;25723:20;25719:1;25708:9;25704:17;25697:47;25761:131;25887:4;25761:131;:::i;:::-;25753:139;;25480:419;;;:::o;25905:165::-;26045:17;26041:1;26033:6;26029:14;26022:41;25905:165;:::o;26076:366::-;26218:3;26239:67;26303:2;26298:3;26239:67;:::i;:::-;26232:74;;26315:93;26404:3;26315:93;:::i;:::-;26433:2;26428:3;26424:12;26417:19;;26076:366;;;:::o;26448:419::-;26614:4;26652:2;26641:9;26637:18;26629:26;;26701:9;26695:4;26691:20;26687:1;26676:9;26672:17;26665:47;26729:131;26855:4;26729:131;:::i;:::-;26721:139;;26448:419;;;:::o

Swarm Source

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