ETH Price: $2,623.29 (+1.20%)

Token

NGN Gluwacoin (NGN-G)
 

Overview

Max Total Supply

117,022,068.28 NGN-G

Holders

2,193 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Null: 0x000...000
Balance
0 NGN-G

Value
$0.00
0x0000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

NGN Gluwacoin is an asset-backed stablecoin following the Gluwacoin standard, an interoperable stablecoin standard.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Gluwacoin

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity Multiple files format)

File 2 of 3: Gluwacoin.sol
pragma solidity ^0.5.9;


import "./SafeMath.sol";
import "./ECDSA.sol";

contract Erc20
{   
    function totalSupply() public view returns (uint256 amount);
    function balanceOf(address _tokenOwner) public view returns (uint256 balance);
    function transfer(address _to, uint256 _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
    function approve(address _spender, uint256 _value) public returns (bool success);
    function allowance(address _tokenOwner, address _spender) public view returns (uint256 remaining);
    
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}


contract Erc20Plus is Erc20
{
    function burn(uint256 _value) public returns (bool success);
    function mint(address _to, uint256 _value) public returns (bool success);

    event Mint(address indexed _mintTo, uint256 _value);
    event Burnt(address indexed _burnFrom, uint256 _value);
}

contract Owned
{
    address internal _owner;

    constructor() public
    {
        _owner = msg.sender;
    }

    modifier onlyOwner 
    {
        require(msg.sender == _owner, "Only contract owner can do this.");
        _;
    }   

    function () external payable 
    {
        require(false, "eth transfer is disabled."); // throw
    }
}


contract Gluwacoin is Erc20Plus, Owned
{
    using SafeMath for uint256;
    using ECDSA for bytes32;

    string public constant name = "NGN Gluwacoin";
    string public constant symbol = "NGN-G";
    uint8 public constant decimals = 18;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowed;
    uint256 private _totalSupply;

    enum ReservationStatus
    {
        Inactive,
        Active,
        Expired,
        Reclaimed,
        Completed
    }

    struct Reservation
    {
        uint256 _amount;
        uint256 _fee;
        address _recipient;
        address _executor;
        uint256 _expiryBlockNum;
        ReservationStatus _status;
    }

    // Address mapping to mapping of nonce to amount and expiry for that nonce.
    mapping (address => mapping(uint256 => Reservation)) private _reserved;

    // Total amount of reserved balance for address
    mapping (address => uint256) private _totalReserved;

    mapping (address => mapping (uint256 => bool)) _usedNonces;

    event NonceUsed(address indexed _user, uint256 _nonce);

    function totalSupply() public view returns (uint256 amount)
    {
        return _totalSupply;
    }

    /**
        Returns balance of token owner minus reserved amount.
     */
    function balanceOf(address _tokenOwner) public view returns (uint256 balance)
    {
        return _balances[_tokenOwner].subtract(_totalReserved[_tokenOwner]);
    }

    /**
        Returns the total amount of tokens for token owner.
     */
    function totalBalanceOf(address _tokenOwner) public view returns (uint256 balance)
    {
        return _balances[_tokenOwner];
    }

    function getReservation(address _tokenOwner, uint256 _nonce) public view returns (uint256 _amount, uint256 _fee, address _recipient, address _executor, uint256 _expiryBlockNum, ReservationStatus _status)
    {
        Reservation memory _reservation = _reserved[_tokenOwner][_nonce];

        _amount = _reservation._amount;
        _fee = _reservation._fee;
        _recipient = _reservation._recipient;
        _executor = _reservation._executor;
        _expiryBlockNum = _reservation._expiryBlockNum;

        if (_reservation._status == ReservationStatus.Active && _reservation._expiryBlockNum <= block.number)
        {
            _status = ReservationStatus.Expired;
        }
        else
        {
            _status = _reservation._status;
        }
    }

    function transfer(address _to, uint256 _value) public returns (bool success)
    {
        require(_balances[msg.sender].subtract(_totalReserved[msg.sender]) >= _value, "Insufficient balance for transfer");
        require(_to != address(0), "Can not transfer to zero address");

        _balances[msg.sender] = _balances[msg.sender].subtract(_value);
        _balances[_to] = _balances[_to].add(_value);

        emit Transfer(msg.sender, _to, _value);

        return true;
    }

    function transfer(address _from, address _to, uint256 _value, uint256 _fee, uint256 _nonce, bytes memory _sig) public returns (bool success)
    {
        require(_to != address(0), "Can not transfer to zero address");

        uint256 _valuePlusFee = _value.add(_fee);
        require(_balances[_from].subtract(_totalReserved[_from]) >= _valuePlusFee, "Insufficient balance for transfer");
        

        bytes32 hash = keccak256(abi.encodePacked(address(this), _from, _to, _value, _fee, _nonce));
        validateSignature(hash, _from, _nonce, _sig);

        _balances[_from] = _balances[_from].subtract(_valuePlusFee);
        _balances[_to] = _balances[_to].add(_value);
        _totalSupply = _totalSupply.subtract(_fee);

        emit Transfer(_from, _to, _value);
        emit Transfer(_from, address(0), _fee);
        emit Burnt(_from, _fee);

        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
    {
        require(_balances[_from].subtract(_totalReserved[_from]) >= _value, "Insufficient balance for transfer");
        require(_allowed[_from][msg.sender] >= _value, "Allowance exceeded");
        require(_to != address(0), "Can not transfer to zero address");

        _balances[_from] = _balances[_from].subtract(_value);
        _allowed[_from][msg.sender] = _allowed[_from][msg.sender].subtract(_value);
        _balances[_to] = _balances[_to].add(_value);

        emit Transfer(_from, _to, _value);

        return true;
    }

    function approve(address _spender, uint256 _value) public returns (bool success)
    {
        require(_spender != address(0), "Invalid spender address");

        _allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        
        return true;
    }

    function allowance(address _tokenOwner, address _spender) public view returns (uint256 remaining)
    {
        return _allowed[_tokenOwner][_spender];
    }

    function burn(uint256 _value) public onlyOwner returns (bool success)
    {
        require(_balances[msg.sender].subtract(_totalReserved[msg.sender]) >= _value, "Insufficient balance for burn");

        _balances[msg.sender] = _balances[msg.sender].subtract(_value);
        _totalSupply = _totalSupply.subtract(_value);

        emit Transfer(msg.sender, address(0), _value);
        emit Burnt(msg.sender, _value);

        return true;
    }

    function mint(address _to, uint256 _value) public onlyOwner returns (bool success)
    {
        require(_to != address(0), "Can not mint to zero address");

        _balances[_to] = _balances[_to].add(_value);
        _totalSupply = _totalSupply.add(_value);

        emit Transfer(address(0), _owner, _value);
        emit Transfer(_owner, _to, _value);
        emit Mint(_to, _value);

        return true;
    }

    function reserve(address _from, address _to, address _executor, uint256 _amount, uint256 _fee, uint256 _nonce, uint256 _expiryBlockNum, bytes memory _sig) public returns (bool success)
    {
        require(_expiryBlockNum > block.number, "Invalid block expiry number");
        require(_amount > 0, "Invalid reserve amount");
        require(_from != address(0), "Can't reserve from zero address");
        require(_to != address(0), "Can't reserve to zero address");
        require(_executor != address(0), "Can't execute from zero address");

        uint256 _amountPlusFee = _amount.add(_fee);
        require(_balances[_from].subtract(_totalReserved[_from]) >= _amountPlusFee, "Insufficient funds to create reservation");

        bytes32 hash = keccak256(abi.encodePacked(address(this), _from, _to, _executor, _amount, _fee, _nonce, _expiryBlockNum));
        validateSignature(hash, _from, _nonce, _sig);

        _reserved[_from][_nonce] = Reservation(_amount, _fee, _to, _executor, _expiryBlockNum, ReservationStatus.Active);
        _totalReserved[_from] = _totalReserved[_from].add(_amountPlusFee);

        return true;
    }

    function execute(address _sender, uint256 _nonce) public returns (bool success)
    {
        Reservation storage _reservation = _reserved[_sender][_nonce];

        require(_reservation._status == ReservationStatus.Active, "Invalid reservation to execute");
        require(_reservation._expiryBlockNum > block.number, "Reservation has expired and can not be executed");
        require(_reservation._executor == msg.sender, "This address is not authorized to execute this reservation");

        uint256 _amountPlusFee = _reservation._amount.add(_reservation._fee);

        _balances[_sender] = _balances[_sender].subtract(_amountPlusFee);
        _balances[_reservation._recipient] = _balances[_reservation._recipient].add(_reservation._amount);
        _totalSupply = _totalSupply.subtract(_reservation._fee);

        emit Transfer(_sender, _reservation._recipient, _reservation._amount);
        emit Transfer(_sender, address(0), _reservation._fee);
        emit Burnt(_sender, _reservation._fee);

        _reserved[_sender][_nonce]._status = ReservationStatus.Completed;
        _totalReserved[_sender] = _totalReserved[_sender].subtract(_amountPlusFee);

        return true;
    }

    function reclaim(address _sender, uint256 _nonce) public returns (bool success)
    {
        Reservation storage _reservation = _reserved[_sender][_nonce];
        require(_reservation._status == ReservationStatus.Active, "Invalid reservation status");

        if (msg.sender != _owner)
        {
            require(msg.sender == _sender, "Can not reclaim another user's reservation for them");
            require(_reservation._expiryBlockNum <= block.number, "Reservation has not expired yet");
        }

        _reserved[_sender][_nonce]._status = ReservationStatus.Reclaimed;
        _totalReserved[_sender] = _totalReserved[_sender].subtract(_reservation._amount).subtract(_reservation._fee);

        return true;
    }

    function validateSignature(bytes32 _hash, address _from, uint256 _nonce, bytes memory _sig) internal
    {
        bytes32 messageHash = _hash.toEthSignedMessageHash();

        address _signer = messageHash.recover(_sig);
        require(_signer == _from, "Invalid signature");

        require(!_usedNonces[_signer][_nonce], "Nonce has already been used for this address");
        _usedNonces[_signer][_nonce] = true;

        emit NonceUsed(_signer, _nonce);
    }
}

File 1 of 3: ECDSA.sol
pragma solidity ^0.5.9;
/** 
The MIT License (MIT)

Copyright (c) 2016-2019 zOS Global Limited

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

/**
 * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
 *
 * These functions can be used to verify that a message was signed by the holder
 * of the private keys of a given address.
 */
library ECDSA {
    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature`. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * (.note) This call _does not revert_ if the signature is invalid, or
     * if the signer is otherwise unable to be retrieved. In those scenarios,
     * the zero address is returned.
     *
     * (.warning) `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise)
     * be too long), and then calling `toEthSignedMessageHash` on it.
     */
    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
        // Check the signature length
        if (signature.length != 65) {
            return (address(0));
        }

        // Divide the signature in r, s and v variables
        bytes32 r;
        bytes32 s;
        uint8 v;

        // ecrecover takes the signature parameters, and the only way to get them
        // currently is to use assembly.
        // solhint-disable-next-line no-inline-assembly
        assembly {
            r := mload(add(signature, 0x20))
            s := mload(add(signature, 0x40))
            v := byte(0, mload(add(signature, 0x60)))
        }

        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most
        // signatures from current libraries generate a unique signature with an s-value in the lower half order.
        //
        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
        // these malleable signatures as well.
        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
            return address(0);
        }

        if (v != 27 && v != 28) {
            return address(0);
        }

        // If the signature is valid (and not malleable), return the signer address
        return ecrecover(hash, v, r, s);
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from a `hash`. This
     * replicates the behavior of the
     * [`eth_sign`](https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign)
     * JSON-RPC method.
     *
     * See `recover`.
     */
    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {
        // 32 is the length in bytes of hash,
        // enforced by the type signature above
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
    }
}

File 3 of 3: SafeMath.sol
pragma solidity ^0.5.9;
/**
The MIT License (MIT)

Copyright (c) 2016 Smart Contract Solutions, Inc.

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */


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

    /**
    * @dev Multiplies two numbers, reverts on overflow.
    */
    function multiply(uint256 a, uint256 b) internal pure returns (uint256)
    {
        // Gas optimization: this is cheaper than requiring '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;
        }

        uint256 c = a * b;
        require(c / a == b, "Multiplication overflow");

        return c;
    }

    /**
    * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
    */
    function divide(uint256 a, uint256 b) internal pure returns (uint256)
    {
        require(b > 0, "Division by zero"); // Solidity only automatically asserts when dividing by 0
        uint256 c = a / b;

        return c;
    }

    /**
    * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function subtract(uint256 a, uint256 b) internal pure returns (uint256)
    {
        require(b <= a, "Subtraction underflow");
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Adds two numbers, reverts on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256)
    {
        uint256 c = a + b;
        require(c >= a, "Addition overflow");

        return c;
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_burnFrom","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Burnt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_mintTo","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"NonceUsed","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"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"_tokenOwner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"execute","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_tokenOwner","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getReservation","outputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_fee","type":"uint256"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"uint256","name":"_expiryBlockNum","type":"uint256"},{"internalType":"enum Gluwacoin.ReservationStatus","name":"_status","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"reclaim","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_fee","type":"uint256"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"uint256","name":"_expiryBlockNum","type":"uint256"},{"internalType":"bytes","name":"_sig","type":"bytes"}],"name":"reserve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_tokenOwner","type":"address"}],"name":"totalBalanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_fee","type":"uint256"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"bytes","name":"_sig","type":"bytes"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

6080604052600080546001600160a01b03191633179055612057806100256000396000f3fe6080604052600436106100fe5760003560e01c806342966c68116100955780638bd317eb116100645780638bd317eb1461058657806395d89b41146105bf578063a22ac5a9146105d4578063a9059cbb14610678578063dd62ed3e146106b1576100fe565b806342966c68146104085780634b0ee02a1461043257806370a082311461046557806380c9dcf714610498576100fe565b806323b872dd116100d157806323b872dd14610328578063313ce5671461036b5780633b89bb861461039657806340c10f19146103cf576100fe565b806306fdde031461014b578063095ea7b3146101d55780630982d5b01461022257806318160ddd14610301575b6040805162461bcd60e51b815260206004820152601960248201527f657468207472616e736665722069732064697361626c65642e00000000000000604482015290519081900360640190fd5b34801561015757600080fd5b506101606106ec565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019a578181015183820152602001610182565b50505050905090810190601f1680156101c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e157600080fd5b5061020e600480360360408110156101f857600080fd5b506001600160a01b038135169060200135610715565b604080519115158252519081900360200190f35b34801561022e57600080fd5b5061020e600480360360c081101561024557600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a082013564010000000081111561028c57600080fd5b82018360208201111561029e57600080fd5b803590602001918460018302840111640100000000831117156102c057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107da945050505050565b34801561030d57600080fd5b50610316610a6a565b60408051918252519081900360200190f35b34801561033457600080fd5b5061020e6004803603606081101561034b57600080fd5b506001600160a01b03813581169160208101359091169060400135610a70565b34801561037757600080fd5b50610380610ca4565b6040805160ff9092168252519081900360200190f35b3480156103a257600080fd5b5061020e600480360360408110156103b957600080fd5b506001600160a01b038135169060200135610ca9565b3480156103db57600080fd5b5061020e600480360360408110156103f257600080fd5b506001600160a01b038135169060200135610f95565b34801561041457600080fd5b5061020e6004803603602081101561042b57600080fd5b5035611155565b34801561043e57600080fd5b506103166004803603602081101561045557600080fd5b50356001600160a01b03166112e0565b34801561047157600080fd5b506103166004803603602081101561048857600080fd5b50356001600160a01b03166112fb565b3480156104a457600080fd5b5061020e60048036036101008110156104bc57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160608201359160808101359160a08201359160c081013591810190610100810160e082013564010000000081111561051157600080fd5b82018360208201111561052357600080fd5b8035906020019184600183028401116401000000008311171561054557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061132e945050505050565b34801561059257600080fd5b5061020e600480360360408110156105a957600080fd5b506001600160a01b038135169060200135611722565b3480156105cb57600080fd5b506101606118df565b3480156105e057600080fd5b5061060d600480360360408110156105f757600080fd5b506001600160a01b038135169060200135611900565b60405180878152602001868152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200182600481111561065f57fe5b60ff168152602001965050505050505060405180910390f35b34801561068457600080fd5b5061020e6004803603604081101561069b57600080fd5b506001600160a01b038135169060200135611a01565b3480156106bd57600080fd5b50610316600480360360408110156106d457600080fd5b506001600160a01b0381358116916020013516611b64565b6040518060400160405280600d81526020016c2723a71023b63abbb0b1b7b4b760991b81525081565b60006001600160a01b038316610772576040805162461bcd60e51b815260206004820152601760248201527f496e76616c6964207370656e6465722061646472657373000000000000000000604482015290519081900360640190fd5b3360008181526002602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60006001600160a01b038616610837576040805162461bcd60e51b815260206004820181905260248201527f43616e206e6f74207472616e7366657220746f207a65726f2061646472657373604482015290519081900360640190fd5b6000610849868663ffffffff611b8f16565b6001600160a01b03891660009081526005602090815260408083205460019092529091205491925082916108829163ffffffff611be416565b10156108bf5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f4d6021913960400191505060405180910390fd5b6040805130606090811b6020808401919091526bffffffffffffffffffffffff198c831b81166034850152918b901b9091166048830152605c8201899052607c8201889052609c8083018890528351808403909101815260bc909201909252805191012061092f818a8787611c39565b6001600160a01b038916600090815260016020526040902054610958908363ffffffff611be416565b6001600160a01b03808b1660009081526001602052604080822093909355908a168152205461098d908863ffffffff611b8f16565b6001600160a01b0389166000908152600160205260409020556003546109b9908763ffffffff611be416565b6003556040805188815290516001600160a01b03808b1692908c1691600080516020611fa18339815191529181900360200190a36040805187815290516000916001600160a01b038c1691600080516020611fa18339815191529181900360200190a36040805187815290516001600160a01b038b16917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a250600198975050505050505050565b60035490565b6001600160a01b03831660009081526005602090815260408083205460019092528220548391610aa6919063ffffffff611be416565b1015610ae35760405162461bcd60e51b8152600401808060200182810382526021815260200180611f4d6021913960400191505060405180910390fd5b6001600160a01b0384166000908152600260209081526040808320338452909152902054821115610b50576040805162461bcd60e51b8152602060048201526012602482015271105b1b1bddd85b98d948195e18d95959195960721b604482015290519081900360640190fd5b6001600160a01b038316610bab576040805162461bcd60e51b815260206004820181905260248201527f43616e206e6f74207472616e7366657220746f207a65726f2061646472657373604482015290519081900360640190fd5b6001600160a01b038416600090815260016020526040902054610bd4908363ffffffff611be416565b6001600160a01b0385166000908152600160209081526040808320939093556002815282822033835290522054610c11908363ffffffff611be416565b6001600160a01b038086166000908152600260209081526040808320338452825280832094909455918616815260019091522054610c55908363ffffffff611b8f16565b6001600160a01b038085166000818152600160209081526040918290209490945580518681529051919392881692600080516020611fa183398151915292918290030190a35060019392505050565b601281565b6001600160a01b038216600090815260046020908152604080832084845290915281206001600582015460ff166004811115610ce157fe5b14610d33576040805162461bcd60e51b815260206004820152601e60248201527f496e76616c6964207265736572766174696f6e20746f20657865637574650000604482015290519081900360640190fd5b43816004015411610d755760405162461bcd60e51b815260040180806020018281038252602f815260200180611f1e602f913960400191505060405180910390fd5b60038101546001600160a01b03163314610dc05760405162461bcd60e51b815260040180806020018281038252603a815260200180611fe9603a913960400191505060405180910390fd5b60018101548154600091610dda919063ffffffff611b8f16565b6001600160a01b038616600090815260016020526040902054909150610e06908263ffffffff611be416565b6001600160a01b03808716600090815260016020526040808220939093558454600286015490921681529190912054610e449163ffffffff611b8f16565b60028301546001600160a01b0316600090815260016020819052604090912091909155820154600354610e7c9163ffffffff611be416565b6003556002820154825460408051918252516001600160a01b0392831692881691600080516020611fa1833981519152919081900360200190a3600182015460408051918252516000916001600160a01b03881691600080516020611fa18339815191529181900360200190a3600182015460408051918252516001600160a01b038716917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a26001600160a01b038516600081815260046020818152604080842089855282528084206005908101805460ff1916909417909355938352522054610f709082611be4565b6001600160a01b03861660009081526005602052604090205550600191505092915050565b600080546001600160a01b03163314610ff5576040805162461bcd60e51b815260206004820181905260248201527f4f6e6c7920636f6e7472616374206f776e65722063616e20646f20746869732e604482015290519081900360640190fd5b6001600160a01b038316611050576040805162461bcd60e51b815260206004820152601c60248201527f43616e206e6f74206d696e7420746f207a65726f206164647265737300000000604482015290519081900360640190fd5b6001600160a01b038316600090815260016020526040902054611079908363ffffffff611b8f16565b6001600160a01b0384166000908152600160205260409020556003546110a5908363ffffffff611b8f16565b600355600080546040805185815290516001600160a01b039092169291600080516020611fa18339815191529181900360200190a36000546040805184815290516001600160a01b03808716931691600080516020611fa1833981519152919081900360200190a36040805183815290516001600160a01b038516917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a250600192915050565b600080546001600160a01b031633146111b5576040805162461bcd60e51b815260206004820181905260248201527f4f6e6c7920636f6e7472616374206f776e65722063616e20646f20746869732e604482015290519081900360640190fd5b3360009081526005602090815260408083205460019092529091205483916111e3919063ffffffff611be416565b1015611236576040805162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f72206275726e000000604482015290519081900360640190fd5b33600090815260016020526040902054611256908363ffffffff611be416565b33600090815260016020526040902055600354611279908363ffffffff611be416565b6003556040805183815290516000913391600080516020611fa18339815191529181900360200190a360408051838152905133917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a2506001919050565b6001600160a01b031660009081526001602052604090205490565b6001600160a01b03811660009081526005602090815260408083205460019092528220546107d49163ffffffff611be416565b6000438311611384576040805162461bcd60e51b815260206004820152601b60248201527f496e76616c696420626c6f636b20657870697279206e756d6265720000000000604482015290519081900360640190fd5b600086116113d2576040805162461bcd60e51b8152602060048201526016602482015275125b9d985b1a59081c995cd95c9d9948185b5bdd5b9d60521b604482015290519081900360640190fd5b6001600160a01b03891661142d576040805162461bcd60e51b815260206004820152601f60248201527f43616e277420726573657276652066726f6d207a65726f206164647265737300604482015290519081900360640190fd5b6001600160a01b038816611488576040805162461bcd60e51b815260206004820152601d60248201527f43616e2774207265736572766520746f207a65726f2061646472657373000000604482015290519081900360640190fd5b6001600160a01b0387166114e3576040805162461bcd60e51b815260206004820152601f60248201527f43616e277420657865637574652066726f6d207a65726f206164647265737300604482015290519081900360640190fd5b60006114f5878763ffffffff611b8f16565b6001600160a01b038b16600090815260056020908152604080832054600190925290912054919250829161152e9163ffffffff611be416565b101561156b5760405162461bcd60e51b8152600401808060200182810382526028815260200180611fc16028913960400191505060405180910390fd5b6040805130606090811b6020808401919091526bffffffffffffffffffffffff198e831b811660348501528d831b81166048850152918c901b909116605c830152607082018a90526090820189905260b0820188905260d08083018890528351808403909101815260f090920190925280519101206115ec818c8887611c39565b6040518060c001604052808981526020018881526020018b6001600160a01b031681526020018a6001600160a01b031681526020018681526020016001600481111561163457fe5b90526001600160a01b03808d1660009081526004602081815260408084208c85528252928390208551815590850151600180830191909155928501516002820180549186166001600160a01b031992831617905560608601516003830180549190961691161790935560808401518382015560a08401516005840180549193909260ff199092169184908111156116c757fe5b021790555050506001600160a01b038b166000908152600560205260409020546116f7908363ffffffff611b8f16565b6001600160a01b038c1660009081526005602052604090205550600191505098975050505050505050565b6001600160a01b038216600090815260046020908152604080832084845290915281206001600582015460ff16600481111561175a57fe5b146117ac576040805162461bcd60e51b815260206004820152601a60248201527f496e76616c6964207265736572766174696f6e20737461747573000000000000604482015290519081900360640190fd5b6000546001600160a01b0316331461185e57336001600160a01b038516146118055760405162461bcd60e51b8152600401808060200182810382526033815260200180611f6e6033913960400191505060405180910390fd5b438160040154111561185e576040805162461bcd60e51b815260206004820152601f60248201527f5265736572766174696f6e20686173206e6f7420657870697265642079657400604482015290519081900360640190fd5b6001600160a01b038416600081815260046020908152604080832087845282528083206005908101805460ff19166003179055600186015486549585529252909120546118bb926118af9190611be4565b9063ffffffff611be416565b6001600160a01b038516600090815260056020526040902055506001905092915050565b604051806040016040528060058152602001644e474e2d4760d81b81525081565b600080600080600080611911611ebe565b6001600160a01b03808a1660009081526004602081815260408084208d8552825292839020835160c08101855281548152600182015492810192909252600281015485169382019390935260038301549093166060840152818101546080840152600582015460a084019160ff9091169081111561198b57fe5b600481111561199657fe5b90525080516020820151604083015160608401516080850151939b50919950975095509350905060018160a0015160048111156119cf57fe5b1480156119e0575043816080015111155b156119ee57600291506119f6565b8060a0015191505b509295509295509295565b3360009081526005602090815260408083205460019092528220548391611a2e919063ffffffff611be416565b1015611a6b5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f4d6021913960400191505060405180910390fd5b6001600160a01b038316611ac6576040805162461bcd60e51b815260206004820181905260248201527f43616e206e6f74207472616e7366657220746f207a65726f2061646472657373604482015290519081900360640190fd5b33600090815260016020526040902054611ae6908363ffffffff611be416565b33600090815260016020526040808220929092556001600160a01b03851681522054611b18908363ffffffff611b8f16565b6001600160a01b038416600081815260016020908152604091829020939093558051858152905191923392600080516020611fa18339815191529281900390910190a350600192915050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600082820183811015611bdd576040805162461bcd60e51b81526020600482015260116024820152704164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b9392505050565b600082821115611c33576040805162461bcd60e51b81526020600482015260156024820152745375627472616374696f6e20756e646572666c6f7760581b604482015290519081900360640190fd5b50900390565b6000611c4485611d7f565b90506000611c58828463ffffffff611dd016565b9050846001600160a01b0316816001600160a01b031614611cb4576040805162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b6001600160a01b038116600090815260066020908152604080832087845290915290205460ff1615611d175760405162461bcd60e51b815260040180806020018281038252602c815260200180611ef2602c913960400191505060405180910390fd5b6001600160a01b0381166000818152600660209081526040808320888452825291829020805460ff19166001179055815187815291517f2af71f10069c28afc67c3752e87e0e4616a97948d33c8f404a856c0c334b3e019281900390910190a2505050505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b60008151604114611de3575060006107d4565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115611e2957600093505050506107d4565b8060ff16601b14158015611e4157508060ff16601c14155b15611e5257600093505050506107d4565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015611ea9573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b6040805160c08101825260008082526020820181905291810182905260608101829052608081018290529060a08201529056fe4e6f6e63652068617320616c7265616479206265656e207573656420666f72207468697320616464726573735265736572766174696f6e20686173206578706972656420616e642063616e206e6f74206265206578656375746564496e73756666696369656e742062616c616e636520666f72207472616e7366657243616e206e6f74207265636c61696d20616e6f7468657220757365722773207265736572766174696f6e20666f72207468656dddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef496e73756666696369656e742066756e647320746f20637265617465207265736572766174696f6e546869732061646472657373206973206e6f7420617574686f72697a656420746f20657865637574652074686973207265736572766174696f6ea265627a7a723158207d60208448f8f2b932955b69b0563c64f9297b55b8d769cd333e1370c5054c4e64736f6c63430005100032

Deployed Bytecode

0x6080604052600436106100fe5760003560e01c806342966c68116100955780638bd317eb116100645780638bd317eb1461058657806395d89b41146105bf578063a22ac5a9146105d4578063a9059cbb14610678578063dd62ed3e146106b1576100fe565b806342966c68146104085780634b0ee02a1461043257806370a082311461046557806380c9dcf714610498576100fe565b806323b872dd116100d157806323b872dd14610328578063313ce5671461036b5780633b89bb861461039657806340c10f19146103cf576100fe565b806306fdde031461014b578063095ea7b3146101d55780630982d5b01461022257806318160ddd14610301575b6040805162461bcd60e51b815260206004820152601960248201527f657468207472616e736665722069732064697361626c65642e00000000000000604482015290519081900360640190fd5b34801561015757600080fd5b506101606106ec565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019a578181015183820152602001610182565b50505050905090810190601f1680156101c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e157600080fd5b5061020e600480360360408110156101f857600080fd5b506001600160a01b038135169060200135610715565b604080519115158252519081900360200190f35b34801561022e57600080fd5b5061020e600480360360c081101561024557600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a082013564010000000081111561028c57600080fd5b82018360208201111561029e57600080fd5b803590602001918460018302840111640100000000831117156102c057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107da945050505050565b34801561030d57600080fd5b50610316610a6a565b60408051918252519081900360200190f35b34801561033457600080fd5b5061020e6004803603606081101561034b57600080fd5b506001600160a01b03813581169160208101359091169060400135610a70565b34801561037757600080fd5b50610380610ca4565b6040805160ff9092168252519081900360200190f35b3480156103a257600080fd5b5061020e600480360360408110156103b957600080fd5b506001600160a01b038135169060200135610ca9565b3480156103db57600080fd5b5061020e600480360360408110156103f257600080fd5b506001600160a01b038135169060200135610f95565b34801561041457600080fd5b5061020e6004803603602081101561042b57600080fd5b5035611155565b34801561043e57600080fd5b506103166004803603602081101561045557600080fd5b50356001600160a01b03166112e0565b34801561047157600080fd5b506103166004803603602081101561048857600080fd5b50356001600160a01b03166112fb565b3480156104a457600080fd5b5061020e60048036036101008110156104bc57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160608201359160808101359160a08201359160c081013591810190610100810160e082013564010000000081111561051157600080fd5b82018360208201111561052357600080fd5b8035906020019184600183028401116401000000008311171561054557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061132e945050505050565b34801561059257600080fd5b5061020e600480360360408110156105a957600080fd5b506001600160a01b038135169060200135611722565b3480156105cb57600080fd5b506101606118df565b3480156105e057600080fd5b5061060d600480360360408110156105f757600080fd5b506001600160a01b038135169060200135611900565b60405180878152602001868152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200182600481111561065f57fe5b60ff168152602001965050505050505060405180910390f35b34801561068457600080fd5b5061020e6004803603604081101561069b57600080fd5b506001600160a01b038135169060200135611a01565b3480156106bd57600080fd5b50610316600480360360408110156106d457600080fd5b506001600160a01b0381358116916020013516611b64565b6040518060400160405280600d81526020016c2723a71023b63abbb0b1b7b4b760991b81525081565b60006001600160a01b038316610772576040805162461bcd60e51b815260206004820152601760248201527f496e76616c6964207370656e6465722061646472657373000000000000000000604482015290519081900360640190fd5b3360008181526002602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60006001600160a01b038616610837576040805162461bcd60e51b815260206004820181905260248201527f43616e206e6f74207472616e7366657220746f207a65726f2061646472657373604482015290519081900360640190fd5b6000610849868663ffffffff611b8f16565b6001600160a01b03891660009081526005602090815260408083205460019092529091205491925082916108829163ffffffff611be416565b10156108bf5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f4d6021913960400191505060405180910390fd5b6040805130606090811b6020808401919091526bffffffffffffffffffffffff198c831b81166034850152918b901b9091166048830152605c8201899052607c8201889052609c8083018890528351808403909101815260bc909201909252805191012061092f818a8787611c39565b6001600160a01b038916600090815260016020526040902054610958908363ffffffff611be416565b6001600160a01b03808b1660009081526001602052604080822093909355908a168152205461098d908863ffffffff611b8f16565b6001600160a01b0389166000908152600160205260409020556003546109b9908763ffffffff611be416565b6003556040805188815290516001600160a01b03808b1692908c1691600080516020611fa18339815191529181900360200190a36040805187815290516000916001600160a01b038c1691600080516020611fa18339815191529181900360200190a36040805187815290516001600160a01b038b16917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a250600198975050505050505050565b60035490565b6001600160a01b03831660009081526005602090815260408083205460019092528220548391610aa6919063ffffffff611be416565b1015610ae35760405162461bcd60e51b8152600401808060200182810382526021815260200180611f4d6021913960400191505060405180910390fd5b6001600160a01b0384166000908152600260209081526040808320338452909152902054821115610b50576040805162461bcd60e51b8152602060048201526012602482015271105b1b1bddd85b98d948195e18d95959195960721b604482015290519081900360640190fd5b6001600160a01b038316610bab576040805162461bcd60e51b815260206004820181905260248201527f43616e206e6f74207472616e7366657220746f207a65726f2061646472657373604482015290519081900360640190fd5b6001600160a01b038416600090815260016020526040902054610bd4908363ffffffff611be416565b6001600160a01b0385166000908152600160209081526040808320939093556002815282822033835290522054610c11908363ffffffff611be416565b6001600160a01b038086166000908152600260209081526040808320338452825280832094909455918616815260019091522054610c55908363ffffffff611b8f16565b6001600160a01b038085166000818152600160209081526040918290209490945580518681529051919392881692600080516020611fa183398151915292918290030190a35060019392505050565b601281565b6001600160a01b038216600090815260046020908152604080832084845290915281206001600582015460ff166004811115610ce157fe5b14610d33576040805162461bcd60e51b815260206004820152601e60248201527f496e76616c6964207265736572766174696f6e20746f20657865637574650000604482015290519081900360640190fd5b43816004015411610d755760405162461bcd60e51b815260040180806020018281038252602f815260200180611f1e602f913960400191505060405180910390fd5b60038101546001600160a01b03163314610dc05760405162461bcd60e51b815260040180806020018281038252603a815260200180611fe9603a913960400191505060405180910390fd5b60018101548154600091610dda919063ffffffff611b8f16565b6001600160a01b038616600090815260016020526040902054909150610e06908263ffffffff611be416565b6001600160a01b03808716600090815260016020526040808220939093558454600286015490921681529190912054610e449163ffffffff611b8f16565b60028301546001600160a01b0316600090815260016020819052604090912091909155820154600354610e7c9163ffffffff611be416565b6003556002820154825460408051918252516001600160a01b0392831692881691600080516020611fa1833981519152919081900360200190a3600182015460408051918252516000916001600160a01b03881691600080516020611fa18339815191529181900360200190a3600182015460408051918252516001600160a01b038716917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a26001600160a01b038516600081815260046020818152604080842089855282528084206005908101805460ff1916909417909355938352522054610f709082611be4565b6001600160a01b03861660009081526005602052604090205550600191505092915050565b600080546001600160a01b03163314610ff5576040805162461bcd60e51b815260206004820181905260248201527f4f6e6c7920636f6e7472616374206f776e65722063616e20646f20746869732e604482015290519081900360640190fd5b6001600160a01b038316611050576040805162461bcd60e51b815260206004820152601c60248201527f43616e206e6f74206d696e7420746f207a65726f206164647265737300000000604482015290519081900360640190fd5b6001600160a01b038316600090815260016020526040902054611079908363ffffffff611b8f16565b6001600160a01b0384166000908152600160205260409020556003546110a5908363ffffffff611b8f16565b600355600080546040805185815290516001600160a01b039092169291600080516020611fa18339815191529181900360200190a36000546040805184815290516001600160a01b03808716931691600080516020611fa1833981519152919081900360200190a36040805183815290516001600160a01b038516917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a250600192915050565b600080546001600160a01b031633146111b5576040805162461bcd60e51b815260206004820181905260248201527f4f6e6c7920636f6e7472616374206f776e65722063616e20646f20746869732e604482015290519081900360640190fd5b3360009081526005602090815260408083205460019092529091205483916111e3919063ffffffff611be416565b1015611236576040805162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f72206275726e000000604482015290519081900360640190fd5b33600090815260016020526040902054611256908363ffffffff611be416565b33600090815260016020526040902055600354611279908363ffffffff611be416565b6003556040805183815290516000913391600080516020611fa18339815191529181900360200190a360408051838152905133917f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b1919081900360200190a2506001919050565b6001600160a01b031660009081526001602052604090205490565b6001600160a01b03811660009081526005602090815260408083205460019092528220546107d49163ffffffff611be416565b6000438311611384576040805162461bcd60e51b815260206004820152601b60248201527f496e76616c696420626c6f636b20657870697279206e756d6265720000000000604482015290519081900360640190fd5b600086116113d2576040805162461bcd60e51b8152602060048201526016602482015275125b9d985b1a59081c995cd95c9d9948185b5bdd5b9d60521b604482015290519081900360640190fd5b6001600160a01b03891661142d576040805162461bcd60e51b815260206004820152601f60248201527f43616e277420726573657276652066726f6d207a65726f206164647265737300604482015290519081900360640190fd5b6001600160a01b038816611488576040805162461bcd60e51b815260206004820152601d60248201527f43616e2774207265736572766520746f207a65726f2061646472657373000000604482015290519081900360640190fd5b6001600160a01b0387166114e3576040805162461bcd60e51b815260206004820152601f60248201527f43616e277420657865637574652066726f6d207a65726f206164647265737300604482015290519081900360640190fd5b60006114f5878763ffffffff611b8f16565b6001600160a01b038b16600090815260056020908152604080832054600190925290912054919250829161152e9163ffffffff611be416565b101561156b5760405162461bcd60e51b8152600401808060200182810382526028815260200180611fc16028913960400191505060405180910390fd5b6040805130606090811b6020808401919091526bffffffffffffffffffffffff198e831b811660348501528d831b81166048850152918c901b909116605c830152607082018a90526090820189905260b0820188905260d08083018890528351808403909101815260f090920190925280519101206115ec818c8887611c39565b6040518060c001604052808981526020018881526020018b6001600160a01b031681526020018a6001600160a01b031681526020018681526020016001600481111561163457fe5b90526001600160a01b03808d1660009081526004602081815260408084208c85528252928390208551815590850151600180830191909155928501516002820180549186166001600160a01b031992831617905560608601516003830180549190961691161790935560808401518382015560a08401516005840180549193909260ff199092169184908111156116c757fe5b021790555050506001600160a01b038b166000908152600560205260409020546116f7908363ffffffff611b8f16565b6001600160a01b038c1660009081526005602052604090205550600191505098975050505050505050565b6001600160a01b038216600090815260046020908152604080832084845290915281206001600582015460ff16600481111561175a57fe5b146117ac576040805162461bcd60e51b815260206004820152601a60248201527f496e76616c6964207265736572766174696f6e20737461747573000000000000604482015290519081900360640190fd5b6000546001600160a01b0316331461185e57336001600160a01b038516146118055760405162461bcd60e51b8152600401808060200182810382526033815260200180611f6e6033913960400191505060405180910390fd5b438160040154111561185e576040805162461bcd60e51b815260206004820152601f60248201527f5265736572766174696f6e20686173206e6f7420657870697265642079657400604482015290519081900360640190fd5b6001600160a01b038416600081815260046020908152604080832087845282528083206005908101805460ff19166003179055600186015486549585529252909120546118bb926118af9190611be4565b9063ffffffff611be416565b6001600160a01b038516600090815260056020526040902055506001905092915050565b604051806040016040528060058152602001644e474e2d4760d81b81525081565b600080600080600080611911611ebe565b6001600160a01b03808a1660009081526004602081815260408084208d8552825292839020835160c08101855281548152600182015492810192909252600281015485169382019390935260038301549093166060840152818101546080840152600582015460a084019160ff9091169081111561198b57fe5b600481111561199657fe5b90525080516020820151604083015160608401516080850151939b50919950975095509350905060018160a0015160048111156119cf57fe5b1480156119e0575043816080015111155b156119ee57600291506119f6565b8060a0015191505b509295509295509295565b3360009081526005602090815260408083205460019092528220548391611a2e919063ffffffff611be416565b1015611a6b5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f4d6021913960400191505060405180910390fd5b6001600160a01b038316611ac6576040805162461bcd60e51b815260206004820181905260248201527f43616e206e6f74207472616e7366657220746f207a65726f2061646472657373604482015290519081900360640190fd5b33600090815260016020526040902054611ae6908363ffffffff611be416565b33600090815260016020526040808220929092556001600160a01b03851681522054611b18908363ffffffff611b8f16565b6001600160a01b038416600081815260016020908152604091829020939093558051858152905191923392600080516020611fa18339815191529281900390910190a350600192915050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600082820183811015611bdd576040805162461bcd60e51b81526020600482015260116024820152704164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b9392505050565b600082821115611c33576040805162461bcd60e51b81526020600482015260156024820152745375627472616374696f6e20756e646572666c6f7760581b604482015290519081900360640190fd5b50900390565b6000611c4485611d7f565b90506000611c58828463ffffffff611dd016565b9050846001600160a01b0316816001600160a01b031614611cb4576040805162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b6001600160a01b038116600090815260066020908152604080832087845290915290205460ff1615611d175760405162461bcd60e51b815260040180806020018281038252602c815260200180611ef2602c913960400191505060405180910390fd5b6001600160a01b0381166000818152600660209081526040808320888452825291829020805460ff19166001179055815187815291517f2af71f10069c28afc67c3752e87e0e4616a97948d33c8f404a856c0c334b3e019281900390910190a2505050505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b60008151604114611de3575060006107d4565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115611e2957600093505050506107d4565b8060ff16601b14158015611e4157508060ff16601c14155b15611e5257600093505050506107d4565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015611ea9573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b6040805160c08101825260008082526020820181905291810182905260608101829052608081018290529060a08201529056fe4e6f6e63652068617320616c7265616479206265656e207573656420666f72207468697320616464726573735265736572766174696f6e20686173206578706972656420616e642063616e206e6f74206265206578656375746564496e73756666696369656e742062616c616e636520666f72207472616e7366657243616e206e6f74207265636c61696d20616e6f7468657220757365722773207265736572766174696f6e20666f72207468656dddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef496e73756666696369656e742066756e647320746f20637265617465207265736572766174696f6e546869732061646472657373206973206e6f7420617574686f72697a656420746f20657865637574652074686973207265736572766174696f6ea265627a7a723158207d60208448f8f2b932955b69b0563c64f9297b55b8d769cd333e1370c5054c4e64736f6c63430005100032

Deployed Bytecode Sourcemap

1435:9377:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1371:43;;;-1:-1:-1;;;1371:43:1;;;;;;;;;;;;;;;;;;;;;;;;;;;1542:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1542:45:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1542:45:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5929:293;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5929:293:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5929:293:1;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4397:883;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4397:883:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;4397:883:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;4397:883:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4397:883:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4397:883:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4397:883:1;;-1:-1:-1;4397:883:1;;-1:-1:-1;;;;;4397:883:1:i;2566:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2566:100:1;;;:::i;:::-;;;;;;;;;;;;;;;;5286:637;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5286:637:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5286:637:1;;;;;;;;;;;;;;;;;:::i;1638:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1638:35:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8408:1192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8408:1192:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8408:1192:1;;;;;;;;:::i;6843:415::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6843:415:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6843:415:1;;;;;;;;:::i;6391:446::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6391:446:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6391:446:1;;:::i;2998:133::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2998:133:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2998:133:1;-1:-1:-1;;;;;2998:133:1;;:::i;2750:166::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2750:166:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2750:166:1;-1:-1:-1;;;;;2750:166:1;;:::i;7264:1138::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7264:1138:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;7264:1138:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;7264:1138:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7264:1138:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7264:1138:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7264:1138:1;;-1:-1:-1;7264:1138:1;;-1:-1:-1;;;;;7264:1138:1:i;9606:730::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9606:730:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9606:730:1;;;;;;;;:::i;1593:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1593:39:1;;;:::i;3137:767::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3137:767:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3137:767:1;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;3137:767:1;-1:-1:-1;;;;;3137:767:1;;;;;;-1:-1:-1;;;;;3137:767:1;-1:-1:-1;;;;;3137:767:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3910:481;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3910:481:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3910:481:1;;;;;;;;:::i;6228:157::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6228:157:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6228:157:1;;;;;;;;;;:::i;1542:45::-;;;;;;;;;;;;;;-1:-1:-1;;;1542:45:1;;;;:::o;5929:293::-;5996:12;-1:-1:-1;;;;;6032:22:1;;6024:58;;;;;-1:-1:-1;;;6024:58:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;6102:10;6093:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;6093:30:1;;;;;;;;;;;;:39;;;6147:38;;;;;;;6093:30;;6102:10;6147:38;;;;;;;;;;;-1:-1:-1;6211:4:1;5929:293;;;;;:::o;4397:883::-;4524:12;-1:-1:-1;;;;;4560:17:1;;4552:62;;;;;-1:-1:-1;;;4552:62:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4625:21;4649:16;:6;4660:4;4649:16;:10;:16;:::i;:::-;-1:-1:-1;;;;;4709:21:1;;;;;;:14;:21;;;;;;;;;4683:9;:16;;;;;;;4625:40;;-1:-1:-1;4625:40:1;;4683:48;;;:25;:48;:::i;:::-;:65;;4675:111;;;;-1:-1:-1;;;4675:111:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4831:65;;;4856:4;4831:65;;;;;;;;;;;;-1:-1:-1;;4831:65:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4831:65:1;;;;;;;4821:76;;;;;4907:44;4821:76;4863:5;4889:6;4946:4;4907:17;:44::i;:::-;-1:-1:-1;;;;;4981:16:1;;;;;;:9;:16;;;;;;:40;;5007:13;4981:40;:25;:40;:::i;:::-;-1:-1:-1;;;;;4962:16:1;;;;;;;:9;:16;;;;;;:59;;;;5048:14;;;;;;;:26;;5067:6;5048:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;5031:14:1;;;;;;:9;:14;;;;;:43;5099:12;;:27;;5121:4;5099:27;:21;:27;:::i;:::-;5084:12;:42;5142:28;;;;;;;;-1:-1:-1;;;;;5142:28:1;;;;;;;;-1:-1:-1;;;;;;;;;;;5142:28:1;;;;;;;;5185:33;;;;;;;;5209:1;;-1:-1:-1;;;;;5185:33:1;;;-1:-1:-1;;;;;;;;;;;5185:33:1;;;;;;;;5233:18;;;;;;;;-1:-1:-1;;;;;5233:18:1;;;;;;;;;;;;;-1:-1:-1;5269:4:1;;4397:883;-1:-1:-1;;;;;;;;4397:883:1:o;2566:100::-;2647:12;;2566:100;:::o;5286:637::-;-1:-1:-1;;;;;5430:21:1;;5368:12;5430:21;;;:14;:21;;;;;;;;;5404:9;:16;;;;;;5456:6;;5404:48;;:16;:48;:25;:48;:::i;:::-;:58;;5396:104;;;;-1:-1:-1;;;5396:104:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5518:15:1;;;;;;:8;:15;;;;;;;;5534:10;5518:27;;;;;;;;:37;-1:-1:-1;5518:37:1;5510:68;;;;;-1:-1:-1;;;5510:68:1;;;;;;;;;;;;-1:-1:-1;;;5510:68:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;5596:17:1;;5588:62;;;;;-1:-1:-1;;;5588:62:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5680:16:1;;;;;;:9;:16;;;;;;:33;;5706:6;5680:33;:25;:33;:::i;:::-;-1:-1:-1;;;;;5661:16:1;;;;;;:9;:16;;;;;;;;:52;;;;5753:8;:15;;;;;5769:10;5753:27;;;;;;:44;;5790:6;5753:44;:36;:44;:::i;:::-;-1:-1:-1;;;;;5723:15:1;;;;;;;:8;:15;;;;;;;;5739:10;5723:27;;;;;;;:74;;;;5824:14;;;;;:9;:14;;;;;:26;;5843:6;5824:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;5807:14:1;;;;;;;:9;:14;;;;;;;;;:43;;;;5866:28;;;;;;;5807:14;;5866:28;;;;-1:-1:-1;;;;;;;;;;;5866:28:1;;;;;;;;-1:-1:-1;5912:4:1;5286:637;;;;;:::o;1638:35::-;1671:2;1638:35;:::o;8408:1192::-;-1:-1:-1;;;;;8537:18:1;;8474:12;8537:18;;;:9;:18;;;;;;;;:26;;;;;;;;8606:24;8582:20;;;;;;:48;;;;;;;;;8574:91;;;;;-1:-1:-1;;;8574:91:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;8714:12;8683;:28;;;:43;8675:103;;;;-1:-1:-1;;;8675:103:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8796:22;;;;-1:-1:-1;;;;;8796:22:1;8822:10;8796:36;8788:107;;;;-1:-1:-1;;;8788:107:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8956:17;;;;8931:20;;8906:22;;8931:43;;:20;:43;:24;:43;:::i;:::-;-1:-1:-1;;;;;9006:18:1;;;;;;:9;:18;;;;;;8906:68;;-1:-1:-1;9006:43:1;;8906:68;9006:43;:27;:43;:::i;:::-;-1:-1:-1;;;;;8985:18:1;;;;;;;:9;:18;;;;;;:64;;;;9135:20;;9106:23;;;;;;;9096:34;;;;;;;:60;;;:38;:60;:::i;:::-;9069:23;;;;-1:-1:-1;;;;;9069:23:1;9059:34;;;;:9;:34;;;;;;;;:97;;;;9203:17;;;9181:12;;:40;;;:21;:40;:::i;:::-;9166:12;:55;9255:23;;;;9280:20;;9237:64;;;;;;;-1:-1:-1;;;;;9255:23:1;;;;9237:64;;;-1:-1:-1;;;;;;;;;;;9237:64:1;;;;;;;;;9346:17;;;;9316:48;;;;;;;9342:1;;-1:-1:-1;;;;;9316:48:1;;;-1:-1:-1;;;;;;;;;;;9316:48:1;;;;;;;;9394:17;;;;9379:33;;;;;;;-1:-1:-1;;;;;9379:33:1;;;;;;;;;;;;;-1:-1:-1;;;;;9423:18:1;;;;;;9460:27;9423:18;;;;;;;;:26;;;;;;;;:34;;;;:64;;-1:-1:-1;;9423:64:1;;;;;;;9523:23;;;;;;:48;;9556:14;9523:32;:48::i;:::-;-1:-1:-1;;;;;9497:23:1;;;;;;:14;:23;;;;;:74;-1:-1:-1;9589:4:1;;-1:-1:-1;;8408:1192:1;;;;:::o;6843:415::-;6912:12;1257:6;;-1:-1:-1;;;;;1257:6:1;1243:10;:20;1235:65;;;;;-1:-1:-1;;;1235:65:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6948:17:1;;6940:58;;;;;-1:-1:-1;;;6940:58:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7026:14:1;;;;;;:9;:14;;;;;;:26;;7045:6;7026:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;7009:14:1;;;;;;:9;:14;;;;;:43;7077:12;;:24;;7094:6;7077:24;:16;:24;:::i;:::-;7062:12;:39;7138:6;;;7117:36;;;;;;;;-1:-1:-1;;;;;7138:6:1;;;;;-1:-1:-1;;;;;;;;;;;7117:36:1;;;;;;;;7177:6;;7168:29;;;;;;;;-1:-1:-1;;;;;7168:29:1;;;;7177:6;;-1:-1:-1;;;;;;;;;;;7168:29:1;;;;;;;;;7212:17;;;;;;;;-1:-1:-1;;;;;7212:17:1;;;;;;;;;;;;;-1:-1:-1;7247:4:1;6843:415;;;;:::o;6391:446::-;6447:12;1257:6;;-1:-1:-1;;;;;1257:6:1;1243:10;:20;1235:65;;;;;-1:-1:-1;;;1235:65:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6529:10;6514:26;;;;:14;:26;;;;;;;;;6483:9;:21;;;;;;;6545:6;;6483:58;;:21;:58;:30;:58;:::i;:::-;:68;;6475:110;;;;;-1:-1:-1;;;6475:110:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;6630:10;6620:21;;;;:9;:21;;;;;;:38;;6651:6;6620:38;:30;:38;:::i;:::-;6606:10;6596:21;;;;:9;:21;;;;;:62;6683:12;;:29;;6705:6;6683:29;:21;:29;:::i;:::-;6668:12;:44;6728:40;;;;;;;;6757:1;;6737:10;;-1:-1:-1;;;;;;;;;;;6728:40:1;;;;;;;;6783:25;;;;;;;;6789:10;;6783:25;;;;;;;;;;-1:-1:-1;6826:4:1;6391:446;;;:::o;2998:133::-;-1:-1:-1;;;;;3102:22:1;3064:15;3102:22;;;:9;:22;;;;;;;2998:133::o;2750:166::-;-1:-1:-1;;;;;2881:27:1;;2811:15;2881:27;;;:14;:27;;;;;;;;;2849:9;:22;;;;;;:60;;;:31;:60;:::i;7264:1138::-;7435:12;7489;7471:15;:30;7463:70;;;;;-1:-1:-1;;;7463:70:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;7561:1;7551:7;:11;7543:46;;;;;-1:-1:-1;;;7543:46:1;;;;;;;;;;;;-1:-1:-1;;;7543:46:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;7607:19:1;;7599:63;;;;;-1:-1:-1;;;7599:63:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7680:17:1;;7672:59;;;;;-1:-1:-1;;;7672:59:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7749:23:1;;7741:67;;;;;-1:-1:-1;;;7741:67:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;7819:22;7844:17;:7;7856:4;7844:17;:11;:17;:::i;:::-;-1:-1:-1;;;;;7905:21:1;;;;;;:14;:21;;;;;;;;;7879:9;:16;;;;;;;7819:42;;-1:-1:-1;7819:42:1;;7879:48;;;:25;:48;:::i;:::-;:66;;7871:119;;;;-1:-1:-1;;;7871:119:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8026:94;;;8051:4;8026:94;;;;;;;;;;;;-1:-1:-1;;8026:94:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8026:94:1;;;;;;;8016:105;;;;;8131:44;8016:105;8058:5;8096:6;8170:4;8131:17;:44::i;:::-;8213:85;;;;;;;;8225:7;8213:85;;;;8234:4;8213:85;;;;8240:3;-1:-1:-1;;;;;8213:85:1;;;;;8245:9;-1:-1:-1;;;;;8213:85:1;;;;;8256:15;8213:85;;;;8273:24;8213:85;;;;;;;;;;-1:-1:-1;;;;;8186:16:1;;;;;;;:9;:16;;;;;;;;:24;;;;;;;;;:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8186:112:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8186:112:1;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;8332:21:1;;;;;;:14;:21;;;;;;:41;;8358:14;8332:41;:25;:41;:::i;:::-;-1:-1:-1;;;;;8308:21:1;;;;;;:14;:21;;;;;:65;-1:-1:-1;8391:4:1;;-1:-1:-1;;7264:1138:1;;;;;;;;;;:::o;9606:730::-;-1:-1:-1;;;;;9735:18:1;;9672:12;9735:18;;;:9;:18;;;;;;;;:26;;;;;;;;9803:24;9779:20;;;;;;:48;;;;;;;;;9771:87;;;;;-1:-1:-1;;;9771:87:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;9887:6;;-1:-1:-1;;;;;9887:6:1;9873:10;:20;9869:246;;9925:10;-1:-1:-1;;;;;9925:21:1;;;9917:85;;;;-1:-1:-1;;;9917:85:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10056:12;10024;:28;;;:44;;10016:88;;;;;-1:-1:-1;;;10016:88:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10125:18:1;;;;;;:9;:18;;;;;;;;:26;;;;;;;;:34;;;;:64;;-1:-1:-1;;10125:64:1;10162:27;10125:64;;;;10289:17;;;10258:20;;10225:23;;;;;;;;;:82;;:54;;:23;:32;:54::i;:::-;:63;:82;:63;:82;:::i;:::-;-1:-1:-1;;;;;10199:23:1;;;;;;:14;:23;;;;;:108;-1:-1:-1;10325:4:1;;-1:-1:-1;9606:730:1;;;;:::o;1593:39::-;;;;;;;;;;;;;;-1:-1:-1;;;1593:39:1;;;;:::o;3137:767::-;3219:15;3236:12;3250:18;3270:17;3289:23;3314:25;3355:31;;:::i;:::-;-1:-1:-1;;;;;3389:22:1;;;;;;;:9;:22;;;;;;;;:30;;;;;;;;;3355:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3440:20:1;;3477:17;;;;3517:23;;;;3562:22;;;;3612:28;;;;3440:20;;-1:-1:-1;3477:17:1;;-1:-1:-1;3517:23:1;-1:-1:-1;3562:22:1;-1:-1:-1;3612:28:1;-1:-1:-1;3355:64:1;-1:-1:-1;3679:24:1;3655:12;:20;;;:48;;;;;;;;;:96;;;;;3739:12;3707;:28;;;:44;;3655:96;3651:247;;;3785:25;3775:35;;3651:247;;;3867:12;:20;;;3857:30;;3651:247;3137:767;;;;;;;;;:::o;3910:481::-;4055:10;3973:12;4040:26;;;:14;:26;;;;;;;;;4009:9;:21;;;;;;4071:6;;4009:58;;:21;:58;:30;:58;:::i;:::-;:68;;4001:114;;;;-1:-1:-1;;;4001:114:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4133:17:1;;4125:62;;;;;-1:-1:-1;;;4125:62:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4232:10;4222:21;;;;:9;:21;;;;;;:38;;4253:6;4222:38;:30;:38;:::i;:::-;4208:10;4198:21;;;;:9;:21;;;;;;:62;;;;-1:-1:-1;;;;;4287:14:1;;;;;;:26;;4306:6;4287:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;4270:14:1;;;;;;:9;:14;;;;;;;;;:43;;;;4329:33;;;;;;;4270:14;;4338:10;;-1:-1:-1;;;;;;;;;;;4329:33:1;;;;;;;;;-1:-1:-1;4380:4:1;3910:481;;;;:::o;6228:157::-;-1:-1:-1;;;;;6347:21:1;;;6307:17;6347:21;;;:8;:21;;;;;;;;:31;;;;;;;;;;;;;6228:157::o;2500:170:2:-;2558:7;2593:5;;;2616:6;;;;2608:36;;;;;-1:-1:-1;;;2608:36:2;;;;;;;;;;;;-1:-1:-1;;;2608:36:2;;;;;;;;;;;;;;;2662:1;2500:170;-1:-1:-1;;;2500:170:2:o;2250:179::-;2313:7;2349:1;2344;:6;;2336:40;;;;;-1:-1:-1;;;2336:40:2;;;;;;;;;;;;-1:-1:-1;;;2336:40:2;;;;;;;;;;;;;;;-1:-1:-1;2398:5:2;;;2250:179::o;10342:468:1:-;10457:19;10479:30;:5;:28;:30::i;:::-;10457:52;-1:-1:-1;10520:15:1;10538:25;10457:52;10558:4;10538:25;:19;:25;:::i;:::-;10520:43;;10592:5;-1:-1:-1;;;;;10581:16:1;:7;-1:-1:-1;;;;;10581:16:1;;10573:46;;;;;-1:-1:-1;;;10573:46:1;;;;;;;;;;;;-1:-1:-1;;;10573:46:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;10639:20:1;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;10638:29;10630:86;;;;-1:-1:-1;;;10630:86:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10726:20:1;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;:35;;-1:-1:-1;;10726:35:1;10757:4;10726:35;;;10777:26;;;;;;;;;;;;;;;;;10342:468;;;;;;:::o;4484:265:0:-;4683:58;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4683:58:0;;;;;;;4673:69;;;;;;4484:265::o;2327:1891::-;2405:7;2466:9;:16;2486:2;2466:22;2462:72;;-1:-1:-1;2520:1:0;2504:19;;2462:72;2884:4;2869:20;;2863:27;2929:4;2914:20;;2908:27;2982:4;2967:20;;2961:27;2600:9;2953:36;3900:66;3887:79;;3883:127;;;3997:1;3982:17;;;;;;;3883:127;4024:1;:7;;4029:2;4024:7;;:18;;;;;4035:1;:7;;4040:2;4035:7;;4024:18;4020:66;;;4073:1;4058:17;;;;;;;4020:66;4187:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4187:24:0;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4187:24:0;;-1:-1:-1;;4187:24:0;;;2327:1891;-1:-1:-1;;;;;;;2327:1891:0:o;1435:9377:1:-;;;;;;;;;-1:-1:-1;1435:9377:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://7d60208448f8f2b932955b69b0563c64f9297b55b8d769cd333e1370c5054c4e
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.