@segment/action-destinations 3.253.0 → 3.254.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/destinations/display-video-360/constants.d.ts +1 -0
  2. package/dist/destinations/display-video-360/constants.js +2 -1
  3. package/dist/destinations/display-video-360/constants.js.map +1 -1
  4. package/dist/destinations/display-video-360/errors.js +6 -1
  5. package/dist/destinations/display-video-360/errors.js.map +1 -1
  6. package/dist/destinations/display-video-360/shared.d.ts +1 -0
  7. package/dist/destinations/display-video-360/shared.js +2 -1
  8. package/dist/destinations/display-video-360/shared.js.map +1 -1
  9. package/dist/destinations/engage/sendgrid/sendEmail/SendEmailPerformer.js +39 -2
  10. package/dist/destinations/engage/sendgrid/sendEmail/SendEmailPerformer.js.map +1 -1
  11. package/dist/destinations/kafka/generated-types.d.ts +10 -5
  12. package/dist/destinations/kafka/index.js +66 -39
  13. package/dist/destinations/kafka/index.js.map +1 -1
  14. package/dist/destinations/kafka/utils.d.ts +0 -1
  15. package/dist/destinations/kafka/utils.js +73 -23
  16. package/dist/destinations/kafka/utils.js.map +1 -1
  17. package/dist/destinations/linkedin-conversions/api/index.d.ts +2 -0
  18. package/dist/destinations/linkedin-conversions/api/index.js +37 -1
  19. package/dist/destinations/linkedin-conversions/api/index.js.map +1 -1
  20. package/dist/destinations/linkedin-conversions/constants.d.ts +0 -1
  21. package/dist/destinations/linkedin-conversions/constants.js +1 -7
  22. package/dist/destinations/linkedin-conversions/constants.js.map +1 -1
  23. package/dist/destinations/linkedin-conversions/streamConversion/generated-types.d.ts +6 -6
  24. package/dist/destinations/linkedin-conversions/streamConversion/index.js +32 -39
  25. package/dist/destinations/linkedin-conversions/streamConversion/index.js.map +1 -1
  26. package/dist/destinations/segment-profiles/index.js +3 -1
  27. package/dist/destinations/segment-profiles/index.js.map +1 -1
  28. package/dist/destinations/segment-profiles/segment-properties.d.ts +2 -0
  29. package/dist/destinations/segment-profiles/segment-properties.js +14 -1
  30. package/dist/destinations/segment-profiles/segment-properties.js.map +1 -1
  31. package/dist/destinations/segment-profiles/sendTrack/generated-types.d.ts +11 -0
  32. package/dist/destinations/segment-profiles/sendTrack/generated-types.js +3 -0
  33. package/dist/destinations/segment-profiles/sendTrack/generated-types.js.map +1 -0
  34. package/dist/destinations/segment-profiles/sendTrack/index.d.ts +5 -0
  35. package/dist/destinations/segment-profiles/sendTrack/index.js +42 -0
  36. package/dist/destinations/segment-profiles/sendTrack/index.js.map +1 -0
  37. package/dist/destinations/snap-conversions-api/_tests_/index.test.js +569 -4
  38. package/dist/destinations/snap-conversions-api/_tests_/index.test.js.map +1 -1
  39. package/dist/destinations/snap-conversions-api/reportConversionEvent/index.js +1 -26
  40. package/dist/destinations/snap-conversions-api/reportConversionEvent/index.js.map +1 -1
  41. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v3.d.ts +2 -2
  42. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v3.js +4 -5
  43. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v3.js.map +1 -1
  44. package/dist/destinations/snap-conversions-api/reportConversionEvent/utils.d.ts +0 -2
  45. package/dist/destinations/snap-conversions-api/reportConversionEvent/utils.js +2 -11
  46. package/dist/destinations/snap-conversions-api/reportConversionEvent/utils.js.map +1 -1
  47. package/dist/destinations/yotpo/index.js +1 -1
  48. package/dist/destinations/yotpo/index.js.map +1 -1
  49. package/package.json +4 -4
  50. package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.d.ts +0 -1
  51. package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.js +0 -381
  52. package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.js.map +0 -1
  53. package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.d.ts +0 -1
  54. package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.js +0 -581
  55. package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.js.map +0 -1
  56. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.d.ts +0 -4
  57. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.js +0 -97
  58. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.js.map +0 -1
@@ -3,16 +3,581 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const capiV2tests_1 = require("./capiV2tests");
7
- const capiV3tests_1 = require("./capiV3tests");
8
6
  const nock_1 = __importDefault(require("nock"));
7
+ const actions_core_1 = require("@segment/actions-core");
8
+ const index_1 = __importDefault(require("../index"));
9
+ const snap_capi_v3_1 = require("../reportConversionEvent/snap-capi-v3");
10
+ const testDestination = actions_core_1.createTestIntegration(index_1.default);
11
+ const timestamp = '2022-05-12T15:21:15.449Z';
12
+ const settings = {
13
+ snap_app_id: 'test123',
14
+ pixel_id: 'pixel123',
15
+ app_id: 'app123'
16
+ };
17
+ const accessToken = 'access123';
18
+ const refreshToken = 'refresh123';
19
+ const testEvent = actions_core_1.createTestEvent({
20
+ timestamp: timestamp,
21
+ messageId: 'test-message-rv4t40s898k',
22
+ event: 'PURCHASE',
23
+ type: 'track',
24
+ properties: {
25
+ email: ' Test123@gmail.com ',
26
+ phone: '+44 844 412 4653',
27
+ event_tag: 'back-to-school',
28
+ number_items: 10,
29
+ revenue: '15',
30
+ currency: 'USD',
31
+ level: 3
32
+ }
33
+ });
34
+ const features = {};
9
35
  beforeEach(() => {
10
36
  nock_1.default.cleanAll();
11
37
  });
12
38
  describe('Snap Conversions API ', () => {
13
39
  describe('ReportConversionEvent', () => {
14
- capiV2tests_1.capiV2tests();
15
- capiV3tests_1.capiV3tests();
40
+ describe('CAPIv3 Implementation', () => {
41
+ it('should use products array over number_items, product_id and category fields', async () => {
42
+ nock_1.default(/.*/).post(/.*/).reply(200);
43
+ const event = actions_core_1.createTestEvent({
44
+ ...testEvent,
45
+ properties: {
46
+ email: 'test123@gmail.com',
47
+ phone: '+44 844 412 4653',
48
+ event_tag: 'back-to-school',
49
+ quantity: 10,
50
+ revenue: '15',
51
+ currency: 'USD',
52
+ level: 3,
53
+ products: [
54
+ { product_id: '123', category: 'games', brand: 'Hasbro' },
55
+ { product_id: '456', category: 'games', brand: 'Mattel' }
56
+ ]
57
+ },
58
+ context: {}
59
+ });
60
+ const responses = await testDestination.testAction('reportConversionEvent', {
61
+ event,
62
+ settings,
63
+ useDefaultMappings: true,
64
+ auth: {
65
+ accessToken,
66
+ refreshToken
67
+ },
68
+ features,
69
+ mapping: {
70
+ event_type: 'PURCHASE',
71
+ event_conversion_type: 'WEB'
72
+ }
73
+ });
74
+ expect(responses).not.toBeNull();
75
+ expect(responses[0].status).toBe(200);
76
+ const body = JSON.parse(responses[0].options.body);
77
+ const { data } = body;
78
+ expect(data.length).toBe(1);
79
+ const { integration, event_name, event_time, user_data, custom_data, action_source, app_data } = data[0];
80
+ const { em, ph } = user_data;
81
+ const { brands, content_category, content_ids, currency, num_items, value } = custom_data;
82
+ expect(integration).toBe('segment');
83
+ expect(event_name).toBe('PURCHASE');
84
+ expect(event_time).toBe(1652368875449);
85
+ expect(em[0]).toBe('cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9');
86
+ expect(ph[0]).toBe('dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383');
87
+ expect(currency).toBe('USD');
88
+ expect(value).toBe(15);
89
+ expect(action_source).toBe('website');
90
+ expect(app_data).toBeUndefined();
91
+ expect(brands).toEqual(['Hasbro', 'Mattel']);
92
+ expect(content_category).toEqual(['games', 'games']);
93
+ expect(content_ids).toEqual(['123', '456']);
94
+ expect(num_items).toBe(2);
95
+ });
96
+ it('should handle a basic event', async () => {
97
+ nock_1.default(/.*/).post(/.*/).reply(200);
98
+ const event = actions_core_1.createTestEvent(testEvent);
99
+ const responses = await testDestination.testAction('reportConversionEvent', {
100
+ event,
101
+ settings,
102
+ useDefaultMappings: true,
103
+ auth: {
104
+ accessToken,
105
+ refreshToken
106
+ },
107
+ features,
108
+ mapping: {
109
+ event_type: 'PURCHASE',
110
+ event_conversion_type: 'WEB'
111
+ }
112
+ });
113
+ expect(responses).not.toBeNull();
114
+ expect(responses[0].status).toBe(200);
115
+ const body = JSON.parse(responses[0].options.body);
116
+ const { data } = body;
117
+ expect(data.length).toBe(1);
118
+ const { integration, event_name, event_source_url, event_time, user_data, custom_data, action_source, app_data } = data[0];
119
+ const { client_ip_address, client_user_agent, em, ph } = user_data;
120
+ const { currency, value } = custom_data;
121
+ expect(integration).toBe('segment');
122
+ expect(event_name).toBe('PURCHASE');
123
+ expect(event_source_url).toBe('https://segment.com/academy/');
124
+ expect(event_time).toBe(1652368875449);
125
+ expect(client_ip_address).toBe('8.8.8.8');
126
+ expect(client_user_agent).toBe('Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1');
127
+ expect(em[0]).toBe('cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9');
128
+ expect(ph[0]).toBe('dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383');
129
+ expect(currency).toBe('USD');
130
+ expect(value).toBe(15);
131
+ expect(action_source).toBe('website');
132
+ expect(app_data).toBeUndefined();
133
+ });
134
+ it('should fail web event without pixel_id', async () => {
135
+ nock_1.default(/.*/).post(/.*/).reply(200);
136
+ const event = actions_core_1.createTestEvent(testEvent);
137
+ await expect(testDestination.testAction('reportConversionEvent', {
138
+ event,
139
+ settings: {
140
+ snap_app_id: 'test123'
141
+ },
142
+ useDefaultMappings: true,
143
+ auth: {
144
+ accessToken,
145
+ refreshToken
146
+ },
147
+ features,
148
+ mapping: {
149
+ event_type: 'PURCHASE',
150
+ event_conversion_type: 'WEB'
151
+ }
152
+ })).rejects.toThrowError('If event conversion type is "WEB" then Pixel ID must be defined');
153
+ });
154
+ it('should fail app event without snap_app_id', async () => {
155
+ nock_1.default(/.*/).post(/.*/).reply(200);
156
+ const event = actions_core_1.createTestEvent(testEvent);
157
+ await expect(testDestination.testAction('reportConversionEvent', {
158
+ event,
159
+ settings: {
160
+ pixel_id: 'test123',
161
+ app_id: 'test123'
162
+ },
163
+ useDefaultMappings: true,
164
+ auth: {
165
+ accessToken,
166
+ refreshToken
167
+ },
168
+ features,
169
+ mapping: {
170
+ event_type: 'PURCHASE',
171
+ event_conversion_type: 'MOBILE_APP'
172
+ }
173
+ })).rejects.toThrowError('If event conversion type is "MOBILE_APP" then Snap App ID must be defined');
174
+ });
175
+ it('should handle an offline event conversion type', async () => {
176
+ nock_1.default(/.*/).post(/.*/).reply(200);
177
+ const event = actions_core_1.createTestEvent(testEvent);
178
+ const responses = await testDestination.testAction('reportConversionEvent', {
179
+ event,
180
+ settings,
181
+ useDefaultMappings: true,
182
+ auth: {
183
+ accessToken,
184
+ refreshToken
185
+ },
186
+ features,
187
+ mapping: {
188
+ event_type: 'SAVE',
189
+ event_conversion_type: 'OFFLINE'
190
+ }
191
+ });
192
+ expect(responses).not.toBeNull();
193
+ expect(responses[0].status).toBe(200);
194
+ const body = JSON.parse(responses[0].options.body);
195
+ const { data } = body;
196
+ expect(data.length).toBe(1);
197
+ const { integration, event_name, event_source_url, event_time, user_data, custom_data, action_source, app_data } = data[0];
198
+ const { client_ip_address, client_user_agent, em, ph } = user_data;
199
+ const { currency, value } = custom_data;
200
+ expect(integration).toBe('segment');
201
+ expect(event_name).toBe('SAVE');
202
+ expect(event_source_url).toBe('https://segment.com/academy/');
203
+ expect(event_time).toBe(1652368875449);
204
+ expect(client_ip_address).toBe('8.8.8.8');
205
+ expect(client_user_agent).toBe('Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1');
206
+ expect(em[0]).toBe('cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9');
207
+ expect(ph[0]).toBe('dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383');
208
+ expect(currency).toBe('USD');
209
+ expect(value).toBe(15);
210
+ expect(action_source).toBe('OFFLINE');
211
+ expect(app_data).toBeUndefined();
212
+ });
213
+ it('should handle a mobile app event conversion type', async () => {
214
+ nock_1.default(/.*/).post(/.*/).reply(200);
215
+ const event = actions_core_1.createTestEvent(testEvent);
216
+ const responses = await testDestination.testAction('reportConversionEvent', {
217
+ event,
218
+ settings: {
219
+ snap_app_id: '123',
220
+ app_id: '123'
221
+ },
222
+ useDefaultMappings: true,
223
+ auth: {
224
+ accessToken,
225
+ refreshToken
226
+ },
227
+ features,
228
+ mapping: {
229
+ device_model: 'iPhone12,1',
230
+ os_version: '17.2',
231
+ event_type: 'SAVE',
232
+ event_conversion_type: 'MOBILE_APP'
233
+ }
234
+ });
235
+ expect(responses[0].status).toBe(200);
236
+ const body = JSON.parse(responses[0].options.body);
237
+ const { data } = body;
238
+ expect(data.length).toBe(1);
239
+ const { integration, event_name, event_source_url, event_time, user_data, custom_data, action_source, app_data } = data[0];
240
+ const { client_ip_address, client_user_agent, em, ph } = user_data;
241
+ const { currency, value } = custom_data;
242
+ const { extinfo, advertiser_tracking_enabled } = app_data;
243
+ expect(integration).toBe('segment');
244
+ expect(event_name).toBe('SAVE');
245
+ expect(event_source_url).toBe('https://segment.com/academy/');
246
+ expect(event_time).toBe(1652368875449);
247
+ expect(client_ip_address).toBe('8.8.8.8');
248
+ expect(client_user_agent).toBe('Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1');
249
+ expect(em[0]).toBe('cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9');
250
+ expect(ph[0]).toBe('dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383');
251
+ expect(currency).toBe('USD');
252
+ expect(value).toBe(15);
253
+ expect(action_source).toBe('app');
254
+ expect(extinfo).toEqual(['i2', '', '', '', '17.2', 'iPhone12,1', '', '', '', '', '', '', '', '', '', '']);
255
+ expect(advertiser_tracking_enabled).toBe(0);
256
+ });
257
+ it('should fail invalid currency', async () => {
258
+ nock_1.default(/.*/).post(/.*/).reply(200);
259
+ const event = actions_core_1.createTestEvent({
260
+ ...testEvent,
261
+ properties: {
262
+ currency: 'Galleon'
263
+ }
264
+ });
265
+ await expect(testDestination.testAction('reportConversionEvent', {
266
+ event,
267
+ settings,
268
+ useDefaultMappings: true,
269
+ auth: {
270
+ accessToken,
271
+ refreshToken
272
+ },
273
+ features,
274
+ mapping: {
275
+ event_type: 'PURCHASE',
276
+ event_conversion_type: 'WEB'
277
+ }
278
+ })).rejects.toThrowError('Galleon is not a valid currency code.');
279
+ });
280
+ it('should fail missing event conversion type', async () => {
281
+ nock_1.default(/.*/).post(/.*/).reply(200);
282
+ const event = actions_core_1.createTestEvent(testEvent);
283
+ await expect(testDestination.testAction('reportConversionEvent', {
284
+ event,
285
+ settings,
286
+ useDefaultMappings: true,
287
+ auth: {
288
+ accessToken,
289
+ refreshToken
290
+ },
291
+ features,
292
+ mapping: {
293
+ event_type: 'PURCHASE'
294
+ }
295
+ })).rejects.toThrowError("The root value is missing the required field 'event_conversion_type'.");
296
+ });
297
+ it('should handle a custom event', async () => {
298
+ nock_1.default(/.*/).post(/.*/).reply(200);
299
+ const event = actions_core_1.createTestEvent({
300
+ ...testEvent,
301
+ event: 'CUSTOM_EVENT_5'
302
+ });
303
+ const responses = await testDestination.testAction('reportConversionEvent', {
304
+ event,
305
+ settings: {
306
+ snap_app_id: '123',
307
+ app_id: '123'
308
+ },
309
+ useDefaultMappings: true,
310
+ auth: {
311
+ accessToken,
312
+ refreshToken
313
+ },
314
+ features,
315
+ mapping: {
316
+ event_type: { '@path': '$.event' },
317
+ event_conversion_type: 'MOBILE_APP'
318
+ }
319
+ });
320
+ expect(responses).not.toBeNull();
321
+ expect(responses[0].status).toBe(200);
322
+ const body = JSON.parse(responses[0].options.body);
323
+ const { data } = body;
324
+ expect(data.length).toBe(1);
325
+ const { integration, event_name, event_source_url, event_time, user_data, custom_data, action_source, app_data } = data[0];
326
+ const { client_ip_address, client_user_agent, em, ph } = user_data;
327
+ const { currency, value } = custom_data;
328
+ const { app_id, advertiser_tracking_enabled } = app_data;
329
+ expect(integration).toBe('segment');
330
+ expect(event_name).toBe('CUSTOM_EVENT_5');
331
+ expect(event_source_url).toBe('https://segment.com/academy/');
332
+ expect(event_time).toBe(1652368875449);
333
+ expect(client_ip_address).toBe('8.8.8.8');
334
+ expect(client_user_agent).toBe('Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1');
335
+ expect(em[0]).toBe('cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9');
336
+ expect(ph[0]).toBe('dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383');
337
+ expect(currency).toBe('USD');
338
+ expect(value).toBe(15);
339
+ expect(action_source).toBe('app');
340
+ expect(app_id).toBe('123');
341
+ expect(advertiser_tracking_enabled).toBe(0);
342
+ });
343
+ it('should fail event missing all Snap identifiers', async () => {
344
+ const event = actions_core_1.createTestEvent({
345
+ ...testEvent,
346
+ properties: {},
347
+ context: {}
348
+ });
349
+ await expect(testDestination.testAction('reportConversionEvent', {
350
+ event,
351
+ settings,
352
+ useDefaultMappings: true,
353
+ auth: {
354
+ accessToken,
355
+ refreshToken
356
+ },
357
+ features,
358
+ mapping: {
359
+ event_type: 'PURCHASE',
360
+ event_conversion_type: 'WEB'
361
+ }
362
+ })).rejects.toThrowError('Payload must contain values for Email or Phone Number or Mobile Ad Identifier or both IP Address and User Agent fields');
363
+ });
364
+ it('should handle event with email as only Snap identifier', async () => {
365
+ nock_1.default(/.*/).post(/.*/).reply(200);
366
+ const event = actions_core_1.createTestEvent({
367
+ ...testEvent,
368
+ properties: {
369
+ email: 'test123@gmail.com'
370
+ },
371
+ context: {}
372
+ });
373
+ const responses = await testDestination.testAction('reportConversionEvent', {
374
+ event,
375
+ settings,
376
+ useDefaultMappings: true,
377
+ auth: {
378
+ accessToken,
379
+ refreshToken
380
+ },
381
+ features,
382
+ mapping: {
383
+ event_type: 'PURCHASE',
384
+ event_conversion_type: 'WEB'
385
+ }
386
+ });
387
+ expect(responses).not.toBeNull();
388
+ expect(responses[0].status).toBe(200);
389
+ const body = JSON.parse(responses[0].options.body);
390
+ const { data } = body;
391
+ expect(data.length).toBe(1);
392
+ const { integration, event_name, event_time, user_data, action_source } = data[0];
393
+ const { em, ph } = user_data;
394
+ expect(integration).toBe('segment');
395
+ expect(event_name).toBe('PURCHASE');
396
+ expect(event_time).toBe(1652368875449);
397
+ expect(em[0]).toBe('cc779c04191c2e736d89e45c11339c8382832bcaf70383f7df94e3d08ba7a6d9');
398
+ expect(ph).toBeUndefined();
399
+ expect(action_source).toBe('website');
400
+ });
401
+ it('should handle event with phone as only Snap identifier', async () => {
402
+ nock_1.default(/.*/).post(/.*/).reply(200);
403
+ const event = actions_core_1.createTestEvent({
404
+ ...testEvent,
405
+ properties: {
406
+ phone: '+44 844 412 4653'
407
+ },
408
+ context: {}
409
+ });
410
+ const responses = await testDestination.testAction('reportConversionEvent', {
411
+ event,
412
+ settings,
413
+ useDefaultMappings: true,
414
+ auth: {
415
+ accessToken,
416
+ refreshToken
417
+ },
418
+ features,
419
+ mapping: {
420
+ event_type: 'PURCHASE',
421
+ event_conversion_type: 'WEB'
422
+ }
423
+ });
424
+ const body = JSON.parse(responses[0].options.body);
425
+ const { data } = body;
426
+ expect(data.length).toBe(1);
427
+ const { integration, event_name, event_time, user_data, action_source } = data[0];
428
+ const { ph } = user_data;
429
+ expect(integration).toBe('segment');
430
+ expect(event_name).toBe('PURCHASE');
431
+ expect(event_time).toBe(1652368875449);
432
+ expect(ph[0]).toBe('dc008fda46e2e64002cf2f82a4906236282d431c4f75e5b60bfe79fc48546383');
433
+ expect(action_source).toBe('website');
434
+ });
435
+ it('should handle event with advertising_id as only Snap identifier', async () => {
436
+ nock_1.default(/.*/).post(/.*/).reply(200);
437
+ const advertisingId = '87a7def4-b6e9-4bf7-91b6-66372842007a';
438
+ const event = actions_core_1.createTestEvent({
439
+ ...testEvent,
440
+ properties: {},
441
+ context: {
442
+ device: {
443
+ advertisingId
444
+ }
445
+ }
446
+ });
447
+ const responses = await testDestination.testAction('reportConversionEvent', {
448
+ event,
449
+ settings,
450
+ useDefaultMappings: true,
451
+ auth: {
452
+ accessToken,
453
+ refreshToken
454
+ },
455
+ features,
456
+ mapping: {
457
+ event_type: 'PURCHASE',
458
+ event_conversion_type: 'WEB'
459
+ }
460
+ });
461
+ const body = JSON.parse(responses[0].options.body);
462
+ const { data } = body;
463
+ expect(data.length).toBe(1);
464
+ const { integration, event_name, event_time, user_data, action_source } = data[0];
465
+ const { madid } = user_data;
466
+ expect(integration).toBe('segment');
467
+ expect(event_name).toBe('PURCHASE');
468
+ expect(event_time).toBe(1652368875449);
469
+ expect(madid).toBe(advertisingId);
470
+ expect(action_source).toBe('website');
471
+ });
472
+ it('should handle event with ip and user_agent as only Snap identifiers', async () => {
473
+ nock_1.default(/.*/).post(/.*/).reply(200);
474
+ const event = actions_core_1.createTestEvent({
475
+ ...testEvent,
476
+ properties: {}
477
+ });
478
+ const responses = await testDestination.testAction('reportConversionEvent', {
479
+ event,
480
+ settings,
481
+ useDefaultMappings: true,
482
+ auth: {
483
+ accessToken,
484
+ refreshToken
485
+ },
486
+ features,
487
+ mapping: {
488
+ event_type: 'PURCHASE',
489
+ event_conversion_type: 'WEB'
490
+ }
491
+ });
492
+ const body = JSON.parse(responses[0].options.body);
493
+ const { data } = body;
494
+ expect(data.length).toBe(1);
495
+ const { integration, event_name, event_time, user_data, action_source } = data[0];
496
+ const { client_ip_address, client_user_agent } = user_data;
497
+ expect(integration).toBe('segment');
498
+ expect(event_name).toBe('PURCHASE');
499
+ expect(event_time).toBe(1652368875449);
500
+ expect(client_ip_address).toBe('8.8.8.8');
501
+ expect(client_user_agent).toBe('Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1');
502
+ expect(action_source).toBe('website');
503
+ });
504
+ it('should always use the pixel id in settings for web events', async () => {
505
+ nock_1.default(/.*/).post(/.*/).reply(200);
506
+ const event = actions_core_1.createTestEvent({
507
+ ...testEvent,
508
+ properties: {}
509
+ });
510
+ const responses = await testDestination.testAction('reportConversionEvent', {
511
+ event,
512
+ settings,
513
+ useDefaultMappings: true,
514
+ auth: {
515
+ accessToken,
516
+ refreshToken
517
+ },
518
+ features,
519
+ mapping: {
520
+ event_type: 'PURCHASE',
521
+ event_conversion_type: 'WEB'
522
+ }
523
+ });
524
+ expect(responses[0].url).toBe(snap_capi_v3_1.buildRequestURL('pixel123', 'access123'));
525
+ });
526
+ it('should trim a pixel id with leading or trailing whitespace', async () => {
527
+ nock_1.default(/.*/).post(/.*/).reply(200);
528
+ const event = actions_core_1.createTestEvent({
529
+ ...testEvent,
530
+ properties: {}
531
+ });
532
+ const responses = await testDestination.testAction('reportConversionEvent', {
533
+ event,
534
+ settings: {
535
+ pixel_id: ' pixel123 '
536
+ },
537
+ useDefaultMappings: true,
538
+ auth: {
539
+ accessToken,
540
+ refreshToken
541
+ },
542
+ features,
543
+ mapping: {
544
+ event_type: 'PURCHASE',
545
+ event_conversion_type: 'WEB'
546
+ }
547
+ });
548
+ expect(responses[0].url).toBe(snap_capi_v3_1.buildRequestURL('pixel123', 'access123'));
549
+ });
550
+ it('should exclude number_items that is not a valid integer', async () => {
551
+ nock_1.default(/.*/).post(/.*/).reply(200);
552
+ const event = actions_core_1.createTestEvent({
553
+ ...testEvent,
554
+ properties: {}
555
+ });
556
+ const responses = await testDestination.testAction('reportConversionEvent', {
557
+ event,
558
+ settings: {
559
+ pixel_id: ' pixel123 '
560
+ },
561
+ useDefaultMappings: true,
562
+ auth: {
563
+ accessToken: ' access123 ',
564
+ refreshToken
565
+ },
566
+ features,
567
+ mapping: {
568
+ event_type: 'PURCHASE',
569
+ event_conversion_type: 'WEB',
570
+ number_items: 'six'
571
+ }
572
+ });
573
+ expect(responses[0].url).toBe(snap_capi_v3_1.buildRequestURL('pixel123', 'access123'));
574
+ const body = JSON.parse(responses[0].options.body);
575
+ const { data } = body;
576
+ expect(data.length).toBe(1);
577
+ const { custom_data } = data[0];
578
+ expect(custom_data).toBeUndefined();
579
+ });
580
+ });
16
581
  });
17
582
  });
18
583
  //# sourceMappingURL=index.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/destinations/snap-conversions-api/_tests_/index.test.ts"],"names":[],"mappings":";;;;;AAAA,+CAA2C;AAC3C,+CAA2C;AAC3C,gDAAuB;AAEvB,UAAU,CAAC,GAAG,EAAE;IACd,cAAI,CAAC,QAAQ,EAAE,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,yBAAW,EAAE,CAAA;QACb,yBAAW,EAAE,CAAA;IACf,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/destinations/snap-conversions-api/_tests_/index.test.ts"],"names":[],"mappings":";;;;;AAAA,gDAAuB;AACvB,wDAA8E;AAC9E,qDAAiC;AAEjC,wEAAuE;AAEvE,MAAM,eAAe,GAAG,oCAAqB,CAAC,eAAU,CAAC,CAAA;AACzD,MAAM,SAAS,GAAG,0BAA0B,CAAA;AAC5C,MAAM,QAAQ,GAAa;IACzB,WAAW,EAAE,SAAS;IACtB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;CACjB,CAAA;AACD,MAAM,WAAW,GAAG,WAAW,CAAA;AAC/B,MAAM,YAAY,GAAG,YAAY,CAAA;AAEjC,MAAM,SAAS,GAAG,8BAAe,CAAC;IAChC,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,0BAA0B;IACrC,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,OAAO;IACb,UAAU,EAAE;QACV,KAAK,EAAE,0BAA0B;QACjC,KAAK,EAAE,kBAAkB;QACzB,SAAS,EAAE,gBAAgB;QAC3B,YAAY,EAAE,EAAE;QAChB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,CAAC;KACT;CACF,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAG,EAAE,CAAA;AAEnB,UAAU,CAAC,GAAG,EAAE;IACd,cAAI,CAAC,QAAQ,EAAE,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;YACrC,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;gBAC3F,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAEhC,MAAM,KAAK,GAAG,8BAAe,CAAC;oBAC5B,GAAG,SAAS;oBACZ,UAAU,EAAE;wBACV,KAAK,EAAE,mBAAmB;wBAC1B,KAAK,EAAE,kBAAkB;wBACzB,SAAS,EAAE,gBAAgB;wBAC3B,QAAQ,EAAE,EAAE;wBACZ,OAAO,EAAE,IAAI;wBACb,QAAQ,EAAE,KAAK;wBACf,KAAK,EAAE,CAAC;wBACR,QAAQ,EAAE;4BACR,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;4BACzD,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;yBAC1D;qBACF;oBACD,OAAO,EAAE,EAAE;iBACZ,CAAC,CAAA;gBAEF,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAC1E,KAAK;oBACL,QAAQ;oBACR,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,UAAU;wBACtB,qBAAqB,EAAE,KAAK;qBAC7B;iBACF,CAAC,CAAA;gBAEF,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;gBAChC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAErC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAc,CAAC,CAAA;gBAC5D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;gBACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAE3B,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACxG,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAS,CAAA;gBAC5B,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,WAAW,CAAA;gBAEzF,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBAEtC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAA;gBACtF,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAA;gBACtF,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACtB,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAErC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAA;gBAEhC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;gBAC5C,MAAM,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;gBACpD,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;gBAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC3B,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;gBAC3C,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAEhC,MAAM,KAAK,GAAG,8BAAe,CAAC,SAAS,CAAC,CAAA;gBAExC,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAC1E,KAAK;oBACL,QAAQ;oBACR,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,UAAU;wBACtB,qBAAqB,EAAE,KAAK;qBAC7B;iBACF,CAAC,CAAA;gBAEF,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;gBAChC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAErC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAc,CAAC,CAAA;gBAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;gBACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAE3B,MAAM,EACJ,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,WAAW,EACX,aAAa,EACb,QAAQ,EACT,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACX,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAS,CAAA;gBAClE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,WAAW,CAAA;gBAEvC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACnC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;gBAC7D,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBACtC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACzC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAC5B,uIAAuI,CACxI,CAAA;gBACD,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAA;gBACtF,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAA;gBACtF,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACtB,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAErC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAA;YAClC,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;gBACtD,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAEhC,MAAM,KAAK,GAAG,8BAAe,CAAC,SAAS,CAAC,CAAA;gBAExC,MAAM,MAAM,CACV,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAClD,KAAK;oBACL,QAAQ,EAAE;wBACR,WAAW,EAAE,SAAS;qBACvB;oBACD,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,UAAU;wBACtB,qBAAqB,EAAE,KAAK;qBAC7B;iBACF,CAAC,CACH,CAAC,OAAO,CAAC,YAAY,CAAC,iEAAiE,CAAC,CAAA;YAC3F,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;gBACzD,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAEhC,MAAM,KAAK,GAAG,8BAAe,CAAC,SAAS,CAAC,CAAA;gBAExC,MAAM,MAAM,CACV,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAClD,KAAK;oBACL,QAAQ,EAAE;wBACR,QAAQ,EAAE,SAAS;wBACnB,MAAM,EAAE,SAAS;qBAClB;oBACD,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,UAAU;wBACtB,qBAAqB,EAAE,YAAY;qBACpC;iBACF,CAAC,CACH,CAAC,OAAO,CAAC,YAAY,CAAC,2EAA2E,CAAC,CAAA;YACrG,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;gBAC9D,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAEhC,MAAM,KAAK,GAAG,8BAAe,CAAC,SAAS,CAAC,CAAA;gBAExC,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAC1E,KAAK;oBACL,QAAQ;oBACR,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,MAAM;wBAClB,qBAAqB,EAAE,SAAS;qBACjC;iBACF,CAAC,CAAA;gBAEF,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;gBAChC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAErC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAc,CAAC,CAAA;gBAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;gBACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAE3B,MAAM,EACJ,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,WAAW,EACX,aAAa,EACb,QAAQ,EACT,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACX,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAS,CAAA;gBAClE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,WAAW,CAAA;gBAEvC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC/B,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;gBAC7D,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBACtC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACzC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAC5B,uIAAuI,CACxI,CAAA;gBACD,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAA;gBACtF,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAA;gBACtF,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACtB,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAGrC,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAA;YAClC,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;gBAChE,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAEhC,MAAM,KAAK,GAAG,8BAAe,CAAC,SAAS,CAAC,CAAA;gBAExC,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAC1E,KAAK;oBACL,QAAQ,EAAE;wBACR,WAAW,EAAE,KAAK;wBAClB,MAAM,EAAE,KAAK;qBACd;oBACD,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,YAAY,EAAE,YAAY;wBAC1B,UAAU,EAAE,MAAM;wBAClB,UAAU,EAAE,MAAM;wBAClB,qBAAqB,EAAE,YAAY;qBACpC;iBACF,CAAC,CAAA;gBAEF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAErC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAc,CAAC,CAAA;gBAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;gBACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAE3B,MAAM,EACJ,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,WAAW,EACX,aAAa,EACb,QAAQ,EACT,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACX,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAS,CAAA;gBAClE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,WAAW,CAAA;gBACvC,MAAM,EAAE,OAAO,EAAE,2BAA2B,EAAE,GAAG,QAAQ,CAAA;gBAEzD,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC/B,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;gBAC7D,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBACtC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACzC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAC5B,uIAAuI,CACxI,CAAA;gBACD,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAA;gBACtF,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAA;gBACtF,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACtB,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACjC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;gBACzG,MAAM,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC7C,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;gBAC5C,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAEhC,MAAM,KAAK,GAAG,8BAAe,CAAC;oBAC5B,GAAG,SAAS;oBACZ,UAAU,EAAE;wBACV,QAAQ,EAAE,SAAS;qBACpB;iBACF,CAAC,CAAA;gBAEF,MAAM,MAAM,CACV,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAClD,KAAK;oBACL,QAAQ;oBACR,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,UAAU;wBACtB,qBAAqB,EAAE,KAAK;qBAC7B;iBACF,CAAC,CACH,CAAC,OAAO,CAAC,YAAY,CAAC,uCAAuC,CAAC,CAAA;YACjE,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;gBACzD,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAEhC,MAAM,KAAK,GAAG,8BAAe,CAAC,SAAS,CAAC,CAAA;gBAExC,MAAM,MAAM,CACV,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAClD,KAAK;oBACL,QAAQ;oBACR,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,UAAU;qBACvB;iBACF,CAAC,CACH,CAAC,OAAO,CAAC,YAAY,CAAC,uEAAuE,CAAC,CAAA;YACjG,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;gBAC5C,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAEhC,MAAM,KAAK,GAAG,8BAAe,CAAC;oBAC5B,GAAG,SAAS;oBACZ,KAAK,EAAE,gBAAgB;iBACxB,CAAC,CAAA;gBAEF,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAC1E,KAAK;oBACL,QAAQ,EAAE;wBACR,WAAW,EAAE,KAAK;wBAClB,MAAM,EAAE,KAAK;qBACd;oBACD,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;wBAClC,qBAAqB,EAAE,YAAY;qBACpC;iBACF,CAAC,CAAA;gBAEF,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;gBAChC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAErC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAc,CAAC,CAAA;gBAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;gBACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAE3B,MAAM,EACJ,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,WAAW,EACX,aAAa,EACb,QAAQ,EACT,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACX,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAS,CAAA;gBAClE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,WAAW,CAAA;gBACvC,MAAM,EAAE,MAAM,EAAE,2BAA2B,EAAE,GAAG,QAAQ,CAAA;gBAExD,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;gBACzC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;gBAC7D,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBACtC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACzC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAC5B,uIAAuI,CACxI,CAAA;gBACD,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAA;gBACtF,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAA;gBACtF,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACtB,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACjC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC1B,MAAM,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC7C,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;gBAC9D,MAAM,KAAK,GAAG,8BAAe,CAAC;oBAC5B,GAAG,SAAS;oBACZ,UAAU,EAAE,EAAE;oBACd,OAAO,EAAE,EAAE;iBACZ,CAAC,CAAA;gBAEF,MAAM,MAAM,CACV,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAClD,KAAK;oBACL,QAAQ;oBACR,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,UAAU;wBACtB,qBAAqB,EAAE,KAAK;qBAC7B;iBACF,CAAC,CACH,CAAC,OAAO,CAAC,YAAY,CACpB,wHAAwH,CACzH,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;gBACtE,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAChC,MAAM,KAAK,GAAG,8BAAe,CAAC;oBAC5B,GAAG,SAAS;oBACZ,UAAU,EAAE;wBACV,KAAK,EAAE,mBAAmB;qBAC3B;oBACD,OAAO,EAAE,EAAE;iBACZ,CAAC,CAAA;gBAEF,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAC1E,KAAK;oBACL,QAAQ;oBACR,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,UAAU;wBACtB,qBAAqB,EAAE,KAAK;qBAC7B;iBACF,CAAC,CAAA;gBAEF,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;gBAChC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAErC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAc,CAAC,CAAA;gBAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;gBACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAE3B,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACjF,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAS,CAAA;gBAE5B,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBACtC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAA;gBACtF,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,CAAA;gBAC1B,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACvC,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;gBACtE,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAChC,MAAM,KAAK,GAAG,8BAAe,CAAC;oBAC5B,GAAG,SAAS;oBACZ,UAAU,EAAE;wBACV,KAAK,EAAE,kBAAkB;qBAC1B;oBACD,OAAO,EAAE,EAAE;iBACZ,CAAC,CAAA;gBAEF,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAC1E,KAAK;oBACL,QAAQ;oBACR,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,UAAU;wBACtB,qBAAqB,EAAE,KAAK;qBAC7B;iBACF,CAAC,CAAA;gBAEF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAc,CAAC,CAAA;gBAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;gBACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAE3B,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACjF,MAAM,EAAE,EAAE,EAAE,GAAG,SAAS,CAAA;gBAExB,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBACtC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAA;gBACtF,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACvC,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;gBAC/E,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAChC,MAAM,aAAa,GAAG,sCAAsC,CAAA;gBAC5D,MAAM,KAAK,GAAG,8BAAe,CAAC;oBAC5B,GAAG,SAAS;oBACZ,UAAU,EAAE,EAAE;oBACd,OAAO,EAAE;wBACP,MAAM,EAAE;4BACN,aAAa;yBACd;qBACF;iBACF,CAAC,CAAA;gBAEF,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAC1E,KAAK;oBACL,QAAQ;oBACR,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,UAAU;wBACtB,qBAAqB,EAAE,KAAK;qBAC7B;iBACF,CAAC,CAAA;gBAEF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAc,CAAC,CAAA;gBAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;gBACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAE3B,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACjF,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAA;gBAE3B,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBACtC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBACjC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACvC,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;gBACnF,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAChC,MAAM,KAAK,GAAG,8BAAe,CAAC;oBAC5B,GAAG,SAAS;oBACZ,UAAU,EAAE,EAAE;iBACf,CAAC,CAAA;gBAEF,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAC1E,KAAK;oBACL,QAAQ;oBACR,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,UAAU;wBACtB,qBAAqB,EAAE,KAAK;qBAC7B;iBACF,CAAC,CAAA;gBAEF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAc,CAAC,CAAA;gBAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;gBACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAE3B,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACjF,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAA;gBAE1D,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBACtC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACzC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAC5B,uIAAuI,CACxI,CAAA;gBACD,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACvC,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;gBACzE,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAChC,MAAM,KAAK,GAAG,8BAAe,CAAC;oBAC5B,GAAG,SAAS;oBACZ,UAAU,EAAE,EAAE;iBACf,CAAC,CAAA;gBAEF,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAC1E,KAAK;oBACL,QAAQ;oBACR,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,UAAU;wBACtB,qBAAqB,EAAE,KAAK;qBAC7B;iBACF,CAAC,CAAA;gBAEF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,8BAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;YACzE,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;gBAC1E,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAChC,MAAM,KAAK,GAAG,8BAAe,CAAC;oBAC5B,GAAG,SAAS;oBACZ,UAAU,EAAE,EAAE;iBACf,CAAC,CAAA;gBAEF,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAC1E,KAAK;oBACL,QAAQ,EAAE;wBACR,QAAQ,EAAE,cAAc;qBACzB;oBACD,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW;wBACX,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,UAAU;wBACtB,qBAAqB,EAAE,KAAK;qBAC7B;iBACF,CAAC,CAAA;gBAEF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,8BAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;YACzE,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;gBACvE,cAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAChC,MAAM,KAAK,GAAG,8BAAe,CAAC;oBAC5B,GAAG,SAAS;oBACZ,UAAU,EAAE,EAAE;iBACf,CAAC,CAAA;gBAEF,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,uBAAuB,EAAE;oBAC1E,KAAK;oBACL,QAAQ,EAAE;wBACR,QAAQ,EAAE,cAAc;qBACzB;oBACD,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE;wBACJ,WAAW,EAAE,kBAAkB;wBAC/B,YAAY;qBACb;oBACD,QAAQ;oBACR,OAAO,EAAE;wBACP,UAAU,EAAE,UAAU;wBACtB,qBAAqB,EAAE,KAAK;wBAC5B,YAAY,EAAE,KAAK;qBACpB;iBACF,CAAC,CAAA;gBAEF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,8BAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;gBAEvE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAc,CAAC,CAAA;gBAC5D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;gBACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAE3B,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBAE/B,MAAM,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAA;YACrC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}