contract OperatorRole is Context {
    using Roles for Roles.Role;

    event OperatorAdded(address indexed account);
    event OperatorRemoved(address indexed account);

    Roles.Role private _operators;

    constructor () internal {

    }

    /**
     * @dev Makes function callable only if sender is an operator.
     */
    modifier onlyOperator() {
        require(isOperator(_msgSender()), "OperatorRole: caller does not have the Operator role");
        _;
    }

    /**
     * @dev Checks if the address is an operator.
     */
    function isOperator(address account) public view returns (bool) {
        return _operators.has(account);
    }

    function _addOperator(address account) internal {
        _operators.add(account);
        emit OperatorAdded(account);
    }

    function _removeOperator(address account) internal {
        _operators.remove(account);
        emit OperatorRemoved(account);
    }
}
/**
 * @title OperatorRole
 * @dev An operator role contract.
 */
function isOperator(address account) public view returns (bool) {
    return _operators.has(account);
}

/**
 * @dev Checks if the address is an operator.
 */