ETH Price: $3,780.92 (-1.72%)
Gas: 8 Gwei

Token

FNKOSToken (FNKOS)
 

Overview

Max Total Supply

1,000,000,000 FNKOS

Holders

77,779 (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

FNKOS is a fog computing-based blockchain operating system designed to make the best use of the edge computing resources such as idle hardware network and storage resources.

ICO Information

Country : British Virgin Islands

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
FNKOSToken

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-07-16
*/

pragma solidity ^0.4.24;
//
// FogLink OS Token
// Author: FNK
// Contact: [email protected]
// Telegram community: https://t.me/fnkofficial
//
contract FNKOSToken {   
    string public constant name         = "FNKOSToken";
    string public constant symbol       = "FNKOS";
    uint public constant decimals       = 18;
    
    uint256 fnkEthRate                  = 10 ** decimals;
    uint256 fnkSupply                   = 1000000000;
    uint256 public totalSupply          = fnkSupply * fnkEthRate;
    uint256 public minInvEth            = 0.1 ether;
    uint256 public maxInvEth            = 100.0 ether;
    uint256 public sellStartTime        = 1524240000;           // 2018/4/21
    uint256 public sellDeadline1        = sellStartTime + 30 days;
    uint256 public sellDeadline2        = sellDeadline1 + 30 days;
    uint256 public freezeDuration       = 30 days;
    uint256 public ethFnkRate1          = 3600;
    uint256 public ethFnkRate2          = 3600;

    bool public running                 = true;
    bool public buyable                 = true;
    
    address owner;
    mapping (address => mapping (address => uint256)) allowed;
    mapping (address => bool) public whitelist;
    mapping (address =>  uint256) whitelistLimit;

    struct BalanceInfo {
        uint256 balance;
        uint256[] freezeAmount;
        uint256[] releaseTime;
    }
    mapping (address => BalanceInfo) balances;
    
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
    event BeginRunning();
    event PauseRunning();
    event BeginSell();
    event PauseSell();
    event Burn(address indexed burner, uint256 val);
    event Freeze(address indexed from, uint256 value);
    
    constructor () public{
        owner = msg.sender;
        balances[owner].balance = totalSupply;
    }
    
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }
    
    modifier onlyWhitelist() {
        require(whitelist[msg.sender] == true);
        _;
    }
    
    modifier isRunning(){
        require(running);
        _;
    }
    modifier isNotRunning(){
        require(!running);
        _;
    }
    modifier isBuyable(){
        require(buyable && now >= sellStartTime && now <= sellDeadline2);
        _;
    }
    modifier isNotBuyable(){
        require(!buyable || now < sellStartTime || now > sellDeadline2);
        _;
    }
    // mitigates the ERC20 short address attack
    modifier onlyPayloadSize(uint size) {
        assert(msg.data.length >= size + 4);
        _;
    }

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

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

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

    // 1eth = newRate tokens
    function setPbulicOfferingPrice(uint256 _rate1, uint256 _rate2) onlyOwner public {
        ethFnkRate1 = _rate1;
        ethFnkRate2 = _rate2;       
    }

    //
    function setPublicOfferingLimit(uint256 _minVal, uint256 _maxVal) onlyOwner public {
        minInvEth   = _minVal;
        maxInvEth   = _maxVal;
    }
    
    function setPublicOfferingDate(uint256 _startTime, uint256 _deadLine1, uint256 _deadLine2) onlyOwner public {
        sellStartTime = _startTime;
        sellDeadline1   = _deadLine1;
        sellDeadline2   = _deadLine2;
    }
        
    function transferOwnership(address _newOwner) onlyOwner public {
        if (_newOwner !=    address(0)) {
            owner = _newOwner;
        }
    }
    
    function pause() onlyOwner isRunning    public   {
        running = false;
        emit PauseRunning();
    }
    
    function start() onlyOwner isNotRunning public   {
        running = true;
        emit BeginRunning();
    }

    function pauseSell() onlyOwner  isBuyable isRunning public{
        buyable = false;
        emit PauseSell();
    }
    
    function beginSell() onlyOwner  isNotBuyable isRunning  public{
        buyable = true;
        emit BeginSell();
    }

    //
    // _amount in FNK, 
    //
    function airDeliver(address _to,    uint256 _amount)  onlyOwner public {
        require(owner != _to);
        require(_amount > 0);
        require(balances[owner].balance >= _amount);
        
        // take big number as wei
        if(_amount < fnkSupply){
            _amount = _amount * fnkEthRate;
        }
        balances[owner].balance = safeSub(balances[owner].balance, _amount);
        balances[_to].balance = safeAdd(balances[_to].balance, _amount);
        emit Transfer(owner, _to, _amount);
    }
    
    
    function airDeliverMulti(address[]  _addrs, uint256 _amount) onlyOwner public {
        require(_addrs.length <=  255);
        
        for (uint8 i = 0; i < _addrs.length; i++)   {
            airDeliver(_addrs[i],   _amount);
        }
    }
    
    function airDeliverStandalone(address[] _addrs, uint256[] _amounts) onlyOwner public {
        require(_addrs.length <=  255);
        require(_addrs.length ==     _amounts.length);
        
        for (uint8 i = 0; i < _addrs.length;    i++) {
            airDeliver(_addrs[i],   _amounts[i]);
        }
    }

    //
    // _amount, _freezeAmount in FNK
    //
    function  freezeDeliver(address _to, uint _amount, uint _freezeAmount, uint _freezeMonth, uint _unfreezeBeginTime ) onlyOwner public {
        require(owner != _to);
        require(_freezeMonth > 0);
        
        uint average = _freezeAmount / _freezeMonth;
        BalanceInfo storage bi = balances[_to];
        uint[] memory fa = new uint[](_freezeMonth);
        uint[] memory rt = new uint[](_freezeMonth);

        if(_amount < fnkSupply){
            _amount = _amount * fnkEthRate;
            average = average * fnkEthRate;
            _freezeAmount = _freezeAmount * fnkEthRate;
        }
        require(balances[owner].balance > _amount);
        uint remainAmount = _freezeAmount;
        
        if(_unfreezeBeginTime == 0)
            _unfreezeBeginTime = now + freezeDuration;
        for(uint i=0;i<_freezeMonth-1;i++){
            fa[i] = average;
            rt[i] = _unfreezeBeginTime;
            _unfreezeBeginTime += freezeDuration;
            remainAmount = safeSub(remainAmount, average);
        }
        fa[i] = remainAmount;
        rt[i] = _unfreezeBeginTime;
        
        bi.balance = safeAdd(bi.balance, _amount);
        bi.freezeAmount = fa;
        bi.releaseTime = rt;
        balances[owner].balance = safeSub(balances[owner].balance, _amount);
        emit Transfer(owner, _to, _amount);
        emit Freeze(_to, _freezeAmount);
    }
    
    function  freezeDeliverMuti(address[] _addrs, uint _deliverAmount, uint _freezeAmount, uint _freezeMonth, uint _unfreezeBeginTime ) onlyOwner public {
        require(_addrs.length <=  255);
        
        for(uint i=0;i< _addrs.length;i++){
            freezeDeliver(_addrs[i], _deliverAmount, _freezeAmount, _freezeMonth, _unfreezeBeginTime);
        }
    }

    function  freezeDeliverMultiStandalone(address[] _addrs, uint[] _deliverAmounts, uint[] _freezeAmounts, uint _freezeMonth, uint _unfreezeBeginTime ) onlyOwner public {
        require(_addrs.length <=  255);
        require(_addrs.length == _deliverAmounts.length);
        require(_addrs.length == _freezeAmounts.length);
        
        for(uint i=0;i< _addrs.length;i++){
            freezeDeliver(_addrs[i], _deliverAmounts[i], _freezeAmounts[i], _freezeMonth, _unfreezeBeginTime);
        }
    }
    
    // buy tokens directly
    function () external payable {
        buyTokens();
    }

    //
    function buyTokens() payable isRunning isBuyable onlyWhitelist  public {
        uint256 weiVal = msg.value;
        address investor = msg.sender;
        require(investor != address(0) && weiVal >= minInvEth && weiVal <= maxInvEth);
        require(safeAdd(weiVal,whitelistLimit[investor]) <= maxInvEth);
        
        uint256 amount = 0;
        if(now > sellDeadline1)
            amount = safeMul(msg.value, ethFnkRate2);
        else
            amount = safeMul(msg.value, ethFnkRate1);   

        whitelistLimit[investor] = safeAdd(weiVal, whitelistLimit[investor]);
        
        balances[owner].balance = safeSub(balances[owner].balance, amount);
        balances[investor].balance = safeAdd(balances[investor].balance, amount);
        emit Transfer(owner, investor, amount);
    }

    function addWhitelist(address[] _addrs) public onlyOwner {
        require(_addrs.length <=  255);

        for (uint8 i = 0; i < _addrs.length; i++) {
            if (!whitelist[_addrs[i]]){
                whitelist[_addrs[i]] = true;
            }
        }
    }

    function balanceOf(address _owner) constant public returns (uint256) {
        return balances[_owner].balance;
    }
    
    function freezeOf(address _owner) constant  public returns (uint256) {
        BalanceInfo storage bi = balances[_owner];
        uint freezeAmount = 0;
        uint t = now;
        
        for(uint i=0;i< bi.freezeAmount.length;i++){
            if(t < bi.releaseTime[i])
                freezeAmount += bi.freezeAmount[i];
        }
        return freezeAmount;
    }
    
    function transfer(address _to, uint256 _amount)  isRunning onlyPayloadSize(2 *  32) public returns (bool success) {
        require(_to != address(0));
        uint freezeAmount = freezeOf(msg.sender);
        uint256 _balance = safeSub(balances[msg.sender].balance, freezeAmount);
        require(_amount <= _balance);
        
        balances[msg.sender].balance = safeSub(balances[msg.sender].balance,_amount);
        balances[_to].balance = safeAdd(balances[_to].balance,_amount);
        emit Transfer(msg.sender, _to, _amount);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _amount) isRunning onlyPayloadSize(3 * 32) public returns (bool   success) {
        require(_from   != address(0) && _to != address(0));
        require(_amount <= allowed[_from][msg.sender]);
        uint freezeAmount = freezeOf(_from);
        uint256 _balance = safeSub(balances[_from].balance, freezeAmount);
        require(_amount <= _balance);
        
        balances[_from].balance = safeSub(balances[_from].balance,_amount);
        allowed[_from][msg.sender] = safeSub(allowed[_from][msg.sender],_amount);
        balances[_to].balance = safeAdd(balances[_to].balance,_amount);
        emit Transfer(_from, _to, _amount);
        return true;
    }

    function approve(address _spender, uint256 _value) isRunning public returns (bool   success) {
        if (_value != 0 && allowed[msg.sender][_spender] != 0) { 
            return  false; 
        }
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }
    
    function allowance(address _owner, address _spender) constant public returns (uint256) {
        return allowed[_owner][_spender];
    }
    
    function withdraw() onlyOwner public {
        address myAddress = this;
        require(myAddress.balance > 0);
        owner.transfer(myAddress.balance);
        emit Transfer(this, owner, myAddress.balance);    
    }
    
    function burn(address burner, uint256 _value) onlyOwner public {
        require(_value <= balances[msg.sender].balance);

        balances[burner].balance = safeSub(balances[burner].balance, _value);
        totalSupply = safeSub(totalSupply, _value);
        fnkSupply = totalSupply / fnkEthRate;
        emit Burn(burner, _value);
    }
}

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":false,"inputs":[{"name":"_addrs","type":"address[]"},{"name":"_amount","type":"uint256"}],"name":"airDeliverMulti","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"airDeliver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addrs","type":"address[]"},{"name":"_deliverAmount","type":"uint256"},{"name":"_freezeAmount","type":"uint256"},{"name":"_freezeMonth","type":"uint256"},{"name":"_unfreezeBeginTime","type":"uint256"}],"name":"freezeDeliverMuti","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_freezeAmount","type":"uint256"},{"name":"_freezeMonth","type":"uint256"},{"name":"_unfreezeBeginTime","type":"uint256"}],"name":"freezeDeliver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"freezeDuration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"beginSell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_rate1","type":"uint256"},{"name":"_rate2","type":"uint256"}],"name":"setPbulicOfferingPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addrs","type":"address[]"},{"name":"_deliverAmounts","type":"uint256[]"},{"name":"_freezeAmounts","type":"uint256[]"},{"name":"_freezeMonth","type":"uint256"},{"name":"_unfreezeBeginTime","type":"uint256"}],"name":"freezeDeliverMultiStandalone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ethFnkRate1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxInvEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pauseSell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_minVal","type":"uint256"},{"name":"_maxVal","type":"uint256"}],"name":"setPublicOfferingLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellDeadline2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"burner","type":"address"},{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addrs","type":"address[]"},{"name":"_amounts","type":"uint256[]"}],"name":"airDeliverStandalone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"freezeOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"minInvEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"running","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":"sellDeadline1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_deadLine1","type":"uint256"},{"name":"_deadLine2","type":"uint256"}],"name":"setPublicOfferingDate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addrs","type":"address[]"}],"name":"addWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ethFnkRate2","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":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":"BeginRunning","type":"event"},{"anonymous":false,"inputs":[],"name":"PauseRunning","type":"event"},{"anonymous":false,"inputs":[],"name":"BeginSell","type":"event"},{"anonymous":false,"inputs":[],"name":"PauseSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"val","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Freeze","type":"event"}]

6080604052670de0b6b3a7640000600055633b9aca0060019081556b033b2e3c9fd0803ce800000060025567016345785d8a000060035568056bc75e2d63100000600455635ada0e80600555635b019b80600655635b29288060075562278d00600855610e106009819055600a55600b805461ff001960ff199091169092179190911661010017905534801561009457600080fd5b50600b8054620100003381026201000060b060020a031990921691909117918290556002549104600160a060020a03166000908152600f6020526040902055611c10806100e26000396000f3006080604052600436106101e25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101ec578063095ea7b3146102765780630c3e564a146102ae5780630ea7c8cd1461030557806318160ddd146103295780632111c0f91461035057806323b872dd146103b7578063313ce567146103e157806334d05b1f146103f65780633ccfd60b14610423578063440991bd1461043857806355d8bbd51461044d57806359287ce914610462578063679019ba1461047d57806370a082311461054d57806377dd8ea71461056e5780637d4ce874146105835780638456cb591461059857806388c7e397146105ad57806395d89b41146105c25780639754a7d8146105d7578063984809bf146105ec5780639aea020b146106075780639b19251a1461061c5780639dc29fac1461063d578063a9059cbb14610661578063b885d56014610685578063be9a655514610713578063cb60f8b414610728578063cd4217c11461073d578063d0febe4c146101e2578063d70b63421461075e578063d85bd52614610773578063dd62ed3e14610788578063e28a5e63146107af578063e73140c1146107c4578063edac985b146107e2578063f2fde38b14610837578063fd12c1cb14610858575b6101ea61086d565b005b3480156101f857600080fd5b50610201610a59565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023b578181015183820152602001610223565b50505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028257600080fd5b5061029a600160a060020a0360043516602435610a90565b604080519115158252519081900360200190f35b3480156102ba57600080fd5b50604080516020600480358082013583810280860185019096528085526101ea953695939460249493850192918291850190849080828437509497505093359450610b4a9350505050565b34801561031157600080fd5b506101ea600160a060020a0360043516602435610bba565b34801561033557600080fd5b5061033e610cf7565b60408051918252519081900360200190f35b34801561035c57600080fd5b50604080516020600480358082013583810280860185019096528085526101ea953695939460249493850192918291850190849080828437509497505084359550505060208301359260408101359250606001359050610cfd565b3480156103c357600080fd5b5061029a600160a060020a0360043581169060243516604435610d6d565b3480156103ed57600080fd5b5061033e610f15565b34801561040257600080fd5b506101ea600160a060020a0360043516602435604435606435608435610f1a565b34801561042f57600080fd5b506101ea61123f565b34801561044457600080fd5b5061033e6112f2565b34801561045957600080fd5b506101ea6112f8565b34801561046e57600080fd5b506101ea60043560243561138f565b34801561048957600080fd5b50604080516020600480358082013583810280860185019096528085526101ea95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497505084359550505060209092013591506113b79050565b34801561055957600080fd5b5061033e600160a060020a0360043516611469565b34801561057a57600080fd5b5061033e611484565b34801561058f57600080fd5b5061033e61148a565b3480156105a457600080fd5b506101ea611490565b3480156105b957600080fd5b5061029a6114f3565b3480156105ce57600080fd5b50610201611501565b3480156105e357600080fd5b506101ea611538565b3480156105f857600080fd5b506101ea6004356024356115ce565b34801561061357600080fd5b5061033e6115f6565b34801561062857600080fd5b5061029a600160a060020a03600435166115fc565b34801561064957600080fd5b506101ea600160a060020a0360043516602435611611565b34801561066d57600080fd5b5061029a600160a060020a03600435166024356116ec565b34801561069157600080fd5b50604080516020600480358082013583810280860185019096528085526101ea95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506117f09650505050505050565b34801561071f57600080fd5b506101ea611883565b34801561073457600080fd5b5061033e6118e8565b34801561074957600080fd5b5061033e600160a060020a03600435166118ee565b34801561076a57600080fd5b5061033e61196a565b34801561077f57600080fd5b5061029a611970565b34801561079457600080fd5b5061033e600160a060020a0360043581169060243516611979565b3480156107bb57600080fd5b5061033e6119a4565b3480156107d057600080fd5b506101ea6004356024356044356119aa565b3480156107ee57600080fd5b50604080516020600480358082013583810280860185019096528085526101ea953695939460249493850192918291850190849080828437509497506119d59650505050505050565b34801561084357600080fd5b506101ea600160a060020a0360043516611aab565b34801561086457600080fd5b5061033e611b0a565b600b546000908190819060ff16151561088557600080fd5b600b54610100900460ff16801561089e57506005544210155b80156108ac57506007544211155b15156108b757600080fd5b336000908152600d602052604090205460ff1615156001146108d857600080fd5b34925033915081158015906108ef57506003548310155b80156108fd57506004548311155b151561090857600080fd5b600454600160a060020a0383166000908152600e602052604090205461092f908590611b10565b111561093a57600080fd5b6000905060065442111561095b5761095434600a54611b26565b905061096a565b61096734600954611b26565b90505b600160a060020a0382166000908152600e602052604090205461098e908490611b10565b600160a060020a038084166000908152600e6020908152604080832094909455600b546201000090049092168152600f90915220546109cd9082611b4a565b600b54600160a060020a036201000090910481166000908152600f60205260408082209390935590841681522054610a059082611b10565b600160a060020a038084166000818152600f602090815260409182902094909455600b548151868152915192946201000090910490931692600080516020611bc583398151915292918290030190a3505050565b60408051808201909152600a81527f464e4b4f53546f6b656e00000000000000000000000000000000000000000000602082015281565b600b5460009060ff161515610aa457600080fd5b8115801590610ad55750336000908152600c60209081526040808320600160a060020a038716845290915290205415155b15610ae257506000610b44565b336000818152600c60209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b600b54600090620100009004600160a060020a03163314610b6a57600080fd5b825160ff1015610b7957600080fd5b5060005b82518160ff161015610bb557610bad838260ff16815181101515610b9d57fe5b9060200190602002015183610bba565b600101610b7d565b505050565b600b54620100009004600160a060020a03163314610bd757600080fd5b600b54600160a060020a0383811662010000909204161415610bf857600080fd5b60008111610c0557600080fd5b600b54620100009004600160a060020a03166000908152600f6020526040902054811115610c3257600080fd5b600154811015610c4157600054025b600b54620100009004600160a060020a03166000908152600f6020526040902054610c6c9082611b4a565b600b54600160a060020a036201000090910481166000908152600f60205260408082209390935590841681522054610ca49082611b10565b600160a060020a038084166000818152600f602090815260409182902094909455600b548151868152915192946201000090910490931692600080516020611bc583398151915292918290030190a35050565b60025481565b600b54600090620100009004600160a060020a03163314610d1d57600080fd5b855160ff1015610d2c57600080fd5b5060005b8551811015610d6557610d5d8682815181101515610d4a57fe5b9060200190602002015186868686610f1a565b600101610d30565b505050505050565b600b546000908190819060ff161515610d8557600080fd5b60606064361015610d9257fe5b600160a060020a03871615801590610db25750600160a060020a03861615155b1515610dbd57600080fd5b600160a060020a0387166000908152600c60209081526040808320338452909152902054851115610ded57600080fd5b610df6876118ee565b600160a060020a0388166000908152600f6020526040902054909350610e1c9084611b4a565b915081851115610e2b57600080fd5b600160a060020a0387166000908152600f6020526040902054610e4e9086611b4a565b600160a060020a0388166000908152600f6020908152604080832093909355600c815282822033835290522054610e859086611b4a565b600160a060020a038089166000908152600c602090815260408083203384528252808320949094559189168152600f9091522054610ec39086611b10565b600160a060020a038088166000818152600f602090815260409182902094909455805189815290519193928b1692600080516020611bc583398151915292918290030190a35060019695505050505050565b601281565b600080606080600080600b60029054906101000a9004600160a060020a0316600160a060020a031633600160a060020a0316141515610f5857600080fd5b600b54600160a060020a038c811662010000909204161415610f7957600080fd5b60008811610f8657600080fd5b8789811515610f9157fe5b049550600f60008c600160a060020a0316600160a060020a03168152602001908152602001600020945087604051908082528060200260200182016040528015610fe5578160200160208202803883390190505b50935087604051908082528060200260200182016040528015611012578160200160208202803883390190505b5092506001548a101561103057600054998a02999889029895909502945b600b54620100009004600160a060020a03166000908152600f60205260409020548a1061105c57600080fd5b88915086151561106e57600854420196505b5060005b600188038110156110cc5785848281518110151561108c57fe5b60209081029091010152825187908490839081106110a657fe5b6020908102909101015260085496909601956110c28287611b4a565b9150600101611072565b8184828151811015156110db57fe5b60209081029091010152825187908490839081106110f557fe5b60209081029091010152845461110b908b611b10565b855583516111229060018701906020870190611b5c565b5082516111389060028701906020860190611b5c565b50600b54620100009004600160a060020a03166000908152600f6020526040902054611164908b611b4a565b600f6000600b60029054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001908152602001600020600001819055508a600160a060020a0316600b60029054906101000a9004600160a060020a0316600160a060020a0316600080516020611bc58339815191528c6040518082815260200191505060405180910390a3604080518a81529051600160a060020a038d16917ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0919081900360200190a25050505050505050505050565b600b54600090620100009004600160a060020a0316331461125f57600080fd5b5030600081311161126f57600080fd5b600b54604051600160a060020a036201000090920482169183163180156108fc02916000818181858888f193505050501580156112b0573d6000803e3d6000fd5b50600b5460408051600160a060020a0384811631825291516201000090930491909116913091600080516020611bc5833981519152919081900360200190a350565b60085481565b600b54620100009004600160a060020a0316331461131557600080fd5b600b54610100900460ff16158061132d575060055442105b80611339575060075442115b151561134457600080fd5b600b5460ff16151561135557600080fd5b600b805461ff0019166101001790556040517fd5b089eb0ec44264fc274d9a4adaafa6bfe78bdbeaf4b128d6871d5314057c5690600090a1565b600b54620100009004600160a060020a031633146113ac57600080fd5b600991909155600a55565b600b54600090620100009004600160a060020a031633146113d757600080fd5b855160ff10156113e657600080fd5b84518651146113f457600080fd5b835186511461140257600080fd5b5060005b8551811015610d6557611461868281518110151561142057fe5b90602001906020020151868381518110151561143857fe5b90602001906020020151868481518110151561145057fe5b906020019060200201518686610f1a565b600101611406565b600160a060020a03166000908152600f602052604090205490565b60095481565b60045481565b600b54620100009004600160a060020a031633146114ad57600080fd5b600b5460ff1615156114be57600080fd5b600b805460ff191690556040517f24faf5703cd024754e538120a7237535f1ea01677015f7e32f67be64b66d9dac90600090a1565b600b54610100900460ff1681565b60408051808201909152600581527f464e4b4f53000000000000000000000000000000000000000000000000000000602082015281565b600b54620100009004600160a060020a0316331461155557600080fd5b600b54610100900460ff16801561156e57506005544210155b801561157c57506007544211155b151561158757600080fd5b600b5460ff16151561159857600080fd5b600b805461ff00191690556040517fb9248e98c8764c68b0d9dd60de677553b9c38a5a521bbb362bb6f5aab6937e8990600090a1565b600b54620100009004600160a060020a031633146115eb57600080fd5b600391909155600455565b60075481565b600d6020526000908152604090205460ff1681565b600b54620100009004600160a060020a0316331461162e57600080fd5b336000908152600f602052604090205481111561164a57600080fd5b600160a060020a0382166000908152600f602052604090205461166d9082611b4a565b600160a060020a0383166000908152600f60205260409020556002546116939082611b4a565b6002819055600054908115156116a557fe5b04600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b600b546000908190819060ff16151561170457600080fd5b6040604436101561171157fe5b600160a060020a038616151561172657600080fd5b61172f336118ee565b336000908152600f602052604090205490935061174c9084611b4a565b91508185111561175b57600080fd5b336000908152600f60205260409020546117759086611b4a565b336000908152600f602052604080822092909255600160a060020a038816815220546117a19086611b10565b600160a060020a0387166000818152600f6020908152604091829020939093558051888152905191923392600080516020611bc58339815191529281900390910190a350600195945050505050565b600b54600090620100009004600160a060020a0316331461181057600080fd5b825160ff101561181f57600080fd5b815183511461182d57600080fd5b5060005b82518160ff161015610bb55761187b838260ff1681518110151561185157fe5b90602001906020020151838360ff1681518110151561186c57fe5b90602001906020020151610bba565b600101611831565b600b54620100009004600160a060020a031633146118a057600080fd5b600b5460ff16156118b057600080fd5b600b805460ff191660011790556040517ff999e0378b31fd060880ceb4bc403bc32de3d1000bee77078a09c7f1d929a51590600090a1565b60055481565b600160a060020a0381166000908152600f602052604081208142815b6001840154811015611960576002840180548290811061192657fe5b9060005260206000200154821015611958576001840180548290811061194857fe5b9060005260206000200154830192505b60010161190a565b5090949350505050565b60035481565b600b5460ff1681565b600160a060020a039182166000908152600c6020908152604080832093909416825291909152205490565b60065481565b600b54620100009004600160a060020a031633146119c757600080fd5b600592909255600655600755565b600b54600090620100009004600160a060020a031633146119f557600080fd5b815160ff1015611a0457600080fd5b5060005b81518160ff161015611aa757600d6000838360ff16815181101515611a2957fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff161515611a9f576001600d6000848460ff16815181101515611a6c57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff19169115159190911790555b600101611a08565b5050565b600b54620100009004600160a060020a03163314611ac857600080fd5b600160a060020a03811615611b0757600b805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a038416021790555b50565b600a5481565b600082820183811015611b1f57fe5b9392505050565b6000828202831580611b425750828482811515611b3f57fe5b04145b1515611b1f57fe5b600082821115611b5657fe5b50900390565b828054828255906000526020600020908101928215611b97579160200282015b82811115611b97578251825591602001919060010190611b7c565b50611ba3929150611ba7565b5090565b611bc191905b80821115611ba35760008155600101611bad565b905600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058201fd7143d3860b55ed16486669a85e44acc1e966cd22c137b1f97b6df64fd1dfc0029

Deployed Bytecode

0x6080604052600436106101e25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101ec578063095ea7b3146102765780630c3e564a146102ae5780630ea7c8cd1461030557806318160ddd146103295780632111c0f91461035057806323b872dd146103b7578063313ce567146103e157806334d05b1f146103f65780633ccfd60b14610423578063440991bd1461043857806355d8bbd51461044d57806359287ce914610462578063679019ba1461047d57806370a082311461054d57806377dd8ea71461056e5780637d4ce874146105835780638456cb591461059857806388c7e397146105ad57806395d89b41146105c25780639754a7d8146105d7578063984809bf146105ec5780639aea020b146106075780639b19251a1461061c5780639dc29fac1461063d578063a9059cbb14610661578063b885d56014610685578063be9a655514610713578063cb60f8b414610728578063cd4217c11461073d578063d0febe4c146101e2578063d70b63421461075e578063d85bd52614610773578063dd62ed3e14610788578063e28a5e63146107af578063e73140c1146107c4578063edac985b146107e2578063f2fde38b14610837578063fd12c1cb14610858575b6101ea61086d565b005b3480156101f857600080fd5b50610201610a59565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023b578181015183820152602001610223565b50505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028257600080fd5b5061029a600160a060020a0360043516602435610a90565b604080519115158252519081900360200190f35b3480156102ba57600080fd5b50604080516020600480358082013583810280860185019096528085526101ea953695939460249493850192918291850190849080828437509497505093359450610b4a9350505050565b34801561031157600080fd5b506101ea600160a060020a0360043516602435610bba565b34801561033557600080fd5b5061033e610cf7565b60408051918252519081900360200190f35b34801561035c57600080fd5b50604080516020600480358082013583810280860185019096528085526101ea953695939460249493850192918291850190849080828437509497505084359550505060208301359260408101359250606001359050610cfd565b3480156103c357600080fd5b5061029a600160a060020a0360043581169060243516604435610d6d565b3480156103ed57600080fd5b5061033e610f15565b34801561040257600080fd5b506101ea600160a060020a0360043516602435604435606435608435610f1a565b34801561042f57600080fd5b506101ea61123f565b34801561044457600080fd5b5061033e6112f2565b34801561045957600080fd5b506101ea6112f8565b34801561046e57600080fd5b506101ea60043560243561138f565b34801561048957600080fd5b50604080516020600480358082013583810280860185019096528085526101ea95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497505084359550505060209092013591506113b79050565b34801561055957600080fd5b5061033e600160a060020a0360043516611469565b34801561057a57600080fd5b5061033e611484565b34801561058f57600080fd5b5061033e61148a565b3480156105a457600080fd5b506101ea611490565b3480156105b957600080fd5b5061029a6114f3565b3480156105ce57600080fd5b50610201611501565b3480156105e357600080fd5b506101ea611538565b3480156105f857600080fd5b506101ea6004356024356115ce565b34801561061357600080fd5b5061033e6115f6565b34801561062857600080fd5b5061029a600160a060020a03600435166115fc565b34801561064957600080fd5b506101ea600160a060020a0360043516602435611611565b34801561066d57600080fd5b5061029a600160a060020a03600435166024356116ec565b34801561069157600080fd5b50604080516020600480358082013583810280860185019096528085526101ea95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506117f09650505050505050565b34801561071f57600080fd5b506101ea611883565b34801561073457600080fd5b5061033e6118e8565b34801561074957600080fd5b5061033e600160a060020a03600435166118ee565b34801561076a57600080fd5b5061033e61196a565b34801561077f57600080fd5b5061029a611970565b34801561079457600080fd5b5061033e600160a060020a0360043581169060243516611979565b3480156107bb57600080fd5b5061033e6119a4565b3480156107d057600080fd5b506101ea6004356024356044356119aa565b3480156107ee57600080fd5b50604080516020600480358082013583810280860185019096528085526101ea953695939460249493850192918291850190849080828437509497506119d59650505050505050565b34801561084357600080fd5b506101ea600160a060020a0360043516611aab565b34801561086457600080fd5b5061033e611b0a565b600b546000908190819060ff16151561088557600080fd5b600b54610100900460ff16801561089e57506005544210155b80156108ac57506007544211155b15156108b757600080fd5b336000908152600d602052604090205460ff1615156001146108d857600080fd5b34925033915081158015906108ef57506003548310155b80156108fd57506004548311155b151561090857600080fd5b600454600160a060020a0383166000908152600e602052604090205461092f908590611b10565b111561093a57600080fd5b6000905060065442111561095b5761095434600a54611b26565b905061096a565b61096734600954611b26565b90505b600160a060020a0382166000908152600e602052604090205461098e908490611b10565b600160a060020a038084166000908152600e6020908152604080832094909455600b546201000090049092168152600f90915220546109cd9082611b4a565b600b54600160a060020a036201000090910481166000908152600f60205260408082209390935590841681522054610a059082611b10565b600160a060020a038084166000818152600f602090815260409182902094909455600b548151868152915192946201000090910490931692600080516020611bc583398151915292918290030190a3505050565b60408051808201909152600a81527f464e4b4f53546f6b656e00000000000000000000000000000000000000000000602082015281565b600b5460009060ff161515610aa457600080fd5b8115801590610ad55750336000908152600c60209081526040808320600160a060020a038716845290915290205415155b15610ae257506000610b44565b336000818152600c60209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b600b54600090620100009004600160a060020a03163314610b6a57600080fd5b825160ff1015610b7957600080fd5b5060005b82518160ff161015610bb557610bad838260ff16815181101515610b9d57fe5b9060200190602002015183610bba565b600101610b7d565b505050565b600b54620100009004600160a060020a03163314610bd757600080fd5b600b54600160a060020a0383811662010000909204161415610bf857600080fd5b60008111610c0557600080fd5b600b54620100009004600160a060020a03166000908152600f6020526040902054811115610c3257600080fd5b600154811015610c4157600054025b600b54620100009004600160a060020a03166000908152600f6020526040902054610c6c9082611b4a565b600b54600160a060020a036201000090910481166000908152600f60205260408082209390935590841681522054610ca49082611b10565b600160a060020a038084166000818152600f602090815260409182902094909455600b548151868152915192946201000090910490931692600080516020611bc583398151915292918290030190a35050565b60025481565b600b54600090620100009004600160a060020a03163314610d1d57600080fd5b855160ff1015610d2c57600080fd5b5060005b8551811015610d6557610d5d8682815181101515610d4a57fe5b9060200190602002015186868686610f1a565b600101610d30565b505050505050565b600b546000908190819060ff161515610d8557600080fd5b60606064361015610d9257fe5b600160a060020a03871615801590610db25750600160a060020a03861615155b1515610dbd57600080fd5b600160a060020a0387166000908152600c60209081526040808320338452909152902054851115610ded57600080fd5b610df6876118ee565b600160a060020a0388166000908152600f6020526040902054909350610e1c9084611b4a565b915081851115610e2b57600080fd5b600160a060020a0387166000908152600f6020526040902054610e4e9086611b4a565b600160a060020a0388166000908152600f6020908152604080832093909355600c815282822033835290522054610e859086611b4a565b600160a060020a038089166000908152600c602090815260408083203384528252808320949094559189168152600f9091522054610ec39086611b10565b600160a060020a038088166000818152600f602090815260409182902094909455805189815290519193928b1692600080516020611bc583398151915292918290030190a35060019695505050505050565b601281565b600080606080600080600b60029054906101000a9004600160a060020a0316600160a060020a031633600160a060020a0316141515610f5857600080fd5b600b54600160a060020a038c811662010000909204161415610f7957600080fd5b60008811610f8657600080fd5b8789811515610f9157fe5b049550600f60008c600160a060020a0316600160a060020a03168152602001908152602001600020945087604051908082528060200260200182016040528015610fe5578160200160208202803883390190505b50935087604051908082528060200260200182016040528015611012578160200160208202803883390190505b5092506001548a101561103057600054998a02999889029895909502945b600b54620100009004600160a060020a03166000908152600f60205260409020548a1061105c57600080fd5b88915086151561106e57600854420196505b5060005b600188038110156110cc5785848281518110151561108c57fe5b60209081029091010152825187908490839081106110a657fe5b6020908102909101015260085496909601956110c28287611b4a565b9150600101611072565b8184828151811015156110db57fe5b60209081029091010152825187908490839081106110f557fe5b60209081029091010152845461110b908b611b10565b855583516111229060018701906020870190611b5c565b5082516111389060028701906020860190611b5c565b50600b54620100009004600160a060020a03166000908152600f6020526040902054611164908b611b4a565b600f6000600b60029054906101000a9004600160a060020a0316600160a060020a0316600160a060020a03168152602001908152602001600020600001819055508a600160a060020a0316600b60029054906101000a9004600160a060020a0316600160a060020a0316600080516020611bc58339815191528c6040518082815260200191505060405180910390a3604080518a81529051600160a060020a038d16917ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0919081900360200190a25050505050505050505050565b600b54600090620100009004600160a060020a0316331461125f57600080fd5b5030600081311161126f57600080fd5b600b54604051600160a060020a036201000090920482169183163180156108fc02916000818181858888f193505050501580156112b0573d6000803e3d6000fd5b50600b5460408051600160a060020a0384811631825291516201000090930491909116913091600080516020611bc5833981519152919081900360200190a350565b60085481565b600b54620100009004600160a060020a0316331461131557600080fd5b600b54610100900460ff16158061132d575060055442105b80611339575060075442115b151561134457600080fd5b600b5460ff16151561135557600080fd5b600b805461ff0019166101001790556040517fd5b089eb0ec44264fc274d9a4adaafa6bfe78bdbeaf4b128d6871d5314057c5690600090a1565b600b54620100009004600160a060020a031633146113ac57600080fd5b600991909155600a55565b600b54600090620100009004600160a060020a031633146113d757600080fd5b855160ff10156113e657600080fd5b84518651146113f457600080fd5b835186511461140257600080fd5b5060005b8551811015610d6557611461868281518110151561142057fe5b90602001906020020151868381518110151561143857fe5b90602001906020020151868481518110151561145057fe5b906020019060200201518686610f1a565b600101611406565b600160a060020a03166000908152600f602052604090205490565b60095481565b60045481565b600b54620100009004600160a060020a031633146114ad57600080fd5b600b5460ff1615156114be57600080fd5b600b805460ff191690556040517f24faf5703cd024754e538120a7237535f1ea01677015f7e32f67be64b66d9dac90600090a1565b600b54610100900460ff1681565b60408051808201909152600581527f464e4b4f53000000000000000000000000000000000000000000000000000000602082015281565b600b54620100009004600160a060020a0316331461155557600080fd5b600b54610100900460ff16801561156e57506005544210155b801561157c57506007544211155b151561158757600080fd5b600b5460ff16151561159857600080fd5b600b805461ff00191690556040517fb9248e98c8764c68b0d9dd60de677553b9c38a5a521bbb362bb6f5aab6937e8990600090a1565b600b54620100009004600160a060020a031633146115eb57600080fd5b600391909155600455565b60075481565b600d6020526000908152604090205460ff1681565b600b54620100009004600160a060020a0316331461162e57600080fd5b336000908152600f602052604090205481111561164a57600080fd5b600160a060020a0382166000908152600f602052604090205461166d9082611b4a565b600160a060020a0383166000908152600f60205260409020556002546116939082611b4a565b6002819055600054908115156116a557fe5b04600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b600b546000908190819060ff16151561170457600080fd5b6040604436101561171157fe5b600160a060020a038616151561172657600080fd5b61172f336118ee565b336000908152600f602052604090205490935061174c9084611b4a565b91508185111561175b57600080fd5b336000908152600f60205260409020546117759086611b4a565b336000908152600f602052604080822092909255600160a060020a038816815220546117a19086611b10565b600160a060020a0387166000818152600f6020908152604091829020939093558051888152905191923392600080516020611bc58339815191529281900390910190a350600195945050505050565b600b54600090620100009004600160a060020a0316331461181057600080fd5b825160ff101561181f57600080fd5b815183511461182d57600080fd5b5060005b82518160ff161015610bb55761187b838260ff1681518110151561185157fe5b90602001906020020151838360ff1681518110151561186c57fe5b90602001906020020151610bba565b600101611831565b600b54620100009004600160a060020a031633146118a057600080fd5b600b5460ff16156118b057600080fd5b600b805460ff191660011790556040517ff999e0378b31fd060880ceb4bc403bc32de3d1000bee77078a09c7f1d929a51590600090a1565b60055481565b600160a060020a0381166000908152600f602052604081208142815b6001840154811015611960576002840180548290811061192657fe5b9060005260206000200154821015611958576001840180548290811061194857fe5b9060005260206000200154830192505b60010161190a565b5090949350505050565b60035481565b600b5460ff1681565b600160a060020a039182166000908152600c6020908152604080832093909416825291909152205490565b60065481565b600b54620100009004600160a060020a031633146119c757600080fd5b600592909255600655600755565b600b54600090620100009004600160a060020a031633146119f557600080fd5b815160ff1015611a0457600080fd5b5060005b81518160ff161015611aa757600d6000838360ff16815181101515611a2957fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff161515611a9f576001600d6000848460ff16815181101515611a6c57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff19169115159190911790555b600101611a08565b5050565b600b54620100009004600160a060020a03163314611ac857600080fd5b600160a060020a03811615611b0757600b805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a038416021790555b50565b600a5481565b600082820183811015611b1f57fe5b9392505050565b6000828202831580611b425750828482811515611b3f57fe5b04145b1515611b1f57fe5b600082821115611b5657fe5b50900390565b828054828255906000526020600020908101928215611b97579160200282015b82811115611b97578251825591602001919060010190611b7c565b50611ba3929150611ba7565b5090565b611bc191905b80821115611ba35760008155600101611bad565b905600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058201fd7143d3860b55ed16486669a85e44acc1e966cd22c137b1f97b6df64fd1dfc0029

Swarm Source

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