@framers/agentos-ext-gmail-source 0.5.1 → 0.6.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,8 +1,9 @@
1
1
  /**
2
- * @fileoverview Deterministic pre-storage sanitization of mail text: address tokens, credential assignments, known
3
- * credential shapes, private-key blocks and long mixed tokens are replaced with fixed marks, and a final gate
4
- * suppresses any line that still carries a credential cue. Every count is a number; no matched value, offset or
5
- * reverse mapping is kept, nothing is logged and no model or network is called.
2
+ * @fileoverview Deterministic pre-storage sanitization of mail text: once percent and character references are decoded
3
+ * and padding collapsed, address tokens, credential assignments, known credential shapes, private-key blocks and long
4
+ * mixed tokens are replaced with fixed marks, and a final gate suppresses any line that still carries a credential
5
+ * cue. Every count is a number; no matched value, offset or reverse mapping is kept, nothing is logged and no model or
6
+ * network is called.
6
7
  * @module agentos-ext-gmail-source/mailSanitize
7
8
  */
8
9
  /**
@@ -59,13 +60,18 @@ export declare class GmailTextFault extends Error {
59
60
  /**
60
61
  * Pure pre-storage transformation. It never records matched values or invokes a model.
61
62
  *
62
- * Decodes repeated percent and character-reference encoding (at most four passes), normalizes Unicode and line breaks,
63
- * then works line by line: private-key blocks, credential assignments and authenticated URLs are replaced, credential
64
- * shapes and long mixed tokens become `[secret removed]`, address tokens become `[address removed]`, and a line with
65
- * unresolved encoded bytes or character references, above the line cap or still carrying a credential cue becomes
66
- * `[line removed by the secret gate]`. An assignment with an empty value, a block scalar or an unclosed quote also
67
- * suppresses the rest of the text. A replaced assignment and a line the final gate suppresses keep their quote markers
68
- * (`>`). The complete input is checked before the output cap clips the result.
63
+ * Decodes repeated percent and character-reference encoding (at most four passes, every named reference of the HTML
64
+ * standard among them), collapses padding, normalizes Unicode and line breaks, then works line by line: private-key
65
+ * blocks, credential assignments and authenticated URLs are replaced, credential shapes and long mixed tokens become
66
+ * `[secret removed]`, address tokens become `[address removed]`, and a line with unresolved encoded bytes or
67
+ * character references, above the line cap or still carrying a credential cue becomes
68
+ * `[line removed by the secret gate]`. Padding is a run of spaces and invisible characters that holds anything other
69
+ * than ASCII spaces and tabs, such as the no-break spaces and zero-width non-joiners mail templates repeat after a
70
+ * preheader: it becomes one space, or nothing when it holds no space at all, so zero-width characters between letters
71
+ * join them, and nothing when it holds an invisible character and ends a line. A run of ASCII spaces and tabs alone
72
+ * stays as written. An assignment with an empty value, a block scalar
73
+ * or an unclosed quote also suppresses the rest of the text. A replaced assignment and a line the final gate
74
+ * suppresses keep their quote markers (`>`). The complete input is checked before the output cap clips the result.
69
75
  *
70
76
  * @param input Decoded text: a body or one display field.
71
77
  * @param policy The input, line and output bounds.
@@ -74,7 +80,20 @@ export declare class GmailTextFault extends Error {
74
80
  */
75
81
  export declare function sanitizeMailText(input: string, policy: GmailTextPolicy): GmailSanitizedText;
76
82
  /**
77
- * Use for every filename, label name and display field, after MIME decoding. Applies the same rules as
83
+ * Whether decoded text holds nothing but whitespace once its percent and character references are decoded, its
84
+ * padding collapsed and its format and control characters removed, the steps `sanitizeMailText` takes before any
85
+ * other. A MIME reader uses it to pass over an alternative whose text would sanitize away, such as a plain part of
86
+ * ` ` and `​` beside the HTML that holds the message.
87
+ *
88
+ * @param input Decoded text: one MIME part's body.
89
+ * @param maxInputCharacters The sanitizer's input cap. Text above it, before or after decoding, is not blank: the
90
+ * sanitizer refuses it rather than emptying it.
91
+ * @returns True when nothing but whitespace is left.
92
+ */
93
+ export declare function blankMailText(input: string, maxInputCharacters: number): boolean;
94
+ /**
95
+ * Use for every filename, label name and display field: a header value or filename after MIME decoding, and a label
96
+ * name as the labels response gives it, since that JSON text is never MIME encoded. Applies the same rules as
78
97
  * `sanitizeMailText` to the complete value, folds each whitespace run to one space and trims, then applies the
79
98
  * output cap.
80
99
  *
@@ -1 +1 @@
1
- {"version":3,"file":"mailSanitize.d.ts","sourceRoot":"","sources":["../src/mailSanitize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,sHAAsH;IACtH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,+FAA+F;IAC/F,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,iGAAiG;IACjG,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AACD,iHAAiH;AACjH,MAAM,WAAW,kBAAkB;IACjC,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,6GAA6G;IAC7G,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,iEAAiE;IACjE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,2CAA2C;IAC3C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AACD,6FAA6F;AAC7F,MAAM,WAAW,gBAAgB;IAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACnF,2FAA2F;AAC3F,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AACD,sGAAsG;AACtG,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,iBAAiB,CAAC;AACnE,yGAAyG;AACzG,qBAAa,cAAe,SAAQ,KAAK;IAE3B,QAAQ,CAAC,MAAM,EAAE,gBAAgB;IAD7C,sDAAsD;gBACjC,MAAM,EAAE,gBAAgB;CAG9C;AA4FD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,kBAAkB,CA2C3F;AACD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,kBAAkB,CAM/F;AACD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,EAAE,MAAM,EAAE,eAAe,GAAG,qBAAqB,CAsBxH"}
1
+ {"version":3,"file":"mailSanitize.d.ts","sourceRoot":"","sources":["../src/mailSanitize.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,sHAAsH;IACtH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,+FAA+F;IAC/F,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,iGAAiG;IACjG,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AACD,iHAAiH;AACjH,MAAM,WAAW,kBAAkB;IACjC,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,6GAA6G;IAC7G,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,iEAAiE;IACjE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,2CAA2C;IAC3C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AACD,6FAA6F;AAC7F,MAAM,WAAW,gBAAgB;IAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACnF,2FAA2F;AAC3F,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AACD,sGAAsG;AACtG,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,iBAAiB,CAAC;AACnE,yGAAyG;AACzG,qBAAa,cAAe,SAAQ,KAAK;IAE3B,QAAQ,CAAC,MAAM,EAAE,gBAAgB;IAD7C,sDAAsD;gBACjC,MAAM,EAAE,gBAAgB;CAG9C;AAgFD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,kBAAkB,CA2C3F;AACD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAGhF;AACD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,kBAAkB,CAM/F;AACD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,EAAE,MAAM,EAAE,eAAe,GAAG,qBAAqB,CAsBxH"}
@@ -1,10 +1,12 @@
1
1
  /**
2
- * @fileoverview Deterministic pre-storage sanitization of mail text: address tokens, credential assignments, known
3
- * credential shapes, private-key blocks and long mixed tokens are replaced with fixed marks, and a final gate
4
- * suppresses any line that still carries a credential cue. Every count is a number; no matched value, offset or
5
- * reverse mapping is kept, nothing is logged and no model or network is called.
2
+ * @fileoverview Deterministic pre-storage sanitization of mail text: once percent and character references are decoded
3
+ * and padding collapsed, address tokens, credential assignments, known credential shapes, private-key blocks and long
4
+ * mixed tokens are replaced with fixed marks, and a final gate suppresses any line that still carries a credential
5
+ * cue. Every count is a number; no matched value, offset or reverse mapping is kept, nothing is logged and no model or
6
+ * network is called.
6
7
  * @module agentos-ext-gmail-source/mailSanitize
7
8
  */
9
+ import { collapsePadding, decodeCharacterReferences, holdsNamedReference } from './characters.js';
8
10
  /** A text helper's fixed refusal; its message is `gmail_text_<reason>` and never carries source text. */
9
11
  export class GmailTextFault extends Error {
10
12
  reason;
@@ -18,13 +20,6 @@ export class GmailTextFault extends Error {
18
20
  const addressMark = '[address removed]';
19
21
  const secretMark = '[secret removed]';
20
22
  const lineMark = '[line removed by the secret gate]';
21
- // Named character references decoded during canonicalization; any other name stays as written.
22
- const namedEntities = Object.freeze({
23
- amp: '&', lt: '<', gt: '>', quot: '"', apos: "'", commat: '@', period: '.',
24
- colon: ':', sol: '/', bsol: '\\', equals: '=', percnt: '%', num: '#',
25
- lowbar: '_', hyphen: '-', semi: ';', plus: '+', quest: '?', nbsp: ' ',
26
- Tab: '\t', NewLine: '\n',
27
- });
28
23
  // Credential shapes replaced in place. They are a conservative policy, not a claim about every provider's format. A
29
24
  // prefix right after a letter or digit is part of a word (`risk-adjusted`), not a credential. A JWT is matched only
30
25
  // from the start of its run of token characters, so a long `-` joined run cannot make the scan quadratic.
@@ -48,10 +43,9 @@ const assignment = /(?:(?<![a-z0-9])(?:pass|pwd|pw|authorization|cookie|set-cook
48
43
  const residual = /(?:(?<![a-z0-9])(?:bearer|ssh-(?:rsa|ed25519)|sshpass)|pass(?:word|wd|phrase)s?|api[ _-]?(?:key|token)|access[ _-]?token|refresh[ _-]?token|client[ _-]?secret|private[ _-]?key)(?![a-z0-9])/i;
49
44
  const beginKey = /-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----/;
50
45
  const endKey = /-----END [A-Z0-9 ]*PRIVATE KEY-----/;
51
- // Encoded bytes still present after the bounded decoding passes.
46
+ // Encoded bytes still present after the bounded decoding passes. A named reference the decoder knows, still present
47
+ // after them, means the text was nested deeper than four levels; `holdsNamedReference` finds it.
52
48
  const unresolved = /%[0-9a-f]{2}|&#(?:x[0-9a-f]+|[0-9]+);?/i;
53
- // A named reference the decoder knows, still present after the passes: the text was nested deeper than four levels.
54
- const unresolvedName = new RegExp(`&(?:${Object.keys(namedEntities).join('|')});`);
55
49
  function validate(policy) {
56
50
  for (const value of [policy.maxInputCharacters, policy.maxLineCharacters, policy.maxOutputCharacters]) {
57
51
  if (!Number.isSafeInteger(value) || value < 1)
@@ -61,32 +55,27 @@ function validate(policy) {
61
55
  || policy.maxOutputCharacters > policy.maxInputCharacters)
62
56
  throw new GmailTextFault('configuration');
63
57
  }
64
- // At most four passes of percent and character-reference decoding, Unicode compatibility normalization, line-break
65
- // unification and removal of format and control characters. The cap is checked before decoding and again after each
66
- // pass, since normalization can lengthen text.
58
+ // At most four passes of percent and character-reference decoding (every named reference of the HTML standard), the
59
+ // collapse of padding runs, Unicode compatibility normalization, line-break unification and removal of format and
60
+ // control characters and the combining grapheme joiner. Padding collapses before normalization, which would turn a
61
+ // no-break space into an ASCII one. The cap is checked before decoding and again after each pass, since normalization
62
+ // can lengthen text.
67
63
  function canonical(input, limit) {
68
64
  if (input.length > limit)
69
65
  throw new GmailTextFault('input_too_large');
70
66
  let text = input;
71
67
  for (let pass = 0; pass < 4; pass++) {
72
68
  const previous = text;
73
- text = text.replace(/(?:%[0-9a-f]{2})+/gi, (run) => {
69
+ text = decodeCharacterReferences(text.replace(/(?:%[0-9a-f]{2})+/gi, (run) => {
74
70
  try {
75
71
  return decodeURIComponent(run);
76
72
  }
77
73
  catch {
78
74
  return run;
79
75
  }
80
- }).replace(/&(#x[0-9a-f]+|#[0-9]+|[a-z][a-z0-9]+);/gi, (whole, entity) => {
81
- if (!entity.startsWith('#'))
82
- return namedEntities[entity] ?? whole;
83
- const hex = entity[1]?.toLowerCase() === 'x';
84
- const point = Number.parseInt(entity.slice(hex ? 2 : 1), hex ? 16 : 10);
85
- return Number.isSafeInteger(point) && point >= 0 && point <= 0x10ffff
86
- && !(point >= 0xd800 && point <= 0xdfff) ? String.fromCodePoint(point) : whole;
87
- });
88
- text = text.normalize('NFKC').replace(/\r\n?/g, '\n').replace(/[\u2028\u2029]/g, '\n')
89
- .replace(/\p{Cf}/gu, '').replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\x9f]/g, '');
76
+ }));
77
+ text = collapsePadding(text).normalize('NFKC').replace(/\r\n?/g, '\n').replace(/[\u2028\u2029]/g, '\n')
78
+ .replace(/[\p{Cf}\u034f]/gu, '').replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\x9f]/g, '');
90
79
  if (text.length > limit)
91
80
  throw new GmailTextFault('input_too_large');
92
81
  if (text === previous)
@@ -122,13 +111,18 @@ function containsAuthenticatedUrl(line) {
122
111
  /**
123
112
  * Pure pre-storage transformation. It never records matched values or invokes a model.
124
113
  *
125
- * Decodes repeated percent and character-reference encoding (at most four passes), normalizes Unicode and line breaks,
126
- * then works line by line: private-key blocks, credential assignments and authenticated URLs are replaced, credential
127
- * shapes and long mixed tokens become `[secret removed]`, address tokens become `[address removed]`, and a line with
128
- * unresolved encoded bytes or character references, above the line cap or still carrying a credential cue becomes
129
- * `[line removed by the secret gate]`. An assignment with an empty value, a block scalar or an unclosed quote also
130
- * suppresses the rest of the text. A replaced assignment and a line the final gate suppresses keep their quote markers
131
- * (`>`). The complete input is checked before the output cap clips the result.
114
+ * Decodes repeated percent and character-reference encoding (at most four passes, every named reference of the HTML
115
+ * standard among them), collapses padding, normalizes Unicode and line breaks, then works line by line: private-key
116
+ * blocks, credential assignments and authenticated URLs are replaced, credential shapes and long mixed tokens become
117
+ * `[secret removed]`, address tokens become `[address removed]`, and a line with unresolved encoded bytes or
118
+ * character references, above the line cap or still carrying a credential cue becomes
119
+ * `[line removed by the secret gate]`. Padding is a run of spaces and invisible characters that holds anything other
120
+ * than ASCII spaces and tabs, such as the no-break spaces and zero-width non-joiners mail templates repeat after a
121
+ * preheader: it becomes one space, or nothing when it holds no space at all, so zero-width characters between letters
122
+ * join them, and nothing when it holds an invisible character and ends a line. A run of ASCII spaces and tabs alone
123
+ * stays as written. An assignment with an empty value, a block scalar
124
+ * or an unclosed quote also suppresses the rest of the text. A replaced assignment and a line the final gate
125
+ * suppresses keep their quote markers (`>`). The complete input is checked before the output cap clips the result.
132
126
  *
133
127
  * @param input Decoded text: a body or one display field.
134
128
  * @param policy The input, line and output bounds.
@@ -157,7 +151,7 @@ export function sanitizeMailText(input, policy) {
157
151
  lines.push(secretMark);
158
152
  continue;
159
153
  }
160
- if (raw.length > policy.maxLineCharacters || unresolved.test(raw) || unresolvedName.test(raw)) {
154
+ if (raw.length > policy.maxLineCharacters || unresolved.test(raw) || holdsNamedReference(raw)) {
161
155
  suppressedLines++;
162
156
  lines.push(lineMark);
163
157
  continue;
@@ -199,7 +193,29 @@ export function sanitizeMailText(input, policy) {
199
193
  return { text, addressRedactions, secretRedactions, suppressedLines, truncated: text.length < complete.length };
200
194
  }
201
195
  /**
202
- * Use for every filename, label name and display field, after MIME decoding. Applies the same rules as
196
+ * Whether decoded text holds nothing but whitespace once its percent and character references are decoded, its
197
+ * padding collapsed and its format and control characters removed, the steps `sanitizeMailText` takes before any
198
+ * other. A MIME reader uses it to pass over an alternative whose text would sanitize away, such as a plain part of
199
+ * `&nbsp;` and `&#8203;` beside the HTML that holds the message.
200
+ *
201
+ * @param input Decoded text: one MIME part's body.
202
+ * @param maxInputCharacters The sanitizer's input cap. Text above it, before or after decoding, is not blank: the
203
+ * sanitizer refuses it rather than emptying it.
204
+ * @returns True when nothing but whitespace is left.
205
+ */
206
+ export function blankMailText(input, maxInputCharacters) {
207
+ try {
208
+ return canonical(input, maxInputCharacters).trim().length === 0;
209
+ }
210
+ catch (error) {
211
+ if (error instanceof GmailTextFault)
212
+ return false;
213
+ throw error;
214
+ }
215
+ }
216
+ /**
217
+ * Use for every filename, label name and display field: a header value or filename after MIME decoding, and a label
218
+ * name as the labels response gives it, since that JSON text is never MIME encoded. Applies the same rules as
203
219
  * `sanitizeMailText` to the complete value, folds each whitespace run to one space and trims, then applies the
204
220
  * output cap.
205
221
  *
@@ -1 +1 @@
1
- {"version":3,"file":"mailSanitize.js","sourceRoot":"","sources":["../src/mailSanitize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mailSanitize.js","sourceRoot":"","sources":["../src/mailSanitize.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AA4ClG,yGAAyG;AACzG,MAAM,OAAO,cAAe,SAAQ,KAAK;IAElB;IADrB,sDAAsD;IACtD,YAAqB,MAAwB;QAC3C,KAAK,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC;QADX,WAAM,GAAN,MAAM,CAAkB;QACZ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC9D,CAAC;CACF;AAED,MAAM,WAAW,GAAG,mBAAmB,CAAC;AACxC,MAAM,UAAU,GAAG,kBAAkB,CAAC;AACtC,MAAM,QAAQ,GAAG,mCAAmC,CAAC;AACrD,oHAAoH;AACpH,oHAAoH;AACpH,0GAA0G;AAC1G,MAAM,YAAY,GAAsB;IACtC,MAAM,CAAC,GAAG,CAAA,6HAA6H;IACvI,MAAM,CAAC,GAAG,CAAA,+BAA+B;IACzC,MAAM,CAAC,GAAG,CAAA,qBAAqB;IAC/B,MAAM,CAAC,GAAG,CAAA,0BAA0B;IACpC,MAAM,CAAC,GAAG,CAAA,wCAAwC;IAClD,MAAM,CAAC,GAAG,CAAA,wCAAwC;IAClD,MAAM,CAAC,GAAG,CAAA,gFAAgF;CAC3F,CAAC;AACF,oHAAoH;AACpH,oHAAoH;AACpH,uHAAuH;AACvH,4EAA4E;AAC5E,MAAM,UAAU,GAAG,8UAA8U,CAAC;AAClW,mHAAmH;AACnH,sHAAsH;AACtH,+GAA+G;AAC/G,MAAM,QAAQ,GAAG,+LAA+L,CAAC;AACjN,MAAM,QAAQ,GAAG,uCAAuC,CAAC;AACzD,MAAM,MAAM,GAAG,qCAAqC,CAAC;AACrD,oHAAoH;AACpH,iGAAiG;AACjG,MAAM,UAAU,GAAG,yCAAyC,CAAC;AAE7D,SAAS,QAAQ,CAAC,MAAuB;IACvC,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACtG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAAE,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,MAAM,CAAC,kBAAkB,GAAG,SAAS,IAAI,MAAM,CAAC,iBAAiB,GAAG,MAAM;WACzE,MAAM,CAAC,mBAAmB,GAAG,MAAM,CAAC,kBAAkB;QAAE,MAAM,IAAI,cAAc,CAAC,eAAe,CAAC,CAAC;AACzG,CAAC;AACD,oHAAoH;AACpH,kHAAkH;AAClH,mHAAmH;AACnH,sHAAsH;AACtH,qBAAqB;AACrB,SAAS,SAAS,CAAC,KAAa,EAAE,KAAa;IAC7C,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK;QAAE,MAAM,IAAI,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACtE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC;QACtB,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,EAAE;YAC3E,IAAI,CAAC;gBAAC,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,GAAG,CAAC;YAAC,CAAC;QAC/D,CAAC,CAAC,CAAC,CAAC;QACJ,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC;aACpG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;QACzF,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK;YAAE,MAAM,IAAI,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACrE,IAAI,IAAI,KAAK,QAAQ;YAAE,MAAM;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AACD,sEAAsE;AACtE,SAAS,OAAO,CAAC,IAAY,EAAE,OAAe;IAC5C,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAE,CAAC;WACrE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC;QAAE,GAAG,EAAE,CAAC;IAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AACD,qHAAqH;AACrH,sHAAsH;AACtH,wBAAwB;AACxB,SAAS,wBAAwB,CAAC,IAAY;IAC5C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,2CAA2C,CAAC,EAAE,CAAC;QAC/E,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AACD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,MAAuB;IACrE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjB,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC/D,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAAC,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAAC,IAAI,eAAe,GAAG,CAAC,CAAC;IAC7E,IAAI,SAAS,GAAG,KAAK,CAAC;IAAC,IAAI,cAAc,GAAG,KAAK,CAAC;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAAC,IAAI,cAAc,EAAE,CAAC;YAAC,eAAe,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACpH,IAAI,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS;gBAAE,gBAAgB,EAAE,CAAC;YACnC,SAAS,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAAC,SAAS;QACnC,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,iBAAiB,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9F,eAAe,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAAC,SAAS;QACpD,CAAC;QACD,8EAA8E;QAC9E,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5D,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9F,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAAC,cAAc,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAC,gBAAgB,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC;YAAC,SAAS;QACpV,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,gBAAgB,EAAE,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACjG,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,KAAK,EAAE,EAAE;YACtD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpF,gBAAgB,EAAE,CAAC;gBAAC,OAAO,UAAU,CAAC;YACxC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,mCAAmC,EACrD,GAAG,EAAE,GAAG,iBAAiB,EAAE,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EACxC,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACnG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3E,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACvD,eAAe,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;YAAC,SAAS;QAC5D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC3D,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;AAClH,CAAC;AACD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,kBAA0B;IACrE,IAAI,CAAC;QAAC,OAAO,SAAS,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;IAAC,CAAC;IACxE,OAAO,KAAK,EAAE,CAAC;QAAC,IAAI,KAAK,YAAY,cAAc;YAAE,OAAO,KAAK,CAAC;QAAC,MAAM,KAAK,CAAC;IAAC,CAAC;AACnF,CAAC;AACD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,MAAuB;IACzE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjB,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACpG,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC3D,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;AACvF,CAAC;AACD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAoC,EAAE,MAAuB;IAC/F,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI;QAAE,MAAM,IAAI,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACvE,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QACvD,IAAI,UAAU,GAAG,MAAM,CAAC,kBAAkB;YAAE,MAAM,IAAI,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACxF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,SAAS;QACtE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,MAAe,EAAE,OAAe,EAAU,EAAE;QACvE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,OAAO,oBAAoB,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;IAC3H,CAAC,CAAC;IACF,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;QACrE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;KAC7F,CAAC;AACJ,CAAC"}
@@ -1,5 +1,16 @@
1
1
  import { type SourceCachePermission, type SourceCacheHeaders, type SourceCacheDecision, type SourceSyncReadResult } from '@framers/agentos-ext-account-sources';
2
2
  import { type GmailMappingBounds } from './mime.js';
3
+ /** A Gmail inbox tab beside Primary, by its `category:` search name. */
4
+ export type GmailCategory = 'forums' | 'promotions' | 'social' | 'updates';
5
+ /** Every category a client or a mapper can leave out, in the order the scan query names them. */
6
+ export declare const GMAIL_CATEGORIES: readonly GmailCategory[];
7
+ /**
8
+ * The categories an `excludedCategories` option names, deduplicated and in `GMAIL_CATEGORIES` order: none for an
9
+ * undefined option, null when the value is not an array of category names.
10
+ */
11
+ export declare function gmailCategories(value: unknown): readonly GmailCategory[] | null;
12
+ /** The system labels of the given categories. */
13
+ export declare const categoryLabels: (categories: readonly GmailCategory[]) => ReadonlySet<string>;
3
14
  /** The per-read values of one `map` call. The host supplies every value; none comes from a browser request. */
4
15
  export interface GmailMapThreadOptions {
5
16
  /** The requested thread id; the response must carry the same id. */
@@ -24,12 +35,23 @@ export interface GmailMapThreadOptions {
24
35
  readonly permission: SourceCachePermission | null;
25
36
  /** The thread response's own cache headers. */
26
37
  readonly cacheHeaders: SourceCacheHeaders;
27
- /** Label names from the cycle's labels response, by label id. */
38
+ /**
39
+ * Label names from the cycle's labels response, by label id. They are text from a JSON body, not MIME header values:
40
+ * each is sanitized again and never decoded as RFC 2047 words, so a literal `=?` in a name stays as written. A run of
41
+ * encoded words in a name is decoded only to look inside, and one whose text holds an address or a credential is
42
+ * replaced by what the sanitizer leaves of it.
43
+ */
28
44
  readonly labelNames: Readonly<Record<string, string>>;
29
45
  /** The labels response's own cache decision. Null, a refusal or an expired decision keeps ids without names. */
30
46
  readonly labelCache: SourceCacheDecision | null;
31
47
  /** Cancels the call between steps. */
32
48
  readonly signal?: AbortSignal;
49
+ /**
50
+ * The inbox tabs whose messages are left out of the copy, by their `category:` names; none by default. A message
51
+ * carrying such a category's label (`CATEGORY_PROMOTIONS` for `promotions`, and so on) is omitted and counted under
52
+ * `excluded_category`.
53
+ */
54
+ readonly excludedCategories?: readonly GmailCategory[];
33
55
  }
34
56
  /**
35
57
  * Maps one parsed Gmail thread into a sanitized account-source document: one thread, one document, with each retained
@@ -49,9 +71,15 @@ export declare class GmailThreadMapper {
49
71
  * Validates the whole response, filters each message by its internal date and by the spam, trash and draft labels,
50
72
  * keeps the newest eligible messages up to the cap with ties broken by id, spends the thread's character budget
51
73
  * newest first and renders the kept messages oldest first. A message's text is its sanitized header prefix followed
52
- * by its sanitized, trimmed body, and its span covers the body alone. A message that cannot be read is counted under
53
- * `metadata.omitted` by a fixed reason. The cache expiry is the earliest of the permission's retention, the read start
54
- * plus `maximumCacheMs`, the response's cache headers, every kept message's window end and the label names' expiry.
74
+ * by its sanitized, trimmed body, cut to the message cap (or the thread cap when that is smaller) and never shorter:
75
+ * the first message whose text does not fit in what the thread budget has left, and every older one, is counted
76
+ * under `thread_limit` instead, so the text of a retained message never depends on the rest of its thread. Its span
77
+ * covers the body alone. A message that cannot be read is counted under `metadata.omitted` by a fixed reason. The
78
+ * cache expiry is the earliest of the permission's retention, the read start plus `maximumCacheMs`, the response's
79
+ * cache headers, every kept message's window end and the label names' expiry. The version is the history id and
80
+ * `contentHash`, the SHA-256 of the normalized text, metadata and spans: a release that normalizes text differently
81
+ * changes it for exactly the threads whose normalized text, metadata or spans change, so the store writes those
82
+ * copies again at their next read and keeps the rest.
55
83
  *
56
84
  * @param input The parsed `threads.get` response in the `full` format, from a transport that capped its bytes.
57
85
  * @param options The per-read values.
@@ -1 +1 @@
1
- {"version":3,"file":"mapThread.d.ts","sourceRoot":"","sources":["../src/mapThread.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EACjD,KAAK,oBAAoB,EACtD,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,WAAW,CAAC;AAOnB,+GAA+G;AAC/G,MAAM,WAAW,qBAAqB;IACpC,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,qHAAqH;IACrH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,gGAAgG;IAChG,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAClD,+CAA+C;IAC/C,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAC1C,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,gHAAgH;IAChH,QAAQ,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAChD,sCAAsC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAyCD;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C;;;OAGG;gBACS,MAAM,EAAE,kBAAkB;IAEtC,OAAO,CAAC,MAAM;YAKA,SAAS;IAyBvB;;;;;;;;;;;;;;;OAeG;IACG,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAmFzF"}
1
+ {"version":3,"file":"mapThread.d.ts","sourceRoot":"","sources":["../src/mapThread.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EACjD,KAAK,oBAAoB,EACtD,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,WAAW,CAAC;AAOnB,wEAAwE;AACxE,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC3E,iGAAiG;AACjG,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAA0E,CAAC;AAKhI;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,aAAa,EAAE,GAAG,IAAI,CAM/E;AACD,iDAAiD;AACjD,eAAO,MAAM,cAAc,eAAgB,SAAS,aAAa,EAAE,KAAG,YAAY,MAAM,CACtB,CAAC;AACnE,+GAA+G;AAC/G,MAAM,WAAW,qBAAqB;IACpC,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,qHAAqH;IACrH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,gGAAgG;IAChG,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAClD,+CAA+C;IAC/C,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAC1C;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,gHAAgH;IAChH,QAAQ,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAChD,sCAAsC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CACxD;AA0CD;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C;;;OAGG;gBACS,MAAM,EAAE,kBAAkB;IAEtC,OAAO,CAAC,MAAM;YAKA,SAAS;IAiCvB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA8FzF"}
package/dist/mapThread.js CHANGED
@@ -7,9 +7,31 @@
7
7
  */
8
8
  import { createHash } from 'node:crypto';
9
9
  import { decideSourceCache, SourceSyncFault, } from '@framers/agentos-ext-account-sources';
10
- import { GmailMappingFault, mappingBounds, mappingActive, gmailId, parseMimeThread, decodedHeaders, decodeMimeWords, mimeBody, } from './mime.js';
11
- import { GmailTextFault, sanitizeMailHeaders, sanitizeMailMetadata, } from './mailSanitize.js';
10
+ import { GmailMappingFault, mappingBounds, mappingActive, gmailId, parseMimeThread, decodedHeaders, decodeMimeWords, redactMimeWords, mimeBody, } from './mime.js';
11
+ import { GmailTextFault, sanitizeMailText, sanitizeMailHeaders, sanitizeMailMetadata, } from './mailSanitize.js';
12
12
  import { messageText } from './messageText.js';
13
+ /** Every category a client or a mapper can leave out, in the order the scan query names them. */
14
+ export const GMAIL_CATEGORIES = Object.freeze(['forums', 'promotions', 'social', 'updates']);
15
+ // The system label Gmail gives a message of each category.
16
+ const CATEGORY_LABELS = Object.freeze({
17
+ forums: 'CATEGORY_FORUMS', promotions: 'CATEGORY_PROMOTIONS', social: 'CATEGORY_SOCIAL', updates: 'CATEGORY_UPDATES',
18
+ });
19
+ /**
20
+ * The categories an `excludedCategories` option names, deduplicated and in `GMAIL_CATEGORIES` order: none for an
21
+ * undefined option, null when the value is not an array of category names.
22
+ */
23
+ export function gmailCategories(value) {
24
+ if (value === undefined)
25
+ return [];
26
+ if (!Array.isArray(value))
27
+ return null;
28
+ const entries = value;
29
+ if (entries.some((entry) => !GMAIL_CATEGORIES.includes(entry)))
30
+ return null;
31
+ return GMAIL_CATEGORIES.filter((category) => entries.includes(category));
32
+ }
33
+ /** The system labels of the given categories. */
34
+ export const categoryLabels = (categories) => new Set(categories.map((category) => CATEGORY_LABELS[category]));
13
35
  // An epoch-millisecond value a Date can hold.
14
36
  const validTime = (n) => Number.isSafeInteger(n) && n >= 0 && n <= 8_640_000_000_000_000;
15
37
  const compareId = (a, b) => a < b ? -1 : a > b ? 1 : 0;
@@ -28,7 +50,8 @@ function configuration(options) {
28
50
  if (!gmailId(options.sourceId) || typeof url !== 'string' || !/^\/[A-Za-z0-9_-]+(?:\/[A-Za-z0-9_-]+)*\/?$/.test(url)
29
51
  || url.length > 512 || !validTime(options.cutoff) || !validTime(options.readStartedAt)
30
52
  || !validTime(options.receivedAt) || options.receivedAt < options.readStartedAt || options.cutoff > options.receivedAt
31
- || !Number.isSafeInteger(options.windowMs) || options.windowMs < 1 || options.windowMs > 90 * 86_400_000) {
53
+ || !Number.isSafeInteger(options.windowMs) || options.windowMs < 1 || options.windowMs > 90 * 86_400_000
54
+ || gmailCategories(options.excludedCategories) === null) {
32
55
  throw new GmailMappingFault('configuration');
33
56
  }
34
57
  }
@@ -69,12 +92,20 @@ export class GmailThreadMapper {
69
92
  const attachments = body.attachments.map((attachment) => ({
70
93
  filename: metadata(attachment.filename), mediaType: metadata(attachment.mediaType, 128), size: attachment.size,
71
94
  }));
95
+ // A label name is JSON text, never MIME encoded: decoding it as RFC 2047 words refused a literal `=?` and lost every
96
+ // message carrying the label. It is sanitized as written, and a run of encoded words in it is decoded only to look
97
+ // inside: one whose text holds an address or a credential gives way to what the sanitizer leaves of it, so nothing
98
+ // a reader could decode back is stored.
99
+ const labelText = (raw) => redactMimeWords(raw, budget, (decoded) => {
100
+ const inspected = sanitizeMailText(decoded, this.policy(this.bounds.maxInputCharacters));
101
+ return inspected.addressRedactions + inspected.secretRedactions + inspected.suppressedLines > 0 ? inspected.text : null;
102
+ });
72
103
  const labels = message.labels.map((id) => {
73
104
  const permitted = options.labelCache?.kind === 'cache' && validTime(options.labelCache.expiresAt) && options.labelCache.expiresAt > options.receivedAt && options.labelCache.evidenceId.length > 0;
74
105
  const raw = permitted && Object.hasOwn(options.labelNames, id) ? options.labelNames[id] : id;
75
106
  if (typeof raw !== 'string')
76
107
  throw new SourceSyncFault('invalid_response');
77
- return { id, name: metadata(raw) };
108
+ return { id, name: sanitizeMailMetadata(labelText(raw), this.policy(200)).text };
78
109
  });
79
110
  const lines = ['subject', 'date', 'from', 'to', 'cc']
80
111
  .filter((key) => headers[key] !== '').map((key) => key[0].toUpperCase() + key.slice(1) + ': ' + headers[key]);
@@ -89,9 +120,15 @@ export class GmailThreadMapper {
89
120
  * Validates the whole response, filters each message by its internal date and by the spam, trash and draft labels,
90
121
  * keeps the newest eligible messages up to the cap with ties broken by id, spends the thread's character budget
91
122
  * newest first and renders the kept messages oldest first. A message's text is its sanitized header prefix followed
92
- * by its sanitized, trimmed body, and its span covers the body alone. A message that cannot be read is counted under
93
- * `metadata.omitted` by a fixed reason. The cache expiry is the earliest of the permission's retention, the read start
94
- * plus `maximumCacheMs`, the response's cache headers, every kept message's window end and the label names' expiry.
123
+ * by its sanitized, trimmed body, cut to the message cap (or the thread cap when that is smaller) and never shorter:
124
+ * the first message whose text does not fit in what the thread budget has left, and every older one, is counted
125
+ * under `thread_limit` instead, so the text of a retained message never depends on the rest of its thread. Its span
126
+ * covers the body alone. A message that cannot be read is counted under `metadata.omitted` by a fixed reason. The
127
+ * cache expiry is the earliest of the permission's retention, the read start plus `maximumCacheMs`, the response's
128
+ * cache headers, every kept message's window end and the label names' expiry. The version is the history id and
129
+ * `contentHash`, the SHA-256 of the normalized text, metadata and spans: a release that normalizes text differently
130
+ * changes it for exactly the threads whose normalized text, metadata or spans change, so the store writes those
131
+ * copies again at their next read and keeps the rest.
95
132
  *
96
133
  * @param input The parsed `threads.get` response in the `full` format, from a transport that capped its bytes.
97
134
  * @param options The per-read values.
@@ -106,6 +143,7 @@ export class GmailThreadMapper {
106
143
  mappingActive(options.signal);
107
144
  const skipped = (reason) => ({ kind: 'skipped', id: options.sourceId, reason });
108
145
  const budget = { bounds: this.bounds, rawBytes: 0, decodedBytes: 0, parts: 0 };
146
+ const excludedLabels = categoryLabels(gmailCategories(options.excludedCategories) ?? []);
109
147
  let thread;
110
148
  try {
111
149
  thread = parseMimeThread(input, options.sourceId, budget, options.signal);
@@ -130,18 +168,29 @@ export class GmailThreadMapper {
130
168
  omit('excluded_label');
131
169
  continue;
132
170
  }
171
+ if (message.labels.some((label) => excludedLabels.has(label))) {
172
+ omit('excluded_category');
173
+ continue;
174
+ }
133
175
  eligible.push(message);
134
176
  }
135
177
  eligible.sort(newest);
136
178
  const selected = eligible.slice(0, this.bounds.maxMessages);
137
179
  omit('message_limit', eligible.length - selected.length);
180
+ // Each message keeps its own cut, whatever else the thread holds: cutting the oldest kept message to what the newer
181
+ // ones left would change its text at every reply near the cap, and the account-source store charges a message its
182
+ // copy holds nothing only when its text hash, cut and length are unchanged. The first message that does not fit
183
+ // whole in what is left reaches the cap: it and every older message are omitted under `thread_limit`, unread, as
184
+ // they were once a cut message had filled the budget.
185
+ const cut = Math.min(this.bounds.maxMessageCharacters, this.bounds.maxThreadCharacters);
138
186
  const retained = [];
139
187
  let used = 0;
188
+ let full = false;
140
189
  let lastReason = 'no_eligible_content';
141
190
  for (const message of selected) {
142
191
  mappingActive(options.signal);
143
192
  const remaining = this.bounds.maxThreadCharacters - used - (retained.length ? 2 : 0);
144
- if (remaining <= 0) {
193
+ if (full || remaining <= 0) {
145
194
  omit('thread_limit');
146
195
  continue;
147
196
  }
@@ -158,26 +207,32 @@ export class GmailThreadMapper {
158
207
  continue;
159
208
  }
160
209
  mappingActive(options.signal);
161
- const maximum = Math.min(this.bounds.maxMessageCharacters, remaining);
162
- if (normalized.prefix.length > maximum) {
210
+ if (normalized.prefix.length > cut) {
163
211
  lastReason = 'structure_limit';
164
212
  omit('thread_limit');
165
213
  continue;
166
214
  }
167
- const body = clip(normalized.body, maximum - normalized.prefix.length);
215
+ const body = clip(normalized.body, cut - normalized.prefix.length);
168
216
  const text = normalized.prefix + body;
169
217
  if (!text) {
170
218
  lastReason = 'no_eligible_content';
171
219
  omit(lastReason);
172
220
  continue;
173
221
  }
222
+ if (text.length > remaining) {
223
+ full = true;
224
+ omit('thread_limit');
225
+ continue;
226
+ }
174
227
  retained.push({ normalized, text, bodyStart: normalized.prefix.length,
175
228
  truncated: normalized.truncated || body.length < normalized.body.length });
176
229
  used += text.length + (retained.length > 1 ? 2 : 0);
177
230
  }
178
231
  if (retained.length === 0) {
179
- if (eligible.length === 0)
180
- lastReason = omitted.excluded_label ? 'excluded_label' : omitted.out_of_window ? 'out_of_window' : lastReason;
232
+ if (eligible.length === 0) {
233
+ lastReason = omitted.excluded_label || omitted.excluded_category ? 'excluded_label'
234
+ : omitted.out_of_window ? 'out_of_window' : lastReason;
235
+ }
181
236
  return skipped(lastReason);
182
237
  }
183
238
  retained.sort((a, b) => a.normalized.message.receivedAt - b.normalized.message.receivedAt
@@ -1 +1 @@
1
- {"version":3,"file":"mapThread.js","sourceRoot":"","sources":["../src/mapThread.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,iBAAiB,EAAE,eAAe,GAGnC,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EACzE,cAAc,EAAE,eAAe,EAAE,QAAQ,GAE1C,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,GAE1D,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA8C/C,8CAA8C;AAC9C,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC;AACjG,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,+DAA+D;AAC/D,MAAM,MAAM,GAAG,CAAC,CAAc,EAAE,CAAc,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACxG,sEAAsE;AACtE,SAAS,IAAI,CAAC,IAAY,EAAE,OAAe;IACzC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAE,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC;QAAE,GAAG,EAAE,CAAC;IACxH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AACD,4GAA4G;AAC5G,SAAS,aAAa,CAAC,OAA8B;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,4CAA4C,CAAC,IAAI,CAAC,GAAG,CAAC;WAC/G,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;WACnF,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU;WACnH,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;QAC3G,MAAM,IAAI,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AACD,sEAAsE;AACtE,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,YAAY,iBAAiB,IAAI,KAAK,CAAC,MAAM,KAAK,eAAe;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IAChG,IAAI,KAAK,YAAY,cAAc,IAAI,KAAK,CAAC,MAAM,KAAK,iBAAiB;QAAE,OAAO,oBAAoB,CAAC;IACvG,OAAO,IAAI,CAAC;AACd,CAAC;AACD;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IACX,MAAM,CAAqB;IAC5C;;;OAGG;IACH,YAAY,MAA0B,IAAI,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChF,2CAA2C;IACnC,MAAM,CAAC,OAAe;QAC5B,OAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;YACzD,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/H,CAAC;IACD,kGAAkG;IAC1F,KAAK,CAAC,SAAS,CAAC,OAAoB,EAAE,MAAkB,EAAE,OAA8B;QAC9F,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,mBAAmB,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC;QAC7F,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACrE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,OAAO,GAAG,GAAG,EAAU,EAAE,CACxD,oBAAoB,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,MAAM,WAAW,GAAqB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC1E,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI;SAC/G,CAAC,CAAC,CAAC;QACJ,MAAM,MAAM,GAAqB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACzD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,KAAK,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;YAAC,MAAM,GAAG,GAAG,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjS,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,MAAM,IAAI,eAAe,CAAC,kBAAkB,CAAC,CAAC;YAC3E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,MAAM,KAAK,GAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAW;aAC7D,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACjH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,MAAM,IAAI,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;QAC/E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI;YACjD,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS;YACtG,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACnE,CAAC;IACD;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,GAAG,CAAC,KAAc,EAAE,OAA8B;QACtD,aAAa,CAAC,OAAO,CAAC,CAAC;QAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,CAAC,MAA4B,EAAwB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5H,MAAM,MAAM,GAAe,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC3F,IAAI,MAAkB,CAAC;QACvB,IAAI,CAAC;YAAC,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAClF,OAAO,KAAK,EAAE,CAAC;YAAC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YAAC,IAAI,MAAM;gBAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;YAAC,MAAM,KAAK,CAAC;QAAC,CAAC;QACvG,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACjH,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ;mBAC7F,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACtH,IAAI,CAAC,eAAe,CAAC,CAAC;gBAAC,SAAS;YAClC,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YACrH,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAsB,EAAE,CAAC;QAAC,IAAI,IAAI,GAAG,CAAC,CAAC;QACrD,IAAI,UAAU,GAAyB,qBAAqB,CAAC;QAC7D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrF,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YACvD,IAAI,UAA6B,CAAC;YAClC,IAAI,CAAC;gBAAC,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAAC,CAAC;YACpE,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;gBACpC,IAAI,CAAC,MAAM;oBAAE,MAAM,KAAK,CAAC;gBACzB,UAAU,GAAG,MAAM,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAAC,SAAS;YAC9C,CAAC;YACD,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;YACtE,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;gBAAC,UAAU,GAAG,iBAAiB,CAAC;gBAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC3G,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvE,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;YACtC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAAC,UAAU,GAAG,qBAAqB,CAAC;gBAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC9E,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;gBACnE,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7E,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC;YACzI,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU;eACpF,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAAC,MAAM,gBAAgB,GAAqB,EAAE,CAAC;QAC5F,MAAM,KAAK,GAAa,EAAE,CAAC;QAAC,IAAI,MAAM,GAAG,CAAC,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;YAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;YACrE,IAAI,KAAK,CAAC,MAAM;gBAAE,MAAM,IAAI,CAAC,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;gBACnG,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACvH,gBAAgB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM;gBAC/F,WAAW,EAAE,UAAU,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,YAAY;gBAC1E,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAClG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACpD,CAAC;QACD,MAAM,QAAQ,GAAmC,EAAE,QAAQ,EAAE,gBAAgB;YAC3E,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACxF,eAAe,EAAE,KAAK,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB;YAAE,OAAO,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC/F,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;YAC1G,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU;YACpE,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACzG,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;QAAC,MAAM,YAAY,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtR,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5G,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,GAAG,GAAG,GAAG,WAAW,CAAC;QACrD,MAAM,UAAU,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QACpG,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,IAAI,aAAa,CAAC;QAChH,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE;gBACnC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE;oBACnF,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE;gBAC5H,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY;aACjH,EAAE,CAAC;IACN,CAAC;CACF"}
1
+ {"version":3,"file":"mapThread.js","sourceRoot":"","sources":["../src/mapThread.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,iBAAiB,EAAE,eAAe,GAGnC,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EACzE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,QAAQ,GAE3D,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,GAE5E,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,iGAAiG;AACjG,MAAM,CAAC,MAAM,gBAAgB,GAA6B,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC,CAAC;AAChI,2DAA2D;AAC3D,MAAM,eAAe,GAA4C,MAAM,CAAC,MAAM,CAAC;IAC7E,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,kBAAkB;CACrH,CAAC,CAAC;AACH;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,OAAO,GAAuB,KAAK,CAAC;IAC1C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAE,gBAAuC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpG,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3E,CAAC;AACD,iDAAiD;AACjD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAoC,EAAuB,EAAE,CAC1F,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAwDnE,8CAA8C;AAC9C,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC;AACjG,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,+DAA+D;AAC/D,MAAM,MAAM,GAAG,CAAC,CAAc,EAAE,CAAc,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACxG,sEAAsE;AACtE,SAAS,IAAI,CAAC,IAAY,EAAE,OAAe;IACzC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAE,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC;QAAE,GAAG,EAAE,CAAC;IACxH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AACD,4GAA4G;AAC5G,SAAS,aAAa,CAAC,OAA8B;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,4CAA4C,CAAC,IAAI,CAAC,GAAG,CAAC;WAC/G,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;WACnF,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU;WACnH,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,GAAG,EAAE,GAAG,UAAU;WACrG,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,IAAI,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AACD,sEAAsE;AACtE,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,YAAY,iBAAiB,IAAI,KAAK,CAAC,MAAM,KAAK,eAAe;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IAChG,IAAI,KAAK,YAAY,cAAc,IAAI,KAAK,CAAC,MAAM,KAAK,iBAAiB;QAAE,OAAO,oBAAoB,CAAC;IACvG,OAAO,IAAI,CAAC;AACd,CAAC;AACD;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IACX,MAAM,CAAqB;IAC5C;;;OAGG;IACH,YAAY,MAA0B,IAAI,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChF,2CAA2C;IACnC,MAAM,CAAC,OAAe;QAC5B,OAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;YACzD,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/H,CAAC;IACD,kGAAkG;IAC1F,KAAK,CAAC,SAAS,CAAC,OAAoB,EAAE,MAAkB,EAAE,OAA8B;QAC9F,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,mBAAmB,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC;QAC7F,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACrE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,OAAO,GAAG,GAAG,EAAU,EAAE,CACxD,oBAAoB,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,MAAM,WAAW,GAAqB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC1E,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI;SAC/G,CAAC,CAAC,CAAC;QACJ,qHAAqH;QACrH,mHAAmH;QACnH,mHAAmH;QACnH,wCAAwC;QACxC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;YAClF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACzF,OAAO,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAC,gBAAgB,GAAG,SAAS,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1H,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAqB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACzD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,KAAK,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;YAAC,MAAM,GAAG,GAAG,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjS,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,MAAM,IAAI,eAAe,CAAC,kBAAkB,CAAC,CAAC;YAC3E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnF,CAAC,CAAC,CAAC;QACH,MAAM,KAAK,GAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAW;aAC7D,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACjH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,MAAM,IAAI,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;QAC/E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI;YACjD,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS;YACtG,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACnE,CAAC;IACD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,GAAG,CAAC,KAAc,EAAE,OAA8B;QACtD,aAAa,CAAC,OAAO,CAAC,CAAC;QAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,CAAC,MAA4B,EAAwB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5H,MAAM,MAAM,GAAe,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC3F,MAAM,cAAc,GAAG,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;QACzF,IAAI,MAAkB,CAAC;QACvB,IAAI,CAAC;YAAC,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAClF,OAAO,KAAK,EAAE,CAAC;YAAC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YAAC,IAAI,MAAM;gBAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;YAAC,MAAM,KAAK,CAAC;QAAC,CAAC;QACvG,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACjH,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ;mBAC7F,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACtH,IAAI,CAAC,eAAe,CAAC,CAAC;gBAAC,SAAS;YAClC,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YACrH,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YACvG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzD,oHAAoH;QACpH,kHAAkH;QAClH,gHAAgH;QAChH,iHAAiH;QACjH,sDAAsD;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACxF,MAAM,QAAQ,GAAsB,EAAE,CAAC;QAAC,IAAI,IAAI,GAAG,CAAC,CAAC;QAAC,IAAI,IAAI,GAAG,KAAK,CAAC;QACvE,IAAI,UAAU,GAAyB,qBAAqB,CAAC;QAC7D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrF,IAAI,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC/D,IAAI,UAA6B,CAAC;YAClC,IAAI,CAAC;gBAAC,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAAC,CAAC;YACpE,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;gBACpC,IAAI,CAAC,MAAM;oBAAE,MAAM,KAAK,CAAC;gBACzB,UAAU,GAAG,MAAM,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAAC,SAAS;YAC9C,CAAC;YACD,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAAC,UAAU,GAAG,iBAAiB,CAAC;gBAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YACvG,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACnE,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;YACtC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAAC,UAAU,GAAG,qBAAqB,CAAC;gBAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC9E,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;gBAAC,IAAI,GAAG,IAAI,CAAC;gBAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC7E,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;gBACnE,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7E,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,UAAU,GAAG,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB;oBACjF,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC;YAC3D,CAAC;YACD,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU;eACpF,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAAC,MAAM,gBAAgB,GAAqB,EAAE,CAAC;QAC5F,MAAM,KAAK,GAAa,EAAE,CAAC;QAAC,IAAI,MAAM,GAAG,CAAC,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;YAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;YACrE,IAAI,KAAK,CAAC,MAAM;gBAAE,MAAM,IAAI,CAAC,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;gBACnG,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACvH,gBAAgB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM;gBAC/F,WAAW,EAAE,UAAU,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,YAAY;gBAC1E,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAClG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACpD,CAAC;QACD,MAAM,QAAQ,GAAmC,EAAE,QAAQ,EAAE,gBAAgB;YAC3E,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACxF,eAAe,EAAE,KAAK,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB;YAAE,OAAO,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC/F,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;YAC1G,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU;YACpE,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACzG,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;QAAC,MAAM,YAAY,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtR,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5G,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,GAAG,GAAG,GAAG,WAAW,CAAC;QACrD,MAAM,UAAU,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QACpG,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,IAAI,aAAa,CAAC;QAChH,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE;gBACnC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE;oBACnF,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE;gBAC5H,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY;aACjH,EAAE,CAAC;IACN,CAAC;CACF"}