ai.matey.utils 0.2.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 (63) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/conversation-history.js +139 -0
  3. package/dist/cjs/conversation-history.js.map +1 -0
  4. package/dist/cjs/index.js +42 -0
  5. package/dist/cjs/index.js.map +1 -0
  6. package/dist/cjs/model-cache.js +163 -0
  7. package/dist/cjs/model-cache.js.map +1 -0
  8. package/dist/cjs/parameter-normalizer.js +451 -0
  9. package/dist/cjs/parameter-normalizer.js.map +1 -0
  10. package/dist/cjs/streaming-modes.js +277 -0
  11. package/dist/cjs/streaming-modes.js.map +1 -0
  12. package/dist/cjs/streaming.js +892 -0
  13. package/dist/cjs/streaming.js.map +1 -0
  14. package/dist/cjs/structured-output.js +398 -0
  15. package/dist/cjs/structured-output.js.map +1 -0
  16. package/dist/cjs/system-message.js +222 -0
  17. package/dist/cjs/system-message.js.map +1 -0
  18. package/dist/cjs/validation.js +534 -0
  19. package/dist/cjs/validation.js.map +1 -0
  20. package/dist/cjs/warnings.js +301 -0
  21. package/dist/cjs/warnings.js.map +1 -0
  22. package/dist/esm/conversation-history.js +134 -0
  23. package/dist/esm/conversation-history.js.map +1 -0
  24. package/dist/esm/index.js +26 -0
  25. package/dist/esm/index.js.map +1 -0
  26. package/dist/esm/model-cache.js +158 -0
  27. package/dist/esm/model-cache.js.map +1 -0
  28. package/dist/esm/parameter-normalizer.js +434 -0
  29. package/dist/esm/parameter-normalizer.js.map +1 -0
  30. package/dist/esm/streaming-modes.js +265 -0
  31. package/dist/esm/streaming-modes.js.map +1 -0
  32. package/dist/esm/streaming.js +860 -0
  33. package/dist/esm/streaming.js.map +1 -0
  34. package/dist/esm/structured-output.js +387 -0
  35. package/dist/esm/structured-output.js.map +1 -0
  36. package/dist/esm/system-message.js +213 -0
  37. package/dist/esm/system-message.js.map +1 -0
  38. package/dist/esm/validation.js +523 -0
  39. package/dist/esm/validation.js.map +1 -0
  40. package/dist/esm/warnings.js +284 -0
  41. package/dist/esm/warnings.js.map +1 -0
  42. package/dist/types/conversation-history.d.ts +70 -0
  43. package/dist/types/conversation-history.d.ts.map +1 -0
  44. package/dist/types/index.d.ts +17 -0
  45. package/dist/types/index.d.ts.map +1 -0
  46. package/dist/types/model-cache.d.ts +88 -0
  47. package/dist/types/model-cache.d.ts.map +1 -0
  48. package/dist/types/parameter-normalizer.d.ts +154 -0
  49. package/dist/types/parameter-normalizer.d.ts.map +1 -0
  50. package/dist/types/streaming-modes.d.ts +139 -0
  51. package/dist/types/streaming-modes.d.ts.map +1 -0
  52. package/dist/types/streaming.d.ts +384 -0
  53. package/dist/types/streaming.d.ts.map +1 -0
  54. package/dist/types/structured-output.d.ts +157 -0
  55. package/dist/types/structured-output.d.ts.map +1 -0
  56. package/dist/types/system-message.d.ts +78 -0
  57. package/dist/types/system-message.d.ts.map +1 -0
  58. package/dist/types/validation.d.ts +46 -0
  59. package/dist/types/validation.d.ts.map +1 -0
  60. package/dist/types/warnings.d.ts +149 -0
  61. package/dist/types/warnings.d.ts.map +1 -0
  62. package/package.json +75 -0
  63. package/readme.md +280 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-message.js","sourceRoot":"","sources":["../../src/system-message.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,534 @@
1
+ "use strict";
2
+ /**
3
+ * Validation Utilities
4
+ *
5
+ * Core validation functions for IR requests, messages, and parameters.
6
+ *
7
+ * @module
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.isValidMessageRole = isValidMessageRole;
11
+ exports.validateMessageContent = validateMessageContent;
12
+ exports.validateMessage = validateMessage;
13
+ exports.validateMessages = validateMessages;
14
+ exports.validateTemperature = validateTemperature;
15
+ exports.validateMaxTokens = validateMaxTokens;
16
+ exports.validateTopP = validateTopP;
17
+ exports.validateParameters = validateParameters;
18
+ exports.validateIRChatRequest = validateIRChatRequest;
19
+ const ai_matey_errors_1 = require("ai.matey.errors");
20
+ // ============================================================================
21
+ // Message Validation
22
+ // ============================================================================
23
+ /**
24
+ * Validate message role.
25
+ */
26
+ function isValidMessageRole(role) {
27
+ return ['system', 'user', 'assistant', 'tool'].includes(role);
28
+ }
29
+ /**
30
+ * Validate message content.
31
+ */
32
+ function validateMessageContent(content, provenance) {
33
+ if (typeof content === 'string') {
34
+ if (content.length === 0) {
35
+ throw new ai_matey_errors_1.ValidationError({
36
+ code: ai_matey_errors_1.ErrorCode.INVALID_MESSAGE_FORMAT,
37
+ message: 'Message content cannot be empty string',
38
+ validationDetails: [
39
+ {
40
+ field: 'content',
41
+ value: content,
42
+ reason: 'Content must be non-empty string or content blocks',
43
+ expected: 'Non-empty string or array of content blocks',
44
+ },
45
+ ],
46
+ provenance,
47
+ });
48
+ }
49
+ return;
50
+ }
51
+ if (!Array.isArray(content)) {
52
+ throw new ai_matey_errors_1.ValidationError({
53
+ code: ai_matey_errors_1.ErrorCode.INVALID_MESSAGE_FORMAT,
54
+ message: 'Message content must be string or array of content blocks',
55
+ validationDetails: [
56
+ {
57
+ field: 'content',
58
+ value: content,
59
+ reason: 'Invalid content type',
60
+ expected: 'string or ContentBlock[]',
61
+ },
62
+ ],
63
+ provenance,
64
+ });
65
+ }
66
+ if (content.length === 0) {
67
+ throw new ai_matey_errors_1.ValidationError({
68
+ code: ai_matey_errors_1.ErrorCode.INVALID_MESSAGE_FORMAT,
69
+ message: 'Message content array cannot be empty',
70
+ validationDetails: [
71
+ {
72
+ field: 'content',
73
+ value: content,
74
+ reason: 'Content array must contain at least one block',
75
+ expected: 'Non-empty array',
76
+ },
77
+ ],
78
+ provenance,
79
+ });
80
+ }
81
+ // Validate each content block
82
+ content.forEach((block, index) => {
83
+ if (!block || typeof block !== 'object') {
84
+ throw new ai_matey_errors_1.ValidationError({
85
+ code: ai_matey_errors_1.ErrorCode.INVALID_MESSAGE_FORMAT,
86
+ message: `Invalid content block at index ${index}`,
87
+ validationDetails: [
88
+ {
89
+ field: `content[${index}]`,
90
+ value: block,
91
+ reason: 'Content block must be an object',
92
+ expected: 'ContentBlock object',
93
+ },
94
+ ],
95
+ provenance,
96
+ });
97
+ }
98
+ const blockType = block.type;
99
+ if (!['text', 'image', 'tool_use', 'tool_result'].includes(blockType)) {
100
+ throw new ai_matey_errors_1.ValidationError({
101
+ code: ai_matey_errors_1.ErrorCode.INVALID_MESSAGE_FORMAT,
102
+ message: `Invalid content block type: ${blockType}`,
103
+ validationDetails: [
104
+ {
105
+ field: `content[${index}].type`,
106
+ value: blockType,
107
+ reason: 'Unknown content block type',
108
+ expected: 'text, image, tool_use, or tool_result',
109
+ },
110
+ ],
111
+ provenance,
112
+ });
113
+ }
114
+ });
115
+ }
116
+ /**
117
+ * Validate a single message.
118
+ */
119
+ function validateMessage(message, provenance) {
120
+ if (!message || typeof message !== 'object') {
121
+ throw new ai_matey_errors_1.ValidationError({
122
+ code: ai_matey_errors_1.ErrorCode.INVALID_MESSAGE_FORMAT,
123
+ message: 'Message must be an object',
124
+ validationDetails: [
125
+ {
126
+ field: 'message',
127
+ value: message,
128
+ reason: 'Invalid message type',
129
+ expected: 'IRMessage object',
130
+ },
131
+ ],
132
+ provenance,
133
+ });
134
+ }
135
+ const msg = message;
136
+ // Validate role
137
+ if (!msg.role) {
138
+ throw new ai_matey_errors_1.ValidationError({
139
+ code: ai_matey_errors_1.ErrorCode.INVALID_MESSAGE_FORMAT,
140
+ message: 'Message missing required field: role',
141
+ validationDetails: [
142
+ {
143
+ field: 'role',
144
+ value: undefined,
145
+ reason: 'Role is required',
146
+ expected: 'system, user, assistant, or tool',
147
+ },
148
+ ],
149
+ provenance,
150
+ });
151
+ }
152
+ if (!isValidMessageRole(msg.role)) {
153
+ throw new ai_matey_errors_1.ValidationError({
154
+ code: ai_matey_errors_1.ErrorCode.INVALID_MESSAGE_FORMAT,
155
+ message: `Invalid message role: ${String(msg.role)}`,
156
+ validationDetails: [
157
+ {
158
+ field: 'role',
159
+ value: msg.role,
160
+ reason: 'Invalid role value',
161
+ expected: 'system, user, assistant, or tool',
162
+ },
163
+ ],
164
+ provenance,
165
+ });
166
+ }
167
+ // Validate content
168
+ if (msg.content === undefined) {
169
+ throw new ai_matey_errors_1.ValidationError({
170
+ code: ai_matey_errors_1.ErrorCode.INVALID_MESSAGE_FORMAT,
171
+ message: 'Message missing required field: content',
172
+ validationDetails: [
173
+ {
174
+ field: 'content',
175
+ value: undefined,
176
+ reason: 'Content is required',
177
+ expected: 'string or ContentBlock[]',
178
+ },
179
+ ],
180
+ provenance,
181
+ });
182
+ }
183
+ validateMessageContent(msg.content, provenance);
184
+ }
185
+ /**
186
+ * Validate messages array.
187
+ */
188
+ function validateMessages(messages, provenance) {
189
+ if (!Array.isArray(messages)) {
190
+ throw new ai_matey_errors_1.ValidationError({
191
+ code: ai_matey_errors_1.ErrorCode.INVALID_MESSAGE_FORMAT,
192
+ message: 'Messages must be an array',
193
+ validationDetails: [
194
+ {
195
+ field: 'messages',
196
+ value: messages,
197
+ reason: 'Invalid messages type',
198
+ expected: 'Array of IRMessage',
199
+ },
200
+ ],
201
+ provenance,
202
+ });
203
+ }
204
+ if (messages.length === 0) {
205
+ throw new ai_matey_errors_1.ValidationError({
206
+ code: ai_matey_errors_1.ErrorCode.INVALID_MESSAGE_FORMAT,
207
+ message: 'Messages array cannot be empty',
208
+ validationDetails: [
209
+ {
210
+ field: 'messages',
211
+ value: messages,
212
+ reason: 'At least one message is required',
213
+ expected: 'Non-empty array',
214
+ },
215
+ ],
216
+ provenance,
217
+ });
218
+ }
219
+ messages.forEach((message, index) => {
220
+ try {
221
+ validateMessage(message, provenance);
222
+ }
223
+ catch (error) {
224
+ if (error instanceof ai_matey_errors_1.ValidationError) {
225
+ // Add index to field names
226
+ const details = error.validationDetails.map((detail) => ({
227
+ ...detail,
228
+ field: `messages[${index}].${detail.field}`,
229
+ }));
230
+ throw new ai_matey_errors_1.ValidationError({
231
+ code: ai_matey_errors_1.ErrorCode.INVALID_MESSAGE_FORMAT,
232
+ message: `Invalid message at index ${index}: ${error.message}`,
233
+ validationDetails: details,
234
+ provenance,
235
+ });
236
+ }
237
+ throw error;
238
+ }
239
+ });
240
+ }
241
+ // ============================================================================
242
+ // Parameter Validation
243
+ // ============================================================================
244
+ /**
245
+ * Validate temperature parameter.
246
+ */
247
+ function validateTemperature(temperature, provenance) {
248
+ if (temperature === undefined || temperature === null) {
249
+ return;
250
+ }
251
+ if (typeof temperature !== 'number') {
252
+ throw new ai_matey_errors_1.ValidationError({
253
+ code: ai_matey_errors_1.ErrorCode.INVALID_PARAMETERS,
254
+ message: 'Temperature must be a number',
255
+ validationDetails: [
256
+ {
257
+ field: 'temperature',
258
+ value: temperature,
259
+ reason: 'Invalid type',
260
+ expected: 'number',
261
+ },
262
+ ],
263
+ provenance,
264
+ });
265
+ }
266
+ if (temperature < 0 || temperature > 2) {
267
+ throw new ai_matey_errors_1.ValidationError({
268
+ code: ai_matey_errors_1.ErrorCode.INVALID_PARAMETERS,
269
+ message: 'Temperature must be between 0 and 2',
270
+ validationDetails: [
271
+ {
272
+ field: 'temperature',
273
+ value: temperature,
274
+ reason: 'Out of range',
275
+ expected: '0 <= temperature <= 2',
276
+ },
277
+ ],
278
+ provenance,
279
+ });
280
+ }
281
+ }
282
+ /**
283
+ * Validate maxTokens parameter.
284
+ */
285
+ function validateMaxTokens(maxTokens, provenance) {
286
+ if (maxTokens === undefined || maxTokens === null) {
287
+ return;
288
+ }
289
+ if (typeof maxTokens !== 'number') {
290
+ throw new ai_matey_errors_1.ValidationError({
291
+ code: ai_matey_errors_1.ErrorCode.INVALID_PARAMETERS,
292
+ message: 'maxTokens must be a number',
293
+ validationDetails: [
294
+ {
295
+ field: 'maxTokens',
296
+ value: maxTokens,
297
+ reason: 'Invalid type',
298
+ expected: 'number',
299
+ },
300
+ ],
301
+ provenance,
302
+ });
303
+ }
304
+ if (!Number.isInteger(maxTokens) || maxTokens < 1) {
305
+ throw new ai_matey_errors_1.ValidationError({
306
+ code: ai_matey_errors_1.ErrorCode.INVALID_PARAMETERS,
307
+ message: 'maxTokens must be a positive integer',
308
+ validationDetails: [
309
+ {
310
+ field: 'maxTokens',
311
+ value: maxTokens,
312
+ reason: 'Invalid value',
313
+ expected: 'Positive integer',
314
+ },
315
+ ],
316
+ provenance,
317
+ });
318
+ }
319
+ }
320
+ /**
321
+ * Validate topP parameter.
322
+ */
323
+ function validateTopP(topP, provenance) {
324
+ if (topP === undefined || topP === null) {
325
+ return;
326
+ }
327
+ if (typeof topP !== 'number') {
328
+ throw new ai_matey_errors_1.ValidationError({
329
+ code: ai_matey_errors_1.ErrorCode.INVALID_PARAMETERS,
330
+ message: 'topP must be a number',
331
+ validationDetails: [
332
+ {
333
+ field: 'topP',
334
+ value: topP,
335
+ reason: 'Invalid type',
336
+ expected: 'number',
337
+ },
338
+ ],
339
+ provenance,
340
+ });
341
+ }
342
+ if (topP < 0 || topP > 1) {
343
+ throw new ai_matey_errors_1.ValidationError({
344
+ code: ai_matey_errors_1.ErrorCode.INVALID_PARAMETERS,
345
+ message: 'topP must be between 0 and 1',
346
+ validationDetails: [
347
+ {
348
+ field: 'topP',
349
+ value: topP,
350
+ reason: 'Out of range',
351
+ expected: '0 <= topP <= 1',
352
+ },
353
+ ],
354
+ provenance,
355
+ });
356
+ }
357
+ }
358
+ /**
359
+ * Validate parameters object.
360
+ */
361
+ function validateParameters(parameters, provenance) {
362
+ if (parameters === undefined || parameters === null) {
363
+ return;
364
+ }
365
+ if (typeof parameters !== 'object') {
366
+ throw new ai_matey_errors_1.ValidationError({
367
+ code: ai_matey_errors_1.ErrorCode.INVALID_PARAMETERS,
368
+ message: 'Parameters must be an object',
369
+ validationDetails: [
370
+ {
371
+ field: 'parameters',
372
+ value: parameters,
373
+ reason: 'Invalid type',
374
+ expected: 'IRParameters object',
375
+ },
376
+ ],
377
+ provenance,
378
+ });
379
+ }
380
+ const params = parameters;
381
+ // Validate individual parameters
382
+ validateTemperature(params.temperature, provenance);
383
+ validateMaxTokens(params.maxTokens, provenance);
384
+ validateTopP(params.topP, provenance);
385
+ // Validate topK
386
+ if (params.topK !== undefined && params.topK !== null) {
387
+ if (typeof params.topK !== 'number' || !Number.isInteger(params.topK) || params.topK < 1) {
388
+ throw new ai_matey_errors_1.ValidationError({
389
+ code: ai_matey_errors_1.ErrorCode.INVALID_PARAMETERS,
390
+ message: 'topK must be a positive integer',
391
+ validationDetails: [
392
+ {
393
+ field: 'topK',
394
+ value: params.topK,
395
+ reason: 'Invalid value',
396
+ expected: 'Positive integer',
397
+ },
398
+ ],
399
+ provenance,
400
+ });
401
+ }
402
+ }
403
+ // Validate penalties
404
+ if (params.frequencyPenalty !== undefined && params.frequencyPenalty !== null) {
405
+ if (typeof params.frequencyPenalty !== 'number' ||
406
+ params.frequencyPenalty < -2 ||
407
+ params.frequencyPenalty > 2) {
408
+ throw new ai_matey_errors_1.ValidationError({
409
+ code: ai_matey_errors_1.ErrorCode.INVALID_PARAMETERS,
410
+ message: 'frequencyPenalty must be between -2 and 2',
411
+ validationDetails: [
412
+ {
413
+ field: 'frequencyPenalty',
414
+ value: params.frequencyPenalty,
415
+ reason: 'Out of range',
416
+ expected: '-2 <= frequencyPenalty <= 2',
417
+ },
418
+ ],
419
+ provenance,
420
+ });
421
+ }
422
+ }
423
+ if (params.presencePenalty !== undefined && params.presencePenalty !== null) {
424
+ if (typeof params.presencePenalty !== 'number' ||
425
+ params.presencePenalty < -2 ||
426
+ params.presencePenalty > 2) {
427
+ throw new ai_matey_errors_1.ValidationError({
428
+ code: ai_matey_errors_1.ErrorCode.INVALID_PARAMETERS,
429
+ message: 'presencePenalty must be between -2 and 2',
430
+ validationDetails: [
431
+ {
432
+ field: 'presencePenalty',
433
+ value: params.presencePenalty,
434
+ reason: 'Out of range',
435
+ expected: '-2 <= presencePenalty <= 2',
436
+ },
437
+ ],
438
+ provenance,
439
+ });
440
+ }
441
+ }
442
+ }
443
+ // ============================================================================
444
+ // Request Validation
445
+ // ============================================================================
446
+ /**
447
+ * Validate IR chat request.
448
+ */
449
+ function validateIRChatRequest(request, provenance) {
450
+ if (!request || typeof request !== 'object') {
451
+ throw new ai_matey_errors_1.ValidationError({
452
+ code: ai_matey_errors_1.ErrorCode.INVALID_REQUEST,
453
+ message: 'Request must be an object',
454
+ validationDetails: [
455
+ {
456
+ field: 'request',
457
+ value: request,
458
+ reason: 'Invalid request type',
459
+ expected: 'IRChatRequest object',
460
+ },
461
+ ],
462
+ provenance,
463
+ });
464
+ }
465
+ const req = request;
466
+ // Validate messages
467
+ if (!req.messages) {
468
+ throw new ai_matey_errors_1.ValidationError({
469
+ code: ai_matey_errors_1.ErrorCode.INVALID_REQUEST,
470
+ message: 'Request missing required field: messages',
471
+ validationDetails: [
472
+ {
473
+ field: 'messages',
474
+ value: undefined,
475
+ reason: 'Messages array is required',
476
+ expected: 'Non-empty array of IRMessage',
477
+ },
478
+ ],
479
+ provenance,
480
+ });
481
+ }
482
+ validateMessages(req.messages, provenance);
483
+ // Validate parameters if present
484
+ if (req.parameters !== undefined) {
485
+ validateParameters(req.parameters, provenance);
486
+ }
487
+ // Validate metadata
488
+ if (!req.metadata) {
489
+ throw new ai_matey_errors_1.ValidationError({
490
+ code: ai_matey_errors_1.ErrorCode.INVALID_REQUEST,
491
+ message: 'Request missing required field: metadata',
492
+ validationDetails: [
493
+ {
494
+ field: 'metadata',
495
+ value: undefined,
496
+ reason: 'Metadata is required',
497
+ expected: 'IRMetadata object',
498
+ },
499
+ ],
500
+ provenance,
501
+ });
502
+ }
503
+ if (!req.metadata.requestId) {
504
+ throw new ai_matey_errors_1.ValidationError({
505
+ code: ai_matey_errors_1.ErrorCode.INVALID_REQUEST,
506
+ message: 'Request metadata missing requestId',
507
+ validationDetails: [
508
+ {
509
+ field: 'metadata.requestId',
510
+ value: undefined,
511
+ reason: 'Request ID is required',
512
+ expected: 'string',
513
+ },
514
+ ],
515
+ provenance,
516
+ });
517
+ }
518
+ if (!req.metadata.timestamp) {
519
+ throw new ai_matey_errors_1.ValidationError({
520
+ code: ai_matey_errors_1.ErrorCode.INVALID_REQUEST,
521
+ message: 'Request metadata missing timestamp',
522
+ validationDetails: [
523
+ {
524
+ field: 'metadata.timestamp',
525
+ value: undefined,
526
+ reason: 'Timestamp is required',
527
+ expected: 'number',
528
+ },
529
+ ],
530
+ provenance,
531
+ });
532
+ }
533
+ }
534
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAmBH,gDAEC;AAKD,wDAuFC;AAKD,0CAyEC;AAKD,4CAwDC;AASD,kDAoCC;AAKD,8CAoCC;AAKD,oCAoCC;AAKD,gDA8FC;AASD,sDA8FC;AA5jBD,qDAA8E;AAG9E,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;GAEG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,OAAgB,EAAE,UAA4B;IACnF,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,iCAAe,CAAC;gBACxB,IAAI,EAAE,2BAAa,CAAC,sBAAsB;gBAC1C,OAAO,EAAE,wCAAwC;gBACjD,iBAAiB,EAAE;oBACjB;wBACE,KAAK,EAAE,SAAS;wBAChB,KAAK,EAAE,OAAO;wBACd,MAAM,EAAE,oDAAoD;wBAC5D,QAAQ,EAAE,6CAA6C;qBACxD;iBACF;gBACD,UAAU;aACX,CAAC,CAAC;QACL,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,sBAAsB;YAC1C,OAAO,EAAE,2DAA2D;YACpE,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,sBAAsB;oBAC9B,QAAQ,EAAE,0BAA0B;iBACrC;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,sBAAsB;YAC1C,OAAO,EAAE,uCAAuC;YAChD,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,+CAA+C;oBACvD,QAAQ,EAAE,iBAAiB;iBAC5B;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,8BAA8B;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC/B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM,IAAI,iCAAe,CAAC;gBACxB,IAAI,EAAE,2BAAa,CAAC,sBAAsB;gBAC1C,OAAO,EAAE,kCAAkC,KAAK,EAAE;gBAClD,iBAAiB,EAAE;oBACjB;wBACE,KAAK,EAAE,WAAW,KAAK,GAAG;wBAC1B,KAAK,EAAE,KAAK;wBACZ,MAAM,EAAE,iCAAiC;wBACzC,QAAQ,EAAE,qBAAqB;qBAChC;iBACF;gBACD,UAAU;aACX,CAAC,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAI,KAAwB,CAAC,IAAI,CAAC;QACjD,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,iCAAe,CAAC;gBACxB,IAAI,EAAE,2BAAa,CAAC,sBAAsB;gBAC1C,OAAO,EAAE,+BAA+B,SAAS,EAAE;gBACnD,iBAAiB,EAAE;oBACjB;wBACE,KAAK,EAAE,WAAW,KAAK,QAAQ;wBAC/B,KAAK,EAAE,SAAS;wBAChB,MAAM,EAAE,4BAA4B;wBACpC,QAAQ,EAAE,uCAAuC;qBAClD;iBACF;gBACD,UAAU;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC7B,OAAgB,EAChB,UAA4B;IAE5B,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,sBAAsB;YAC1C,OAAO,EAAE,2BAA2B;YACpC,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,sBAAsB;oBAC9B,QAAQ,EAAE,kBAAkB;iBAC7B;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,MAAM,GAAG,GAAG,OAA6B,CAAC;IAE1C,gBAAgB;IAChB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,sBAAsB;YAC1C,OAAO,EAAE,sCAAsC;YAC/C,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,MAAM;oBACb,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,kBAAkB;oBAC1B,QAAQ,EAAE,kCAAkC;iBAC7C;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,sBAAsB;YAC1C,OAAO,EAAE,yBAAyB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACpD,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,MAAM;oBACb,KAAK,EAAE,GAAG,CAAC,IAAI;oBACf,MAAM,EAAE,oBAAoB;oBAC5B,QAAQ,EAAE,kCAAkC;iBAC7C;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB;IACnB,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,sBAAsB;YAC1C,OAAO,EAAE,yCAAyC;YAClD,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,qBAAqB;oBAC7B,QAAQ,EAAE,0BAA0B;iBACrC;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,QAAiB,EACjB,UAA4B;IAE5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,sBAAsB;YAC1C,OAAO,EAAE,2BAA2B;YACpC,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,UAAU;oBACjB,KAAK,EAAE,QAAQ;oBACf,MAAM,EAAE,uBAAuB;oBAC/B,QAAQ,EAAE,oBAAoB;iBAC/B;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,sBAAsB;YAC1C,OAAO,EAAE,gCAAgC;YACzC,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,UAAU;oBACjB,KAAK,EAAE,QAAQ;oBACf,MAAM,EAAE,kCAAkC;oBAC1C,QAAQ,EAAE,iBAAiB;iBAC5B;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,iCAAe,EAAE,CAAC;gBACrC,2BAA2B;gBAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBACvD,GAAG,MAAM;oBACT,KAAK,EAAE,YAAY,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE;iBAC5C,CAAC,CAAC,CAAC;gBACJ,MAAM,IAAI,iCAAe,CAAC;oBACxB,IAAI,EAAE,2BAAa,CAAC,sBAAsB;oBAC1C,OAAO,EAAE,4BAA4B,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE;oBAC9D,iBAAiB,EAAE,OAAO;oBAC1B,UAAU;iBACX,CAAC,CAAC;YACL,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,SAAgB,mBAAmB,CAAC,WAAoB,EAAE,UAA4B;IACpF,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACtD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,kBAAkB;YACtC,OAAO,EAAE,8BAA8B;YACvC,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,aAAa;oBACpB,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,kBAAkB;YACtC,OAAO,EAAE,qCAAqC;YAC9C,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,aAAa;oBACpB,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,uBAAuB;iBAClC;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,SAAkB,EAAE,UAA4B;IAChF,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QAClD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,kBAAkB;YACtC,OAAO,EAAE,4BAA4B;YACrC,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,WAAW;oBAClB,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,kBAAkB;YACtC,OAAO,EAAE,sCAAsC;YAC/C,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,WAAW;oBAClB,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,eAAe;oBACvB,QAAQ,EAAE,kBAAkB;iBAC7B;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAa,EAAE,UAA4B;IACtE,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,kBAAkB;YACtC,OAAO,EAAE,uBAAuB;YAChC,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,MAAM;oBACb,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,kBAAkB;YACtC,OAAO,EAAE,8BAA8B;YACvC,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,MAAM;oBACb,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,gBAAgB;iBAC3B;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAChC,UAAmB,EACnB,UAA4B;IAE5B,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACpD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,kBAAkB;YACtC,OAAO,EAAE,8BAA8B;YACvC,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,YAAY;oBACnB,KAAK,EAAE,UAAU;oBACjB,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,qBAAqB;iBAChC;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,UAAmC,CAAC;IAEnD,iCAAiC;IACjC,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACpD,iBAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAChD,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAEtC,gBAAgB;IAChB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACtD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACzF,MAAM,IAAI,iCAAe,CAAC;gBACxB,IAAI,EAAE,2BAAa,CAAC,kBAAkB;gBACtC,OAAO,EAAE,iCAAiC;gBAC1C,iBAAiB,EAAE;oBACjB;wBACE,KAAK,EAAE,MAAM;wBACb,KAAK,EAAE,MAAM,CAAC,IAAI;wBAClB,MAAM,EAAE,eAAe;wBACvB,QAAQ,EAAE,kBAAkB;qBAC7B;iBACF;gBACD,UAAU;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;QAC9E,IACE,OAAO,MAAM,CAAC,gBAAgB,KAAK,QAAQ;YAC3C,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC5B,MAAM,CAAC,gBAAgB,GAAG,CAAC,EAC3B,CAAC;YACD,MAAM,IAAI,iCAAe,CAAC;gBACxB,IAAI,EAAE,2BAAa,CAAC,kBAAkB;gBACtC,OAAO,EAAE,2CAA2C;gBACpD,iBAAiB,EAAE;oBACjB;wBACE,KAAK,EAAE,kBAAkB;wBACzB,KAAK,EAAE,MAAM,CAAC,gBAAgB;wBAC9B,MAAM,EAAE,cAAc;wBACtB,QAAQ,EAAE,6BAA6B;qBACxC;iBACF;gBACD,UAAU;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;QAC5E,IACE,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ;YAC1C,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC;YAC3B,MAAM,CAAC,eAAe,GAAG,CAAC,EAC1B,CAAC;YACD,MAAM,IAAI,iCAAe,CAAC;gBACxB,IAAI,EAAE,2BAAa,CAAC,kBAAkB;gBACtC,OAAO,EAAE,0CAA0C;gBACnD,iBAAiB,EAAE;oBACjB;wBACE,KAAK,EAAE,iBAAiB;wBACxB,KAAK,EAAE,MAAM,CAAC,eAAe;wBAC7B,MAAM,EAAE,cAAc;wBACtB,QAAQ,EAAE,4BAA4B;qBACvC;iBACF;gBACD,UAAU;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;GAEG;AACH,SAAgB,qBAAqB,CACnC,OAAgB,EAChB,UAA4B;IAE5B,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,eAAe;YACnC,OAAO,EAAE,2BAA2B;YACpC,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,sBAAsB;oBAC9B,QAAQ,EAAE,sBAAsB;iBACjC;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,MAAM,GAAG,GAAG,OAAiC,CAAC;IAE9C,oBAAoB;IACpB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,eAAe;YACnC,OAAO,EAAE,0CAA0C;YACnD,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,UAAU;oBACjB,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,4BAA4B;oBACpC,QAAQ,EAAE,8BAA8B;iBACzC;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAE3C,iCAAiC;IACjC,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACjC,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,oBAAoB;IACpB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,eAAe;YACnC,OAAO,EAAE,0CAA0C;YACnD,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,UAAU;oBACjB,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,sBAAsB;oBAC9B,QAAQ,EAAE,mBAAmB;iBAC9B;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,eAAe;YACnC,OAAO,EAAE,oCAAoC;YAC7C,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,oBAAoB;oBAC3B,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,wBAAwB;oBAChC,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,iCAAe,CAAC;YACxB,IAAI,EAAE,2BAAa,CAAC,eAAe;YACnC,OAAO,EAAE,oCAAoC;YAC7C,iBAAiB,EAAE;gBACjB;oBACE,KAAK,EAAE,oBAAoB;oBAC3B,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,uBAAuB;oBAC/B,QAAQ,EAAE,QAAQ;iBACnB;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}