contract SNPCAirdrop is BaseAirdrop, Withdrawal, SelfDestructible {

    constructor(address _token) public BaseAirdrop(_token) {
        locked = true;
    }

    function getTokenOwnership() public onlyOwner {
        require(token.pendingOwner() == address(this));
        token.claimOwnership();
        require(token.owner() == address(this));
    }

    function releaseTokenOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        token.transferOwnership(newOwner);
        require(token.pendingOwner() == newOwner);
    }

    function airdrop(uint8 v, bytes32 r, bytes32 s, uint amount) public whenNotLocked {
        if (users[msg.sender] || ecrecover(prefixedHash(amount), v, r, s) != owner) {
            revert();
        }
        users[msg.sender] = true;
        token.assignReserved(msg.sender, uint8(0x2), amount);
        emit AirdropToken(msg.sender, amount);
    }

    // Disable direct payments
    function() external payable {
        revert();
    }
}
/**
 * @title SNPC token airdrop contract.
 */
function() external payable {
    revert();
}

// Disable direct payments