Update DAP protocol to 1.43.0
diff --git a/include/dap/protocol.h b/include/dap/protocol.h
index c45d421..0d13547 100644
--- a/include/dap/protocol.h
+++ b/include/dap/protocol.h
@@ -15,7 +15,7 @@
 // Generated with protocol_gen.go -- do not edit this file.
 //   go run scripts/protocol_gen/protocol_gen.go
 //
-// DAP version 1.41.0
+// DAP version 1.43.0
 
 #ifndef dap_protocol_h
 #define dap_protocol_h
@@ -102,7 +102,7 @@
   // If sourceReference > 0 the contents of the source must be retrieved through
   // the SourceRequest (even if a path is specified). A sourceReference is only
   // valid for a session, so it must not be used to persist a source. The value
-  // should be less than or equal to 2147483647 (2^31 - 1).
+  // should be less than or equal to 2147483647 (2^31-1).
   optional<integer> sourceReference;
   // An optional list of sources that are related to this source. These may be
   // the source that generated this source.
@@ -269,16 +269,20 @@
 
 DAP_DECLARE_STRUCT_TYPEINFO(ColumnDescriptor);
 
-// An ExceptionBreakpointsFilter is shown in the UI as an option for configuring
-// how exceptions are dealt with.
+// An ExceptionBreakpointsFilter is shown in the UI as an filter option for
+// configuring how exceptions are dealt with.
 struct ExceptionBreakpointsFilter {
-  // Initial value of the filter. If not specified a value 'false' is assumed.
+  // Initial value of the filter option. If not specified a value 'false' is
+  // assumed.
   optional<boolean> def;
-  // The internal ID of the filter. This value is passed to the
-  // setExceptionBreakpoints request.
+  // The internal ID of the filter option. This value is passed to the
+  // 'setExceptionBreakpoints' request.
   string filter;
-  // The name of the filter. This will be shown in the UI.
+  // The name of the filter option. This will be shown in the UI.
   string label;
+  // Controls whether a condition can be specified for this filter option. If
+  // false or missing, a condition can not be set.
+  optional<boolean> supportsCondition;
 };
 
 DAP_DECLARE_STRUCT_TYPEINFO(ExceptionBreakpointsFilter);
@@ -290,7 +294,8 @@
   // The set of characters that should trigger completion in a REPL. If not
   // specified, the UI should assume the '.' character.
   optional<array<string>> completionTriggerCharacters;
-  // Available filters or options for the setExceptionBreakpoints request.
+  // Available exception filter options for the 'setExceptionBreakpoints'
+  // request.
   optional<array<ExceptionBreakpointsFilter>> exceptionBreakpointFilters;
   // The debug adapter supports the 'terminateDebuggee' attribute on the
   // 'disconnect' request.
@@ -321,6 +326,9 @@
   // The debug adapter supports a (side effect free) evaluate request for data
   // hovers.
   optional<boolean> supportsEvaluateForHovers;
+  // The debug adapter supports 'filterOptions' as an argument on the
+  // 'setExceptionBreakpoints' request.
+  optional<boolean> supportsExceptionFilterOptions;
   // The debug adapter supports the 'exceptionInfo' request.
   optional<boolean> supportsExceptionInfoRequest;
   // The debug adapter supports 'exceptionOptions' on the
@@ -703,7 +711,7 @@
   // The number of indexed child variables.
   // The client can use this optional information to present the variables in a
   // paged UI and fetch them in chunks. The value should be less than or equal
-  // to 2147483647 (2^31 - 1).
+  // to 2147483647 (2^31-1).
   optional<integer> indexedVariables;
   // Optional memory reference to a location appropriate for this result.
   // For pointer type eval results, this is generally a reference to the memory
@@ -714,7 +722,7 @@
   // The number of named child variables.
   // The client can use this optional information to present the variables in a
   // paged UI and fetch them in chunks. The value should be less than or equal
-  // to 2147483647 (2^31 - 1).
+  // to 2147483647 (2^31-1).
   optional<integer> namedVariables;
   // Properties of a evaluate result that can be used to determine how to render
   // the result in the UI.
@@ -729,7 +737,7 @@
   // If variablesReference is > 0, the evaluate result is structured and its
   // children can be retrieved by passing variablesReference to the
   // VariablesRequest. The value should be less than or equal to 2147483647
-  // (2^31 - 1).
+  // (2^31-1).
   integer variablesReference;
 };
 
@@ -902,7 +910,8 @@
   // The set of characters that should trigger completion in a REPL. If not
   // specified, the UI should assume the '.' character.
   optional<array<string>> completionTriggerCharacters;
-  // Available filters or options for the setExceptionBreakpoints request.
+  // Available exception filter options for the 'setExceptionBreakpoints'
+  // request.
   optional<array<ExceptionBreakpointsFilter>> exceptionBreakpointFilters;
   // The debug adapter supports the 'terminateDebuggee' attribute on the
   // 'disconnect' request.
@@ -933,6 +942,9 @@
   // The debug adapter supports a (side effect free) evaluate request for data
   // hovers.
   optional<boolean> supportsEvaluateForHovers;
+  // The debug adapter supports 'filterOptions' as an argument on the
+  // 'setExceptionBreakpoints' request.
+  optional<boolean> supportsExceptionFilterOptions;
   // The debug adapter supports the 'exceptionInfo' request.
   optional<boolean> supportsExceptionInfoRequest;
   // The debug adapter supports 'exceptionOptions' on the
@@ -1015,6 +1027,8 @@
   // May be one of the following enumeration values:
   // 'path', 'uri'
   optional<string> pathFormat;
+  // Client supports the invalidated event.
+  optional<boolean> supportsInvalidatedEvent;
   // Client supports memory references.
   optional<boolean> supportsMemoryReferences;
   // Client supports progress reporting.
@@ -1049,6 +1063,35 @@
 
 DAP_DECLARE_STRUCT_TYPEINFO(InitializedEvent);
 
+// Logical areas that can be invalidated by the 'invalidated' event.
+struct InvalidatedAreas {};
+
+DAP_DECLARE_STRUCT_TYPEINFO(InvalidatedAreas);
+
+// This event signals that some state in the debug adapter has changed and
+// requires that the client needs to re-render the data snapshot previously
+// requested. Debug adapters do not have to emit this event for runtime changes
+// like stopped or thread events because in that case the client refetches the
+// new state anyway. But the event can be used for example to refresh the UI
+// after rendering formatting has changed in the debug adapter. This event
+// should only be sent if the debug adapter has received a value true for the
+// 'supportsInvalidatedEvent' capability of the 'initialize' request.
+struct InvalidatedEvent : public Event {
+  // Optional set of logical areas that got invalidated. This property has a
+  // hint characteristic: a client can only be expected to make a 'best effort'
+  // in honouring the areas but there are no guarantees. If this property is
+  // missing, empty, or if values are not understand the client should assume a
+  // single value 'all'.
+  optional<array<InvalidatedAreas>> areas;
+  // If specified, the client only needs to refetch data related to this stack
+  // frame (and the 'threadId' is ignored).
+  optional<integer> stackFrameId;
+  // If specified, the client only needs to refetch data related to this thread.
+  optional<integer> threadId;
+};
+
+DAP_DECLARE_STRUCT_TYPEINFO(InvalidatedEvent);
+
 // Response to 'launch' request. This is just an acknowledgement, so no body
 // field is required.
 struct LaunchResponse : public Response {};
@@ -1241,7 +1284,7 @@
   // If an attribute 'variablesReference' exists and its value is > 0, the
   // output contains objects which can be retrieved by passing
   // 'variablesReference' to the 'variables' request. The value should be less
-  // than or equal to 2147483647 (2^31 - 1).
+  // than or equal to 2147483647 (2^31-1).
   optional<integer> variablesReference;
 };
 
@@ -1327,7 +1370,7 @@
   // request until the request has been either completed or cancelled. If the
   // request ID is omitted, the progress report is assumed to be related to some
   // general activity of the debug adapter.
-  optional<number> requestId;
+  optional<integer> requestId;
   // Mandatory (short) title of the progress reporting. Shown in the UI to
   // describe the long running operation.
   string title;
@@ -1439,11 +1482,11 @@
 
 // Response to 'runInTerminal' request.
 struct RunInTerminalResponse : public Response {
-  // The process ID. The value should be less than or equal to 2147483647 (2^31
-  // - 1).
+  // The process ID. The value should be less than or equal to 2147483647
+  // (2^31-1).
   optional<integer> processId;
   // The process ID of the terminal shell. The value should be less than or
-  // equal to 2147483647 (2^31 - 1).
+  // equal to 2147483647 (2^31-1).
   optional<integer> shellProcessId;
 };
 
@@ -1458,7 +1501,8 @@
   using Response = RunInTerminalResponse;
   // List of arguments. The first argument is the command to run.
   array<string> args;
-  // Working directory of the command.
+  // Working directory for the command. For non-empty, valid paths this
+  // typically results in execution of a change directory command.
   string cwd;
   // Environment key-value pairs that are added to or removed from the default
   // environment.
@@ -1663,6 +1707,20 @@
 
 DAP_DECLARE_STRUCT_TYPEINFO(ExceptionOptions);
 
+// An ExceptionFilterOptions is used to specify an exception filter together
+// with a condition for the setExceptionsFilter request.
+struct ExceptionFilterOptions {
+  // An optional expression for conditional exceptions.
+  // The exception will break into the debugger if the result of the condition
+  // is true.
+  optional<string> condition;
+  // ID of an exception filter returned by the 'exceptionBreakpointFilters'
+  // capability.
+  string filterId;
+};
+
+DAP_DECLARE_STRUCT_TYPEINFO(ExceptionFilterOptions);
+
 // The request configures the debuggers response to thrown exceptions.
 // If an exception is configured to break, a 'stopped' event is fired (with
 // reason 'exception'). Clients should only call this request if the capability
@@ -1673,8 +1731,15 @@
   // The attribute is only honored by a debug adapter if the capability
   // 'supportsExceptionOptions' is true.
   optional<array<ExceptionOptions>> exceptionOptions;
-  // IDs of checked exception options. The set of IDs is returned via the
-  // 'exceptionBreakpointFilters' capability.
+  // Set of exception filters and their options. The set of all possible
+  // exception filters is defined by the 'exceptionBreakpointFilters'
+  // capability. This attribute is only honored by a debug adapter if the
+  // capability 'supportsExceptionFilterOptions' is true. The 'filter' and
+  // 'filterOptions' sets are additive.
+  optional<array<ExceptionFilterOptions>> filterOptions;
+  // Set of exception filters specified by their ID. The set of all possible
+  // exception filters is defined by the 'exceptionBreakpointFilters'
+  // capability. The 'filter' and 'filterOptions' sets are additive.
   array<string> filters;
 };
 
@@ -1685,12 +1750,12 @@
   // The number of indexed child variables.
   // The client can use this optional information to present the variables in a
   // paged UI and fetch them in chunks. The value should be less than or equal
-  // to 2147483647 (2^31 - 1).
+  // to 2147483647 (2^31-1).
   optional<integer> indexedVariables;
   // The number of named child variables.
   // The client can use this optional information to present the variables in a
   // paged UI and fetch them in chunks. The value should be less than or equal
-  // to 2147483647 (2^31 - 1).
+  // to 2147483647 (2^31-1).
   optional<integer> namedVariables;
   // Properties of a value that can be used to determine how to render the
   // result in the UI.
@@ -1704,7 +1769,7 @@
   string value;
   // If variablesReference is > 0, the value is structured and its children can
   // be retrieved by passing variablesReference to the VariablesRequest. The
-  // value should be less than or equal to 2147483647 (2^31 - 1).
+  // value should be less than or equal to 2147483647 (2^31-1).
   optional<integer> variablesReference;
 };
 
@@ -1820,12 +1885,12 @@
   // The number of indexed child variables.
   // The client can use this optional information to present the variables in a
   // paged UI and fetch them in chunks. The value should be less than or equal
-  // to 2147483647 (2^31 - 1).
+  // to 2147483647 (2^31-1).
   optional<integer> indexedVariables;
   // The number of named child variables.
   // The client can use this optional information to present the variables in a
   // paged UI and fetch them in chunks. The value should be less than or equal
-  // to 2147483647 (2^31 - 1).
+  // to 2147483647 (2^31-1).
   optional<integer> namedVariables;
   // The type of the new value. Typically shown in the UI when hovering over the
   // value.
@@ -1834,7 +1899,7 @@
   string value;
   // If variablesReference is > 0, the new value is structured and its children
   // can be retrieved by passing variablesReference to the VariablesRequest. The
-  // value should be less than or equal to 2147483647 (2^31 - 1).
+  // value should be less than or equal to 2147483647 (2^31-1).
   optional<integer> variablesReference;
 };
 
@@ -1924,7 +1989,12 @@
   // stackframes available. This means that there is no location information
   // available.
   array<StackFrame> stackFrames;
-  // The total number of frames available.
+  // The total number of frames available in the stack. If omitted or if
+  // totalFrames is larger than the available frames, a client is expected to
+  // request frames until a request returns less frames than requested (which
+  // indicates the end of the stack). Returning monotonically increasing
+  // totalFrames values for subsequent requests can be used to enforce paging in
+  // the client.
   optional<integer> totalFrames;
 };
 
@@ -1951,7 +2021,16 @@
 
 DAP_DECLARE_STRUCT_TYPEINFO(StackFrameFormat);
 
-// The request returns a stacktrace from the current execution state.
+// The request returns a stacktrace from the current execution state of a given
+// thread. A client can request all stack frames by omitting the startFrame and
+// levels arguments. For performance conscious clients stack frames can be
+// retrieved in a piecemeal way with the startFrame and levels arguments. The
+// response of the stackTrace request may contain a totalFrames property that
+// hints at the total number of frames in the stack. If a client needs this
+// total number upfront, it can issue a request for a single (first) frame and
+// depending on the value of totalFrames decide how to proceed. In any case a
+// client should be prepared to receive less frames than requested, which is an
+// indication that the end of the stack has been reached.
 struct StackTraceRequest : public Request {
   using Response = StackTraceResponse;
   // Specifies details on how to format the stack frames.
diff --git a/src/protocol_events.cpp b/src/protocol_events.cpp
index 5be9e9f..3743481 100644
--- a/src/protocol_events.cpp
+++ b/src/protocol_events.cpp
@@ -15,7 +15,7 @@
 // Generated with protocol_gen.go -- do not edit this file.
 //   go run scripts/protocol_gen/protocol_gen.go
 //
-// DAP version 1.41.0
+// DAP version 1.43.0
 
 #include "dap/protocol.h"
 
@@ -42,6 +42,12 @@
 
 DAP_IMPLEMENT_STRUCT_TYPEINFO(InitializedEvent, "initialized");
 
+DAP_IMPLEMENT_STRUCT_TYPEINFO(InvalidatedEvent,
+                              "invalidated",
+                              DAP_FIELD(areas, "areas"),
+                              DAP_FIELD(stackFrameId, "stackFrameId"),
+                              DAP_FIELD(threadId, "threadId"));
+
 DAP_IMPLEMENT_STRUCT_TYPEINFO(LoadedSourceEvent,
                               "loadedSource",
                               DAP_FIELD(reason, "reason"),
diff --git a/src/protocol_requests.cpp b/src/protocol_requests.cpp
index bdfb7c3..c76b5ff 100644
--- a/src/protocol_requests.cpp
+++ b/src/protocol_requests.cpp
@@ -15,7 +15,7 @@
 // Generated with protocol_gen.go -- do not edit this file.
 //   go run scripts/protocol_gen/protocol_gen.go
 //
-// DAP version 1.41.0
+// DAP version 1.43.0
 
 #include "dap/protocol.h"
 
@@ -103,6 +103,7 @@
     DAP_FIELD(linesStartAt1, "linesStartAt1"),
     DAP_FIELD(locale, "locale"),
     DAP_FIELD(pathFormat, "pathFormat"),
+    DAP_FIELD(supportsInvalidatedEvent, "supportsInvalidatedEvent"),
     DAP_FIELD(supportsMemoryReferences, "supportsMemoryReferences"),
     DAP_FIELD(supportsProgressReporting, "supportsProgressReporting"),
     DAP_FIELD(supportsRunInTerminalRequest, "supportsRunInTerminalRequest"),
@@ -172,6 +173,7 @@
 DAP_IMPLEMENT_STRUCT_TYPEINFO(SetExceptionBreakpointsRequest,
                               "setExceptionBreakpoints",
                               DAP_FIELD(exceptionOptions, "exceptionOptions"),
+                              DAP_FIELD(filterOptions, "filterOptions"),
                               DAP_FIELD(filters, "filters"));
 
 DAP_IMPLEMENT_STRUCT_TYPEINFO(SetExpressionRequest,
diff --git a/src/protocol_response.cpp b/src/protocol_response.cpp
index 99a278f..f96c3cf 100644
--- a/src/protocol_response.cpp
+++ b/src/protocol_response.cpp
@@ -15,7 +15,7 @@
 // Generated with protocol_gen.go -- do not edit this file.
 //   go run scripts/protocol_gen/protocol_gen.go
 //
-// DAP version 1.41.0
+// DAP version 1.43.0
 
 #include "dap/protocol.h"
 
@@ -100,6 +100,7 @@
               "supportsDelayedStackTraceLoading"),
     DAP_FIELD(supportsDisassembleRequest, "supportsDisassembleRequest"),
     DAP_FIELD(supportsEvaluateForHovers, "supportsEvaluateForHovers"),
+    DAP_FIELD(supportsExceptionFilterOptions, "supportsExceptionFilterOptions"),
     DAP_FIELD(supportsExceptionInfoRequest, "supportsExceptionInfoRequest"),
     DAP_FIELD(supportsExceptionOptions, "supportsExceptionOptions"),
     DAP_FIELD(supportsFunctionBreakpoints, "supportsFunctionBreakpoints"),
diff --git a/src/protocol_types.cpp b/src/protocol_types.cpp
index 61047cd..a9e5355 100644
--- a/src/protocol_types.cpp
+++ b/src/protocol_types.cpp
@@ -15,7 +15,7 @@
 // Generated with protocol_gen.go -- do not edit this file.
 //   go run scripts/protocol_gen/protocol_gen.go
 //
-// DAP version 1.41.0
+// DAP version 1.43.0
 
 #include "dap/protocol.h"
 
@@ -72,7 +72,9 @@
                               "",
                               DAP_FIELD(def, "default"),
                               DAP_FIELD(filter, "filter"),
-                              DAP_FIELD(label, "label"));
+                              DAP_FIELD(label, "label"),
+                              DAP_FIELD(supportsCondition,
+                                        "supportsCondition"));
 
 DAP_IMPLEMENT_STRUCT_TYPEINFO(
     Capabilities,
@@ -95,6 +97,7 @@
               "supportsDelayedStackTraceLoading"),
     DAP_FIELD(supportsDisassembleRequest, "supportsDisassembleRequest"),
     DAP_FIELD(supportsEvaluateForHovers, "supportsEvaluateForHovers"),
+    DAP_FIELD(supportsExceptionFilterOptions, "supportsExceptionFilterOptions"),
     DAP_FIELD(supportsExceptionInfoRequest, "supportsExceptionInfoRequest"),
     DAP_FIELD(supportsExceptionOptions, "supportsExceptionOptions"),
     DAP_FIELD(supportsFunctionBreakpoints, "supportsFunctionBreakpoints"),
@@ -186,6 +189,8 @@
                               DAP_FIELD(label, "label"),
                               DAP_FIELD(line, "line"));
 
+DAP_IMPLEMENT_STRUCT_TYPEINFO(InvalidatedAreas, "");
+
 DAP_IMPLEMENT_STRUCT_TYPEINFO(Module,
                               "",
                               DAP_FIELD(addressRange, "addressRange"),
@@ -241,6 +246,11 @@
                               DAP_FIELD(breakMode, "breakMode"),
                               DAP_FIELD(path, "path"));
 
+DAP_IMPLEMENT_STRUCT_TYPEINFO(ExceptionFilterOptions,
+                              "",
+                              DAP_FIELD(condition, "condition"),
+                              DAP_FIELD(filterId, "filterId"));
+
 DAP_IMPLEMENT_STRUCT_TYPEINFO(FunctionBreakpoint,
                               "",
                               DAP_FIELD(condition, "condition"),