Contract Overview | HitChain
Balance: 0 Ether
Ether Value: $0
Transactions: 12996 txns
Token Tracker: HitchainCoin (HIT)
Misc:
Address Watch: Add To Watch List
Contract Creator: 0xb825da24411e4739057d167199d4805caee779a4at txn 0xb0316e6850d161b2cbadc4d98c748c7cb99692f10c2b82e7d99348c492130375
 Latest 25 transactions from a total of 12996 transactions
(+1 PendingTxn)

TxHash Age From To Value [TxFee]
0x7d262d0f4f1aaefae29ee85ac497fd32d8a4d59831e3042e04f592be5df42273(pending)0xb1c4d71b6fdd79f324c06b91d6f5652f540eb3e7  IN  0x7995ab36bb307afa6a683c24a25d90dc1ea835660 Ether(Pending)
0x4ca867f8786ba2a45692db64b610998f61108c49c043a0851cbec32c5c09c6ec9 mins agoGate.io_1  IN   HitChain0 Ether0.0006482454
0x125e7d5e22149b51a342542a2b6842ba271e7eab0eae0388793b3768e513489c32 mins ago0xa48960e15b5e94887dab89a9a5c24deff3b94e0c  IN   HitChain0 Ether0.000259314
0xcc5eead945784c013f33f31113a811927646fe948fe81252848fea401be42f6337 mins ago0xcd3bc0c2ae6ef2ab859137da7b9fc6a3be31d51b  IN   HitChain0 Ether0.000259314
0x7c97f93cf3768ee257632d0011e9741b33fee63d2f21426f375ca7f53e54978644 mins ago0x6da19c9a97342d617d27c3632769fc84e1113f55  IN   HitChain0 Ether0.000534780447
0x61b71ffaa0dc594e99947c9e2715538ab2f969989f6ab87b3b1e718794ae06d645 mins ago0x6da19c9a97342d617d27c3632769fc84e1113f55  IN   HitChain0 Ether0.00054421589
0xed8878d6328c6ad63829727d6984237f4943114b12d47df19a79365c1a37df7248 mins ago0x5b7d3142c368d24e7e0bdefb4e9baac4ced30600  IN   HitChain0 Ether0.000259314
0x4bc5ba5a48908c9d9bbd196d027e9c45c2567f6d64dc4fbc8ab0917d17aec05056 mins ago0x6da19c9a97342d617d27c3632769fc84e1113f55  IN   HitChain0 Ether0.000378255503
0x278272cf878dda79b596e04010d2d030c72665fa3387353a33a71de3e3f7b6c357 mins ago0x6da19c9a97342d617d27c3632769fc84e1113f55  IN   HitChain0 Ether0.000351663456
0x1ae2d4375894cc5d9820676c8e38477fe9b01da491880d614dbac0408059bf211 hr 2 mins ago0x6da19c9a97342d617d27c3632769fc84e1113f55  IN   HitChain0 Ether0.000458748418
0x2d2ae4d02b452d4b516db7f2dbe25f98edd061f3e213a8c02b97c7ce36e842d41 hr 6 mins ago0xae913a0c0107e0def8adc70d3a54bd828164c0fa  IN   HitChain0 Ether0.000259314
0x4f5d2cfde024749b17dd38e4dd52818b11fb7818ad1daa262453556e0b5a91441 hr 7 mins ago0xe3d6e6f4c75813f6650fca215fd9d45c0ca649c7  IN   HitChain0 Ether0.000260018
0x2555111ce1e7e49f50f2f6a66de36ead318dd36c867d643c722137518afeb1471 hr 12 mins ago0x6da19c9a97342d617d27c3632769fc84e1113f55  IN   HitChain0 Ether0.000372078168
0xa796f8a2008fc711c728eeff589963c4508d7f42b87e1914eaf3adf82f6fa7e61 hr 16 mins ago0x6da19c9a97342d617d27c3632769fc84e1113f55  IN   HitChain0 Ether0.000357874606
0xbc9272d81faff56a698beba8d757d8af3f515ac1f2791b5022d93397c4252ac01 hr 16 mins ago0x556d5916ab0bf7df5c92a3e5711082ffe567d233  IN   HitChain0 Ether0.000259314
0x01fc0246de09023af2dce812f02503cb3c0f6d86157e9405ecd8888a8f9a9a4a1 hr 17 mins ago0x6da19c9a97342d617d27c3632769fc84e1113f55  IN   HitChain0 Ether0.00036527329
0x21df8064aad695b0ead06178f742fdf8f6ee624c77b6f8c96c62f94c3a21edcb1 hr 19 mins ago0x6da19c9a97342d617d27c3632769fc84e1113f55  IN   HitChain0 Ether0.000385049109
0x4728df7b479b3a7b393eaf5268ee7ac8ebf4ac315f49c276bb066df8c1f4d0651 hr 25 mins ago0x9c147937908f104388408c836edaac3a768e92c0  IN   HitChain0 Ether0.000259314
0x3cc0d2b80577cfad860d3df0fea2e5dc40a23edb17c47fce8e375fbf6cdce3841 hr 25 mins ago0x5befe4701be8028507385c329a23d28093194e84  IN   HitChain0 Ether0.001555884
0x34c4246266a1ae183e725d0b9481d14d73f480b9c91621e92efac76a58424d661 hr 28 mins ago0xf1bedaae9d58e2b8226f5fb220679aa01083dff3  IN   HitChain0 Ether0.000259314
0x6ef858aeebff4df054c2d44149e4d9209e659f1a6883e126db6f0fb70e616c641 hr 30 mins ago0x50dc0ff8a802116ac6f20aa1f7d0a7290345e975  IN   HitChain0 Ether0.000259314
0xe1a4ea93a0feac580ce90d8e98a93470cdc49c363214ed18d0f417133727accb1 hr 32 mins ago0x6da19c9a97342d617d27c3632769fc84e1113f55  IN   HitChain0 Ether0.000544866015
0x8a3e8ad934669e313f229dad2d709b41097af91160ee7147973738c5f66485961 hr 34 mins ago0x6da19c9a97342d617d27c3632769fc84e1113f55  IN   HitChain0 Ether0.00054421589
0xc36f35b7de21cc6f57d1b66526f5fb8e88dfd90d694494825d1d2d5acef43def1 hr 35 mins ago0x6da19c9a97342d617d27c3632769fc84e1113f55  IN   HitChain0 Ether0.000600828436
0x51d07a32f31e5dbe526426b77a7217257c4158b600c40e749cd838715aaa52dc1 hr 38 mins ago0x6da19c9a97342d617d27c3632769fc84e1113f55  IN   HitChain0 Ether0.000391192629
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: HitToken
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.24;


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

    /**
     * @dev Multiplies two numbers, throws on overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }

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

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

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

     

 

}


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


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


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

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


}

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


/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) public view returns (uint256);
    function transferFrom(address from, address to, uint256 value) public returns (bool);
    function approve(address spender, uint256 value) public returns (bool);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


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

    mapping(address => uint256) balances;

    uint256 public totalSupply_;

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

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

        // SafeMath.sub will throw 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 Gets the balance of the specified address.
     * @param _owner The address to query the the balance of.
     * @return An uint256 representing the amount owned by the passed address.
     */
    function balanceOf(address _owner) public view returns (uint256 balance) {
        return balances[_owner];
    }

}


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

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


    /**
     * @dev Transfer tokens from one address to another
     * @param _from address The address which you want to send tokens from
     * @param _to address The address which you want to transfer to
     * @param _value uint256 the amount of tokens to be transferred
     */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);
        require(_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. One possible solution to mitigate this
     * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     * @param _spender The address which will spend the funds.
     * @param _value The amount of tokens to be spent.
     */
    function approve(address _spender, uint256 _value) public returns (bool) {
        require(_value==0||allowed[msg.sender][_spender]==0);
        require(msg.data.length>=(2*32)+4);
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

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

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

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

}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
    event Pause();
    event Unpause();

    bool public paused = false;


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

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

    /**
     * @dev called by the owner to pause, triggers stopped state
     */
    function pause() onlyOwner whenNotPaused public {
        paused = true;
        emit Pause();
    }

    /**
     * @dev called by the owner to unpause, returns to normal state
     */
    function unpause() onlyOwner whenPaused public {
        paused = false;
        emit Unpause();
    }
}


/**
 * @title Pausable token
 * @dev StandardToken modified with pausable transfers.
 **/
contract PausableToken is StandardToken, Pausable {

    function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) {
        return super.transfer(_to, _value);
    }

    function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) {
        return super.transferFrom(_from, _to, _value);
    }

    function approve(address _spender, uint256 _value) public whenNotPaused returns (bool) {
        return super.approve(_spender, _value);
    }

    function increaseApproval(address _spender, uint _addedValue) public whenNotPaused returns (bool success) {
        return super.increaseApproval(_spender, _addedValue);
    }

    function decreaseApproval(address _spender, uint _subtractedValue) public whenNotPaused returns (bool success) {
        return super.decreaseApproval(_spender, _subtractedValue);
    }
}

/**
 * @title Lock token
 * @dev Lock  which is defined the lock logic
 **/
contract  Lock is PausableToken{

    mapping(address => uint256) public teamLockTime; // Lock start time
    mapping(address => uint256) public fundLockTime; // Lock start time
    uint256 public issueDate =0 ;//issueDate
    mapping(address => uint256) public teamLocked;// Total Team lock 
    mapping(address => uint256) public fundLocked;// Total fund lock
    mapping(address => uint256) public teamUsed;   // Team Used
    mapping(address => uint256) public fundUsed;   // Fund Used
    mapping(address => uint256) public teamReverse;   // Team reserve
    mapping(address => uint256) public fundReverse;   // Fund reserve
    

   /**
    * @dev Calculate the number of Tokens available for teamAccount
    * @param _to teamAccount's address
   */
    function teamAvailable(address _to) internal constant returns (uint256) {
        require(teamLockTime[_to]>0);
        //Cover the start time of the lock before the release is the issueDate
        if(teamLockTime[_to] != issueDate)
        {
            teamLockTime[_to]= issueDate;
        }
        uint256 now1 = block.timestamp;
        uint256 lockTime = teamLockTime[_to];
        uint256 time = now1.sub(lockTime);
        uint256 percent = 0;
        //locks team account for 1 year
        if(time >= 365 days) {
          percent =  (time.div(30 days)) .add(1);
        }
        percent = percent > 12 ? 12 : percent;
        uint256 avail = teamLocked[_to];
        require(avail>0);
        avail = avail.mul(percent).div(12).sub(teamUsed[_to]);
        return avail ;
    }
    
    /**
     * @dev Get the number of Tokens available for the current private fund account 
     * @param _to mainFundAccount's address
    **/
    function fundAvailable(address _to) internal constant returns (uint256) {
        require(fundLockTime[_to]>0);
        //Cover the start time of the lock before the release is the issueDate
        if(fundLockTime[_to] != issueDate)
        {
            fundLockTime[_to]= issueDate;
        }
        //The start time of the lock position
        uint256 lockTime = fundLockTime[_to];
        //The interval between the current time and the start time of the lockout
        uint256 time = block.timestamp.sub(lockTime);
        //Unlocked 25%
        uint256 percent = 250;
        //After more than 30 days, 75% of the minutes and 150 days of unlocking 5/1000 per day
        if(time >= 30 days) {
            percent = percent.add( (((time.sub(30 days)).div (1 days)).add (1)).mul (5));
        }
        percent = percent > 1000 ? 1000 : percent;
        uint256 avail = fundLocked[_to];
        require(avail>0);
        avail = avail.mul(percent).div(1000).sub(fundUsed[_to]);
        return avail ;
    }
    /**
      * @dev Team lock
      * @param _to  team lock account's address
      * @param _value the number of Token
     */
    function teamLock(address _to,uint256 _value) internal {
        require(_value>0);
        teamLocked[_to] = teamLocked[_to].add(_value);
        teamReverse[_to] = teamReverse[_to].add(_value);
        teamLockTime[_to] = block.timestamp;  // Lock start time
    }
    /**
      * @dev  Privately offered fund lock
      * @param _to  Privately offered fund account's address
      * @param _value the number of Token
     */
    function fundLock(address _to,uint256 _value) internal {
        require(_value>0);
        fundLocked[_to] =fundLocked[_to].add(_value);
        fundReverse[_to] = fundReverse[_to].add(_value);
        if(fundLockTime[_to] == 0)
          fundLockTime[_to] = block.timestamp;  // Lock start time
    }

    /**
     * @dev Team account transaction
     * @param _to  The accept token address
     * @param _value Number of transactions
     */
    function teamLockTransfer(address _to, uint256 _value) internal returns (bool) {
        //The remaining part
       uint256 availReverse = balances[msg.sender].sub((teamLocked[msg.sender].sub(teamUsed[msg.sender]))+(fundLocked[msg.sender].sub(fundUsed[msg.sender])));
       uint256 totalAvail=0;
       uint256 availTeam =0;
       if(issueDate==0)
        {
             totalAvail = availReverse;
        }
        else{
            //the number of Tokens available for teamAccount'Locked part
             availTeam = teamAvailable(msg.sender);
             //the number of Tokens available for teamAccount
             totalAvail = availTeam.add(availReverse);
        }
        require(_value <= totalAvail);
        bool ret = super.transfer(_to,_value);
        if(ret == true && issueDate>0) {
            //If over the teamAccount's released part
            if(_value > availTeam){
                teamUsed[msg.sender] = teamUsed[msg.sender].add(availTeam);
                 teamReverse[msg.sender] = teamReverse[msg.sender].sub(availTeam);
          }
            //If in the teamAccount's released part
            else{
                teamUsed[msg.sender] = teamUsed[msg.sender].add(_value);
                teamReverse[msg.sender] = teamReverse[msg.sender].sub(_value);
            }
        }
        if(teamUsed[msg.sender] >= teamLocked[msg.sender]){
            delete teamLockTime[msg.sender];
            delete teamReverse[msg.sender];
        }
        return ret;
    }

    /**
     * @dev Team account authorization transaction
     * @param _from The give token address
     * @param _to  The accept token address
     * @param _value Number of transactions
     */
    function teamLockTransferFrom(address _from,address _to, uint256 _value) internal returns (bool) {
       //The remaining part
       uint256 availReverse = balances[_from].sub((teamLocked[_from].sub(teamUsed[_from]))+(fundLocked[_from].sub(fundUsed[_from])));
       uint256 totalAvail=0;
       uint256 availTeam =0;
        if(issueDate==0)
        {
             totalAvail = availReverse;
        }
        else{
            //the number of Tokens available for teamAccount'Locked part
             availTeam = teamAvailable(_from);
              //the number of Tokens available for teamAccount
             totalAvail = availTeam.add(availReverse);
        }
       require(_value <= totalAvail);
        bool ret = super.transferFrom(_from,_to,_value);
        if(ret == true && issueDate>0) {
            //If over the teamAccount's released part
            if(_value > availTeam){
                teamUsed[_from] = teamUsed[_from].add(availTeam);
                teamReverse[_from] = teamReverse[_from].sub(availTeam);
           }
            //If in the teamAccount's released part
            else{
                teamUsed[_from] = teamUsed[_from].add(_value);
                teamReverse[_from] = teamReverse[_from].sub(_value);
            }
        }
        if(teamUsed[_from] >= teamLocked[_from]){
            delete teamLockTime[_from];
            delete teamReverse[_from];
        }
        return ret;
    }

    /**
     * @dev Privately Offered Fund Transfer Token
     * @param _to The accept token address
     * @param _value Number of transactions
     */
    function fundLockTransfer(address _to, uint256 _value) internal returns (bool) {
      //The remaining part
       uint256 availReverse = balances[msg.sender].sub((teamLocked[msg.sender].sub(teamUsed[msg.sender]))+(fundLocked[msg.sender].sub(fundUsed[msg.sender])));
       uint256 totalAvail=0;
       uint256 availFund = 0;
        if(issueDate==0)
        {
             totalAvail = availReverse;
        }
        else{
             require(now>issueDate);
            //the number of Tokens available for mainFundAccount'Locked part
             availFund = fundAvailable(msg.sender);
             //the number of Tokens available for mainFundAccount
             totalAvail = availFund.add(availReverse);
        }
        require(_value <= totalAvail);
        bool ret = super.transfer(_to,_value);
        if(ret == true && issueDate>0) {
            //If over the mainFundAccount's released part
            if(_value > availFund){
                fundUsed[msg.sender] = fundUsed[msg.sender].add(availFund);
                fundReverse[msg.sender] = fundReverse[msg.sender].sub(availFund);
             }
            //If in the mainFundAccount's released part
            else{
                fundUsed[msg.sender] =  fundUsed[msg.sender].add(_value);
                fundReverse[msg.sender] = fundReverse[msg.sender].sub(_value);
            }
        }
        if(fundUsed[msg.sender] >= fundLocked[msg.sender]){
            delete fundLockTime[msg.sender];
            delete fundReverse[msg.sender];
        }
        return ret;
    }


    /**
     * @dev Privately Offered Fund Transfer Token
     * @param _from The give token address
     * @param _to The accept token address
     * @param _value Number of transactions
     */
    function fundLockTransferFrom(address _from,address _to, uint256 _value) internal returns (bool) {
         //The remaining part
        uint256 availReverse =  balances[_from].sub((teamLocked[_from].sub(teamUsed[_from]))+(fundLocked[_from].sub(fundUsed[_from])));
        uint256 totalAvail=0;
        uint256 availFund = 0;
        if(issueDate==0)
         {
             totalAvail = availReverse;
        }
        else{
             require(now>issueDate);
             //the number of Tokens available for mainFundAccount'Locked part
             availFund = fundAvailable(_from);
              //the number of Tokens available for mainFundAccount
             totalAvail = availFund.add(availReverse);
         }
      
        require(_value <= totalAvail);
        bool ret = super.transferFrom(_from,_to,_value);
        if(ret == true && issueDate>0) {
           //If over the mainFundAccount's released part
            if(_value > availFund){
                fundUsed[_from] = fundUsed[_from].add(availFund);
                fundReverse[_from] = fundReverse[_from].sub(availFund);
            }
            //If in the mainFundAccount's released part
            else{
                fundUsed[_from] =  fundUsed[_from].add(_value);
                fundReverse[_from] = fundReverse[_from].sub(_value);
            }
        }
        if(fundUsed[_from] >= fundLocked[_from]){
            delete fundLockTime[_from];
        }
        return ret;
    }
}

/**
 * @title HitToken
 * @dev HitToken Contract
 **/
contract HitToken is Lock {
    string public name;
    string public symbol;
    uint8 public decimals;
    // Proportional accuracy
    uint256  public precentDecimal = 2;
    // mainFundPrecent
    uint256 public mainFundPrecent = 2650; 
    //subFundPrecent
    uint256 public subFundPrecent = 350; 
    //devTeamPrecent
    uint256 public devTeamPrecent = 1500;
    //hitFoundationPrecent
    uint256 public hitFoundationPrecent = 5500;
    //mainFundBalance
    uint256 public  mainFundBalance;
    //subFundBalance
    uint256 public subFundBalance;
    //devTeamBalance
    uint256 public  devTeamBalance;
    //hitFoundationBalance
    uint256 public hitFoundationBalance;
    //subFundAccount
    address public subFundAccount;
    //mainFundAccount
    address public mainFundAccount;
    

    /**
     *  @dev Contract constructor
     *  @param _name token's name
     *  @param _symbol token's symbol
     *  @param _decimals token's decimals
     *  @param _initialSupply token's initialSupply
     *  @param _teamAccount  teamAccount
     *  @param _subFundAccount subFundAccount
     *  @param _mainFundAccount mainFundAccount
     *  @param _hitFoundationAccount hitFoundationAccount
    */
    function HitToken(string _name, string _symbol, uint8 _decimals, uint256 _initialSupply,address _teamAccount,address _subFundAccount,address _mainFundAccount,address _hitFoundationAccount) public {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        //Define a subFundAccount
        subFundAccount = _subFundAccount;
        //Define a mainFundAccount
        mainFundAccount = _mainFundAccount;
        //Calculated according to accuracy, if the precision is 18, it is _initialSupply x 10 to the power of 18
        totalSupply_ = _initialSupply * 10 ** uint256(_decimals);
        //Calculate the total value of mainFund
        mainFundBalance =  totalSupply_.mul(mainFundPrecent).div(100* 10 ** precentDecimal) ;
        //Calculate the total value of subFund
        subFundBalance =  totalSupply_.mul(subFundPrecent).div(100* 10 ** precentDecimal);
        //Calculate the total value of devTeamBalance
        devTeamBalance =  totalSupply_.mul(devTeamPrecent).div(100* 10 ** precentDecimal);
        //Calculate the total value of  hitFoundationBalance
        hitFoundationBalance = totalSupply_.mul(hitFoundationPrecent).div(100* 10 ** precentDecimal) ;
        //Initially put the hitFoundationBalance into the hitFoundationAccount
        balances[_hitFoundationAccount] = hitFoundationBalance; 
        //Initially put the devTeamBalance into the teamAccount
        balances[_teamAccount] = devTeamBalance;
        //Initially put the subFundBalance into the subFundAccount
        balances[_subFundAccount] = subFundBalance;
         //Initially put the mainFundBalance into the mainFundAccount
        balances[_mainFundAccount]=mainFundBalance;
        //Initially lock the team account
        teamLock(_teamAccount,devTeamBalance);
        
    }

    /**
      * @dev destroy the msg sender's token onlyOwner
      * @param _value the number of the destroy token
     */
    function burn(uint256 _value) public onlyOwner returns (bool) {
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[address(0)] = balances[address(0)].add(_value);
        emit Transfer(msg.sender, address(0), _value);
        return true;
    }

    /**
     * @dev Transfer token
     * @param _to the accept token address
     * @param _value the number of transfer token
     */
    function transfer(address _to, uint256 _value) public returns (bool) {
        if(issueDate==0)
        {
             //the mainFundAccounts is not allowed to transfer before issued
            require(msg.sender != mainFundAccount);
        }

        if(teamLockTime[msg.sender] > 0){
             return super.teamLockTransfer(_to,_value);
            }else if(fundLockTime[msg.sender] > 0){
                return super.fundLockTransfer(_to,_value);
            }else {
               return super.transfer(_to, _value);
            
        }
    }

    /**
     * @dev Transfer token
     * @param _from the give token address
     * @param _to the accept token address
     * @param _value the number of transfer token
     */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
          if(issueDate==0)
        {
              //the mainFundAccounts is not allowed to transfer before issued
            require(_from != mainFundAccount);
        }
      
        if(teamLockTime[_from] > 0){
            return super.teamLockTransferFrom(_from,_to,_value);
        }else if(fundLockTime[_from] > 0 ){  
            return super.fundLockTransferFrom(_from,_to,_value);
        }else{
            return super.transferFrom(_from, _to, _value);
        }
    }

    /**
     *  @dev Privately offered Fund 
     *  @param _to the accept token address
     *  @param _value the number of transfer token
     */
    function mintFund(address _to, uint256 _value) public  returns (bool){
        require(msg.sender==mainFundAccount);
        require(mainFundBalance >0);
        require(_value >0);
        if(_value <= mainFundBalance){
            super.transfer(_to,_value);
            fundLock(_to,_value);
            mainFundBalance = mainFundBalance.sub(_value);
        }
    }

     /**
      * @dev Issue the token 
     */
     function issue() public onlyOwner  returns (uint){
         //Only one time 
         require(issueDate==0);
         issueDate = now;
         return now;
     }
     
     /**avoid mis-transfer*/
     function() public payable{
         revert();
     }
     
   
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"precentDecimal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"teamLocked","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"devTeamPrecent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"devTeamBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":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":"","type":"address"}],"name":"fundReverse","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"fundUsed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mainFundAccount","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hitFoundationPrecent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"fundLockTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hitFoundationBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"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":"mainFundBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"subFundPrecent","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":"subFundAccount","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"issueDate","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":"subFundBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"teamUsed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"issue","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"fundLocked","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"mintFund","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mainFundPrecent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"teamLockTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"teamReverse","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_decimals","type":"uint8"},{"name":"_initialSupply","type":"uint256"},{"name":"_teamAccount","type":"address"},{"name":"_subFundAccount","type":"address"},{"name":"_mainFundAccount","type":"address"},{"name":"_hitFoundationAccount","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60806040526000600360146101000a81548160ff02191690831515021790555060006006556002601055610a5a60115561015e6012556105dc60135561157c6014553480156200004e57600080fd5b506040516200494d3803806200494d833981018060405281019080805182019291906020018051820192919060200180519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600d90805190602001906200011592919062000692565b5086600e90805190602001906200012e92919062000692565b5085600f60006101000a81548160ff021916908360ff16021790555082601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560ff16600a0a85026001819055506200022c601054600a0a6064026200020f601154600154620004766401000000000262004195179091906401000000009004565b620004b5640100000000026200417a179091906401000000009004565b60158190555062000283601054600a0a60640262000266601254600154620004766401000000000262004195179091906401000000009004565b620004b5640100000000026200417a179091906401000000009004565b601681905550620002da601054600a0a606402620002bd601354600154620004766401000000000262004195179091906401000000009004565b620004b5640100000000026200417a179091906401000000009004565b60178190555062000331601054600a0a60640262000314601454600154620004766401000000000262004195179091906401000000009004565b620004b5640100000000026200417a179091906401000000009004565b6018819055506018546000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506017546000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506016546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506015546000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200046884601754620004d1640100000000026401000000009004565b505050505050505062000741565b60008060008414156200048d5760009150620004ae565b82840290508284828115156200049f57fe5b04141515620004aa57fe5b8091505b5092915050565b6000808284811515620004c457fe5b0490508091505092915050565b600081111515620004e157600080fd5b6200054381600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200067364010000000002620024f5179091906401000000009004565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620005e881600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200067364010000000002620024f5179091906401000000009004565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60008082840190508381101515156200068857fe5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006d557805160ff191683800117855562000706565b8280016001018555821562000706579182015b8281111562000705578251825591602001919060010190620006e8565b5b50905062000715919062000719565b5090565b6200073e91905b808211156200073a57600081600090555060010162000720565b5090565b90565b6141fc80620007516000396000f3006080604052600436106101e3576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806302e32144146101e8578063034eccd91461021357806306fdde031461026a578063095ea7b3146102fa57806314d206061461035f57806314fddb711461038a57806318160ddd146103b557806323b872dd146103e0578063276854e814610465578063313ce567146104bc578063324536eb146104ed57806332d58673146105185780633eb784201461056f5780633f4ba83a146105c657806341718066146105dd57806342966c681461060857806345d27f131461064d5780635c975abb146106a457806363c281a1146106d357806366188463146106fe57806370a08231146107635780637179d079146107ba5780637ac8dc26146107e55780638456cb5914610810578063877af5b4146108275780638d1343e01461087e5780638da5cb5b146108a957806395d89b411461090057806396d002a014610990578063a9059cbb146109bb578063c3be3ad914610a20578063d383f64614610a77578063d6589b5e14610aa2578063d73dd62314610af9578063dd62ed3e14610b5e578063e25d4dac14610bd5578063ececa52914610c3a578063f9c58b5714610c65578063fed0781d14610cbc575b600080fd5b3480156101f457600080fd5b506101fd610d13565b6040518082815260200191505060405180910390f35b34801561021f57600080fd5b50610254600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d19565b6040518082815260200191505060405180910390f35b34801561027657600080fd5b5061027f610d31565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102bf5780820151818401526020810190506102a4565b50505050905090810190601f1680156102ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030657600080fd5b50610345600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dcf565b604051808215151515815260200191505060405180910390f35b34801561036b57600080fd5b50610374610dff565b6040518082815260200191505060405180910390f35b34801561039657600080fd5b5061039f610e05565b6040518082815260200191505060405180910390f35b3480156103c157600080fd5b506103ca610e0b565b6040518082815260200191505060405180910390f35b3480156103ec57600080fd5b5061044b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e15565b604051808215151515815260200191505060405180910390f35b34801561047157600080fd5b506104a6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f48565b6040518082815260200191505060405180910390f35b3480156104c857600080fd5b506104d1610f60565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104f957600080fd5b50610502610f73565b6040518082815260200191505060405180910390f35b34801561052457600080fd5b50610559600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f79565b6040518082815260200191505060405180910390f35b34801561057b57600080fd5b50610584610f91565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105d257600080fd5b506105db610fb7565b005b3480156105e957600080fd5b506105f2611077565b6040518082815260200191505060405180910390f35b34801561061457600080fd5b506106336004803603810190808035906020019092919050505061107d565b604051808215151515815260200191505060405180910390f35b34801561065957600080fd5b5061068e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611270565b6040518082815260200191505060405180910390f35b3480156106b057600080fd5b506106b9611288565b604051808215151515815260200191505060405180910390f35b3480156106df57600080fd5b506106e861129b565b6040518082815260200191505060405180910390f35b34801561070a57600080fd5b50610749600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112a1565b604051808215151515815260200191505060405180910390f35b34801561076f57600080fd5b506107a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d1565b6040518082815260200191505060405180910390f35b3480156107c657600080fd5b506107cf611319565b6040518082815260200191505060405180910390f35b3480156107f157600080fd5b506107fa61131f565b6040518082815260200191505060405180910390f35b34801561081c57600080fd5b50610825611325565b005b34801561083357600080fd5b5061083c6113e6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561088a57600080fd5b5061089361140c565b6040518082815260200191505060405180910390f35b3480156108b557600080fd5b506108be611412565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561090c57600080fd5b50610915611438565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561095557808201518184015260208101905061093a565b50505050905090810190601f1680156109825780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561099c57600080fd5b506109a56114d6565b6040518082815260200191505060405180910390f35b3480156109c757600080fd5b50610a06600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114dc565b604051808215151515815260200191505060405180910390f35b348015610a2c57600080fd5b50610a61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061160b565b6040518082815260200191505060405180910390f35b348015610a8357600080fd5b50610a8c611623565b6040518082815260200191505060405180910390f35b348015610aae57600080fd5b50610ae3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061169f565b6040518082815260200191505060405180910390f35b348015610b0557600080fd5b50610b44600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116b7565b604051808215151515815260200191505060405180910390f35b348015610b6a57600080fd5b50610bbf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116e7565b6040518082815260200191505060405180910390f35b348015610be157600080fd5b50610c20600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061176e565b604051808215151515815260200191505060405180910390f35b348015610c4657600080fd5b50610c4f61182e565b6040518082815260200191505060405180910390f35b348015610c7157600080fd5b50610ca6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611834565b6040518082815260200191505060405180910390f35b348015610cc857600080fd5b50610cfd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061184c565b6040518082815260200191505060405180910390f35b60105481565b60076020528060005260406000206000915090505481565b600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dc75780601f10610d9c57610100808354040283529160200191610dc7565b820191906000526020600020905b815481529060010190602001808311610daa57829003601f168201915b505050505081565b6000600360149054906101000a900460ff16151515610ded57600080fd5b610df78383611864565b905092915050565b60135481565b60175481565b6000600154905090565b6000806006541415610e7f57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515610e7e57600080fd5b5b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610ed957610ed28484846119ff565b9050610f41565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610f3357610f2c848484611f6e565b9050610f41565b610f3e8484846124aa565b90505b9392505050565b600c6020528060005260406000206000915090505481565b600f60009054906101000a900460ff1681565b60015481565b600a6020528060005260406000206000915090505481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561101357600080fd5b600360149054906101000a900460ff16151561102e57600080fd5b6000600360146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60145481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110db57600080fd5b61112c826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111bf826000808073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f590919063ffffffff16565b6000808073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050919050565b60056020528060005260406000206000915090505481565b600360149054906101000a900460ff1681565b60185481565b6000600360149054906101000a900460ff161515156112bf57600080fd5b6112c98383612513565b905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60155481565b60125481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561138157600080fd5b600360149054906101000a900460ff1615151561139d57600080fd5b6001600360146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114ce5780601f106114a3576101008083540402835291602001916114ce565b820191906000526020600020905b8154815290600101906020018083116114b157829003601f168201915b505050505081565b60165481565b600080600654141561154657601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561154557600080fd5b5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561159f5761159883836127a4565b9050611605565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156115f8576115f18383612d11565b9050611605565b611602838361328e565b90505b92915050565b60096020528060005260406000206000915090505481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561168157600080fd5b600060065414151561169257600080fd5b4260068190555042905090565b60086020528060005260406000206000915090505481565b6000600360149054906101000a900460ff161515156116d557600080fd5b6116df83836132be565b905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117cc57600080fd5b60006015541115156117dd57600080fd5b6000821115156117ec57600080fd5b6015548211151561182857611801838361328e565b5061180c83836134ba565b611821826015546124dc90919063ffffffff16565b6015819055505b92915050565b60115481565b60046020528060005260406000206000915090505481565b600b6020528060005260406000206000915090505481565b6000808214806118f057506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15156118fb57600080fd5b604460003690501015151561190f57600080fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000806000806000611b7a611a9b600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b611b2c600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b016000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b9350600092506000915060006006541415611b9757839250611bb8565b611ba088613684565b9150611bb584836124f590919063ffffffff16565b92505b828611151515611bc757600080fd5b611bd28888886124aa565b905060011515811515148015611bea57506000600654115b15611e525781861115611d2657611c4982600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f590919063ffffffff16565b600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cde82600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e51565b611d7886600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f590919063ffffffff16565b600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e0d86600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b600b60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515611f6057600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090555b809450505050509392505050565b60008060008060006120e961200a600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b61209b600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b016000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b935060009250600091506000600654141561210657839250612137565b6006544211151561211657600080fd5b61211f886138ed565b915061213484836124f590919063ffffffff16565b92505b82861115151561214657600080fd5b6121518888886124aa565b90506001151581151514801561216957506000600654115b156123d157818611156122a5576121c882600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f590919063ffffffff16565b600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061225d82600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b600c60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123d0565b6122f786600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f590919063ffffffff16565b600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061238c86600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b600c60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151561249c57600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090555b809450505050509392505050565b6000600360149054906101000a900460ff161515156124c857600080fd5b6124d3848484613b8c565b90509392505050565b60008282111515156124ea57fe5b818303905092915050565b600080828401905083811015151561250957fe5b8091505092915050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115612624576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126b8565b61263783826124dc90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600080600080600061291f612840600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b6128d1600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b935060009250600091506000600654141561293c5783925061295d565b61294533613684565b915061295a84836124f590919063ffffffff16565b92505b82861115151561296c57600080fd5b612976878761328e565b90506001151581151514801561298e57506000600654115b15612bf65781861115612aca576129ed82600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f590919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a8282600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bf5565b612b1c86600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f590919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bb186600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515612d0457600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090555b8094505050505092915050565b6000806000806000612e8c612dad600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b612e3e600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b9350600092506000915060006006541415612ea957839250612eda565b60065442111515612eb957600080fd5b612ec2336138ed565b9150612ed784836124f590919063ffffffff16565b92505b828611151515612ee957600080fd5b612ef3878761328e565b905060011515811515148015612f0b57506000600654115b15613173578186111561304757612f6a82600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f590919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fff82600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613172565b61309986600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f590919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061312e86600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151561328157600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090555b8094505050505092915050565b6000600360149054906101000a900460ff161515156132ac57600080fd5b6132b68383613f46565b905092915050565b600061334f82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f590919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000811115156134c957600080fd5b61351b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f590919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135b081600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f590919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156136805742600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b6000806000806000806000600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115156136db57600080fd5b600654600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561376c57600654600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b429450600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205493506137c484866124dc90919063ffffffff16565b9250600091506301e13380831015156138035761380060016137f262278d008661417a90919063ffffffff16565b6124f590919063ffffffff16565b91505b600c82116138115781613814565b600c5b9150600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111151561386757600080fd5b6138de600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138d0600c6138c2868661419590919063ffffffff16565b61417a90919063ffffffff16565b6124dc90919063ffffffff16565b90508095505050505050919050565b600080600080600080600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561394257600080fd5b600654600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415156139d357600654600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549350613a2884426124dc90919063ffffffff16565b925060fa915062278d0083101515613aa057613a9d613a8e6005613a806001613a7262015180613a6462278d008b6124dc90919063ffffffff16565b61417a90919063ffffffff16565b6124f590919063ffffffff16565b61419590919063ffffffff16565b836124f590919063ffffffff16565b91505b6103e88211613aaf5781613ab3565b6103e85b9150600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111515613b0657600080fd5b613b7e600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b706103e8613b62868661419590919063ffffffff16565b61417a90919063ffffffff16565b6124dc90919063ffffffff16565b905080945050505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515613bc957600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515613c1657600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515613ca157600080fd5b613cf2826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d85826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f590919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e5682600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60006044600036905010151515613f5c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515613f9857600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515613fe557600080fd5b614036826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124dc90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140c9826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f590919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600080828481151561418857fe5b0490508091505092915050565b60008060008414156141aa57600091506141c9565b82840290508284828115156141bb57fe5b041415156141c557fe5b8091505b50929150505600a165627a7a72305820676434478c69f86a8067b1c42d2995e7cd0679e5e762b0b8762bb3c76aecbaab002900000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000017d78400000000000000000000000000004f9796c1703d06c94879e8fdce7f2e9d8efc5ca5000000000000000000000000cbb34db76dcbcc86c533ddf73ea9c64df7c1a2e60000000000000000000000005bd2ccc18f4687482468a0038ccd6512acbdbeca000000000000000000000000e1a18721289857dca6ca9308704be4f6fc0d462a000000000000000000000000000000000000000000000000000000000000000c486974636861696e436f696e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034849540000000000000000000000000000000000000000000000000000000000

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

-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [3] : 00000000000000000000000000000000000000000000000000000017d7840000
Arg [4] : 0000000000000000000000004f9796c1703d06c94879e8fdce7f2e9d8efc5ca5
Arg [5] : 000000000000000000000000cbb34db76dcbcc86c533ddf73ea9c64df7c1a2e6
Arg [6] : 0000000000000000000000005bd2ccc18f4687482468a0038ccd6512acbdbeca
Arg [7] : 000000000000000000000000e1a18721289857dca6ca9308704be4f6fc0d462a
Arg [8] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [9] : 486974636861696e436f696e0000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [11] : 4849540000000000000000000000000000000000000000000000000000000000


   Swarm Source:
bzzr://676434478c69f86a8067b1c42d2995e7cd0679e5e762b0b8762bb3c76aecbaab

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.