@futdevpro/nts-dynamo 1.15.265 → 1.15.266

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 (50) hide show
  1. package/README.md +22 -0
  2. package/build/_modules/application-alert-delivery/_enums/application-alert-delivery-state.type-enum.d.ts +21 -0
  3. package/build/_modules/application-alert-delivery/_enums/application-alert-delivery-state.type-enum.d.ts.map +1 -0
  4. package/build/_modules/application-alert-delivery/_enums/application-alert-delivery-state.type-enum.js +27 -0
  5. package/build/_modules/application-alert-delivery/_enums/application-alert-delivery-state.type-enum.js.map +1 -0
  6. package/build/_modules/application-alert-delivery/_models/application-alert-delivery.interface.d.ts +104 -0
  7. package/build/_modules/application-alert-delivery/_models/application-alert-delivery.interface.d.ts.map +1 -0
  8. package/build/_modules/application-alert-delivery/_models/application-alert-delivery.interface.js +3 -0
  9. package/build/_modules/application-alert-delivery/_models/application-alert-delivery.interface.js.map +1 -0
  10. package/build/_modules/application-alert-delivery/application-alert-delivery.control-service.d.ts +12 -0
  11. package/build/_modules/application-alert-delivery/application-alert-delivery.control-service.d.ts.map +1 -0
  12. package/build/_modules/application-alert-delivery/application-alert-delivery.control-service.js +52 -0
  13. package/build/_modules/application-alert-delivery/application-alert-delivery.control-service.js.map +1 -0
  14. package/build/_modules/application-alert-delivery/application-alert-delivery.mongo-store.d.ts +49 -0
  15. package/build/_modules/application-alert-delivery/application-alert-delivery.mongo-store.d.ts.map +1 -0
  16. package/build/_modules/application-alert-delivery/application-alert-delivery.mongo-store.js +702 -0
  17. package/build/_modules/application-alert-delivery/application-alert-delivery.mongo-store.js.map +1 -0
  18. package/build/_modules/application-alert-delivery/index.d.ts +5 -0
  19. package/build/_modules/application-alert-delivery/index.d.ts.map +1 -0
  20. package/build/_modules/application-alert-delivery/index.js +8 -0
  21. package/build/_modules/application-alert-delivery/index.js.map +1 -0
  22. package/build/_modules/lifecycle-cleanup/_enums/lifecycle-cleanup-state.type-enum.d.ts +14 -0
  23. package/build/_modules/lifecycle-cleanup/_enums/lifecycle-cleanup-state.type-enum.d.ts.map +1 -0
  24. package/build/_modules/lifecycle-cleanup/_enums/lifecycle-cleanup-state.type-enum.js +19 -0
  25. package/build/_modules/lifecycle-cleanup/_enums/lifecycle-cleanup-state.type-enum.js.map +1 -0
  26. package/build/_modules/lifecycle-cleanup/_models/lifecycle-cleanup-mongo-store-settings.interface.d.ts +8 -0
  27. package/build/_modules/lifecycle-cleanup/_models/lifecycle-cleanup-mongo-store-settings.interface.d.ts.map +1 -0
  28. package/build/_modules/lifecycle-cleanup/_models/lifecycle-cleanup-mongo-store-settings.interface.js +3 -0
  29. package/build/_modules/lifecycle-cleanup/_models/lifecycle-cleanup-mongo-store-settings.interface.js.map +1 -0
  30. package/build/_modules/lifecycle-cleanup/_models/lifecycle-cleanup-settings.interface.d.ts +11 -0
  31. package/build/_modules/lifecycle-cleanup/_models/lifecycle-cleanup-settings.interface.d.ts.map +1 -0
  32. package/build/_modules/lifecycle-cleanup/_models/lifecycle-cleanup-settings.interface.js +3 -0
  33. package/build/_modules/lifecycle-cleanup/_models/lifecycle-cleanup-settings.interface.js.map +1 -0
  34. package/build/_modules/lifecycle-cleanup/_models/lifecycle-cleanup.interface.d.ts +118 -0
  35. package/build/_modules/lifecycle-cleanup/_models/lifecycle-cleanup.interface.d.ts.map +1 -0
  36. package/build/_modules/lifecycle-cleanup/_models/lifecycle-cleanup.interface.js +3 -0
  37. package/build/_modules/lifecycle-cleanup/_models/lifecycle-cleanup.interface.js.map +1 -0
  38. package/build/_modules/lifecycle-cleanup/index.d.ts +7 -0
  39. package/build/_modules/lifecycle-cleanup/index.d.ts.map +1 -0
  40. package/build/_modules/lifecycle-cleanup/index.js +10 -0
  41. package/build/_modules/lifecycle-cleanup/index.js.map +1 -0
  42. package/build/_modules/lifecycle-cleanup/lifecycle-cleanup.control-service.d.ts +32 -0
  43. package/build/_modules/lifecycle-cleanup/lifecycle-cleanup.control-service.d.ts.map +1 -0
  44. package/build/_modules/lifecycle-cleanup/lifecycle-cleanup.control-service.js +246 -0
  45. package/build/_modules/lifecycle-cleanup/lifecycle-cleanup.control-service.js.map +1 -0
  46. package/build/_modules/lifecycle-cleanup/lifecycle-cleanup.mongo-store.d.ts +36 -0
  47. package/build/_modules/lifecycle-cleanup/lifecycle-cleanup.mongo-store.d.ts.map +1 -0
  48. package/build/_modules/lifecycle-cleanup/lifecycle-cleanup.mongo-store.js +410 -0
  49. package/build/_modules/lifecycle-cleanup/lifecycle-cleanup.mongo-store.js.map +1 -0
  50. package/package.json +21 -3
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DyNTS_LifecycleCleanup_ControlService = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const mongo_transaction_control_service_1 = require("../../_services/core/mongo-transaction.control-service");
6
+ const lifecycle_cleanup_state_type_enum_1 = require("./_enums/lifecycle-cleanup-state.type-enum");
7
+ const dynts_hashPattern = /^[a-f0-9]{64}$/u;
8
+ const dynts_identifierPattern = /^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,127}$/u;
9
+ const DYNTS_LIFECYCLE_CLEANUP_MAX_STAGE_COUNT = 128;
10
+ const DYNTS_LIFECYCLE_CLEANUP_MAX_BATCH_SIZE = 1_000;
11
+ /**
12
+ * Executes one explicitly requested database-only lifecycle batch.
13
+ * Product policy supplies the ordered stages and callbacks; this service supplies durable fencing and resume.
14
+ */
15
+ class DyNTS_LifecycleCleanup_ControlService {
16
+ issuer;
17
+ store;
18
+ adapters;
19
+ transactions;
20
+ maxCommitTimeMs;
21
+ /** Binds one product adapter inventory to the reusable lifecycle coordinator. */
22
+ constructor(settings) {
23
+ if (!settings?.store?.connection
24
+ || !dynts_identifierPattern.test(settings.issuer)
25
+ || !Array.isArray(settings.adapters)
26
+ || settings.adapters.length < 1
27
+ || settings.adapters.length > DYNTS_LIFECYCLE_CLEANUP_MAX_STAGE_COUNT
28
+ || (settings.maxCommitTimeMs !== undefined
29
+ && (!Number.isSafeInteger(settings.maxCommitTimeMs) || settings.maxCommitTimeMs <= 0))) {
30
+ throw new Error('DyNTS|LIFECYCLE_CLEANUP|INVALID_SETTINGS');
31
+ }
32
+ const entries = settings.adapters.map((adapter) => {
33
+ if (!dynts_identifierPattern.test(adapter?.stage) || typeof adapter.execute !== 'function') {
34
+ throw new Error('DyNTS|LIFECYCLE_CLEANUP|INVALID_ADAPTER');
35
+ }
36
+ return [adapter.stage, Object.freeze({ ...adapter })];
37
+ });
38
+ if (new Set(entries.map((entry) => (entry[0]))).size !== entries.length) {
39
+ throw new Error('DyNTS|LIFECYCLE_CLEANUP|DUPLICATE_ADAPTER');
40
+ }
41
+ this.issuer = settings.issuer;
42
+ this.store = settings.store;
43
+ this.adapters = new Map(entries);
44
+ this.transactions = settings.transactionService ?? new mongo_transaction_control_service_1.DyNTS_MongoTransaction_ControlService(() => this.store.connection.startSession());
45
+ this.maxCommitTimeMs = settings.maxCommitTimeMs ?? 3_000;
46
+ }
47
+ /** Creates and validates the shared collections outside product transactions. */
48
+ ensureReady() {
49
+ return this.store.ensureReady();
50
+ }
51
+ /** Schedules one exact recovery deadline inside the product soft-delete transaction. */
52
+ schedule(value, session) {
53
+ const plan = this.plan(value?.plan);
54
+ this.identity(value);
55
+ this.transaction(session);
56
+ if (value?.contractVersion !== 'dynts-lifecycle-cleanup-schedule/1'
57
+ || !this.exactRecord(value, [
58
+ 'contractVersion', 'scopeHash', 'cleanupId', 'plan', 'eligibleAtMs',
59
+ ])
60
+ || !Number.isSafeInteger(value.eligibleAtMs)
61
+ || value.eligibleAtMs < 0) {
62
+ throw new Error('DyNTS|LIFECYCLE_CLEANUP|INVALID_SCHEDULE');
63
+ }
64
+ const request = {
65
+ scopeHash: value.scopeHash,
66
+ cleanupId: value.cleanupId,
67
+ planChecksum: plan.checksum,
68
+ stageCount: plan.stageCount,
69
+ eligibleAtMs: value.eligibleAtMs,
70
+ };
71
+ return this.store.schedule(Object.freeze(request), session);
72
+ }
73
+ /** Cancels only a not-yet-claimed cleanup gate inside the product restore transaction. */
74
+ cancel(value, session) {
75
+ const plan = this.plan(value?.plan);
76
+ this.identity(value);
77
+ this.transaction(session);
78
+ if (value?.contractVersion !== 'dynts-lifecycle-cleanup-cancellation/1'
79
+ || !this.exactRecord(value, ['contractVersion', 'scopeHash', 'cleanupId', 'plan'])) {
80
+ throw new Error('DyNTS|LIFECYCLE_CLEANUP|INVALID_CANCELLATION');
81
+ }
82
+ return this.store.cancel(Object.freeze({
83
+ scopeHash: value.scopeHash,
84
+ cleanupId: value.cleanupId,
85
+ planChecksum: plan.checksum,
86
+ stageCount: plan.stageCount,
87
+ }), session);
88
+ }
89
+ /** Claims and commits at most one product-defined stage batch. It never loops, sleeps or schedules itself. */
90
+ async invoke(value) {
91
+ const plan = this.plan(value?.plan);
92
+ this.identity(value);
93
+ if (value?.contractVersion !== 'dynts-lifecycle-cleanup-invocation/1'
94
+ || !this.exactRecord(value, [
95
+ 'contractVersion', 'scopeHash', 'cleanupId', 'plan', 'batchSize',
96
+ ])
97
+ || !Number.isSafeInteger(value.batchSize)
98
+ || value.batchSize < 1
99
+ || value.batchSize > DYNTS_LIFECYCLE_CLEANUP_MAX_BATCH_SIZE) {
100
+ throw new Error('DyNTS|LIFECYCLE_CLEANUP|INVALID_INVOCATION');
101
+ }
102
+ await this.store.ensureReady();
103
+ const claimRequest = Object.freeze({
104
+ scopeHash: value.scopeHash,
105
+ cleanupId: value.cleanupId,
106
+ planChecksum: plan.checksum,
107
+ stageCount: plan.stageCount,
108
+ });
109
+ const claim = await this.store.claim(claimRequest);
110
+ if (claim.code !== lifecycle_cleanup_state_type_enum_1.DyNTS_LifecycleCleanupInvocationCode_Type.executed) {
111
+ return this.receipt(value.plan, claim);
112
+ }
113
+ const stage = value.plan.stages[claim.stageIndex];
114
+ const adapter = stage
115
+ ? this.adapters.get(stage)
116
+ : undefined;
117
+ if (!stage || !adapter) {
118
+ throw new Error('DyNTS|LIFECYCLE_CLEANUP|ADAPTER_MISSING');
119
+ }
120
+ const committed = await this.transactions.execute({
121
+ transactionName: 'lifecycle-cleanup-stage',
122
+ issuer: this.issuer,
123
+ maxCommitTimeMs: this.maxCommitTimeMs,
124
+ task: async (session) => {
125
+ const result = await adapter.execute(Object.freeze({
126
+ contractVersion: 'dynts-lifecycle-cleanup-stage-context/1',
127
+ scopeHash: value.scopeHash,
128
+ cleanupId: value.cleanupId,
129
+ stage: stage,
130
+ stageIndex: claim.stageIndex,
131
+ batchSize: value.batchSize,
132
+ evaluatedAtMs: claim.evaluatedAtMs,
133
+ fencingToken: claim.fencingToken,
134
+ session: session,
135
+ }));
136
+ this.stageResult(result, stage, value.batchSize);
137
+ const commit = {
138
+ ...claimRequest,
139
+ stageIndex: claim.stageIndex,
140
+ fencingToken: claim.fencingToken,
141
+ result: Object.freeze({ ...result }),
142
+ };
143
+ return this.store.commit(Object.freeze(commit), session);
144
+ },
145
+ });
146
+ return this.receipt(value.plan, committed);
147
+ }
148
+ plan(value) {
149
+ if (value?.contractVersion !== 'dynts-lifecycle-cleanup-plan/1'
150
+ || !this.exactRecord(value, ['contractVersion', 'planVersion', 'stages'])
151
+ || !dynts_identifierPattern.test(value.planVersion)
152
+ || !this.exactArray(value.stages)
153
+ || value.stages.length < 1
154
+ || value.stages.length > DYNTS_LIFECYCLE_CLEANUP_MAX_STAGE_COUNT
155
+ || value.stages.some((stage) => !dynts_identifierPattern.test(stage))
156
+ || new Set(value.stages).size !== value.stages.length
157
+ || value.stages.some((stage) => !this.adapters.has(stage))) {
158
+ throw new Error('DyNTS|LIFECYCLE_CLEANUP|INVALID_PLAN');
159
+ }
160
+ return Object.freeze({
161
+ checksum: (0, node_crypto_1.createHash)('sha256').update(JSON.stringify([
162
+ value.contractVersion,
163
+ value.planVersion,
164
+ value.stages,
165
+ ])).digest('hex'),
166
+ stageCount: value.stages.length,
167
+ });
168
+ }
169
+ identity(value) {
170
+ if (!dynts_hashPattern.test(value?.scopeHash ?? '') || !dynts_hashPattern.test(value?.cleanupId ?? '')) {
171
+ throw new Error('DyNTS|LIFECYCLE_CLEANUP|INVALID_IDENTITY');
172
+ }
173
+ }
174
+ transaction(session) {
175
+ if (!session?.inTransaction()) {
176
+ throw new Error('DyNTS|LIFECYCLE_CLEANUP|TRANSACTION_REQUIRED');
177
+ }
178
+ }
179
+ stageResult(value, stage, batchSize) {
180
+ if (value?.contractVersion !== 'dynts-lifecycle-cleanup-stage-result/1'
181
+ || !this.exactRecord(value, [
182
+ 'contractVersion', 'stage', 'isComplete', 'selectedRecordCount', 'deletedRecordCount', 'resultChecksum',
183
+ ])
184
+ || value.stage !== stage
185
+ || typeof value.isComplete !== 'boolean'
186
+ || !Number.isSafeInteger(value.selectedRecordCount)
187
+ || value.selectedRecordCount < 0
188
+ || value.selectedRecordCount > batchSize
189
+ || !Number.isSafeInteger(value.deletedRecordCount)
190
+ || value.deletedRecordCount < 0
191
+ || value.deletedRecordCount > value.selectedRecordCount
192
+ || !dynts_hashPattern.test(value.resultChecksum)) {
193
+ throw new Error('DyNTS|LIFECYCLE_CLEANUP|INVALID_STAGE_RESULT');
194
+ }
195
+ }
196
+ exactRecord(value, expectedKeys) {
197
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
198
+ return false;
199
+ }
200
+ const prototype = Object.getPrototypeOf(value);
201
+ const keys = Reflect.ownKeys(value);
202
+ return (prototype === Object.prototype || prototype === null)
203
+ && keys.length === expectedKeys.length
204
+ && keys.every((key) => {
205
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
206
+ return typeof key === 'string'
207
+ && expectedKeys.includes(key)
208
+ && !!descriptor
209
+ && 'value' in descriptor
210
+ && descriptor.enumerable === true;
211
+ });
212
+ }
213
+ exactArray(value) {
214
+ if (!Array.isArray(value) || Object.getPrototypeOf(value) !== Array.prototype) {
215
+ return false;
216
+ }
217
+ if (Reflect.ownKeys(value).length !== value.length + 1) {
218
+ return false;
219
+ }
220
+ for (let index = 0; index < value.length; index++) {
221
+ const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
222
+ if (!descriptor || !('value' in descriptor) || !descriptor.enumerable) {
223
+ return false;
224
+ }
225
+ }
226
+ return true;
227
+ }
228
+ receipt(plan, claim) {
229
+ const stage = claim.stageIndex < plan.stages.length ? plan.stages[claim.stageIndex] : '';
230
+ return Object.freeze({
231
+ contractVersion: 'dynts-lifecycle-cleanup-invocation-receipt/1',
232
+ scopeHash: claim.scopeHash,
233
+ cleanupId: claim.cleanupId,
234
+ code: claim.code,
235
+ planChecksum: claim.planChecksum,
236
+ stage: stage,
237
+ stageIndex: claim.stageIndex,
238
+ isComplete: claim.code === lifecycle_cleanup_state_type_enum_1.DyNTS_LifecycleCleanupInvocationCode_Type.complete,
239
+ selectedRecordCount: claim.selectedRecordCount,
240
+ deletedRecordCount: claim.deletedRecordCount,
241
+ lastResultChecksum: claim.lastResultChecksum,
242
+ });
243
+ }
244
+ }
245
+ exports.DyNTS_LifecycleCleanup_ControlService = DyNTS_LifecycleCleanup_ControlService;
246
+ //# sourceMappingURL=lifecycle-cleanup.control-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-cleanup.control-service.js","sourceRoot":"","sources":["../../../src/_modules/lifecycle-cleanup/lifecycle-cleanup.control-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { ClientSession, Connection } from 'mongoose';
2
+ import { DyNTS_LifecycleCleanupCancellationReceipt_Interface, DyNTS_LifecycleCleanupClaim_Interface, DyNTS_LifecycleCleanupScheduleReceipt_Interface, DyNTS_LifecycleCleanupStoreClaim_Interface, DyNTS_LifecycleCleanupStoreCommit_Interface, DyNTS_LifecycleCleanupStore_Interface, DyNTS_LifecycleCleanupStoreSchedule_Interface } from './_models/lifecycle-cleanup.interface';
3
+ import { DyNTS_LifecycleCleanupMongoStoreSettings_Interface } from './_models/lifecycle-cleanup-mongo-store-settings.interface';
4
+ /** Durable Mongo gate, lease and progress store for explicitly invoked lifecycle cleanup. */
5
+ export declare class DyNTS_LifecycleCleanup_MongoStore implements DyNTS_LifecycleCleanupStore_Interface {
6
+ readonly connection: Connection;
7
+ private readonly maxOperationTimeMs;
8
+ private readonly leaseDurationMs;
9
+ private readiness?;
10
+ /** Uses one product connection so gate transitions and product mutations can share a transaction. */
11
+ constructor(settings: DyNTS_LifecycleCleanupMongoStoreSettings_Interface);
12
+ /** Creates and verifies the strict content-free progress collection before product transactions begin. */
13
+ ensureReady(): Promise<void>;
14
+ /** Inserts the immutable plan/deadline gate or acknowledges its exact replay. */
15
+ schedule(value: DyNTS_LifecycleCleanupStoreSchedule_Interface, session: ClientSession): Promise<DyNTS_LifecycleCleanupScheduleReceipt_Interface>;
16
+ /** Deletes only a scheduled gate; an acquired or completed cleanup makes restore fail closed. */
17
+ cancel(value: DyNTS_LifecycleCleanupStoreClaim_Interface, session: ClientSession): Promise<DyNTS_LifecycleCleanupCancellationReceipt_Interface>;
18
+ /** Acquires one DB-time lease or reports not-due, busy or terminal state without waiting. */
19
+ claim(value: DyNTS_LifecycleCleanupStoreClaim_Interface): Promise<DyNTS_LifecycleCleanupClaim_Interface>;
20
+ /** Commits callback mutations and progress together, guarded by stage and fencing token. */
21
+ commit(value: DyNTS_LifecycleCleanupStoreCommit_Interface, session: ClientSession): Promise<DyNTS_LifecycleCleanupClaim_Interface>;
22
+ private collection;
23
+ private key;
24
+ private request;
25
+ private commitRequest;
26
+ private exactRecord;
27
+ private transaction;
28
+ private assertExact;
29
+ private document;
30
+ private time;
31
+ private scheduleReceipt;
32
+ private claimReceipt;
33
+ private validator;
34
+ private isMongoCode;
35
+ }
36
+ //# sourceMappingURL=lifecycle-cleanup.mongo-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-cleanup.mongo-store.d.ts","sourceRoot":"","sources":["../../../src/_modules/lifecycle-cleanup/lifecycle-cleanup.mongo-store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAS,MAAM,UAAU,CAAC;AAM5D,OAAO,EACL,mDAAmD,EACnD,qCAAqC,EACrC,+CAA+C,EAC/C,0CAA0C,EAC1C,2CAA2C,EAC3C,qCAAqC,EACrC,6CAA6C,EAC9C,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,kDAAkD,EACnD,MAAM,4DAA4D,CAAC;AA4BpE,6FAA6F;AAC7F,qBAAa,iCAAkC,YAAW,qCAAqC;IAC7F,SAAgB,UAAU,EAAE,UAAU,CAAC;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,SAAS,CAAC,CAAgB;IAElC,qGAAqG;gBAClF,QAAQ,EAAE,kDAAkD;IAkB/E,0GAA0G;IAC7F,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAsCzC,iFAAiF;IACpE,QAAQ,CACnB,KAAK,EAAE,6CAA6C,EACpD,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,+CAA+C,CAAC;IA2D3D,iGAAiG;IACpF,MAAM,CACjB,KAAK,EAAE,0CAA0C,EACjD,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,mDAAmD,CAAC;IAyC/D,6FAA6F;IAChF,KAAK,CAChB,KAAK,EAAE,0CAA0C,GAChD,OAAO,CAAC,qCAAqC,CAAC;IAgEjD,4FAA4F;IAC/E,MAAM,CACjB,KAAK,EAAE,2CAA2C,EAClD,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,qCAAqC,CAAC;IAiDjD,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,OAAO;IAiBf,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,QAAQ;IA0ChB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,SAAS;IAkCjB,OAAO,CAAC,WAAW;CAOpB"}