ETH Price: $3,306.36 (-3.72%)
Gas: 14 Gwei

Token

Cut DAO (CUTDAO)
 

Overview

Max Total Supply

50,000,000,000 CUTDAO

Holders

9

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
472,128,121.010000008963302637 CUTDAO

Value
$0.00
0xf7d499d603471ed8f5ee7628466210de15aff1ca
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:
CutDAO

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.7;

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

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

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

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

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

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

    /**
     * @dev Moves `amount` tokens from the caller's account to `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);

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

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

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `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, _allowances[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 = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `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;
        }
        _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;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

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

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

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

    /**
     * @dev Spend `amount` form the allowance of `owner` toward `spender`.
     *
     * 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 {}
}

contract CutDAO is ERC20, Ownable {
    /* Token Tax */
    uint16 public _taxTotal = 900; // 9% tax
    uint32 public _taxPercision = 10000;
    bool public _taxActive = true;

    mapping(string => mapping(address => bool)) public _whitelists;

    /* Events */
    event UpdateTaxPercentage(uint16 _newTaxAmount);
    event RemoveFromWhitelist(string list, address indexed wallet);
    event AddToWhitelist(string list, address indexed wallet);
    event ToggleTax(bool _active);

    uint256 private _totalSupply;

    constructor() ERC20('Cut DAO', 'CUTDAO') payable {
      _totalSupply = 50000000000000000000000000000;

      addToWhitelist('from', address(this));
      addToWhitelist('to', address(this));
      addToWhitelist('from', msg.sender);

      _mint(msg.sender, _totalSupply);
    }

    /**
      * @notice overrides ERC20 transferFrom function to add tax
      * @param from address amount is coming from
      * @param to address amount is going to
      * @param amount amount being sent
     */
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
      address spender = _msgSender();
      _spendAllowance(from, spender, amount);
      require(balanceOf(from) >= amount, "ERC20: transfer amount exceeds balance");
      if(_taxActive && !_whitelists['from'][from] && !_whitelists['to'][to]) {
        uint256 tax = amount *_taxTotal / _taxPercision;
        amount = amount - tax;
        _transfer(from, address(this), tax);
      }
      _transfer(from, to, amount);
      return true;
    }


    /**
      * @notice overrides ERC20 transferFrom function to add tax
      * @param to address amount is going to
      * @param amount amount being sent
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
      address owner = _msgSender();
      require(balanceOf(owner) >= amount, "ERC20: transfer amount exceeds balance");
      if(_taxActive && !_whitelists['from'][owner] && !_whitelists['to'][to]) {
        uint256 tax = amount*_taxTotal/_taxPercision;
        amount = amount - tax;
        _transfer(owner, address(this), tax);
      }
      _transfer(owner, to, amount);
      return true;
    }

    /* ADMIN Functions */

    /**
       * @notice : toggles the tax on or off
    */
    function toggleTax() external onlyOwner {
      _taxActive = !_taxActive;
      emit ToggleTax(_taxActive);
    }

    /**
      * @notice : updates address tax amount
      * @param newTax new tax amount
     */
    function setTax(uint16 newTax) external onlyOwner {
      require(newTax <= 10 * _taxPercision / 100, 'Tax can not be set to more than 10%');

      _taxTotal = newTax;
      emit UpdateTaxPercentage(newTax);
    }

    /**
    * @notice : add address to tax whitelist
    * @param list indicates which whitelist ('to' or 'from')
    * @param wallet address to add to whitelist
    */
    function addToWhitelist(string memory list, address wallet) public onlyOwner {
      require(wallet != address(0), "Cant use 0 address");
      require(!_whitelists[list][wallet], "Address already added");
      _whitelists[list][wallet] = true;

      emit AddToWhitelist(list, wallet);
    }

    /**
    * @notice : remoe address from a whitelist
    * @param list indicates which whitelist ('to' or 'from')
    * @param wallet address to remove from whitelist
    */
    function removeFromWhitelist(string memory list, address wallet) external onlyOwner {
      require(wallet != address(0), "Cant use 0 address");
      require(_whitelists[list][wallet], "Address not added");
      _whitelists[list][wallet] = false;

      emit RemoveFromWhitelist(list, wallet);
    }

    /**
      * @notice : withdraws taxes to the contract owner
     */
    function withdrawTaxes() external onlyOwner {
      uint256 amount = balanceOf(address(this));
      require(amount > 0, "Nothing to withdraw");
      _transfer(address(this), msg.sender, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"list","type":"string"},{"indexed":true,"internalType":"address","name":"wallet","type":"address"}],"name":"AddToWhitelist","type":"event"},{"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":"string","name":"list","type":"string"},{"indexed":true,"internalType":"address","name":"wallet","type":"address"}],"name":"RemoveFromWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_active","type":"bool"}],"name":"ToggleTax","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":"uint16","name":"_newTaxAmount","type":"uint16"}],"name":"UpdateTaxPercentage","type":"event"},{"inputs":[],"name":"_taxActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxPercision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxTotal","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"_whitelists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"list","type":"string"},{"internalType":"address","name":"wallet","type":"address"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"list","type":"string"},{"internalType":"address","name":"wallet","type":"address"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newTax","type":"uint16"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","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":"withdrawTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052610384600560146101000a81548161ffff021916908361ffff160217905550612710600560166101000a81548163ffffffff021916908363ffffffff16021790555060016005601a6101000a81548160ff0219169083151502179055506040518060400160405280600781526020017f4375742044414f000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f43555444414f00000000000000000000000000000000000000000000000000008152508160039080519060200190620000e592919062000716565b508060049080519060200190620000fe92919062000716565b50505062000121620001156200022360201b60201c565b6200022b60201b60201c565b6ba18f07d736b90be5500000006007819055506200017b6040518060400160405280600481526020017f66726f6d0000000000000000000000000000000000000000000000000000000081525030620002f160201b60201c565b620001c26040518060400160405280600281526020017f746f00000000000000000000000000000000000000000000000000000000000081525030620002f160201b60201c565b620002096040518060400160405280600481526020017f66726f6d0000000000000000000000000000000000000000000000000000000081525033620002f160201b60201c565b6200021d336007546200056a60201b60201c565b62000bd9565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620003016200022360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000327620006e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000380576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003779062000827565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620003f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003e99062000899565b60405180910390fd5b6006826040516200040491906200093e565b908152602001604051809103902060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615620004a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200049790620009a7565b60405180910390fd5b6001600683604051620004b491906200093e565b908152602001604051809103902060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f86ee29c6f894bd8c8c414e3960227f447445461b976a82f121552dababde654b836040516200055e919062000a1b565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005d39062000a8f565b60405180910390fd5b620005f0600083836200070c60201b60201c565b806002600082825462000604919062000aea565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200065b919062000aea565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006c2919062000b58565b60405180910390a3620006de600083836200071160201b60201c565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b505050565b505050565b828054620007249062000ba4565b90600052602060002090601f01602090048101928262000748576000855562000794565b82601f106200076357805160ff191683800117855562000794565b8280016001018555821562000794579182015b828111156200079357825182559160200191906001019062000776565b5b509050620007a39190620007a7565b5090565b5b80821115620007c2576000816000905550600101620007a8565b5090565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200080f602083620007c6565b91506200081c82620007d7565b602082019050919050565b60006020820190508181036000830152620008428162000800565b9050919050565b7f43616e7420757365203020616464726573730000000000000000000000000000600082015250565b600062000881601283620007c6565b91506200088e8262000849565b602082019050919050565b60006020820190508181036000830152620008b48162000872565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015620008f1578082015181840152602081019050620008d4565b8381111562000901576000848401525b50505050565b60006200091482620008bb565b620009208185620008c6565b935062000932818560208601620008d1565b80840191505092915050565b60006200094c828462000907565b915081905092915050565b7f4164647265737320616c72656164792061646465640000000000000000000000600082015250565b60006200098f601583620007c6565b91506200099c8262000957565b602082019050919050565b60006020820190508181036000830152620009c28162000980565b9050919050565b6000601f19601f8301169050919050565b6000620009e782620008bb565b620009f38185620007c6565b935062000a05818560208601620008d1565b62000a1081620009c9565b840191505092915050565b6000602082019050818103600083015262000a378184620009da565b905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000a77601f83620007c6565b915062000a848262000a3f565b602082019050919050565b6000602082019050818103600083015262000aaa8162000a68565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000af78262000ab1565b915062000b048362000ab1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b3c5762000b3b62000abb565b5b828201905092915050565b62000b528162000ab1565b82525050565b600060208201905062000b6f600083018462000b47565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bbd57607f821691505b60208210810362000bd35762000bd262000b75565b5b50919050565b612b648062000be96000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80634be31778116100c3578063a457c2d71161007c578063a457c2d714610368578063a9059cbb14610398578063bb47cc0c146103c8578063dd62ed3e146103e6578063f2fde38b14610416578063fb369eb0146104325761014d565b80634be31778146102a457806370a08231146102c2578063715018a6146102f25780638da5cb5b146102fc57806395d89b411461031a578063964ba61e146103385761014d565b806318160ddd1161011557806318160ddd146101e257806323b872dd14610200578063313ce56714610230578063319f5f6a1461024e578063395093511461026a578063468298311461029a5761014d565b80630308761b1461015257806306fdde031461016e578063095ea7b31461018c57806310bf6029146101bc578063141b6e26146101c6575b600080fd5b61016c60048036038101906101679190611cf7565b610450565b005b6101766106a9565b6040516101839190611ddb565b60405180910390f35b6101a660048036038101906101a19190611e33565b61073b565b6040516101b39190611e8e565b60405180910390f35b6101c461075e565b005b6101e060048036038101906101db9190611cf7565b61084c565b005b6101ea610aa6565b6040516101f79190611eb8565b60405180910390f35b61021a60048036038101906102159190611ed3565b610ab0565b6040516102279190611e8e565b60405180910390f35b610238610c81565b6040516102459190611f42565b60405180910390f35b61026860048036038101906102639190611f97565b610c8a565b005b610284600480360381019061027f9190611e33565b610dd4565b6040516102919190611e8e565b60405180910390f35b6102a2610e7e565b005b6102ac610f58565b6040516102b99190611fe3565b60405180910390f35b6102dc60048036038101906102d79190611ffe565b610f6e565b6040516102e99190611eb8565b60405180910390f35b6102fa610fb6565b005b61030461103e565b604051610311919061203a565b60405180910390f35b610322611068565b60405161032f9190611ddb565b60405180910390f35b610352600480360381019061034d9190611cf7565b6110fa565b60405161035f9190611e8e565b60405180910390f35b610382600480360381019061037d9190611e33565b61113f565b60405161038f9190611e8e565b60405180910390f35b6103b260048036038101906103ad9190611e33565b611229565b6040516103bf9190611e8e565b60405180910390f35b6103d06113ee565b6040516103dd9190612064565b60405180910390f35b61040060048036038101906103fb919061207f565b611402565b60405161040d9190611eb8565b60405180910390f35b610430600480360381019061042b9190611ffe565b611489565b005b61043a611580565b6040516104479190611e8e565b60405180910390f35b610458611593565b73ffffffffffffffffffffffffffffffffffffffff1661047661103e565b73ffffffffffffffffffffffffffffffffffffffff16146104cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c39061210b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053290612177565b60405180910390fd5b60068260405161054b91906121d3565b908152602001604051809103902060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166105e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105da90612236565b60405180910390fd5b60006006836040516105f591906121d3565b908152602001604051809103902060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167ff54739fff8cece84a8944344ddceecde51dde01353452b7a3bfd256f515338868360405161069d9190611ddb565b60405180910390a25050565b6060600380546106b890612285565b80601f01602080910402602001604051908101604052809291908181526020018280546106e490612285565b80156107315780601f1061070657610100808354040283529160200191610731565b820191906000526020600020905b81548152906001019060200180831161071457829003601f168201915b5050505050905090565b600080610746611593565b905061075381858561159b565b600191505092915050565b610766611593565b73ffffffffffffffffffffffffffffffffffffffff1661078461103e565b73ffffffffffffffffffffffffffffffffffffffff16146107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d19061210b565b60405180910390fd5b6005601a9054906101000a900460ff16156005601a6101000a81548160ff0219169083151502179055507fdda4866fd658821eea607c5d6addd0c4a0cc347eb4cea313399e516e660198646005601a9054906101000a900460ff166040516108429190611e8e565b60405180910390a1565b610854611593565b73ffffffffffffffffffffffffffffffffffffffff1661087261103e565b73ffffffffffffffffffffffffffffffffffffffff16146108c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bf9061210b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092e90612177565b60405180910390fd5b60068260405161094791906121d3565b908152602001604051809103902060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d790612302565b60405180910390fd5b60016006836040516109f291906121d3565b908152602001604051809103902060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f86ee29c6f894bd8c8c414e3960227f447445461b976a82f121552dababde654b83604051610a9a9190611ddb565b60405180910390a25050565b6000600254905090565b600080610abb611593565b9050610ac8858285611764565b82610ad286610f6e565b1015610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a90612394565b60405180910390fd5b6005601a9054906101000a900460ff168015610b9357506006604051610b3890612400565b908152602001604051809103902060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610c0357506006604051610ba890612461565b908152602001604051809103902060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610c6a576000600560169054906101000a900463ffffffff1663ffffffff16600560149054906101000a900461ffff1661ffff1685610c4391906124a5565b610c4d919061252e565b90508084610c5b919061255f565b9350610c688630836117f0565b505b610c758585856117f0565b60019150509392505050565b60006012905090565b610c92611593565b73ffffffffffffffffffffffffffffffffffffffff16610cb061103e565b73ffffffffffffffffffffffffffffffffffffffff1614610d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfd9061210b565b60405180910390fd5b6064600560169054906101000a900463ffffffff16600a610d279190612593565b610d3191906125d1565b63ffffffff168161ffff161115610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7490612674565b60405180910390fd5b80600560146101000a81548161ffff021916908361ffff1602179055507f841eb6f9e47fcd1f7e123dd994ffaf8c0df0f8c44c22def597a74290b369215881604051610dc99190612064565b60405180910390a150565b600080610ddf611593565b9050610e73818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6e9190612694565b61159b565b600191505092915050565b610e86611593565b73ffffffffffffffffffffffffffffffffffffffff16610ea461103e565b73ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef19061210b565b60405180910390fd5b6000610f0530610f6e565b905060008111610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190612736565b60405180910390fd5b610f553033836117f0565b50565b600560169054906101000a900463ffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fbe611593565b73ffffffffffffffffffffffffffffffffffffffff16610fdc61103e565b73ffffffffffffffffffffffffffffffffffffffff1614611032576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110299061210b565b60405180910390fd5b61103c6000611a6f565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461107790612285565b80601f01602080910402602001604051908101604052809291908181526020018280546110a390612285565b80156110f05780601f106110c5576101008083540402835291602001916110f0565b820191906000526020600020905b8154815290600101906020018083116110d357829003601f168201915b5050505050905090565b6006828051602081018201805184825260208301602085012081835280955050505050506020528060005260406000206000915091509054906101000a900460ff1681565b60008061114a611593565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611210576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611207906127c8565b60405180910390fd5b61121d828686840361159b565b60019250505092915050565b600080611234611593565b90508261124082610f6e565b1015611281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127890612394565b60405180910390fd5b6005601a9054906101000a900460ff168015611301575060066040516112a690612400565b908152602001604051809103902060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113715750600660405161131690612461565b908152602001604051809103902060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113d8576000600560169054906101000a900463ffffffff1663ffffffff16600560149054906101000a900461ffff1661ffff16856113b191906124a5565b6113bb919061252e565b905080846113c9919061255f565b93506113d68230836117f0565b505b6113e38185856117f0565b600191505092915050565b600560149054906101000a900461ffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611491611593565b73ffffffffffffffffffffffffffffffffffffffff166114af61103e565b73ffffffffffffffffffffffffffffffffffffffff1614611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc9061210b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156b9061285a565b60405180910390fd5b61157d81611a6f565b50565b6005601a9054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361160a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611601906128ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611679576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116709061297e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117579190611eb8565b60405180910390a3505050565b60006117708484611402565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146117ea57818110156117dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d3906129ea565b60405180910390fd5b6117e9848484840361159b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361185f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185690612a7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c590612b0e565b60405180910390fd5b6118d9838383611b35565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690612394565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119f29190612694565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a569190611eb8565b60405180910390a3611a69848484611b3a565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611ba682611b5d565b810181811067ffffffffffffffff82111715611bc557611bc4611b6e565b5b80604052505050565b6000611bd8611b3f565b9050611be48282611b9d565b919050565b600067ffffffffffffffff821115611c0457611c03611b6e565b5b611c0d82611b5d565b9050602081019050919050565b82818337600083830152505050565b6000611c3c611c3784611be9565b611bce565b905082815260208101848484011115611c5857611c57611b58565b5b611c63848285611c1a565b509392505050565b600082601f830112611c8057611c7f611b53565b5b8135611c90848260208601611c29565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611cc482611c99565b9050919050565b611cd481611cb9565b8114611cdf57600080fd5b50565b600081359050611cf181611ccb565b92915050565b60008060408385031215611d0e57611d0d611b49565b5b600083013567ffffffffffffffff811115611d2c57611d2b611b4e565b5b611d3885828601611c6b565b9250506020611d4985828601611ce2565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d8d578082015181840152602081019050611d72565b83811115611d9c576000848401525b50505050565b6000611dad82611d53565b611db78185611d5e565b9350611dc7818560208601611d6f565b611dd081611b5d565b840191505092915050565b60006020820190508181036000830152611df58184611da2565b905092915050565b6000819050919050565b611e1081611dfd565b8114611e1b57600080fd5b50565b600081359050611e2d81611e07565b92915050565b60008060408385031215611e4a57611e49611b49565b5b6000611e5885828601611ce2565b9250506020611e6985828601611e1e565b9150509250929050565b60008115159050919050565b611e8881611e73565b82525050565b6000602082019050611ea36000830184611e7f565b92915050565b611eb281611dfd565b82525050565b6000602082019050611ecd6000830184611ea9565b92915050565b600080600060608486031215611eec57611eeb611b49565b5b6000611efa86828701611ce2565b9350506020611f0b86828701611ce2565b9250506040611f1c86828701611e1e565b9150509250925092565b600060ff82169050919050565b611f3c81611f26565b82525050565b6000602082019050611f576000830184611f33565b92915050565b600061ffff82169050919050565b611f7481611f5d565b8114611f7f57600080fd5b50565b600081359050611f9181611f6b565b92915050565b600060208284031215611fad57611fac611b49565b5b6000611fbb84828501611f82565b91505092915050565b600063ffffffff82169050919050565b611fdd81611fc4565b82525050565b6000602082019050611ff86000830184611fd4565b92915050565b60006020828403121561201457612013611b49565b5b600061202284828501611ce2565b91505092915050565b61203481611cb9565b82525050565b600060208201905061204f600083018461202b565b92915050565b61205e81611f5d565b82525050565b60006020820190506120796000830184612055565b92915050565b6000806040838503121561209657612095611b49565b5b60006120a485828601611ce2565b92505060206120b585828601611ce2565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006120f5602083611d5e565b9150612100826120bf565b602082019050919050565b60006020820190508181036000830152612124816120e8565b9050919050565b7f43616e7420757365203020616464726573730000000000000000000000000000600082015250565b6000612161601283611d5e565b915061216c8261212b565b602082019050919050565b6000602082019050818103600083015261219081612154565b9050919050565b600081905092915050565b60006121ad82611d53565b6121b78185612197565b93506121c7818560208601611d6f565b80840191505092915050565b60006121df82846121a2565b915081905092915050565b7f41646472657373206e6f74206164646564000000000000000000000000000000600082015250565b6000612220601183611d5e565b915061222b826121ea565b602082019050919050565b6000602082019050818103600083015261224f81612213565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061229d57607f821691505b6020821081036122b0576122af612256565b5b50919050565b7f4164647265737320616c72656164792061646465640000000000000000000000600082015250565b60006122ec601583611d5e565b91506122f7826122b6565b602082019050919050565b6000602082019050818103600083015261231b816122df565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061237e602683611d5e565b915061238982612322565b604082019050919050565b600060208201905081810360008301526123ad81612371565b9050919050565b7f66726f6d00000000000000000000000000000000000000000000000000000000600082015250565b60006123ea600483612197565b91506123f5826123b4565b600482019050919050565b600061240b826123dd565b9150819050919050565b7f746f000000000000000000000000000000000000000000000000000000000000600082015250565b600061244b600283612197565b915061245682612415565b600282019050919050565b600061246c8261243e565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006124b082611dfd565b91506124bb83611dfd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156124f4576124f3612476565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061253982611dfd565b915061254483611dfd565b925082612554576125536124ff565b5b828204905092915050565b600061256a82611dfd565b915061257583611dfd565b92508282101561258857612587612476565b5b828203905092915050565b600061259e82611fc4565b91506125a983611fc4565b92508163ffffffff04831182151516156125c6576125c5612476565b5b828202905092915050565b60006125dc82611fc4565b91506125e783611fc4565b9250826125f7576125f66124ff565b5b828204905092915050565b7f5461782063616e206e6f742062652073657420746f206d6f7265207468616e2060008201527f3130250000000000000000000000000000000000000000000000000000000000602082015250565b600061265e602383611d5e565b915061266982612602565b604082019050919050565b6000602082019050818103600083015261268d81612651565b9050919050565b600061269f82611dfd565b91506126aa83611dfd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156126df576126de612476565b5b828201905092915050565b7f4e6f7468696e6720746f20776974686472617700000000000000000000000000600082015250565b6000612720601383611d5e565b915061272b826126ea565b602082019050919050565b6000602082019050818103600083015261274f81612713565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006127b2602583611d5e565b91506127bd82612756565b604082019050919050565b600060208201905081810360008301526127e1816127a5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612844602683611d5e565b915061284f826127e8565b604082019050919050565b6000602082019050818103600083015261287381612837565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006128d6602483611d5e565b91506128e18261287a565b604082019050919050565b60006020820190508181036000830152612905816128c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612968602283611d5e565b91506129738261290c565b604082019050919050565b600060208201905081810360008301526129978161295b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006129d4601d83611d5e565b91506129df8261299e565b602082019050919050565b60006020820190508181036000830152612a03816129c7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a66602583611d5e565b9150612a7182612a0a565b604082019050919050565b60006020820190508181036000830152612a9581612a59565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612af8602383611d5e565b9150612b0382612a9c565b604082019050919050565b60006020820190508181036000830152612b2781612aeb565b905091905056fea2646970667358221220906077718ac26a46dbad0833e1d15b8f24107e77e1ef2b32d96d8240a212ea9e64736f6c634300080d0033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80634be31778116100c3578063a457c2d71161007c578063a457c2d714610368578063a9059cbb14610398578063bb47cc0c146103c8578063dd62ed3e146103e6578063f2fde38b14610416578063fb369eb0146104325761014d565b80634be31778146102a457806370a08231146102c2578063715018a6146102f25780638da5cb5b146102fc57806395d89b411461031a578063964ba61e146103385761014d565b806318160ddd1161011557806318160ddd146101e257806323b872dd14610200578063313ce56714610230578063319f5f6a1461024e578063395093511461026a578063468298311461029a5761014d565b80630308761b1461015257806306fdde031461016e578063095ea7b31461018c57806310bf6029146101bc578063141b6e26146101c6575b600080fd5b61016c60048036038101906101679190611cf7565b610450565b005b6101766106a9565b6040516101839190611ddb565b60405180910390f35b6101a660048036038101906101a19190611e33565b61073b565b6040516101b39190611e8e565b60405180910390f35b6101c461075e565b005b6101e060048036038101906101db9190611cf7565b61084c565b005b6101ea610aa6565b6040516101f79190611eb8565b60405180910390f35b61021a60048036038101906102159190611ed3565b610ab0565b6040516102279190611e8e565b60405180910390f35b610238610c81565b6040516102459190611f42565b60405180910390f35b61026860048036038101906102639190611f97565b610c8a565b005b610284600480360381019061027f9190611e33565b610dd4565b6040516102919190611e8e565b60405180910390f35b6102a2610e7e565b005b6102ac610f58565b6040516102b99190611fe3565b60405180910390f35b6102dc60048036038101906102d79190611ffe565b610f6e565b6040516102e99190611eb8565b60405180910390f35b6102fa610fb6565b005b61030461103e565b604051610311919061203a565b60405180910390f35b610322611068565b60405161032f9190611ddb565b60405180910390f35b610352600480360381019061034d9190611cf7565b6110fa565b60405161035f9190611e8e565b60405180910390f35b610382600480360381019061037d9190611e33565b61113f565b60405161038f9190611e8e565b60405180910390f35b6103b260048036038101906103ad9190611e33565b611229565b6040516103bf9190611e8e565b60405180910390f35b6103d06113ee565b6040516103dd9190612064565b60405180910390f35b61040060048036038101906103fb919061207f565b611402565b60405161040d9190611eb8565b60405180910390f35b610430600480360381019061042b9190611ffe565b611489565b005b61043a611580565b6040516104479190611e8e565b60405180910390f35b610458611593565b73ffffffffffffffffffffffffffffffffffffffff1661047661103e565b73ffffffffffffffffffffffffffffffffffffffff16146104cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c39061210b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053290612177565b60405180910390fd5b60068260405161054b91906121d3565b908152602001604051809103902060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166105e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105da90612236565b60405180910390fd5b60006006836040516105f591906121d3565b908152602001604051809103902060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167ff54739fff8cece84a8944344ddceecde51dde01353452b7a3bfd256f515338868360405161069d9190611ddb565b60405180910390a25050565b6060600380546106b890612285565b80601f01602080910402602001604051908101604052809291908181526020018280546106e490612285565b80156107315780601f1061070657610100808354040283529160200191610731565b820191906000526020600020905b81548152906001019060200180831161071457829003601f168201915b5050505050905090565b600080610746611593565b905061075381858561159b565b600191505092915050565b610766611593565b73ffffffffffffffffffffffffffffffffffffffff1661078461103e565b73ffffffffffffffffffffffffffffffffffffffff16146107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d19061210b565b60405180910390fd5b6005601a9054906101000a900460ff16156005601a6101000a81548160ff0219169083151502179055507fdda4866fd658821eea607c5d6addd0c4a0cc347eb4cea313399e516e660198646005601a9054906101000a900460ff166040516108429190611e8e565b60405180910390a1565b610854611593565b73ffffffffffffffffffffffffffffffffffffffff1661087261103e565b73ffffffffffffffffffffffffffffffffffffffff16146108c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bf9061210b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092e90612177565b60405180910390fd5b60068260405161094791906121d3565b908152602001604051809103902060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d790612302565b60405180910390fd5b60016006836040516109f291906121d3565b908152602001604051809103902060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f86ee29c6f894bd8c8c414e3960227f447445461b976a82f121552dababde654b83604051610a9a9190611ddb565b60405180910390a25050565b6000600254905090565b600080610abb611593565b9050610ac8858285611764565b82610ad286610f6e565b1015610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a90612394565b60405180910390fd5b6005601a9054906101000a900460ff168015610b9357506006604051610b3890612400565b908152602001604051809103902060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610c0357506006604051610ba890612461565b908152602001604051809103902060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610c6a576000600560169054906101000a900463ffffffff1663ffffffff16600560149054906101000a900461ffff1661ffff1685610c4391906124a5565b610c4d919061252e565b90508084610c5b919061255f565b9350610c688630836117f0565b505b610c758585856117f0565b60019150509392505050565b60006012905090565b610c92611593565b73ffffffffffffffffffffffffffffffffffffffff16610cb061103e565b73ffffffffffffffffffffffffffffffffffffffff1614610d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfd9061210b565b60405180910390fd5b6064600560169054906101000a900463ffffffff16600a610d279190612593565b610d3191906125d1565b63ffffffff168161ffff161115610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7490612674565b60405180910390fd5b80600560146101000a81548161ffff021916908361ffff1602179055507f841eb6f9e47fcd1f7e123dd994ffaf8c0df0f8c44c22def597a74290b369215881604051610dc99190612064565b60405180910390a150565b600080610ddf611593565b9050610e73818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6e9190612694565b61159b565b600191505092915050565b610e86611593565b73ffffffffffffffffffffffffffffffffffffffff16610ea461103e565b73ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef19061210b565b60405180910390fd5b6000610f0530610f6e565b905060008111610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190612736565b60405180910390fd5b610f553033836117f0565b50565b600560169054906101000a900463ffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fbe611593565b73ffffffffffffffffffffffffffffffffffffffff16610fdc61103e565b73ffffffffffffffffffffffffffffffffffffffff1614611032576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110299061210b565b60405180910390fd5b61103c6000611a6f565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461107790612285565b80601f01602080910402602001604051908101604052809291908181526020018280546110a390612285565b80156110f05780601f106110c5576101008083540402835291602001916110f0565b820191906000526020600020905b8154815290600101906020018083116110d357829003601f168201915b5050505050905090565b6006828051602081018201805184825260208301602085012081835280955050505050506020528060005260406000206000915091509054906101000a900460ff1681565b60008061114a611593565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611210576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611207906127c8565b60405180910390fd5b61121d828686840361159b565b60019250505092915050565b600080611234611593565b90508261124082610f6e565b1015611281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127890612394565b60405180910390fd5b6005601a9054906101000a900460ff168015611301575060066040516112a690612400565b908152602001604051809103902060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113715750600660405161131690612461565b908152602001604051809103902060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113d8576000600560169054906101000a900463ffffffff1663ffffffff16600560149054906101000a900461ffff1661ffff16856113b191906124a5565b6113bb919061252e565b905080846113c9919061255f565b93506113d68230836117f0565b505b6113e38185856117f0565b600191505092915050565b600560149054906101000a900461ffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611491611593565b73ffffffffffffffffffffffffffffffffffffffff166114af61103e565b73ffffffffffffffffffffffffffffffffffffffff1614611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc9061210b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156b9061285a565b60405180910390fd5b61157d81611a6f565b50565b6005601a9054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361160a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611601906128ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611679576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116709061297e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117579190611eb8565b60405180910390a3505050565b60006117708484611402565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146117ea57818110156117dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d3906129ea565b60405180910390fd5b6117e9848484840361159b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361185f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185690612a7c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c590612b0e565b60405180910390fd5b6118d9838383611b35565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690612394565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119f29190612694565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a569190611eb8565b60405180910390a3611a69848484611b3a565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611ba682611b5d565b810181811067ffffffffffffffff82111715611bc557611bc4611b6e565b5b80604052505050565b6000611bd8611b3f565b9050611be48282611b9d565b919050565b600067ffffffffffffffff821115611c0457611c03611b6e565b5b611c0d82611b5d565b9050602081019050919050565b82818337600083830152505050565b6000611c3c611c3784611be9565b611bce565b905082815260208101848484011115611c5857611c57611b58565b5b611c63848285611c1a565b509392505050565b600082601f830112611c8057611c7f611b53565b5b8135611c90848260208601611c29565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611cc482611c99565b9050919050565b611cd481611cb9565b8114611cdf57600080fd5b50565b600081359050611cf181611ccb565b92915050565b60008060408385031215611d0e57611d0d611b49565b5b600083013567ffffffffffffffff811115611d2c57611d2b611b4e565b5b611d3885828601611c6b565b9250506020611d4985828601611ce2565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d8d578082015181840152602081019050611d72565b83811115611d9c576000848401525b50505050565b6000611dad82611d53565b611db78185611d5e565b9350611dc7818560208601611d6f565b611dd081611b5d565b840191505092915050565b60006020820190508181036000830152611df58184611da2565b905092915050565b6000819050919050565b611e1081611dfd565b8114611e1b57600080fd5b50565b600081359050611e2d81611e07565b92915050565b60008060408385031215611e4a57611e49611b49565b5b6000611e5885828601611ce2565b9250506020611e6985828601611e1e565b9150509250929050565b60008115159050919050565b611e8881611e73565b82525050565b6000602082019050611ea36000830184611e7f565b92915050565b611eb281611dfd565b82525050565b6000602082019050611ecd6000830184611ea9565b92915050565b600080600060608486031215611eec57611eeb611b49565b5b6000611efa86828701611ce2565b9350506020611f0b86828701611ce2565b9250506040611f1c86828701611e1e565b9150509250925092565b600060ff82169050919050565b611f3c81611f26565b82525050565b6000602082019050611f576000830184611f33565b92915050565b600061ffff82169050919050565b611f7481611f5d565b8114611f7f57600080fd5b50565b600081359050611f9181611f6b565b92915050565b600060208284031215611fad57611fac611b49565b5b6000611fbb84828501611f82565b91505092915050565b600063ffffffff82169050919050565b611fdd81611fc4565b82525050565b6000602082019050611ff86000830184611fd4565b92915050565b60006020828403121561201457612013611b49565b5b600061202284828501611ce2565b91505092915050565b61203481611cb9565b82525050565b600060208201905061204f600083018461202b565b92915050565b61205e81611f5d565b82525050565b60006020820190506120796000830184612055565b92915050565b6000806040838503121561209657612095611b49565b5b60006120a485828601611ce2565b92505060206120b585828601611ce2565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006120f5602083611d5e565b9150612100826120bf565b602082019050919050565b60006020820190508181036000830152612124816120e8565b9050919050565b7f43616e7420757365203020616464726573730000000000000000000000000000600082015250565b6000612161601283611d5e565b915061216c8261212b565b602082019050919050565b6000602082019050818103600083015261219081612154565b9050919050565b600081905092915050565b60006121ad82611d53565b6121b78185612197565b93506121c7818560208601611d6f565b80840191505092915050565b60006121df82846121a2565b915081905092915050565b7f41646472657373206e6f74206164646564000000000000000000000000000000600082015250565b6000612220601183611d5e565b915061222b826121ea565b602082019050919050565b6000602082019050818103600083015261224f81612213565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061229d57607f821691505b6020821081036122b0576122af612256565b5b50919050565b7f4164647265737320616c72656164792061646465640000000000000000000000600082015250565b60006122ec601583611d5e565b91506122f7826122b6565b602082019050919050565b6000602082019050818103600083015261231b816122df565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061237e602683611d5e565b915061238982612322565b604082019050919050565b600060208201905081810360008301526123ad81612371565b9050919050565b7f66726f6d00000000000000000000000000000000000000000000000000000000600082015250565b60006123ea600483612197565b91506123f5826123b4565b600482019050919050565b600061240b826123dd565b9150819050919050565b7f746f000000000000000000000000000000000000000000000000000000000000600082015250565b600061244b600283612197565b915061245682612415565b600282019050919050565b600061246c8261243e565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006124b082611dfd565b91506124bb83611dfd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156124f4576124f3612476565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061253982611dfd565b915061254483611dfd565b925082612554576125536124ff565b5b828204905092915050565b600061256a82611dfd565b915061257583611dfd565b92508282101561258857612587612476565b5b828203905092915050565b600061259e82611fc4565b91506125a983611fc4565b92508163ffffffff04831182151516156125c6576125c5612476565b5b828202905092915050565b60006125dc82611fc4565b91506125e783611fc4565b9250826125f7576125f66124ff565b5b828204905092915050565b7f5461782063616e206e6f742062652073657420746f206d6f7265207468616e2060008201527f3130250000000000000000000000000000000000000000000000000000000000602082015250565b600061265e602383611d5e565b915061266982612602565b604082019050919050565b6000602082019050818103600083015261268d81612651565b9050919050565b600061269f82611dfd565b91506126aa83611dfd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156126df576126de612476565b5b828201905092915050565b7f4e6f7468696e6720746f20776974686472617700000000000000000000000000600082015250565b6000612720601383611d5e565b915061272b826126ea565b602082019050919050565b6000602082019050818103600083015261274f81612713565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006127b2602583611d5e565b91506127bd82612756565b604082019050919050565b600060208201905081810360008301526127e1816127a5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612844602683611d5e565b915061284f826127e8565b604082019050919050565b6000602082019050818103600083015261287381612837565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006128d6602483611d5e565b91506128e18261287a565b604082019050919050565b60006020820190508181036000830152612905816128c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612968602283611d5e565b91506129738261290c565b604082019050919050565b600060208201905081810360008301526129978161295b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006129d4601d83611d5e565b91506129df8261299e565b602082019050919050565b60006020820190508181036000830152612a03816129c7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a66602583611d5e565b9150612a7182612a0a565b604082019050919050565b60006020820190508181036000830152612a9581612a59565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612af8602383611d5e565b9150612b0382612a9c565b604082019050919050565b60006020820190508181036000830152612b2781612aeb565b905091905056fea2646970667358221220906077718ac26a46dbad0833e1d15b8f24107e77e1ef2b32d96d8240a212ea9e64736f6c634300080d0033

Deployed Bytecode Sourcemap

19240:4111:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22752:307;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8445:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10796:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21637:116;;;:::i;:::-;;22264:299;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9565:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20296:563;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9407:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21863:219;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12281:240;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23142:206;;;:::i;:::-;;19348:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9736:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2389:103;;;:::i;:::-;;1738:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8664:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19428:62;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13024:438;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21040:497;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19302:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10325:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2647:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19390:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22752:307;1969:12;:10;:12::i;:::-;1958:23;;:7;:5;:7::i;:::-;:23;;;1950:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22871:1:::1;22853:20;;:6;:20;;::::0;22845:51:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22913:11;22925:4;22913:17;;;;;;:::i;:::-;;;;;;;;;;;;;:25;22931:6;22913:25;;;;;;;;;;;;;;;;;;;;;;;;;22905:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;22997:5;22969:11;22981:4;22969:17;;;;;;:::i;:::-;;;;;;;;;;;;;:25;22987:6;22969:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;23044:6;23018:33;;;23038:4;23018:33;;;;;;:::i;:::-;;;;;;;;22752:307:::0;;:::o;8445:100::-;8499:13;8532:5;8525:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8445:100;:::o;10796:201::-;10879:4;10896:13;10912:12;:10;:12::i;:::-;10896:28;;10935:32;10944:5;10951:7;10960:6;10935:8;:32::i;:::-;10985:4;10978:11;;;10796:201;;;;:::o;21637:116::-;1969:12;:10;:12::i;:::-;1958:23;;:7;:5;:7::i;:::-;:23;;;1950:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21700:10:::1;;;;;;;;;;;21699:11;21686:10;;:24;;;;;;;;;;;;;;;;;;21724:21;21734:10;;;;;;;;;;;21724:21;;;;;;:::i;:::-;;;;;;;;21637:116::o:0;22264:299::-;1969:12;:10;:12::i;:::-;1958:23;;:7;:5;:7::i;:::-;:23;;;1950:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22376:1:::1;22358:20;;:6;:20;;::::0;22350:51:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22419:11;22431:4;22419:17;;;;;;:::i;:::-;;;;;;;;;;;;;:25;22437:6;22419:25;;;;;;;;;;;;;;;;;;;;;;;;;22418:26;22410:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22507:4;22479:11;22491:4;22479:17;;;;;;:::i;:::-;;;;;;;;;;;;;:25;22497:6;22479:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;22548:6;22527:28;;;22542:4;22527:28;;;;;;:::i;:::-;;;;;;;;22264:299:::0;;:::o;9565:108::-;9626:7;9653:12;;9646:19;;9565:108;:::o;20296:563::-;20393:4;20408:15;20426:12;:10;:12::i;:::-;20408:30;;20447:38;20463:4;20469:7;20478:6;20447:15;:38::i;:::-;20521:6;20502:15;20512:4;20502:9;:15::i;:::-;:25;;20494:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;20582:10;;;;;;;;;;;:40;;;;;20597:11;:19;;;;;:::i;:::-;;;;;;;;;;;;;:25;20617:4;20597:25;;;;;;;;;;;;;;;;;;;;;;;;;20596:26;20582:40;:66;;;;;20627:11;:17;;;;;:::i;:::-;;;;;;;;;;;;;:21;20645:2;20627:21;;;;;;;;;;;;;;;;;;;;;;;;;20626:22;20582:66;20579:217;;;20661:11;20695:13;;;;;;;;;;;20675:33;;20683:9;;;;;;;;;;;20675:17;;:6;:17;;;;:::i;:::-;:33;;;;:::i;:::-;20661:47;;20737:3;20728:6;:12;;;;:::i;:::-;20719:21;;20751:35;20761:4;20775;20782:3;20751:9;:35::i;:::-;20650:146;20579:217;20804:27;20814:4;20820:2;20824:6;20804:9;:27::i;:::-;20847:4;20840:11;;;20296:563;;;;;:::o;9407:93::-;9465:5;9490:2;9483:9;;9407:93;:::o;21863:219::-;1969:12;:10;:12::i;:::-;1958:23;;:7;:5;:7::i;:::-;:23;;;1950:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21961:3:::1;21945:13;;;;;;;;;;;21940:2;:18;;;;:::i;:::-;:24;;;;:::i;:::-;21930:34;;:6;:34;;;;21922:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;22027:6;22015:9;;:18;;;;;;;;;;;;;;;;;;22047:27;22067:6;22047:27;;;;;;:::i;:::-;;;;;;;;21863:219:::0;:::o;12281:240::-;12369:4;12386:13;12402:12;:10;:12::i;:::-;12386:28;;12425:66;12434:5;12441:7;12480:10;12450:11;:18;12462:5;12450:18;;;;;;;;;;;;;;;:27;12469:7;12450:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;12425:8;:66::i;:::-;12509:4;12502:11;;;12281:240;;;;:::o;23142:206::-;1969:12;:10;:12::i;:::-;1958:23;;:7;:5;:7::i;:::-;:23;;;1950:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23195:14:::1;23212:24;23230:4;23212:9;:24::i;:::-;23195:41;;23262:1;23253:6;:10;23245:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;23296:44;23314:4;23321:10;23333:6;23296:9;:44::i;:::-;23186:162;23142:206::o:0;19348:35::-;;;;;;;;;;;;;:::o;9736:127::-;9810:7;9837:9;:18;9847:7;9837:18;;;;;;;;;;;;;;;;9830:25;;9736:127;;;:::o;2389:103::-;1969:12;:10;:12::i;:::-;1958:23;;:7;:5;:7::i;:::-;:23;;;1950:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2454:30:::1;2481:1;2454:18;:30::i;:::-;2389:103::o:0;1738:87::-;1784:7;1811:6;;;;;;;;;;;1804:13;;1738:87;:::o;8664:104::-;8720:13;8753:7;8746:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8664:104;:::o;19428:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13024:438::-;13117:4;13134:13;13150:12;:10;:12::i;:::-;13134:28;;13173:24;13200:11;:18;13212:5;13200:18;;;;;;;;;;;;;;;:27;13219:7;13200:27;;;;;;;;;;;;;;;;13173:54;;13266:15;13246:16;:35;;13238:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13359:60;13368:5;13375:7;13403:15;13384:16;:34;13359:8;:60::i;:::-;13450:4;13443:11;;;;13024:438;;;;:::o;21040:497::-;21119:4;21134:13;21150:12;:10;:12::i;:::-;21134:28;;21199:6;21179:16;21189:5;21179:9;:16::i;:::-;:26;;21171:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;21260:10;;;;;;;;;;;:41;;;;;21275:11;:19;;;;;:::i;:::-;;;;;;;;;;;;;:26;21295:5;21275:26;;;;;;;;;;;;;;;;;;;;;;;;;21274:27;21260:41;:67;;;;;21306:11;:17;;;;;:::i;:::-;;;;;;;;;;;;;:21;21324:2;21306:21;;;;;;;;;;;;;;;;;;;;;;;;;21305:22;21260:67;21257:216;;;21340:11;21371:13;;;;;;;;;;;21354:30;;21361:9;;;;;;;;;;;21354:16;;:6;:16;;;;:::i;:::-;:30;;;;:::i;:::-;21340:44;;21413:3;21404:6;:12;;;;:::i;:::-;21395:21;;21427:36;21437:5;21452:4;21459:3;21427:9;:36::i;:::-;21329:144;21257:216;21481:28;21491:5;21498:2;21502:6;21481:9;:28::i;:::-;21525:4;21518:11;;;21040:497;;;;:::o;19302:29::-;;;;;;;;;;;;;:::o;10325:151::-;10414:7;10441:11;:18;10453:5;10441:18;;;;;;;;;;;;;;;:27;10460:7;10441:27;;;;;;;;;;;;;;;;10434:34;;10325:151;;;;:::o;2647:201::-;1969:12;:10;:12::i;:::-;1958:23;;:7;:5;:7::i;:::-;:23;;;1950:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2756:1:::1;2736:22;;:8;:22;;::::0;2728:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2812:28;2831:8;2812:18;:28::i;:::-;2647:201:::0;:::o;19390:29::-;;;;;;;;;;;;;:::o;605:98::-;658:7;685:10;678:17;;605:98;:::o;16660:380::-;16813:1;16796:19;;:5;:19;;;16788:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16894:1;16875:21;;:7;:21;;;16867:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16978:6;16948:11;:18;16960:5;16948:18;;;;;;;;;;;;;;;:27;16967:7;16948:27;;;;;;;;;;;;;;;:36;;;;17016:7;17000:32;;17009:5;17000:32;;;17025:6;17000:32;;;;;;:::i;:::-;;;;;;;;16660:380;;;:::o;17327:453::-;17462:24;17489:25;17499:5;17506:7;17489:9;:25::i;:::-;17462:52;;17549:17;17529:16;:37;17525:248;;17611:6;17591:16;:26;;17583:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17695:51;17704:5;17711:7;17739:6;17720:16;:25;17695:8;:51::i;:::-;17525:248;17451:329;17327:453;;;:::o;13941:671::-;14088:1;14072:18;;:4;:18;;;14064:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14165:1;14151:16;;:2;:16;;;14143:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14220:38;14241:4;14247:2;14251:6;14220:20;:38::i;:::-;14271:19;14293:9;:15;14303:4;14293:15;;;;;;;;;;;;;;;;14271:37;;14342:6;14327:11;:21;;14319:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14459:6;14445:11;:20;14427:9;:15;14437:4;14427:15;;;;;;;;;;;;;;;:38;;;;14504:6;14487:9;:13;14497:2;14487:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;14543:2;14528:26;;14537:4;14528:26;;;14547:6;14528:26;;;;;;:::i;:::-;;;;;;;;14567:37;14587:4;14593:2;14597:6;14567:19;:37::i;:::-;14053:559;13941:671;;;:::o;3008:191::-;3082:16;3101:6;;;;;;;;;;;3082:25;;3127:8;3118:6;;:17;;;;;;;;;;;;;;;;;;3182:8;3151:40;;3172:8;3151:40;;;;;;;;;;;;3071:128;3008:191;:::o;18380:125::-;;;;:::o;19109:124::-;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:154::-;1694:6;1689:3;1684;1671:30;1756:1;1747:6;1742:3;1738:16;1731:27;1610:154;;;:::o;1770:412::-;1848:5;1873:66;1889:49;1931:6;1889:49;:::i;:::-;1873:66;:::i;:::-;1864:75;;1962:6;1955:5;1948:21;2000:4;1993:5;1989:16;2038:3;2029:6;2024:3;2020:16;2017:25;2014:112;;;2045:79;;:::i;:::-;2014:112;2135:41;2169:6;2164:3;2159;2135:41;:::i;:::-;1854:328;1770:412;;;;;:::o;2202:340::-;2258:5;2307:3;2300:4;2292:6;2288:17;2284:27;2274:122;;2315:79;;:::i;:::-;2274:122;2432:6;2419:20;2457:79;2532:3;2524:6;2517:4;2509:6;2505:17;2457:79;:::i;:::-;2448:88;;2264:278;2202:340;;;;:::o;2548:126::-;2585:7;2625:42;2618:5;2614:54;2603:65;;2548:126;;;:::o;2680:96::-;2717:7;2746:24;2764:5;2746:24;:::i;:::-;2735:35;;2680:96;;;:::o;2782:122::-;2855:24;2873:5;2855:24;:::i;:::-;2848:5;2845:35;2835:63;;2894:1;2891;2884:12;2835:63;2782:122;:::o;2910:139::-;2956:5;2994:6;2981:20;2972:29;;3010:33;3037:5;3010:33;:::i;:::-;2910:139;;;;:::o;3055:654::-;3133:6;3141;3190:2;3178:9;3169:7;3165:23;3161:32;3158:119;;;3196:79;;:::i;:::-;3158:119;3344:1;3333:9;3329:17;3316:31;3374:18;3366:6;3363:30;3360:117;;;3396:79;;:::i;:::-;3360:117;3501:63;3556:7;3547:6;3536:9;3532:22;3501:63;:::i;:::-;3491:73;;3287:287;3613:2;3639:53;3684:7;3675:6;3664:9;3660:22;3639:53;:::i;:::-;3629:63;;3584:118;3055:654;;;;;:::o;3715:99::-;3767:6;3801:5;3795:12;3785:22;;3715:99;;;:::o;3820:169::-;3904:11;3938:6;3933:3;3926:19;3978:4;3973:3;3969:14;3954:29;;3820:169;;;;:::o;3995:307::-;4063:1;4073:113;4087:6;4084:1;4081:13;4073:113;;;4172:1;4167:3;4163:11;4157:18;4153:1;4148:3;4144:11;4137:39;4109:2;4106:1;4102:10;4097:15;;4073:113;;;4204:6;4201:1;4198:13;4195:101;;;4284:1;4275:6;4270:3;4266:16;4259:27;4195:101;4044:258;3995:307;;;:::o;4308:364::-;4396:3;4424:39;4457:5;4424:39;:::i;:::-;4479:71;4543:6;4538:3;4479:71;:::i;:::-;4472:78;;4559:52;4604:6;4599:3;4592:4;4585:5;4581:16;4559:52;:::i;:::-;4636:29;4658:6;4636:29;:::i;:::-;4631:3;4627:39;4620:46;;4400:272;4308:364;;;;:::o;4678:313::-;4791:4;4829:2;4818:9;4814:18;4806:26;;4878:9;4872:4;4868:20;4864:1;4853:9;4849:17;4842:47;4906:78;4979:4;4970:6;4906:78;:::i;:::-;4898:86;;4678:313;;;;:::o;4997:77::-;5034:7;5063:5;5052:16;;4997:77;;;:::o;5080:122::-;5153:24;5171:5;5153:24;:::i;:::-;5146:5;5143:35;5133:63;;5192:1;5189;5182:12;5133:63;5080:122;:::o;5208:139::-;5254:5;5292:6;5279:20;5270:29;;5308:33;5335:5;5308:33;:::i;:::-;5208:139;;;;:::o;5353:474::-;5421:6;5429;5478:2;5466:9;5457:7;5453:23;5449:32;5446:119;;;5484:79;;:::i;:::-;5446:119;5604:1;5629:53;5674:7;5665:6;5654:9;5650:22;5629:53;:::i;:::-;5619:63;;5575:117;5731:2;5757:53;5802:7;5793:6;5782:9;5778:22;5757:53;:::i;:::-;5747:63;;5702:118;5353:474;;;;;:::o;5833:90::-;5867:7;5910:5;5903:13;5896:21;5885:32;;5833:90;;;:::o;5929:109::-;6010:21;6025:5;6010:21;:::i;:::-;6005:3;5998:34;5929:109;;:::o;6044:210::-;6131:4;6169:2;6158:9;6154:18;6146:26;;6182:65;6244:1;6233:9;6229:17;6220:6;6182:65;:::i;:::-;6044:210;;;;:::o;6260:118::-;6347:24;6365:5;6347:24;:::i;:::-;6342:3;6335:37;6260:118;;:::o;6384:222::-;6477:4;6515:2;6504:9;6500:18;6492:26;;6528:71;6596:1;6585:9;6581:17;6572:6;6528:71;:::i;:::-;6384:222;;;;:::o;6612:619::-;6689:6;6697;6705;6754:2;6742:9;6733:7;6729:23;6725:32;6722:119;;;6760:79;;:::i;:::-;6722:119;6880:1;6905:53;6950:7;6941:6;6930:9;6926:22;6905:53;:::i;:::-;6895:63;;6851:117;7007:2;7033:53;7078:7;7069:6;7058:9;7054:22;7033:53;:::i;:::-;7023:63;;6978:118;7135:2;7161:53;7206:7;7197:6;7186:9;7182:22;7161:53;:::i;:::-;7151:63;;7106:118;6612:619;;;;;:::o;7237:86::-;7272:7;7312:4;7305:5;7301:16;7290:27;;7237:86;;;:::o;7329:112::-;7412:22;7428:5;7412:22;:::i;:::-;7407:3;7400:35;7329:112;;:::o;7447:214::-;7536:4;7574:2;7563:9;7559:18;7551:26;;7587:67;7651:1;7640:9;7636:17;7627:6;7587:67;:::i;:::-;7447:214;;;;:::o;7667:89::-;7703:7;7743:6;7736:5;7732:18;7721:29;;7667:89;;;:::o;7762:120::-;7834:23;7851:5;7834:23;:::i;:::-;7827:5;7824:34;7814:62;;7872:1;7869;7862:12;7814:62;7762:120;:::o;7888:137::-;7933:5;7971:6;7958:20;7949:29;;7987:32;8013:5;7987:32;:::i;:::-;7888:137;;;;:::o;8031:327::-;8089:6;8138:2;8126:9;8117:7;8113:23;8109:32;8106:119;;;8144:79;;:::i;:::-;8106:119;8264:1;8289:52;8333:7;8324:6;8313:9;8309:22;8289:52;:::i;:::-;8279:62;;8235:116;8031:327;;;;:::o;8364:93::-;8400:7;8440:10;8433:5;8429:22;8418:33;;8364:93;;;:::o;8463:115::-;8548:23;8565:5;8548:23;:::i;:::-;8543:3;8536:36;8463:115;;:::o;8584:218::-;8675:4;8713:2;8702:9;8698:18;8690:26;;8726:69;8792:1;8781:9;8777:17;8768:6;8726:69;:::i;:::-;8584:218;;;;:::o;8808:329::-;8867:6;8916:2;8904:9;8895:7;8891:23;8887:32;8884:119;;;8922:79;;:::i;:::-;8884:119;9042:1;9067:53;9112:7;9103:6;9092:9;9088:22;9067:53;:::i;:::-;9057:63;;9013:117;8808:329;;;;:::o;9143:118::-;9230:24;9248:5;9230:24;:::i;:::-;9225:3;9218:37;9143:118;;:::o;9267:222::-;9360:4;9398:2;9387:9;9383:18;9375:26;;9411:71;9479:1;9468:9;9464:17;9455:6;9411:71;:::i;:::-;9267:222;;;;:::o;9495:115::-;9580:23;9597:5;9580:23;:::i;:::-;9575:3;9568:36;9495:115;;:::o;9616:218::-;9707:4;9745:2;9734:9;9730:18;9722:26;;9758:69;9824:1;9813:9;9809:17;9800:6;9758:69;:::i;:::-;9616:218;;;;:::o;9840:474::-;9908:6;9916;9965:2;9953:9;9944:7;9940:23;9936:32;9933:119;;;9971:79;;:::i;:::-;9933:119;10091:1;10116:53;10161:7;10152:6;10141:9;10137:22;10116:53;:::i;:::-;10106:63;;10062:117;10218:2;10244:53;10289:7;10280:6;10269:9;10265:22;10244:53;:::i;:::-;10234:63;;10189:118;9840:474;;;;;:::o;10320:182::-;10460:34;10456:1;10448:6;10444:14;10437:58;10320:182;:::o;10508:366::-;10650:3;10671:67;10735:2;10730:3;10671:67;:::i;:::-;10664:74;;10747:93;10836:3;10747:93;:::i;:::-;10865:2;10860:3;10856:12;10849:19;;10508:366;;;:::o;10880:419::-;11046:4;11084:2;11073:9;11069:18;11061:26;;11133:9;11127:4;11123:20;11119:1;11108:9;11104:17;11097:47;11161:131;11287:4;11161:131;:::i;:::-;11153:139;;10880:419;;;:::o;11305:168::-;11445:20;11441:1;11433:6;11429:14;11422:44;11305:168;:::o;11479:366::-;11621:3;11642:67;11706:2;11701:3;11642:67;:::i;:::-;11635:74;;11718:93;11807:3;11718:93;:::i;:::-;11836:2;11831:3;11827:12;11820:19;;11479:366;;;:::o;11851:419::-;12017:4;12055:2;12044:9;12040:18;12032:26;;12104:9;12098:4;12094:20;12090:1;12079:9;12075:17;12068:47;12132:131;12258:4;12132:131;:::i;:::-;12124:139;;11851:419;;;:::o;12276:148::-;12378:11;12415:3;12400:18;;12276:148;;;;:::o;12430:377::-;12536:3;12564:39;12597:5;12564:39;:::i;:::-;12619:89;12701:6;12696:3;12619:89;:::i;:::-;12612:96;;12717:52;12762:6;12757:3;12750:4;12743:5;12739:16;12717:52;:::i;:::-;12794:6;12789:3;12785:16;12778:23;;12540:267;12430:377;;;;:::o;12813:275::-;12945:3;12967:95;13058:3;13049:6;12967:95;:::i;:::-;12960:102;;13079:3;13072:10;;12813:275;;;;:::o;13094:167::-;13234:19;13230:1;13222:6;13218:14;13211:43;13094:167;:::o;13267:366::-;13409:3;13430:67;13494:2;13489:3;13430:67;:::i;:::-;13423:74;;13506:93;13595:3;13506:93;:::i;:::-;13624:2;13619:3;13615:12;13608:19;;13267:366;;;:::o;13639:419::-;13805:4;13843:2;13832:9;13828:18;13820:26;;13892:9;13886:4;13882:20;13878:1;13867:9;13863:17;13856:47;13920:131;14046:4;13920:131;:::i;:::-;13912:139;;13639:419;;;:::o;14064:180::-;14112:77;14109:1;14102:88;14209:4;14206:1;14199:15;14233:4;14230:1;14223:15;14250:320;14294:6;14331:1;14325:4;14321:12;14311:22;;14378:1;14372:4;14368:12;14399:18;14389:81;;14455:4;14447:6;14443:17;14433:27;;14389:81;14517:2;14509:6;14506:14;14486:18;14483:38;14480:84;;14536:18;;:::i;:::-;14480:84;14301:269;14250:320;;;:::o;14576:171::-;14716:23;14712:1;14704:6;14700:14;14693:47;14576:171;:::o;14753:366::-;14895:3;14916:67;14980:2;14975:3;14916:67;:::i;:::-;14909:74;;14992:93;15081:3;14992:93;:::i;:::-;15110:2;15105:3;15101:12;15094:19;;14753:366;;;:::o;15125:419::-;15291:4;15329:2;15318:9;15314:18;15306:26;;15378:9;15372:4;15368:20;15364:1;15353:9;15349:17;15342:47;15406:131;15532:4;15406:131;:::i;:::-;15398:139;;15125:419;;;:::o;15550:225::-;15690:34;15686:1;15678:6;15674:14;15667:58;15759:8;15754:2;15746:6;15742:15;15735:33;15550:225;:::o;15781:366::-;15923:3;15944:67;16008:2;16003:3;15944:67;:::i;:::-;15937:74;;16020:93;16109:3;16020:93;:::i;:::-;16138:2;16133:3;16129:12;16122:19;;15781:366;;;:::o;16153:419::-;16319:4;16357:2;16346:9;16342:18;16334:26;;16406:9;16400:4;16396:20;16392:1;16381:9;16377:17;16370:47;16434:131;16560:4;16434:131;:::i;:::-;16426:139;;16153:419;;;:::o;16578:154::-;16718:6;16714:1;16706:6;16702:14;16695:30;16578:154;:::o;16738:400::-;16898:3;16919:84;17001:1;16996:3;16919:84;:::i;:::-;16912:91;;17012:93;17101:3;17012:93;:::i;:::-;17130:1;17125:3;17121:11;17114:18;;16738:400;;;:::o;17144:381::-;17329:3;17351:148;17495:3;17351:148;:::i;:::-;17344:155;;17516:3;17509:10;;17144:381;;;:::o;17531:152::-;17671:4;17667:1;17659:6;17655:14;17648:28;17531:152;:::o;17689:400::-;17849:3;17870:84;17952:1;17947:3;17870:84;:::i;:::-;17863:91;;17963:93;18052:3;17963:93;:::i;:::-;18081:1;18076:3;18072:11;18065:18;;17689:400;;;:::o;18095:381::-;18280:3;18302:148;18446:3;18302:148;:::i;:::-;18295:155;;18467:3;18460:10;;18095:381;;;:::o;18482:180::-;18530:77;18527:1;18520:88;18627:4;18624:1;18617:15;18651:4;18648:1;18641:15;18668:348;18708:7;18731:20;18749:1;18731:20;:::i;:::-;18726:25;;18765:20;18783:1;18765:20;:::i;:::-;18760:25;;18953:1;18885:66;18881:74;18878:1;18875:81;18870:1;18863:9;18856:17;18852:105;18849:131;;;18960:18;;:::i;:::-;18849:131;19008:1;19005;19001:9;18990:20;;18668:348;;;;:::o;19022:180::-;19070:77;19067:1;19060:88;19167:4;19164:1;19157:15;19191:4;19188:1;19181:15;19208:185;19248:1;19265:20;19283:1;19265:20;:::i;:::-;19260:25;;19299:20;19317:1;19299:20;:::i;:::-;19294:25;;19338:1;19328:35;;19343:18;;:::i;:::-;19328:35;19385:1;19382;19378:9;19373:14;;19208:185;;;;:::o;19399:191::-;19439:4;19459:20;19477:1;19459:20;:::i;:::-;19454:25;;19493:20;19511:1;19493:20;:::i;:::-;19488:25;;19532:1;19529;19526:8;19523:34;;;19537:18;;:::i;:::-;19523:34;19582:1;19579;19575:9;19567:17;;19399:191;;;;:::o;19596:289::-;19635:7;19658:19;19675:1;19658:19;:::i;:::-;19653:24;;19691:19;19708:1;19691:19;:::i;:::-;19686:24;;19822:1;19810:10;19806:18;19803:1;19800:25;19795:1;19788:9;19781:17;19777:49;19774:75;;;19829:18;;:::i;:::-;19774:75;19877:1;19874;19870:9;19859:20;;19596:289;;;;:::o;19891:182::-;19930:1;19947:19;19964:1;19947:19;:::i;:::-;19942:24;;19980:19;19997:1;19980:19;:::i;:::-;19975:24;;20018:1;20008:35;;20023:18;;:::i;:::-;20008:35;20065:1;20062;20058:9;20053:14;;19891:182;;;;:::o;20079:222::-;20219:34;20215:1;20207:6;20203:14;20196:58;20288:5;20283:2;20275:6;20271:15;20264:30;20079:222;:::o;20307:366::-;20449:3;20470:67;20534:2;20529:3;20470:67;:::i;:::-;20463:74;;20546:93;20635:3;20546:93;:::i;:::-;20664:2;20659:3;20655:12;20648:19;;20307:366;;;:::o;20679:419::-;20845:4;20883:2;20872:9;20868:18;20860:26;;20932:9;20926:4;20922:20;20918:1;20907:9;20903:17;20896:47;20960:131;21086:4;20960:131;:::i;:::-;20952:139;;20679:419;;;:::o;21104:305::-;21144:3;21163:20;21181:1;21163:20;:::i;:::-;21158:25;;21197:20;21215:1;21197:20;:::i;:::-;21192:25;;21351:1;21283:66;21279:74;21276:1;21273:81;21270:107;;;21357:18;;:::i;:::-;21270:107;21401:1;21398;21394:9;21387:16;;21104:305;;;;:::o;21415:169::-;21555:21;21551:1;21543:6;21539:14;21532:45;21415:169;:::o;21590:366::-;21732:3;21753:67;21817:2;21812:3;21753:67;:::i;:::-;21746:74;;21829:93;21918:3;21829:93;:::i;:::-;21947:2;21942:3;21938:12;21931:19;;21590:366;;;:::o;21962:419::-;22128:4;22166:2;22155:9;22151:18;22143:26;;22215:9;22209:4;22205:20;22201:1;22190:9;22186:17;22179:47;22243:131;22369:4;22243:131;:::i;:::-;22235:139;;21962:419;;;:::o;22387:224::-;22527:34;22523:1;22515:6;22511:14;22504:58;22596:7;22591:2;22583:6;22579:15;22572:32;22387:224;:::o;22617:366::-;22759:3;22780:67;22844:2;22839:3;22780:67;:::i;:::-;22773:74;;22856:93;22945:3;22856:93;:::i;:::-;22974:2;22969:3;22965:12;22958:19;;22617:366;;;:::o;22989:419::-;23155:4;23193:2;23182:9;23178:18;23170:26;;23242:9;23236:4;23232:20;23228:1;23217:9;23213:17;23206:47;23270:131;23396:4;23270:131;:::i;:::-;23262:139;;22989:419;;;:::o;23414:225::-;23554:34;23550:1;23542:6;23538:14;23531:58;23623:8;23618:2;23610:6;23606:15;23599:33;23414:225;:::o;23645:366::-;23787:3;23808:67;23872:2;23867:3;23808:67;:::i;:::-;23801:74;;23884:93;23973:3;23884:93;:::i;:::-;24002:2;23997:3;23993:12;23986:19;;23645:366;;;:::o;24017:419::-;24183:4;24221:2;24210:9;24206:18;24198:26;;24270:9;24264:4;24260:20;24256:1;24245:9;24241:17;24234:47;24298:131;24424:4;24298:131;:::i;:::-;24290:139;;24017:419;;;:::o;24442:223::-;24582:34;24578:1;24570:6;24566:14;24559:58;24651:6;24646:2;24638:6;24634:15;24627:31;24442:223;:::o;24671:366::-;24813:3;24834:67;24898:2;24893:3;24834:67;:::i;:::-;24827:74;;24910:93;24999:3;24910:93;:::i;:::-;25028:2;25023:3;25019:12;25012:19;;24671:366;;;:::o;25043:419::-;25209:4;25247:2;25236:9;25232:18;25224:26;;25296:9;25290:4;25286:20;25282:1;25271:9;25267:17;25260:47;25324:131;25450:4;25324:131;:::i;:::-;25316:139;;25043:419;;;:::o;25468:221::-;25608:34;25604:1;25596:6;25592:14;25585:58;25677:4;25672:2;25664:6;25660:15;25653:29;25468:221;:::o;25695:366::-;25837:3;25858:67;25922:2;25917:3;25858:67;:::i;:::-;25851:74;;25934:93;26023:3;25934:93;:::i;:::-;26052:2;26047:3;26043:12;26036:19;;25695:366;;;:::o;26067:419::-;26233:4;26271:2;26260:9;26256:18;26248:26;;26320:9;26314:4;26310:20;26306:1;26295:9;26291:17;26284:47;26348:131;26474:4;26348:131;:::i;:::-;26340:139;;26067:419;;;:::o;26492:179::-;26632:31;26628:1;26620:6;26616:14;26609:55;26492:179;:::o;26677:366::-;26819:3;26840:67;26904:2;26899:3;26840:67;:::i;:::-;26833:74;;26916:93;27005:3;26916:93;:::i;:::-;27034:2;27029:3;27025:12;27018:19;;26677:366;;;:::o;27049:419::-;27215:4;27253:2;27242:9;27238:18;27230:26;;27302:9;27296:4;27292:20;27288:1;27277:9;27273:17;27266:47;27330:131;27456:4;27330:131;:::i;:::-;27322:139;;27049:419;;;:::o;27474:224::-;27614:34;27610:1;27602:6;27598:14;27591:58;27683:7;27678:2;27670:6;27666:15;27659:32;27474:224;:::o;27704:366::-;27846:3;27867:67;27931:2;27926:3;27867:67;:::i;:::-;27860:74;;27943:93;28032:3;27943:93;:::i;:::-;28061:2;28056:3;28052:12;28045:19;;27704:366;;;:::o;28076:419::-;28242:4;28280:2;28269:9;28265:18;28257:26;;28329:9;28323:4;28319:20;28315:1;28304:9;28300:17;28293:47;28357:131;28483:4;28357:131;:::i;:::-;28349:139;;28076:419;;;:::o;28501:222::-;28641:34;28637:1;28629:6;28625:14;28618:58;28710:5;28705:2;28697:6;28693:15;28686:30;28501:222;:::o;28729:366::-;28871:3;28892:67;28956:2;28951:3;28892:67;:::i;:::-;28885:74;;28968:93;29057:3;28968:93;:::i;:::-;29086:2;29081:3;29077:12;29070:19;;28729:366;;;:::o;29101:419::-;29267:4;29305:2;29294:9;29290:18;29282:26;;29354:9;29348:4;29344:20;29340:1;29329:9;29325:17;29318:47;29382:131;29508:4;29382:131;:::i;:::-;29374:139;;29101:419;;;:::o

Swarm Source

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