mongodb 6.10.0 → 6.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/lib/admin.js +3 -2
- package/lib/admin.js.map +1 -1
- package/lib/beta.d.ts +562 -45
- package/lib/bulk/common.js +4 -4
- package/lib/bulk/common.js.map +1 -1
- package/lib/change_stream.js +111 -51
- package/lib/change_stream.js.map +1 -1
- package/lib/client-side-encryption/auto_encrypter.js +8 -5
- package/lib/client-side-encryption/auto_encrypter.js.map +1 -1
- package/lib/client-side-encryption/client_encryption.js +48 -18
- package/lib/client-side-encryption/client_encryption.js.map +1 -1
- package/lib/client-side-encryption/state_machine.js +43 -29
- package/lib/client-side-encryption/state_machine.js.map +1 -1
- package/lib/cmap/auth/mongo_credentials.js +5 -2
- package/lib/cmap/auth/mongo_credentials.js.map +1 -1
- package/lib/cmap/auth/mongodb_aws.js +1 -1
- package/lib/cmap/auth/mongodb_aws.js.map +1 -1
- package/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js +38 -0
- package/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js.map +1 -0
- package/lib/cmap/auth/mongodb_oidc.js +2 -0
- package/lib/cmap/auth/mongodb_oidc.js.map +1 -1
- package/lib/cmap/connect.js +13 -1
- package/lib/cmap/connect.js.map +1 -1
- package/lib/cmap/connection.js +75 -17
- package/lib/cmap/connection.js.map +1 -1
- package/lib/cmap/connection_pool.js +14 -12
- package/lib/cmap/connection_pool.js.map +1 -1
- package/lib/cmap/wire_protocol/on_data.js +5 -1
- package/lib/cmap/wire_protocol/on_data.js.map +1 -1
- package/lib/cmap/wire_protocol/responses.js +30 -0
- package/lib/cmap/wire_protocol/responses.js.map +1 -1
- package/lib/collection.js +62 -3
- package/lib/collection.js.map +1 -1
- package/lib/connection_string.js +2 -0
- package/lib/connection_string.js.map +1 -1
- package/lib/cursor/abstract_cursor.js +221 -38
- package/lib/cursor/abstract_cursor.js.map +1 -1
- package/lib/cursor/aggregation_cursor.js +29 -7
- package/lib/cursor/aggregation_cursor.js.map +1 -1
- package/lib/cursor/change_stream_cursor.js +2 -2
- package/lib/cursor/change_stream_cursor.js.map +1 -1
- package/lib/cursor/client_bulk_write_cursor.js +1 -1
- package/lib/cursor/client_bulk_write_cursor.js.map +1 -1
- package/lib/cursor/find_cursor.js +18 -8
- package/lib/cursor/find_cursor.js.map +1 -1
- package/lib/cursor/list_collections_cursor.js +1 -1
- package/lib/cursor/list_collections_cursor.js.map +1 -1
- package/lib/cursor/list_indexes_cursor.js +1 -1
- package/lib/cursor/list_indexes_cursor.js.map +1 -1
- package/lib/cursor/run_command_cursor.js +6 -4
- package/lib/cursor/run_command_cursor.js.map +1 -1
- package/lib/db.js +63 -3
- package/lib/db.js.map +1 -1
- package/lib/error.js +34 -9
- package/lib/error.js.map +1 -1
- package/lib/explain.js +57 -1
- package/lib/explain.js.map +1 -1
- package/lib/gridfs/download.js +31 -3
- package/lib/gridfs/download.js.map +1 -1
- package/lib/gridfs/index.js +49 -14
- package/lib/gridfs/index.js.map +1 -1
- package/lib/gridfs/upload.js +80 -22
- package/lib/gridfs/upload.js.map +1 -1
- package/lib/index.js +9 -5
- package/lib/index.js.map +1 -1
- package/lib/mongo_client.js +70 -1
- package/lib/mongo_client.js.map +1 -1
- package/lib/operations/aggregate.js +2 -2
- package/lib/operations/aggregate.js.map +1 -1
- package/lib/operations/bulk_write.js +7 -2
- package/lib/operations/bulk_write.js.map +1 -1
- package/lib/operations/client_bulk_write/client_bulk_write.js +3 -3
- package/lib/operations/client_bulk_write/client_bulk_write.js.map +1 -1
- package/lib/operations/client_bulk_write/executor.js +14 -3
- package/lib/operations/client_bulk_write/executor.js.map +1 -1
- package/lib/operations/command.js +5 -2
- package/lib/operations/command.js.map +1 -1
- package/lib/operations/count.js +2 -2
- package/lib/operations/count.js.map +1 -1
- package/lib/operations/create_collection.js +8 -7
- package/lib/operations/create_collection.js.map +1 -1
- package/lib/operations/delete.js +6 -6
- package/lib/operations/delete.js.map +1 -1
- package/lib/operations/distinct.js +2 -2
- package/lib/operations/distinct.js.map +1 -1
- package/lib/operations/drop.js +8 -8
- package/lib/operations/drop.js.map +1 -1
- package/lib/operations/estimated_document_count.js +2 -2
- package/lib/operations/estimated_document_count.js.map +1 -1
- package/lib/operations/execute_operation.js +16 -10
- package/lib/operations/execute_operation.js.map +1 -1
- package/lib/operations/find.js +6 -3
- package/lib/operations/find.js.map +1 -1
- package/lib/operations/find_and_modify.js +2 -2
- package/lib/operations/find_and_modify.js.map +1 -1
- package/lib/operations/get_more.js +2 -1
- package/lib/operations/get_more.js.map +1 -1
- package/lib/operations/indexes.js +6 -6
- package/lib/operations/indexes.js.map +1 -1
- package/lib/operations/insert.js +6 -6
- package/lib/operations/insert.js.map +1 -1
- package/lib/operations/kill_cursors.js +5 -2
- package/lib/operations/kill_cursors.js.map +1 -1
- package/lib/operations/list_collections.js +2 -2
- package/lib/operations/list_collections.js.map +1 -1
- package/lib/operations/list_databases.js +2 -2
- package/lib/operations/list_databases.js.map +1 -1
- package/lib/operations/operation.js.map +1 -1
- package/lib/operations/profiling_level.js +2 -2
- package/lib/operations/profiling_level.js.map +1 -1
- package/lib/operations/remove_user.js +2 -2
- package/lib/operations/remove_user.js.map +1 -1
- package/lib/operations/rename.js +2 -2
- package/lib/operations/rename.js.map +1 -1
- package/lib/operations/run_command.js +6 -4
- package/lib/operations/run_command.js.map +1 -1
- package/lib/operations/search_indexes/create.js +5 -2
- package/lib/operations/search_indexes/create.js.map +1 -1
- package/lib/operations/search_indexes/drop.js +2 -2
- package/lib/operations/search_indexes/drop.js.map +1 -1
- package/lib/operations/search_indexes/update.js +2 -2
- package/lib/operations/search_indexes/update.js.map +1 -1
- package/lib/operations/set_profiling_level.js +2 -2
- package/lib/operations/set_profiling_level.js.map +1 -1
- package/lib/operations/stats.js +2 -2
- package/lib/operations/stats.js.map +1 -1
- package/lib/operations/update.js +8 -8
- package/lib/operations/update.js.map +1 -1
- package/lib/operations/validate_collection.js +2 -2
- package/lib/operations/validate_collection.js.map +1 -1
- package/lib/read_concern.js +1 -1
- package/lib/sdam/common.js +0 -7
- package/lib/sdam/common.js.map +1 -1
- package/lib/sdam/server.js +4 -1
- package/lib/sdam/server.js.map +1 -1
- package/lib/sdam/server_description.js +4 -2
- package/lib/sdam/server_description.js.map +1 -1
- package/lib/sdam/server_selection.js +5 -2
- package/lib/sdam/server_selection.js.map +1 -1
- package/lib/sdam/topology.js +38 -15
- package/lib/sdam/topology.js.map +1 -1
- package/lib/sessions.js +157 -98
- package/lib/sessions.js.map +1 -1
- package/lib/timeout.js +231 -16
- package/lib/timeout.js.map +1 -1
- package/lib/utils.js +36 -19
- package/lib/utils.js.map +1 -1
- package/lib/write_concern.js.map +1 -1
- package/mongodb.d.ts +562 -45
- package/package.json +17 -16
- package/src/admin.ts +6 -2
- package/src/bulk/common.ts +17 -5
- package/src/change_stream.ts +127 -52
- package/src/client-side-encryption/auto_encrypter.ts +12 -5
- package/src/client-side-encryption/client_encryption.ts +103 -20
- package/src/client-side-encryption/state_machine.ts +66 -32
- package/src/cmap/auth/mongo_credentials.ts +6 -3
- package/src/cmap/auth/mongodb_aws.ts +1 -1
- package/src/cmap/auth/mongodb_oidc/k8s_machine_workflow.ts +38 -0
- package/src/cmap/auth/mongodb_oidc.ts +3 -1
- package/src/cmap/connect.ts +18 -1
- package/src/cmap/connection.ts +105 -17
- package/src/cmap/connection_pool.ts +15 -17
- package/src/cmap/handshake/client_metadata.ts +1 -1
- package/src/cmap/wire_protocol/on_data.ts +11 -1
- package/src/cmap/wire_protocol/responses.ts +35 -1
- package/src/collection.ts +81 -9
- package/src/connection_string.ts +2 -0
- package/src/cursor/abstract_cursor.ts +287 -39
- package/src/cursor/aggregation_cursor.ts +54 -8
- package/src/cursor/change_stream_cursor.ts +6 -2
- package/src/cursor/client_bulk_write_cursor.ts +6 -2
- package/src/cursor/find_cursor.ts +40 -9
- package/src/cursor/list_collections_cursor.ts +1 -1
- package/src/cursor/list_indexes_cursor.ts +1 -1
- package/src/cursor/run_command_cursor.ts +50 -5
- package/src/db.ts +75 -7
- package/src/error.ts +33 -8
- package/src/explain.ts +85 -0
- package/src/gridfs/download.ts +43 -4
- package/src/gridfs/index.ts +64 -16
- package/src/gridfs/upload.ts +153 -45
- package/src/index.ts +27 -5
- package/src/mongo_client.ts +76 -4
- package/src/operations/aggregate.ts +10 -2
- package/src/operations/bulk_write.ts +9 -2
- package/src/operations/client_bulk_write/client_bulk_write.ts +11 -3
- package/src/operations/client_bulk_write/executor.ts +15 -3
- package/src/operations/command.ts +18 -8
- package/src/operations/count.ts +10 -3
- package/src/operations/create_collection.ts +14 -7
- package/src/operations/delete.ts +15 -6
- package/src/operations/distinct.ts +7 -2
- package/src/operations/drop.ts +18 -8
- package/src/operations/estimated_document_count.ts +7 -2
- package/src/operations/execute_operation.ts +22 -13
- package/src/operations/find.ts +17 -5
- package/src/operations/find_and_modify.ts +7 -2
- package/src/operations/get_more.ts +4 -1
- package/src/operations/indexes.ts +20 -7
- package/src/operations/insert.ts +13 -6
- package/src/operations/kill_cursors.ts +10 -2
- package/src/operations/list_collections.ts +10 -1
- package/src/operations/list_databases.ts +9 -2
- package/src/operations/operation.ts +16 -2
- package/src/operations/profiling_level.ts +7 -2
- package/src/operations/remove_user.ts +7 -2
- package/src/operations/rename.ts +7 -2
- package/src/operations/run_command.ts +23 -4
- package/src/operations/search_indexes/create.ts +10 -2
- package/src/operations/search_indexes/drop.ts +7 -2
- package/src/operations/search_indexes/update.ts +7 -2
- package/src/operations/set_profiling_level.ts +4 -2
- package/src/operations/stats.ts +7 -2
- package/src/operations/update.ts +16 -8
- package/src/operations/validate_collection.ts +7 -2
- package/src/read_concern.ts +1 -1
- package/src/sdam/common.ts +0 -11
- package/src/sdam/server.ts +14 -4
- package/src/sdam/server_description.ts +6 -2
- package/src/sdam/server_selection.ts +5 -2
- package/src/sdam/topology.ts +43 -27
- package/src/sessions.ts +206 -120
- package/src/timeout.ts +327 -23
- package/src/transactions.ts +1 -1
- package/src/utils.ts +47 -30
- package/src/write_concern.ts +6 -3
package/lib/sdam/topology.js
CHANGED
|
@@ -95,8 +95,6 @@ class Topology extends mongo_types_1.TypedEventEmitter {
|
|
|
95
95
|
servers: new Map(),
|
|
96
96
|
credentials: options?.credentials,
|
|
97
97
|
clusterTime: undefined,
|
|
98
|
-
// timer management
|
|
99
|
-
connectionTimers: new Set(),
|
|
100
98
|
detectShardedTopology: ev => this.detectShardedTopology(ev),
|
|
101
99
|
detectSrvRecords: ev => this.detectSrvRecords(ev)
|
|
102
100
|
};
|
|
@@ -161,7 +159,6 @@ class Topology extends mongo_types_1.TypedEventEmitter {
|
|
|
161
159
|
finally {
|
|
162
160
|
this.connectionLock = undefined;
|
|
163
161
|
}
|
|
164
|
-
return this;
|
|
165
162
|
}
|
|
166
163
|
async _connect(options) {
|
|
167
164
|
options = options ?? {};
|
|
@@ -190,13 +187,24 @@ class Topology extends mongo_types_1.TypedEventEmitter {
|
|
|
190
187
|
this.serverUpdateHandler(newDescription);
|
|
191
188
|
}
|
|
192
189
|
}
|
|
190
|
+
const serverSelectionTimeoutMS = this.client.s.options.serverSelectionTimeoutMS;
|
|
193
191
|
const readPreference = options.readPreference ?? read_preference_1.ReadPreference.primary;
|
|
194
|
-
const
|
|
192
|
+
const timeoutContext = timeout_1.TimeoutContext.create({
|
|
193
|
+
// TODO(NODE-6448): auto-connect ignores timeoutMS; potential future feature
|
|
194
|
+
timeoutMS: undefined,
|
|
195
|
+
serverSelectionTimeoutMS,
|
|
196
|
+
waitQueueTimeoutMS: this.client.s.options.waitQueueTimeoutMS
|
|
197
|
+
});
|
|
198
|
+
const selectServerOptions = {
|
|
199
|
+
operationName: 'ping',
|
|
200
|
+
...options,
|
|
201
|
+
timeoutContext
|
|
202
|
+
};
|
|
195
203
|
try {
|
|
196
204
|
const server = await this.selectServer((0, server_selection_1.readPreferenceServerSelector)(readPreference), selectServerOptions);
|
|
197
205
|
const skipPingOnConnect = this.s.options[Symbol.for('@@mdb.skipPingOnConnect')] === true;
|
|
198
|
-
if (!skipPingOnConnect &&
|
|
199
|
-
await server.command((0, utils_1.ns)('admin.$cmd'), { ping: 1 }, {});
|
|
206
|
+
if (!skipPingOnConnect && this.s.credentials) {
|
|
207
|
+
await server.command((0, utils_1.ns)('admin.$cmd'), { ping: 1 }, { timeoutContext });
|
|
200
208
|
stateTransition(this, common_1.STATE_CONNECTED);
|
|
201
209
|
this.emit(Topology.OPEN, this);
|
|
202
210
|
this.emit(Topology.CONNECT, this);
|
|
@@ -223,7 +231,6 @@ class Topology extends mongo_types_1.TypedEventEmitter {
|
|
|
223
231
|
this.s.servers.clear();
|
|
224
232
|
stateTransition(this, common_1.STATE_CLOSING);
|
|
225
233
|
drainWaitQueue(this[kWaitQueue], new error_1.MongoTopologyClosedError());
|
|
226
|
-
(0, common_1.drainTimerQueue)(this.s.connectionTimers);
|
|
227
234
|
if (this.s.srvPoller) {
|
|
228
235
|
this.s.srvPoller.stop();
|
|
229
236
|
this.s.srvPoller.removeListener(srv_polling_1.SrvPoller.SRV_RECORD_DISCOVERY, this.s.detectSrvRecords);
|
|
@@ -266,6 +273,12 @@ class Topology extends mongo_types_1.TypedEventEmitter {
|
|
|
266
273
|
if (this.client.mongoLogger?.willLog(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, mongo_logger_1.SeverityLevel.DEBUG)) {
|
|
267
274
|
this.client.mongoLogger?.debug(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, new server_selection_events_1.ServerSelectionStartedEvent(selector, this.description, options.operationName));
|
|
268
275
|
}
|
|
276
|
+
let timeout;
|
|
277
|
+
if (options.timeoutContext)
|
|
278
|
+
timeout = options.timeoutContext.serverSelectionTimeout;
|
|
279
|
+
else {
|
|
280
|
+
timeout = timeout_1.Timeout.expires(options.serverSelectionTimeoutMS ?? 0);
|
|
281
|
+
}
|
|
269
282
|
const isSharded = this.description.type === common_1.TopologyType.Sharded;
|
|
270
283
|
const session = options.session;
|
|
271
284
|
const transaction = session && session.transaction;
|
|
@@ -273,10 +286,11 @@ class Topology extends mongo_types_1.TypedEventEmitter {
|
|
|
273
286
|
if (this.client.mongoLogger?.willLog(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, mongo_logger_1.SeverityLevel.DEBUG)) {
|
|
274
287
|
this.client.mongoLogger?.debug(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, new server_selection_events_1.ServerSelectionSucceededEvent(selector, this.description, transaction.server.pool.address, options.operationName));
|
|
275
288
|
}
|
|
289
|
+
if (options.timeoutContext?.clearServerSelectionTimeout)
|
|
290
|
+
timeout?.clear();
|
|
276
291
|
return transaction.server;
|
|
277
292
|
}
|
|
278
293
|
const { promise: serverPromise, resolve, reject } = (0, utils_1.promiseWithResolvers)();
|
|
279
|
-
const timeout = timeout_1.Timeout.expires(options.serverSelectionTimeoutMS ?? 0);
|
|
280
294
|
const waitQueueMember = {
|
|
281
295
|
serverSelector,
|
|
282
296
|
topologyDescription: this.description,
|
|
@@ -284,7 +298,6 @@ class Topology extends mongo_types_1.TypedEventEmitter {
|
|
|
284
298
|
transaction,
|
|
285
299
|
resolve,
|
|
286
300
|
reject,
|
|
287
|
-
timeout,
|
|
288
301
|
startTime: (0, utils_1.now)(),
|
|
289
302
|
operationName: options.operationName,
|
|
290
303
|
waitingLogged: false,
|
|
@@ -293,22 +306,35 @@ class Topology extends mongo_types_1.TypedEventEmitter {
|
|
|
293
306
|
this[kWaitQueue].push(waitQueueMember);
|
|
294
307
|
processWaitQueue(this);
|
|
295
308
|
try {
|
|
296
|
-
|
|
309
|
+
timeout?.throwIfExpired();
|
|
310
|
+
const server = await (timeout ? Promise.race([serverPromise, timeout]) : serverPromise);
|
|
311
|
+
if (options.timeoutContext?.csotEnabled() && server.description.minRoundTripTime !== 0) {
|
|
312
|
+
options.timeoutContext.minRoundTripTime = server.description.minRoundTripTime;
|
|
313
|
+
}
|
|
314
|
+
return server;
|
|
297
315
|
}
|
|
298
316
|
catch (error) {
|
|
299
317
|
if (timeout_1.TimeoutError.is(error)) {
|
|
300
318
|
// Timeout
|
|
301
319
|
waitQueueMember[kCancelled] = true;
|
|
302
|
-
timeout.
|
|
303
|
-
const timeoutError = new error_1.MongoServerSelectionError(`Server selection timed out after ${options.serverSelectionTimeoutMS} ms`, this.description);
|
|
320
|
+
const timeoutError = new error_1.MongoServerSelectionError(`Server selection timed out after ${timeout?.duration} ms`, this.description);
|
|
304
321
|
if (this.client.mongoLogger?.willLog(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, mongo_logger_1.SeverityLevel.DEBUG)) {
|
|
305
322
|
this.client.mongoLogger?.debug(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, new server_selection_events_1.ServerSelectionFailedEvent(selector, this.description, timeoutError, options.operationName));
|
|
306
323
|
}
|
|
324
|
+
if (options.timeoutContext?.csotEnabled()) {
|
|
325
|
+
throw new error_1.MongoOperationTimeoutError('Timed out during server selection', {
|
|
326
|
+
cause: timeoutError
|
|
327
|
+
});
|
|
328
|
+
}
|
|
307
329
|
throw timeoutError;
|
|
308
330
|
}
|
|
309
331
|
// Other server selection error
|
|
310
332
|
throw error;
|
|
311
333
|
}
|
|
334
|
+
finally {
|
|
335
|
+
if (options.timeoutContext?.clearServerSelectionTimeout)
|
|
336
|
+
timeout?.clear();
|
|
337
|
+
}
|
|
312
338
|
}
|
|
313
339
|
/**
|
|
314
340
|
* Update the internal TopologyDescription with a ServerDescription
|
|
@@ -524,7 +550,6 @@ function drainWaitQueue(queue, drainError) {
|
|
|
524
550
|
if (!waitQueueMember) {
|
|
525
551
|
continue;
|
|
526
552
|
}
|
|
527
|
-
waitQueueMember.timeout.clear();
|
|
528
553
|
if (!waitQueueMember[kCancelled]) {
|
|
529
554
|
if (waitQueueMember.mongoLogger?.willLog(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, mongo_logger_1.SeverityLevel.DEBUG)) {
|
|
530
555
|
waitQueueMember.mongoLogger?.debug(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, new server_selection_events_1.ServerSelectionFailedEvent(waitQueueMember.serverSelector, waitQueueMember.topologyDescription, drainError, waitQueueMember.operationName));
|
|
@@ -558,7 +583,6 @@ function processWaitQueue(topology) {
|
|
|
558
583
|
: serverDescriptions;
|
|
559
584
|
}
|
|
560
585
|
catch (selectorError) {
|
|
561
|
-
waitQueueMember.timeout.clear();
|
|
562
586
|
if (topology.client.mongoLogger?.willLog(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, mongo_logger_1.SeverityLevel.DEBUG)) {
|
|
563
587
|
topology.client.mongoLogger?.debug(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, new server_selection_events_1.ServerSelectionFailedEvent(waitQueueMember.serverSelector, topology.description, selectorError, waitQueueMember.operationName));
|
|
564
588
|
}
|
|
@@ -602,7 +626,6 @@ function processWaitQueue(topology) {
|
|
|
602
626
|
if (isSharded && transaction && transaction.isActive && selectedServer) {
|
|
603
627
|
transaction.pinServer(selectedServer);
|
|
604
628
|
}
|
|
605
|
-
waitQueueMember.timeout.clear();
|
|
606
629
|
if (topology.client.mongoLogger?.willLog(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, mongo_logger_1.SeverityLevel.DEBUG)) {
|
|
607
630
|
topology.client.mongoLogger?.debug(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, new server_selection_events_1.ServerSelectionSucceededEvent(waitQueueMember.serverSelector, waitQueueMember.topologyDescription, selectedServer.pool.address, waitQueueMember.operationName));
|
|
608
631
|
}
|
package/lib/sdam/topology.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topology.js","sourceRoot":"","sources":["../../src/sdam/topology.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"topology.js","sourceRoot":"","sources":["../../src/sdam/topology.ts"],"names":[],"mappings":";;;AAKA,4DAAsE;AACtE,4CAcsB;AACtB,oCASkB;AAElB,kDAA0F;AAC1F,gDAAmD;AACnD,wDAA6E;AAE7E,wCAAmE;AAEnE,oCAUkB;AAClB,qCASkB;AAClB,qCAOkB;AAElB,qCAAyE;AACzE,6DAAiF;AACjF,yDAAuF;AACvF,uEAKmC;AACnC,+CAAgE;AAChE,iEAA6D;AAE7D,eAAe;AACf,IAAI,qBAAqB,GAAG,CAAC,CAAC;AAE9B,MAAM,eAAe,GAAG,IAAA,wBAAgB,EAAC;IACvC,CAAC,qBAAY,CAAC,EAAE,CAAC,qBAAY,EAAE,yBAAgB,CAAC;IAChD,CAAC,yBAAgB,CAAC,EAAE,CAAC,yBAAgB,EAAE,sBAAa,EAAE,wBAAe,EAAE,qBAAY,CAAC;IACpF,CAAC,wBAAe,CAAC,EAAE,CAAC,wBAAe,EAAE,sBAAa,EAAE,qBAAY,CAAC;IACjE,CAAC,sBAAa,CAAC,EAAE,CAAC,sBAAa,EAAE,qBAAY,CAAC;CAC/C,CAAC,CAAC;AAEH,gBAAgB;AAChB,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACvC,gBAAgB;AAChB,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AA6GvC;;;GAGG;AACH,MAAa,QAAS,SAAQ,+BAAiC;IAsC7D;;OAEG;IACH,YACE,MAAmB,EACnB,KAAsD,EACtD,OAAwB;QAExB,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,0FAA0F;QAC1F,OAAO,GAAG,OAAO,IAAI;YACnB,KAAK,EAAE,CAAC,mBAAW,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;YAClD,GAAG,MAAM,CAAC,WAAW,CAAC,mCAAe,CAAC,OAAO,EAAE,CAAC;YAChD,GAAG,MAAM,CAAC,WAAW,CAAC,iCAAa,CAAC,OAAO,EAAE,CAAC;SAC/C,CAAC;QAEF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,GAAG,CAAC,mBAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,QAAQ,CAAC,IAAI,CAAC,mBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,IAAI,YAAY,mBAAW,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,qDAAqD;gBACrD,MAAM,IAAI,yBAAiB,CAAC,uCAAuC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7F,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;QAE3C,MAAM,aAAa,GACjB,OAAO,CAAC,WAAW,IAAI,IAAI;YAC3B,OAAO,CAAC,WAAW,KAAK,CAAC;YACzB,OAAO,CAAC,WAAW,IAAI,QAAQ,CAAC,MAAM;YACpC,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,IAAA,eAAO,EAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAE7C,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;QACrC,KAAK,MAAM,WAAW,IAAI,aAAa,EAAE,CAAC;YACxC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,sCAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,YAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,GAAG;YACP,0BAA0B;YAC1B,EAAE,EAAE,UAAU;YACd,oBAAoB;YACpB,OAAO;YACP,4CAA4C;YAC5C,QAAQ;YACR,gBAAgB;YAChB,KAAK,EAAE,qBAAY;YACnB,2BAA2B;YAC3B,WAAW,EAAE,IAAI,0CAAmB,CAClC,YAAY,EACZ,kBAAkB,EAClB,OAAO,CAAC,UAAU,EAClB,SAAS,EACT,SAAS,EACT,SAAS,EACT,OAAO,CACR;YACD,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;YAC1D,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;YAClD,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;YACxD,oDAAoD;YACpD,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,WAAW,EAAE,OAAO,EAAE,WAAW;YACjC,WAAW,EAAE,SAAS;YAEtB,qBAAqB,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC3D,gBAAgB,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;SAClD,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;QAE5B,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC7C,IAAI,CAAC,CAAC,CAAC,SAAS;gBACd,OAAO,CAAC,SAAS;oBACjB,IAAI,uBAAS,CAAC;wBACZ,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC,oBAAoB;wBACjD,OAAO,EAAE,OAAO,CAAC,OAAO;wBACxB,WAAW,EAAE,OAAO,CAAC,WAAW;wBAChC,cAAc,EAAE,OAAO,CAAC,cAAc;qBACvC,CAAC,CAAC;YAEL,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;IAClC,CAAC;IAEO,qBAAqB,CAAC,KAAsC;QAClE,MAAM,YAAY,GAAG,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC;QACpD,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;QAE1C,MAAM,mBAAmB,GACvB,YAAY,KAAK,qBAAY,CAAC,OAAO,IAAI,OAAO,KAAK,qBAAY,CAAC,OAAO,CAAC;QAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,uBAAS,CAAC,oBAAoB,CAAC,CAAC;QACjF,MAAM,qBAAqB,GAAG,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAEhF,IAAI,mBAAmB,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAClD,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,uBAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;YAC9E,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,EAAmB;QAC1C,MAAM,2BAA2B,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QACvD,IAAI,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAC/D,EAAE,EACF,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAC3B,CAAC;QACF,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,KAAK,2BAA2B,EAAE,CAAC;YACvD,6BAA6B;YAC7B,OAAO;QACT,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,CAAC;QAEpB,IAAI,CAAC,UAAU,CACb,QAAQ,CAAC,4BAA4B,EACrC,IAAI,wCAA+B,CACjC,IAAI,CAAC,CAAC,CAAC,EAAE,EACT,2BAA2B,EAC3B,IAAI,CAAC,CAAC,CAAC,WAAW,CACnB,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IACrC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,8BAA8B;IAC9B,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,OAAwB;QAC7C,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,wBAAe,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,eAAe,CAAC,IAAI,EAAE,yBAAgB,CAAC,CAAC;QAExC,8BAA8B;QAC9B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,6BAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhF,wCAAwC;QACxC,IAAI,CAAC,UAAU,CACb,QAAQ,CAAC,4BAA4B,EACrC,IAAI,wCAA+B,CACjC,IAAI,CAAC,CAAC,CAAC,EAAE,EACT,IAAI,0CAAmB,CAAC,qBAAY,CAAC,OAAO,CAAC,EAAE,4BAA4B;QAC3E,IAAI,CAAC,CAAC,CAAC,WAAW,CACnB,CACF,CAAC;QAEF,sEAAsE;QACtE,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,GAAG,CACtB,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC1C,iBAAiB,CAAC,OAAO;YACzB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,CAAC;SAChD,CAAC,CACH,CAAC;QAEF,qEAAqE;QACrE,6DAA6D;QAC7D,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAChC,KAAK,MAAM,WAAW,IAAI,kBAAkB,EAAE,CAAC;gBAC7C,MAAM,cAAc,GAAG,IAAI,sCAAiB,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,EAAE;oBAC/E,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY;iBAC1C,CAAC,CAAC;gBACH,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,MAAM,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC;QAChF,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,gCAAc,CAAC,OAAO,CAAC;QACxE,MAAM,cAAc,GAAG,wBAAc,CAAC,MAAM,CAAC;YAC3C,4EAA4E;YAC5E,SAAS,EAAE,SAAS;YACpB,wBAAwB;YACxB,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB;SAC7D,CAAC,CAAC;QACH,MAAM,mBAAmB,GAAG;YAC1B,aAAa,EAAE,MAAM;YACrB,GAAG,OAAO;YACV,cAAc;SACf,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CACpC,IAAA,+CAA4B,EAAC,cAAc,CAAC,EAC5C,mBAAmB,CACpB,CAAC;YACF,MAAM,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,IAAI,CAAC;YACzF,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,IAAA,UAAE,EAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;gBACxE,eAAe,CAAC,IAAI,EAAE,wBAAe,CAAC,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAElC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,eAAe,CAAC,IAAI,EAAE,wBAAe,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAElC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,KAAK;QACH,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,qBAAY,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,sBAAa,EAAE,CAAC;YACpE,OAAO;QACT,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAEvB,eAAe,CAAC,IAAI,EAAE,sBAAa,CAAC,CAAC;QAErC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,gCAAwB,EAAE,CAAC,CAAC;QAEjE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,uBAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAC3F,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAEzF,eAAe,CAAC,IAAI,EAAE,qBAAY,CAAC,CAAC;QAEpC,0BAA0B;QAC1B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,4BAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAChB,QAAkD,EAClD,OAA4B;QAE5B,IAAI,cAAc,CAAC;QACnB,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACnC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,cAAc,GAAG,IAAA,+CAA4B,EAAC,gCAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrF,CAAC;iBAAM,CAAC;gBACN,IAAI,cAAc,CAAC;gBACnB,IAAI,QAAQ,YAAY,gCAAc,EAAE,CAAC;oBACvC,cAAc,GAAG,QAAQ,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,gCAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBAClC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,gCAAc,CAAC,OAAO,CAAC;gBACpE,CAAC;gBAED,cAAc,GAAG,IAAA,+CAA4B,EAAC,cAAgC,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,QAAQ,CAAC;QAC5B,CAAC;QAED,OAAO,GAAG,EAAE,wBAAwB,EAAE,IAAI,CAAC,CAAC,CAAC,wBAAwB,EAAE,GAAG,OAAO,EAAE,CAAC;QACpF,IACE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,qCAAsB,CAAC,gBAAgB,EAAE,4BAAa,CAAC,KAAK,CAAC,EAC9F,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAC5B,qCAAsB,CAAC,gBAAgB,EACvC,IAAI,qDAA2B,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,CACnF,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC;QACZ,IAAI,OAAO,CAAC,cAAc;YAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,sBAAsB,CAAC;aAC/E,CAAC;YACJ,OAAO,GAAG,iBAAO,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,IAAI,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,qBAAY,CAAC,OAAO,CAAC;QACjE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,MAAM,WAAW,GAAG,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;QAEnD,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACnD,IACE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAC9B,qCAAsB,CAAC,gBAAgB,EACvC,4BAAa,CAAC,KAAK,CACpB,EACD,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAC5B,qCAAsB,CAAC,gBAAgB,EACvC,IAAI,uDAA6B,CAC/B,QAAQ,EACR,IAAI,CAAC,WAAW,EAChB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAC/B,OAAO,CAAC,aAAa,CACtB,CACF,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,CAAC,cAAc,EAAE,2BAA2B;gBAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC1E,OAAO,WAAW,CAAC,MAAM,CAAC;QAC5B,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAA,4BAAoB,GAAU,CAAC;QAEnF,MAAM,eAAe,GAA2B;YAC9C,cAAc;YACd,mBAAmB,EAAE,IAAI,CAAC,WAAW;YACrC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,WAAW;YACX,OAAO;YACP,MAAM;YACN,SAAS,EAAE,IAAA,WAAG,GAAE;YAChB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,aAAa,EAAE,KAAK;YACpB,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACvC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAEvB,IAAI,CAAC;YACH,OAAO,EAAE,cAAc,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YACxF,IAAI,OAAO,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,WAAW,CAAC,gBAAgB,KAAK,CAAC,EAAE,CAAC;gBACvF,OAAO,CAAC,cAAc,CAAC,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC;YAChF,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,sBAAY,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,UAAU;gBACV,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;gBACnC,MAAM,YAAY,GAAG,IAAI,iCAAyB,CAChD,oCAAoC,OAAO,EAAE,QAAQ,KAAK,EAC1D,IAAI,CAAC,WAAW,CACjB,CAAC;gBACF,IACE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAC9B,qCAAsB,CAAC,gBAAgB,EACvC,4BAAa,CAAC,KAAK,CACpB,EACD,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAC5B,qCAAsB,CAAC,gBAAgB,EACvC,IAAI,oDAA0B,CAC5B,QAAQ,EACR,IAAI,CAAC,WAAW,EAChB,YAAY,EACZ,OAAO,CAAC,aAAa,CACtB,CACF,CAAC;gBACJ,CAAC;gBAED,IAAI,OAAO,CAAC,cAAc,EAAE,WAAW,EAAE,EAAE,CAAC;oBAC1C,MAAM,IAAI,kCAA0B,CAAC,mCAAmC,EAAE;wBACxE,KAAK,EAAE,YAAY;qBACpB,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,YAAY,CAAC;YACrB,CAAC;YACD,+BAA+B;YAC/B,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,CAAC,cAAc,EAAE,2BAA2B;gBAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5E,CAAC;IACH,CAAC;IACD;;;;OAIG;IACH,mBAAmB,CAAC,iBAAoC;QACtD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,oEAAoE;QACpE,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACpE,OAAO;QACT,CAAC;QAED,iDAAiD;QACjD,MAAM,2BAA2B,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QACvD,MAAM,yBAAyB,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC5F,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,wEAAwE;QACxE,uEAAuE;QACvE,iEAAiE;QACjE,wEAAwE;QACxE,oEAAoE;QACpE,4CAA4C;QAC5C,MAAM,WAAW,GAAG,iBAAiB,CAAC,YAAY,CAAC;QACnD,IAAI,WAAW,EAAE,CAAC;YAChB,IAAA,4BAAmB,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACzC,CAAC;QAED,qFAAqF;QACrF,wFAAwF;QACxF,yFAAyF;QACzF,MAAM,iBAAiB,GACrB,yBAAyB,IAAI,yBAAyB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEnF,uCAAuC;QACvC,IAAI,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,+BAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC9F,OAAO;QACT,CAAC;QAED,yCAAyC;QACzC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACjF,IAAI,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,IAAI,CACP,QAAQ,CAAC,0BAA0B,EACnC,IAAI,sCAA6B,CAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,EACT,iBAAiB,CAAC,OAAO,EACzB,yBAAyB,EACzB,cAAc,CACf,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,aAAa,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAEvC,+DAA+D;QAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,CACb,QAAQ,CAAC,4BAA4B,EACrC,IAAI,wCAA+B,CACjC,IAAI,CAAC,CAAC,CAAC,EAAE,EACT,2BAA2B,EAC3B,IAAI,CAAC,CAAC,CAAC,WAAW,CACnB,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,WAA8B,EAAE,QAAmB;QACtD,IAAI,OAAO,WAAW,KAAK,UAAU;YAAE,CAAC,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;QAC3F,IAAI,OAAO,QAAQ,KAAK,UAAU;YAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,wBAAe,CAAC;IAC1C,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,qBAAY,CAAC;IACvC,CAAC;IAED,+EAA+E;IAC/E,oFAAoF;IACpF,4EAA4E;IAC5E,SAAS;QACP,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACzE,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAC/C,MAAM,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAClC,CAAC,EAAqB,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,mBAAU,CAAC,OAAO,CAC1D,CAAC,CAAC,CAAC,CAAC;QAEL,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;QAC5E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;IAC5C,CAAC;IAED,IAAI,4BAA4B;QAC9B,OAAO,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAAC;IACvD,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,IAAI,WAAW,CAAC,WAAoC;QAClD,IAAI,CAAC,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;;AAlkBH,4BAmkBC;AApjBC,aAAa;AACG,uBAAc,GAAG,0BAAc,CAAC;AAChD,aAAa;AACG,sBAAa,GAAG,yBAAa,CAAC;AAC9C,aAAa;AACG,mCAA0B,GAAG,sCAA0B,CAAC;AACxE,aAAa;AACG,yBAAgB,GAAG,4BAAgB,CAAC;AACpD,aAAa;AACG,wBAAe,GAAG,2BAAe,CAAC;AAClD,aAAa;AACG,qCAA4B,GAAG,wCAA4B,CAAC;AAC5E,aAAa;AACG,cAAK,GAAG,iBAAK,CAAC;AAC9B,aAAa;AACG,aAAI,GAAG,gBAAI,CAAC;AAC5B,aAAa;AACG,gBAAO,GAAG,mBAAO,CAAC;AAClC,aAAa;AACG,cAAK,GAAG,iBAAK,CAAC;AAC9B,aAAa;AACG,gBAAO,GAAG,mBAAO,CAAC;AAiiBpC,2EAA2E;AAC3E,SAAS,aAAa,CAAC,MAAc,EAAE,QAAkB;IACvD,KAAK,MAAM,KAAK,IAAI,+BAAmB,EAAE,CAAC;QACxC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,QAAQ,CAAC,UAAU,CACjB,QAAQ,CAAC,aAAa,EACtB,IAAI,0BAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CACjE,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,+BAAmB,EAAE,CAAC;QACxC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,6CAA6C;AAC7C,SAAS,uBAAuB,CAAC,OAAyB;IACxD,IAAI,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC9B,OAAO,qBAAY,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;QACxB,OAAO,qBAAY,CAAC,mBAAmB,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;QAC1B,OAAO,qBAAY,CAAC,YAAY,CAAC;IACnC,CAAC;IAED,OAAO,qBAAY,CAAC,OAAO,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,QAAkB,EAAE,iBAAoC;IACtF,QAAQ,CAAC,UAAU,CACjB,QAAQ,CAAC,cAAc,EACvB,IAAI,2BAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,iBAAiB,CAAC,OAAO,CAAC,CACjE,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3E,KAAK,MAAM,KAAK,IAAI,+BAAmB,EAAE,CAAC;QACxC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,EAAE,CAAC,eAAM,CAAC,oBAAoB,EAAE,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC;IAEjG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,QAAkB,EAAE,yBAA6C;IACtF,2CAA2C;IAC3C,IAAI,yBAAyB,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3F,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QACzE,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,CAAC,CAAC,WAAW,GAAG,yBAAyB,CAAC;YACjD,IACE,yBAAyB,CAAC,KAAK,YAAY,kBAAU;gBACrD,yBAAyB,CAAC,KAAK,CAAC,aAAa,CAAC,uBAAe,CAAC,SAAS,CAAC,EACxE,CAAC;gBACD,MAAM,yBAAyB,GAAG,yBAAyB,CAAC,KAAK,CAAC,aAAa,CAC7E,uBAAe,CAAC,yBAAyB,CAC1C,CAAC;gBAEF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACnD,CAAC;iBAAM,IAAI,yBAAyB,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;gBACnD,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpD,MAAM,mBAAmB,GACvB,yBAAyB,CAAC,aAAa;oBACvC,CAAC,yBAAyB,CAAC,IAAI,KAAK,mBAAU,CAAC,OAAO;wBACpD,eAAe,KAAK,qBAAY,CAAC,MAAM,CAAC,CAAC;gBAC7C,IAAI,mBAAmB,EAAE,CAAC;oBACxB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,KAAK,MAAM,iBAAiB,IAAI,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACtE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,MAAM,MAAM,GAAG,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;YACnE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,yFAAyF;IACzF,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACvC,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;YAClD,SAAS;QACX,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3C,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACrD,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAEzC,wCAAwC;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAmC,EAAE,UAA4B;IACvF,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,IACE,eAAe,CAAC,WAAW,EAAE,OAAO,CAClC,qCAAsB,CAAC,gBAAgB,EACvC,4BAAa,CAAC,KAAK,CACpB,EACD,CAAC;gBACD,eAAe,CAAC,WAAW,EAAE,KAAK,CAChC,qCAAsB,CAAC,gBAAgB,EACvC,IAAI,oDAA0B,CAC5B,eAAe,CAAC,cAAc,EAC9B,eAAe,CAAC,mBAAmB,EACnC,UAAU,EACV,eAAe,CAAC,aAAa,CAC9B,CACF,CAAC;YACJ,CAAC;YACD,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAkB;IAC1C,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,qBAAY,EAAE,CAAC;QACtC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,gCAAwB,EAAE,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,qBAAY,CAAC,OAAO,CAAC;IACrE,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,EAAE,CAAC,EAAE,CAAC;QAC1C,MAAM,eAAe,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;QACrD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QAED,IAAI,oBAAoB,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,eAAe,CAAC,cAAc,CAAC;YACtD,MAAM,cAAc,GAAG,eAAe,CAAC,cAAc,CAAC;YACtD,oBAAoB,GAAG,cAAc;gBACnC,CAAC,CAAC,cAAc,CACZ,QAAQ,CAAC,WAAW,EACpB,kBAAkB,EAClB,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CACvC;gBACH,CAAC,CAAC,kBAAkB,CAAC;QACzB,CAAC;QAAC,OAAO,aAAa,EAAE,CAAC;YACvB,IACE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAClC,qCAAsB,CAAC,gBAAgB,EACvC,4BAAa,CAAC,KAAK,CACpB,EACD,CAAC;gBACD,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAChC,qCAAsB,CAAC,gBAAgB,EACvC,IAAI,oDAA0B,CAC5B,eAAe,CAAC,cAAc,EAC9B,QAAQ,CAAC,WAAW,EACpB,aAAa,EACb,eAAe,CAAC,aAAa,CAC9B,CACF,CAAC;YACJ,CAAC;YACD,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACtC,SAAS;QACX,CAAC;QAED,IAAI,cAAkC,CAAC;QACvC,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;gBACnC,IACE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAClC,qCAAsB,CAAC,gBAAgB,EACvC,4BAAa,CAAC,aAAa,CAC5B,EACD,CAAC;oBACD,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAC/B,qCAAsB,CAAC,gBAAgB,EACvC,IAAI,uDAA6B,CAC/B,eAAe,CAAC,cAAc,EAC9B,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,CAAC,CAAC,wBAAwB,KAAK,CAAC;wBACvC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,wBAAwB,GAAG,CAAC,IAAA,WAAG,GAAE,GAAG,eAAe,CAAC,SAAS,CAAC;wBAC3E,CAAC,CAAC,CAAC,CAAC,EACN,eAAe,CAAC,aAAa,CAC9B,CACF,CAAC;gBACJ,CAAC;gBACD,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC;YACvC,CAAC;YACD,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC3C,SAAS;QACX,CAAC;aAAM,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,IAAA,eAAO,EAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAEhE,cAAc;gBACZ,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc;oBACvE,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,OAAO,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,oBAAoB,GAAG,IAAI,iCAAyB,CACxD,6FAA6F,EAC7F,QAAQ,CAAC,WAAW,CACrB,CAAC;YACF,IACE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAClC,qCAAsB,CAAC,gBAAgB,EACvC,4BAAa,CAAC,KAAK,CACpB,EACD,CAAC;gBACD,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAChC,qCAAsB,CAAC,gBAAgB,EACvC,IAAI,oDAA0B,CAC5B,eAAe,CAAC,cAAc,EAC9B,QAAQ,CAAC,WAAW,EACpB,oBAAoB,EACpB,eAAe,CAAC,aAAa,CAC9B,CACF,CAAC;YACJ,CAAC;YACD,eAAe,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QACD,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;QAChD,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,IAAI,cAAc,EAAE,CAAC;YACvE,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC;QAED,IACE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAClC,qCAAsB,CAAC,gBAAgB,EACvC,4BAAa,CAAC,KAAK,CACpB,EACD,CAAC;YACD,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAChC,qCAAsB,CAAC,gBAAgB,EACvC,IAAI,uDAA6B,CAC/B,eAAe,CAAC,cAAc,EAC9B,eAAe,CAAC,mBAAmB,EACnC,cAAc,CAAC,IAAI,CAAC,OAAO,EAC3B,eAAe,CAAC,aAAa,CAC9B,CACF,CAAC;QACJ,CAAC;QACD,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,qDAAqD;QACrD,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,mBAAmB;gBAC3C,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAC/B,mBAAwC,EACxC,yBAA4C;IAE5C,MAAM,wBAAwB,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAC9D,yBAAyB,CAAC,OAAO,CAClC,CAAC;IACF,MAAM,sBAAsB,GAAG,wBAAwB,EAAE,eAAe,CAAC;IACzE,OAAO,CACL,IAAA,2CAAsB,EAAC,sBAAsB,EAAE,yBAAyB,CAAC,eAAe,CAAC,GAAG,CAAC,CAC9F,CAAC;AACJ,CAAC;AAED,cAAc;AACd,MAAa,kBAAkB;IAI7B,YAAY,KAAe;QACzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,qBAAqB;QACvB,OAAO,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,qBAAqB;QACvB,OAAO,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,wBAAwB;QAC1B,OAAO,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,qBAAqB;QACvB,OAAO,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;IAClC,CAAC;CACF;AA3CD,gDA2CC"}
|
package/lib/sessions.js
CHANGED
|
@@ -17,6 +17,7 @@ const read_concern_1 = require("./read_concern");
|
|
|
17
17
|
const read_preference_1 = require("./read_preference");
|
|
18
18
|
const resource_management_1 = require("./resource_management");
|
|
19
19
|
const common_1 = require("./sdam/common");
|
|
20
|
+
const timeout_1 = require("./timeout");
|
|
20
21
|
const transactions_1 = require("./transactions");
|
|
21
22
|
const utils_1 = require("./utils");
|
|
22
23
|
const write_concern_1 = require("./write_concern");
|
|
@@ -50,6 +51,8 @@ class ClientSession extends mongo_types_1.TypedEventEmitter {
|
|
|
50
51
|
super();
|
|
51
52
|
/** @internal */
|
|
52
53
|
this[_a] = false;
|
|
54
|
+
/** @internal */
|
|
55
|
+
this.timeoutContext = null;
|
|
53
56
|
if (client == null) {
|
|
54
57
|
// TODO(NODE-3483)
|
|
55
58
|
throw new error_1.MongoRuntimeError('ClientSession requires a MongoClient');
|
|
@@ -142,29 +145,28 @@ class ClientSession extends mongo_types_1.TypedEventEmitter {
|
|
|
142
145
|
async endSession(options) {
|
|
143
146
|
try {
|
|
144
147
|
if (this.inTransaction()) {
|
|
145
|
-
await this.abortTransaction();
|
|
148
|
+
await this.abortTransaction({ ...options, throwTimeout: true });
|
|
146
149
|
}
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
// spec indicates that we should ignore all errors for `endSessions`
|
|
153
|
+
if (error.name === 'MongoOperationTimeoutError')
|
|
154
|
+
throw error;
|
|
155
|
+
(0, utils_1.squashError)(error);
|
|
156
|
+
}
|
|
157
|
+
finally {
|
|
147
158
|
if (!this.hasEnded) {
|
|
148
159
|
const serverSession = this[kServerSession];
|
|
149
160
|
if (serverSession != null) {
|
|
150
161
|
// release the server session back to the pool
|
|
151
162
|
this.sessionPool.release(serverSession);
|
|
152
|
-
//
|
|
153
|
-
|
|
154
|
-
value: ServerSession.clone(serverSession),
|
|
155
|
-
writable: false
|
|
156
|
-
});
|
|
163
|
+
// Store a clone of the server session for reference (debugging)
|
|
164
|
+
this[kServerSession] = new ServerSession(serverSession);
|
|
157
165
|
}
|
|
158
166
|
// mark the session as ended, and emit a signal
|
|
159
167
|
this.hasEnded = true;
|
|
160
168
|
this.emit('ended', this);
|
|
161
169
|
}
|
|
162
|
-
}
|
|
163
|
-
catch (error) {
|
|
164
|
-
// spec indicates that we should ignore all errors for `endSessions`
|
|
165
|
-
(0, utils_1.squashError)(error);
|
|
166
|
-
}
|
|
167
|
-
finally {
|
|
168
170
|
maybeClearPinnedConnection(this, { force: true, ...options });
|
|
169
171
|
}
|
|
170
172
|
}
|
|
@@ -283,8 +285,10 @@ class ClientSession extends mongo_types_1.TypedEventEmitter {
|
|
|
283
285
|
}
|
|
284
286
|
/**
|
|
285
287
|
* Commits the currently active transaction in this session.
|
|
288
|
+
*
|
|
289
|
+
* @param options - Optional options, can be used to override `defaultTimeoutMS`.
|
|
286
290
|
*/
|
|
287
|
-
async commitTransaction() {
|
|
291
|
+
async commitTransaction(options) {
|
|
288
292
|
if (this.transaction.state === transactions_1.TxnState.NO_TRANSACTION) {
|
|
289
293
|
throw new error_1.MongoTransactionError('No transaction started');
|
|
290
294
|
}
|
|
@@ -298,12 +302,30 @@ class ClientSession extends mongo_types_1.TypedEventEmitter {
|
|
|
298
302
|
throw new error_1.MongoTransactionError('Cannot call commitTransaction after calling abortTransaction');
|
|
299
303
|
}
|
|
300
304
|
const command = { commitTransaction: 1 };
|
|
305
|
+
const timeoutMS = typeof options?.timeoutMS === 'number'
|
|
306
|
+
? options.timeoutMS
|
|
307
|
+
: typeof this.timeoutMS === 'number'
|
|
308
|
+
? this.timeoutMS
|
|
309
|
+
: null;
|
|
301
310
|
const wc = this.transaction.options.writeConcern ?? this.clientOptions?.writeConcern;
|
|
302
311
|
if (wc != null) {
|
|
303
|
-
|
|
312
|
+
if (timeoutMS == null && this.timeoutContext == null) {
|
|
313
|
+
write_concern_1.WriteConcern.apply(command, { wtimeoutMS: 10000, w: 'majority', ...wc });
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
const wcKeys = Object.keys(wc);
|
|
317
|
+
if (wcKeys.length > 2 || (!wcKeys.includes('wtimeoutMS') && !wcKeys.includes('wTimeoutMS')))
|
|
318
|
+
// if the write concern was specified with wTimeoutMS, then we set both wtimeoutMS and wTimeoutMS, guaranteeing at least two keys, so if we have more than two keys, then we can automatically assume that we should add the write concern to the command. If it has 2 or fewer keys, we need to check that those keys aren't the wtimeoutMS or wTimeoutMS options before we add the write concern to the command
|
|
319
|
+
write_concern_1.WriteConcern.apply(command, { ...wc, wtimeoutMS: undefined });
|
|
320
|
+
}
|
|
304
321
|
}
|
|
305
322
|
if (this.transaction.state === transactions_1.TxnState.TRANSACTION_COMMITTED || this.commitAttempted) {
|
|
306
|
-
|
|
323
|
+
if (timeoutMS == null && this.timeoutContext == null) {
|
|
324
|
+
write_concern_1.WriteConcern.apply(command, { wtimeoutMS: 10000, ...wc, w: 'majority' });
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
write_concern_1.WriteConcern.apply(command, { w: 'majority', ...wc, wtimeoutMS: undefined });
|
|
328
|
+
}
|
|
307
329
|
}
|
|
308
330
|
if (typeof this.transaction.options.maxTimeMS === 'number') {
|
|
309
331
|
command.maxTimeMS = this.transaction.options.maxTimeMS;
|
|
@@ -316,8 +338,16 @@ class ClientSession extends mongo_types_1.TypedEventEmitter {
|
|
|
316
338
|
readPreference: read_preference_1.ReadPreference.primary,
|
|
317
339
|
bypassPinningCheck: true
|
|
318
340
|
});
|
|
341
|
+
const timeoutContext = this.timeoutContext ??
|
|
342
|
+
(typeof timeoutMS === 'number'
|
|
343
|
+
? timeout_1.TimeoutContext.create({
|
|
344
|
+
serverSelectionTimeoutMS: this.clientOptions.serverSelectionTimeoutMS,
|
|
345
|
+
socketTimeoutMS: this.clientOptions.socketTimeoutMS,
|
|
346
|
+
timeoutMS
|
|
347
|
+
})
|
|
348
|
+
: null);
|
|
319
349
|
try {
|
|
320
|
-
await (0, execute_operation_1.executeOperation)(this.client, operation);
|
|
350
|
+
await (0, execute_operation_1.executeOperation)(this.client, operation, timeoutContext);
|
|
321
351
|
this.commitAttempted = undefined;
|
|
322
352
|
return;
|
|
323
353
|
}
|
|
@@ -333,7 +363,7 @@ class ClientSession extends mongo_types_1.TypedEventEmitter {
|
|
|
333
363
|
session: this,
|
|
334
364
|
readPreference: read_preference_1.ReadPreference.primary,
|
|
335
365
|
bypassPinningCheck: true
|
|
336
|
-
}));
|
|
366
|
+
}), timeoutContext);
|
|
337
367
|
return;
|
|
338
368
|
}
|
|
339
369
|
catch (retryCommitError) {
|
|
@@ -359,10 +389,7 @@ class ClientSession extends mongo_types_1.TypedEventEmitter {
|
|
|
359
389
|
this.transaction.transition(transactions_1.TxnState.TRANSACTION_COMMITTED);
|
|
360
390
|
}
|
|
361
391
|
}
|
|
362
|
-
|
|
363
|
-
* Aborts the currently active transaction in this session.
|
|
364
|
-
*/
|
|
365
|
-
async abortTransaction() {
|
|
392
|
+
async abortTransaction(options) {
|
|
366
393
|
if (this.transaction.state === transactions_1.TxnState.NO_TRANSACTION) {
|
|
367
394
|
throw new error_1.MongoTransactionError('No transaction started');
|
|
368
395
|
}
|
|
@@ -379,8 +406,22 @@ class ClientSession extends mongo_types_1.TypedEventEmitter {
|
|
|
379
406
|
throw new error_1.MongoTransactionError('Cannot call abortTransaction after calling commitTransaction');
|
|
380
407
|
}
|
|
381
408
|
const command = { abortTransaction: 1 };
|
|
409
|
+
const timeoutMS = typeof options?.timeoutMS === 'number'
|
|
410
|
+
? options.timeoutMS
|
|
411
|
+
: this.timeoutContext?.csotEnabled()
|
|
412
|
+
? this.timeoutContext.timeoutMS // refresh timeoutMS for abort operation
|
|
413
|
+
: typeof this.timeoutMS === 'number'
|
|
414
|
+
? this.timeoutMS
|
|
415
|
+
: null;
|
|
416
|
+
const timeoutContext = timeoutMS != null
|
|
417
|
+
? timeout_1.TimeoutContext.create({
|
|
418
|
+
timeoutMS,
|
|
419
|
+
serverSelectionTimeoutMS: this.clientOptions.serverSelectionTimeoutMS,
|
|
420
|
+
socketTimeoutMS: this.clientOptions.socketTimeoutMS
|
|
421
|
+
})
|
|
422
|
+
: null;
|
|
382
423
|
const wc = this.transaction.options.writeConcern ?? this.clientOptions?.writeConcern;
|
|
383
|
-
if (wc != null) {
|
|
424
|
+
if (wc != null && timeoutMS == null) {
|
|
384
425
|
write_concern_1.WriteConcern.apply(command, { wtimeoutMS: 10000, w: 'majority', ...wc });
|
|
385
426
|
}
|
|
386
427
|
if (this.transaction.recoveryToken) {
|
|
@@ -392,18 +433,28 @@ class ClientSession extends mongo_types_1.TypedEventEmitter {
|
|
|
392
433
|
bypassPinningCheck: true
|
|
393
434
|
});
|
|
394
435
|
try {
|
|
395
|
-
await (0, execute_operation_1.executeOperation)(this.client, operation);
|
|
436
|
+
await (0, execute_operation_1.executeOperation)(this.client, operation, timeoutContext);
|
|
396
437
|
this.unpin();
|
|
397
438
|
return;
|
|
398
439
|
}
|
|
399
440
|
catch (firstAbortError) {
|
|
400
441
|
this.unpin();
|
|
442
|
+
if (firstAbortError.name === 'MongoRuntimeError')
|
|
443
|
+
throw firstAbortError;
|
|
444
|
+
if (options?.throwTimeout && firstAbortError.name === 'MongoOperationTimeoutError') {
|
|
445
|
+
throw firstAbortError;
|
|
446
|
+
}
|
|
401
447
|
if (firstAbortError instanceof error_1.MongoError && (0, error_1.isRetryableWriteError)(firstAbortError)) {
|
|
402
448
|
try {
|
|
403
|
-
await (0, execute_operation_1.executeOperation)(this.client, operation);
|
|
449
|
+
await (0, execute_operation_1.executeOperation)(this.client, operation, timeoutContext);
|
|
404
450
|
return;
|
|
405
451
|
}
|
|
406
|
-
catch {
|
|
452
|
+
catch (secondAbortError) {
|
|
453
|
+
if (secondAbortError.name === 'MongoRuntimeError')
|
|
454
|
+
throw secondAbortError;
|
|
455
|
+
if (options?.throwTimeout && secondAbortError.name === 'MongoOperationTimeoutError') {
|
|
456
|
+
throw secondAbortError;
|
|
457
|
+
}
|
|
407
458
|
// we do not retry the retry
|
|
408
459
|
}
|
|
409
460
|
}
|
|
@@ -431,6 +482,9 @@ class ClientSession extends mongo_types_1.TypedEventEmitter {
|
|
|
431
482
|
* `Promise.allSettled`, `Promise.race`, etc to parallelize operations inside a transaction is
|
|
432
483
|
* undefined behaviour.
|
|
433
484
|
*
|
|
485
|
+
* **IMPORTANT:** When running an operation inside a `withTransaction` callback, if it is not
|
|
486
|
+
* provided the explicit session in its options, it will not be part of the transaction and it will not respect timeoutMS.
|
|
487
|
+
*
|
|
434
488
|
*
|
|
435
489
|
* @remarks
|
|
436
490
|
* - If all operations successfully complete and the `commitTransaction` operation is successful, then the provided function will return the result of the provided function.
|
|
@@ -456,71 +510,85 @@ class ClientSession extends mongo_types_1.TypedEventEmitter {
|
|
|
456
510
|
*/
|
|
457
511
|
async withTransaction(fn, options) {
|
|
458
512
|
const MAX_TIMEOUT = 120000;
|
|
459
|
-
const
|
|
513
|
+
const timeoutMS = options?.timeoutMS ?? this.timeoutMS ?? null;
|
|
514
|
+
this.timeoutContext =
|
|
515
|
+
timeoutMS != null
|
|
516
|
+
? timeout_1.TimeoutContext.create({
|
|
517
|
+
timeoutMS,
|
|
518
|
+
serverSelectionTimeoutMS: this.clientOptions.serverSelectionTimeoutMS,
|
|
519
|
+
socketTimeoutMS: this.clientOptions.socketTimeoutMS
|
|
520
|
+
})
|
|
521
|
+
: null;
|
|
522
|
+
const startTime = this.timeoutContext?.csotEnabled() ? this.timeoutContext.start : (0, utils_1.now)();
|
|
460
523
|
let committed = false;
|
|
461
524
|
let result;
|
|
462
|
-
|
|
463
|
-
this.startTransaction(options); // may throw on error
|
|
464
|
-
try {
|
|
465
|
-
const promise = fn(this);
|
|
466
|
-
if (!(0, utils_1.isPromiseLike)(promise)) {
|
|
467
|
-
throw new error_1.MongoInvalidArgumentError('Function provided to `withTransaction` must return a Promise');
|
|
468
|
-
}
|
|
469
|
-
result = await promise;
|
|
470
|
-
if (this.transaction.state === transactions_1.TxnState.NO_TRANSACTION ||
|
|
471
|
-
this.transaction.state === transactions_1.TxnState.TRANSACTION_COMMITTED ||
|
|
472
|
-
this.transaction.state === transactions_1.TxnState.TRANSACTION_ABORTED) {
|
|
473
|
-
// Assume callback intentionally ended the transaction
|
|
474
|
-
return result;
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
catch (fnError) {
|
|
478
|
-
if (!(fnError instanceof error_1.MongoError) || fnError instanceof error_1.MongoInvalidArgumentError) {
|
|
479
|
-
await this.abortTransaction();
|
|
480
|
-
throw fnError;
|
|
481
|
-
}
|
|
482
|
-
if (this.transaction.state === transactions_1.TxnState.STARTING_TRANSACTION ||
|
|
483
|
-
this.transaction.state === transactions_1.TxnState.TRANSACTION_IN_PROGRESS) {
|
|
484
|
-
await this.abortTransaction();
|
|
485
|
-
}
|
|
486
|
-
if (fnError.hasErrorLabel(error_1.MongoErrorLabel.TransientTransactionError) &&
|
|
487
|
-
(0, utils_1.now)() - startTime < MAX_TIMEOUT) {
|
|
488
|
-
continue;
|
|
489
|
-
}
|
|
490
|
-
throw fnError;
|
|
491
|
-
}
|
|
525
|
+
try {
|
|
492
526
|
while (!committed) {
|
|
527
|
+
this.startTransaction(options); // may throw on error
|
|
493
528
|
try {
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
529
|
+
const promise = fn(this);
|
|
530
|
+
if (!(0, utils_1.isPromiseLike)(promise)) {
|
|
531
|
+
throw new error_1.MongoInvalidArgumentError('Function provided to `withTransaction` must return a Promise');
|
|
532
|
+
}
|
|
533
|
+
result = await promise;
|
|
534
|
+
if (this.transaction.state === transactions_1.TxnState.NO_TRANSACTION ||
|
|
535
|
+
this.transaction.state === transactions_1.TxnState.TRANSACTION_COMMITTED ||
|
|
536
|
+
this.transaction.state === transactions_1.TxnState.TRANSACTION_ABORTED) {
|
|
537
|
+
// Assume callback intentionally ended the transaction
|
|
538
|
+
return result;
|
|
539
|
+
}
|
|
501
540
|
}
|
|
502
|
-
catch (
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
(0, utils_1.now)() - startTime < MAX_TIMEOUT) {
|
|
541
|
+
catch (fnError) {
|
|
542
|
+
if (!(fnError instanceof error_1.MongoError) || fnError instanceof error_1.MongoInvalidArgumentError) {
|
|
543
|
+
await this.abortTransaction();
|
|
544
|
+
throw fnError;
|
|
545
|
+
}
|
|
546
|
+
if (this.transaction.state === transactions_1.TxnState.STARTING_TRANSACTION ||
|
|
547
|
+
this.transaction.state === transactions_1.TxnState.TRANSACTION_IN_PROGRESS) {
|
|
548
|
+
await this.abortTransaction();
|
|
549
|
+
}
|
|
550
|
+
if (fnError.hasErrorLabel(error_1.MongoErrorLabel.TransientTransactionError) &&
|
|
551
|
+
(this.timeoutContext != null || (0, utils_1.now)() - startTime < MAX_TIMEOUT)) {
|
|
513
552
|
continue;
|
|
514
553
|
}
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
554
|
+
throw fnError;
|
|
555
|
+
}
|
|
556
|
+
while (!committed) {
|
|
557
|
+
try {
|
|
558
|
+
/*
|
|
559
|
+
* We will rely on ClientSession.commitTransaction() to
|
|
560
|
+
* apply a majority write concern if commitTransaction is
|
|
561
|
+
* being retried (see: DRIVERS-601)
|
|
562
|
+
*/
|
|
563
|
+
await this.commitTransaction();
|
|
564
|
+
committed = true;
|
|
565
|
+
}
|
|
566
|
+
catch (commitError) {
|
|
567
|
+
/*
|
|
568
|
+
* Note: a maxTimeMS error will have the MaxTimeMSExpired
|
|
569
|
+
* code (50) and can be reported as a top-level error or
|
|
570
|
+
* inside writeConcernError, ex.
|
|
571
|
+
* { ok:0, code: 50, codeName: 'MaxTimeMSExpired' }
|
|
572
|
+
* { ok:1, writeConcernError: { code: 50, codeName: 'MaxTimeMSExpired' } }
|
|
573
|
+
*/
|
|
574
|
+
if (!isMaxTimeMSExpiredError(commitError) &&
|
|
575
|
+
commitError.hasErrorLabel(error_1.MongoErrorLabel.UnknownTransactionCommitResult) &&
|
|
576
|
+
(this.timeoutContext != null || (0, utils_1.now)() - startTime < MAX_TIMEOUT)) {
|
|
577
|
+
continue;
|
|
578
|
+
}
|
|
579
|
+
if (commitError.hasErrorLabel(error_1.MongoErrorLabel.TransientTransactionError) &&
|
|
580
|
+
(this.timeoutContext != null || (0, utils_1.now)() - startTime < MAX_TIMEOUT)) {
|
|
581
|
+
break;
|
|
582
|
+
}
|
|
583
|
+
throw commitError;
|
|
518
584
|
}
|
|
519
|
-
throw commitError;
|
|
520
585
|
}
|
|
521
586
|
}
|
|
587
|
+
return result;
|
|
588
|
+
}
|
|
589
|
+
finally {
|
|
590
|
+
this.timeoutContext = null;
|
|
522
591
|
}
|
|
523
|
-
return result;
|
|
524
592
|
}
|
|
525
593
|
}
|
|
526
594
|
exports.ClientSession = ClientSession;
|
|
@@ -605,7 +673,16 @@ function isMaxTimeMSExpiredError(err) {
|
|
|
605
673
|
*/
|
|
606
674
|
class ServerSession {
|
|
607
675
|
/** @internal */
|
|
608
|
-
constructor() {
|
|
676
|
+
constructor(cloned) {
|
|
677
|
+
if (cloned != null) {
|
|
678
|
+
const idBytes = Buffer.allocUnsafe(16);
|
|
679
|
+
idBytes.set(cloned.id.id.buffer);
|
|
680
|
+
this.id = { id: new bson_1.Binary(idBytes, cloned.id.id.sub_type) };
|
|
681
|
+
this.lastUse = cloned.lastUse;
|
|
682
|
+
this.txnNumber = cloned.txnNumber;
|
|
683
|
+
this.isDirty = cloned.isDirty;
|
|
684
|
+
return;
|
|
685
|
+
}
|
|
609
686
|
this.id = { id: new bson_1.Binary((0, utils_1.uuidV4)(), bson_1.Binary.SUBTYPE_UUID) };
|
|
610
687
|
this.lastUse = (0, utils_1.now)();
|
|
611
688
|
this.txnNumber = 0;
|
|
@@ -622,24 +699,6 @@ class ServerSession {
|
|
|
622
699
|
const idleTimeMinutes = Math.round((((0, utils_1.calculateDurationInMs)(this.lastUse) % 86400000) % 3600000) / 60000);
|
|
623
700
|
return idleTimeMinutes > sessionTimeoutMinutes - 1;
|
|
624
701
|
}
|
|
625
|
-
/**
|
|
626
|
-
* @internal
|
|
627
|
-
* Cloning meant to keep a readable reference to the server session data
|
|
628
|
-
* after ClientSession has ended
|
|
629
|
-
*/
|
|
630
|
-
static clone(serverSession) {
|
|
631
|
-
const arrayBuffer = new ArrayBuffer(16);
|
|
632
|
-
const idBytes = Buffer.from(arrayBuffer);
|
|
633
|
-
idBytes.set(serverSession.id.id.buffer);
|
|
634
|
-
const id = new bson_1.Binary(idBytes, serverSession.id.id.sub_type);
|
|
635
|
-
// Manual prototype construction to avoid modifying the constructor of this class
|
|
636
|
-
return Object.setPrototypeOf({
|
|
637
|
-
id: { id },
|
|
638
|
-
lastUse: serverSession.lastUse,
|
|
639
|
-
txnNumber: serverSession.txnNumber,
|
|
640
|
-
isDirty: serverSession.isDirty
|
|
641
|
-
}, ServerSession.prototype);
|
|
642
|
-
}
|
|
643
702
|
}
|
|
644
703
|
exports.ServerSession = ServerSession;
|
|
645
704
|
/**
|