@adtrackify/at-service-common 3.19.12 → 3.19.14

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 (25) hide show
  1. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js +322 -26
  2. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js.map +1 -1
  3. package/dist/cjs/helpers/identity-cache-helper.js +131 -130
  4. package/dist/cjs/helpers/identity-cache-helper.js.map +1 -1
  5. package/dist/cjs/services/db/identity-cache-dynamodb-service.d.ts +3 -1
  6. package/dist/cjs/services/db/identity-cache-dynamodb-service.js +17 -12
  7. package/dist/cjs/services/db/identity-cache-dynamodb-service.js.map +1 -1
  8. package/dist/cjs/services/db/tracking-events-db-service.d.ts +1 -0
  9. package/dist/cjs/services/db/tracking-events-db-service.js +23 -0
  10. package/dist/cjs/services/db/tracking-events-db-service.js.map +1 -1
  11. package/dist/cjs/types/shopify-graphql-types/admin.generated.d.ts +38 -38
  12. package/dist/cjs/types/shopify-graphql-types/admin.types.js.map +1 -1
  13. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js +322 -26
  14. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js.map +1 -1
  15. package/dist/esm/helpers/identity-cache-helper.js +131 -130
  16. package/dist/esm/helpers/identity-cache-helper.js.map +1 -1
  17. package/dist/esm/services/db/identity-cache-dynamodb-service.d.ts +3 -1
  18. package/dist/esm/services/db/identity-cache-dynamodb-service.js +17 -12
  19. package/dist/esm/services/db/identity-cache-dynamodb-service.js.map +1 -1
  20. package/dist/esm/services/db/tracking-events-db-service.d.ts +1 -0
  21. package/dist/esm/services/db/tracking-events-db-service.js +23 -0
  22. package/dist/esm/services/db/tracking-events-db-service.js.map +1 -1
  23. package/dist/esm/types/shopify-graphql-types/admin.generated.d.ts +38 -38
  24. package/dist/esm/types/shopify-graphql-types/admin.types.js.map +1 -1
  25. package/package.json +1 -1
@@ -1,37 +1,228 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const dynamodb_client_js_1 = require("../../clients/generic/dynamodb-client.js");
3
+ const mockInvokeFunction = jest.fn();
4
+ jest.mock('../../clients/index.js', () => ({
5
+ DynamoDbClient: {
6
+ safeGet: jest.fn(),
7
+ safePut: jest.fn(),
8
+ safeDelete: jest.fn(),
9
+ safeBatchGet: jest.fn(),
10
+ safeBatchWrite: jest.fn(),
11
+ safeQueryByGSI: jest.fn(),
12
+ batchWrite: jest.fn(),
13
+ },
14
+ LambdaInvokeClient: jest.fn().mockImplementation(() => ({
15
+ invokeFunction: mockInvokeFunction,
16
+ })),
17
+ }));
18
+ jest.mock('../../helpers/index.js', () => ({
19
+ Logger: {
20
+ debug: jest.fn(),
21
+ info: jest.fn(),
22
+ warn: jest.fn(),
23
+ error: jest.fn(),
24
+ },
25
+ }));
4
26
  const identity_cache_dynamodb_service_js_1 = require("../../services/db/identity-cache-dynamodb-service.js");
5
- const mockedSafeGet = jest.spyOn(dynamodb_client_js_1.DynamoDbClient, 'safeGet');
6
- const mockedSafePut = jest.spyOn(dynamodb_client_js_1.DynamoDbClient, 'safePut');
7
- const mockedSafeDelete = jest.spyOn(dynamodb_client_js_1.DynamoDbClient, 'safeDelete');
8
- const mockedSafeBatchGet = jest.spyOn(dynamodb_client_js_1.DynamoDbClient, 'safeBatchGet');
9
- const mockedSafeBatchWrite = jest.spyOn(dynamodb_client_js_1.DynamoDbClient, 'safeBatchWrite');
10
- const mockedSafeQueryByGSI = jest.spyOn(dynamodb_client_js_1.DynamoDbClient, 'safeQueryByGSI');
11
- const mockedBatchWrite = jest.spyOn(dynamodb_client_js_1.DynamoDbClient, 'batchWrite');
12
- const mockedDynamoDbClient = {
13
- safeGet: mockedSafeGet,
14
- safePut: mockedSafePut,
15
- safeDelete: mockedSafeDelete,
16
- safeBatchGet: mockedSafeBatchGet,
17
- safeBatchWrite: mockedSafeBatchWrite,
18
- safeQueryByGSI: mockedSafeQueryByGSI,
19
- batchWrite: mockedBatchWrite,
20
- };
27
+ const index_js_1 = require("../../clients/index.js");
28
+ const mockedDynamoDbClient = index_js_1.DynamoDbClient;
21
29
  describe('IdentityCacheDynamoDbService', () => {
22
30
  beforeEach(() => {
23
31
  jest.clearAllMocks();
24
32
  });
25
- describe('Mock Verification', () => {
26
- it('should have spied DynamoDbClient methods', () => {
27
- expect(jest.isMockFunction(mockedSafeGet)).toBe(true);
28
- expect(jest.isMockFunction(mockedSafeBatchGet)).toBe(true);
33
+ describe('getIdentityWithCaching', () => {
34
+ const pixelId = 'pixel123';
35
+ const lambdaArn = 'arn:aws:lambda:us-east-1:123456789:function:identity-private';
36
+ describe('cache hit (fresh cache)', () => {
37
+ it('should return cached identity without invoking Neptune Lambda', async () => {
38
+ const incomingIdentity = {
39
+ identityId: 'identity456',
40
+ traits: { emails: ['test@email.com'] },
41
+ };
42
+ const cachedResponse = {
43
+ pk: `identity#${pixelId}#identity456`,
44
+ pixelId,
45
+ identityId: 'identity456',
46
+ response: {
47
+ identityId: 'identity456',
48
+ traits: { emails: ['test@email.com'] },
49
+ },
50
+ updatedAt: new Date().toISOString(),
51
+ };
52
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
53
+ const result = await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
54
+ expect(result).toBeDefined();
55
+ expect(result?.identityId).toBe('identity456');
56
+ expect(mockInvokeFunction).not.toHaveBeenCalled();
57
+ });
58
+ });
59
+ describe('cache miss', () => {
60
+ it('should invoke Neptune Lambda and return resolved identity', async () => {
61
+ const incomingIdentity = {
62
+ identityId: 'identity456',
63
+ traits: { emails: ['test@email.com'] },
64
+ };
65
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
66
+ mockInvokeFunction.mockResolvedValueOnce({
67
+ statusCode: 200,
68
+ body: JSON.stringify({
69
+ identity: {
70
+ identityId: 'resolved-identity',
71
+ traits: { emails: ['test@email.com', 'resolved@email.com'] },
72
+ },
73
+ }),
74
+ });
75
+ const result = await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
76
+ expect(mockInvokeFunction).toHaveBeenCalledWith(lambdaArn, {
77
+ pixelId,
78
+ context: { identity: incomingIdentity },
79
+ });
80
+ expect(result?.identityId).toBe('resolved-identity');
81
+ expect(mockedDynamoDbClient.safeBatchWrite).toHaveBeenCalled();
82
+ });
83
+ it('should return incomingIdentity when Neptune Lambda fails to resolve', async () => {
84
+ const incomingIdentity = {
85
+ identityId: 'identity456',
86
+ traits: { emails: ['test@email.com'] },
87
+ };
88
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
89
+ mockInvokeFunction.mockResolvedValueOnce({
90
+ statusCode: 200,
91
+ body: JSON.stringify({ identity: undefined }),
92
+ });
93
+ const result = await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
94
+ expect(result).toEqual(incomingIdentity);
95
+ });
96
+ });
97
+ describe('cache stale', () => {
98
+ it('should invoke Neptune Lambda when cache is stale', async () => {
99
+ const incomingIdentity = {
100
+ identityId: 'identity456',
101
+ traits: { emails: ['old@email.com', 'new@email.com'] },
102
+ };
103
+ const cachedResponse = {
104
+ pk: `identity#${pixelId}#identity456`,
105
+ pixelId,
106
+ identityId: 'identity456',
107
+ response: {
108
+ identityId: 'identity456',
109
+ traits: { emails: ['old@email.com'] },
110
+ },
111
+ updatedAt: new Date().toISOString(),
112
+ };
113
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
114
+ mockInvokeFunction.mockResolvedValueOnce({
115
+ statusCode: 200,
116
+ body: JSON.stringify({
117
+ identity: {
118
+ identityId: 'identity456',
119
+ traits: { emails: ['old@email.com', 'new@email.com'] },
120
+ },
121
+ }),
122
+ });
123
+ const result = await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
124
+ expect(mockInvokeFunction).toHaveBeenCalled();
125
+ expect(result?.identityId).toBe('identity456');
126
+ expect(result?.traits?.emails).toContain('new@email.com');
127
+ });
128
+ it('should use merged cache identity when Neptune fails', async () => {
129
+ const incomingIdentity = {
130
+ identityId: 'identity456',
131
+ traits: { emails: ['old@email.com', 'new@email.com'] },
132
+ };
133
+ const cachedResponse = {
134
+ pk: `identity#${pixelId}#identity456`,
135
+ pixelId,
136
+ identityId: 'identity456',
137
+ response: {
138
+ identityId: 'identity456',
139
+ traits: { emails: ['old@email.com'] },
140
+ },
141
+ updatedAt: new Date().toISOString(),
142
+ };
143
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
144
+ mockInvokeFunction.mockResolvedValueOnce({
145
+ statusCode: 500,
146
+ body: 'Internal Server Error',
147
+ });
148
+ const result = await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
149
+ expect(result).toBeDefined();
150
+ expect(result?.identityId).toBe('identity456');
151
+ });
152
+ });
153
+ describe('Neptune Lambda invocation', () => {
154
+ it('should write-back Neptune response to cache on success', async () => {
155
+ const incomingIdentity = {
156
+ traits: { emails: ['test@email.com'] },
157
+ };
158
+ mockedDynamoDbClient.safeBatchGet.mockResolvedValueOnce([]);
159
+ mockInvokeFunction.mockResolvedValueOnce({
160
+ statusCode: 200,
161
+ body: JSON.stringify({
162
+ identity: {
163
+ identityId: 'neptune-resolved-id',
164
+ traits: { emails: ['test@email.com'] },
165
+ },
166
+ }),
167
+ });
168
+ await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
169
+ expect(mockedDynamoDbClient.safeBatchWrite).toHaveBeenCalled();
170
+ const writtenItems = mockedDynamoDbClient.safeBatchWrite.mock.calls[0][1];
171
+ const identityPks = writtenItems.map((item) => item.pk);
172
+ expect(identityPks).toContain(`identity#${pixelId}#neptune-resolved-id`);
173
+ });
174
+ it('should not write to cache when Neptune returns undefined', async () => {
175
+ const incomingIdentity = {
176
+ traits: { emails: ['test@email.com'] },
177
+ };
178
+ mockedDynamoDbClient.safeBatchGet.mockResolvedValueOnce([]);
179
+ mockInvokeFunction.mockResolvedValueOnce({
180
+ statusCode: 200,
181
+ body: JSON.stringify({ identity: undefined }),
182
+ });
183
+ await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
184
+ expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
185
+ });
29
186
  });
30
- it('should call mocked safeGet when getIdentityFromCache is called with identityId', async () => {
31
- mockedSafeGet.mockResolvedValueOnce(null);
32
- await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.getIdentityFromCache('pixel123', { identityId: 'id123' });
33
- console.log('safeGet mock calls:', mockedSafeGet.mock.calls);
34
- expect(mockedSafeGet).toHaveBeenCalled();
187
+ describe('error handling (fail-open)', () => {
188
+ it('should return undefined when pixelId is missing', async () => {
189
+ const result = await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.getIdentityWithCaching(null, { identityId: 'test-id' }, lambdaArn);
190
+ expect(result).toBeUndefined();
191
+ expect(mockInvokeFunction).not.toHaveBeenCalled();
192
+ });
193
+ it('should return undefined when incomingIdentity is missing', async () => {
194
+ const result = await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.getIdentityWithCaching(pixelId, null, lambdaArn);
195
+ expect(result).toBeUndefined();
196
+ expect(mockInvokeFunction).not.toHaveBeenCalled();
197
+ });
198
+ it('should return undefined when Neptune Lambda throws', async () => {
199
+ const incomingIdentity = {
200
+ identityId: 'identity456',
201
+ traits: { emails: ['test@email.com'] },
202
+ };
203
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
204
+ mockInvokeFunction.mockRejectedValueOnce(new Error('Lambda invocation failed'));
205
+ const result = await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
206
+ expect(result).toEqual(incomingIdentity);
207
+ });
208
+ it('should not throw when cache write fails after Neptune success', async () => {
209
+ const incomingIdentity = {
210
+ traits: { emails: ['test@email.com'] },
211
+ };
212
+ mockedDynamoDbClient.safeBatchGet.mockResolvedValueOnce([]);
213
+ mockInvokeFunction.mockResolvedValueOnce({
214
+ statusCode: 200,
215
+ body: JSON.stringify({
216
+ identity: {
217
+ identityId: 'neptune-resolved-id',
218
+ traits: { emails: ['test@email.com'] },
219
+ },
220
+ }),
221
+ });
222
+ mockedDynamoDbClient.safeBatchWrite.mockRejectedValueOnce(new Error('DynamoDB write failed'));
223
+ const result = await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
224
+ expect(result?.identityId).toBe('neptune-resolved-id');
225
+ });
35
226
  });
36
227
  });
37
228
  describe('Key Builders', () => {
@@ -309,6 +500,21 @@ describe('IdentityCacheDynamoDbService', () => {
309
500
  expect(result).toBeUndefined();
310
501
  expect(mockedDynamoDbClient.safeGet).not.toHaveBeenCalled();
311
502
  });
503
+ it('should return undefined when only pixelId is missing', async () => {
504
+ const result = await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.getIdentityMap('', 'identity456');
505
+ expect(result).toBeUndefined();
506
+ expect(mockedDynamoDbClient.safeGet).not.toHaveBeenCalled();
507
+ });
508
+ it('should return undefined when only identityId is missing', async () => {
509
+ const result = await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.getIdentityMap('pixel123', '');
510
+ expect(result).toBeUndefined();
511
+ expect(mockedDynamoDbClient.safeGet).not.toHaveBeenCalled();
512
+ });
513
+ it('should return undefined on safeGet error (fail-open)', async () => {
514
+ mockedDynamoDbClient.safeGet.mockRejectedValueOnce(new Error('DynamoDB error'));
515
+ const result = await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.getIdentityMap('pixel123', 'identity456');
516
+ expect(result).toBeUndefined();
517
+ });
312
518
  });
313
519
  describe('getForcePurgeFlag', () => {
314
520
  it('should return true when flag exists', async () => {
@@ -349,6 +555,23 @@ describe('IdentityCacheDynamoDbService', () => {
349
555
  const putItem = mockedDynamoDbClient.safePut.mock.calls[0][1];
350
556
  expect(putItem.ttl).toBeGreaterThan(0);
351
557
  });
558
+ it('should include createdAt timestamp', async () => {
559
+ const before = new Date().toISOString();
560
+ await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.setForcePurgeFlag('pixel123', 'identity456');
561
+ const after = new Date().toISOString();
562
+ const putItem = mockedDynamoDbClient.safePut.mock.calls[0][1];
563
+ expect(putItem.createdAt).toBeDefined();
564
+ expect(putItem.createdAt >= before).toBe(true);
565
+ expect(putItem.createdAt <= after).toBe(true);
566
+ });
567
+ it('should return early when pixelId is missing', async () => {
568
+ await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.setForcePurgeFlag('', 'identity456');
569
+ expect(mockedDynamoDbClient.safePut).not.toHaveBeenCalled();
570
+ });
571
+ it('should return early when identityId is missing', async () => {
572
+ await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.setForcePurgeFlag('pixel123', '');
573
+ expect(mockedDynamoDbClient.safePut).not.toHaveBeenCalled();
574
+ });
352
575
  it('should not throw on error (fail-open)', async () => {
353
576
  mockedDynamoDbClient.safePut.mockRejectedValueOnce(new Error('DynamoDB error'));
354
577
  await expect(identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.setForcePurgeFlag('pixel123', 'identity456')).resolves.toBeUndefined();
@@ -366,6 +589,27 @@ describe('IdentityCacheDynamoDbService', () => {
366
589
  await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.putIdentityMap('', '', []);
367
590
  expect(mockedDynamoDbClient.safePut).not.toHaveBeenCalled();
368
591
  });
592
+ it('should return early when only pixelId is missing', async () => {
593
+ await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.putIdentityMap('', 'identity456', ['linked1']);
594
+ expect(mockedDynamoDbClient.safePut).not.toHaveBeenCalled();
595
+ });
596
+ it('should return early when only identityId is missing', async () => {
597
+ await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.putIdentityMap('pixel123', '', ['linked1']);
598
+ expect(mockedDynamoDbClient.safePut).not.toHaveBeenCalled();
599
+ });
600
+ it('should include updatedAt timestamp', async () => {
601
+ const before = new Date().toISOString();
602
+ await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.putIdentityMap('pixel123', 'identity456', ['linked1']);
603
+ const after = new Date().toISOString();
604
+ const putItem = mockedDynamoDbClient.safePut.mock.calls[0][1];
605
+ expect(putItem.updatedAt).toBeDefined();
606
+ expect(putItem.updatedAt >= before).toBe(true);
607
+ expect(putItem.updatedAt <= after).toBe(true);
608
+ });
609
+ it('should not throw on safePut error (fail-open)', async () => {
610
+ mockedDynamoDbClient.safePut.mockRejectedValueOnce(new Error('DynamoDB error'));
611
+ await expect(identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.putIdentityMap('pixel123', 'identity456', ['linked1'])).resolves.toBeUndefined();
612
+ });
369
613
  });
370
614
  describe('deleteIdentityMap', () => {
371
615
  it('should delete identity map', async () => {
@@ -376,6 +620,18 @@ describe('IdentityCacheDynamoDbService', () => {
376
620
  await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.deleteIdentityMap('', '');
377
621
  expect(mockedDynamoDbClient.safeDelete).not.toHaveBeenCalled();
378
622
  });
623
+ it('should return early when only pixelId is missing', async () => {
624
+ await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.deleteIdentityMap('', 'identity456');
625
+ expect(mockedDynamoDbClient.safeDelete).not.toHaveBeenCalled();
626
+ });
627
+ it('should return early when only identityId is missing', async () => {
628
+ await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.deleteIdentityMap('pixel123', '');
629
+ expect(mockedDynamoDbClient.safeDelete).not.toHaveBeenCalled();
630
+ });
631
+ it('should not throw on safeDelete error (fail-open)', async () => {
632
+ mockedDynamoDbClient.safeDelete.mockRejectedValueOnce(new Error('DynamoDB error'));
633
+ await expect(identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.deleteIdentityMap('pixel123', 'identity456')).resolves.toBeUndefined();
634
+ });
379
635
  });
380
636
  describe('deleteForcePurgeFlag', () => {
381
637
  it('should delete force purge flag', async () => {
@@ -386,6 +642,18 @@ describe('IdentityCacheDynamoDbService', () => {
386
642
  await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.deleteForcePurgeFlag('', '');
387
643
  expect(mockedDynamoDbClient.safeDelete).not.toHaveBeenCalled();
388
644
  });
645
+ it('should return early when only pixelId is missing', async () => {
646
+ await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.deleteForcePurgeFlag('', 'identity456');
647
+ expect(mockedDynamoDbClient.safeDelete).not.toHaveBeenCalled();
648
+ });
649
+ it('should return early when only identityId is missing', async () => {
650
+ await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.deleteForcePurgeFlag('pixel123', '');
651
+ expect(mockedDynamoDbClient.safeDelete).not.toHaveBeenCalled();
652
+ });
653
+ it('should not throw on safeDelete error (fail-open)', async () => {
654
+ mockedDynamoDbClient.safeDelete.mockRejectedValueOnce(new Error('DynamoDB error'));
655
+ await expect(identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.deleteForcePurgeFlag('pixel123', 'identity456')).resolves.toBeUndefined();
656
+ });
389
657
  });
390
658
  describe('deleteIdentityCache', () => {
391
659
  const pixelId = 'pixel123';
@@ -411,6 +679,34 @@ describe('IdentityCacheDynamoDbService', () => {
411
679
  await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.deleteIdentityCache(null, {}, {});
412
680
  expect(mockedDynamoDbClient.safeQueryByGSI).not.toHaveBeenCalled();
413
681
  });
682
+ it('should handle different identityIds in incoming vs resolved', async () => {
683
+ mockedDynamoDbClient.safeQueryByGSI.mockResolvedValue([{ pk: `identity#${pixelId}#incoming-id`, pixelId }]);
684
+ mockedDynamoDbClient.batchWrite.mockResolvedValue({ $metadata: {} });
685
+ const incomingIdentity = {
686
+ identityId: 'incoming-id',
687
+ traits: { emails: ['test@email.com'] },
688
+ };
689
+ const resolvedIdentity = {
690
+ identityId: 'resolved-id',
691
+ traits: { emails: ['test@email.com'] },
692
+ };
693
+ await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.deleteIdentityCache(pixelId, incomingIdentity, resolvedIdentity);
694
+ expect(mockedDynamoDbClient.safeQueryByGSI).toHaveBeenCalledTimes(2);
695
+ });
696
+ it('should not throw on batchWrite error (fail-open)', async () => {
697
+ mockedDynamoDbClient.safeQueryByGSI.mockResolvedValue([{ pk: `identity#${pixelId}#identity456`, pixelId }]);
698
+ mockedDynamoDbClient.batchWrite.mockRejectedValueOnce(new Error('DynamoDB error'));
699
+ await expect(identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.deleteIdentityCache(pixelId, { identityId: 'identity456' }, { identityId: 'identity456' })).resolves.toBeUndefined();
700
+ });
701
+ it('should deduplicate keys when same items returned from GSI query', async () => {
702
+ const duplicateItem = { pk: `identity#${pixelId}#identity456`, pixelId };
703
+ mockedDynamoDbClient.safeQueryByGSI.mockResolvedValue([duplicateItem, duplicateItem]);
704
+ mockedDynamoDbClient.batchWrite.mockResolvedValue({ $metadata: {} });
705
+ await identity_cache_dynamodb_service_js_1.IdentityCacheDynamoDbService.deleteIdentityCache(pixelId, { identityId: 'identity456' }, { identityId: 'identity456' });
706
+ expect(mockedDynamoDbClient.batchWrite).toHaveBeenCalled();
707
+ const batchWriteCall = mockedDynamoDbClient.batchWrite.mock.calls[0];
708
+ expect(batchWriteCall).toBeDefined();
709
+ });
414
710
  });
415
711
  describe('merge and staleness logic', () => {
416
712
  const pixelId = 'pixel123';
@@ -1 +1 @@
1
- {"version":3,"file":"identity-cache-dynamodb-service.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/identity-cache/identity-cache-dynamodb-service.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity-cache-dynamodb-service.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/identity-cache/identity-cache-dynamodb-service.spec.ts"],"names":[],"mappings":";;AAQA,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAIrC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,cAAc,EAAE;QACd,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;QAClB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;QAClB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;QACrB,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;QACvB,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;QACzB,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;QACzB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;KACtB;IACD,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;QACtD,cAAc,EAAE,kBAAkB;KACnC,CAAC,CAAC;CACJ,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,MAAM,EAAE;QACN,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;KACjB;CACF,CAAC,CAAC,CAAC;AAGJ,6GAG8D;AAC9D,qDAAwD;AAExD,MAAM,oBAAoB,GAAG,yBAAoD,CAAC;AAElF,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,MAAM,OAAO,GAAG,UAAU,CAAC;QAC3B,MAAM,SAAS,GAAG,8DAA8D,CAAC;QAEjF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACvC,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;gBAC7E,MAAM,gBAAgB,GAAkB;oBACtC,UAAU,EAAE,aAAa;oBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;iBACvC,CAAC;gBAEF,MAAM,cAAc,GAA0B;oBAC5C,EAAE,EAAE,YAAY,OAAO,cAAc;oBACrC,OAAO;oBACP,UAAU,EAAE,aAAa;oBACzB,QAAQ,EAAE;wBACR,UAAU,EAAE,aAAa;wBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;qBACvC;oBACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC;gBAEF,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;gBAEnE,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBAE/G,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC7B,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC/C,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;gBACzE,MAAM,gBAAgB,GAAkB;oBACtC,UAAU,EAAE,aAAa;oBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;iBACvC,CAAC;gBAEF,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBACzD,kBAAkB,CAAC,qBAAqB,CAAC;oBACvC,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,QAAQ,EAAE;4BACR,UAAU,EAAE,mBAAmB;4BAC/B,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,EAAE;yBAC7D;qBACF,CAAC;iBACH,CAAC,CAAC;gBAEH,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBAE/G,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE;oBACzD,OAAO;oBACP,OAAO,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE;iBACxC,CAAC,CAAC;gBACH,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBACrD,MAAM,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACjE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;gBACnF,MAAM,gBAAgB,GAAkB;oBACtC,UAAU,EAAE,aAAa;oBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;iBACvC,CAAC;gBAEF,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBACzD,kBAAkB,CAAC,qBAAqB,CAAC;oBACvC,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;iBAC9C,CAAC,CAAC;gBAEH,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBAE/G,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YAC3B,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;gBAChE,MAAM,gBAAgB,GAAkB;oBACtC,UAAU,EAAE,aAAa;oBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC,EAAE;iBACvD,CAAC;gBAEF,MAAM,cAAc,GAA0B;oBAC5C,EAAE,EAAE,YAAY,OAAO,cAAc;oBACrC,OAAO;oBACP,UAAU,EAAE,aAAa;oBACzB,QAAQ,EAAE;wBACR,UAAU,EAAE,aAAa;wBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE;qBACtC;oBACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC;gBAEF,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;gBACnE,kBAAkB,CAAC,qBAAqB,CAAC;oBACvC,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,QAAQ,EAAE;4BACR,UAAU,EAAE,aAAa;4BACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC,EAAE;yBACvD;qBACF,CAAC;iBACH,CAAC,CAAC;gBAEH,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBAE/G,MAAM,CAAC,kBAAkB,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAC9C,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC/C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;gBACnE,MAAM,gBAAgB,GAAkB;oBACtC,UAAU,EAAE,aAAa;oBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC,EAAE;iBACvD,CAAC;gBAEF,MAAM,cAAc,GAA0B;oBAC5C,EAAE,EAAE,YAAY,OAAO,cAAc;oBACrC,OAAO;oBACP,UAAU,EAAE,aAAa;oBACzB,QAAQ,EAAE;wBACR,UAAU,EAAE,aAAa;wBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE;qBACtC;oBACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC;gBAEF,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;gBACnE,kBAAkB,CAAC,qBAAqB,CAAC;oBACvC,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,uBAAuB;iBAC9B,CAAC,CAAC;gBAEH,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBAE/G,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC7B,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACzC,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;gBACtE,MAAM,gBAAgB,GAAkB;oBACtC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;iBACvC,CAAC;gBAEF,oBAAoB,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;gBAC5D,kBAAkB,CAAC,qBAAqB,CAAC;oBACvC,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,QAAQ,EAAE;4BACR,UAAU,EAAE,qBAAqB;4BACjC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;yBACvC;qBACF,CAAC;iBACH,CAAC,CAAC;gBAEH,MAAM,iEAA4B,CAAC,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBAEhG,MAAM,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAC/D,MAAM,YAAY,GAAG,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1E,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC7D,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,YAAY,OAAO,sBAAsB,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;gBACxE,MAAM,gBAAgB,GAAkB;oBACtC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;iBACvC,CAAC;gBAEF,oBAAoB,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;gBAC5D,kBAAkB,CAAC,qBAAqB,CAAC;oBACvC,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;iBAC9C,CAAC,CAAC;gBAEH,MAAM,iEAA4B,CAAC,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBAEhG,MAAM,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACrE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;YAC1C,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;gBAC/D,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,sBAAsB,CACtE,IAAW,EACX,EAAE,UAAU,EAAE,SAAS,EAAE,EACzB,SAAS,CACV,CAAC;gBAEF,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC/B,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;gBACxE,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAW,EAAE,SAAS,CAAC,CAAC;gBAE1G,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC/B,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;gBAClE,MAAM,gBAAgB,GAAkB;oBACtC,UAAU,EAAE,aAAa;oBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;iBACvC,CAAC;gBAEF,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBACzD,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;gBAEhF,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBAG/G,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;gBAC7E,MAAM,gBAAgB,GAAkB;oBACtC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;iBACvC,CAAC;gBAEF,oBAAoB,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;gBAC5D,kBAAkB,CAAC,qBAAqB,CAAC;oBACvC,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,QAAQ,EAAE;4BACR,UAAU,EAAE,qBAAqB;4BACjC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;yBACvC;qBACF,CAAC;iBACH,CAAC,CAAC;gBACH,oBAAoB,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBAE9F,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBAE/G,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAE5B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC/B,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;gBAC3D,MAAM,OAAO,GAAG,UAAU,CAAC;gBAC3B,MAAM,UAAU,GAAG,aAAa,CAAC;gBAEjC,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAEzD,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;gBAEjF,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,oBAAoB,CACvD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,IAAI,EACJ,YAAY,OAAO,IAAI,UAAU,EAAE,CACpC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;YAC5B,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;gBACpE,MAAM,OAAO,GAAG,UAAU,CAAC;gBAC3B,MAAM,KAAK,GAAG,gBAAgB,CAAC;gBAE/B,oBAAoB,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;gBAE5D,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE;oBAC/D,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;iBAC5B,CAAC,CAAC;gBAEH,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;oBACjF,EAAE,EAAE,EAAE,SAAS,OAAO,iBAAiB,EAAE;iBAC1C,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;YAC7B,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;gBACnE,MAAM,OAAO,GAAG,UAAU,CAAC;gBAC3B,MAAM,MAAM,GAAG,aAAa,CAAC;gBAE7B,oBAAoB,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;gBAE5D,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE;oBAC/D,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;iBAC9B,CAAC,CAAC;gBAEH,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;oBACjF,EAAE,EAAE,EAAE,WAAW,OAAO,UAAU,EAAE;iBACrC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,MAAM,OAAO,GAAG,UAAU,CAAC;QAE3B,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAChD,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;gBAC3D,MAAM,UAAU,GAAG,aAAa,CAAC;gBACjC,MAAM,cAAc,GAA0B;oBAC5C,EAAE,EAAE,YAAY,OAAO,IAAI,UAAU,EAAE;oBACvC,OAAO;oBACP,UAAU;oBACV,QAAQ,EAAE;wBACR,UAAU;wBACV,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;qBACvC;oBACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC;gBAEF,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;gBAEnE,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE;oBAC9E,UAAU;oBACV,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;iBACvC,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC9C,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7D,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;gBAChE,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAEzD,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE;oBAC9E,UAAU,EAAE,YAAY;iBACzB,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;gBACnF,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAEzD,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE;oBAC/D,UAAU,EAAE,YAAY;oBACxB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;iBACvC,CAAC,CAAC;gBAGH,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACnE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;gBACjE,MAAM,UAAU,GAAG,aAAa,CAAC;gBACjC,MAAM,cAAc,GAA0B;oBAC5C,EAAE,EAAE,YAAY,OAAO,IAAI,UAAU,EAAE;oBACvC,OAAO;oBACP,UAAU;oBACV,QAAQ,EAAE;wBACR,UAAU;wBACV,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE;qBACtC;oBACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC;gBAEF,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;gBAEnE,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE;oBAC9E,UAAU;oBACV,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC,EAAE;iBACvD,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC9C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;YACrD,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;gBACjE,MAAM,cAAc,GAA0B;oBAC5C,EAAE,EAAE,SAAS,OAAO,iBAAiB;oBACrC,OAAO;oBACP,UAAU,EAAE,aAAa;oBACzB,QAAQ,EAAE;wBACR,UAAU,EAAE,aAAa;wBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;qBACvC;oBACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC;gBAEF,oBAAoB,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;gBAE1E,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE;oBAC9E,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE;iBAC7D,CAAC,CAAC;gBAEH,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;oBACjF,EAAE,EAAE,EAAE,SAAS,OAAO,iBAAiB,EAAE;oBACzC,EAAE,EAAE,EAAE,WAAW,OAAO,UAAU,EAAE;iBACrC,CAAC,CAAC;gBAGH,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC9C,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;gBAC5E,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;gBACtE,MAAM,SAAS,GAA0B;oBACvC,EAAE,EAAE,SAAS,OAAO,iBAAiB;oBACrC,OAAO;oBACP,UAAU,EAAE,YAAY;oBACxB,QAAQ,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE;oBACtC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC;gBACF,MAAM,SAAS,GAA0B;oBACvC,EAAE,EAAE,WAAW,OAAO,UAAU;oBAChC,OAAO;oBACP,UAAU,EAAE,YAAY;oBACxB,QAAQ,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE;oBACtC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC;gBAEF,oBAAoB,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;gBAEhF,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE;oBAC9E,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE;iBAC7D,CAAC,CAAC;gBAGH,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;gBACrE,oBAAoB,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;gBAE5D,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE;oBAC9E,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,mBAAmB,CAAC,EAAE;iBAC1C,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;gBACzE,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE;oBAC9E,MAAM,EAAE,EAAE;iBACX,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACnE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;YAC1C,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;gBACzD,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAEhF,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE;oBAC9E,UAAU,EAAE,SAAS;iBACtB,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;gBAC9D,oBAAoB,CAAC,YAAY,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAErF,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE;oBAC9E,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;iBACvC,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;gBACzD,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,IAAW,EAAE;oBAClF,UAAU,EAAE,SAAS;iBACtB,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;gBAClE,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAW,CAAC,CAAC;gBAE7F,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,aAAa,EAAE,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,MAAM,OAAO,GAAG,UAAU,CAAC;QAE3B,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,QAAQ,GAAkB;gBAC9B,UAAU,EAAE,aAAa;gBACzB,MAAM,EAAE;oBACN,MAAM,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;oBAC7C,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;iBAC5B;aACF,CAAC;YAEF,MAAM,iEAA4B,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAE1E,MAAM,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAErE,MAAM,YAAY,GAAG,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE1E,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAErC,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,YAAY,OAAO,cAAc,CAAC,CAAC;YACzD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,OAAO,iBAAiB,CAAC,CAAC;YACzD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,OAAO,kBAAkB,CAAC,CAAC;YAC1D,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,OAAO,QAAQ,CAAC,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,OAAO,QAAQ,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,oBAAoB,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAEvF,MAAM,QAAQ,GAAkB;gBAC9B,UAAU,EAAE,aAAa;gBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;aACvC,CAAC;YAGF,MAAM,MAAM,CAAC,iEAA4B,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC7G,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,iEAA4B,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAmB,CAAC,CAAC;YAErF,MAAM,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,iEAA4B,CAAC,mBAAmB,CAAC,IAAW,EAAE;gBAClE,UAAU,EAAE,SAAS;aACtB,CAAC,CAAC;YAEH,MAAM,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,QAAQ,GAAkB;gBAC9B,UAAU,EAAE,aAAa;aAC1B,CAAC;YAEF,MAAM,iEAA4B,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAE1E,MAAM,YAAY,GAAG,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE1E,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,QAAQ,GAAkB;gBAC9B,UAAU,EAAE,aAAa;gBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;aACvC,CAAC;YAEF,MAAM,iEAA4B,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAE1E,MAAM,YAAY,GAAG,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1E,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;gBAC/B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACzC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,OAAO,GAAG;gBACd,EAAE,EAAE,mCAAmC;gBACvC,OAAO,EAAE,UAAU;gBACnB,UAAU,EAAE,aAAa;gBACzB,gBAAgB,EAAE,CAAC,aAAa,CAAC;gBACjC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YAEF,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,cAAc,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAE5F,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,oBAAoB,CACvD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,IAAI,EACJ,mCAAmC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAEzD,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,cAAc,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAE5F,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAEzE,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;YAC/B,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,cAAc,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;YAEpF,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;YAC/B,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAEjF,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;YAC/B,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAEhF,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,cAAc,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAE5F,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC;gBACjD,EAAE,EAAE,kCAAkC;aACvC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAE/F,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAEzD,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAE/F,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAEhF,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAE/F,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAE5E,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,iEAA4B,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAEhF,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAC5D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,iEAA4B,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;YAEtF,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,iEAA4B,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAChF,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAEvC,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,iEAA4B,CAAC,iBAAiB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;YAExE,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,iEAA4B,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAErE,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAEhF,MAAM,MAAM,CAAC,iEAA4B,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QACnH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,MAAM,iEAA4B,CAAC,cAAc,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;YAErG,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YAC7D,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,iEAA4B,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAE9D,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,iEAA4B,CAAC,cAAc,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAElF,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,iEAA4B,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAE/E,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,iEAA4B,CAAC,cAAc,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1F,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAEvC,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAEhF,MAAM,MAAM,CACV,iEAA4B,CAAC,cAAc,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CACpF,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,iEAA4B,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAEhF,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAC1D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,IAAI,EACJ,mCAAmC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,iEAA4B,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAE7D,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,iEAA4B,CAAC,iBAAiB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;YAExE,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,iEAA4B,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAErE,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,oBAAoB,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAEnF,MAAM,MAAM,CAAC,iEAA4B,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QACnH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAEnF,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAC1D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,IAAI,EACJ,kCAAkC,CACnC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAEhE,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;YAE3E,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAExE,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,oBAAoB,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAEnF,MAAM,MAAM,CACV,iEAA4B,CAAC,oBAAoB,CAAC,UAAU,EAAE,aAAa,CAAC,CAC7E,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,MAAM,OAAO,GAAG,UAAU,CAAC;QAE3B,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,oBAAoB,CAAC,cAAc,CAAC,iBAAiB,CAAC;gBACpD,EAAE,EAAE,EAAE,YAAY,OAAO,cAAc,EAAE,OAAO,EAAE;gBAClD,EAAE,EAAE,EAAE,SAAS,OAAO,iBAAiB,EAAE,OAAO,EAAE;aACnD,CAAC,CAAC;YACH,oBAAoB,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YAErE,MAAM,gBAAgB,GAAkB;gBACtC,UAAU,EAAE,aAAa;gBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;aACvC,CAAC;YACF,MAAM,gBAAgB,GAAkB;gBACtC,UAAU,EAAE,aAAa;gBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAAE;aAC1D,CAAC;YAEF,MAAM,iEAA4B,CAAC,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YAEpG,MAAM,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC/D,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,iEAA4B,CAAC,mBAAmB,CAAC,IAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAE5E,MAAM,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,oBAAoB,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,OAAO,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC5G,oBAAoB,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YAErE,MAAM,gBAAgB,GAAkB;gBACtC,UAAU,EAAE,aAAa;gBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;aACvC,CAAC;YACF,MAAM,gBAAgB,GAAkB;gBACtC,UAAU,EAAE,aAAa;gBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;aACvC,CAAC;YAEF,MAAM,iEAA4B,CAAC,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YAGpG,MAAM,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,oBAAoB,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,OAAO,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC5G,oBAAoB,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAEnF,MAAM,MAAM,CACV,iEAA4B,CAAC,mBAAmB,CAC9C,OAAO,EACP,EAAE,UAAU,EAAE,aAAa,EAAE,EAC7B,EAAE,UAAU,EAAE,aAAa,EAAE,CAC9B,CACF,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,aAAa,GAAG,EAAE,EAAE,EAAE,YAAY,OAAO,cAAc,EAAE,OAAO,EAAE,CAAC;YACzE,oBAAoB,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;YACtF,oBAAoB,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YAErE,MAAM,iEAA4B,CAAC,mBAAmB,CACpD,OAAO,EACP,EAAE,UAAU,EAAE,aAAa,EAAE,EAC7B,EAAE,UAAU,EAAE,aAAa,EAAE,CAC9B,CAAC;YAEF,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAE3D,MAAM,cAAc,GAAG,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrE,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC;QAE3B,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,cAAc,GAA0B;gBAC5C,EAAE,EAAE,YAAY,OAAO,cAAc;gBACrC,OAAO;gBACP,UAAU,EAAE,aAAa;gBACzB,QAAQ,EAAE;oBACR,UAAU,EAAE,aAAa;oBACzB,MAAM,EAAE;wBACN,MAAM,EAAE,CAAC,kBAAkB,CAAC;wBAC5B,OAAO,EAAE,CAAC,aAAa,CAAC;qBACzB;iBACF;gBACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YAEF,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;YAEnE,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE;gBAC9E,UAAU,EAAE,aAAa;gBACzB,MAAM,EAAE;oBACN,MAAM,EAAE,CAAC,oBAAoB,CAAC;oBAC9B,MAAM,EAAE,CAAC,aAAa,CAAC;iBACxB;aACF,CAAC,CAAC;YAGH,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;YAChF,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;YAC9E,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAC1E,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,cAAc,GAA0B;gBAC5C,EAAE,EAAE,YAAY,OAAO,cAAc;gBACrC,OAAO;gBACP,UAAU,EAAE,aAAa;gBACzB,QAAQ,EAAE;oBACR,UAAU,EAAE,aAAa;oBACzB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,kBAAkB,CAAC,EAAE;iBACzC;gBACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YAEF,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;YAEnE,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE;gBAC9E,UAAU,EAAE,aAAa;gBACzB,MAAM,EAAE;oBACN,MAAM,EAAE,CAAC,kBAAkB,EAAE,eAAe,CAAC;iBAC9C;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,cAAc,GAA0B;gBAC5C,EAAE,EAAE,YAAY,OAAO,cAAc;gBACrC,OAAO;gBACP,UAAU,EAAE,aAAa;gBACzB,QAAQ,EAAE;oBACR,UAAU,EAAE,aAAa;oBACzB,MAAM,EAAE;wBACN,MAAM,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;wBACtC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;qBAC5B;iBACF;gBACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YAEF,oBAAoB,CAAC,OAAO,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;YAEnE,MAAM,MAAM,GAAG,MAAM,iEAA4B,CAAC,oBAAoB,CAAC,OAAO,EAAE;gBAC9E,UAAU,EAAE,aAAa;gBACzB,MAAM,EAAE;oBACN,MAAM,EAAE,CAAC,aAAa,CAAC;iBACxB;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}