@terrazzo/plugin-css 2.3.0 → 2.5.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @terrazzo/plugin-css
2
2
 
3
+ ## 2.5.0
4
+
5
+ ### Patch Changes
6
+
7
+ - [#791](https://github.com/terrazzoapp/terrazzo/pull/791) [`2a7bb89`](https://github.com/terrazzoapp/terrazzo/commit/2a7bb898033ffbf5d4d1c5a120aa60a78dfca7ed) Thanks [@mrginglymus](https://github.com/mrginglymus)! - Upgrade to tsgo/TypeScript 7
8
+
9
+ - Updated dependencies [[`055b580`](https://github.com/terrazzoapp/terrazzo/commit/055b580313c08dba8810e2690fea832f5d09a647), [`a05196b`](https://github.com/terrazzoapp/terrazzo/commit/a05196bb373c03528ca6cd6eabd6805ff27b009c)]:
10
+ - @terrazzo/cli@2.4.1
11
+ - @terrazzo/parser@2.5.0
12
+
13
+ ## 2.4.0
14
+
15
+ ### Minor Changes
16
+
17
+ - [#778](https://github.com/terrazzoapp/terrazzo/pull/778) [`bdca3be`](https://github.com/terrazzoapp/terrazzo/commit/bdca3be143f7d7a1f06e4ca50e652c85f1d12a24) Thanks [@drwpow](https://github.com/drwpow)! - Feat: add orthogonality detection in resolver API (minus $extends)
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies [[`bdca3be`](https://github.com/terrazzoapp/terrazzo/commit/bdca3be143f7d7a1f06e4ca50e652c85f1d12a24), [`84b1dba`](https://github.com/terrazzoapp/terrazzo/commit/84b1dbacc0fe1aa3331d90e61d308eb91f96f8d5)]:
22
+ - @terrazzo/parser@2.4.0
23
+ - @terrazzo/cli@2.4.0
24
+ - @terrazzo/token-tools@2.4.0
25
+
3
26
  ## 2.3.0
4
27
 
5
28
  ### Minor Changes
@@ -0,0 +1,19 @@
1
+ import type { BuildHookOptions, Config, Logger } from '@terrazzo/parser';
2
+ import { type CSSPluginOptions } from './lib.js';
3
+ export interface BuildFormatOptions {
4
+ logger: Logger;
5
+ include: CSSPluginOptions['include'];
6
+ exclude: CSSPluginOptions['exclude'];
7
+ getTransforms: BuildHookOptions['getTransforms'];
8
+ modeSelectors: CSSPluginOptions['modeSelectors'];
9
+ alphabetize?: Config['alphabetize'];
10
+ permutations: CSSPluginOptions['permutations'];
11
+ utility: CSSPluginOptions['utility'];
12
+ baseSelector: string;
13
+ baseScheme: CSSPluginOptions['baseScheme'];
14
+ propertyDefinitions: boolean;
15
+ omitTypographyShorthand: CSSPluginOptions['omitTypographyShorthand'];
16
+ subValueVariableName: CSSPluginOptions['subValueVariableName'];
17
+ }
18
+ export default function buildCSS({ logger, getTransforms, include: userInclude, exclude: userExclude, utility, permutations, modeSelectors, baseSelector, baseScheme, propertyDefinitions, omitTypographyShorthand, subValueVariableName, }: BuildFormatOptions): string;
19
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAoB,MAAM,kBAAkB,CAAC;AAG3F,OAAO,EAIL,KAAK,gBAAgB,EAQtB,MAAM,UAAU,CAAC;AAclB,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACrC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACrC,aAAa,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACjD,aAAa,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACpC,YAAY,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC/C,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC3C,mBAAmB,EAAE,OAAO,CAAC;IAC7B,uBAAuB,EAAE,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;IACrE,oBAAoB,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;CAChE;AA+GD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,MAAM,EACN,aAAa,EACb,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,OAAO,EACP,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,UAAU,EACV,mBAA2B,EAC3B,uBAAuB,EACvB,oBAAoB,GACrB,EAAE,kBAAkB,GAAG,MAAM,CA2W7B"}
package/dist/build.js ADDED
@@ -0,0 +1,402 @@
1
+ import { generateShorthand, makeCSSVar } from '@terrazzo/token-tools/css';
2
+ import { addDeclUnique, cachedMatcher, decl, FORMAT_ID, getIndentFromPrepare, PLUGIN_NAME, printRules, rule, } from './lib.js';
3
+ import generateUtilityCSS from './utility-css.js';
4
+ const P3_MQ = '@media (color-gamut: p3)';
5
+ const REC2020_MQ = '@media (color-gamut: rec2020)';
6
+ /**
7
+ * Get description from metadata with fallback to token.$description
8
+ * Preserves the descriptions and alias descriptions.
9
+ */
10
+ function getDescription(token) {
11
+ return token.meta?.['plugin-css']?.description ?? token.token.$description;
12
+ }
13
+ const TOKEN_TYPE_SYNTAX = {
14
+ color: '<color>',
15
+ dimension: '<length>',
16
+ duration: '<time>',
17
+ fontWeight: '<integer>',
18
+ number: '<number>',
19
+ boolean: '<integer>',
20
+ fontFamily: '*',
21
+ string: '*',
22
+ cubicBezier: '*',
23
+ border: '*',
24
+ shadow: '*',
25
+ gradient: '*',
26
+ typography: '*',
27
+ transition: '*',
28
+ strokeStyle: '*',
29
+ link: '<url>',
30
+ };
31
+ const SUB_PROPERTY_SYNTAX = {
32
+ border: { color: '<color>', width: '<length>', style: '*' },
33
+ shadow: {
34
+ color: '<color>',
35
+ 'offset-x': '<length>',
36
+ 'offset-y': '<length>',
37
+ blur: '<length>',
38
+ spread: '<length>',
39
+ },
40
+ transition: { duration: '<time>', delay: '<time>', 'timing-function': '*' },
41
+ typography: {
42
+ 'font-family': '*',
43
+ 'font-size': '<length>',
44
+ 'font-weight': '<integer>',
45
+ 'line-height': '*',
46
+ 'letter-spacing': '<length>',
47
+ 'font-style': '*',
48
+ 'font-variant': '*',
49
+ 'font-variation-settings': '*',
50
+ 'text-decoration': '*',
51
+ 'text-transform': '*',
52
+ },
53
+ strokeStyle: { 'dash-array': '*', 'line-cap': '*' },
54
+ };
55
+ function generatePropertyDefinition(localID, syntax, initialValue) {
56
+ const children = [decl('syntax', `'${syntax}'`), decl('inherits', 'true')];
57
+ if (initialValue) {
58
+ children.push(decl('initial-value', initialValue));
59
+ }
60
+ return rule([`@property ${localID}`], children);
61
+ }
62
+ function generatePropertyDefinitions(getTransforms, options) {
63
+ const tokens = getTransforms({ format: FORMAT_ID });
64
+ const properties = [];
65
+ const seen = new Set();
66
+ for (const token of tokens) {
67
+ const localID = token.localID;
68
+ if (!localID) {
69
+ continue;
70
+ }
71
+ if (!options.include(token.token.id) || options.exclude(token.token.id)) {
72
+ continue;
73
+ }
74
+ const cssSyntax = TOKEN_TYPE_SYNTAX[token.token.$type] ?? '*';
75
+ if (token.type === 'SINGLE_VALUE') {
76
+ if (seen.has(localID)) {
77
+ continue;
78
+ }
79
+ seen.add(localID);
80
+ if (!token.token.aliasOf && cssSyntax !== '*') {
81
+ properties.push(generatePropertyDefinition(localID, cssSyntax, token.value));
82
+ }
83
+ else {
84
+ properties.push(generatePropertyDefinition(localID, '*'));
85
+ }
86
+ }
87
+ else if (token.type === 'MULTI_VALUE') {
88
+ for (const [name, subValue] of Object.entries(token.value)) {
89
+ const subID = name === '.' ? localID : `${localID}-${name}`;
90
+ if (seen.has(subID)) {
91
+ continue;
92
+ }
93
+ seen.add(subID);
94
+ const subSyntax = SUB_PROPERTY_SYNTAX[token.token.$type]?.[name] ?? '*';
95
+ if (!token.token.aliasOf && subSyntax !== '*') {
96
+ properties.push(generatePropertyDefinition(subID, subSyntax, subValue));
97
+ }
98
+ else {
99
+ properties.push(generatePropertyDefinition(subID, '*'));
100
+ }
101
+ }
102
+ if (!seen.has(localID)) {
103
+ seen.add(localID);
104
+ properties.push(generatePropertyDefinition(localID, '*'));
105
+ }
106
+ }
107
+ }
108
+ return properties;
109
+ }
110
+ export default function buildCSS({ logger, getTransforms, include: userInclude, exclude: userExclude, utility, permutations, modeSelectors, baseSelector, baseScheme, propertyDefinitions = false, omitTypographyShorthand, subValueVariableName, }) {
111
+ function makeSubValueId(variableName, subValueName, token) {
112
+ const customName = subValueVariableName?.(variableName, subValueName, token);
113
+ if (customName !== undefined) {
114
+ if (typeof customName !== 'string') {
115
+ logger.error({
116
+ group: 'plugin',
117
+ label: PLUGIN_NAME,
118
+ message: `subValueVariableName() must return a string; received ${customName}`,
119
+ });
120
+ }
121
+ return customName;
122
+ }
123
+ return `${variableName}-${subValueName}`;
124
+ }
125
+ const include = userInclude ? cachedMatcher.tokenIDMatch(userInclude) : () => true;
126
+ const exclude = userExclude ? cachedMatcher.tokenIDMatch(userExclude) : () => false;
127
+ let propertyDefsNodes = [];
128
+ if (propertyDefinitions) {
129
+ propertyDefsNodes = generatePropertyDefinitions(getTransforms, { include, exclude });
130
+ }
131
+ if (permutations?.length) {
132
+ let output = '';
133
+ for (const p of permutations) {
134
+ if (typeof p.prepare !== 'function') {
135
+ logger.error({
136
+ group: 'plugin',
137
+ label: PLUGIN_NAME,
138
+ message: 'prepare(css) must be a function!',
139
+ });
140
+ }
141
+ const tokens = getTransforms({ format: FORMAT_ID, input: p.input });
142
+ if (tokens.length === 0) {
143
+ continue;
144
+ }
145
+ const root = [];
146
+ const hdrColors = {
147
+ p3: [],
148
+ rec2020: [],
149
+ };
150
+ const pInclude = p.include ? cachedMatcher.tokenIDMatch(p.include) : () => true;
151
+ const pExclude = p.exclude ? cachedMatcher.tokenIDMatch(p.exclude) : () => false;
152
+ // oxlint-disable-next-line func-style
153
+ const includeToken = (tokenId) => include(tokenId) && pInclude(tokenId) && !exclude(tokenId) && !pExclude(tokenId);
154
+ for (const token of tokens) {
155
+ if (!includeToken(token.id)) {
156
+ continue;
157
+ }
158
+ const localID = makeCSSVar(token.localID ?? token.token.id);
159
+ const aliasTokens = token.token.aliasedBy?.length
160
+ ? getTransforms({ format: FORMAT_ID, id: token.token.aliasedBy, input: p.input })
161
+ : [];
162
+ // single-value token
163
+ if (token.type === 'SINGLE_VALUE') {
164
+ addDeclUnique(root, decl(localID, token.value, getDescription(token)));
165
+ }
166
+ // multi-value token (wide gamut color)
167
+ else if (token.value.srgb && token.value.p3 && token.value.rec2020) {
168
+ addDeclUnique(root, decl(localID, token.value.srgb, getDescription(token)));
169
+ if (token.value.p3 !== token.value.srgb) {
170
+ addDeclUnique(hdrColors.p3, decl(localID, token.value.p3, getDescription(token)));
171
+ addDeclUnique(hdrColors.rec2020, decl(localID, token.value.rec2020, getDescription(token)));
172
+ // handle aliases within color gamut media queries
173
+ for (const alias of aliasTokens) {
174
+ if (alias.localID && typeof alias.value === 'string') {
175
+ const aliasID = makeCSSVar(alias.localID);
176
+ addDeclUnique(hdrColors.p3, decl(aliasID, alias.value, getDescription(alias)));
177
+ addDeclUnique(hdrColors.rec2020, decl(aliasID, alias.value, getDescription(alias)));
178
+ }
179
+ }
180
+ }
181
+ }
182
+ // multi-value token
183
+ else {
184
+ for (const [name, subValue] of Object.entries(token.value)) {
185
+ const subValueID = makeSubValueId(localID, name, token);
186
+ addDeclUnique(root, decl(subValueID, subValue, getDescription(token)));
187
+ }
188
+ // Note: always generate shorthand AFTER other declarations
189
+ const shorthand = generateShorthand({
190
+ token: { ...token.token, $value: token.value },
191
+ localID,
192
+ omitTypographyShorthand,
193
+ });
194
+ if (shorthand) {
195
+ addDeclUnique(root, decl(localID, shorthand, getDescription(token)));
196
+ }
197
+ }
198
+ // redeclare aliases so they have the correct scope
199
+ for (const alias of aliasTokens) {
200
+ if (alias.localID && typeof alias.value === 'string') {
201
+ if (!includeToken(alias.id)) {
202
+ continue;
203
+ }
204
+ addDeclUnique(root, decl(alias.localID, alias.value, getDescription(token)));
205
+ }
206
+ }
207
+ }
208
+ const indentRules = getIndentFromPrepare(p.prepare);
209
+ if (output) {
210
+ output += '\n';
211
+ }
212
+ output += `${p.prepare(printRules(root, indentRules))}\n`;
213
+ // declare P3 and Rec2020 gamuts, if needed
214
+ for (const gamut of ['p3', 'rec2020']) {
215
+ if (hdrColors[gamut].length > 0) {
216
+ output += `\n@media (color-gamut: ${gamut}) {\n`;
217
+ output += indentRules.indentChar;
218
+ output += p
219
+ .prepare(printRules(hdrColors[gamut], indentRules))
220
+ .replaceAll(/\n(?!\n)/g, `\n${indentRules.indentChar}`); // indent every line an extra level
221
+ output += '\n}\n';
222
+ }
223
+ }
224
+ }
225
+ // add utility CSS
226
+ if (utility && Object.keys(utility).length > 0) {
227
+ if (output) {
228
+ output += '\n';
229
+ }
230
+ output += printRules(generateUtilityCSS(utility, getTransforms({ format: FORMAT_ID, input: permutations[0]?.input ?? {} }), {
231
+ logger,
232
+ }));
233
+ }
234
+ if (propertyDefsNodes.length > 0 && output) {
235
+ output = `${printRules(propertyDefsNodes)}\n\n${output}`;
236
+ }
237
+ return output;
238
+ }
239
+ // legacy plugin (will be deprecated in 3.0)
240
+ let output = '';
241
+ const rootTokens = getTransforms({ format: FORMAT_ID, mode: '.' });
242
+ if (rootTokens.length > 0) {
243
+ const rules = [
244
+ rule([baseSelector], []),
245
+ rule([P3_MQ], [rule([baseSelector])]),
246
+ rule([REC2020_MQ], [rule([baseSelector])]),
247
+ ];
248
+ const rootRule = rules[0];
249
+ const p3Rule = rules[1].children[0];
250
+ const rec2020Rule = rules[2].children[0];
251
+ // add base color-scheme declaration first if configured
252
+ // (must be before other properties to ensure it appears first in output)
253
+ if (baseScheme) {
254
+ rootRule.children.unshift(decl('color-scheme', baseScheme));
255
+ }
256
+ for (const token of rootTokens) {
257
+ // handle exclude (if any)
258
+ if (!include(token.token.id) || exclude(token.token.id)) {
259
+ continue;
260
+ }
261
+ const localID = token.localID ?? token.token.id;
262
+ const aliasTokens = token.token.aliasedBy?.length
263
+ ? getTransforms({ format: FORMAT_ID, id: token.token.aliasedBy })
264
+ : [];
265
+ // single-value token
266
+ if (token.type === 'SINGLE_VALUE') {
267
+ addDeclUnique(rootRule.children, decl(localID, token.value, getDescription(token)));
268
+ }
269
+ // multi-value token (wide gamut color)
270
+ else if (token.value.srgb && token.value.p3 && token.value.rec2020) {
271
+ addDeclUnique(rootRule.children, decl(localID, token.value.srgb, getDescription(token)));
272
+ if (token.value.p3 !== token.value.srgb) {
273
+ addDeclUnique(p3Rule.children, decl(localID, token.value.p3, getDescription(token)));
274
+ addDeclUnique(rec2020Rule.children, decl(localID, token.value.rec2020, getDescription(token)));
275
+ // handle aliases within color gamut media queries
276
+ for (const alias of aliasTokens) {
277
+ if (alias.localID && typeof alias.value === 'string') {
278
+ addDeclUnique(p3Rule.children, decl(alias.localID, alias.value, getDescription(alias)));
279
+ addDeclUnique(rec2020Rule.children, decl(alias.localID, alias.value, getDescription(alias)));
280
+ }
281
+ }
282
+ }
283
+ }
284
+ // multi-value token
285
+ else if (token.type === 'MULTI_VALUE') {
286
+ for (const [name, value] of Object.entries(token.value)) {
287
+ const property = name === '.' ? localID : makeSubValueId(localID, name, token);
288
+ addDeclUnique(rootRule.children, decl(property, value, getDescription(token)));
289
+ }
290
+ // Note: always place shorthand after other values
291
+ const shorthand = generateShorthand({
292
+ token: { ...token.token, $value: token.value },
293
+ localID,
294
+ omitTypographyShorthand,
295
+ });
296
+ if (shorthand) {
297
+ addDeclUnique(rootRule.children, decl(token.localID ?? token.token.id, shorthand, getDescription(token)));
298
+ }
299
+ }
300
+ }
301
+ output += printRules(rules);
302
+ }
303
+ // legacy modeSelectors
304
+ // Delete this behavior in 3.0.
305
+ // This code is intentionally left-alone as a separate code path so it behaves as it did with 0.x.
306
+ for (const selector of modeSelectors ?? []) {
307
+ const selectorTokens = getTransforms({
308
+ format: FORMAT_ID,
309
+ id: selector.tokens,
310
+ mode: selector.mode,
311
+ });
312
+ if (selectorTokens.length === 0) {
313
+ continue;
314
+ }
315
+ const modeRule = rule(selector.selectors);
316
+ // add color-scheme declaration first if configured for this mode
317
+ // (must be before other properties to ensure it appears first in output)
318
+ if (selector.scheme) {
319
+ modeRule.children.unshift(decl('color-scheme', selector.scheme));
320
+ }
321
+ const hdrColors = {
322
+ p3: [],
323
+ rec2020: [],
324
+ };
325
+ for (const token of selectorTokens) {
326
+ const localID = token.localID ?? token.token.id;
327
+ const aliasedBy = token.token.mode[selector.mode]?.aliasedBy?.length
328
+ ? token.token.mode[selector.mode].aliasedBy
329
+ : token.token.aliasedBy;
330
+ let aliasTokens = aliasedBy?.length
331
+ ? getTransforms({ format: FORMAT_ID, id: aliasedBy, mode: selector.mode })
332
+ : [];
333
+ // Note: this will grab aliases from alternate and default modes. If we have duplicates, discard the default modes
334
+ const uniqueAliasIDs = new Set(aliasTokens.map((t) => t.id));
335
+ if (uniqueAliasIDs.size !== aliasTokens.length && selector.mode !== '.') {
336
+ aliasTokens = aliasTokens.filter((t, i) => !aliasTokens.some((t2, i2) => t.id === t2.id && i !== i2 && t.mode === '.'));
337
+ }
338
+ // single-value token
339
+ if (token.type === 'SINGLE_VALUE') {
340
+ addDeclUnique(modeRule.children, decl(localID, token.value, getDescription(token)));
341
+ }
342
+ // multi-value token (wide gamut color)
343
+ else if (token.value.srgb && token.value.p3 && token.value.rec2020) {
344
+ addDeclUnique(modeRule.children, decl(localID, token.value.srgb, getDescription(token)));
345
+ if (token.value.p3 !== token.value.srgb) {
346
+ addDeclUnique(hdrColors.p3, decl(localID, token.value.p3, getDescription(token)));
347
+ addDeclUnique(hdrColors.rec2020, decl(localID, token.value.rec2020, getDescription(token)));
348
+ // handle aliases within color gamut media queries
349
+ for (const alias of aliasTokens) {
350
+ if (alias.localID && typeof alias.value === 'string') {
351
+ for (const gamut of ['p3', 'rec2020']) {
352
+ addDeclUnique(hdrColors[gamut], decl(alias.localID, alias.value, getDescription(alias)));
353
+ }
354
+ }
355
+ }
356
+ }
357
+ }
358
+ // multi-value token
359
+ else {
360
+ for (const [name, subValue] of Object.entries(token.value)) {
361
+ const subValueID = makeSubValueId(localID, name, token);
362
+ addDeclUnique(modeRule.children, decl(subValueID, subValue, getDescription(token)));
363
+ }
364
+ // Note: always generate shorthand after other declarations
365
+ const shorthand = generateShorthand({
366
+ token: { ...token.token, $value: token.value },
367
+ localID,
368
+ omitTypographyShorthand,
369
+ });
370
+ if (shorthand) {
371
+ addDeclUnique(modeRule.children, decl(localID, shorthand, getDescription(token)));
372
+ }
373
+ }
374
+ // redeclare aliases so they have the correct scope
375
+ for (const alias of aliasTokens) {
376
+ if (alias.localID && typeof alias.value === 'string') {
377
+ addDeclUnique(modeRule.children, decl(alias.localID, alias.value, getDescription(token)));
378
+ }
379
+ }
380
+ }
381
+ if (output) {
382
+ output += '\n\n';
383
+ }
384
+ output += printRules([
385
+ modeRule,
386
+ rule([P3_MQ], [rule(selector.selectors, hdrColors.p3)]),
387
+ rule([REC2020_MQ], [rule(selector.selectors, hdrColors.rec2020)]),
388
+ ]);
389
+ }
390
+ // add utility CSS
391
+ if (utility && Object.keys(utility).length > 0) {
392
+ if (output) {
393
+ output += '\n\n';
394
+ }
395
+ output += printRules(generateUtilityCSS(utility, getTransforms({ format: FORMAT_ID, mode: '.' }), { logger }));
396
+ }
397
+ if (propertyDefsNodes.length > 0 && output) {
398
+ output = `${printRules(propertyDefsNodes)}\n\n${output}`;
399
+ }
400
+ return output;
401
+ }
402
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE1E,OAAO,EACL,aAAa,EACb,aAAa,EAIb,IAAI,EACJ,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,UAAU,EACV,IAAI,GACL,MAAM,UAAU,CAAC;AAClB,OAAO,kBAAkB,MAAM,kBAAkB,CAAC;AAElD,MAAM,KAAK,GAAG,0BAA0B,CAAC;AACzC,MAAM,UAAU,GAAG,+BAA+B,CAAC;AAEnD;;;GAGG;AACH,SAAS,cAAc,CAAC,KAAU;IAChC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;AAC7E,CAAC;AAkBD,MAAM,iBAAiB,GAA2B;IAChD,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,UAAU;IACrB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,WAAW;IACvB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,WAAW;IACpB,UAAU,EAAE,GAAG;IACf,MAAM,EAAE,GAAG;IACX,WAAW,EAAE,GAAG;IAChB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,QAAQ,EAAE,GAAG;IACb,UAAU,EAAE,GAAG;IACf,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,GAAG;IAChB,IAAI,EAAE,OAAO;CACd,CAAC;AAEF,MAAM,mBAAmB,GAA2C;IAClE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;IAC3D,MAAM,EAAE;QACN,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,UAAU;QACtB,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,UAAU;KACnB;IACD,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,EAAE;IAC3E,UAAU,EAAE;QACV,aAAa,EAAE,GAAG;QAClB,WAAW,EAAE,UAAU;QACvB,aAAa,EAAE,WAAW;QAC1B,aAAa,EAAE,GAAG;QAClB,gBAAgB,EAAE,UAAU;QAC5B,YAAY,EAAE,GAAG;QACjB,cAAc,EAAE,GAAG;QACnB,yBAAyB,EAAE,GAAG;QAC9B,iBAAiB,EAAE,GAAG;QACtB,gBAAgB,EAAE,GAAG;KACtB;IACD,WAAW,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE;CACpD,CAAC;AAEF,SAAS,0BAA0B,CACjC,OAAe,EACf,MAAc,EACd,YAAqB;IAErB,MAAM,QAAQ,GAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7F,IAAI,YAAY,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,aAAa,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,2BAA2B,CAClC,aAAgD,EAChD,OAA+E;IAE/E,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACpD,MAAM,UAAU,GAAc,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACxE,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;QAE9D,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;gBAC9C,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACxC,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3D,MAAM,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC;gBAC5D,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpB,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAChB,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;gBACxE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;oBAC9C,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC1E,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAClB,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,MAAM,EACN,aAAa,EACb,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,OAAO,EACP,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,UAAU,EACV,mBAAmB,GAAG,KAAK,EAC3B,uBAAuB,EACvB,oBAAoB,GACD;IACnB,SAAS,cAAc,CAAC,YAAoB,EAAE,YAAoB,EAAE,KAAuB;QACzF,MAAM,UAAU,GAAG,oBAAoB,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QAC7E,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACnC,MAAM,CAAC,KAAK,CAAC;oBACX,KAAK,EAAE,QAAQ;oBACf,KAAK,EAAE,WAAW;oBAClB,OAAO,EAAE,yDAAyD,UAAU,EAAE;iBAC/E,CAAC,CAAC;YACL,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,YAAY,IAAI,YAAY,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;IACnF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;IACpF,IAAI,iBAAiB,GAAc,EAAE,CAAC;IACtC,IAAI,mBAAmB,EAAE,CAAC;QACxB,iBAAiB,GAAG,2BAA2B,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC;QACzB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBACpC,MAAM,CAAC,KAAK,CAAC;oBACX,KAAK,EAAE,QAAQ;oBACf,KAAK,EAAE,WAAW;oBAClB,OAAO,EAAE,kCAAkC;iBAC5C,CAAC,CAAC;YACL,CAAC;YAED,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACpE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAiC,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG;gBAChB,EAAE,EAAE,EAAsB;gBAC1B,OAAO,EAAE,EAAsB;aAChC,CAAC;YAEF,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;YAChF,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;YAEjF,sCAAsC;YACtC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAW,EAAE,CAChD,OAAO,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC5B,SAAS;gBACX,CAAC;gBACD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM;oBAC/C,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;oBACjF,CAAC,CAAC,EAAE,CAAC;gBAEP,qBAAqB;gBACrB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBAClC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACzE,CAAC;gBAED,uCAAuC;qBAClC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,IAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAE7E,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;wBACxC,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAG,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACnF,aAAa,CACX,SAAS,CAAC,OAAO,EACjB,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAC3D,CAAC;wBAEF,kDAAkD;wBAClD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;4BAChC,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gCACrD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gCAC1C,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gCAC/E,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;4BACtF,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,oBAAoB;qBACf,CAAC;oBACJ,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC3D,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;wBACxD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACzE,CAAC;oBACD,2DAA2D;oBAC3D,MAAM,SAAS,GAAG,iBAAiB,CAAC;wBAClC,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,KAAY,EAAE;wBACrD,OAAO;wBACP,uBAAuB;qBACxB,CAAC,CAAC;oBACH,IAAI,SAAS,EAAE,CAAC;wBACd,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACvE,CAAC;gBACH,CAAC;gBAED,mDAAmD;gBACnD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;oBAChC,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;wBACrD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;4BAC5B,SAAS;wBACX,CAAC;wBACD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC/E,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,IAAI,IAAI,CAAC;YACjB,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC;YAE1D,2CAA2C;YAC3C,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,SAAS,CAAU,EAAE,CAAC;gBAC/C,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,MAAM,IAAI,0BAA0B,KAAK,OAAO,CAAC;oBACjD,MAAM,IAAI,WAAW,CAAC,UAAU,CAAC;oBACjC,MAAM,IAAI,CAAC;yBACR,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;yBAClD,UAAU,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,mCAAmC;oBAC9F,MAAM,IAAI,OAAO,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,IAAI,IAAI,CAAC;YACjB,CAAC;YACD,MAAM,IAAI,UAAU,CAClB,kBAAkB,CAChB,OAAO,EACP,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC,EACzE;gBACE,MAAM;aACP,CACF,CACF,CAAC;QACJ,CAAC;QAED,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAC,OAAO,MAAM,EAAE,CAAC;QAC3D,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4CAA4C;IAC5C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,UAAU,GAAG,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACnE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAc;YACvB,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;SAC3C,CAAC;QAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAY,CAAC;QAChD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAY,CAAC;QAErD,wDAAwD;QACxD,yEAAyE;QACzE,IAAI,UAAU,EAAE,CAAC;YACf,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,0BAA0B;YAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxD,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM;gBAC/C,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBACjE,CAAC,CAAC,EAAE,CAAC;YAEP,qBAAqB;YACrB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAClC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACtF,CAAC;YAED,uCAAuC;iBAClC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnE,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,IAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAE1F,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACxC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAG,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACtF,aAAa,CACX,WAAW,CAAC,QAAQ,EACpB,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAC3D,CAAC;oBACF,kDAAkD;oBAClD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;wBAChC,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;4BACrD,aAAa,CACX,MAAM,CAAC,QAAQ,EACf,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CACxD,CAAC;4BACF,aAAa,CACX,WAAW,CAAC,QAAQ,EACpB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CACxD,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,oBAAoB;iBACf,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACtC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxD,MAAM,QAAQ,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC/E,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjF,CAAC;gBACD,kDAAkD;gBAClD,MAAM,SAAS,GAAG,iBAAiB,CAAC;oBAClC,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,KAAY,EAAE;oBACrD,OAAO;oBACP,uBAAuB;iBACxB,CAAC,CAAC;gBACH,IAAI,SAAS,EAAE,CAAC;oBACd,aAAa,CACX,QAAQ,CAAC,QAAQ,EACjB,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CACxE,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,uBAAuB;IACvB,+BAA+B;IAC/B,kGAAkG;IAClG,KAAK,MAAM,QAAQ,IAAI,aAAa,IAAI,EAAE,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAG,aAAa,CAAC;YACnC,MAAM,EAAE,SAAS;YACjB,EAAE,EAAE,QAAQ,CAAC,MAAM;YACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;SACpB,CAAC,CAAC;QACH,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAY,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEnD,iEAAiE;QACjE,yEAAyE;QACzE,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,SAAS,GAAG;YAChB,EAAE,EAAE,EAAsB;YAC1B,OAAO,EAAE,EAAsB;SAChC,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM;gBAClE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAE,CAAC,SAAS;gBAC5C,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;YAC1B,IAAI,WAAW,GAAG,SAAS,EAAE,MAAM;gBACjC,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC1E,CAAC,CAAC,EAAE,CAAC;YACP,kHAAkH;YAClH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7D,IAAI,cAAc,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxE,WAAW,GAAG,WAAW,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CACtF,CAAC;YACJ,CAAC;YAED,qBAAqB;YACrB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAClC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACtF,CAAC;YAED,uCAAuC;iBAClC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnE,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,IAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1F,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACxC,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAG,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACnF,aAAa,CACX,SAAS,CAAC,OAAO,EACjB,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAC3D,CAAC;oBAEF,kDAAkD;oBAClD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;wBAChC,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;4BACrD,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,SAAS,CAAU,EAAE,CAAC;gCAC/C,aAAa,CACX,SAAS,CAAC,KAAK,CAAC,EAChB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CACxD,CAAC;4BACJ,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,oBAAoB;iBACf,CAAC;gBACJ,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3D,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;oBACxD,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtF,CAAC;gBACD,2DAA2D;gBAC3D,MAAM,SAAS,GAAG,iBAAiB,CAAC;oBAClC,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,KAAY,EAAE;oBACrD,OAAO;oBACP,uBAAuB;iBACxB,CAAC,CAAC;gBACH,IAAI,SAAS,EAAE,CAAC;oBACd,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;YAED,mDAAmD;YACnD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;gBAChC,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACrD,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5F,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,MAAM,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,UAAU,CAAC;YACnB,QAAQ;YACR,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;SAClE,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,MAAM,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,UAAU,CAClB,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CACzF,CAAC;IACJ,CAAC;IAED,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAC,OAAO,MAAM,EAAE,CAAC;IAC3D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}