contract Support is Ownable {
    mapping(address => bool) public supportList;

    event SupportAdded(address indexed _who);
    event SupportRemoved(address indexed _who);

    /**
    * @dev Throws if called by any account other than the supportList or owner.
    */
    modifier supportOrOwner {
        require(msg.sender == owner || supportList[msg.sender]);
        _;
    }

    /**
    * @dev Allows current owner to grant extended contract access to _who .
    * @param _who The address to change permissions.
    */
    function addSupport(address _who) public onlyOwner {
        require(_who != address(0));
        require(_who != owner);
        require(!supportList[_who]);
        supportList[_who] = true;
        emit SupportAdded(_who);
    }

    /**
    * @dev Allows current owner to revoke extended contract access from _who .
    * @param _who The address to change permissions.
    */
    function removeSupport(address _who) public onlyOwner {
        require(supportList[_who]);
        supportList[_who] = false;
        emit SupportRemoved(_who);
    }
}
/**
 * @title Support
 * @dev Provides authorization control to Support.
 */
function addSupport(address _who) public onlyOwner {
    require(_who != address(0));
    require(_who != owner);
    require(!supportList[_who]);
    supportList[_who] = true;
    emit SupportAdded(_who);
}

/**
 * @dev Allows current owner to grant extended contract access to _who .
 * @param _who The address to change permissions.
 */