ETH Price: $3,605.75 (+4.63%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Lock Unsold Toke...47216852017-12-12 20:33:012579 days ago1513110781IN
Leverj: Token Sale
0 ETH0.07490615110
Remove Transfer ...47212852017-12-12 18:45:562579 days ago1513104356IN
Leverj: Token Sale
0 ETH0.00331903110
Reverse Purchase47165502017-12-11 22:54:532580 days ago1513032893IN
Leverj: Token Sale
0.00000001 ETH0.00472659110
Reverse Purchase47165352017-12-11 22:50:362580 days ago1513032636IN
Leverj: Token Sale
0.05999999 ETH0.00472659110
Reverse Purchase47165002017-12-11 22:43:362580 days ago1513032216IN
Leverj: Token Sale
0.05999999 ETH0.00472659110
Reverse Purchase47164622017-12-11 22:34:062580 days ago1513031646IN
Leverj: Token Sale
0.00599999 ETH0.00472659110
Reverse Purchase47164412017-12-11 22:28:402580 days ago1513031320IN
Leverj: Token Sale
0.00000007 ETH0.00289905110
Reverse Purchase47164232017-12-11 22:24:492580 days ago1513031089IN
Leverj: Token Sale
0 ETH0.005271200
Reverse Purchase47164072017-12-11 22:21:212580 days ago1513030881IN
Leverj: Token Sale
0 ETH0.005271200
Reverse Purchase47164022017-12-11 22:19:452580 days ago1513030785IN
Leverj: Token Sale
0 ETH0.005271200
Reverse Purchase47163922017-12-11 22:17:522580 days ago1513030672IN
Leverj: Token Sale
0 ETH0.005271200
Reverse Purchase47163702017-12-11 22:14:022580 days ago1513030442IN
Leverj: Token Sale
0 ETH0.005271200
Reverse Purchase47161772017-12-11 21:24:242580 days ago1513027464IN
Leverj: Token Sale
0 ETH0.0026355100
Transfer47117162017-12-11 2:39:212580 days ago1512959961IN
Leverj: Token Sale
0.4 ETH0.0002104310
Purchase Tokens47110492017-12-10 23:54:352581 days ago1512950075IN
Leverj: Token Sale
0.02 ETH0.0002258710
Purchase Tokens47108632017-12-10 23:11:352581 days ago1512947495IN
Leverj: Token Sale
1.11 ETH0.0002281210.1
Purchase Tokens47076182017-12-10 9:51:372581 days ago1512899497IN
Leverj: Token Sale
0.2 ETH0.0004517420
Purchase Tokens47072992017-12-10 8:36:242581 days ago1512894984IN
Leverj: Token Sale
2.8 ETH0.0004743221
Purchase Tokens46896242017-12-07 7:24:492584 days ago1512631489IN
Leverj: Token Sale
20 ETH0.0013552260
Purchase Tokens46896072017-12-07 7:20:332584 days ago1512631233IN
Leverj: Token Sale
20 ETH0.0011112849.2
Purchase Tokens46877362017-12-06 23:25:222585 days ago1512602722IN
Leverj: Token Sale
1 ETH0.000310
Add Whitelist46877352017-12-06 23:25:092585 days ago1512602709IN
Leverj: Token Sale
0 ETH0.0046154570
Add Whitelist46875412017-12-06 22:40:022585 days ago1512600002IN
Leverj: Token Sale
0 ETH0.0046199370
Add Whitelist46874912017-12-06 22:26:542585 days ago1512599214IN
Leverj: Token Sale
0 ETH0.0046199370
Add Whitelist46874722017-12-06 22:21:082585 days ago1512598868IN
Leverj: Token Sale
0 ETH0.0046199370
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
47216852017-12-12 20:33:012579 days ago1513110781
Leverj: Token Sale
 Contract Creation0 ETH
47165502017-12-11 22:54:532580 days ago1513032893
Leverj: Token Sale
0 ETH
47165502017-12-11 22:54:532580 days ago1513032893
Leverj: Token Sale
0.00000001 ETH
47165352017-12-11 22:50:362580 days ago1513032636
Leverj: Token Sale
0.03999999 ETH
47165352017-12-11 22:50:362580 days ago1513032636
Leverj: Token Sale
0.01999999 ETH
47165002017-12-11 22:43:362580 days ago1513032216
Leverj: Token Sale
0.04999999 ETH
47165002017-12-11 22:43:362580 days ago1513032216
Leverj: Token Sale
0.01 ETH
47164622017-12-11 22:34:062580 days ago1513031646
Leverj: Token Sale
0.00499999 ETH
47164622017-12-11 22:34:062580 days ago1513031646
Leverj: Token Sale
0.001 ETH
46872222017-12-06 21:12:452585 days ago1512594765
Leverj: Token Sale
0.06999999 ETH
46872222017-12-06 21:12:452585 days ago1512594765
Leverj: Token Sale
0 ETH
46872142017-12-06 21:11:022585 days ago1512594662
Leverj: Token Sale
0.99999999 ETH
46872142017-12-06 21:11:022585 days ago1512594662
Leverj: Token Sale
1 wei
46862262017-12-06 17:01:562585 days ago1512579716
Leverj: Token Sale
0.02999999 ETH
46862262017-12-06 17:01:562585 days ago1512579716
Leverj: Token Sale
0 ETH
46856712017-12-06 14:32:562585 days ago1512570776
Leverj: Token Sale
1.53522238 ETH
46856712017-12-06 14:32:562585 days ago1512570776
Leverj: Token Sale
0 ETH
46853982017-12-06 13:17:132585 days ago1512566233
Leverj: Token Sale
0.99999999 ETH
46853982017-12-06 13:17:132585 days ago1512566233
Leverj: Token Sale
1 wei
46848052017-12-06 10:42:222585 days ago1512556942
Leverj: Token Sale
0.99999999 ETH
46848052017-12-06 10:42:222585 days ago1512556942
Leverj: Token Sale
1 wei
46846522017-12-06 10:00:192585 days ago1512554419
Leverj: Token Sale
0.49999999 ETH
46846522017-12-06 10:00:192585 days ago1512554419
Leverj: Token Sale
0 ETH
46845532017-12-06 9:33:202585 days ago1512552800
Leverj: Token Sale
2.99999999 ETH
46845532017-12-06 9:33:202585 days ago1512552800
Leverj: Token Sale
3 wei
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Sale

Compiler Version
v0.4.17+commit.bdeb9e52

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-11-07
*/

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

  function div(uint256 a, uint256 b) pure internal  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;
  }

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

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

contract Token {
    /* This is a slight change to the ERC20 base standard.
    function totalSupply() constant returns (uint256 supply);
    is replaced with:
    uint256 public totalSupply;
    This automatically creates a getter function for the totalSupply.
    This is moved to the base contract since public getter functions are not
    currently recognised as an implementation of the matching abstract
    function by the compiler.
    */
    /// total amount of tokens
    uint256 public totalSupply;
    address public sale;
    bool public transfersAllowed;
    
    /// @param _owner The address from which the balance will be retrieved
    /// @return The balance
    function balanceOf(address _owner) constant public returns (uint256 balance);

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

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

    /// @notice `msg.sender` approves `_spender` to spend `_value` tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @param _value The amount of tokens to be approved for transfer
    /// @return Whether the approval was successful or not
    function approve(address _spender, uint256 _value) public returns (bool success);

    /// @param _owner The address of the account owning tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @return Amount of remaining tokens allowed to spent
    function allowance(address _owner, address _spender) constant public returns (uint256 remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

contract StandardToken is Token {

    function transfer(address _to, uint256 _value)
        public
        validTransfer
       	returns (bool success) 
    {
        //Default assumes totalSupply can't be over max (2^256 - 1).
        //If your token leaves out totalSupply and can issue more tokens as time goes on, you need to check if it doesn't wrap.
        //Replace the if with this one instead.
        //require(balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]);
    	require(balances[msg.sender] >= _value);
        balances[msg.sender] = SafeMath.sub(balances[msg.sender], _value);
        balances[_to] = SafeMath.add(balances[_to],_value);
        Transfer(msg.sender, _to, _value);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value)
        public
        validTransfer
      	returns (bool success)
      {
        //same as above. Replace this line with the following if you want to protect against wrapping uints.
        //require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]);
	    require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value);
        balances[_to] = SafeMath.add(balances[_to], _value);
        balances[_from] = SafeMath.sub(balances[_from], _value);
        allowed[_from][msg.sender] = SafeMath.sub(allowed[_from][msg.sender], _value);
        Transfer(_from, _to, _value);
        return true;
    }

    function balanceOf(address _owner) public constant returns (uint256 balance) {
        return balances[_owner];
    }

    function approve(address _spender, uint256 _value) public returns (bool success) {
        require(balances[msg.sender] >= _value);
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {
      return allowed[_owner][_spender];
    }

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

    modifier validTransfer()
    {
        require(msg.sender == sale || transfersAllowed);
        _;
    }   
}

contract HumanStandardToken is StandardToken {

    /* Public variables of the token */

    /*
    NOTE:
    The following variables are OPTIONAL vanities. One does not have to include them.
    They allow one to customise the token contract & in no way influences the core functionality.
    Some wallets/interfaces might not even bother to look at this information.
    */
    string public name;                   //fancy name: eg Simon Bucks
    uint8 public decimals;                //How many decimals to show. ie. There could 1000 base units with 3 decimals. Meaning 0.980 SBX = 980 base units. It's like comparing 1 wei to 1 ether.
    string public symbol;                 //An identifier: eg SBX
    string public version = 'H0.1';       //human 0.1 standard. Just an arbitrary versioning scheme.

    function HumanStandardToken(
        uint256 _initialAmount,
        string _tokenName,
        uint8 _decimalUnits,
        string _tokenSymbol,
        address _sale)
        public
    {
        balances[msg.sender] = _initialAmount;               // Give the creator all initial tokens
        totalSupply = _initialAmount;                        // Update total supply
        name = _tokenName;                                   // Set the name for display purposes
        decimals = _decimalUnits;                            // Amount of decimals for display purposes
        symbol = _tokenSymbol;                               // Set the symbol for display purposes
        sale = _sale;
        transfersAllowed = false;
    }

    /* Approves and then calls the receiving contract */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData) public returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);

        //call the receiveApproval function on the contract you want to be notified. This crafts the function signature manually so one doesn't have to include a contract in here just for this.
        //receiveApproval(address _from, uint256 _value, address _tokenContract, bytes _extraData)
        //it is assumed that when does this that the call *should* succeed, otherwise one would use vanilla approve instead.
        require(_spender.call(bytes4(bytes32(keccak256("receiveApproval(address,uint256,address,bytes)"))), msg.sender, _value, this, _extraData));
        return true;
    }

    function reversePurchase(address _tokenHolder)
        public
        onlySale
    {
        require(!transfersAllowed);
        uint value = balances[_tokenHolder];
        balances[_tokenHolder] = SafeMath.sub(balances[_tokenHolder], value);
        balances[sale] = SafeMath.add(balances[sale], value);
        Transfer(_tokenHolder, sale, value);
    }

    function removeTransferLock()
        public
        onlySale
    {
        transfersAllowed = true;
    }

    modifier onlySale()
    {
        require(msg.sender == sale);
        _;
    }
}

contract Disbursement {

    /*
     *  Storage
     */
    address public owner;
    address public receiver;
    uint public disbursementPeriod;
    uint public startDate;
    uint public withdrawnTokens;
    Token public token;

    /*
     *  Modifiers
     */
    modifier isOwner() {
        if (msg.sender != owner)
            // Only owner is allowed to proceed
            revert();
        _;
    }

    modifier isReceiver() {
        if (msg.sender != receiver)
            // Only receiver is allowed to proceed
            revert();
        _;
    }

    modifier isSetUp() {
        if (address(token) == 0)
            // Contract is not set up
            revert();
        _;
    }

    /*
     *  Public functions
     */
    /// @dev Constructor function sets contract owner
    /// @param _receiver Receiver of vested tokens
    /// @param _disbursementPeriod Vesting period in seconds
    /// @param _startDate Start date of disbursement period (cliff)
    function Disbursement(address _receiver, uint _disbursementPeriod, uint _startDate)
        public
    {
        if (_receiver == 0 || _disbursementPeriod == 0)
            // Arguments are null
            revert();
        owner = msg.sender;
        receiver = _receiver;
        disbursementPeriod = _disbursementPeriod;
        startDate = _startDate;
        if (startDate == 0)
            startDate = now;
    }

    /// @dev Setup function sets external contracts' addresses
    /// @param _token Token address
    function setup(Token _token)
        public
        isOwner
    {
        if (address(token) != 0 || address(_token) == 0)
            // Setup was executed already or address is null
            revert();
        token = _token;
    }

    /// @dev Transfers tokens to a given address
    /// @param _to Address of token receiver
    /// @param _value Number of tokens to transfer
    function withdraw(address _to, uint256 _value)
        public
        isReceiver
        isSetUp
    {
        uint maxTokens = calcMaxWithdraw();
        if (_value > maxTokens)
            revert();
        withdrawnTokens = SafeMath.add(withdrawnTokens, _value);
        token.transfer(_to, _value);
    }

    /// @dev Calculates the maximum amount of vested tokens
    /// @return Number of vested tokens to withdraw
    function calcMaxWithdraw()
        public
        constant
        returns (uint)
    {
        uint maxTokens = SafeMath.mul(SafeMath.add(token.balanceOf(this), withdrawnTokens), SafeMath.sub(now,startDate)) / disbursementPeriod;
        //uint maxTokens = (token.balanceOf(this) + withdrawnTokens) * (now - startDate) / disbursementPeriod;
        if (withdrawnTokens >= maxTokens || startDate > now)
            return 0;
        if (SafeMath.sub(maxTokens, withdrawnTokens) > token.totalSupply())
            return token.totalSupply();
        return SafeMath.sub(maxTokens, withdrawnTokens);
    }
}

contract Sale {

    // EVENTS
    event TransferredTimelockedTokens(address beneficiary, address disbursement,uint beneficiaryTokens);
    event PurchasedTokens(address indexed purchaser, uint amount);
    event LockedUnsoldTokens(uint numTokensLocked, address disburser);

    // STORAGE
    uint public constant TOTAL_SUPPLY = 1000000000000000000;
    uint public constant MAX_PRIVATE = 750200000000000000;

    uint8 public constant DECIMALS = 9;
    string public constant NAME = "Leverj";
    string public constant SYMBOL = "LEV";
    address public owner;
    address public whitelistAdmin;
    address public wallet;
    HumanStandardToken public token;
    uint public freezeBlock;
    uint public startBlock;
    uint public endBlock;
    uint public price_in_wei = 333333; //wei per 10**-9 of a LEV!
    uint public privateAllocated = 0;
    bool public setupCompleteFlag = false;
    bool public emergencyFlag = false;
    address[] public disbursements;
    mapping(address => uint) public whitelistRegistrants;
    mapping(address => bool) public whitelistRegistrantsFlag;
    bool public publicSale = false;

    // PUBLIC FUNCTIONS
    function Sale(
        address _owner,
        uint _freezeBlock,
        uint _startBlock,
        uint _endBlock,
        address _whitelistAdmin)
        public 
        checkBlockNumberInputs(_freezeBlock, _startBlock, _endBlock)
    {
        owner = _owner;
        whitelistAdmin = _whitelistAdmin;
        token = new HumanStandardToken(TOTAL_SUPPLY, NAME, DECIMALS, SYMBOL, address(this));
        freezeBlock = _freezeBlock;
        startBlock = _startBlock;
        endBlock = _endBlock;
        assert(token.transfer(this, token.totalSupply()));
        assert(token.balanceOf(this) == token.totalSupply());
        assert(token.balanceOf(this) == TOTAL_SUPPLY);
    }

    function purchaseTokens()
        public
        payable
        setupComplete
        notInEmergency
        saleInProgress
    {
        require(whitelistRegistrantsFlag[msg.sender] == true);
        /* Calculate whether any of the msg.value needs to be returned to
           the sender. The purchaseAmount is the actual number of tokens which
           will be purchased. */
        uint purchaseAmount = msg.value / price_in_wei; 
        uint excessAmount = msg.value % price_in_wei;

        if (!publicSale){
            require(whitelistRegistrants[msg.sender] > 0 );
            uint tempWhitelistAmount = whitelistRegistrants[msg.sender];
            if (purchaseAmount > whitelistRegistrants[msg.sender]){
                uint extra = SafeMath.sub(purchaseAmount,whitelistRegistrants[msg.sender]);
                purchaseAmount = whitelistRegistrants[msg.sender];
                excessAmount = SafeMath.add(excessAmount,extra*price_in_wei);
            }
            whitelistRegistrants[msg.sender] = SafeMath.sub(whitelistRegistrants[msg.sender], purchaseAmount);
            assert(whitelistRegistrants[msg.sender] < tempWhitelistAmount);
        }  

        // Cannot purchase more tokens than this contract has available to sell
        require(purchaseAmount <= token.balanceOf(this));
        // Return any excess msg.value
        if (excessAmount > 0){
            msg.sender.transfer(excessAmount);
        }
        // Forward received ether minus any excessAmount to the wallet
        wallet.transfer(this.balance);
        // Transfer the sum of tokens tokenPurchase to the msg.sender
        assert(token.transfer(msg.sender, purchaseAmount));
        PurchasedTokens(msg.sender, purchaseAmount);
    }

    function lockUnsoldTokens(address _unsoldTokensWallet)
        public
        saleEnded
        setupComplete
        onlyOwner
    {
        Disbursement disbursement = new Disbursement(
            _unsoldTokensWallet,
            1*365*24*60*60,
            block.timestamp
        );
        disbursement.setup(token);
        uint amountToLock = token.balanceOf(this);
        disbursements.push(disbursement);
        token.transfer(disbursement, amountToLock);
        LockedUnsoldTokens(amountToLock, disbursement);
    }

    // OWNER-ONLY FUNCTIONS
    function distributeTimelockedTokens(
        address[] _beneficiaries,
        uint[] _beneficiariesTokens,
        uint[] _timelockStarts,
        uint[] _periods
    ) 
        public
        onlyOwner
        saleNotEnded
    { 
        assert(!setupCompleteFlag);
        assert(_beneficiariesTokens.length < 11);
        assert(_beneficiaries.length == _beneficiariesTokens.length);
        assert(_beneficiariesTokens.length == _timelockStarts.length);
        assert(_timelockStarts.length == _periods.length);
        for(uint i = 0; i < _beneficiaries.length; i++) {
            require(privateAllocated + _beneficiariesTokens[i] <= MAX_PRIVATE);
            privateAllocated = SafeMath.add(privateAllocated, _beneficiariesTokens[i]);
            address beneficiary = _beneficiaries[i];
            uint beneficiaryTokens = _beneficiariesTokens[i];
            Disbursement disbursement = new Disbursement(
                beneficiary,
                _periods[i],
                _timelockStarts[i]
            );
            disbursement.setup(token);
            token.transfer(disbursement, beneficiaryTokens);
            disbursements.push(disbursement);
            TransferredTimelockedTokens(beneficiary, disbursement, beneficiaryTokens);
        }
        assert(token.balanceOf(this) >= (SafeMath.sub(TOTAL_SUPPLY, MAX_PRIVATE)));
    }

    function distributePresaleTokens(address[] _buyers, uint[] _amounts)
        public
        onlyOwner
        saleNotEnded
    {
        assert(!setupCompleteFlag);
        require(_buyers.length < 11);
        require(_buyers.length == _amounts.length);
        for(uint i=0; i < _buyers.length; i++){
            require(SafeMath.add(privateAllocated, _amounts[i]) <= MAX_PRIVATE);
            assert(token.transfer(_buyers[i], _amounts[i]));
            privateAllocated = SafeMath.add(privateAllocated, _amounts[i]);
            PurchasedTokens(_buyers[i], _amounts[i]);
        }
        assert(token.balanceOf(this) >= (SafeMath.sub(TOTAL_SUPPLY, MAX_PRIVATE)));
    }

    function removeTransferLock()
        public
        onlyOwner
    {
        token.removeTransferLock();
    }

    function reversePurchase(address _tokenHolder)
        payable
        public
        onlyOwner
    {
        uint refund = SafeMath.mul(token.balanceOf(_tokenHolder),price_in_wei);
        require(msg.value >= refund);
        uint excessAmount = SafeMath.sub(msg.value, refund);
        if (excessAmount > 0) {
            msg.sender.transfer(excessAmount);
        }

        _tokenHolder.transfer(refund);
        token.reversePurchase(_tokenHolder);
    }

    function setSetupComplete()
        public
        onlyOwner
    {
        require(wallet!=0);
        require(privateAllocated!=0);  
        setupCompleteFlag = true;
    }

    function configureWallet(address _wallet)
        public
        onlyOwner
    {
        wallet = _wallet;
    }

    function changeOwner(address _newOwner)
        public
        onlyOwner
    {
        require(_newOwner != 0);
        owner = _newOwner;
    }

    function changeWhitelistAdmin(address _newAdmin)
        public
        onlyOwner
    {
        require(_newAdmin != 0);
        whitelistAdmin = _newAdmin;
    }

    function changePrice(uint _newPrice)
        public
        onlyOwner
        notFrozen
        validPrice(_newPrice)
    {
        price_in_wei = _newPrice;
    }

    function changeStartBlock(uint _newBlock)
        public
        onlyOwner
        notFrozen
    {
        require(block.number <= _newBlock && _newBlock < startBlock);
        freezeBlock = SafeMath.sub(_newBlock , SafeMath.sub(startBlock, freezeBlock));
        startBlock = _newBlock;
    }

    function emergencyToggle()
        public
        onlyOwner
    {
        emergencyFlag = !emergencyFlag;
    }
    
    function addWhitelist(address[] _purchaser, uint[] _amount)
        public
        onlyWhitelistAdmin
        saleNotEnded
    {
        assert(_purchaser.length < 11 );
        assert(_purchaser.length == _amount.length);
        for(uint i = 0; i < _purchaser.length; i++) {
            whitelistRegistrants[_purchaser[i]] = _amount[i];
            whitelistRegistrantsFlag[_purchaser[i]] = true;
            
        }
    }

    function startPublicSale()
        public
        onlyOwner
    {
        if (!publicSale){
            publicSale = true;
        }
    }

    // MODIFIERS
    modifier saleEnded {
        require(block.number >= endBlock);
        _;
    }
    modifier saleNotEnded {
        require(block.number < endBlock);
        _;
    }
    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }
    modifier onlyWhitelistAdmin {
        require(msg.sender == owner || msg.sender == whitelistAdmin);
        _;
    }
    modifier notFrozen {
        require(block.number < freezeBlock);
        _;
    }
    modifier saleInProgress {
        require(block.number >= startBlock && block.number < endBlock);
        _;
    }
    modifier setupComplete {
        assert(setupCompleteFlag);
        _;
    }
    modifier notInEmergency {
        assert(emergencyFlag == false);
        _;
    }
    modifier checkBlockNumberInputs(uint _freeze, uint _start, uint _end) {
        require(_freeze >= block.number
        && _start >= _freeze
        && _end >= _start);
        _;
    }
    modifier validPrice(uint _price){
        require(_price > 0);
        _;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"emergencyToggle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_purchaser","type":"address[]"},{"name":"_amount","type":"uint256[]"}],"name":"addWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"endBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startPublicSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistRegistrants","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_PRIVATE","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":false,"inputs":[],"name":"purchaseTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"publicSale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"freezeBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_unsoldTokensWallet","type":"address"}],"name":"lockUnsoldTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whitelistAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"disbursements","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenHolder","type":"address"}],"name":"reversePurchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newBlock","type":"uint256"}],"name":"changeStartBlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiaries","type":"address[]"},{"name":"_beneficiariesTokens","type":"uint256[]"},{"name":"_timelockStarts","type":"uint256[]"},{"name":"_periods","type":"uint256[]"}],"name":"distributeTimelockedTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"setupCompleteFlag","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_buyers","type":"address[]"},{"name":"_amounts","type":"uint256[]"}],"name":"distributePresaleTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"privateAllocated","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistRegistrantsFlag","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newPrice","type":"uint256"}],"name":"changePrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"NAME","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setSetupComplete","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"emergencyFlag","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price_in_wei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"configureWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newAdmin","type":"address"}],"name":"changeWhitelistAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"removeTransferLock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SYMBOL","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_owner","type":"address"},{"name":"_freezeBlock","type":"uint256"},{"name":"_startBlock","type":"uint256"},{"name":"_endBlock","type":"uint256"},{"name":"_whitelistAdmin","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"beneficiary","type":"address"},{"indexed":false,"name":"disbursement","type":"address"},{"indexed":false,"name":"beneficiaryTokens","type":"uint256"}],"name":"TransferredTimelockedTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"PurchasedTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"numTokensLocked","type":"uint256"},{"indexed":false,"name":"disburser","type":"address"}],"name":"LockedUnsoldTokens","type":"event"}]

60606040526205161560075560006008556000600960006101000a81548160ff0219169083151502179055506000600960016101000a81548160ff0219169083151502179055506000600d60006101000a81548160ff02191690831515021790555034156200006d57600080fd5b60405160a0806200595a83398101604052808051906020019091908051906020019091908051906020019091908051906020019091908051906020019091905050838383438310158015620000c25750828210155b8015620000cf5750818110155b1515620000db57600080fd5b876000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550670de0b6b3a76400006040805190810160405280600681526020017f4c657665726a000000000000000000000000000000000000000000000000000081525060096040805190810160405280600381526020017f4c4556000000000000000000000000000000000000000000000000000000000081525030620001de620007a9565b80868152602001806020018560ff1660ff168152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838103835287818151815260200191508051906020019080838360005b838110156200026557808201518184015260208101905062000248565b50505050905090810190601f168015620002935780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b83811015620002ce578082015181840152602081019050620002b1565b50505050905090810190601f168015620002fc5780820380516001836020036101000a031916815260200191505b50975050505050505050604051809103906000f08015156200031d57600080fd5b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550866004819055508560058190555084600681905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb30600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200044057600080fd5b6102c65a03f115156200045257600080fd5b505050604051805190506000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515620004ea57600080fd5b6102c65a03f11515620004fc57600080fd5b5050506040518051905015156200050f57fe5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200059e57600080fd5b6102c65a03f11515620005b057600080fd5b50505060405180519050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156200068057600080fd5b6102c65a03f115156200069257600080fd5b50505060405180519050141515620006a657fe5b670de0b6b3a7640000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156200077557600080fd5b6102c65a03f115156200078757600080fd5b505050604051805190501415156200079b57fe5b5050505050505050620007ba565b604051611912806200404883390190565b61387e80620007ca6000396000f30060606040523615620001d8576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062a5359814620001dd578063050414bb14620001f5578063083c632314620002925780630c1c972a14620002be578063259b2ce014620002d657806327d9418214620003265780632e0f262514620003525780633290ce29146200038457806333bc1c5c14620003905780633a15786014620003c057806341c0aa0e14620003ec57806348cd4cb114620004285780634adbe55114620004545780634e29cba614620004ac5780635187527f1462000512578063521eb27314620005425780635437f098146200059a578063555c475814620005c05780638741ab4914620006dd5780638c1d92af146200070d5780638da5cb5b14620007aa5780638e2a37b21462000802578063902d55a5146200082e5780639cf66013146200085a578063a2b40d1914620008ae578063a3f4df7e14620008d4578063a6f9dae11462000968578063a951c99414620009a4578063b4007cda14620009bc578063c74a690c14620009ec578063cb1be21a1462000a18578063f17520e51462000a54578063f5308c7d1462000a90578063f76f8d781462000aa8578063fc0c546a1462000b3c575b600080fd5b3415620001e957600080fd5b620001f362000b94565b005b34156200020157600080fd5b620002906004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505062000c1c565b005b34156200029e57600080fd5b620002a862000e06565b6040518082815260200191505060405180910390f35b3415620002ca57600080fd5b620002d462000e0c565b005b3415620002e257600080fd5b62000310600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062000e9d565b6040518082815260200191505060405180910390f35b34156200033257600080fd5b6200033c62000eb5565b6040518082815260200191505060405180910390f35b34156200035e57600080fd5b6200036862000ec1565b604051808260ff1660ff16815260200191505060405180910390f35b6200038e62000ec6565b005b34156200039c57600080fd5b620003a662001511565b604051808215151515815260200191505060405180910390f35b3415620003cc57600080fd5b620003d662001524565b6040518082815260200191505060405180910390f35b3415620003f857600080fd5b62000426600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506200152a565b005b34156200043457600080fd5b6200043e62001998565b6040518082815260200191505060405180910390f35b34156200046057600080fd5b6200046a6200199e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620004b857600080fd5b620004d06004808035906020019091905050620019c4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000540600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062001a04565b005b34156200054e57600080fd5b6200055862001cd6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620005a657600080fd5b620005be600480803590602001909190505062001cfc565b005b3415620005cc57600080fd5b620006db60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505062001db2565b005b3415620006e957600080fd5b620006f362002398565b604051808215151515815260200191505060405180910390f35b34156200071957600080fd5b620007a860048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050620023ab565b005b3415620007b657600080fd5b620007c06200278b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200080e57600080fd5b62000818620027b0565b6040518082815260200191505060405180910390f35b34156200083a57600080fd5b62000844620027b6565b6040518082815260200191505060405180910390f35b34156200086657600080fd5b62000894600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050620027c2565b604051808215151515815260200191505060405180910390f35b3415620008ba57600080fd5b620008d26004808035906020019091905050620027e2565b005b3415620008e057600080fd5b620008ea6200286b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156200092c5780820151818401526020810190506200090f565b50505050905090810190601f1680156200095a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156200097457600080fd5b620009a2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050620028a4565b005b3415620009b057600080fd5b620009ba6200296a565b005b3415620009c857600080fd5b620009d262002a3f565b604051808215151515815260200191505060405180910390f35b3415620009f857600080fd5b62000a0262002a52565b6040518082815260200191505060405180910390f35b341562000a2457600080fd5b62000a52600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062002a58565b005b341562000a6057600080fd5b62000a8e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062002af8565b005b341562000a9c57600080fd5b62000aa662002bbf565b005b341562000ab457600080fd5b62000abe62002cb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101562000b0057808201518184015260208101905062000ae3565b50505050905090810190601f16801562000b2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341562000b4857600080fd5b62000b5262002cf1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562000bf057600080fd5b600960019054906101000a900460ff1615600960016101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148062000cc75750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151562000cd357600080fd5b6006544310151562000ce457600080fd5b600b835110151562000cf257fe5b8151835114151562000d0057fe5b600090505b825181101562000e0157818181518110151562000d1e57fe5b90602001906020020151600b6000858481518110151562000d3b57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c6000858481518110151562000d9857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505062000d05565b505050565b60065481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562000e6857600080fd5b600d60009054906101000a900460ff16151562000e9b576001600d60006101000a81548160ff0219169083151502179055505b565b600b6020528060005260406000206000915090505481565b670a693eecde7f800081565b600981565b600080600080600960009054906101000a900460ff16151562000ee557fe5b60001515600960019054906101000a900460ff16151514151562000f0557fe5b600554431015801562000f19575060065443105b151562000f2557600080fd5b60011515600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151562000f8557600080fd5b6007543481151562000f9357fe5b0493506007543481151562000fa457fe5b069250600d60009054906101000a900460ff16151562001213576000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115156200100d57600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411156200113957620010e284600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462002d17565b9050600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205493506200113683600754830262002d31565b92505b62001184600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548562002d17565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015156200121257fe5b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515620012d957600080fd5b6102c65a03f11515620012eb57600080fd5b5050506040518051905084111515156200130457600080fd5b600083111562001350573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156200134f57600080fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515620013ca57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156200149857600080fd5b6102c65a03f11515620014aa57600080fd5b505050604051805190501515620014bd57fe5b3373ffffffffffffffffffffffffffffffffffffffff167ff9c447a9cff6748e98623cddf46579164dc4c2af6253de5278893e8659277364856040518082815260200191505060405180910390a250505050565b600d60009054906101000a900460ff1681565b60045481565b60008060065443101515156200153f57600080fd5b600960009054906101000a900460ff1615156200155857fe5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515620015b457600080fd5b826301e1338042620015c562002d86565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050604051809103906000f08015156200162057600080fd5b91508173ffffffffffffffffffffffffffffffffffffffff166366d38203600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515620016df57600080fd5b6102c65a03f11515620016f157600080fd5b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515620017ba57600080fd5b6102c65a03f11515620017cc57600080fd5b505050604051805190509050600a8054806001018281620017ee919062002d97565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156200190b57600080fd5b6102c65a03f115156200191d57600080fd5b50505060405180519050507f178394bd3d3f3a67e10feb6c72c680672592e37c14e1f799ae54fe869cec1a808183604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b60055481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a81815481101515620019d457fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562001a6357600080fd5b62001b52600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151562001b2d57600080fd5b6102c65a03f1151562001b3f57600080fd5b5050506040518051905060075462002d50565b915081341015151562001b6457600080fd5b62001b70348362002d17565b9050600081111562001bbe573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151562001bbd57600080fd5b5b8273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050151562001bff57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635187527f846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151562001cbc57600080fd5b6102c65a03f1151562001cce57600080fd5b505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562001d5857600080fd5b6004544310151562001d6957600080fd5b80431115801562001d7b575060055481105b151562001d8757600080fd5b62001da28162001d9c60055460045462002d17565b62002d17565b6004819055508060058190555050565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562001e1457600080fd5b6006544310151562001e2557600080fd5b600960009054906101000a900460ff1615151562001e3f57fe5b600b875110151562001e4d57fe5b8651885114151562001e5b57fe5b8551875114151562001e6957fe5b8451865114151562001e7757fe5b600093505b87518410156200228557670a693eecde7f8000878581518110151562001e9e57fe5b90602001906020020151600854011115151562001eba57600080fd5b62001ee0600854888681518110151562001ed057fe5b9060200190602002015162002d31565b600881905550878481518110151562001ef557fe5b906020019060200201519250868481518110151562001f1057fe5b90602001906020020151915082858581518110151562001f2c57fe5b90602001906020020151878681518110151562001f4557fe5b9060200190602002015162001f5962002d86565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050604051809103906000f080151562001fb457600080fd5b90508073ffffffffffffffffffffffffffffffffffffffff166366d38203600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15156200207357600080fd5b6102c65a03f115156200208557600080fd5b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156200215657600080fd5b6102c65a03f115156200216857600080fd5b5050506040518051905050600a805480600101828162002189919062002d97565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507f659bd17426525d271e76e8b662badf9e68de74efbdb62927843499ecec17c924838284604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1838060010194505062001e7c565b620022a1670de0b6b3a7640000670a693eecde7f800062002d17565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156200236757600080fd5b6102c65a03f115156200237957600080fd5b50505060405180519050101515156200238e57fe5b5050505050505050565b600960009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200240957600080fd5b600654431015156200241a57600080fd5b600960009054906101000a900460ff161515156200243457fe5b600b83511015156200244557600080fd5b815183511415156200245657600080fd5b600090505b82518110156200267d57670a693eecde7f80006200249460085484848151811015156200248457fe5b9060200190602002015162002d31565b11151515620024a257600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8483815181101515620024ef57fe5b9060200190602002015184848151811015156200250857fe5b906020019060200201516000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515620025a057600080fd5b6102c65a03f11515620025b257600080fd5b505050604051805190501515620025c557fe5b620025eb6008548383815181101515620025db57fe5b9060200190602002015162002d31565b60088190555082818151811015156200260057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167ff9c447a9cff6748e98623cddf46579164dc4c2af6253de5278893e865927736483838151811015156200265057fe5b906020019060200201516040518082815260200191505060405180910390a280806001019150506200245b565b62002699670de0b6b3a7640000670a693eecde7f800062002d17565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156200275f57600080fd5b6102c65a03f115156200277157600080fd5b50505060405180519050101515156200278657fe5b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b670de0b6b3a764000081565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200283e57600080fd5b600454431015156200284f57600080fd5b806000811115156200286057600080fd5b816007819055505050565b6040805190810160405280600681526020017f4c657665726a000000000000000000000000000000000000000000000000000081525081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200290057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156200292757600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515620029c657600080fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151562002a0f57600080fd5b60006008541415151562002a2257600080fd5b6001600960006101000a81548160ff021916908315150217905550565b600960019054906101000a900460ff1681565b60075481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562002ab457600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562002b5457600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151562002b7b57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562002c1b57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5308c7d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b151562002ca157600080fd5b6102c65a03f1151562002cb357600080fd5b505050565b6040805190810160405280600381526020017f4c4556000000000000000000000000000000000000000000000000000000000081525081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082821115151562002d2657fe5b818303905092915050565b600080828401905083811015151562002d4657fe5b8091505092915050565b6000808284029050600084148062002d73575082848281151562002d7057fe5b04145b151562002d7c57fe5b8091505092915050565b604051610a648062002def83390190565b81548183558181151162002dc15781836000526020600020918201910162002dc0919062002dc6565b5b505050565b62002deb91905b8082111562002de757600081600090555060010162002dcd565b5090565b9056006060604052341561000f57600080fd5b604051606080610a648339810160405280805190602001909190805190602001909190805190602001909190505060008373ffffffffffffffffffffffffffffffffffffffff1614806100625750600082145b1561006c57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600281905550806003819055506000600354141561010e57426003819055505b505050610944806101206000396000f30060606040523615610097576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630905aa5c1461009c5780630b97bc86146100c55780634bc9fdc2146100ee57806366d38203146101175780638da5cb5b14610150578063e47a6a9f146101a5578063f3fef3a3146101ce578063f7260d3e14610210578063fc0c546a14610265575b600080fd5b34156100a757600080fd5b6100af6102ba565b6040518082815260200191505060405180910390f35b34156100d057600080fd5b6100d86102c0565b6040518082815260200191505060405180910390f35b34156100f957600080fd5b6101016102c6565b6040518082815260200191505060405180910390f35b341561012257600080fd5b61014e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610575565b005b341561015b57600080fd5b61016361067c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b057600080fd5b6101b86106a1565b6040518082815260200191505060405180910390f35b34156101d957600080fd5b61020e600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106a7565b005b341561021b57600080fd5b610223610862565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027057600080fd5b610278610888565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60045481565b60035481565b6000806002546103cb6103ba600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561039757600080fd5b6102c65a03f115156103a857600080fd5b505050604051805190506004546108ae565b6103c6426003546108cc565b6108e5565b8115156103d457fe5b049050806004541015806103e9575042600354115b156103f75760009150610571565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561048557600080fd5b6102c65a03f1151561049657600080fd5b505050604051805190506104ac826004546108cc565b111561056257600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561054057600080fd5b6102c65a03f1151561055157600080fd5b505050604051805190509150610571565b61056e816004546108cc565b91505b5090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105d057600080fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158061062e575060008173ffffffffffffffffffffffffffffffffffffffff16145b1561063857600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561070557600080fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561074b57600080fd5b6107536102c6565b90508082111561076257600080fd5b61076e600454836108ae565b600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561084157600080fd5b6102c65a03f1151561085257600080fd5b5050506040518051905050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008082840190508381101515156108c257fe5b8091505092915050565b60008282111515156108da57fe5b818303905092915050565b60008082840290506000841480610906575082848281151561090357fe5b04145b151561090e57fe5b80915050929150505600a165627a7a7230582087ca61493b1d8fb49d495b4b6ebc5ac2d7560660d8d6a1c5a5d553d65a1ecb770029a165627a7a72305820efeaeca2e1dc251652a0560abe79bba2750906354f6e0bb8cc2551253ea6bc8a002960606040526040805190810160405280600481526020017f48302e31000000000000000000000000000000000000000000000000000000008152506007908051906020019062000051929190620001a2565b5034156200005e57600080fd5b60405162001912380380620019128339810160405280805190602001909190805182019190602001805190602001909190805182019190602001805190602001909190505084600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600081905550836004908051906020019062000106929190620001a2565b5082600560006101000a81548160ff021916908360ff16021790555081600690805190602001906200013a929190620001a2565b5080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160146101000a81548160ff021916908315150217905550505050505062000251565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001e557805160ff191683800117855562000216565b8280016001018555821562000216579182015b8281111562000215578251825591602001919060010190620001f8565b5b50905062000225919062000229565b5090565b6200024e91905b808211156200024a57600081600090555060010162000230565b5090565b90565b6116b180620002616000396000f300606060405236156100d9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100de578063095ea7b31461016c57806318160ddd146101c657806323b872dd146101ef578063313ce567146102685780635187527f1461029757806354fd4d50146102d05780636ad1fe021461035e57806370a08231146103b357806395d89b4114610400578063a9059cbb1461048e578063b0660c3d146104e8578063cae9ca5114610515578063dd62ed3e146105b2578063f5308c7d1461061e575b600080fd5b34156100e957600080fd5b6100f1610633565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610131578082015181840152602081019050610116565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017757600080fd5b6101ac600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106d1565b604051808215151515815260200191505060405180910390f35b34156101d157600080fd5b6101d9610811565b6040518082815260200191505060405180910390f35b34156101fa57600080fd5b61024e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610817565b604051808215151515815260200191505060405180910390f35b341561027357600080fd5b61027b610bf0565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a257600080fd5b6102ce600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c03565b005b34156102db57600080fd5b6102e3610ea6565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610323578082015181840152602081019050610308565b50505050905090810190601f1680156103505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036957600080fd5b610371610f44565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103be57600080fd5b6103ea600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610f6a565b6040518082815260200191505060405180910390f35b341561040b57600080fd5b610413610fb3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610453578082015181840152602081019050610438565b50505050905090810190601f1680156104805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561049957600080fd5b6104ce600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611051565b604051808215151515815260200191505060405180910390f35b34156104f357600080fd5b6104fb61129b565b604051808215151515815260200191505060405180910390f35b341561052057600080fd5b610598600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506112ae565b604051808215151515815260200191505060405180910390f35b34156105bd57600080fd5b610608600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061154f565b6040518082815260200191505060405180910390f35b341561062957600080fd5b6106316115d6565b005b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106c95780601f1061069e576101008083540402835291602001916106c9565b820191906000526020600020905b8154815290600101906020018083116106ac57829003601f168201915b505050505081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561072157600080fd5b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60005481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108815750600160149054906101000a900460ff165b151561088c57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610957575081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b151561096257600080fd5b6109ab600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361164e565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a37600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361166c565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b00600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361166c565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600560009054906101000a900460ff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c6157600080fd5b600160149054906101000a900460ff16151515610c7d57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610d08600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261166c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610db660026000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261164e565b60026000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f3c5780601f10610f1157610100808354040283529160200191610f3c565b820191906000526020600020905b815481529060010190602001808311610f1f57829003601f168201915b505050505081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110495780601f1061101e57610100808354040283529160200191611049565b820191906000526020600020905b81548152906001019060200180831161102c57829003601f168201915b505050505081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806110bb5750600160149054906101000a900460ff165b15156110c657600080fd5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561111457600080fd5b61115d600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361166c565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111e9600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361164e565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600160149054906101000a900460ff1681565b600082600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff1660405180807f72656365697665417070726f76616c28616464726573732c75696e743235362c81526020017f616464726573732c627974657329000000000000000000000000000000000000815250602e01905060405180910390207c01000000000000000000000000000000000000000000000000000000009004338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828051906020019080838360005b838110156114ef5780820151818401526020810190506114d4565b50505050905090810190601f16801561151c5780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038160008761646e5a03f192505050151561154457600080fd5b600190509392505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561163257600080fd5b60018060146101000a81548160ff021916908315150217905550565b600080828401905083811015151561166257fe5b8091505092915050565b600082821115151561167a57fe5b8183039050929150505600a165627a7a72305820b4e343361918ea689e11082ecf20fa7e551720986c374549449fa73c0f16e2880029000000000000000000000000434dc9ef22b28cb1e9669d0a7abddabe8682e3c000000000000000000000000000000000000000000000000000000000004494d6000000000000000000000000000000000000000000000000000000000044953a00000000000000000000000000000000000000000000000000000000004788ad000000000000000000000000f327f9883c6771e40c8f9b24817564d2c7fed8b8

Deployed Bytecode

0x60606040523615620001d8576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062a5359814620001dd578063050414bb14620001f5578063083c632314620002925780630c1c972a14620002be578063259b2ce014620002d657806327d9418214620003265780632e0f262514620003525780633290ce29146200038457806333bc1c5c14620003905780633a15786014620003c057806341c0aa0e14620003ec57806348cd4cb114620004285780634adbe55114620004545780634e29cba614620004ac5780635187527f1462000512578063521eb27314620005425780635437f098146200059a578063555c475814620005c05780638741ab4914620006dd5780638c1d92af146200070d5780638da5cb5b14620007aa5780638e2a37b21462000802578063902d55a5146200082e5780639cf66013146200085a578063a2b40d1914620008ae578063a3f4df7e14620008d4578063a6f9dae11462000968578063a951c99414620009a4578063b4007cda14620009bc578063c74a690c14620009ec578063cb1be21a1462000a18578063f17520e51462000a54578063f5308c7d1462000a90578063f76f8d781462000aa8578063fc0c546a1462000b3c575b600080fd5b3415620001e957600080fd5b620001f362000b94565b005b34156200020157600080fd5b620002906004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505062000c1c565b005b34156200029e57600080fd5b620002a862000e06565b6040518082815260200191505060405180910390f35b3415620002ca57600080fd5b620002d462000e0c565b005b3415620002e257600080fd5b62000310600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062000e9d565b6040518082815260200191505060405180910390f35b34156200033257600080fd5b6200033c62000eb5565b6040518082815260200191505060405180910390f35b34156200035e57600080fd5b6200036862000ec1565b604051808260ff1660ff16815260200191505060405180910390f35b6200038e62000ec6565b005b34156200039c57600080fd5b620003a662001511565b604051808215151515815260200191505060405180910390f35b3415620003cc57600080fd5b620003d662001524565b6040518082815260200191505060405180910390f35b3415620003f857600080fd5b62000426600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506200152a565b005b34156200043457600080fd5b6200043e62001998565b6040518082815260200191505060405180910390f35b34156200046057600080fd5b6200046a6200199e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620004b857600080fd5b620004d06004808035906020019091905050620019c4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b62000540600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062001a04565b005b34156200054e57600080fd5b6200055862001cd6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620005a657600080fd5b620005be600480803590602001909190505062001cfc565b005b3415620005cc57600080fd5b620006db60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505062001db2565b005b3415620006e957600080fd5b620006f362002398565b604051808215151515815260200191505060405180910390f35b34156200071957600080fd5b620007a860048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050620023ab565b005b3415620007b657600080fd5b620007c06200278b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200080e57600080fd5b62000818620027b0565b6040518082815260200191505060405180910390f35b34156200083a57600080fd5b62000844620027b6565b6040518082815260200191505060405180910390f35b34156200086657600080fd5b62000894600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050620027c2565b604051808215151515815260200191505060405180910390f35b3415620008ba57600080fd5b620008d26004808035906020019091905050620027e2565b005b3415620008e057600080fd5b620008ea6200286b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156200092c5780820151818401526020810190506200090f565b50505050905090810190601f1680156200095a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156200097457600080fd5b620009a2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050620028a4565b005b3415620009b057600080fd5b620009ba6200296a565b005b3415620009c857600080fd5b620009d262002a3f565b604051808215151515815260200191505060405180910390f35b3415620009f857600080fd5b62000a0262002a52565b6040518082815260200191505060405180910390f35b341562000a2457600080fd5b62000a52600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062002a58565b005b341562000a6057600080fd5b62000a8e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062002af8565b005b341562000a9c57600080fd5b62000aa662002bbf565b005b341562000ab457600080fd5b62000abe62002cb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101562000b0057808201518184015260208101905062000ae3565b50505050905090810190601f16801562000b2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341562000b4857600080fd5b62000b5262002cf1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562000bf057600080fd5b600960019054906101000a900460ff1615600960016101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148062000cc75750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151562000cd357600080fd5b6006544310151562000ce457600080fd5b600b835110151562000cf257fe5b8151835114151562000d0057fe5b600090505b825181101562000e0157818181518110151562000d1e57fe5b90602001906020020151600b6000858481518110151562000d3b57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c6000858481518110151562000d9857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505062000d05565b505050565b60065481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562000e6857600080fd5b600d60009054906101000a900460ff16151562000e9b576001600d60006101000a81548160ff0219169083151502179055505b565b600b6020528060005260406000206000915090505481565b670a693eecde7f800081565b600981565b600080600080600960009054906101000a900460ff16151562000ee557fe5b60001515600960019054906101000a900460ff16151514151562000f0557fe5b600554431015801562000f19575060065443105b151562000f2557600080fd5b60011515600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151562000f8557600080fd5b6007543481151562000f9357fe5b0493506007543481151562000fa457fe5b069250600d60009054906101000a900460ff16151562001213576000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115156200100d57600080fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411156200113957620010e284600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462002d17565b9050600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205493506200113683600754830262002d31565b92505b62001184600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548562002d17565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015156200121257fe5b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515620012d957600080fd5b6102c65a03f11515620012eb57600080fd5b5050506040518051905084111515156200130457600080fd5b600083111562001350573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156200134f57600080fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515620013ca57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156200149857600080fd5b6102c65a03f11515620014aa57600080fd5b505050604051805190501515620014bd57fe5b3373ffffffffffffffffffffffffffffffffffffffff167ff9c447a9cff6748e98623cddf46579164dc4c2af6253de5278893e8659277364856040518082815260200191505060405180910390a250505050565b600d60009054906101000a900460ff1681565b60045481565b60008060065443101515156200153f57600080fd5b600960009054906101000a900460ff1615156200155857fe5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515620015b457600080fd5b826301e1338042620015c562002d86565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050604051809103906000f08015156200162057600080fd5b91508173ffffffffffffffffffffffffffffffffffffffff166366d38203600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515620016df57600080fd5b6102c65a03f11515620016f157600080fd5b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515620017ba57600080fd5b6102c65a03f11515620017cc57600080fd5b505050604051805190509050600a8054806001018281620017ee919062002d97565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156200190b57600080fd5b6102c65a03f115156200191d57600080fd5b50505060405180519050507f178394bd3d3f3a67e10feb6c72c680672592e37c14e1f799ae54fe869cec1a808183604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b60055481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a81815481101515620019d457fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562001a6357600080fd5b62001b52600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151562001b2d57600080fd5b6102c65a03f1151562001b3f57600080fd5b5050506040518051905060075462002d50565b915081341015151562001b6457600080fd5b62001b70348362002d17565b9050600081111562001bbe573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151562001bbd57600080fd5b5b8273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050151562001bff57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635187527f846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151562001cbc57600080fd5b6102c65a03f1151562001cce57600080fd5b505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562001d5857600080fd5b6004544310151562001d6957600080fd5b80431115801562001d7b575060055481105b151562001d8757600080fd5b62001da28162001d9c60055460045462002d17565b62002d17565b6004819055508060058190555050565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562001e1457600080fd5b6006544310151562001e2557600080fd5b600960009054906101000a900460ff1615151562001e3f57fe5b600b875110151562001e4d57fe5b8651885114151562001e5b57fe5b8551875114151562001e6957fe5b8451865114151562001e7757fe5b600093505b87518410156200228557670a693eecde7f8000878581518110151562001e9e57fe5b90602001906020020151600854011115151562001eba57600080fd5b62001ee0600854888681518110151562001ed057fe5b9060200190602002015162002d31565b600881905550878481518110151562001ef557fe5b906020019060200201519250868481518110151562001f1057fe5b90602001906020020151915082858581518110151562001f2c57fe5b90602001906020020151878681518110151562001f4557fe5b9060200190602002015162001f5962002d86565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050604051809103906000f080151562001fb457600080fd5b90508073ffffffffffffffffffffffffffffffffffffffff166366d38203600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15156200207357600080fd5b6102c65a03f115156200208557600080fd5b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156200215657600080fd5b6102c65a03f115156200216857600080fd5b5050506040518051905050600a805480600101828162002189919062002d97565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507f659bd17426525d271e76e8b662badf9e68de74efbdb62927843499ecec17c924838284604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1838060010194505062001e7c565b620022a1670de0b6b3a7640000670a693eecde7f800062002d17565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156200236757600080fd5b6102c65a03f115156200237957600080fd5b50505060405180519050101515156200238e57fe5b5050505050505050565b600960009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200240957600080fd5b600654431015156200241a57600080fd5b600960009054906101000a900460ff161515156200243457fe5b600b83511015156200244557600080fd5b815183511415156200245657600080fd5b600090505b82518110156200267d57670a693eecde7f80006200249460085484848151811015156200248457fe5b9060200190602002015162002d31565b11151515620024a257600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8483815181101515620024ef57fe5b9060200190602002015184848151811015156200250857fe5b906020019060200201516000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515620025a057600080fd5b6102c65a03f11515620025b257600080fd5b505050604051805190501515620025c557fe5b620025eb6008548383815181101515620025db57fe5b9060200190602002015162002d31565b60088190555082818151811015156200260057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167ff9c447a9cff6748e98623cddf46579164dc4c2af6253de5278893e865927736483838151811015156200265057fe5b906020019060200201516040518082815260200191505060405180910390a280806001019150506200245b565b62002699670de0b6b3a7640000670a693eecde7f800062002d17565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156200275f57600080fd5b6102c65a03f115156200277157600080fd5b50505060405180519050101515156200278657fe5b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b670de0b6b3a764000081565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200283e57600080fd5b600454431015156200284f57600080fd5b806000811115156200286057600080fd5b816007819055505050565b6040805190810160405280600681526020017f4c657665726a000000000000000000000000000000000000000000000000000081525081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200290057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156200292757600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515620029c657600080fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151562002a0f57600080fd5b60006008541415151562002a2257600080fd5b6001600960006101000a81548160ff021916908315150217905550565b600960019054906101000a900460ff1681565b60075481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562002ab457600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562002b5457600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151562002b7b57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151562002c1b57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5308c7d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b151562002ca157600080fd5b6102c65a03f1151562002cb357600080fd5b505050565b6040805190810160405280600381526020017f4c4556000000000000000000000000000000000000000000000000000000000081525081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082821115151562002d2657fe5b818303905092915050565b600080828401905083811015151562002d4657fe5b8091505092915050565b6000808284029050600084148062002d73575082848281151562002d7057fe5b04145b151562002d7c57fe5b8091505092915050565b604051610a648062002def83390190565b81548183558181151162002dc15781836000526020600020918201910162002dc0919062002dc6565b5b505050565b62002deb91905b8082111562002de757600081600090555060010162002dcd565b5090565b9056006060604052341561000f57600080fd5b604051606080610a648339810160405280805190602001909190805190602001909190805190602001909190505060008373ffffffffffffffffffffffffffffffffffffffff1614806100625750600082145b1561006c57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600281905550806003819055506000600354141561010e57426003819055505b505050610944806101206000396000f30060606040523615610097576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630905aa5c1461009c5780630b97bc86146100c55780634bc9fdc2146100ee57806366d38203146101175780638da5cb5b14610150578063e47a6a9f146101a5578063f3fef3a3146101ce578063f7260d3e14610210578063fc0c546a14610265575b600080fd5b34156100a757600080fd5b6100af6102ba565b6040518082815260200191505060405180910390f35b34156100d057600080fd5b6100d86102c0565b6040518082815260200191505060405180910390f35b34156100f957600080fd5b6101016102c6565b6040518082815260200191505060405180910390f35b341561012257600080fd5b61014e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610575565b005b341561015b57600080fd5b61016361067c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b057600080fd5b6101b86106a1565b6040518082815260200191505060405180910390f35b34156101d957600080fd5b61020e600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106a7565b005b341561021b57600080fd5b610223610862565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027057600080fd5b610278610888565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60045481565b60035481565b6000806002546103cb6103ba600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561039757600080fd5b6102c65a03f115156103a857600080fd5b505050604051805190506004546108ae565b6103c6426003546108cc565b6108e5565b8115156103d457fe5b049050806004541015806103e9575042600354115b156103f75760009150610571565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561048557600080fd5b6102c65a03f1151561049657600080fd5b505050604051805190506104ac826004546108cc565b111561056257600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561054057600080fd5b6102c65a03f1151561055157600080fd5b505050604051805190509150610571565b61056e816004546108cc565b91505b5090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105d057600080fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158061062e575060008173ffffffffffffffffffffffffffffffffffffffff16145b1561063857600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561070557600080fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561074b57600080fd5b6107536102c6565b90508082111561076257600080fd5b61076e600454836108ae565b600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561084157600080fd5b6102c65a03f1151561085257600080fd5b5050506040518051905050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008082840190508381101515156108c257fe5b8091505092915050565b60008282111515156108da57fe5b818303905092915050565b60008082840290506000841480610906575082848281151561090357fe5b04145b151561090e57fe5b80915050929150505600a165627a7a7230582087ca61493b1d8fb49d495b4b6ebc5ac2d7560660d8d6a1c5a5d553d65a1ecb770029a165627a7a72305820efeaeca2e1dc251652a0560abe79bba2750906354f6e0bb8cc2551253ea6bc8a0029

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

000000000000000000000000434dc9ef22b28cb1e9669d0a7abddabe8682e3c000000000000000000000000000000000000000000000000000000000004494d6000000000000000000000000000000000000000000000000000000000044953a00000000000000000000000000000000000000000000000000000000004788ad000000000000000000000000f327f9883c6771e40c8f9b24817564d2c7fed8b8

-----Decoded View---------------
Arg [0] : _owner (address): 0x434dC9EF22B28CB1E9669D0A7ABdDABe8682e3c0
Arg [1] : _freezeBlock (uint256): 4494550
Arg [2] : _startBlock (uint256): 4494650
Arg [3] : _endBlock (uint256): 4688045
Arg [4] : _whitelistAdmin (address): 0xF327f9883C6771E40c8F9B24817564D2c7feD8B8

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000434dc9ef22b28cb1e9669d0a7abddabe8682e3c0
Arg [1] : 00000000000000000000000000000000000000000000000000000000004494d6
Arg [2] : 000000000000000000000000000000000000000000000000000000000044953a
Arg [3] : 00000000000000000000000000000000000000000000000000000000004788ad
Arg [4] : 000000000000000000000000f327f9883c6771e40c8f9b24817564d2c7fed8b8


Swarm Source

bzzr://b4e343361918ea689e11082ecf20fa7e551720986c374549449fa73c0f16e288

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.