@meticoeus/ddd-es 0.5.0 → 0.6.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.
- package/dist/package.json +1 -1
- package/dist/src/AggregateRoot.d.ts +1 -1
- package/dist/src/AggregateRoot.d.ts.map +1 -1
- package/dist/src/AggregateRoot.js +4 -2
- package/dist/src/AggregateRoot.js.map +1 -1
- package/dist/src/AggregateRoot.mocks.d.ts +3 -5
- package/dist/src/AggregateRoot.mocks.d.ts.map +1 -1
- package/dist/src/AggregateRoot.mocks.js +11 -17
- package/dist/src/AggregateRoot.mocks.js.map +1 -1
- package/dist/src/AggregateRoot.mocks2.d.ts +75 -0
- package/dist/src/AggregateRoot.mocks2.d.ts.map +1 -0
- package/dist/src/AggregateRoot.mocks2.js +295 -0
- package/dist/src/AggregateRoot.mocks2.js.map +1 -0
- package/dist/src/AggregateRoot.mocks3.d.ts +48 -0
- package/dist/src/AggregateRoot.mocks3.d.ts.map +1 -0
- package/dist/src/AggregateRoot.mocks3.js +114 -0
- package/dist/src/AggregateRoot.mocks3.js.map +1 -0
- package/dist/src/Repository.d.ts +37 -3
- package/dist/src/Repository.d.ts.map +1 -1
- package/dist/src/Repository.js +85 -34
- package/dist/src/Repository.js.map +1 -1
- package/dist/src/Repository.mocks.d.ts +14 -1
- package/dist/src/Repository.mocks.d.ts.map +1 -1
- package/dist/src/Repository.mocks.js +16 -0
- package/dist/src/Repository.mocks.js.map +1 -1
- package/dist/src/Repository.test.js +223 -6
- package/dist/src/Repository.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -23,11 +23,13 @@ SOFTWARE.
|
|
|
23
23
|
*/
|
|
24
24
|
import { describe, expect, test } from 'vitest';
|
|
25
25
|
import { Test, } from './AggregateRoot.mocks.js';
|
|
26
|
-
import {
|
|
26
|
+
import { TodoChecklist, } from './AggregateRoot.mocks2.js';
|
|
27
|
+
import { Counter } from './AggregateRoot.mocks3.js';
|
|
28
|
+
import { CounterRepository, TestRepository, TodoChecklistRepository } from './Repository.mocks.js';
|
|
27
29
|
import { mockMetadata } from './types.fixtures.js';
|
|
28
30
|
import { EventConflictException, EventExistenceRevision, createEvent } from './types.js';
|
|
29
31
|
import { MockEventStore } from './types.mocks.js';
|
|
30
|
-
describe('Repository', () => {
|
|
32
|
+
describe('Repository - Test', () => {
|
|
31
33
|
const testCreated = createEvent({
|
|
32
34
|
type: 'TestCreated',
|
|
33
35
|
data: { id: '1', name: 'Test' },
|
|
@@ -38,12 +40,12 @@ describe('Repository', () => {
|
|
|
38
40
|
data: { id: '1', name: 'A Test' },
|
|
39
41
|
metadata: mockMetadata,
|
|
40
42
|
});
|
|
41
|
-
const
|
|
43
|
+
const testRenamedTwice = createEvent({
|
|
42
44
|
type: 'TestRenamed',
|
|
43
45
|
data: { id: '1', name: 'The Test' },
|
|
44
46
|
metadata: mockMetadata,
|
|
45
47
|
});
|
|
46
|
-
const
|
|
48
|
+
const testRenamedThrice = createEvent({
|
|
47
49
|
type: 'TestRenamed',
|
|
48
50
|
data: { id: '1', name: 'Some Test' },
|
|
49
51
|
metadata: mockMetadata,
|
|
@@ -68,7 +70,7 @@ describe('Repository', () => {
|
|
|
68
70
|
});
|
|
69
71
|
test('should fail when events conflict', async () => {
|
|
70
72
|
const store = new MockEventStore();
|
|
71
|
-
const save = await store.saveEvents(streamName, [testCreated, testRenamed,
|
|
73
|
+
const save = await store.saveEvents(streamName, [testCreated, testRenamed, testRenamedTwice], EventExistenceRevision.NoStream);
|
|
72
74
|
expect(save.error?.message).not.toBeDefined();
|
|
73
75
|
expect(save.ok, 'Should not return an error').toBe(true);
|
|
74
76
|
expect(save.value, 'Should not return an error').toEqual({ nextExpectedRevision: 2n });
|
|
@@ -86,9 +88,36 @@ describe('Repository', () => {
|
|
|
86
88
|
return;
|
|
87
89
|
expect(res.error).toEqual(new EventConflictException('Test', instance.id, 'TestRenamed', 'TestRenamed'));
|
|
88
90
|
});
|
|
91
|
+
test('should detect conflicts from all intervening events, not just the stream head', async () => {
|
|
92
|
+
const store = new MockEventStore();
|
|
93
|
+
// 1. Save [TestCreated] → stream at rev 0
|
|
94
|
+
const created = await store.saveEvents(streamName, [testCreated], EventExistenceRevision.NoStream);
|
|
95
|
+
expect(created.ok).toBe(true);
|
|
96
|
+
// 2. Load aggregate (revision = 0n)
|
|
97
|
+
const testRepo = new TestRepository(store);
|
|
98
|
+
const instance = await testRepo.getById('1');
|
|
99
|
+
if (!instance)
|
|
100
|
+
throw new Error('Test 1 should exist');
|
|
101
|
+
expect(instance.revision).toBe(0n);
|
|
102
|
+
// 3. Add pending TestRenamed
|
|
103
|
+
const rename = await instance.rename('foo');
|
|
104
|
+
expect(rename.ok).toBe(true);
|
|
105
|
+
// 4. Concurrently save [testRenamedThrice, testRenamed, testRenamedTwice] → stream at rev 3
|
|
106
|
+
const concurrent = await store.saveEvents(streamName, [testRenamedThrice, testRenamed, testRenamedTwice], 0n);
|
|
107
|
+
expect(concurrent.ok).toBe(true);
|
|
108
|
+
// 5. save(aggregate, 0n)
|
|
109
|
+
// - optimization does NOT trigger (0n is not > 0n)
|
|
110
|
+
// - saveEvents fails: ConcurrencyException(nextExpectedRevision=3n)
|
|
111
|
+
// - retrySave loads from 0n, finds TestRenamed conflict at rev 2
|
|
112
|
+
const res = await testRepo.save(instance, 0n);
|
|
113
|
+
expect(res.ok, 'Should return a conflict error').toBe(false);
|
|
114
|
+
if (res.ok)
|
|
115
|
+
return;
|
|
116
|
+
expect(res.error).toEqual(new EventConflictException('Test', instance.id, 'TestRenamed', 'TestRenamed'));
|
|
117
|
+
});
|
|
89
118
|
test(`should succeed when events don't conflict`, async () => {
|
|
90
119
|
const store = new MockEventStore();
|
|
91
|
-
const save = await store.saveEvents(streamName, [testCreated, testRenamed,
|
|
120
|
+
const save = await store.saveEvents(streamName, [testCreated, testRenamed, testRenamedTwice], EventExistenceRevision.NoStream);
|
|
92
121
|
expect(save.error?.message).not.toBeDefined();
|
|
93
122
|
expect(save.ok, 'Should not return an error').toBe(true);
|
|
94
123
|
expect(save.value, 'Should not return an error').toEqual({ nextExpectedRevision: 2n });
|
|
@@ -105,4 +134,192 @@ describe('Repository', () => {
|
|
|
105
134
|
expect(res.ok, 'Should return an error').toBe(true);
|
|
106
135
|
});
|
|
107
136
|
});
|
|
137
|
+
describe('Repository - TodoChecklist', () => {
|
|
138
|
+
const checklistStreamName = TodoChecklist.getStreamName('1');
|
|
139
|
+
const checklistCreated = createEvent({
|
|
140
|
+
type: 'TodoChecklistCreated',
|
|
141
|
+
data: { id: '1', name: 'My List' },
|
|
142
|
+
metadata: mockMetadata,
|
|
143
|
+
});
|
|
144
|
+
const itemAAdded = createEvent({
|
|
145
|
+
type: 'TodoItemAdded',
|
|
146
|
+
data: { id: '1', itemId: 'a', name: 'Item A' },
|
|
147
|
+
metadata: mockMetadata,
|
|
148
|
+
});
|
|
149
|
+
test('should not reject pending events that depend on earlier pending events', async () => {
|
|
150
|
+
const store = new MockEventStore();
|
|
151
|
+
// 1. Initial state: checklist with item 'a' → stream at rev 1
|
|
152
|
+
const setup = await store.saveEvents(checklistStreamName, [checklistCreated, itemAAdded], EventExistenceRevision.NoStream);
|
|
153
|
+
expect(setup.ok).toBe(true);
|
|
154
|
+
// 2. Load aggregate (revision = 1n)
|
|
155
|
+
const repo = new TodoChecklistRepository(store);
|
|
156
|
+
const checklist = await repo.getById('1');
|
|
157
|
+
if (!checklist)
|
|
158
|
+
throw new Error('Checklist should exist');
|
|
159
|
+
expect(checklist.revision).toBe(1n);
|
|
160
|
+
// 3. Add a new item 'b' and rename it
|
|
161
|
+
checklist.addItem('b', 'Item B');
|
|
162
|
+
checklist.renameItem('b', 'Updated Item B');
|
|
163
|
+
// 4. Concurrent: someone renames item 'a' → stream at rev 2
|
|
164
|
+
const concurrentRename = createEvent({
|
|
165
|
+
type: 'TodoItemRenamed',
|
|
166
|
+
data: { id: '1', itemId: 'a', name: 'Updated Item A' },
|
|
167
|
+
metadata: mockMetadata,
|
|
168
|
+
});
|
|
169
|
+
await store.saveEvents(checklistStreamName, [concurrentRename], 1n);
|
|
170
|
+
// 5. save(checklist, 1n)
|
|
171
|
+
// - persistEvents fails (stream is at rev 2, we expect 1)
|
|
172
|
+
// - retrySave: loadNewState builds newAggregate from committed events only
|
|
173
|
+
// - checkConflicts: hasConflict(TodoItemRenamed('b')) checks newAggregate
|
|
174
|
+
// which does NOT have pending TodoItemAdded('b') applied → item 'b' missing
|
|
175
|
+
// - BUG: returns EntityDNEException for item 'b' even though it's in the pending set
|
|
176
|
+
// - EXPECTED: save succeeds — renaming 'a' doesn't conflict with adding/renaming 'b'
|
|
177
|
+
const res = await repo.save(checklist, 1n);
|
|
178
|
+
expect(res.error?.message).not.toBeDefined();
|
|
179
|
+
expect(res.ok, 'Should succeed — no real conflict').toBe(true);
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
describe('Repository - Counter (double-apply detection)', () => {
|
|
183
|
+
const streamName = Counter.getStreamName('1');
|
|
184
|
+
const counterCreated = createEvent({
|
|
185
|
+
type: 'CounterCreated',
|
|
186
|
+
data: { id: '1', name: 'Initial', description: 'Desc' },
|
|
187
|
+
metadata: mockMetadata,
|
|
188
|
+
});
|
|
189
|
+
const nameChanged1 = createEvent({
|
|
190
|
+
type: 'CounterNameChanged',
|
|
191
|
+
data: { id: '1', name: 'Name v1' },
|
|
192
|
+
metadata: mockMetadata,
|
|
193
|
+
});
|
|
194
|
+
const nameChanged2 = createEvent({
|
|
195
|
+
type: 'CounterNameChanged',
|
|
196
|
+
data: { id: '1', name: 'Name v2' },
|
|
197
|
+
metadata: mockMetadata,
|
|
198
|
+
});
|
|
199
|
+
const nameChanged3 = createEvent({
|
|
200
|
+
type: 'CounterNameChanged',
|
|
201
|
+
data: { id: '1', name: 'Name v3' },
|
|
202
|
+
metadata: mockMetadata,
|
|
203
|
+
});
|
|
204
|
+
test('loadNewState should not double-apply events at clientRevision', async () => {
|
|
205
|
+
const store = new MockEventStore();
|
|
206
|
+
// 1. Save [CounterCreated, NameChanged1, NameChanged2] → stream at rev 2
|
|
207
|
+
const setup = await store.saveEvents(streamName, [counterCreated, nameChanged1, nameChanged2], EventExistenceRevision.NoStream);
|
|
208
|
+
expect(setup.ok).toBe(true);
|
|
209
|
+
// 2. Load aggregate (revision = 2n, nameApplyCount = 3)
|
|
210
|
+
const repo = new CounterRepository(store);
|
|
211
|
+
const counter = await repo.getById('1');
|
|
212
|
+
if (!counter)
|
|
213
|
+
throw new Error('Counter should exist');
|
|
214
|
+
expect(counter.revision).toBe(2n);
|
|
215
|
+
expect(counter.nameApplyCount).toBe(3);
|
|
216
|
+
// 3. Concurrently save NameChanged3 → stream at rev 3
|
|
217
|
+
await store.saveEvents(streamName, [nameChanged3], 2n);
|
|
218
|
+
// 4. loadNewState(counter, 2n) should build newAggregate from:
|
|
219
|
+
// - aggregate.history (events 0-2): nameApplyCount = 3
|
|
220
|
+
// - intervening events from rev 2 forward: should only include rev 3
|
|
221
|
+
// Expected nameApplyCount = 4 (3 from history + 1 from rev 3)
|
|
222
|
+
// Bug (if inclusive): nameApplyCount = 5 (event at rev 2 double-applied)
|
|
223
|
+
const { newAggregate, newEvents } = await repo.testLoadNewState(counter, 2n);
|
|
224
|
+
expect(newEvents).toHaveLength(1);
|
|
225
|
+
expect(newAggregate.nameApplyCount).toBe(4);
|
|
226
|
+
expect(newAggregate.name).toBe('Name v3');
|
|
227
|
+
});
|
|
228
|
+
test('loadNewState should load all intervening events from clientRevision', async () => {
|
|
229
|
+
const store = new MockEventStore();
|
|
230
|
+
// 1. Save [CounterCreated, NameChanged1] → stream at rev 1
|
|
231
|
+
const setup = await store.saveEvents(streamName, [counterCreated, nameChanged1], EventExistenceRevision.NoStream);
|
|
232
|
+
expect(setup.ok).toBe(true);
|
|
233
|
+
// 2. Load aggregate (revision = 1n, nameApplyCount = 2)
|
|
234
|
+
const repo = new CounterRepository(store);
|
|
235
|
+
const counter = await repo.getById('1');
|
|
236
|
+
if (!counter)
|
|
237
|
+
throw new Error('Counter should exist');
|
|
238
|
+
expect(counter.revision).toBe(1n);
|
|
239
|
+
expect(counter.nameApplyCount).toBe(2);
|
|
240
|
+
// 3. Concurrently save [NameChanged2, NameChanged3] → stream at rev 3
|
|
241
|
+
await store.saveEvents(streamName, [nameChanged2, nameChanged3], 1n);
|
|
242
|
+
// 4. loadNewState(counter, 1n) should load events at rev 2 and 3
|
|
243
|
+
// Expected nameApplyCount = 4 (2 from history + 2 intervening)
|
|
244
|
+
const { newAggregate, newEvents } = await repo.testLoadNewState(counter, 1n);
|
|
245
|
+
expect(newEvents).toHaveLength(2);
|
|
246
|
+
expect(newAggregate.nameApplyCount).toBe(4);
|
|
247
|
+
expect(newAggregate.name).toBe('Name v3');
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
describe('Repository - revision tracking after save', () => {
|
|
251
|
+
test('revision should match store after initial save (create → save)', async () => {
|
|
252
|
+
const store = new MockEventStore();
|
|
253
|
+
const repo = new CounterRepository(store);
|
|
254
|
+
// Create produces 1 event (CounterCreated) → stored at revision 0
|
|
255
|
+
const res = await Counter.create('1', 'Test', 'Desc');
|
|
256
|
+
expect(res.ok).toBe(true);
|
|
257
|
+
if (!res.ok)
|
|
258
|
+
return;
|
|
259
|
+
const counter = res.value;
|
|
260
|
+
const save = await repo.save(counter, EventExistenceRevision.NoStream);
|
|
261
|
+
expect(save.ok).toBe(true);
|
|
262
|
+
if (!save.ok)
|
|
263
|
+
return;
|
|
264
|
+
// Store head is at revision 0 → aggregate.revision should be 0n
|
|
265
|
+
expect(save.value.nextExpectedRevision).toBe(0n);
|
|
266
|
+
expect(counter.revision).toBe(0n);
|
|
267
|
+
});
|
|
268
|
+
test('revision should match store after saving a loaded aggregate', async () => {
|
|
269
|
+
const store = new MockEventStore();
|
|
270
|
+
const streamName = Counter.getStreamName('1');
|
|
271
|
+
const repo = new CounterRepository(store);
|
|
272
|
+
// Seed: [CounterCreated] → rev 0
|
|
273
|
+
await store.saveEvents(streamName, [
|
|
274
|
+
createEvent({
|
|
275
|
+
type: 'CounterCreated',
|
|
276
|
+
data: { id: '1', name: 'Initial', description: 'Desc' },
|
|
277
|
+
metadata: mockMetadata,
|
|
278
|
+
}),
|
|
279
|
+
], EventExistenceRevision.NoStream);
|
|
280
|
+
// Load aggregate at revision 0
|
|
281
|
+
const counter = await repo.getById('1');
|
|
282
|
+
if (!counter)
|
|
283
|
+
throw new Error('Counter should exist');
|
|
284
|
+
expect(counter.revision).toBe(0n);
|
|
285
|
+
// Change name → 1 pending event
|
|
286
|
+
counter.changeName('Updated');
|
|
287
|
+
// Save → event stored at revision 1
|
|
288
|
+
const save = await repo.save(counter, counter.revision);
|
|
289
|
+
expect(save.ok).toBe(true);
|
|
290
|
+
if (!save.ok)
|
|
291
|
+
return;
|
|
292
|
+
expect(save.value.nextExpectedRevision).toBe(1n);
|
|
293
|
+
expect(counter.revision).toBe(1n);
|
|
294
|
+
});
|
|
295
|
+
test('revision should match store across two saves on the same object', async () => {
|
|
296
|
+
const store = new MockEventStore();
|
|
297
|
+
const repo = new CounterRepository(store);
|
|
298
|
+
// 1. Create → save
|
|
299
|
+
const res = await Counter.create('1', 'Test', 'Desc');
|
|
300
|
+
expect(res.ok).toBe(true);
|
|
301
|
+
if (!res.ok)
|
|
302
|
+
return;
|
|
303
|
+
const counter = res.value;
|
|
304
|
+
const save1 = await repo.save(counter, EventExistenceRevision.NoStream);
|
|
305
|
+
expect(save1.ok).toBe(true);
|
|
306
|
+
if (!save1.ok)
|
|
307
|
+
return;
|
|
308
|
+
// After first save: store at rev 0 → revision should be 0n
|
|
309
|
+
expect(save1.value.nextExpectedRevision).toBe(0n);
|
|
310
|
+
expect(counter.revision).toBe(0n);
|
|
311
|
+
if (typeof counter.revision !== 'bigint')
|
|
312
|
+
throw new Error('Revision should be a bigint');
|
|
313
|
+
// 2. Command → save again using aggregate's revision
|
|
314
|
+
counter.changeName('Updated');
|
|
315
|
+
const save2 = await repo.save(counter, counter.revision);
|
|
316
|
+
expect(save2.error?.message).not.toBeDefined();
|
|
317
|
+
expect(save2.ok, 'Second save should succeed').toBe(true);
|
|
318
|
+
if (!save2.ok)
|
|
319
|
+
return;
|
|
320
|
+
// After second save: store at rev 1 → revision should be 1n
|
|
321
|
+
expect(save2.value.nextExpectedRevision).toBe(1n);
|
|
322
|
+
expect(counter.revision).toBe(1n);
|
|
323
|
+
});
|
|
324
|
+
});
|
|
108
325
|
//# sourceMappingURL=Repository.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Repository.test.js","sourceRoot":"","sources":["../../src/Repository.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Repository.test.js","sourceRoot":"","sources":["../../src/Repository.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;EAsBE;AAEF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EACL,IAAI,GAIL,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,aAAa,GAId,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,OAAO,EAAgD,MAAM,2BAA2B,CAAA;AACjG,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAClG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,MAAM,WAAW,GAAG,WAAW,CAAmB;QAChD,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;QAC/B,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAA;IACF,MAAM,WAAW,GAAG,WAAW,CAAmB;QAChD,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAA;IACF,MAAM,gBAAgB,GAAG,WAAW,CAAmB;QACrD,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE;QACnC,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAA;IACF,MAAM,iBAAiB,GAAG,WAAW,CAAmB;QACtD,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE;QACpC,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAA;IACF,MAAM,WAAW,GAAG,WAAW,CAAmB;QAChD,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;QACjB,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAE1C,IAAI,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAA;QAClC,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,KAAK,CAAC,CAAA;QAE1C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QAC9C,MAAM,CAAE,GAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;QACrD,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAM;QACnB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAA;QAC5E,MAAM,CAAE,IAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;QACtD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAA;QAClC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,UAAU,CACjC,UAAU,EACV,CAAC,WAAW,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAC5C,sBAAsB,CAAC,QAAQ,CAChC,CAAA;QACD,MAAM,CAAE,IAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;QACtD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxD,MAAM,CAAE,IAAY,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC,OAAO,CAAC,EAAE,oBAAoB,EAAE,EAAE,EAAE,CAAC,CAAA;QAE/F,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,KAAK,CAAC,CAAA;QAC1C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5C,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QAErD,sBAAsB;QACtB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3C,MAAM,CAAE,MAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;QACxD,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE1D,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAC7C,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpD,IAAI,GAAG,CAAC,EAAE;YAAE,OAAM;QAElB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CACvB,IAAI,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,aAAa,EAAE,aAAa,CAAC,CAC9E,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;QAC/F,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAA;QAElC,0CAA0C;QAC1C,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,UAAU,CACpC,UAAU,EACV,CAAC,WAAW,CAAC,EACb,sBAAsB,CAAC,QAAQ,CAChC,CAAA;QACD,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE7B,oCAAoC;QACpC,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,KAAK,CAAC,CAAA;QAC1C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5C,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACrD,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAElC,6BAA6B;QAC7B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3C,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE5B,4FAA4F;QAC5F,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,UAAU,CACvC,UAAU,EACV,CAAC,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAClD,EAAE,CACH,CAAA;QACD,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEhC,yBAAyB;QACzB,sDAAsD;QACtD,uEAAuE;QACvE,oEAAoE;QACpE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAC7C,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,gCAAgC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5D,IAAI,GAAG,CAAC,EAAE;YAAE,OAAM;QAElB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CACvB,IAAI,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,aAAa,EAAE,aAAa,CAAC,CAC9E,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAA;QAClC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,UAAU,CACjC,UAAU,EACV,CAAC,WAAW,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAC5C,sBAAsB,CAAC,QAAQ,CAChC,CAAA;QACD,MAAM,CAAE,IAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;QACtD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxD,MAAM,CAAE,IAAY,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC,OAAO,CAAC,EAAE,oBAAoB,EAAE,EAAE,EAAE,CAAC,CAAA;QAE/F,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,KAAK,CAAC,CAAA;QAC1C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5C,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QAErD,sBAAsB;QACtB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAA;QACtC,MAAM,CAAE,MAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;QACxD,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE1D,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAC7C,MAAM,CAAE,MAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;QACxD,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,MAAM,mBAAmB,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAE5D,MAAM,gBAAgB,GAAG,WAAW,CAA4B;QAC9D,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;QAClC,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAA;IACF,MAAM,UAAU,GAAG,WAAW,CAAqB;QACjD,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9C,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAA;IAEF,IAAI,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAA;QAElC,8DAA8D;QAC9D,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,UAAU,CAClC,mBAAmB,EACnB,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAC9B,sBAAsB,CAAC,QAAQ,CAChC,CAAA;QACD,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE3B,oCAAoC;QACpC,MAAM,IAAI,GAAG,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAA;QAC/C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACzC,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QACzD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAEnC,sCAAsC;QACtC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QAChC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;QAE3C,4DAA4D;QAC5D,MAAM,gBAAgB,GAAG,WAAW,CAAuB;YACzD,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE;YACtD,QAAQ,EAAE,YAAY;SACvB,CAAC,CAAA;QACF,MAAM,KAAK,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAA;QAEnE,yBAAyB;QACzB,6DAA6D;QAC7D,8EAA8E;QAC9E,6EAA6E;QAC7E,iFAAiF;QACjF,wFAAwF;QACxF,wFAAwF;QACxF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAE,GAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;QACrD,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,mCAAmC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;IAC7D,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAE7C,MAAM,cAAc,GAAG,WAAW,CAAsB;QACtD,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE;QACvD,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAA;IACF,MAAM,YAAY,GAAG,WAAW,CAA0B;QACxD,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;QAClC,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAA;IACF,MAAM,YAAY,GAAG,WAAW,CAA0B;QACxD,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;QAClC,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAA;IACF,MAAM,YAAY,GAAG,WAAW,CAA0B;QACxD,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;QAClC,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAA;IAEF,IAAI,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAA;QAElC,yEAAyE;QACzE,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,UAAU,CAClC,UAAU,EACV,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC,EAC5C,sBAAsB,CAAC,QAAQ,CAChC,CAAA;QACD,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE3B,wDAAwD;QACxD,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACvC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;QACrD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEtC,sDAAsD;QACtD,MAAM,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAA;QAEtD,+DAA+D;QAC/D,0DAA0D;QAC1D,wEAAwE;QACxE,iEAAiE;QACjE,4EAA4E;QAC5E,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QAE5E,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3C,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAA;QAElC,2DAA2D;QAC3D,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,UAAU,CAClC,UAAU,EACV,CAAC,cAAc,EAAE,YAAY,CAAC,EAC9B,sBAAsB,CAAC,QAAQ,CAChC,CAAA;QACD,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE3B,wDAAwD;QACxD,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACvC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;QACrD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEtC,sEAAsE;QACtE,MAAM,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAA;QAEpE,iEAAiE;QACjE,kEAAkE;QAClE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QAE5E,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3C,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACzD,IAAI,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAA;QAClC,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAA;QAEzC,kEAAkE;QAClE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACrD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzB,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAM;QACnB,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAA;QAEzB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAA;QACtE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAM;QAEpB,gEAAgE;QAChE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAA;QAClC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QAC7C,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAA;QAEzC,iCAAiC;QACjC,MAAM,KAAK,CAAC,UAAU,CACpB,UAAU,EACV;YACE,WAAW,CAAsB;gBAC/B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE;gBACvD,QAAQ,EAAE,YAAY;aACvB,CAAC;SACH,EACD,sBAAsB,CAAC,QAAQ,CAChC,CAAA;QAED,+BAA+B;QAC/B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACvC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;QACrD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAEjC,gCAAgC;QAChC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAE7B,oCAAoC;QACpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QACvD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAM;QAEpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAA;QAClC,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAA;QAEzC,mBAAmB;QACnB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACrD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzB,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAM;QACnB,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAA;QAEzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAA;QACvE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,CAAC,KAAK,CAAC,EAAE;YAAE,OAAM;QAErB,2DAA2D;QAC3D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjC,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAExF,qDAAqD;QACrD,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAE7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QACxD,MAAM,CAAE,KAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;QACvD,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzD,IAAI,CAAC,KAAK,CAAC,EAAE;YAAE,OAAM;QAErB,4DAA4D;QAC5D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|