ETH Price: $2,449.76 (+2.12%)

Token

Gimli (GIM)
 

Overview

Max Total Supply

150,000,000 GIM

Holders

940 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
603 GIM

Value
$0.00
0x46c4112c8304baaa4f56b9c7db8aace1d63d28d8
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Live stream crypto betting for gamers.

ICO Information

ICO Start Date : Sep 16,  2017   
ICO End Date : Oct 20, 2017
Raised : $1,702,589
ICO Price  : $4.76
Country : Malta

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Gimli

Compiler Version
v0.4.16+commit.d7661dd9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-09-16
*/

pragma solidity ^0.4.11;

contract ERC20Basic {
    uint256 public totalSupply;
    function balanceOf(address who) constant returns (uint256);
    function transfer(address to, uint256 value) returns (bool success);
    event Transfer(address indexed from, address indexed to, uint256 value);
}


contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) constant returns (uint256);
    function transferFrom(address from, address to, uint256 value) returns (bool success);
    function approve(address spender, uint256 value) returns (bool success);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract SafeMath {
    function safeMul(uint a, uint b) internal returns (uint) {
        uint c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

    function safeDiv(uint a, uint b) internal returns (uint) {
        assert(b > 0);
        uint c = a / b;
        assert(a == b * c + a % b);
        return c;
    }

    function safeSub(uint a, uint b) internal returns (uint) {
        assert(b <= a);
        return a - b;
    }

    function safeAdd(uint a, uint b) internal returns (uint) {
        uint c = a + b;
        assert(c>=a && c>=b);
        return c;
    }

    function max64(uint64 a, uint64 b) internal constant returns (uint64) {
        return a >= b ? a : b;
    }

    function min64(uint64 a, uint64 b) internal constant returns (uint64) {
        return a < b ? a : b;
    }

    function max256(uint256 a, uint256 b) internal constant returns (uint256) {
        return a >= b ? a : b;
    }

    function min256(uint256 a, uint256 b) internal constant returns (uint256) {
        return a < b ? a : b;
    }

}


contract Ownable {
    address public owner;
    address public newOwner;

    event OwnershipTransferred(address indexed _from, address indexed _to);

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    function Ownable() {
        owner = msg.sender;
    }

    /// @notice Transfer ownership from `owner` to `newOwner`
    /// @param _newOwner The new contract owner
    function transferOwnership(address _newOwner) onlyOwner {
        if (_newOwner != address(0)) {
            newOwner = _newOwner;
        }
    }

    /// @notice accept ownership of the contract
    function acceptOwnership() {
        require(msg.sender == newOwner);
        OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

}

contract Administrable is Ownable {

    event AdminstratorAdded(address adminAddress);
    event AdminstratorRemoved(address adminAddress);

    mapping (address => bool) public administrators;

    modifier onlyAdministrator() {
        require(administrators[msg.sender] || owner == msg.sender); // owner is an admin by default
        _;
    }

    /// @notice Add an administrator
    /// @param _adminAddress The new administrator address
    function addAdministrators(address _adminAddress) onlyOwner {
        administrators[_adminAddress] = true;
        AdminstratorAdded(_adminAddress);
    }

    /// @notice Remove an administrator
    /// @param _adminAddress The administrator address to remove
    function removeAdministrators(address _adminAddress) onlyOwner {
        delete administrators[_adminAddress];
        AdminstratorRemoved(_adminAddress);
    }
}

/// @title Gimli Token Contract.
contract GimliToken is ERC20, SafeMath, Ownable {


    /*************************
    **** Global variables ****
    *************************/

    uint8 public constant decimals = 8;
    string public constant name = "Gimli Token";
    string public constant symbol = "GIM";
    string public constant version = 'v1';

    /// total amount of tokens
    uint256 public constant UNIT = 10**uint256(decimals);
    uint256 constant MILLION_GML = 10**6 * UNIT; // can't use `safeMul` with constant
    /// Should include CROWDSALE_AMOUNT and VESTING_X_AMOUNT
    uint256 public constant TOTAL_SUPPLY = 150 * MILLION_GML; // can't use `safeMul` with constant;

    /// balances indexed by address
    mapping (address => uint256) balances;

    /// allowances indexed by owner and spender
    mapping (address => mapping (address => uint256)) allowed;

    bool public transferable = false;

    /*********************
    **** Transactions ****
    *********************/


    /// @notice send `_value` token to `_to` from `msg.sender`
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transfer(address _to, uint256 _value) returns (bool success) {
        require(transferable);

        require(balances[msg.sender] >= _value && _value >=0);


        balances[msg.sender] = safeSub(balances[msg.sender], _value);
        balances[_to] = safeAdd(balances[_to], _value);
        Transfer(msg.sender, _to, _value);

        return true;
    }

    /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
    /// @param _from The address of the sender
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
        require(transferable);

        require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value >= 0);

        balances[_from] = safeSub(balances[_from], _value);
        balances[_to] = safeAdd(balances[_to], _value);
        allowed[_from][msg.sender] = safeSub(allowed[_from][msg.sender], _value);
        Transfer(_from, _to, _value);

        return true;
    }

    /// @notice `msg.sender` approves `_spender` to spend `_value` tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @param _value The amount of tokens to be approved for transfer
    /// @return Whether the approval was successful or not
    function approve(address _spender, uint256 _value) returns (bool success) {
        // To change the approve amount you first have to reduce the addresses`
        //  allowance to zero by calling `approve(_spender, 0)` if it is not
        //  already 0 to mitigate the race condition described here:
        //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
        require((_value == 0) || (allowed[msg.sender][_spender] == 0));

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

    /****************
    **** Getters ****
    ****************/

    /// @notice Get balance of an address
    /// @param _owner The address from which the balance will be retrieved
    /// @return The balance
    function balanceOf(address _owner) constant returns (uint256 balance) {
        return balances[_owner];
    }

    /// @notice Get tokens allowed to spent by `_spender`
    /// @param _owner The address of the account owning tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @return Amount of remaining tokens allowed to spent
    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }

}

/// @title Gimli Crowdsale Contract.
contract GimliCrowdsale is SafeMath, GimliToken {

    address public constant MULTISIG_WALLET_ADDRESS = 0xc79ab28c5c03f1e7fbef056167364e6782f9ff4f;
    address public constant LOCKED_ADDRESS = 0xABcdEFABcdEFabcdEfAbCdefabcdeFABcDEFabCD;

    // crowdsale
    uint256 public constant CROWDSALE_AMOUNT = 80 * MILLION_GML; // Should not include vested amount
    uint256 public constant START_DATE = 1505736000; //  (epoch timestamp)
    uint256 public constant END_DATE = 1508500800; // TODO (epoch timestamp)
    uint256 public constant CROWDSALE_PRICE = 700; // 700 GML / ETH
    uint256 public constant VESTING_1_AMOUNT = 10 * MILLION_GML; // GIM reserve fund
    uint256 public constant VESTING_1_DATE = 1537272000; // TODO (epoch timestamp)
    uint256 public constant VESTING_2_AMOUNT = 30 * MILLION_GML; // Team
    uint256 public constant VESTING_2_DATE = 1568808000; // TODO (epoch timestamp)
    bool public vesting1Withdrawn = false;
    bool public vesting2Withdrawn = false;
    bool public crowdsaleCanceled = false;
    uint256 public soldAmount; // GIM
    uint256 public paidAmount; // ETH

    /// @notice `msg.sender` invest `msg.value`
    function() payable {
        require(!crowdsaleCanceled);

        require(msg.value > 0);
        // check date
        require(block.timestamp >= START_DATE && block.timestamp <= END_DATE);

        // calculate and check quantity
        uint256 quantity = safeDiv(safeMul(msg.value, CROWDSALE_PRICE), 10**(18-uint256(decimals)));
        require(safeSub(balances[this], quantity) >= 0);

        require(MULTISIG_WALLET_ADDRESS.send(msg.value));

        // update balances
        balances[this] = safeSub(balances[this], quantity);
        balances[msg.sender] = safeAdd(balances[msg.sender], quantity);
        soldAmount = safeAdd(soldAmount, quantity);
        paidAmount = safeAdd(paidAmount, msg.value);

        Transfer(this, msg.sender, quantity);
    }

    /// @notice returns non-sold tokens to owner
    function  closeCrowdsale() onlyOwner {
        // check if closable
        require(block.timestamp > END_DATE || crowdsaleCanceled || balances[this] == 0);

        // enable token transfer
        transferable = true;

        // update balances
        if (balances[this] > 0) {
            uint256 amount = balances[this];
            balances[MULTISIG_WALLET_ADDRESS] = safeAdd(balances[MULTISIG_WALLET_ADDRESS], amount);
            balances[this] = 0;
            Transfer(this, MULTISIG_WALLET_ADDRESS, amount);
        }
    }

    /// @notice Terminate the crowdsale before END_DATE
    function cancelCrowdsale() onlyOwner {
        crowdsaleCanceled = true;
    }

    /// @notice Pre-allocate tokens to advisor or partner
    /// @param _to The pre-allocation destination
    /// @param _value The amount of token to be allocated
    /// @param _price ETH paid for these tokens
    function preAllocate(address _to, uint256 _value, uint256 _price) onlyOwner {
        require(block.timestamp < START_DATE);

        balances[this] = safeSub(balances[this], _value);
        balances[_to] = safeAdd(balances[_to], _value);
        soldAmount = safeAdd(soldAmount, _value);
        paidAmount = safeAdd(paidAmount, _price);

        Transfer(this, _to, _value);
    }

    /// @notice Send vested amount to _destination
    /// @param _destination The address of the recipient
    /// @return Whether the release was successful or not
    function releaseVesting(address _destination) onlyOwner returns (bool success) {
        if (block.timestamp > VESTING_1_DATE && vesting1Withdrawn == false) {
            balances[LOCKED_ADDRESS] = safeSub(balances[LOCKED_ADDRESS], VESTING_1_AMOUNT);
            balances[_destination] = safeAdd(balances[_destination], VESTING_1_AMOUNT);
            vesting1Withdrawn = true;
            Transfer(LOCKED_ADDRESS, _destination, VESTING_1_AMOUNT);
            return true;
        }
        if (block.timestamp > VESTING_2_DATE && vesting2Withdrawn == false) {
            balances[LOCKED_ADDRESS] = safeSub(balances[LOCKED_ADDRESS], VESTING_2_AMOUNT);
            balances[_destination] = safeAdd(balances[_destination], VESTING_2_AMOUNT);
            vesting2Withdrawn = true;
            Transfer(LOCKED_ADDRESS, _destination, VESTING_2_AMOUNT);
            return true;
        }
        return false;
    }

    /// @notice transfer out any accidentally sent ERC20 tokens
    /// @param tokenAddress Address of the ERC20 contract
    /// @param amount The amount of token to be transfered
    function transferOtherERC20Token(address tokenAddress, uint256 amount)
      onlyOwner returns (bool success)
    {
        // can't be used for GIM token
        require(tokenAddress != address(this) || transferable);
        return ERC20(tokenAddress).transfer(owner, amount);
    }
}

/// @title Main Gimli contract.
contract Gimli is GimliCrowdsale, Administrable {

    address public streamerContract;
    uint256 public streamerContractMaxAmount;

    event StreamerContractChanged(address newContractAddress, uint256 newMaxAmount);

    /// @notice Gimli Contract constructor. `msg.sender` is the owner.
    function Gimli() {
        // Give the multisig wallet initial tokens
        balances[MULTISIG_WALLET_ADDRESS] = safeAdd(balances[MULTISIG_WALLET_ADDRESS], TOTAL_SUPPLY - CROWDSALE_AMOUNT - VESTING_1_AMOUNT - VESTING_2_AMOUNT);
        // Give the contract crowdsale amount
        balances[this] = CROWDSALE_AMOUNT;
        // Locked address
        balances[LOCKED_ADDRESS] = VESTING_1_AMOUNT + VESTING_2_AMOUNT;
        // For ERC20 compatibility
        totalSupply = TOTAL_SUPPLY;
    }

    /// @notice authorize an address to transfer GIM on behalf an user
    /// @param _contractAddress Address of GimliStreamer contract
    /// @param _maxAmount The maximum amount that can be transfered by the contract
    function setStreamerContract(
        address _contractAddress,
        uint256 _maxAmount) onlyAdministrator
    {
        // To change the maximum amount you first have to reduce it to 0`
        require(_maxAmount == 0 || streamerContractMaxAmount == 0);

        streamerContract = _contractAddress;
        streamerContractMaxAmount = _maxAmount;

        StreamerContractChanged(streamerContract, streamerContractMaxAmount);
    }

    /// @notice Called by a Gimli contract to transfer GIM
    /// @param _from The address of the sender
    /// @param _to The address of the recipient
    /// @param _amount The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transferGIM(address _from, address _to, uint256 _amount) returns (bool success) {
        require(msg.sender == streamerContract);
        require(tx.origin == _from);
        require(_amount <= streamerContractMaxAmount);

        if (balances[_from] < _amount || _amount <= 0)
            return false;

        balances[_from] = safeSub(balances[_from], _amount);
        balances[_to] = safeAdd(balances[_to], _amount);

        Transfer(_from, _to, _amount);

        return true;
    }



}

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":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paidAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"VESTING_1_DATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"VESTING_2_AMOUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MULTISIG_WALLET_ADDRESS","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"START_DATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_adminAddress","type":"address"}],"name":"removeAdministrators","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"END_DATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LOCKED_ADDRESS","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"streamerContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contractAddress","type":"address"},{"name":"_maxAmount","type":"uint256"}],"name":"setStreamerContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"VESTING_1_AMOUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vesting2Withdrawn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vesting1Withdrawn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"administrators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"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":"TOTAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transferable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_adminAddress","type":"address"}],"name":"addAdministrators","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"closeCrowdsale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"UNIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CROWDSALE_PRICE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferGIM","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferOtherERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"VESTING_2_DATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_price","type":"uint256"}],"name":"preAllocate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_destination","type":"address"}],"name":"releaseVesting","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"streamerContractMaxAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleCanceled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"cancelCrowdsale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"CROWDSALE_AMOUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"soldAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newContractAddress","type":"address"},{"indexed":false,"name":"newMaxAmount","type":"uint256"}],"name":"StreamerContractChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"adminAddress","type":"address"}],"name":"AdminstratorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"adminAddress","type":"address"}],"name":"AdminstratorRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","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"}]

60606040526005805463ffffffff1916905534156200001d57600080fd5b5b5b60018054600160a060020a03191633600160a060020a03161790555b73c79ab28c5c03f1e7fbef056167364e6782f9ff4f600052600360205260008051602062001cde833981519152546200008a90660aa87bee53800064010000000062000c5b6200010f82021704565b600360205260008051602062001cde8339815191525530600160a060020a0316600090815260408120661c6bf526340000905573abcdefabcdefabcdefabcdefabcdefabcdefabcd8152660e35fa931a00007fcbc8b230df322dcd07a5b8f4b5704f64963787c7c8a2e28a55f089d48223b00a5566354a6ba7a1800090555b62000139565b6000828201838110801590620001255750828110155b15156200012e57fe5b8091505b5092915050565b611b9580620001496000396000f300606060405236156102175763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146103aa578063095ea7b31461043557806312fa769f1461046b57806318160ddd1461049057806322b930f7146104b557806323b872dd146104da5780632e84bed814610516578063313ce5671461053b5780633603b0b014610564578063372c6533146105935780633dde3918146105b8578063545599ff146105d957806354fd4d50146105fe57806355532953146106895780635588b929146106b85780635fd7793a146106e75780636d0769661461070b57806370a0823114610730578063717fecea1461076157806375ad31a01461078857806376be1585146107af57806379ba5097146107e25780638da5cb5b146107f7578063902d55a51461082657806392ff0d311461084b57806393cd22b81461087257806395d89b4114610893578063983c0a011461091e5780639d8e217714610933578063a86416e214610958578063a9059cbb1461097d578063aa994ab8146109b3578063baaf2d4f146109ef578063cb5fe36e14610a25578063d033e6ee14610a4a578063d486d12914610a71578063d4ee1d9014610aa4578063dd62ed3e14610ad3578063f2fde38b14610b0a578063f597d09714610b2b578063f75640b314610b50578063f7af21c914610b77578063f997732914610b8c578063fa1a5f5914610bb1575b5b6005546000906301000000900460ff161561023257600080fd5b6000341161023f57600080fd5b6359bfb540421015801561025757506359e9e5404211155b151561026257600080fd5b61027c610271346102bc610bd6565b6402540be400610c05565b600160a060020a033016600090815260036020526040812054919250906102a39083610c44565b10156102ae57600080fd5b73c79ab28c5c03f1e7fbef056167364e6782f9ff4f3480156108fc0290604051600060405180830381858888f1935050505015156102eb57600080fd5b600160a060020a03301660009081526003602052604090205461030e9082610c44565b600160a060020a0330811660009081526003602052604080822093909355339091168152205461033e9082610c5b565b600160a060020a0333166000908152600360205260409020556006546103649082610c5b565b6006556007546103749034610c5b565b600755600160a060020a03338116903016600080516020611b4a8339815191528360405190815260200160405180910390a35b50005b34156103b557600080fd5b6103bd610c83565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103fa5780820151818401525b6020016103e1565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561044057600080fd5b610457600160a060020a0360043516602435610cba565b604051901515815260200160405180910390f35b341561047657600080fd5b61047e610d61565b60405190815260200160405180910390f35b341561049b57600080fd5b61047e610d67565b60405190815260200160405180910390f35b34156104c057600080fd5b61047e610d6d565b60405190815260200160405180910390f35b34156104e557600080fd5b610457600160a060020a0360043581169060243516604435610d75565b604051901515815260200160405180910390f35b341561052157600080fd5b61047e610ee1565b60405190815260200160405180910390f35b341561054657600080fd5b61054e610eec565b60405160ff909116815260200160405180910390f35b341561056f57600080fd5b610577610ef1565b604051600160a060020a03909116815260200160405180910390f35b341561059e57600080fd5b61047e610f09565b60405190815260200160405180910390f35b34156105c357600080fd5b6105d7600160a060020a0360043516610f11565b005b34156105e457600080fd5b61047e610f90565b60405190815260200160405180910390f35b341561060957600080fd5b6103bd610f98565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103fa5780820151818401525b6020016103e1565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561069457600080fd5b610577610fcf565b604051600160a060020a03909116815260200160405180910390f35b34156106c357600080fd5b610577610fe7565b604051600160a060020a03909116815260200160405180910390f35b34156106f257600080fd5b6105d7600160a060020a0360043516602435610ff6565b005b341561071657600080fd5b61047e6110cc565b60405190815260200160405180910390f35b341561073b57600080fd5b61047e600160a060020a03600435166110d7565b60405190815260200160405180910390f35b341561076c57600080fd5b6104576110f6565b604051901515815260200160405180910390f35b341561079357600080fd5b610457611105565b604051901515815260200160405180910390f35b34156107ba57600080fd5b610457600160a060020a0360043516611113565b604051901515815260200160405180910390f35b34156107ed57600080fd5b6105d7611128565b005b341561080257600080fd5b6105776111b4565b604051600160a060020a03909116815260200160405180910390f35b341561083157600080fd5b61047e6111c3565b60405190815260200160405180910390f35b341561085657600080fd5b6104576111ce565b604051901515815260200160405180910390f35b341561087d57600080fd5b6105d7600160a060020a03600435166111d7565b005b341561089e57600080fd5b6103bd611259565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103fa5780820151818401525b6020016103e1565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561092957600080fd5b6105d7611290565b005b341561093e57600080fd5b61047e6113fc565b60405190815260200160405180910390f35b341561096357600080fd5b61047e611404565b60405190815260200160405180910390f35b341561098857600080fd5b610457600160a060020a036004351660243561140a565b604051901515815260200160405180910390f35b34156109be57600080fd5b610457600160a060020a03600435811690602435166044356114f5565b604051901515815260200160405180910390f35b34156109fa57600080fd5b610457600160a060020a0360043516602435611619565b604051901515815260200160405180910390f35b3415610a3057600080fd5b61047e611705565b60405190815260200160405180910390f35b3415610a5557600080fd5b6105d7600160a060020a036004351660243560443561170d565b005b3415610a7c57600080fd5b610457600160a060020a03600435166117f9565b604051901515815260200160405180910390f35b3415610aaf57600080fd5b610577611a3c565b604051600160a060020a03909116815260200160405180910390f35b3415610ade57600080fd5b61047e600160a060020a0360043581169060243516611a4b565b60405190815260200160405180910390f35b3415610b1557600080fd5b6105d7600160a060020a0360043516611a78565b005b3415610b3657600080fd5b61047e611ad0565b60405190815260200160405180910390f35b3415610b5b57600080fd5b610457611ad6565b604051901515815260200160405180910390f35b3415610b8257600080fd5b6105d7611ae6565b005b3415610b9757600080fd5b61047e611b18565b60405190815260200160405180910390f35b3415610bbc57600080fd5b61047e611b23565b60405190815260200160405180910390f35b6000828202831580610bf25750828482811515610bef57fe5b04145b1515610bfa57fe5b8091505b5092915050565b600080808311610c1157fe5b8284811515610c1c57fe5b0490508284811515610c2a57fe5b068184020184141515610bfa57fe5b8091505b5092915050565b600082821115610c5057fe5b508082035b92915050565b6000828201838110801590610bf25750828110155b1515610bfa57fe5b8091505b5092915050565b60408051908101604052600b81527f47696d6c6920546f6b656e000000000000000000000000000000000000000000602082015281565b6000811580610cec5750600160a060020a03338116600090815260046020908152604080832093871683529290522054155b1515610cf757600080fd5b600160a060020a03338116600081815260046020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60075481565b60005481565b635ba0e8c081565b60055460009060ff161515610d8957600080fd5b600160a060020a038416600090815260036020526040902054829010801590610dd95750600160a060020a0380851660009081526004602090815260408083203390941683529290522054829010155b8015610de6575060008210155b1515610df157600080fd5b600160a060020a038416600090815260036020526040902054610e149083610c44565b600160a060020a038086166000908152600360205260408082209390935590851681522054610e439083610c5b565b600160a060020a03808516600090815260036020908152604080832094909455878316825260048152838220339093168252919091522054610e859083610c44565b600160a060020a0380861660008181526004602090815260408083203386168452909152908190209390935590851691600080516020611b4a8339815191529085905190815260200160405180910390a35060015b9392505050565b660aa87bee53800081565b600881565b73c79ab28c5c03f1e7fbef056167364e6782f9ff4f81565b6359bfb54081565b60015433600160a060020a03908116911614610f2c57600080fd5b600160a060020a03811660009081526008602052604090819020805460ff191690557f229460e7e71cb0f5fd51f3ef9f4a1c8aec5a2039ca102291844e55e7b6e20a2190829051600160a060020a03909116815260200160405180910390a15b5b50565b6359e9e54081565b60408051908101604052600281527f7631000000000000000000000000000000000000000000000000000000000000602082015281565b73abcdefabcdefabcdefabcdefabcdefabcdefabcd81565b600954600160a060020a031681565b600160a060020a03331660009081526008602052604090205460ff168061102b575060015433600160a060020a039081169116145b151561103657600080fd5b8015806110435750600a54155b151561104e57600080fd5b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038481169190911791829055600a8390557f2f9a8bf238210d8404eee51d85f87c589e9cebd6bf8b5aaaaf925415b2eb13a4911682604051600160a060020a03909216825260208201526040908101905180910390a15b5b5050565b66038d7ea4c6800081565b600160a060020a0381166000908152600360205260409020545b919050565b60055462010000900460ff1681565b600554610100900460ff1681565b60086020526000908152604090205460ff1681565b60025433600160a060020a0390811691161461114357600080fd5b600254600154600160a060020a0391821691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36002546001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b565b600154600160a060020a031681565b66354a6ba7a1800081565b60055460ff1681565b60015433600160a060020a039081169116146111f257600080fd5b600160a060020a03811660009081526008602052604090819020805460ff191660011790557f8bcad96a272856281cdab9315e972c6c9c48a2f3cb957fec38c355b0c3afb2c190829051600160a060020a03909116815260200160405180910390a15b5b50565b60408051908101604052600381527f47494d0000000000000000000000000000000000000000000000000000000000602082015281565b60015460009033600160a060020a039081169116146112ae57600080fd5b6359e9e5404211806112c957506005546301000000900460ff165b806112ea5750600160a060020a033016600090815260036020526040902054155b15156112f557600080fd5b6005805460ff19166001179055600160a060020a0330166000908152600360205260408120541115610f8c5750600160a060020a03301660009081526003602052604081205473c79ab28c5c03f1e7fbef056167364e6782f9ff4f9091527f40ddf0127676746c4caa6d5ec80a9b34ffa96652f32d85bf7fafce1e71ac293c5461137f9082610c5b565b60036020527f40ddf0127676746c4caa6d5ec80a9b34ffa96652f32d85bf7fafce1e71ac293c5530600160a060020a0316600081815260408082209190915573c79ab28c5c03f1e7fbef056167364e6782f9ff4f9190600080516020611b4a8339815191529084905190815260200160405180910390a35b5b5b50565b6305f5e10081565b6102bc81565b60055460009060ff16151561141e57600080fd5b600160a060020a033316600090815260036020526040902054829010801590611448575060008210155b151561145357600080fd5b600160a060020a0333166000908152600360205260409020546114769083610c44565b600160a060020a0333811660009081526003602052604080822093909355908516815220546114a59083610c5b565b600160a060020a038085166000818152600360205260409081902093909355913390911690600080516020611b4a8339815191529085905190815260200160405180910390a35060015b92915050565b60095460009033600160a060020a0390811691161461151357600080fd5b83600160a060020a031632600160a060020a031614151561153357600080fd5b600a5482111561154257600080fd5b600160a060020a0384166000908152600360205260409020548290108061156a575060008211155b1561157757506000610eda565b600160a060020a03841660009081526003602052604090205461159a9083610c44565b600160a060020a0380861660009081526003602052604080822093909355908516815220546115c99083610c5b565b600160a060020a0380851660008181526003602052604090819020939093559190861690600080516020611b4a8339815191529085905190815260200160405180910390a35060015b9392505050565b60015460009033600160a060020a0390811691161461163757600080fd5b30600160a060020a031683600160a060020a031614158061165a575060055460ff165b151561166557600080fd5b600154600160a060020a038085169163a9059cbb9116846000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156116e157600080fd5b6102c65a03f115156116f257600080fd5b50505060405180519150505b5b92915050565b635d821c4081565b60015433600160a060020a0390811691161461172857600080fd5b6359bfb540421061173857600080fd5b600160a060020a03301660009081526003602052604090205461175b9083610c44565b600160a060020a03308116600090815260036020526040808220939093559085168152205461178a9083610c5b565b600160a060020a0384166000908152600360205260409020556006546117b09083610c5b565b6006556007546117c09082610c5b565b600755600160a060020a03808416903016600080516020611b4a8339815191528460405190815260200160405180910390a35b5b505050565b60015460009033600160a060020a0390811691161461181757600080fd5b635ba0e8c0421180156118325750600554610100900460ff16155b156119235773abcdefabcdefabcdefabcdefabcdefabcdefabcd6000526003602052600080516020611b2a833981519152546118759066038d7ea4c68000610c44565b6003602052600080516020611b2a83398151915255600160a060020a038216600090815260409020546118af9066038d7ea4c68000610c5b565b600160a060020a03831660008181526003602052604090819020929092556005805461ff0019166101001790559073abcdefabcdefabcdefabcdefabcdefabcdefabcd90600080516020611b4a8339815191529066038d7ea4c68000905190815260200160405180910390a35060016110f1565b635d821c404211801561193f575060055462010000900460ff16155b15611a325773abcdefabcdefabcdefabcdefabcdefabcdefabcd6000526003602052600080516020611b2a8339815191525461198290660aa87bee538000610c44565b6003602052600080516020611b2a83398151915255600160a060020a038216600090815260409020546119bc90660aa87bee538000610c5b565b600160a060020a03831660008181526003602052604090819020929092556005805462ff00001916620100001790559073abcdefabcdefabcdefabcdefabcdefabcdefabcd90600080516020611b4a83398151915290660aa87bee538000905190815260200160405180910390a35060016110f1565b5060005b5b919050565b600254600160a060020a031681565b600160a060020a038083166000908152600460209081526040808320938516835292905220545b92915050565b60015433600160a060020a03908116911614611a9357600080fd5b600160a060020a03811615610f8c576002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600a5481565b6005546301000000900460ff1681565b60015433600160a060020a03908116911614611b0157600080fd5b6005805463ff000000191663010000001790555b5b565b661c6bf52634000081565b600654815600cbc8b230df322dcd07a5b8f4b5704f64963787c7c8a2e28a55f089d48223b00addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058206c0286be97ba73afde87c149c234469f0690bbd95c5cee7480c1cac790bfb08a002940ddf0127676746c4caa6d5ec80a9b34ffa96652f32d85bf7fafce1e71ac293c

Deployed Bytecode

0x606060405236156102175763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146103aa578063095ea7b31461043557806312fa769f1461046b57806318160ddd1461049057806322b930f7146104b557806323b872dd146104da5780632e84bed814610516578063313ce5671461053b5780633603b0b014610564578063372c6533146105935780633dde3918146105b8578063545599ff146105d957806354fd4d50146105fe57806355532953146106895780635588b929146106b85780635fd7793a146106e75780636d0769661461070b57806370a0823114610730578063717fecea1461076157806375ad31a01461078857806376be1585146107af57806379ba5097146107e25780638da5cb5b146107f7578063902d55a51461082657806392ff0d311461084b57806393cd22b81461087257806395d89b4114610893578063983c0a011461091e5780639d8e217714610933578063a86416e214610958578063a9059cbb1461097d578063aa994ab8146109b3578063baaf2d4f146109ef578063cb5fe36e14610a25578063d033e6ee14610a4a578063d486d12914610a71578063d4ee1d9014610aa4578063dd62ed3e14610ad3578063f2fde38b14610b0a578063f597d09714610b2b578063f75640b314610b50578063f7af21c914610b77578063f997732914610b8c578063fa1a5f5914610bb1575b5b6005546000906301000000900460ff161561023257600080fd5b6000341161023f57600080fd5b6359bfb540421015801561025757506359e9e5404211155b151561026257600080fd5b61027c610271346102bc610bd6565b6402540be400610c05565b600160a060020a033016600090815260036020526040812054919250906102a39083610c44565b10156102ae57600080fd5b73c79ab28c5c03f1e7fbef056167364e6782f9ff4f3480156108fc0290604051600060405180830381858888f1935050505015156102eb57600080fd5b600160a060020a03301660009081526003602052604090205461030e9082610c44565b600160a060020a0330811660009081526003602052604080822093909355339091168152205461033e9082610c5b565b600160a060020a0333166000908152600360205260409020556006546103649082610c5b565b6006556007546103749034610c5b565b600755600160a060020a03338116903016600080516020611b4a8339815191528360405190815260200160405180910390a35b50005b34156103b557600080fd5b6103bd610c83565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103fa5780820151818401525b6020016103e1565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561044057600080fd5b610457600160a060020a0360043516602435610cba565b604051901515815260200160405180910390f35b341561047657600080fd5b61047e610d61565b60405190815260200160405180910390f35b341561049b57600080fd5b61047e610d67565b60405190815260200160405180910390f35b34156104c057600080fd5b61047e610d6d565b60405190815260200160405180910390f35b34156104e557600080fd5b610457600160a060020a0360043581169060243516604435610d75565b604051901515815260200160405180910390f35b341561052157600080fd5b61047e610ee1565b60405190815260200160405180910390f35b341561054657600080fd5b61054e610eec565b60405160ff909116815260200160405180910390f35b341561056f57600080fd5b610577610ef1565b604051600160a060020a03909116815260200160405180910390f35b341561059e57600080fd5b61047e610f09565b60405190815260200160405180910390f35b34156105c357600080fd5b6105d7600160a060020a0360043516610f11565b005b34156105e457600080fd5b61047e610f90565b60405190815260200160405180910390f35b341561060957600080fd5b6103bd610f98565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103fa5780820151818401525b6020016103e1565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561069457600080fd5b610577610fcf565b604051600160a060020a03909116815260200160405180910390f35b34156106c357600080fd5b610577610fe7565b604051600160a060020a03909116815260200160405180910390f35b34156106f257600080fd5b6105d7600160a060020a0360043516602435610ff6565b005b341561071657600080fd5b61047e6110cc565b60405190815260200160405180910390f35b341561073b57600080fd5b61047e600160a060020a03600435166110d7565b60405190815260200160405180910390f35b341561076c57600080fd5b6104576110f6565b604051901515815260200160405180910390f35b341561079357600080fd5b610457611105565b604051901515815260200160405180910390f35b34156107ba57600080fd5b610457600160a060020a0360043516611113565b604051901515815260200160405180910390f35b34156107ed57600080fd5b6105d7611128565b005b341561080257600080fd5b6105776111b4565b604051600160a060020a03909116815260200160405180910390f35b341561083157600080fd5b61047e6111c3565b60405190815260200160405180910390f35b341561085657600080fd5b6104576111ce565b604051901515815260200160405180910390f35b341561087d57600080fd5b6105d7600160a060020a03600435166111d7565b005b341561089e57600080fd5b6103bd611259565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103fa5780820151818401525b6020016103e1565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561092957600080fd5b6105d7611290565b005b341561093e57600080fd5b61047e6113fc565b60405190815260200160405180910390f35b341561096357600080fd5b61047e611404565b60405190815260200160405180910390f35b341561098857600080fd5b610457600160a060020a036004351660243561140a565b604051901515815260200160405180910390f35b34156109be57600080fd5b610457600160a060020a03600435811690602435166044356114f5565b604051901515815260200160405180910390f35b34156109fa57600080fd5b610457600160a060020a0360043516602435611619565b604051901515815260200160405180910390f35b3415610a3057600080fd5b61047e611705565b60405190815260200160405180910390f35b3415610a5557600080fd5b6105d7600160a060020a036004351660243560443561170d565b005b3415610a7c57600080fd5b610457600160a060020a03600435166117f9565b604051901515815260200160405180910390f35b3415610aaf57600080fd5b610577611a3c565b604051600160a060020a03909116815260200160405180910390f35b3415610ade57600080fd5b61047e600160a060020a0360043581169060243516611a4b565b60405190815260200160405180910390f35b3415610b1557600080fd5b6105d7600160a060020a0360043516611a78565b005b3415610b3657600080fd5b61047e611ad0565b60405190815260200160405180910390f35b3415610b5b57600080fd5b610457611ad6565b604051901515815260200160405180910390f35b3415610b8257600080fd5b6105d7611ae6565b005b3415610b9757600080fd5b61047e611b18565b60405190815260200160405180910390f35b3415610bbc57600080fd5b61047e611b23565b60405190815260200160405180910390f35b6000828202831580610bf25750828482811515610bef57fe5b04145b1515610bfa57fe5b8091505b5092915050565b600080808311610c1157fe5b8284811515610c1c57fe5b0490508284811515610c2a57fe5b068184020184141515610bfa57fe5b8091505b5092915050565b600082821115610c5057fe5b508082035b92915050565b6000828201838110801590610bf25750828110155b1515610bfa57fe5b8091505b5092915050565b60408051908101604052600b81527f47696d6c6920546f6b656e000000000000000000000000000000000000000000602082015281565b6000811580610cec5750600160a060020a03338116600090815260046020908152604080832093871683529290522054155b1515610cf757600080fd5b600160a060020a03338116600081815260046020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60075481565b60005481565b635ba0e8c081565b60055460009060ff161515610d8957600080fd5b600160a060020a038416600090815260036020526040902054829010801590610dd95750600160a060020a0380851660009081526004602090815260408083203390941683529290522054829010155b8015610de6575060008210155b1515610df157600080fd5b600160a060020a038416600090815260036020526040902054610e149083610c44565b600160a060020a038086166000908152600360205260408082209390935590851681522054610e439083610c5b565b600160a060020a03808516600090815260036020908152604080832094909455878316825260048152838220339093168252919091522054610e859083610c44565b600160a060020a0380861660008181526004602090815260408083203386168452909152908190209390935590851691600080516020611b4a8339815191529085905190815260200160405180910390a35060015b9392505050565b660aa87bee53800081565b600881565b73c79ab28c5c03f1e7fbef056167364e6782f9ff4f81565b6359bfb54081565b60015433600160a060020a03908116911614610f2c57600080fd5b600160a060020a03811660009081526008602052604090819020805460ff191690557f229460e7e71cb0f5fd51f3ef9f4a1c8aec5a2039ca102291844e55e7b6e20a2190829051600160a060020a03909116815260200160405180910390a15b5b50565b6359e9e54081565b60408051908101604052600281527f7631000000000000000000000000000000000000000000000000000000000000602082015281565b73abcdefabcdefabcdefabcdefabcdefabcdefabcd81565b600954600160a060020a031681565b600160a060020a03331660009081526008602052604090205460ff168061102b575060015433600160a060020a039081169116145b151561103657600080fd5b8015806110435750600a54155b151561104e57600080fd5b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038481169190911791829055600a8390557f2f9a8bf238210d8404eee51d85f87c589e9cebd6bf8b5aaaaf925415b2eb13a4911682604051600160a060020a03909216825260208201526040908101905180910390a15b5b5050565b66038d7ea4c6800081565b600160a060020a0381166000908152600360205260409020545b919050565b60055462010000900460ff1681565b600554610100900460ff1681565b60086020526000908152604090205460ff1681565b60025433600160a060020a0390811691161461114357600080fd5b600254600154600160a060020a0391821691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36002546001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b565b600154600160a060020a031681565b66354a6ba7a1800081565b60055460ff1681565b60015433600160a060020a039081169116146111f257600080fd5b600160a060020a03811660009081526008602052604090819020805460ff191660011790557f8bcad96a272856281cdab9315e972c6c9c48a2f3cb957fec38c355b0c3afb2c190829051600160a060020a03909116815260200160405180910390a15b5b50565b60408051908101604052600381527f47494d0000000000000000000000000000000000000000000000000000000000602082015281565b60015460009033600160a060020a039081169116146112ae57600080fd5b6359e9e5404211806112c957506005546301000000900460ff165b806112ea5750600160a060020a033016600090815260036020526040902054155b15156112f557600080fd5b6005805460ff19166001179055600160a060020a0330166000908152600360205260408120541115610f8c5750600160a060020a03301660009081526003602052604081205473c79ab28c5c03f1e7fbef056167364e6782f9ff4f9091527f40ddf0127676746c4caa6d5ec80a9b34ffa96652f32d85bf7fafce1e71ac293c5461137f9082610c5b565b60036020527f40ddf0127676746c4caa6d5ec80a9b34ffa96652f32d85bf7fafce1e71ac293c5530600160a060020a0316600081815260408082209190915573c79ab28c5c03f1e7fbef056167364e6782f9ff4f9190600080516020611b4a8339815191529084905190815260200160405180910390a35b5b5b50565b6305f5e10081565b6102bc81565b60055460009060ff16151561141e57600080fd5b600160a060020a033316600090815260036020526040902054829010801590611448575060008210155b151561145357600080fd5b600160a060020a0333166000908152600360205260409020546114769083610c44565b600160a060020a0333811660009081526003602052604080822093909355908516815220546114a59083610c5b565b600160a060020a038085166000818152600360205260409081902093909355913390911690600080516020611b4a8339815191529085905190815260200160405180910390a35060015b92915050565b60095460009033600160a060020a0390811691161461151357600080fd5b83600160a060020a031632600160a060020a031614151561153357600080fd5b600a5482111561154257600080fd5b600160a060020a0384166000908152600360205260409020548290108061156a575060008211155b1561157757506000610eda565b600160a060020a03841660009081526003602052604090205461159a9083610c44565b600160a060020a0380861660009081526003602052604080822093909355908516815220546115c99083610c5b565b600160a060020a0380851660008181526003602052604090819020939093559190861690600080516020611b4a8339815191529085905190815260200160405180910390a35060015b9392505050565b60015460009033600160a060020a0390811691161461163757600080fd5b30600160a060020a031683600160a060020a031614158061165a575060055460ff165b151561166557600080fd5b600154600160a060020a038085169163a9059cbb9116846000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156116e157600080fd5b6102c65a03f115156116f257600080fd5b50505060405180519150505b5b92915050565b635d821c4081565b60015433600160a060020a0390811691161461172857600080fd5b6359bfb540421061173857600080fd5b600160a060020a03301660009081526003602052604090205461175b9083610c44565b600160a060020a03308116600090815260036020526040808220939093559085168152205461178a9083610c5b565b600160a060020a0384166000908152600360205260409020556006546117b09083610c5b565b6006556007546117c09082610c5b565b600755600160a060020a03808416903016600080516020611b4a8339815191528460405190815260200160405180910390a35b5b505050565b60015460009033600160a060020a0390811691161461181757600080fd5b635ba0e8c0421180156118325750600554610100900460ff16155b156119235773abcdefabcdefabcdefabcdefabcdefabcdefabcd6000526003602052600080516020611b2a833981519152546118759066038d7ea4c68000610c44565b6003602052600080516020611b2a83398151915255600160a060020a038216600090815260409020546118af9066038d7ea4c68000610c5b565b600160a060020a03831660008181526003602052604090819020929092556005805461ff0019166101001790559073abcdefabcdefabcdefabcdefabcdefabcdefabcd90600080516020611b4a8339815191529066038d7ea4c68000905190815260200160405180910390a35060016110f1565b635d821c404211801561193f575060055462010000900460ff16155b15611a325773abcdefabcdefabcdefabcdefabcdefabcdefabcd6000526003602052600080516020611b2a8339815191525461198290660aa87bee538000610c44565b6003602052600080516020611b2a83398151915255600160a060020a038216600090815260409020546119bc90660aa87bee538000610c5b565b600160a060020a03831660008181526003602052604090819020929092556005805462ff00001916620100001790559073abcdefabcdefabcdefabcdefabcdefabcdefabcd90600080516020611b4a83398151915290660aa87bee538000905190815260200160405180910390a35060016110f1565b5060005b5b919050565b600254600160a060020a031681565b600160a060020a038083166000908152600460209081526040808320938516835292905220545b92915050565b60015433600160a060020a03908116911614611a9357600080fd5b600160a060020a03811615610f8c576002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600a5481565b6005546301000000900460ff1681565b60015433600160a060020a03908116911614611b0157600080fd5b6005805463ff000000191663010000001790555b5b565b661c6bf52634000081565b600654815600cbc8b230df322dcd07a5b8f4b5704f64963787c7c8a2e28a55f089d48223b00addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058206c0286be97ba73afde87c149c234469f0690bbd95c5cee7480c1cac790bfb08a0029

Swarm Source

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