@lossless.org/client 1.19.0 → 1.20.1

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.
Files changed (34) hide show
  1. package/dist_ts/00_commitinfo_data.js +1 -1
  2. package/dist_ts/nosqldb/classes.atomicdelete.js +12 -4
  3. package/dist_ts/nosqldb/classes.atomicfindoneandupdate.js +11 -2
  4. package/dist_ts/nosqldb/classes.atomicupdate.d.ts +2 -0
  5. package/dist_ts/nosqldb/classes.atomicupdate.js +32 -5
  6. package/dist_ts/nosqldb/classes.bootstraprecord.js +7 -2
  7. package/dist_ts/nosqldb/classes.collection.js +52 -7
  8. package/dist_ts/nosqldb/classes.db.d.ts +19 -0
  9. package/dist_ts/nosqldb/classes.db.js +28 -21
  10. package/dist_ts/nosqldb/classes.doc.js +2 -2
  11. package/dist_ts/nosqldb/classes.exactpersistence.js +17 -2
  12. package/dist_ts/nosqldb/classes.persistence.d.ts +6 -0
  13. package/dist_ts/nosqldb/classes.persistence.js +16 -1
  14. package/dist_ts/nosqldb/classes.session.d.ts +11 -0
  15. package/dist_ts/nosqldb/classes.session.js +51 -1
  16. package/dist_ts/nosqldb/classes.writeobserver.d.ts +57 -0
  17. package/dist_ts/nosqldb/classes.writeobserver.js +139 -0
  18. package/dist_ts/nosqldb/connectionstring.d.ts +15 -0
  19. package/dist_ts/nosqldb/connectionstring.js +194 -0
  20. package/package.json +3 -3
  21. package/readme.md +3 -2
  22. package/ts/00_commitinfo_data.ts +1 -1
  23. package/ts/nosqldb/classes.atomicdelete.ts +11 -2
  24. package/ts/nosqldb/classes.atomicfindoneandupdate.ts +22 -0
  25. package/ts/nosqldb/classes.atomicupdate.ts +53 -3
  26. package/ts/nosqldb/classes.bootstraprecord.ts +7 -1
  27. package/ts/nosqldb/classes.collection.ts +63 -4
  28. package/ts/nosqldb/classes.db.ts +42 -22
  29. package/ts/nosqldb/classes.doc.ts +1 -1
  30. package/ts/nosqldb/classes.exactpersistence.ts +24 -0
  31. package/ts/nosqldb/classes.persistence.ts +16 -0
  32. package/ts/nosqldb/classes.session.ts +73 -0
  33. package/ts/nosqldb/classes.writeobserver.ts +224 -0
  34. package/ts/nosqldb/connectionstring.ts +243 -0
@@ -5,8 +5,10 @@ import { SmartdataMongoAdministration } from './classes.mongoadministration.js';
5
5
  import { SmartdataSession } from './classes.session.js';
6
6
  import { collectionTopologyDbInspectionSymbol } from './classes.collectiontopology.js';
7
7
  import { type ISmartdataNamespaceInspectionOptions, type ISmartdataNamespaceInspection } from './classes.namespaceinspection.js';
8
+ import { type ISmartdataWriteObserverOptions } from './classes.writeobserver.js';
8
9
  export { SmartdataSession } from './classes.session.js';
9
10
  export type { ISmartdataTransactionOptions, TSmartdataOrdinarySession, TSmartdataTransactionCommitOutcome, } from './classes.session.js';
11
+ export type { ISmartdataWriteObserverOptions, ISmartdataWriteReport, TSmartdataObservedFields, TSmartdataObservedValue, TSmartdataWriteKind, } from './classes.writeobserver.js';
10
12
  import { type ISmartdataEngineIdentity } from './engineidentity.js';
11
13
  import type { ICapabilities } from '../core/interfaces.js';
12
14
  /**
@@ -123,6 +125,23 @@ export declare class SmartdataDb {
123
125
  * Creates a SmartData-owned session for model transactions.
124
126
  */
125
127
  createSession(): SmartdataSession;
128
+ /**
129
+ * Observes every acknowledged write that this process makes through the
130
+ * database's models: inserts, saves, deletes, atomic and exact writes. Each
131
+ * write is reported once, after the database acknowledged it; a write inside
132
+ * a `createSession()` transaction is reported after the commit, and not at
133
+ * all when the transaction rolls back or its outcome is unknown. A write
134
+ * that changed nothing (no match, nothing deleted) is not reported. Writes
135
+ * of other processes, raw driver access and migrations are not observed.
136
+ *
137
+ * Reports carry the values of the requested top-level `fields` only, from
138
+ * the written documents and from the selector's equality conditions. While
139
+ * an observer is registered, transactions on raw `startSession()` sessions
140
+ * are refused for model writes, since their outcome is not known here.
141
+ *
142
+ * Returns the function that stops the observer.
143
+ */
144
+ observeWrites(optionsArg: ISmartdataWriteObserverOptions): () => void;
126
145
  /**
127
146
  * Creates a narrowly scoped MongoDB administration facade bound to this
128
147
  * SmartData lifecycle. Applications never need direct driver access.
@@ -6,8 +6,10 @@ import { SmartdataMongoAdministration } from './classes.mongoadministration.js';
6
6
  import { createSmartdataSession, invalidateSmartdataSessions, SmartdataSession, unwrapSmartdataSessionInvalidationErrors, } from './classes.session.js';
7
7
  import { collectionTopologyDbInspectionSymbol } from './classes.collectiontopology.js';
8
8
  import { inspectSmartdataNamespace, } from './classes.namespaceinspection.js';
9
+ import { addSmartdataWriteObserver, } from './classes.writeobserver.js';
9
10
  export { SmartdataSession } from './classes.session.js';
10
11
  import { logger } from './logging.js';
12
+ import { buildSmartdataConnectionUrl, redactSmartdataConnectionError } from './connectionstring.js';
11
13
  import { assertDataOptions, SmartdataOperationBudget } from './classes.operationbudget.js';
12
14
  import { composeSmartdataCapabilities, probeSmartdataEngineIdentity, smartdataCompositeGrouping, smartdataEngineBackend, unidentifiedSmartdataEngine, } from './engineidentity.js';
13
15
  const readinessDefaultTimeoutMs = 2_000;
@@ -95,26 +97,11 @@ export class SmartdataDb {
95
97
  }
96
98
  this.beginLifecycleOperation('init');
97
99
  this.transitionLifecycle('connecting');
100
+ // Read once, so a failure is redacted with the credentials this attempt connected with.
101
+ const descriptor = this.smartdataOptions;
98
102
  let candidateClient;
99
103
  try {
100
104
  try {
101
- // Safely encode credentials to handle special characters
102
- const encodedUser = this.smartdataOptions.mongoDbUser
103
- ? encodeURIComponent(this.smartdataOptions.mongoDbUser)
104
- : '';
105
- const encodedPass = this.smartdataOptions.mongoDbPass
106
- ? encodeURIComponent(this.smartdataOptions.mongoDbPass)
107
- : '';
108
- const finalConnectionUrl = this.smartdataOptions.mongoDbUrl
109
- .replace('<USERNAME>', encodedUser)
110
- .replace('<username>', encodedUser)
111
- .replace('<USER>', encodedUser)
112
- .replace('<user>', encodedUser)
113
- .replace('<PASSWORD>', encodedPass)
114
- .replace('<password>', encodedPass)
115
- .replace('<DBNAME>', this.smartdataOptions.mongoDbName || '')
116
- .replace('<dbname>', this.smartdataOptions.mongoDbName || '');
117
- const descriptor = this.smartdataOptions;
118
105
  const clientOptions = {
119
106
  maxPoolSize: descriptor.maxPoolSize ?? 100,
120
107
  maxIdleTimeMS: descriptor.maxIdleTimeMS ?? 300000,
@@ -123,7 +110,7 @@ export class SmartdataDb {
123
110
  socketTimeoutMS: descriptor.socketTimeoutMS ?? 30000,
124
111
  retryWrites: true,
125
112
  };
126
- candidateClient = new plugins.mongodb.MongoClient(finalConnectionUrl, clientOptions);
113
+ candidateClient = new plugins.mongodb.MongoClient(buildSmartdataConnectionUrl(descriptor), clientOptions);
127
114
  this.pendingClient = candidateClient;
128
115
  const connectingClient = candidateClient;
129
116
  let cancellationCleanup;
@@ -182,9 +169,10 @@ export class SmartdataDb {
182
169
  ? 'SmartData connection setup and cleanup failed; close must be retried.'
183
170
  : 'SmartData connection setup failed or was cancelled.');
184
171
  }
172
+ const setupError = new SmartdataPersistenceError('unsupported_operation', 'SmartData connection setup failed.', { cause: redactSmartdataConnectionError(error, descriptor) });
185
173
  if (cleanupError)
186
- throw new AggregateError([error, cleanupError], 'SmartData connection setup and cleanup failed; close must be retried.');
187
- throw error;
174
+ throw new AggregateError([setupError, redactSmartdataConnectionError(cleanupError, descriptor)], 'SmartData connection setup and cleanup failed; close must be retried.');
175
+ throw setupError;
188
176
  }
189
177
  }
190
178
  finally {
@@ -338,6 +326,25 @@ export class SmartdataDb {
338
326
  createSession() {
339
327
  return createSmartdataSession(this);
340
328
  }
329
+ /**
330
+ * Observes every acknowledged write that this process makes through the
331
+ * database's models: inserts, saves, deletes, atomic and exact writes. Each
332
+ * write is reported once, after the database acknowledged it; a write inside
333
+ * a `createSession()` transaction is reported after the commit, and not at
334
+ * all when the transaction rolls back or its outcome is unknown. A write
335
+ * that changed nothing (no match, nothing deleted) is not reported. Writes
336
+ * of other processes, raw driver access and migrations are not observed.
337
+ *
338
+ * Reports carry the values of the requested top-level `fields` only, from
339
+ * the written documents and from the selector's equality conditions. While
340
+ * an observer is registered, transactions on raw `startSession()` sessions
341
+ * are refused for model writes, since their outcome is not known here.
342
+ *
343
+ * Returns the function that stops the observer.
344
+ */
345
+ observeWrites(optionsArg) {
346
+ return addSmartdataWriteObserver(this, optionsArg);
347
+ }
341
348
  /**
342
349
  * Creates a narrowly scoped MongoDB administration facade bound to this
343
350
  * SmartData lifecycle. Applications never need direct driver access.
@@ -491,4 +498,4 @@ export class SmartdataDb {
491
498
  };
492
499
  }
493
500
  }
494
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5kYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL25vc3FsZGIvY2xhc3Nlcy5kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixvQkFBb0IsRUFDcEIseUJBQXlCLEdBQzFCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEYsT0FBTyxFQUNMLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ2hCLHdDQUF3QyxHQUN6QyxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZGLE9BQU8sRUFDTCx5QkFBeUIsR0FHMUIsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU94RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNGLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLDBCQUEwQixFQUMxQixzQkFBc0IsRUFDdEIsMkJBQTJCLEdBRTVCLE1BQU0scUJBQXFCLENBQUM7QUFxRzdCLE1BQU0seUJBQXlCLEdBQUcsS0FBSyxDQUFDO0FBQ3hDLE1BQU0seUJBQXlCLEdBQUcsTUFBTSxDQUFDO0FBRXpDLE1BQU0scUJBQXFCLEdBQUcsQ0FDNUIsUUFBaUIsRUFDakIsZUFBa0MsRUFDbEMsY0FB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
501
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5kYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL25vc3FsZGIvY2xhc3Nlcy5kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixvQkFBb0IsRUFDcEIseUJBQXlCLEdBQzFCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEYsT0FBTyxFQUNMLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ2hCLHdDQUF3QyxHQUN6QyxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZGLE9BQU8sRUFDTCx5QkFBeUIsR0FHMUIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQ0wseUJBQXlCLEdBRTFCLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFjeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRixPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1QiwwQkFBMEIsRUFDMUIsc0JBQXNCLEVBQ3RCLDJCQUEyQixHQUU1QixNQUFNLHFCQUFxQixDQUFDO0FBcUc3QixNQUFNLHlCQUF5QixHQUFHLEtBQUssQ0FBQztBQUN4QyxNQUFNLHlCQUF5QixHQUFHLE1BQU0sQ0FBQztBQUV6QyxNQUFNLHFCQUFxQixHQUFHLENBQzVCLFFBQWlCLEVBQ2pCLGVBQWtDLEVBQ2xDLGNBQXNCLEVBQ3RCLGFBQWEsR0FBRyxLQUFLLEVBQ0ksRUFBRTtJQUMzQixJQUNFLFFBQVEsS0FBSyxJQUFJO1FBQ2pCLE9BQU8sUUFBUSxLQUFLLFFBQVE7UUFDNUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDdkIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUNwRCxDQUFDO1FBQ0QsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyxrQkFBa0IsRUFDbEIsR0FBRyxjQUFjLDBCQUEwQixDQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsSUFDRSxDQUFDLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLE1BQU0sQ0FBQztRQUMxRCxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLGVBQWUsQ0FBQyxNQUFNLENBQUM7UUFDOUUsSUFBSSxDQUFDLElBQUksQ0FDUCxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1QsT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FDbEUsRUFDRCxDQUFDO1FBQ0QsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyxrQkFBa0IsRUFDbEIsR0FBRyxjQUFjLHdCQUF3QixDQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUNELEtBQUssTUFBTSxHQUFHLElBQUksSUFBZ0IsRUFBRSxDQUFDO1FBQ25DLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyxrQkFBa0IsRUFDbEIsR0FBRyxjQUFjLHFDQUFxQyxDQUN2RCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFFBQW1DLENBQUM7QUFDN0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxPQUFPLFdBQVc7SUFDdEIsZ0JBQWdCLENBQXNCO0lBQ3RDLGFBQWEsQ0FBK0I7SUFDNUMsT0FBTyxDQUFzQjtJQUM3QixNQUFNLENBQW9CO0lBQzFCLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkQsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBNEIsQ0FBQztJQUN2RSxjQUFjLEdBQStCLFNBQVMsQ0FBQztJQUN2RCxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLHdCQUF3QixHQUEwQyxJQUFJLENBQUM7SUFDdkUsYUFBYSxDQUErQjtJQUNwRCx1RkFBdUY7SUFDL0UsYUFBYSxDQUF5QztJQUN0RCxtQkFBbUIsR0FBNkIsMkJBQTJCLENBQUM7SUFDNUUsaUJBQWlCLENBQTRCO0lBRXJELFlBQVksZ0JBQXFDO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUN4QixLQUFLLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxpRUFBaUU7SUFDakUsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVELG1GQUFtRjtJQUN6RSxtQkFBbUIsQ0FBQyxXQUFxQztRQUNqRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsV0FBVyxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLEtBQUssU0FBUztZQUM1QyxDQUFDLENBQUMsU0FBUztZQUNYLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLEVBQUUsMEJBQTBCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsWUFBWTtJQUNMLEtBQUssQ0FBQyxlQUFlLENBQWMsU0FBaUI7UUFDekQsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUksU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCx3RUFBd0U7SUFFeEU7O09BRUc7SUFDSSxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQW9DLEVBQUU7UUFDdEQsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTTtZQUN4QyxDQUFDLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMxRixJQUFJLENBQUM7WUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFBQyxDQUFDO1FBQUMsT0FBTyxRQUFRLEVBQUUsQ0FBQztZQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUFDLE1BQU0sUUFBUSxDQUFDO1FBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZDLHdGQUF3RjtRQUN4RixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxlQUF3RCxDQUFDO1FBQzdELElBQUksQ0FBQztZQUNILElBQUksQ0FBQztnQkFDSCxNQUFNLGFBQWEsR0FBdUM7b0JBQ3hELFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVyxJQUFJLEdBQUc7b0JBQzFDLGFBQWEsRUFBRSxVQUFVLENBQUMsYUFBYSxJQUFJLE1BQU07b0JBQ2pELHdCQUF3QixFQUN0QixNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksVUFBVSxDQUFDLHdCQUF3QixJQUFJLEtBQUs7b0JBQ3ZFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDN0QsZUFBZSxFQUFFLFVBQVUsQ0FBQyxlQUFlLElBQUksS0FBSztvQkFDcEQsV0FBVyxFQUFFLElBQUk7aUJBQ2xCLENBQUM7Z0JBRUYsZUFBZSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQy9DLDJCQUEyQixDQUFDLFVBQVUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsYUFBYSxHQUFHLGVBQWUsQ0FBQztnQkFDckMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7Z0JBQ3pDLElBQUksbUJBQThDLENBQUM7Z0JBQ25ELE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRTtvQkFDbkIsbUJBQW1CLEtBQUssZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2pELHlEQUF5RDtvQkFDekQsS0FBSyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLENBQUMsQ0FBQztnQkFDRixNQUFNLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxDQUFDO29CQUNILE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDaEIsTUFBTSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDakMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUNsQixDQUFDO3dCQUFTLENBQUM7b0JBQ1QsTUFBTSxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQ3JELElBQUksbUJBQW1CO3dCQUFFLE1BQU0sbUJBQW1CLENBQUM7Z0JBQ3JELENBQUM7Z0JBQ0QsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLEVBQUUsQ0FDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FDbEMsQ0FBQztnQkFDRixLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO29CQUNoRSxVQUFVLENBQUMseUJBQXlCLEVBQUUsQ0FBQztnQkFDekMsQ0FBQztnQkFDRCxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQ2hCLHdFQUF3RTtnQkFDeEUsd0VBQXdFO2dCQUN4RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSw0QkFBNEIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDbEYsaUdBQWlHO2dCQUNqRyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsZUFBZSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQztnQkFDM0IsZUFBZSxHQUFHLFNBQVMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDO2dCQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUseUJBQXlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ25GLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksWUFBcUIsQ0FBQztnQkFDMUIsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDO3dCQUNILHFFQUFxRTt3QkFDckUsTUFBTSxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO29CQUNqQyxDQUFDO29CQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7d0JBQ2xCLFlBQVksR0FBRyxRQUFRLENBQUM7b0JBQzFCLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDcEYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsOENBQThDLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDWCxNQUFNLElBQUkseUJBQXlCLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLGFBQWE7d0JBQzdFLENBQUMsQ0FBQyx1RUFBdUU7d0JBQ3pFLENBQUMsQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO2dCQUM3RCxDQUFDO2dCQUNELE1BQU0sVUFBVSxHQUFHLElBQUkseUJBQXlCLENBQUMsdUJBQXVCLEVBQ3RFLG9DQUFvQyxFQUNwQyxFQUFFLEtBQUssRUFBRSw4QkFBOEIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRSxJQUFJLFlBQVk7b0JBQUUsTUFBTSxJQUFJLGNBQWMsQ0FDeEMsQ0FBQyxVQUFVLEVBQUUsOEJBQThCLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQ3RFLHVFQUF1RSxDQUFDLENBQUM7Z0JBQzNFLE1BQU0sVUFBVSxDQUFDO1lBQ25CLENBQUM7UUFDSCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFxQyxFQUFFO1FBQ3hELElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUM1RixNQUFNLE1BQU0sR0FBRyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksd0JBQXdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0YsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQztRQUM3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDL0QsSUFBSSxDQUFDO1lBQ0gsTUFBTSxXQUFXLEdBQWMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQztnQkFDSCxNQUFNLFlBQVksR0FBRywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pGLDRFQUE0RTtnQkFDNUUscUVBQXFFO2dCQUNyRSwwRUFBMEU7Z0JBQzFFLHdCQUF3QjtnQkFDeEIsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxNQUFNO29CQUFFLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDL0MsTUFBTSxZQUFZLENBQUM7WUFDckIsQ0FBQztZQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLFdBQVcsQ0FBQyxJQUFJLENBQ2QsR0FBRyxDQUFDLHdDQUF3QyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDdEUsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUM7b0JBQ0gsTUFBTSxlQUFlLEdBQUcsTUFBTSxjQUFjLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7b0JBQ3RGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzt3QkFDckIsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyx1QkFBdUIsRUFDdkIsNkRBQTZELENBQzlELENBQUM7b0JBQ0osQ0FBQztnQkFDSCxDQUFDO2dCQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7b0JBQ2xCLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdCLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLENBQUM7b0JBQ0gsSUFBSSxNQUFNO3dCQUFFLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDaEQsbUZBQW1GO29CQUNuRixNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7b0JBQy9CLElBQUksT0FBTyxDQUFDLE1BQU07d0JBQUUsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDO29CQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztnQkFDakMsQ0FBQztnQkFBQyxPQUFPLFFBQVEsRUFBRSxDQUFDO29CQUNsQixXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QixDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7d0JBQzlELENBQUMsQ0FBQywyQkFBMkIsQ0FDM0Isd0VBQXdFLENBQUM7d0JBQzNFLENBQUMsQ0FBQyxJQUFJLHlCQUF5QixDQUFDLHVCQUF1QixFQUNyRCwyREFBMkQsQ0FBQyxDQUFDO2dCQUNuRSxDQUFDO2dCQUNELElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDN0IsTUFBTSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLGNBQWMsQ0FDdEIsV0FBVyxFQUNYLHdEQUF3RCxDQUN6RCxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSw4QkFBOEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDeEYsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGNBQWMsQ0FDekIsYUFBeUMsRUFBRTtRQUUzQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEMsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsSUFBSSx5QkFBeUIsQ0FBQztRQUNwRSxJQUNFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7WUFDaEMsU0FBUyxJQUFJLENBQUM7WUFDZCxTQUFTLEdBQUcseUJBQXlCLEVBQ3JDLENBQUM7WUFDRCxNQUFNLElBQUkseUJBQXlCLENBQ2pDLGtCQUFrQixFQUNsQix1RUFBdUUseUJBQXlCLEdBQUcsQ0FDcEcsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUMzRCxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUNqQyxJQUFJLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksUUFBdUMsQ0FBQztRQUM1QyxJQUFJLENBQUM7WUFDSCxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUM5QixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFDWDtnQkFDRSxTQUFTLEVBQUUsU0FBUztnQkFDcEIsTUFBTTthQUNQLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMzRCxDQUFDO1lBQ0QsSUFDRSxJQUFJLENBQUMsY0FBYyxLQUFLLGNBQWM7Z0JBQ3RDLElBQUksQ0FBQyxPQUFPLEtBQUssT0FBTztnQkFDeEIsSUFBSSxDQUFDLGFBQWEsS0FBSyxhQUFhLEVBQ3BDLENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQ2hDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxJQUFJLGFBQWEsRUFDbkQsU0FBUyxDQUNWLENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxLQUFLLFlBQVksT0FBTyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxDQUFDO2dCQUNoRSxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDM0QsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsSUFDRSxJQUFJLENBQUMsY0FBYyxLQUFLLGNBQWM7WUFDdEMsSUFBSSxDQUFDLE9BQU8sS0FBSyxPQUFPO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEtBQUssYUFBYSxFQUNwQyxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQ2hDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxJQUFJLGFBQWEsRUFDbkQsU0FBUyxDQUNWLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJO1lBQ1gsTUFBTSxFQUFFLE9BQU87WUFDZixVQUFVLEVBQUUsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVM7U0FDMUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7T0FlRztJQUNJLGFBQWEsQ0FBQyxVQUEwQztRQUM3RCxPQUFPLHlCQUF5QixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0kseUJBQXlCO1FBQzlCLE9BQU8sSUFBSSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsc0ZBQXNGO0lBQy9FLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDM0IsVUFBaUQ7UUFFakQsT0FBTyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGlHQUFpRztJQUMxRixLQUFLLENBQUMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUNqRCxZQUFnRztRQUVoRyxJQUNFLElBQUksQ0FBQyxjQUFjLEtBQUssV0FBVztZQUNuQyxJQUFJLENBQUMsTUFBTSxLQUFLLFdBQVc7WUFDM0IsQ0FBQyxJQUFJLENBQUMsT0FBTztZQUNiLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFDMUMsQ0FBQztZQUNELE1BQU0sSUFBSSx5QkFBeUIsQ0FDakMsdUJBQXVCLEVBQ3ZCLGtFQUFrRSxDQUNuRSxDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxFQUFFLENBQy9CLElBQUksQ0FBQyxjQUFjLEtBQUssV0FBVztZQUNuQyxJQUFJLENBQUMsTUFBTSxLQUFLLFdBQVc7WUFDM0IsSUFBSSxDQUFDLGNBQWMsS0FBSyxjQUFjO1lBQ3RDLElBQUksQ0FBQyxPQUFPLEtBQUssT0FBTztZQUN4QixJQUFJLENBQUMsYUFBYSxLQUFLLGFBQWE7WUFDcEMsT0FBTyxDQUFDLE1BQU0sS0FBSyxhQUFhLENBQUM7UUFDbkMsSUFBSSxNQUFlLENBQUM7UUFDcEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7b0JBQzNCLE1BQU0sSUFBSSx5QkFBeUIsQ0FBQyx1QkFBdUIsRUFBRSxnREFBZ0QsQ0FBQyxDQUFDO2dCQUNqSCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyx1QkFBdUIsRUFDdkIscUVBQXFFLENBQ3RFLENBQUM7WUFDSixDQUFDO1lBQ0QsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyx1QkFBdUIsRUFDdkIsd0NBQXdDLENBQ3pDLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2QixxRUFBcUUsQ0FDdEUsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQscUNBQXFDO0lBRTlCLGFBQWEsQ0FBQyxzQkFBZ0Q7UUFDbkUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLDRCQUE0QixDQUFJLE9BQWU7UUFDMUQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFO1lBQ25GLE9BQU8sVUFBVSxDQUFDLGNBQWMsS0FBSyxPQUFPLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxZQUE0QztRQUMxRSxJQUFJLENBQUMsZ0NBQWdDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLFlBQVksQ0FBQztJQUMvQyxDQUFDO0lBRU8sZ0NBQWdDLENBQ3RDLFlBQTRDO1FBRTVDLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyx1QkFBdUIsRUFDdkIsbUNBQW1DLFlBQVksVUFBVSxJQUFJLENBQUMsd0JBQXdCLG9CQUFvQixDQUMzRyxDQUFDO1FBQ0osQ0FBQztRQUNELElBQ0UsWUFBWSxLQUFLLE1BQU07WUFDdkIsQ0FBQyxJQUFJLENBQUMsY0FBYyxLQUFLLFdBQVc7Z0JBQ2xDLElBQUksQ0FBQyxjQUFjLEtBQUssY0FBYyxDQUFDLEVBQ3pDLENBQUM7WUFDRCxNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2QixxRUFBcUUsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUM1RixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFTyxxQkFBcUIsQ0FDM0IsVUFBa0M7UUFFbEMsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sbUJBQW1CLEdBQUcscUJBQXFCLENBQy9DLE9BQU8sQ0FBQyxZQUFZLEVBQ3BCLENBQUMsc0JBQXNCLENBQUMsRUFDeEIsZ0NBQWdDLENBQ2pDLENBQUM7UUFDRixNQUFNLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDO1FBQ3RFLElBQ0UsT0FBTyxvQkFBb0IsS0FBSyxRQUFRO1lBQ3hDLG9CQUFvQixDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ2pDLG9CQUFvQixDQUFDLElBQUksRUFBRSxLQUFLLG9CQUFvQixFQUNwRCxDQUFDO1lBQ0QsTUFBTSxJQUFJLHlCQUF5QixDQUNqQyxrQkFBa0IsRUFDbEIsMkZBQTJGLENBQzVGLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFDRSxJQUFJLENBQUMsY0FBYyxLQUFLLFdBQVc7WUFDbkMsSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXO1lBQzNCLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFDbkIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUNiLENBQUM7WUFDRCxNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2QixrRUFBa0UsQ0FDbkUsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2QiwwREFBMEQsQ0FDM0QsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ3BELElBQUksb0JBQW9CLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUkseUJBQXlCLENBQ2pDLGtCQUFrQixFQUNsQix1RUFBdUUsQ0FDeEUsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUkseUJBQXlCLENBQ2pDLHVCQUF1QixFQUN2Qix5RUFBeUUsQ0FDMUUsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssZ0JBQWdCLENBQ3RCLFNBQXNDO1FBRXRDLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FDM0MsR0FBaUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFDdkQsQ0FBQyxRQUFpQixFQUFnQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQ3pGLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFlBQTRDO1FBQ3hFLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxRQUFvQztRQUM5RCxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLDJCQUEyQjtRQU1qQyxRQUFRLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM1QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxpQkFBaUIsQ0FBQztZQUMzQixLQUFLLFlBQVk7Z0JBQ2YsT0FBTyxZQUFZLENBQUM7WUFDdEIsS0FBSyxtQkFBbUI7Z0JBQ3RCLE9BQU8sbUJBQW1CLENBQUM7WUFDN0IsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQztZQUNsQixLQUFLLGNBQWM7Z0JBQ2pCLE9BQU8sY0FBYyxDQUFDO1lBQ3hCLEtBQUssV0FBVztnQkFDZCxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQixDQUM1QixTQUEyQyxFQUMzQyxZQUFvQjtRQUVwQixPQUFPO1lBQ0wsS0FBSyxFQUFFLEtBQUs7WUFDWixNQUFNLEVBQUUsYUFBYTtZQUNyQixNQUFNLEVBQUUsU0FBUztZQUNqQixVQUFVLEVBQUUsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLFlBQVk7U0FDN0MsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9