Token FACITE

 

Overview [ERC-20]

Max Total Supply:
5,000,000,000 FIT

Holders:
369

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
FACITE

Compiler Version
v0.5.7+commit.6da8b019

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-05-23
*/

// File: zeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol

// pragma solidity ^0.4.24;
pragma solidity ^0.5.0;


/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * See https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address _who) public view returns (uint256);
  function transfer(address _to, uint256 _value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

// File: zeppelin-solidity/contracts/math/SafeMath.sol

// pragma solidity ^0.4.24;
pragma solidity ^0.5.0;


/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 _a, uint256 _b) internal pure returns (uint256 c) {
    // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (_a == 0) {
      return 0;
    }

    c = _a * _b;
    assert(c / _a == _b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
    // assert(_b > 0); // Solidity automatically throws when dividing by 0
    // uint256 c = _a / _b;
    // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold
    return _a / _b;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
    assert(_b <= _a);
    return _a - _b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 _a, uint256 _b) internal pure returns (uint256 c) {
    c = _a + _b;
    assert(c >= _a);
    return c;
  }
}

// File: zeppelin-solidity/contracts/token/ERC20/BasicToken.sol

// pragma solidity >=0.4.24;
pragma solidity ^0.5.0;




/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) internal balances;

  uint256 internal totalSupply_;

  /**
  * @dev Total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return totalSupply_;
  }

  /**
  * @dev Transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_value <= balances[msg.sender]);
    require(_to != address(0));

    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256) {
    return balances[_owner];
  }

}

// File: zeppelin-solidity/contracts/token/ERC20/ERC20.sol

// pragma solidity ^0.4.24;
pragma solidity ^0.5.0;



/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address _owner, address _spender)
    public view returns (uint256);

  function transferFrom(address _from, address _to, uint256 _value)
    public returns (bool);

  function approve(address _spender, uint256 _value) public returns (bool);
  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

// File: zeppelin-solidity/contracts/token/ERC20/StandardToken.sol

// pragma solidity >=0.4.24;

pragma solidity ^0.5.0;




/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * https://github.com/ethereum/EIPs/issues/20
 * Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(
    address _from,
    address _to,
    uint256 _value
  )
    public
    returns (bool)
  {
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);
    require(_to != address(0));

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    emit Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   * 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
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(
    address _owner,
    address _spender
   )
    public
    view
    returns (uint256)
  {
    return allowed[_owner][_spender];
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(
    address _spender,
    uint256 _addedValue
  )
    public
    returns (bool)
  {
    allowed[msg.sender][_spender] = (
      allowed[msg.sender][_spender].add(_addedValue));
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(
    address _spender,
    uint256 _subtractedValue
  )
    public
    returns (bool)
  {
    uint256 oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue >= oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}

// File: zeppelin-solidity/contracts/ownership/Ownable.sol

// pragma solidity >=0.4.24;
pragma solidity ^0.5.0;

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


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


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function transferOwnership(address _newOwner) public onlyOwner {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}

// File: contracts/ERC1132.sol

pragma solidity ^0.5.0;
// pragma solidity >=0.4.24;
/**
 * @title ERC1132 interface
 * @dev see https://github.com/ethereum/EIPs/issues/1132
 */

contract ERC1132 {
    /**
     * @dev Reasons why a user's tokens have been locked
     */
    mapping(address => bytes32[]) public lockReason;

    /**
     * @dev locked token structure
     */
    struct lockToken {
        uint256 amount;
        uint256 validity;
        bool claimed;
    }

    /**
     * @dev Holds number & validity of tokens locked for a given reason for
     *      a specified address
     */
    mapping(address => mapping(bytes32 => lockToken)) public locked;

    /**
     * @dev Records data of all the tokens Locked
     */
    event Locked(
        address indexed _of,
        bytes32 indexed _reason,
        uint256 _amount,
        uint256 _validity
    );

    /**
     * @dev Records data of all the tokens unlocked
     */
    event Unlocked(
        address indexed _of,
        bytes32 indexed _reason,
        uint256 _amount
    );
    
    /**
     * @dev Locks a specified amount of tokens against an address,
     *      for a specified reason and time
     * @param _reason The reason to lock tokens
     * @param _amount Number of tokens to be locked
     * @param _time Lock time in seconds
     */
    function lock(bytes32 _reason, uint256 _amount, uint256 _time, address _of)
        public returns (bool);
  
    /**
     * @dev Returns tokens locked for a specified address for a
     *      specified reason
     *
     * @param _of The address whose tokens are locked
     * @param _reason The reason to query the lock tokens for
     */
    function tokensLocked(address _of, bytes32 _reason)
        public view returns (uint256 amount);
    
    /**
     * @dev Returns tokens locked for a specified address for a
     *      specified reason at a specific time
     *
     * @param _of The address whose tokens are locked
     * @param _reason The reason to query the lock tokens for
     * @param _time The timestamp to query the lock tokens for
     */
    function tokensLockedAtTime(address _of, bytes32 _reason, uint256 _time)
        public view returns (uint256 amount);
    
    /**
     * @dev Returns total tokens held by an address (locked + transferable)
     * @param _of The address to query the total balance of
     */
    function totalBalanceOf(address _of)
        public view returns (uint256 amount);
    
    /**
     * @dev Extends lock for a specified reason and time
     * @param _reason The reason to lock tokens
     * @param _time Lock extension time in seconds
     */
    function extendLock(bytes32 _reason, uint256 _time)
        public returns (bool);
    
    /**
     * @dev Increase number of tokens locked for a specified reason
     * @param _reason The reason to lock tokens
     * @param _amount Number of tokens to be increased
     */
    function increaseLockAmount(bytes32 _reason, uint256 _amount)
        public returns (bool);

    /**
     * @dev Returns unlockable tokens for a specified address for a specified reason
     * @param _of The address to query the the unlockable token count of
     * @param _reason The reason to query the unlockable tokens for
     */
    function tokensUnlockable(address _of, bytes32 _reason)
        public view returns (uint256 amount);
 
    /**
     * @dev Unlocks the unlockable tokens of a specified address
     * @param _of Address of user, claiming back unlockable tokens
     */
    function unlock(address _of)
        public returns (uint256 unlockableTokens);

    /**
     * @dev Gets the unlockable tokens of a specified address
     * @param _of The address to query the the unlockable token count of
     */
    function getUnlockableTokens(address _of)
        public view returns (uint256 unlockableTokens);

}

// File: contracts/FACITE.sol

pragma solidity ^0.5.0;
// pragma solidity >= 0.4.24;




contract FACITE is StandardToken, Ownable, ERC1132 {
    string public constant name = "FACITE";
    string public constant symbol = "FIT";
    uint256 public constant decimals = 18;
    uint256 public constant INITIAL_SUPPLY = 5000000000 * (10 ** decimals);
    
	constructor() public {
        totalSupply_ = INITIAL_SUPPLY;
		balances[msg.sender] = INITIAL_SUPPLY;
	}

    event Mint(address minter, uint256 value);
	event Burn(address burner, uint256 value);

    string internal constant INVALID_TOKEN_VALUES = 'Invalid token values';
	string internal constant NOT_ENOUGH_TOKENS = 'Not enough tokens';
    string internal constant ALREADY_LOCKED = 'Tokens already locked';
	string internal constant NOT_LOCKED = 'No tokens locked';
	string internal constant AMOUNT_ZERO = 'Amount can not be 0';

    // locks
    function lock(bytes32 _reason, uint256 _amount, uint256 _time, address _of) public onlyOwner returns (bool) {
        uint256 validUntil = now.add(_time); //solhint-disable-line

        // If tokens are already locked, then functions extendLock or
        // increaseLockAmount should be used to make any changes
        require(_amount <= balances[_of], NOT_ENOUGH_TOKENS); // 추가
        require(tokensLocked(_of, _reason) == 0, ALREADY_LOCKED);
        require(_amount != 0, AMOUNT_ZERO);

        if (locked[_of][_reason].amount == 0)
            lockReason[_of].push(_reason);

        // transfer(address(this), _amount); // 수정
        balances[address(this)] = balances[address(this)].add(_amount);
        balances[_of] = balances[_of].sub(_amount);

        locked[_of][_reason] = lockToken(_amount, validUntil, false);

        // 수정
        emit Transfer(_of, address(this), _amount);
        emit Locked(_of, _reason, _amount, validUntil);
        return true;
    }

    function transferWithLock(address _to, bytes32 _reason, uint256 _amount, uint256 _time)
        public onlyOwner
        returns (bool)
    {
        uint256 validUntil = now.add(_time); //solhint-disable-line

        require(tokensLocked(_to, _reason) == 0, ALREADY_LOCKED);
        require(_amount != 0, AMOUNT_ZERO);

        if (locked[_to][_reason].amount == 0)
            lockReason[_to].push(_reason);

        transfer(address(this), _amount);

        locked[_to][_reason] = lockToken(_amount, validUntil, false);
        
        emit Locked(_to, _reason, _amount, validUntil);
        return true;
    }

    function tokensLocked(address _of, bytes32 _reason)
        public
        view
        returns (uint256 amount)
    {
        if (!locked[_of][_reason].claimed)
            amount = locked[_of][_reason].amount;
    }
    
    function tokensLockedAtTime(address _of, bytes32 _reason, uint256 _time)
        public
        view
        returns (uint256 amount)
    {
        if (locked[_of][_reason].validity > _time)
            amount = locked[_of][_reason].amount;
    }

    function totalBalanceOf(address _of)
        public
        view
        returns (uint256 amount)
    {
        amount = balanceOf(_of);

        for (uint256 i = 0; i < lockReason[_of].length; i++) {
            amount = amount.add(tokensLocked(_of, lockReason[_of][i]));
        }   
    }    

    function extendLock(bytes32 _reason, uint256 _time)
        public onlyOwner
        returns (bool)
    {
        require(tokensLocked(msg.sender, _reason) > 0, NOT_LOCKED);

        locked[msg.sender][_reason].validity = locked[msg.sender][_reason].validity.add(_time);

        emit Locked(msg.sender, _reason, locked[msg.sender][_reason].amount, locked[msg.sender][_reason].validity);
        return true;
    }

    function increaseLockAmount(bytes32 _reason, uint256 _amount)
        public onlyOwner
        returns (bool)
    {
        require(tokensLocked(msg.sender, _reason) > 0, NOT_LOCKED);
        transfer(address(this), _amount);

        locked[msg.sender][_reason].amount = locked[msg.sender][_reason].amount.add(_amount);

        emit Locked(msg.sender, _reason, locked[msg.sender][_reason].amount, locked[msg.sender][_reason].validity);
        return true;
    }


    function tokensUnlockable(address _of, bytes32 _reason)
        public
        view
        returns (uint256 amount)
    {
        if (locked[_of][_reason].validity <= now && !locked[_of][_reason].claimed) //solhint-disable-line
            amount = locked[_of][_reason].amount;
    }

     function unlock(address _of)
        public onlyOwner
        returns (uint256 unlockableTokens)
    {
        uint256 lockedTokens;

        for (uint256 i = 0; i < lockReason[_of].length; i++) {
            lockedTokens = tokensUnlockable(_of, lockReason[_of][i]);
            if (lockedTokens > 0) {
                unlockableTokens = unlockableTokens.add(lockedTokens);
                locked[_of][lockReason[_of][i]].claimed = true;
                emit Unlocked(_of, lockReason[_of][i], lockedTokens);
            }
        }  

        if (unlockableTokens > 0)
            this.transfer(_of, unlockableTokens);
    }

    function getUnlockableTokens(address _of)
        public
        view
        returns (uint256 unlockableTokens)
    {
        for (uint256 i = 0; i < lockReason[_of].length; i++) {
            unlockableTokens = unlockableTokens.add(tokensUnlockable(_of, lockReason[_of][i]));
        }  
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"},{"name":"_reason","type":"bytes32"},{"name":"_time","type":"uint256"}],"name":"tokensLockedAtTime","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_reason","type":"bytes32"},{"name":"_amount","type":"uint256"},{"name":"_time","type":"uint256"},{"name":"_of","type":"address"}],"name":"lock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_of","type":"address"}],"name":"unlock","outputs":[{"name":"unlockableTokens","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"}],"name":"totalBalanceOf","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_reason","type":"bytes32"},{"name":"_amount","type":"uint256"},{"name":"_time","type":"uint256"}],"name":"transferWithLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"},{"name":"_reason","type":"bytes32"}],"name":"tokensUnlockable","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"},{"name":"_reason","type":"bytes32"}],"name":"tokensLocked","outputs":[{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"lockReason","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_reason","type":"bytes32"},{"name":"_amount","type":"uint256"}],"name":"increaseLockAmount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_reason","type":"bytes32"},{"name":"_time","type":"uint256"}],"name":"extendLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"}],"name":"getUnlockableTokens","outputs":[{"name":"unlockableTokens","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"locked","outputs":[{"name":"amount","type":"uint256"},{"name":"validity","type":"uint256"},{"name":"claimed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"minter","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_of","type":"address"},{"indexed":true,"name":"_reason","type":"bytes32"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_validity","type":"uint256"}],"name":"Locked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_of","type":"address"},{"indexed":true,"name":"_reason","type":"bytes32"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Unlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

608060405234801561001057600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a0a64012a05f200026001819055506012600a0a64012a05f200026000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133fa806100c16000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806366188463116100f9578063a9059cbb11610097578063d71be8db11610071578063d71be8db146109a0578063d73dd62314610a14578063dd62ed3e14610a7a578063f2fde38b14610af2576101a9565b8063a9059cbb14610892578063a9dab167146108f8578063ab4a2eb314610948576101a9565b806371d66f00116100d357806371d66f001461071357806381fc4d90146107755780638da5cb5b146107c557806395d89b411461080f576101a9565b8063661884631461064b57806370a08231146106b1578063715018a614610709576101a9565b80632f6c493c116101665780634b0ee02a116101405780634b0ee02a146104b55780634cb5465f1461050d5780635294d0e8146105875780635ca48d8c146105e9576101a9565b80632f6c493c146104215780632ff2e9dc14610479578063313ce56714610497576101a9565b806306fdde03146101ae578063095ea7b314610231578063179e91f11461029757806318160ddd146103035780631a69dc5c1461032157806323b872dd1461039b575b600080fd5b6101b6610b36565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b6f565b604051808215151515815260200191505060405180910390f35b6102ed600480360360608110156102ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610c61565b6040518082815260200191505060405180910390f35b61030b610d1c565b6040518082815260200191505060405180910390f35b6103816004803603608081101561033757600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d26565b604051808215151515815260200191505060405180910390f35b610407600480360360608110156103b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113de565b604051808215151515815260200191505060405180910390f35b6104636004803603602081101561043757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611793565b6040518082815260200191505060405180910390f35b610481611b04565b6040518082815260200191505060405180910390f35b61049f611b13565b6040518082815260200191505060405180910390f35b6104f7600480360360208110156104cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b18565b6040518082815260200191505060405180910390f35b61056d6004803603608081101561052357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050611bfa565b604051808215151515815260200191505060405180910390f35b6105d36004803603604081101561059d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612013565b6040518082815260200191505060405180910390f35b610635600480360360408110156105ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612138565b6040518082815260200191505060405180910390f35b6106976004803603604081101561066157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121fc565b604051808215151515815260200191505060405180910390f35b6106f3600480360360208110156106c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061248c565b6040518082815260200191505060405180910390f35b6107116124d4565b005b61075f6004803603604081101561072957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125d7565b6040518082815260200191505060405180910390f35b6107ab6004803603604081101561078b57600080fd5b810190808035906020019092919080359060200190929190505050612605565b604051808215151515815260200191505060405180910390f35b6107cd61291a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610817612940565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561085757808201518184015260208101905061083c565b50505050905090810190601f1680156108845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108de600480360360408110156108a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612979565b604051808215151515815260200191505060405180910390f35b61092e6004803603604081101561090e57600080fd5b810190808035906020019092919080359060200190929190505050612b95565b604051808215151515815260200191505060405180910390f35b61098a6004803603602081101561095e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e9f565b6040518082815260200191505060405180910390f35b6109ec600480360360408110156109b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612f76565b6040518084815260200183815260200182151515158152602001935050505060405180910390f35b610a6060048036036040811015610a2a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612fba565b604051808215151515815260200191505060405180910390f35b610adc60048036036040811015610a9057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131b6565b6040518082815260200191505060405180910390f35b610b3460048036036020811015610b0857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061323d565b005b6040518060400160405280600681526020017f464143495445000000000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600101541115610d1557600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206000015490505b9392505050565b6000600154905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d8257600080fd5b6000610d9784426132a390919063ffffffff16565b90506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548511156040518060400160405280601181526020017f4e6f7420656e6f75676820746f6b656e7300000000000000000000000000000081525090610eb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e7c578082015181840152602081019050610e61565b50505050905090810190601f168015610ea95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000610ec48488612138565b146040518060400160405280601581526020017f546f6b656e7320616c7265616479206c6f636b6564000000000000000000000081525090610fa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f66578082015181840152602081019050610f4b565b50505050905090810190601f168015610f935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008514156040518060400160405280601381526020017f416d6f756e742063616e206e6f7420626520300000000000000000000000000081525090611083576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561104857808201518184015260208101905061102d565b50505050905090810190601f1680156110755780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060000154141561114a57600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208690806001815401808255809150509060018203906000526020600020016000909192909190915055505b61119b856000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a390919063ffffffff16565b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061122e856000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bd90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604051806060016040528086815260200182815260200160001515815250600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000888152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3858373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd8784604051808381526020018281526020019250505060405180910390a36001915050949350505050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561142b57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156114b457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ee57600080fd5b61153f826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bd90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115d2826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116a382600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bd90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117ef57600080fd5b600080600090505b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611a305761189f84600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061188f57fe5b9060005260206000200154612013565b91506000821115611a23576118bd82846132a390919063ffffffff16565b92506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061194c57fe5b9060005260206000200154815260200190815260200160002060020160006101000a81548160ff021916908315150217905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081815481106119c957fe5b90600052602060002001548473ffffffffffffffffffffffffffffffffffffffff167f11f87fd5adcd05786919b8b868f59a70d78ae4eb6f305c5927f9c5b1659841a4846040518082815260200191505060405180910390a35b80806001019150506117f7565b506000821115611afe573073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611ac157600080fd5b505af1158015611ad5573d6000803e3d6000fd5b505050506040513d6020811015611aeb57600080fd5b8101908080519060200190929190505050505b50919050565b6012600a0a64012a05f2000281565b601281565b6000611b238261248c565b905060008090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611bf457611be5611bd684600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110611bc657fe5b9060005260206000200154612138565b836132a390919063ffffffff16565b91508080600101915050611b2b565b50919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c5657600080fd5b6000611c6b83426132a390919063ffffffff16565b90506000611c798787612138565b146040518060400160405280601581526020017f546f6b656e7320616c7265616479206c6f636b6564000000000000000000000081525090611d56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d1b578082015181840152602081019050611d00565b50505050905090810190601f168015611d485780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008414156040518060400160405280601381526020017f416d6f756e742063616e206e6f7420626520300000000000000000000000000081525090611e38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611dfd578082015181840152602081019050611de2565b50505050905090810190601f168015611e2a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001541415611eff57600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915055505b611f093085612979565b50604051806060016040528085815260200182815260200160001515815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff021916908315150217905550905050848673ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd8684604051808381526020018281526020019250505060405180910390a36001915050949350505050565b600042600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060010154111580156120d65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020160009054906101000a900460ff16155b1561213257600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000015490505b92915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020160009054906101000a900460ff166121f657600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000015490505b92915050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831061230c576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123a0565b61231f83826132bd90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461252e57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600460205281600052604060002081815481106125f057fe5b90600052602060002001600091509150505481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461266157600080fd5b600061266d3385612138565b116040518060400160405280601081526020017f4e6f20746f6b656e73206c6f636b6564000000000000000000000000000000008152509061274a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561270f5780820151818401526020810190506126f4565b50505050905090810190601f16801561273c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506127553083612979565b506127bc82600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600001546132a390919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060000181905550823373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a36001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600381526020017f464954000000000000000000000000000000000000000000000000000000000081525081565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156129c657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a0057600080fd5b612a51826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bd90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ae4826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a390919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bf157600080fd5b6000612bfd3385612138565b116040518060400160405280601081526020017f4e6f20746f6b656e73206c6f636b65640000000000000000000000000000000081525090612cda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612c9f578082015181840152602081019050612c84565b50505050905090810190601f168015612ccc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50612d4182600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600101546132a390919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010181905550823373ffffffffffffffffffffffffffffffffffffffff167fea90ef40963535482537f0689e05cb8d259e459ebd21530e826702294d0eafdd600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154604051808381526020018281526020019250505060405180910390a36001905092915050565b600080600090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015612f7057612f61612f5284600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110612f4257fe5b9060005260206000200154612013565b836132a390919063ffffffff16565b91508080600101915050612ea7565b50919050565b6005602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020160009054906101000a900460ff16905083565b600061304b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a390919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461329757600080fd5b6132a0816132d4565b50565b60008183019050828110156132b457fe5b80905092915050565b6000828211156132c957fe5b818303905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561330e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea165627a7a7230582024593da26bd31bdd9f731e3c41e683c3133ae5502e2f89016bd83199cb9bf26a0029

Deployed ByteCode Sourcemap

14241:5483:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14241:5483:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14299:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14299:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5942:192;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5942:192:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16978:253;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16978:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2506:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15080:1012;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;15080:1012:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4826:487;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4826:487:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18769:641;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18769:641:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14432:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14388:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17239:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17239:301:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16100:634;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;16100:634:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18469:291;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18469:291:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16742:224;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16742:224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7861:447;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7861:447:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3290:101;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3290:101:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9448:114;;;:::i;:::-;;10446:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10446:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17984:475;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17984:475:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8653:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14344:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14344:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2752:329;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2752:329:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17552:424;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17552:424:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19418:303;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19418:303:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10792:63;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10792:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7086:307;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7086:307:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6461:162;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6461:162:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9730:105;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9730:105:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;14299:38;;;;;;;;;;;;;;;;;;;:::o;5942:192::-;6009:4;6054:6;6022:7;:19;6030:10;6022:19;;;;;;;;;;;;;;;:29;6042:8;6022:29;;;;;;;;;;;;;;;:38;;;;6093:8;6072:38;;6081:10;6072:38;;;6103:6;6072:38;;;;;;;;;;;;;;;;;;6124:4;6117:11;;5942:192;;;;:::o;16978:253::-;17099:14;17167:5;17135:6;:11;17142:3;17135:11;;;;;;;;;;;;;;;:20;17147:7;17135:20;;;;;;;;;;;:29;;;:37;17131:92;;;17196:6;:11;17203:3;17196:11;;;;;;;;;;;;;;;:20;17208:7;17196:20;;;;;;;;;;;:27;;;17187:36;;17131:92;16978:253;;;;;:::o;2506:85::-;2550:7;2573:12;;2566:19;;2506:85;:::o;15080:1012::-;15182:4;9156:5;;;;;;;;;;;9142:19;;:10;:19;;;9134:28;;;;;;15199:18;15220:14;15228:5;15220:3;:7;;:14;;;;:::i;:::-;15199:35;;15426:8;:13;15435:3;15426:13;;;;;;;;;;;;;;;;15415:7;:24;;15441:17;;;;;;;;;;;;;;;;;15407:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15407:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15518:1;15488:26;15501:3;15506:7;15488:12;:26::i;:::-;:31;15521:14;;;;;;;;;;;;;;;;;15480:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15480:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15566:1;15555:7;:12;;15569:11;;;;;;;;;;;;;;;;;15547:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15547:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15629:1;15598:6;:11;15605:3;15598:11;;;;;;;;;;;;;;;:20;15610:7;15598:20;;;;;;;;;;;:27;;;:32;15594:80;;;15645:10;:15;15656:3;15645:15;;;;;;;;;;;;;;;15666:7;15645:29;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;15645:29:0;;;;;;;;;;;;;;;;;;;;;;15594:80;15769:36;15797:7;15769:8;:23;15786:4;15769:23;;;;;;;;;;;;;;;;:27;;:36;;;;:::i;:::-;15743:8;:23;15760:4;15743:23;;;;;;;;;;;;;;;:62;;;;15832:26;15850:7;15832:8;:13;15841:3;15832:13;;;;;;;;;;;;;;;;:17;;:26;;;;:::i;:::-;15816:8;:13;15825:3;15816:13;;;;;;;;;;;;;;;:42;;;;15894:37;;;;;;;;15904:7;15894:37;;;;15913:10;15894:37;;;;15925:5;15894:37;;;;;15871:6;:11;15878:3;15871:11;;;;;;;;;;;;;;;:20;15883:7;15871:20;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15990:4;15968:37;;15977:3;15968:37;;;15997:7;15968:37;;;;;;;;;;;;;;;;;;16033:7;16028:3;16021:41;;;16042:7;16051:10;16021:41;;;;;;;;;;;;;;;;;;;;;;;;16080:4;16073:11;;;15080:1012;;;;;;:::o;4826:487::-;4938:4;4972:8;:15;4981:5;4972:15;;;;;;;;;;;;;;;;4962:6;:25;;4954:34;;;;;;5013:7;:14;5021:5;5013:14;;;;;;;;;;;;;;;:26;5028:10;5013:26;;;;;;;;;;;;;;;;5003:6;:36;;4995:45;;;;;;5070:1;5055:17;;:3;:17;;;;5047:26;;;;;;5100:27;5120:6;5100:8;:15;5109:5;5100:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;5082:8;:15;5091:5;5082:15;;;;;;;;;;;;;;;:45;;;;5150:25;5168:6;5150:8;:13;5159:3;5150:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;5134:8;:13;5143:3;5134:13;;;;;;;;;;;;;;;:41;;;;5211:38;5242:6;5211:7;:14;5219:5;5211:14;;;;;;;;;;;;;;;:26;5226:10;5211:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;5182:7;:14;5190:5;5182:14;;;;;;;;;;;;;;;:26;5197:10;5182:26;;;;;;;;;;;;;;;:67;;;;5277:3;5261:28;;5270:5;5261:28;;;5282:6;5261:28;;;;;;;;;;;;;;;;;;5303:4;5296:11;;4826:487;;;;;:::o;18769:641::-;18842:24;9156:5;;;;;;;;;;;9142:19;;:10;:19;;;9134:28;;;;;;18884:20;18922:9;18934:1;18922:13;;18917:396;18941:10;:15;18952:3;18941:15;;;;;;;;;;;;;;;:22;;;;18937:1;:26;18917:396;;;19000:41;19017:3;19022:10;:15;19033:3;19022:15;;;;;;;;;;;;;;;19038:1;19022:18;;;;;;;;;;;;;;;;19000:16;:41::i;:::-;18985:56;;19075:1;19060:12;:16;19056:246;;;19116:34;19137:12;19116:16;:20;;:34;;;;:::i;:::-;19097:53;;19211:4;19169:6;:11;19176:3;19169:11;;;;;;;;;;;;;;;:31;19181:10;:15;19192:3;19181:15;;;;;;;;;;;;;;;19197:1;19181:18;;;;;;;;;;;;;;;;19169:31;;;;;;;;;;;:39;;;:46;;;;;;;;;;;;;;;;;;19253:10;:15;19264:3;19253:15;;;;;;;;;;;;;;;19269:1;19253:18;;;;;;;;;;;;;;;;19248:3;19239:47;;;19273:12;19239:47;;;;;;;;;;;;;;;;;;19056:246;18965:3;;;;;;;18917:396;;;;19350:1;19331:16;:20;19327:75;;;19366:4;:13;;;19380:3;19385:16;19366:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19366:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19366:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19366:36:0;;;;;;;;;;;;;;;;;19327:75;9169:1;18769:641;;;:::o;14432:70::-;14423:2;14487;:14;14473:10;:29;14432:70;:::o;14388:37::-;14423:2;14388:37;:::o;17239:301::-;17324:14;17365;17375:3;17365:9;:14::i;:::-;17356:23;;17397:9;17409:1;17397:13;;17392:138;17416:10;:15;17427:3;17416:15;;;;;;;;;;;;;;;:22;;;;17412:1;:26;17392:138;;;17469:49;17480:37;17493:3;17498:10;:15;17509:3;17498:15;;;;;;;;;;;;;;;17514:1;17498:18;;;;;;;;;;;;;;;;17480:12;:37::i;:::-;17469:6;:10;;:49;;;;:::i;:::-;17460:58;;17440:3;;;;;;;17392:138;;;;17239:301;;;:::o;16100:634::-;16232:4;9156:5;;;;;;;;;;;9142:19;;:10;:19;;;9134:28;;;;;;16254:18;16275:14;16283:5;16275:3;:7;;:14;;;;:::i;:::-;16254:35;;16363:1;16333:26;16346:3;16351:7;16333:12;:26::i;:::-;:31;16366:14;;;;;;;;;;;;;;;;;16325:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;16325:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16411:1;16400:7;:12;;16414:11;;;;;;;;;;;;;;;;;16392:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;16392:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16474:1;16443:6;:11;16450:3;16443:11;;;;;;;;;;;;;;;:20;16455:7;16443:20;;;;;;;;;;;:27;;;:32;16439:80;;;16490:10;:15;16501:3;16490:15;;;;;;;;;;;;;;;16511:7;16490:29;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;16490:29:0;;;;;;;;;;;;;;;;;;;;;;16439:80;16532:32;16549:4;16556:7;16532:8;:32::i;:::-;;16600:37;;;;;;;;16610:7;16600:37;;;;16619:10;16600:37;;;;16631:5;16600:37;;;;;16577:6;:11;16584:3;16577:11;;;;;;;;;;;;;;;:20;16589:7;16577:20;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16675:7;16670:3;16663:41;;;16684:7;16693:10;16663:41;;;;;;;;;;;;;;;;;;;;;;;;16722:4;16715:11;;;16100:634;;;;;;:::o;18469:291::-;18573:14;18642:3;18609:6;:11;18616:3;18609:11;;;;;;;;;;;;;;;:20;18621:7;18609:20;;;;;;;;;;;:29;;;:36;;:69;;;;;18650:6;:11;18657:3;18650:11;;;;;;;;;;;;;;;:20;18662:7;18650:20;;;;;;;;;;;:28;;;;;;;;;;;;18649:29;18609:69;18605:147;;;18725:6;:11;18732:3;18725:11;;;;;;;;;;;;;;;:20;18737:7;18725:20;;;;;;;;;;;:27;;;18716:36;;18605:147;18469:291;;;;:::o;16742:224::-;16842:14;16879:6;:11;16886:3;16879:11;;;;;;;;;;;;;;;:20;16891:7;16879:20;;;;;;;;;;;:28;;;;;;;;;;;;16874:84;;16931:6;:11;16938:3;16931:11;;;;;;;;;;;;;;;:20;16943:7;16931:20;;;;;;;;;;;:27;;;16922:36;;16874:84;16742:224;;;;:::o;7861:447::-;7972:4;7988:16;8007:7;:19;8015:10;8007:19;;;;;;;;;;;;;;;:29;8027:8;8007:29;;;;;;;;;;;;;;;;7988:48;;8067:8;8047:16;:28;8043:169;;8118:1;8086:7;:19;8094:10;8086:19;;;;;;;;;;;;;;;:29;8106:8;8086:29;;;;;;;;;;;;;;;:33;;;;8043:169;;;8174:30;8187:16;8174:8;:12;;:30;;;;:::i;:::-;8142:7;:19;8150:10;8142:19;;;;;;;;;;;;;;;:29;8162:8;8142:29;;;;;;;;;;;;;;;:62;;;;8043:169;8244:8;8223:61;;8232:10;8223:61;;;8254:7;:19;8262:10;8254:19;;;;;;;;;;;;;;;:29;8274:8;8254:29;;;;;;;;;;;;;;;;8223:61;;;;;;;;;;;;;;;;;;8298:4;8291:11;;;7861:447;;;;:::o;3290:101::-;3346:7;3369:8;:16;3378:6;3369:16;;;;;;;;;;;;;;;;3362:23;;3290:101;;;:::o;9448:114::-;9156:5;;;;;;;;;;;9142:19;;:10;:19;;;9134:28;;;;;;9525:5;;;;;;;;;;;9506:25;;;;;;;;;;;;9554:1;9538:5;;:18;;;;;;;;;;;;;;;;;;9448:114::o;10446:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17984:475::-;18090:4;9156:5;;;;;;;;;;;9142:19;;:10;:19;;;9134:28;;;;;;18156:1;18120:33;18133:10;18145:7;18120:12;:33::i;:::-;:37;18159:10;;;;;;;;;;;;;;;;;18112:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;18112:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18181:32;18198:4;18205:7;18181:8;:32::i;:::-;;18263:47;18302:7;18263:6;:18;18270:10;18263:18;;;;;;;;;;;;;;;:27;18282:7;18263:27;;;;;;;;;;;:34;;;:38;;:47;;;;:::i;:::-;18226:6;:18;18233:10;18226:18;;;;;;;;;;;;;;;:27;18245:7;18226:27;;;;;;;;;;;:34;;:84;;;;18347:7;18335:10;18328:101;;;18356:6;:18;18363:10;18356:18;;;;;;;;;;;;;;;:27;18375:7;18356:27;;;;;;;;;;;:34;;;18392:6;:18;18399:10;18392:18;;;;;;;;;;;;;;;:27;18411:7;18392:27;;;;;;;;;;;:36;;;18328:101;;;;;;;;;;;;;;;;;;;;;;;;18447:4;18440:11;;17984:475;;;;:::o;8653:20::-;;;;;;;;;;;;;:::o;14344:37::-;;;;;;;;;;;;;;;;;;;:::o;2752:329::-;2815:4;2846:8;:20;2855:10;2846:20;;;;;;;;;;;;;;;;2836:6;:30;;2828:39;;;;;;2897:1;2882:17;;:3;:17;;;;2874:26;;;;;;2932:32;2957:6;2932:8;:20;2941:10;2932:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;2909:8;:20;2918:10;2909:20;;;;;;;;;;;;;;;:55;;;;2987:25;3005:6;2987:8;:13;2996:3;2987:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;2971:8;:13;2980:3;2971:13;;;;;;;;;;;;;;;:41;;;;3045:3;3024:33;;3033:10;3024:33;;;3050:6;3024:33;;;;;;;;;;;;;;;;;;3071:4;3064:11;;2752:329;;;;:::o;17552:424::-;17648:4;9156:5;;;;;;;;;;;9142:19;;:10;:19;;;9134:28;;;;;;17714:1;17678:33;17691:10;17703:7;17678:12;:33::i;:::-;:37;17717:10;;;;;;;;;;;;;;;;;17670:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17670:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17780:47;17821:5;17780:6;:18;17787:10;17780:18;;;;;;;;;;;;;;;:27;17799:7;17780:27;;;;;;;;;;;:36;;;:40;;:47;;;;:::i;:::-;17741:6;:18;17748:10;17741:18;;;;;;;;;;;;;;;:27;17760:7;17741:27;;;;;;;;;;;:36;;:86;;;;17864:7;17852:10;17845:101;;;17873:6;:18;17880:10;17873:18;;;;;;;;;;;;;;;:27;17892:7;17873:27;;;;;;;;;;;:34;;;17909:6;:18;17916:10;17909:18;;;;;;;;;;;;;;;:27;17928:7;17909:27;;;;;;;;;;;:36;;;17845:101;;;;;;;;;;;;;;;;;;;;;;;;17964:4;17957:11;;17552:424;;;;:::o;19418:303::-;19508:24;19555:9;19567:1;19555:13;;19550:162;19574:10;:15;19585:3;19574:15;;;;;;;;;;;;;;;:22;;;;19570:1;:26;19550:162;;;19637:63;19658:41;19675:3;19680:10;:15;19691:3;19680:15;;;;;;;;;;;;;;;19696:1;19680:18;;;;;;;;;;;;;;;;19658:16;:41::i;:::-;19637:16;:20;;:63;;;;:::i;:::-;19618:82;;19598:3;;;;;;;19550:162;;;;19418:303;;;:::o;10792:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7086:307::-;7192:4;7249:46;7283:11;7249:7;:19;7257:10;7249:19;;;;;;;;;;;;;;;:29;7269:8;7249:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;7208:7;:19;7216:10;7208:19;;;;;;;;;;;;;;;:29;7228:8;7208:29;;;;;;;;;;;;;;;:88;;;;7329:8;7308:61;;7317:10;7308:61;;;7339:7;:19;7347:10;7339:19;;;;;;;;;;;;;;;:29;7359:8;7339:29;;;;;;;;;;;;;;;;7308:61;;;;;;;;;;;;;;;;;;7383:4;7376:11;;7086:307;;;;:::o;6461:162::-;6566:7;6592;:15;6600:6;6592:15;;;;;;;;;;;;;;;:25;6608:8;6592:25;;;;;;;;;;;;;;;;6585:32;;6461:162;;;;:::o;9730:105::-;9156:5;;;;;;;;;;;9142:19;;:10;:19;;;9134:28;;;;;;9800:29;9819:9;9800:18;:29::i;:::-;9730:105;:::o;1924:132::-;1984:9;2011:2;2006;:7;2002:11;;2032:2;2027:1;:7;;2020:15;;;;2049:1;2042:8;;1924:132;;;;:::o;1738:119::-;1798:7;1827:2;1821;:8;;1814:16;;;;1849:2;1844;:7;1837:14;;1738:119;;;;:::o;9976:175::-;10068:1;10047:23;;:9;:23;;;;10039:32;;;;;;10111:9;10083:38;;10104:5;;;;;;;;;;;10083:38;;;;;;;;;;;;10136:9;10128:5;;:17;;;;;;;;;;;;;;;;;;9976:175;:::o

Swarm Source

bzzr://24593da26bd31bdd9f731e3c41e683c3133ae5502e2f89016bd83199cb9bf26a

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.