@xemahq/biomes-platform-imap 0.6.0 → 0.7.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.
@@ -1,554 +0,0 @@
1
- import { createHash } from 'node:crypto';
2
- import { adapterError, err, ok, } from '@xemahq/biome-sdk/adapter';
3
- import { EmailTlsMode } from '@xemahq/contracts/connector';
4
- import { clampAttachmentSizeLimit, flattenAttachmentParts, parseSource, } from './imap-message-parts.js';
5
- import { MailDialRefusedError } from './mail-dial-guard.js';
6
- export { DEFAULT_ATTACHMENT_SIZE_LIMIT, } from './imap-message-parts.js';
7
- export const IMAP_FETCH_ACTION = 'fetch';
8
- export const IMAP_FETCH_BY_UID_ACTION = 'fetch-by-uid';
9
- export const IMAP_SEARCH_ACTION = 'search';
10
- export const IMAP_MARK_ACTION = 'mark';
11
- const DEFAULT_FETCH_LIMIT = 200;
12
- const MAX_FETCH_LIMIT = 1000;
13
- const DEFAULT_MAILBOX = 'INBOX';
14
- function parseTlsMode(value) {
15
- switch (value) {
16
- case EmailTlsMode.Tls:
17
- case EmailTlsMode.Starttls:
18
- case EmailTlsMode.Plain:
19
- case EmailTlsMode.Auto:
20
- return value;
21
- default:
22
- return EmailTlsMode.Auto;
23
- }
24
- }
25
- export function checkImapTlsMode(tlsMode, port) {
26
- if (tlsMode === EmailTlsMode.Plain) {
27
- return 'imap: plaintext transport (tlsMode "plain") is refused; use TLS on 993 or STARTTLS on 143';
28
- }
29
- if (tlsMode === EmailTlsMode.Tls && port === 143) {
30
- return 'imap: tlsMode "tls" needs port 993; port 143 uses STARTTLS';
31
- }
32
- if (tlsMode === EmailTlsMode.Starttls && port === 993) {
33
- return 'imap: tlsMode "starttls" needs port 143; port 993 uses implicit TLS';
34
- }
35
- return undefined;
36
- }
37
- export function readImapTransportConfig(hints) {
38
- const host = hints['host'];
39
- const username = hints['username'];
40
- const password = hints['password'];
41
- if (!host || !username || password === undefined) {
42
- return {
43
- ok: false,
44
- message: 'imap: wallet credential is missing host / username / password',
45
- };
46
- }
47
- const port = Number.parseInt(hints['port'] ?? '0', 10);
48
- const refused = checkImapTlsMode(parseTlsMode(hints['tlsMode']), port);
49
- if (refused !== undefined) {
50
- return { ok: false, message: refused };
51
- }
52
- return { ok: true, config: { host, port, username, password } };
53
- }
54
- export function hashCriteria(criteria) {
55
- const entries = Object.entries(criteria)
56
- .filter(([, v]) => v !== undefined && v !== null && v !== '')
57
- .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
58
- return createHash('sha256')
59
- .update(JSON.stringify(entries), 'utf8')
60
- .digest('hex');
61
- }
62
- export function buildSearchObject(criteria) {
63
- const out = {};
64
- if (criteria.unseen) {
65
- out['seen'] = false;
66
- }
67
- if (criteria.flagged) {
68
- out['flagged'] = true;
69
- }
70
- if (criteria.since) {
71
- out['since'] = new Date(criteria.since);
72
- }
73
- if (criteria.before) {
74
- out['before'] = new Date(criteria.before);
75
- }
76
- if (criteria.from) {
77
- out['from'] = criteria.from;
78
- }
79
- if (criteria.to) {
80
- out['to'] = criteria.to;
81
- }
82
- if (criteria.subject) {
83
- out['subject'] = criteria.subject;
84
- }
85
- if (criteria.body) {
86
- out['body'] = criteria.body;
87
- }
88
- if (criteria.uid) {
89
- out['uid'] = criteria.uid;
90
- }
91
- return out;
92
- }
93
- function firstAddress(list) {
94
- const addr = list?.[0]?.address;
95
- return typeof addr === 'string' ? addr : '';
96
- }
97
- function addressList(list) {
98
- if (!list || list.length === 0) {
99
- return undefined;
100
- }
101
- const out = list
102
- .map((a) => a.address)
103
- .filter((a) => typeof a === 'string' && a.length > 0);
104
- return out.length > 0 ? out : undefined;
105
- }
106
- export function toMessageEnvelope(msg) {
107
- const env = msg.envelope ?? {};
108
- const date = env.date instanceof Date
109
- ? env.date.toISOString()
110
- : typeof env.date === 'string' && env.date.length > 0
111
- ? new Date(env.date).toISOString()
112
- : '';
113
- const to = addressList(env.to);
114
- const cc = addressList(env.cc);
115
- const flags = msg.flags ? [...msg.flags] : undefined;
116
- return {
117
- uid: String(msg.uid),
118
- subject: typeof env.subject === 'string' ? env.subject : '',
119
- from: firstAddress(env.from),
120
- date,
121
- ...(to !== undefined ? { to } : {}),
122
- ...(cc !== undefined ? { cc } : {}),
123
- ...(typeof env.messageId === 'string' ? { messageId: env.messageId } : {}),
124
- ...(typeof env.inReplyTo === 'string' ? { inReplyTo: env.inReplyTo } : {}),
125
- ...(flags !== undefined ? { flags } : {}),
126
- ...(typeof msg.size === 'number' ? { size: msg.size } : {}),
127
- };
128
- }
129
- function clampLimit(value) {
130
- if (typeof value !== 'number' || !Number.isFinite(value)) {
131
- return DEFAULT_FETCH_LIMIT;
132
- }
133
- return Math.max(1, Math.min(MAX_FETCH_LIMIT, Math.floor(value)));
134
- }
135
- function readMailbox(params) {
136
- const raw = params['mailbox'];
137
- const trimmed = typeof raw === 'string' ? raw.trim() : '';
138
- return trimmed.length > 0 ? trimmed : DEFAULT_MAILBOX;
139
- }
140
- function readCriteria(value) {
141
- if (value === null || typeof value !== 'object') {
142
- return {};
143
- }
144
- return value;
145
- }
146
- function readBodyFetchOptions(params) {
147
- return {
148
- includeBody: params['includeBody'] !== false,
149
- includeAttachments: params['includeAttachments'] === true,
150
- attachmentSizeLimit: clampAttachmentSizeLimit(params['attachmentSizeLimit']),
151
- };
152
- }
153
- function mailboxUidValidity(client) {
154
- return client.mailbox ? String(client.mailbox.uidValidity) : '';
155
- }
156
- const FETCH_QUERY = { uid: true, envelope: true, flags: true, size: true };
157
- const BODY_STRUCTURE_QUERY = { uid: true, bodyStructure: true };
158
- async function collectEnvelopes(client, range) {
159
- const out = [];
160
- for await (const msg of client.fetch(range, FETCH_QUERY, { uid: true })) {
161
- out.push(toMessageEnvelope(msg));
162
- }
163
- return out;
164
- }
165
- async function readDownloadBytes(download) {
166
- const chunks = [];
167
- for await (const chunk of download.content) {
168
- chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
169
- }
170
- return Buffer.concat(chunks);
171
- }
172
- async function downloadAndParseSource(client, uid) {
173
- const download = await client.download(uid, undefined, { uid: true });
174
- const raw = (await readDownloadBytes(download)).toString('utf8');
175
- return parseSource(raw);
176
- }
177
- function toMessageBody(parsed) {
178
- return {
179
- ...(parsed.text !== undefined ? { text: parsed.text } : {}),
180
- ...(parsed.html !== undefined ? { html: parsed.html } : {}),
181
- ...(parsed.attachmentFilenames
182
- ? { attachmentFilenames: parsed.attachmentFilenames }
183
- : {}),
184
- };
185
- }
186
- async function collectMessageAttachments(client, uid, messageId, sizeLimit) {
187
- const fetched = await client.fetchOne(uid, BODY_STRUCTURE_QUERY, { uid: true });
188
- const structure = fetched === false ? undefined : fetched.bodyStructure;
189
- if (!structure || typeof structure !== 'object') {
190
- return [];
191
- }
192
- const out = [];
193
- for (const part of flattenAttachmentParts(structure)) {
194
- const meta = {
195
- filename: part.filename,
196
- contentType: part.contentType,
197
- size: part.size,
198
- uid,
199
- ...(messageId !== undefined ? { messageId } : {}),
200
- partId: part.partId,
201
- };
202
- if (part.size > sizeLimit) {
203
- out.push({ ...meta, skipped: true });
204
- continue;
205
- }
206
- const download = await client.download(uid, part.partId, { uid: true });
207
- const bytes = await readDownloadBytes(download);
208
- out.push({ ...meta, base64: bytes.toString('base64') });
209
- }
210
- return out;
211
- }
212
- async function collectMessagesWithBody(client, range, opts) {
213
- const messages = [];
214
- const attachments = [];
215
- for await (const msg of client.fetch(range, FETCH_QUERY, { uid: true })) {
216
- const env = toMessageEnvelope(msg);
217
- const body = opts.includeBody
218
- ? toMessageBody(await downloadAndParseSource(client, env.uid))
219
- : {};
220
- messages.push({ ...env, ...body });
221
- if (opts.includeAttachments) {
222
- attachments.push(...(await collectMessageAttachments(client, env.uid, env.messageId, opts.attachmentSizeLimit)));
223
- }
224
- }
225
- return { messages, attachments };
226
- }
227
- export async function fetchSinceMarker(client, params) {
228
- const criteriaHash = hashCriteria(params.criteria);
229
- const lock = await client.getMailboxLock(params.mailbox);
230
- try {
231
- const uidValidity = mailboxUidValidity(client);
232
- if (params.expectedUidValidity !== undefined &&
233
- params.expectedUidValidity !== uidValidity) {
234
- return {
235
- mailbox: params.mailbox,
236
- uidValidity,
237
- criteriaHash,
238
- markerReset: true,
239
- messages: [],
240
- highestUidSeen: '',
241
- };
242
- }
243
- const search = buildSearchObject(params.criteria);
244
- search['uid'] = `${params.sinceUid + 1}:*`;
245
- const found = await client.search(search, { uid: true });
246
- const uids = (found === false ? [] : found).slice(0, params.limit);
247
- if (uids.length === 0) {
248
- return {
249
- mailbox: params.mailbox,
250
- uidValidity,
251
- criteriaHash,
252
- markerReset: false,
253
- messages: [],
254
- highestUidSeen: '',
255
- };
256
- }
257
- const { messages, attachments } = await collectMessagesWithBody(client, uids.join(','), params.body);
258
- const highestUid = uids.reduce((max, uid) => (uid > max ? uid : max), 0);
259
- return {
260
- mailbox: params.mailbox,
261
- uidValidity,
262
- criteriaHash,
263
- markerReset: false,
264
- messages,
265
- highestUidSeen: highestUid > 0 ? String(highestUid) : '',
266
- ...(params.body.includeAttachments ? { attachments } : {}),
267
- };
268
- }
269
- finally {
270
- lock.release();
271
- }
272
- }
273
- export async function fetchByUid(client, params) {
274
- const lock = await client.getMailboxLock(params.mailbox);
275
- try {
276
- const uidValidity = mailboxUidValidity(client);
277
- if (params.expectedUidValidity !== undefined &&
278
- params.expectedUidValidity !== uidValidity) {
279
- return { kind: 'uidvalidity-changed', uidValidity };
280
- }
281
- const fetched = await client.fetchOne(params.uid, FETCH_QUERY, { uid: true });
282
- if (fetched === false) {
283
- return { kind: 'not-found' };
284
- }
285
- const env = toMessageEnvelope(fetched);
286
- const parsed = await downloadAndParseSource(client, env.uid);
287
- if (params.markSeen) {
288
- await client.messageFlagsAdd(params.uid, ['\\Seen'], { uid: true });
289
- }
290
- const attachments = params.includeAttachments
291
- ? await collectMessageAttachments(client, env.uid, env.messageId, params.attachmentSizeLimit)
292
- : undefined;
293
- return {
294
- kind: 'message',
295
- message: {
296
- ...env,
297
- ...toMessageBody(parsed),
298
- uidValidity,
299
- ...(parsed.references ? { references: parsed.references } : {}),
300
- ...(attachments ? { attachments } : {}),
301
- },
302
- };
303
- }
304
- finally {
305
- lock.release();
306
- }
307
- }
308
- export async function searchEmails(client, params) {
309
- const lock = await client.getMailboxLock(params.mailbox);
310
- try {
311
- const uidValidity = mailboxUidValidity(client);
312
- const found = await client.search(buildSearchObject(params.criteria), {
313
- uid: true,
314
- });
315
- const uids = found === false ? [] : found;
316
- const ordered = params.sort === 'newest' ? [...uids].reverse() : uids;
317
- const sliced = ordered.slice(0, params.limit);
318
- const results = sliced.length === 0 ? [] : await collectEnvelopes(client, sliced.join(','));
319
- return { mailbox: params.mailbox, uidValidity, results };
320
- }
321
- finally {
322
- lock.release();
323
- }
324
- }
325
- export async function markMessages(client, params) {
326
- const lock = await client.getMailboxLock(params.mailbox);
327
- try {
328
- const marked = await client.messageFlagsAdd(params.uid, params.flags, {
329
- uid: true,
330
- });
331
- return { mailbox: params.mailbox, uid: params.uid, flags: params.flags, marked };
332
- }
333
- finally {
334
- lock.release();
335
- }
336
- }
337
- async function withClient(factory, config, run, signal) {
338
- const client = factory(config);
339
- const stop = () => client.close();
340
- signal?.addEventListener('abort', stop, { once: true });
341
- try {
342
- signal?.throwIfAborted();
343
- await client.connect();
344
- return ok(await run(client));
345
- }
346
- catch (cause) {
347
- if (signal?.aborted === true) {
348
- throw signal.reason;
349
- }
350
- return err(adapterError(cause instanceof MailDialRefusedError ? 'rejected-before-dispatch' : 'upstream-unavailable', `imap failed: ${cause instanceof Error ? cause.message : String(cause)}`));
351
- }
352
- finally {
353
- signal?.removeEventListener('abort', stop);
354
- void client.logout().catch(() => undefined);
355
- }
356
- }
357
- const CRITERIA_SCHEMA = {
358
- type: 'object',
359
- properties: {
360
- unseen: { type: 'boolean' },
361
- flagged: { type: 'boolean' },
362
- since: { type: 'string', minLength: 1 },
363
- before: { type: 'string', minLength: 1 },
364
- from: { type: 'string', minLength: 1 },
365
- to: { type: 'string', minLength: 1 },
366
- subject: { type: 'string', minLength: 1 },
367
- body: { type: 'string', minLength: 1 },
368
- uid: { type: 'string', minLength: 1 },
369
- },
370
- };
371
- const SEARCH_CRITERIA_SCHEMA = { ...CRITERIA_SCHEMA, minProperties: 1 };
372
- const BODY_FETCH_SCHEMA_PROPS = {
373
- includeBody: {
374
- type: 'boolean',
375
- description: 'Parse text/html bodies + attachment filenames (default true).',
376
- },
377
- includeAttachments: {
378
- type: 'boolean',
379
- description: 'Return attachment bytes (base64) under attachments[] (default false).',
380
- },
381
- attachmentSizeLimit: {
382
- type: 'number',
383
- description: 'Per-attachment byte cap; oversize parts are flagged skipped, never dropped.',
384
- },
385
- };
386
- export function makeFetchAction(factory) {
387
- return {
388
- action: IMAP_FETCH_ACTION,
389
- schema: {
390
- type: 'object',
391
- properties: {
392
- mailbox: { type: 'string', description: 'IMAP mailbox (default INBOX).' },
393
- criteria: CRITERIA_SCHEMA,
394
- limit: { type: 'number' },
395
- sinceUid: { type: 'number', description: 'Fetch UIDs greater than this cursor.' },
396
- expectedUidValidity: {
397
- type: 'string',
398
- description: 'Prior UIDVALIDITY — a mismatch returns markerReset.',
399
- },
400
- ...BODY_FETCH_SCHEMA_PROPS,
401
- },
402
- required: [],
403
- },
404
- execute(input) {
405
- const config = readImapTransportConfig(input.credential.providerHints);
406
- if (!config.ok) {
407
- return Promise.resolve(err(adapterError('rejected-before-dispatch', config.message)));
408
- }
409
- const params = input.params;
410
- const sinceRaw = params['sinceUid'];
411
- const sinceUid = typeof sinceRaw === 'number' && Number.isFinite(sinceRaw) && sinceRaw > 0
412
- ? Math.floor(sinceRaw)
413
- : 0;
414
- const expectedUidValidity = typeof params['expectedUidValidity'] === 'string'
415
- ? params['expectedUidValidity']
416
- : undefined;
417
- return withClient(factory, config.config, (client) => fetchSinceMarker(client, {
418
- mailbox: readMailbox(params),
419
- criteria: readCriteria(params['criteria']),
420
- limit: clampLimit(params['limit']),
421
- sinceUid,
422
- ...(expectedUidValidity !== undefined ? { expectedUidValidity } : {}),
423
- body: readBodyFetchOptions(params),
424
- }), input.signal).then((result) => result.ok
425
- ? ok({ outputs: result.value })
426
- : result);
427
- },
428
- };
429
- }
430
- export function makeFetchByUidAction(factory) {
431
- return {
432
- action: IMAP_FETCH_BY_UID_ACTION,
433
- schema: {
434
- type: 'object',
435
- properties: {
436
- mailbox: { type: 'string' },
437
- uid: { type: 'string', minLength: 1, description: 'The single UID to fetch.' },
438
- expectedUidValidity: {
439
- type: 'string',
440
- description: 'Prior UIDVALIDITY — a mismatch fails fast (message is stale).',
441
- },
442
- markSeen: { type: 'boolean', description: 'Add \\Seen after a successful read.' },
443
- includeAttachments: BODY_FETCH_SCHEMA_PROPS.includeAttachments,
444
- attachmentSizeLimit: BODY_FETCH_SCHEMA_PROPS.attachmentSizeLimit,
445
- },
446
- required: ['uid'],
447
- },
448
- execute(input) {
449
- const config = readImapTransportConfig(input.credential.providerHints);
450
- if (!config.ok) {
451
- return Promise.resolve(err(adapterError('rejected-before-dispatch', config.message)));
452
- }
453
- const params = input.params;
454
- const uid = params['uid'];
455
- const expectedUidValidity = typeof params['expectedUidValidity'] === 'string'
456
- ? params['expectedUidValidity']
457
- : undefined;
458
- return withClient(factory, config.config, (client) => fetchByUid(client, {
459
- mailbox: readMailbox(params),
460
- uid,
461
- ...(expectedUidValidity !== undefined ? { expectedUidValidity } : {}),
462
- markSeen: params['markSeen'] === true,
463
- includeAttachments: params['includeAttachments'] === true,
464
- attachmentSizeLimit: clampAttachmentSizeLimit(params['attachmentSizeLimit']),
465
- }), input.signal).then((result) => {
466
- if (!result.ok) {
467
- return result;
468
- }
469
- const outcome = result.value;
470
- switch (outcome.kind) {
471
- case 'message':
472
- return ok({
473
- externalId: outcome.message.uid,
474
- outputs: outcome.message,
475
- });
476
- case 'uidvalidity-changed':
477
- return err(adapterError('not-found', `imap fetch-by-uid: UIDVALIDITY changed (server=${outcome.uidValidity}) — the UID is stale, re-run search`));
478
- case 'not-found':
479
- return err(adapterError('not-found', `imap fetch-by-uid: UID ${uid} not found`));
480
- }
481
- });
482
- },
483
- };
484
- }
485
- export function makeSearchAction(factory) {
486
- return {
487
- action: IMAP_SEARCH_ACTION,
488
- schema: {
489
- type: 'object',
490
- properties: {
491
- mailbox: { type: 'string' },
492
- criteria: SEARCH_CRITERIA_SCHEMA,
493
- limit: { type: 'number' },
494
- sort: { type: 'string', enum: ['oldest', 'newest'] },
495
- },
496
- required: ['criteria'],
497
- },
498
- execute(input) {
499
- const config = readImapTransportConfig(input.credential.providerHints);
500
- if (!config.ok) {
501
- return Promise.resolve(err(adapterError('rejected-before-dispatch', config.message)));
502
- }
503
- const params = input.params;
504
- const criteria = readCriteria(params['criteria']);
505
- const sortParam = params['sort'] ?? 'newest';
506
- if (sortParam !== 'oldest' && sortParam !== 'newest') {
507
- return Promise.resolve(err(adapterError('rejected-before-dispatch', 'Param "sort" is not one of the declared values.')));
508
- }
509
- const sort = sortParam;
510
- return withClient(factory, config.config, (client) => searchEmails(client, {
511
- mailbox: readMailbox(params),
512
- criteria,
513
- limit: clampLimit(params['limit']),
514
- sort,
515
- }), input.signal).then((result) => result.ok
516
- ? ok({ outputs: result.value })
517
- : result);
518
- },
519
- };
520
- }
521
- export function makeMarkAction(factory) {
522
- return {
523
- action: IMAP_MARK_ACTION,
524
- schema: {
525
- type: 'object',
526
- properties: {
527
- mailbox: { type: 'string' },
528
- uid: {
529
- type: 'string',
530
- minLength: 1,
531
- description: 'UID or UID range (e.g. "12" or "12:20").',
532
- },
533
- flags: { type: 'array', minItems: 1, items: { type: 'string', minLength: 1 } },
534
- },
535
- required: ['uid'],
536
- },
537
- execute(input) {
538
- const config = readImapTransportConfig(input.credential.providerHints);
539
- if (!config.ok) {
540
- return Promise.resolve(err(adapterError('rejected-before-dispatch', config.message)));
541
- }
542
- const params = input.params;
543
- const uid = params['uid'];
544
- const flags = params['flags'] ?? ['\\Seen'];
545
- return withClient(factory, config.config, (client) => markMessages(client, { mailbox: readMailbox(params), uid, flags }), input.signal).then((result) => result.ok
546
- ? ok({
547
- externalId: uid,
548
- outputs: result.value,
549
- })
550
- : result);
551
- },
552
- };
553
- }
554
- //# sourceMappingURL=imap-fetch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"imap-fetch.js","sourceRoot":"","sources":["../../src/connector-adapters/imap-fetch.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"imap-message-parts.d.ts","sourceRoot":"","sources":["../../src/connector-adapters/imap-message-parts.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,6BAA6B,QAAkB,CAAC;AAQ7D,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQ/D;AAGD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClD;AAGD,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAUD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAGD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,qBAAqB,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,QAAQ,CAAC,UAAU,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;CAC/C;AAGD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAOD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,YAAY,EAClB,QAAQ,SAAK,GACZ,cAAc,EAAE,CAwBlB;AAwBD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAwCtD;AAOD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAYnE;AAGD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAOrD"}