ETH Price: $3,915.22 (-0.72%)

Token

SnapCoin (SNPC)
 

Overview

Max Total Supply

678,333,334 SNPC

Holders

4,957 (0.00%)

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Earneo is a video sharing platform that benefits everyone.

ICO Information

Project Sector : Media, Platform
ICO Start Date : Oct 1, 2018
ICO End Date : Nov 30, 2018
Hard Cap : $59,000,000
Soft Cap : $10,000,000
Token Distribution Date : Dec 1, 2018
ICO Price  : $0.18
Bonus : 5%
Country : Malta

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SNPCToken

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-11-01
*/

pragma solidity 0.4.24;

// File: contracts/commons/SafeMath.sol

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

    /**
    * @dev Multiplies two numbers, reverts on overflow.
    */
    function mul(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);

        return c;
    }

    /**
    * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0); // Solidity only automatically asserts when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
    * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        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);

        return c;
    }

    /**
    * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
    * reverts when dividing by zero.
    */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

// File: contracts/flavours/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions". It has two-stage ownership transfer.
 */
contract Ownable {

    address public owner;
    address public pendingOwner;

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

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

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

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

    /**
     * @dev Allows the current owner to prepare transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        pendingOwner = newOwner;
    }

    /**
     * @dev Allows the pendingOwner address to finalize the transfer.
     */
    function claimOwnership() public onlyPendingOwner {
        emit OwnershipTransferred(owner, pendingOwner);
        owner = pendingOwner;
        pendingOwner = address(0);
    }
}

// File: contracts/flavours/Lockable.sol

/**
 * @title Lockable
 * @dev Base contract which allows children to
 *      implement main operations locking mechanism.
 */
contract Lockable is Ownable {
    event Lock();
    event Unlock();

    bool public locked = false;

    /**
     * @dev Modifier to make a function callable
    *       only when the contract is not locked.
     */
    modifier whenNotLocked() {
        require(!locked);
        _;
    }

    /**
     * @dev Modifier to make a function callable
     *      only when the contract is locked.
     */
    modifier whenLocked() {
        require(locked);
        _;
    }

    /**
     * @dev called by the owner to locke, triggers locked state
     */
    function lock() public onlyOwner whenNotLocked {
        locked = true;
        emit Lock();
    }

    /**
     * @dev called by the owner
     *      to unlock, returns to unlocked state
     */
    function unlock() public onlyOwner whenLocked {
        locked = false;
        emit Unlock();
    }
}

// File: contracts/base/BaseFixedERC20Token.sol

contract BaseFixedERC20Token is Lockable {
    using SafeMath for uint;

    /// @dev ERC20 Total supply
    uint public totalSupply;

    mapping(address => uint) public balances;

    mapping(address => mapping(address => uint)) private allowed;

    /// @dev Fired if token is transferred according to ERC20 spec
    event Transfer(address indexed from, address indexed to, uint value);

    /// @dev Fired if token withdrawal is approved according to ERC20 spec
    event Approval(address indexed owner, address indexed spender, uint value);

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

    /**
     * @dev Transfer token for a specified address
     * @param to_ The address to transfer to.
     * @param value_ The amount to be transferred.
     */
    function transfer(address to_, uint value_) public whenNotLocked returns (bool) {
        require(to_ != address(0) && value_ <= balances[msg.sender]);
        // SafeMath.sub will throw an exception if there is not enough balance
        balances[msg.sender] = balances[msg.sender].sub(value_);
        balances[to_] = balances[to_].add(value_);
        emit Transfer(msg.sender, to_, value_);
        return true;
    }

    /**
     * @dev Transfer tokens from one address to another
     * @param from_ address The address which you want to send tokens from
     * @param to_ address The address which you want to transfer to
     * @param value_ uint the amount of tokens to be transferred
     */
    function transferFrom(address from_, address to_, uint value_) public whenNotLocked returns (bool) {
        require(to_ != address(0) && value_ <= balances[from_] && value_ <= allowed[from_][msg.sender]);
        balances[from_] = balances[from_].sub(value_);
        balances[to_] = balances[to_].add(value_);
        allowed[from_][msg.sender] = allowed[from_][msg.sender].sub(value_);
        emit Transfer(from_, to_, value_);
        return true;
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender
     *
     * Beware that changing an allowance with this method brings the risk that someone may use both the old
     * and the new allowance by unfortunate transaction ordering
     *
     * 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 in:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * @param spender_ The address which will spend the funds.
     * @param value_ The amount of tokens to be spent.
     */
    function approve(address spender_, uint value_) public whenNotLocked returns (bool) {
        if (value_ != 0 && allowed[msg.sender][spender_] != 0) {
            revert();
        }
        allowed[msg.sender][spender_] = value_;
        emit Approval(msg.sender, spender_, value_);
        return true;
    }

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

// File: contracts/flavours/SelfDestructible.sol

/**
 * @title SelfDestructible
 * @dev The SelfDestructible contract has an owner address, and provides selfDestruct method
 * in case of deployment error.
 */
contract SelfDestructible is Ownable {

    function selfDestruct(uint8 v, bytes32 r, bytes32 s) public onlyOwner {
        if (ecrecover(prefixedHash(), v, r, s) != owner) {
            revert();
        }
        selfdestruct(owner);
    }

    function originalHash() internal view returns (bytes32) {
        return keccak256(abi.encodePacked(
                "Signed for Selfdestruct",
                address(this),
                msg.sender
            ));
    }

    function prefixedHash() internal view returns (bytes32) {
        bytes memory prefix = "\x19Ethereum Signed Message:\n32";
        return keccak256(abi.encodePacked(prefix, originalHash()));
    }
}

// File: contracts/interface/ERC20Token.sol

interface ERC20Token {
    function transferFrom(address from_, address to_, uint value_) external returns (bool);
    function transfer(address to_, uint value_) external returns (bool);
    function balanceOf(address owner_) external returns (uint);
}

// File: contracts/flavours/Withdrawal.sol

/**
 * @title Withdrawal
 * @dev The Withdrawal contract has an owner address, and provides method for withdraw funds and tokens, if any
 */
contract Withdrawal is Ownable {

    // withdraw funds, if any, only for owner
    function withdraw() public onlyOwner {
        owner.transfer(address(this).balance);
    }

    // withdraw stuck tokens, if any, only for owner
    function withdrawTokens(address _someToken) public onlyOwner {
        ERC20Token someToken = ERC20Token(_someToken);
        uint balance = someToken.balanceOf(address(this));
        someToken.transfer(owner, balance);
    }
}

// File: contracts/SNPCToken.sol

/**
 * @title SNPC token contract.
 */
contract SNPCToken is BaseFixedERC20Token, SelfDestructible, Withdrawal {
    using SafeMath for uint;

    string public constant name = "SnapCoin";

    string public constant symbol = "SNPC";

    uint8 public constant decimals = 18;

    uint internal constant ONE_TOKEN = 1e18;

    /// @dev team reserved balances
    mapping(address => uint) public teamReservedBalances;

    uint public teamReservedUnlockAt;

    /// @dev bounty reserved balances
    mapping(address => uint) public bountyReservedBalances;

    uint public bountyReservedUnlockAt;

    /// @dev Fired some tokens distributed to someone from staff,business
    event ReservedTokensDistributed(address indexed to, uint8 group, uint amount);

    event TokensBurned(uint amount);

    constructor(uint totalSupplyTokens_,
            uint teamTokens_,
            uint bountyTokens_,
            uint advisorsTokens_,
            uint reserveTokens_,
            uint stackingBonusTokens_) public {
        locked = true;
        totalSupply = totalSupplyTokens_.mul(ONE_TOKEN);
        uint availableSupply = totalSupply;

        reserved[RESERVED_TEAM_GROUP] = teamTokens_.mul(ONE_TOKEN);
        reserved[RESERVED_BOUNTY_GROUP] = bountyTokens_.mul(ONE_TOKEN);
        reserved[RESERVED_ADVISORS_GROUP] = advisorsTokens_.mul(ONE_TOKEN);
        reserved[RESERVED_RESERVE_GROUP] = reserveTokens_.mul(ONE_TOKEN);
        reserved[RESERVED_STACKING_BONUS_GROUP] = stackingBonusTokens_.mul(ONE_TOKEN);
        availableSupply = availableSupply
            .sub(reserved[RESERVED_TEAM_GROUP])
            .sub(reserved[RESERVED_BOUNTY_GROUP])
            .sub(reserved[RESERVED_ADVISORS_GROUP])
            .sub(reserved[RESERVED_RESERVE_GROUP])
            .sub(reserved[RESERVED_STACKING_BONUS_GROUP]);
        teamReservedUnlockAt = block.timestamp + 365 days; // 1 year
        bountyReservedUnlockAt = block.timestamp + 91 days; // 3 month

        balances[owner] = availableSupply;
        emit Transfer(0, address(this), availableSupply);
        emit Transfer(address(this), owner, balances[owner]);
    }

    // Disable direct payments
    function() external payable {
        revert();
    }

    function burnTokens(uint amount) public {
        require(balances[msg.sender] >= amount);
        totalSupply = totalSupply.sub(amount);
        balances[msg.sender] = balances[msg.sender].sub(amount);

        emit TokensBurned(amount);
    }

    // --------------- Reserve specific
    uint8 public constant RESERVED_TEAM_GROUP = 0x1;

    uint8 public constant RESERVED_BOUNTY_GROUP = 0x2;

    uint8 public constant RESERVED_ADVISORS_GROUP = 0x4;

    uint8 public constant RESERVED_RESERVE_GROUP = 0x8;

    uint8 public constant RESERVED_STACKING_BONUS_GROUP = 0x10;

    /// @dev Token reservation mapping: key(RESERVED_X) => value(number of tokens)
    mapping(uint8 => uint) public reserved;

    /**
     * @dev Get reserved tokens for specific group
     */
    function getReservedTokens(uint8 group_) public view returns (uint) {
        return reserved[group_];
    }

    /**
     * @dev Assign `amount_` of privately distributed tokens
     *      to someone identified with `to_` address.
     * @param to_   Tokens owner
     * @param group_ Group identifier of privately distributed tokens
     * @param amount_ Number of tokens distributed with decimals part
     */
    function assignReserved(address to_, uint8 group_, uint amount_) public onlyOwner {
        require(to_ != address(0) && (group_ & 0x1F) != 0);

        // SafeMath will check reserved[group_] >= amount
        reserved[group_] = reserved[group_].sub(amount_);
        balances[to_] = balances[to_].add(amount_);
        if (group_ == RESERVED_TEAM_GROUP) {
            teamReservedBalances[to_] = teamReservedBalances[to_].add(amount_);
        } else if (group_ == RESERVED_BOUNTY_GROUP) {
            bountyReservedBalances[to_] = bountyReservedBalances[to_].add(amount_);
        }
        emit ReservedTokensDistributed(to_, group_, amount_);
    }

    /**
     * @dev Gets the balance of team reserved tokens the specified address.
     * @param owner_ The address to query the the balance of.
     * @return An uint representing the amount owned by the passed address.
     */
    function teamReservedBalanceOf(address owner_) public view returns (uint) {
        return teamReservedBalances[owner_];
    }

    /**
     * @dev Gets the balance of bounty reserved tokens the specified address.
     * @param owner_ The address to query the the balance of.
     * @return An uint representing the amount owned by the passed address.
     */
    function bountyReservedBalanceOf(address owner_) public view returns (uint) {
        return bountyReservedBalances[owner_];
    }

    function getAllowedForTransferTokens(address from_) public view returns (uint) {
        uint allowed = balances[from_];

        if (teamReservedBalances[from_] > 0) {
            if (block.timestamp < teamReservedUnlockAt) {
                allowed = allowed.sub(teamReservedBalances[from_]);
            }
        }

        if (bountyReservedBalances[from_] > 0) {
            if (block.timestamp < bountyReservedUnlockAt) {
                allowed = allowed.sub(bountyReservedBalances[from_]);
            }
        }

        return allowed;
    }

    function transfer(address to_, uint value_) public whenNotLocked returns (bool) {
        require(value_ <= getAllowedForTransferTokens(msg.sender));
        return super.transfer(to_, value_);
    }

    function transferFrom(address from_, address to_, uint value_) public whenNotLocked returns (bool) {
        require(value_ <= getAllowedForTransferTokens(from_));
        return super.transferFrom(from_, to_, value_);
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"group_","type":"uint8"}],"name":"getReservedTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender_","type":"address"},{"name":"value_","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner_","type":"address"}],"name":"teamReservedBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to_","type":"address"},{"name":"group_","type":"uint8"},{"name":"amount_","type":"uint256"}],"name":"assignReserved","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RESERVED_ADVISORS_GROUP","outputs":[{"name":"","type":"uint8"}],"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":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"from_","type":"address"}],"name":"getAllowedForTransferTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RESERVED_BOUNTY_GROUP","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_someToken","type":"address"}],"name":"withdrawTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner_","type":"address"}],"name":"bountyReservedBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"teamReservedBalances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"RESERVED_STACKING_BONUS_GROUP","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"bountyReservedBalances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bountyReservedUnlockAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"reserved","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RESERVED_RESERVE_GROUP","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to_","type":"address"},{"name":"value_","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"locked","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner_","type":"address"},{"name":"spender_","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RESERVED_TEAM_GROUP","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"selfDestruct","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"teamReservedUnlockAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"totalSupplyTokens_","type":"uint256"},{"name":"teamTokens_","type":"uint256"},{"name":"bountyTokens_","type":"uint256"},{"name":"advisorsTokens_","type":"uint256"},{"name":"reserveTokens_","type":"uint256"},{"name":"stackingBonusTokens_","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"group","type":"uint8"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"ReservedTokensDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokensBurned","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"},{"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":[],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040526001805460a060020a60ff02191690553480156200002157600080fd5b5060405160c08062001a1583398101604090815281516020830151918301516060840151608085015160a09095015160008054600160a060020a031916331781556001805460a060020a60ff0219167401000000000000000000000000000000000000000017905593959293919291620000b287670de0b6b3a76400006401000000006200158f6200032782021704565b60028190559050620000db86670de0b6b3a76400006401000000006200158f6200032782021704565b60016000526009602052600080516020620019f5833981519152556200011885670de0b6b3a76400006401000000006200158f6200032782021704565b6002600052600960205260008051602062001975833981519152556200015584670de0b6b3a76400006401000000006200158f6200032782021704565b60046000526009602052600080516020620019d5833981519152556200019283670de0b6b3a76400006401000000006200158f6200032782021704565b600860005260096020526000805160206200199583398151915255620001cf82670de0b6b3a76400006401000000006200158f6200032782021704565b60096020527fbe671448d730349025d29d2778ce42e0b1bf32e5fba806216bd490316c20b57d8190556000805160206200199583398151915254600080516020620019d58339815191525460008051602062001975833981519152546001600052600080516020620019f5833981519152546200028094936200026b939092849283919082908a90640100000000620010ec6200036482021704565b90640100000000620010ec6200036482021704565b426301e1338081016006556277f8800160085560008054600160a060020a03168152600360209081526040808320849055805184815290519394503093600080516020620019b5833981519152929181900390910190a360008054600160a060020a031680825260036020908152604092839020548351908152925191923092600080516020620019b5833981519152929181900390910190a3505050505050506200037c565b6000808315156200033c57600091506200035d565b508282028284828115156200034d57fe5b04146200035957600080fd5b8091505b5092915050565b600080838311156200037557600080fd5b5050900390565b6115e9806200038c6000396000f3006080604052600436106101c15763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101c657806308612c3514610250578063095ea7b31461027d5780630d35f64c146102b55780631019635d146102d657806318160ddd146103025780631d195efe1461031757806323b872dd1461034257806325f5cb1e1461036c57806327e235e31461038d5780632ee551bf146103ae578063313ce567146103c35780633ccfd60b146103d857806349df728c146103ed5780634e71e0c81461040e5780635c613a03146104235780636c629e2c146104445780636d1b229d1461046557806370a082311461047d5780637ae1944c1461049e57806381afc1af146104b35780638a5e3478146104d45780638da5cb5b146104e957806395d89b411461051a57806397ab47861461052f5780639e0112b81461054a578063a69df4b51461055f578063a9059cbb14610574578063cf30901214610598578063dd62ed3e146105ad578063e30c3978146105d4578063ecc94a2c146105e9578063f2fde38b146105fe578063f75e5d851461061f578063f83d08ba14610640578063ff8e2ba414610655575b600080fd5b3480156101d257600080fd5b506101db61066a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102155781810151838201526020016101fd565b50505050905090810190601f1680156102425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025c57600080fd5b5061026b60ff600435166106a1565b60408051918252519081900360200190f35b34801561028957600080fd5b506102a1600160a060020a03600435166024356106b6565b604080519115158252519081900360200190f35b3480156102c157600080fd5b5061026b600160a060020a0360043516610783565b3480156102e257600080fd5b50610300600160a060020a036004351660ff6024351660443561079e565b005b34801561030e57600080fd5b5061026b61093e565b34801561032357600080fd5b5061032c610944565b6040805160ff9092168252519081900360200190f35b34801561034e57600080fd5b506102a1600160a060020a0360043581169060243516604435610949565b34801561037857600080fd5b5061026b600160a060020a036004351661099c565b34801561039957600080fd5b5061026b600160a060020a0360043516610a5a565b3480156103ba57600080fd5b5061032c610a6c565b3480156103cf57600080fd5b5061032c610a71565b3480156103e457600080fd5b50610300610a76565b3480156103f957600080fd5b50610300600160a060020a0360043516610acb565b34801561041a57600080fd5b50610300610c1a565b34801561042f57600080fd5b5061026b600160a060020a0360043516610ca2565b34801561045057600080fd5b5061026b600160a060020a0360043516610cbd565b34801561047157600080fd5b50610300600435610ccf565b34801561048957600080fd5b5061026b600160a060020a0360043516610d6d565b3480156104aa57600080fd5b5061032c610d88565b3480156104bf57600080fd5b5061026b600160a060020a0360043516610d8d565b3480156104e057600080fd5b5061026b610d9f565b3480156104f557600080fd5b506104fe610da5565b60408051600160a060020a039092168252519081900360200190f35b34801561052657600080fd5b506101db610db4565b34801561053b57600080fd5b5061026b60ff60043516610deb565b34801561055657600080fd5b5061032c610dfd565b34801561056b57600080fd5b50610300610e02565b34801561058057600080fd5b506102a1600160a060020a0360043516602435610e8b565b3480156105a457600080fd5b506102a1610edc565b3480156105b957600080fd5b5061026b600160a060020a0360043581169060243516610efd565b3480156105e057600080fd5b506104fe610f28565b3480156105f557600080fd5b5061032c610f37565b34801561060a57600080fd5b50610300600160a060020a0360043516610f3c565b34801561062b57600080fd5b5061030060ff60043516602435604435610f97565b34801561064c57600080fd5b50610300611047565b34801561066157600080fd5b5061026b6110e6565b60408051808201909152600881527f536e6170436f696e000000000000000000000000000000000000000000000000602082015281565b60ff1660009081526009602052604090205490565b60015460009074010000000000000000000000000000000000000000900460ff16156106e157600080fd5b81158015906107125750336000908152600460209081526040808320600160a060020a038716845290915290205415155b1561071c57600080fd5b336000818152600460209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a031660009081526005602052604090205490565b600054600160a060020a031633146107b557600080fd5b600160a060020a038316158015906107cf5750601f821615155b15156107da57600080fd5b60ff82166000908152600960205260409020546107fd908263ffffffff6110ec16565b60ff8316600090815260096020908152604080832093909355600160a060020a0386168252600390522054610838908263ffffffff61110a16565b600160a060020a03841660009081526003602052604090205560ff8216600114156108a457600160a060020a038316600090815260056020526040902054610886908263ffffffff61110a16565b600160a060020a0384166000908152600560205260409020556108f3565b60ff8216600214156108f357600160a060020a0383166000908152600760205260409020546108d9908263ffffffff61110a16565b600160a060020a0384166000908152600760205260409020555b6040805160ff84168152602081018390528151600160a060020a038616927f9b25e6f19951830b3dbcfcd62be59f689237a770339d40af72e2380fc4042fe4928290030190a2505050565b60025481565b600481565b60015460009074010000000000000000000000000000000000000000900460ff161561097457600080fd5b61097d8461099c565b82111561098957600080fd5b61099484848461111c565b949350505050565b600160a060020a03811660009081526003602090815260408083205460059092528220548210156109fe576006544210156109fe57600160a060020a0383166000908152600560205260409020546109fb90829063ffffffff6110ec16565b90505b600160a060020a0383166000908152600760205260408120541115610a5457600854421015610a5457600160a060020a038316600090815260076020526040902054610a5190829063ffffffff6110ec16565b90505b92915050565b60036020526000908152604090205481565b600281565b601281565b600054600160a060020a03163314610a8d57600080fd5b60008054604051600160a060020a0390911691303180156108fc02929091818181858888f19350505050158015610ac8573d6000803e3d6000fd5b50565b600080548190600160a060020a03163314610ae557600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015610b4957600080fd5b505af1158015610b5d573d6000803e3d6000fd5b505050506040513d6020811015610b7357600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b158015610be957600080fd5b505af1158015610bfd573d6000803e3d6000fd5b505050506040513d6020811015610c1357600080fd5b5050505050565b600154600160a060020a03163314610c3157600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600160a060020a031660009081526007602052604090205490565b60056020526000908152604090205481565b33600090815260036020526040902054811115610ceb57600080fd5b600254610cfe908263ffffffff6110ec16565b60025533600090815260036020526040902054610d21908263ffffffff6110ec16565b3360009081526003602090815260409182902092909255805183815290517f6ef4855b666dcc7884561072e4358b28dfe01feb1b7f4dcebc00e62d50394ac7929181900390910190a150565b600160a060020a031660009081526003602052604090205490565b601081565b60076020526000908152604090205481565b60085481565b600054600160a060020a031681565b60408051808201909152600481527f534e504300000000000000000000000000000000000000000000000000000000602082015281565b60096020526000908152604090205481565b600881565b600054600160a060020a03163314610e1957600080fd5b60015474010000000000000000000000000000000000000000900460ff161515610e4257600080fd5b6001805474ff0000000000000000000000000000000000000000191690556040517f70e3fffea7bbb557facdee48ed7f7af5179030adef9ad0c876df039a718f359e90600090a1565b60015460009074010000000000000000000000000000000000000000900460ff1615610eb657600080fd5b610ebf3361099c565b821115610ecb57600080fd5b610ed583836112be565b9392505050565b60015474010000000000000000000000000000000000000000900460ff1681565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b600154600160a060020a031681565b600181565b600054600160a060020a03163314610f5357600080fd5b600160a060020a0381161515610f6857600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a03163314610fae57600080fd5b600054600160a060020a03166001610fc46113cb565b60408051600080825260208083018085529490945260ff8916828401526060820188905260808201879052915160a08083019493601f198301938390039091019190865af115801561101a573d6000803e3d6000fd5b50505060206040510351600160a060020a031614151561103957600080fd5b600054600160a060020a0316ff5b600054600160a060020a0316331461105e57600080fd5b60015474010000000000000000000000000000000000000000900460ff161561108657600080fd5b6001805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790556040517f46620e39f4e119bf05f13544f8ef38338fc06c17f6b731c7f95bee356572db9690600090a1565b60065481565b600080838311156110fc57600080fd5b5050808203805b5092915050565b600082820183811015610ed557600080fd5b60015460009074010000000000000000000000000000000000000000900460ff161561114757600080fd5b600160a060020a038316158015906111775750600160a060020a0384166000908152600360205260409020548211155b80156111a65750600160a060020a03841660009081526004602090815260408083203384529091529020548211155b15156111b157600080fd5b600160a060020a0384166000908152600360205260409020546111da908363ffffffff6110ec16565b600160a060020a03808616600090815260036020526040808220939093559085168152205461120f908363ffffffff61110a16565b600160a060020a038085166000908152600360209081526040808320949094559187168152600482528281203382529091522054611253908363ffffffff6110ec16565b600160a060020a03808616600081815260046020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b60015460009074010000000000000000000000000000000000000000900460ff16156112e957600080fd5b600160a060020a038316158015906113105750336000908152600360205260409020548211155b151561131b57600080fd5b3360009081526003602052604090205461133b908363ffffffff6110ec16565b3360009081526003602052604080822092909255600160a060020a0385168152205461136d908363ffffffff61110a16565b600160a060020a0384166000818152600360209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a33320000000060208201526000908061140b6114d0565b6040516020018083805190602001908083835b6020831061143d5780518252601f19909201916020918201910161141e565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815293820190819052835193945092839250908401908083835b6020831061149d5780518252601f19909201916020918201910161147e565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091505090565b604080517f5369676e656420666f722053656c6664657374727563740000000000000000006020808301919091526c0100000000000000000000000030810260378401523302604b8301528251603f818403018152605f909201928390528151600093918291908401908083835b6020831061155d5780518252601f19909201916020918201910161153e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905090565b6000808315156115a25760009150611103565b508282028284828115156115b257fe5b0414610ed557600080fd00a165627a7a72305820afe70f272845bad6f54a0f92e244fe84e803fb3ace9f3a403e3b9bac29f0ee3e00296cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c3c7694af312c4f286114180fd0ba6a52461fcee8a381636770b19a343af92538addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8dc18c4ccfd75f5c815b63770fa542fd953e8fef7e0e44bbdd4913470ce7e9cb92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36000000000000000000000000000000000000000000000000000000002bcf35c00000000000000000000000000000000000000000000000000000000002a0e9a0000000000000000000000000000000000000000000000000000000000230c2b000000000000000000000000000000000000000000000000000000000015074d000000000000000000000000000000000000000000000000000000000046185600000000000000000000000000000000000000000000000000000000002a0e9a0

Deployed Bytecode

0x6080604052600436106101c15763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101c657806308612c3514610250578063095ea7b31461027d5780630d35f64c146102b55780631019635d146102d657806318160ddd146103025780631d195efe1461031757806323b872dd1461034257806325f5cb1e1461036c57806327e235e31461038d5780632ee551bf146103ae578063313ce567146103c35780633ccfd60b146103d857806349df728c146103ed5780634e71e0c81461040e5780635c613a03146104235780636c629e2c146104445780636d1b229d1461046557806370a082311461047d5780637ae1944c1461049e57806381afc1af146104b35780638a5e3478146104d45780638da5cb5b146104e957806395d89b411461051a57806397ab47861461052f5780639e0112b81461054a578063a69df4b51461055f578063a9059cbb14610574578063cf30901214610598578063dd62ed3e146105ad578063e30c3978146105d4578063ecc94a2c146105e9578063f2fde38b146105fe578063f75e5d851461061f578063f83d08ba14610640578063ff8e2ba414610655575b600080fd5b3480156101d257600080fd5b506101db61066a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102155781810151838201526020016101fd565b50505050905090810190601f1680156102425780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025c57600080fd5b5061026b60ff600435166106a1565b60408051918252519081900360200190f35b34801561028957600080fd5b506102a1600160a060020a03600435166024356106b6565b604080519115158252519081900360200190f35b3480156102c157600080fd5b5061026b600160a060020a0360043516610783565b3480156102e257600080fd5b50610300600160a060020a036004351660ff6024351660443561079e565b005b34801561030e57600080fd5b5061026b61093e565b34801561032357600080fd5b5061032c610944565b6040805160ff9092168252519081900360200190f35b34801561034e57600080fd5b506102a1600160a060020a0360043581169060243516604435610949565b34801561037857600080fd5b5061026b600160a060020a036004351661099c565b34801561039957600080fd5b5061026b600160a060020a0360043516610a5a565b3480156103ba57600080fd5b5061032c610a6c565b3480156103cf57600080fd5b5061032c610a71565b3480156103e457600080fd5b50610300610a76565b3480156103f957600080fd5b50610300600160a060020a0360043516610acb565b34801561041a57600080fd5b50610300610c1a565b34801561042f57600080fd5b5061026b600160a060020a0360043516610ca2565b34801561045057600080fd5b5061026b600160a060020a0360043516610cbd565b34801561047157600080fd5b50610300600435610ccf565b34801561048957600080fd5b5061026b600160a060020a0360043516610d6d565b3480156104aa57600080fd5b5061032c610d88565b3480156104bf57600080fd5b5061026b600160a060020a0360043516610d8d565b3480156104e057600080fd5b5061026b610d9f565b3480156104f557600080fd5b506104fe610da5565b60408051600160a060020a039092168252519081900360200190f35b34801561052657600080fd5b506101db610db4565b34801561053b57600080fd5b5061026b60ff60043516610deb565b34801561055657600080fd5b5061032c610dfd565b34801561056b57600080fd5b50610300610e02565b34801561058057600080fd5b506102a1600160a060020a0360043516602435610e8b565b3480156105a457600080fd5b506102a1610edc565b3480156105b957600080fd5b5061026b600160a060020a0360043581169060243516610efd565b3480156105e057600080fd5b506104fe610f28565b3480156105f557600080fd5b5061032c610f37565b34801561060a57600080fd5b50610300600160a060020a0360043516610f3c565b34801561062b57600080fd5b5061030060ff60043516602435604435610f97565b34801561064c57600080fd5b50610300611047565b34801561066157600080fd5b5061026b6110e6565b60408051808201909152600881527f536e6170436f696e000000000000000000000000000000000000000000000000602082015281565b60ff1660009081526009602052604090205490565b60015460009074010000000000000000000000000000000000000000900460ff16156106e157600080fd5b81158015906107125750336000908152600460209081526040808320600160a060020a038716845290915290205415155b1561071c57600080fd5b336000818152600460209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b600160a060020a031660009081526005602052604090205490565b600054600160a060020a031633146107b557600080fd5b600160a060020a038316158015906107cf5750601f821615155b15156107da57600080fd5b60ff82166000908152600960205260409020546107fd908263ffffffff6110ec16565b60ff8316600090815260096020908152604080832093909355600160a060020a0386168252600390522054610838908263ffffffff61110a16565b600160a060020a03841660009081526003602052604090205560ff8216600114156108a457600160a060020a038316600090815260056020526040902054610886908263ffffffff61110a16565b600160a060020a0384166000908152600560205260409020556108f3565b60ff8216600214156108f357600160a060020a0383166000908152600760205260409020546108d9908263ffffffff61110a16565b600160a060020a0384166000908152600760205260409020555b6040805160ff84168152602081018390528151600160a060020a038616927f9b25e6f19951830b3dbcfcd62be59f689237a770339d40af72e2380fc4042fe4928290030190a2505050565b60025481565b600481565b60015460009074010000000000000000000000000000000000000000900460ff161561097457600080fd5b61097d8461099c565b82111561098957600080fd5b61099484848461111c565b949350505050565b600160a060020a03811660009081526003602090815260408083205460059092528220548210156109fe576006544210156109fe57600160a060020a0383166000908152600560205260409020546109fb90829063ffffffff6110ec16565b90505b600160a060020a0383166000908152600760205260408120541115610a5457600854421015610a5457600160a060020a038316600090815260076020526040902054610a5190829063ffffffff6110ec16565b90505b92915050565b60036020526000908152604090205481565b600281565b601281565b600054600160a060020a03163314610a8d57600080fd5b60008054604051600160a060020a0390911691303180156108fc02929091818181858888f19350505050158015610ac8573d6000803e3d6000fd5b50565b600080548190600160a060020a03163314610ae557600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015610b4957600080fd5b505af1158015610b5d573d6000803e3d6000fd5b505050506040513d6020811015610b7357600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b158015610be957600080fd5b505af1158015610bfd573d6000803e3d6000fd5b505050506040513d6020811015610c1357600080fd5b5050505050565b600154600160a060020a03163314610c3157600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600160a060020a031660009081526007602052604090205490565b60056020526000908152604090205481565b33600090815260036020526040902054811115610ceb57600080fd5b600254610cfe908263ffffffff6110ec16565b60025533600090815260036020526040902054610d21908263ffffffff6110ec16565b3360009081526003602090815260409182902092909255805183815290517f6ef4855b666dcc7884561072e4358b28dfe01feb1b7f4dcebc00e62d50394ac7929181900390910190a150565b600160a060020a031660009081526003602052604090205490565b601081565b60076020526000908152604090205481565b60085481565b600054600160a060020a031681565b60408051808201909152600481527f534e504300000000000000000000000000000000000000000000000000000000602082015281565b60096020526000908152604090205481565b600881565b600054600160a060020a03163314610e1957600080fd5b60015474010000000000000000000000000000000000000000900460ff161515610e4257600080fd5b6001805474ff0000000000000000000000000000000000000000191690556040517f70e3fffea7bbb557facdee48ed7f7af5179030adef9ad0c876df039a718f359e90600090a1565b60015460009074010000000000000000000000000000000000000000900460ff1615610eb657600080fd5b610ebf3361099c565b821115610ecb57600080fd5b610ed583836112be565b9392505050565b60015474010000000000000000000000000000000000000000900460ff1681565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b600154600160a060020a031681565b600181565b600054600160a060020a03163314610f5357600080fd5b600160a060020a0381161515610f6857600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a03163314610fae57600080fd5b600054600160a060020a03166001610fc46113cb565b60408051600080825260208083018085529490945260ff8916828401526060820188905260808201879052915160a08083019493601f198301938390039091019190865af115801561101a573d6000803e3d6000fd5b50505060206040510351600160a060020a031614151561103957600080fd5b600054600160a060020a0316ff5b600054600160a060020a0316331461105e57600080fd5b60015474010000000000000000000000000000000000000000900460ff161561108657600080fd5b6001805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790556040517f46620e39f4e119bf05f13544f8ef38338fc06c17f6b731c7f95bee356572db9690600090a1565b60065481565b600080838311156110fc57600080fd5b5050808203805b5092915050565b600082820183811015610ed557600080fd5b60015460009074010000000000000000000000000000000000000000900460ff161561114757600080fd5b600160a060020a038316158015906111775750600160a060020a0384166000908152600360205260409020548211155b80156111a65750600160a060020a03841660009081526004602090815260408083203384529091529020548211155b15156111b157600080fd5b600160a060020a0384166000908152600360205260409020546111da908363ffffffff6110ec16565b600160a060020a03808616600090815260036020526040808220939093559085168152205461120f908363ffffffff61110a16565b600160a060020a038085166000908152600360209081526040808320949094559187168152600482528281203382529091522054611253908363ffffffff6110ec16565b600160a060020a03808616600081815260046020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b60015460009074010000000000000000000000000000000000000000900460ff16156112e957600080fd5b600160a060020a038316158015906113105750336000908152600360205260409020548211155b151561131b57600080fd5b3360009081526003602052604090205461133b908363ffffffff6110ec16565b3360009081526003602052604080822092909255600160a060020a0385168152205461136d908363ffffffff61110a16565b600160a060020a0384166000818152600360209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b60408051808201909152601c81527f19457468657265756d205369676e6564204d6573736167653a0a33320000000060208201526000908061140b6114d0565b6040516020018083805190602001908083835b6020831061143d5780518252601f19909201916020918201910161141e565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815293820190819052835193945092839250908401908083835b6020831061149d5780518252601f19909201916020918201910161147e565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091505090565b604080517f5369676e656420666f722053656c6664657374727563740000000000000000006020808301919091526c0100000000000000000000000030810260378401523302604b8301528251603f818403018152605f909201928390528151600093918291908401908083835b6020831061155d5780518252601f19909201916020918201910161153e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905090565b6000808315156115a25760009150611103565b508282028284828115156115b257fe5b0414610ed557600080fd00a165627a7a72305820afe70f272845bad6f54a0f92e244fe84e803fb3ace9f3a403e3b9bac29f0ee3e0029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000002bcf35c00000000000000000000000000000000000000000000000000000000002a0e9a0000000000000000000000000000000000000000000000000000000000230c2b000000000000000000000000000000000000000000000000000000000015074d000000000000000000000000000000000000000000000000000000000046185600000000000000000000000000000000000000000000000000000000002a0e9a0

-----Decoded View---------------
Arg [0] : totalSupplyTokens_ (uint256): 735000000
Arg [1] : teamTokens_ (uint256): 44100000
Arg [2] : bountyTokens_ (uint256): 36750000
Arg [3] : advisorsTokens_ (uint256): 22050000
Arg [4] : reserveTokens_ (uint256): 73500000
Arg [5] : stackingBonusTokens_ (uint256): 44100000

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000002bcf35c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000002a0e9a0
Arg [2] : 000000000000000000000000000000000000000000000000000000000230c2b0
Arg [3] : 00000000000000000000000000000000000000000000000000000000015074d0
Arg [4] : 0000000000000000000000000000000000000000000000000000000004618560
Arg [5] : 0000000000000000000000000000000000000000000000000000000002a0e9a0


Swarm Source

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