@craft-ng/dev-tools 0.1.5 → 0.1.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@craft-ng/dev-tools",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "Development tools for ng-craft: ESLint configs, ESLint rules, and codemods",
5
5
  "type": "module",
6
6
  "main": "./src/index.js",
@@ -57,6 +57,13 @@ export type ExistingDependencyGroupsResult = {
57
57
  depsObjectNode?: Node;
58
58
  propertyNodes: Partial<Record<keyof DependencyGroups, Node>>;
59
59
  };
60
+ type InjectedDependencyDescriptor = {
61
+ dependencyText: string;
62
+ entry: GeneratedDependencyEntry;
63
+ };
64
+ type InjectCallDependencyExtractionResult = DependencyExtractionResult & {
65
+ generatedDependencies: InjectedDependencyDescriptor[];
66
+ };
60
67
  type RunFileReport = TransformResult & {
61
68
  filePath: string;
62
69
  };
@@ -74,7 +81,7 @@ export declare function getAngularKind(classDeclaration: ClassDeclaration): Angu
74
81
  export declare function isStandaloneDeclarable(classDeclaration: ClassDeclaration): boolean;
75
82
  export declare function extractDecoratorMetadataDeps(classDeclaration: ClassDeclaration, angularKind?: AngularKind | undefined, options?: AngularBrandCodemodOptions): DependencyExtractionResult;
76
83
  export declare function extractConstructorDeps(classDeclaration: ClassDeclaration): DependencyExtractionResult;
77
- export declare function extractInjectCallDeps(classDeclaration: ClassDeclaration): DependencyExtractionResult;
84
+ export declare function extractInjectCallDeps(classDeclaration: ClassDeclaration): InjectCallDependencyExtractionResult;
78
85
  export declare function mergeDeps(...dependencyGroups: readonly string[][]): string[];
79
86
  export declare function writeGeneratedDepsTypeAlias(sourceFile: SourceFile, className: string, generatedDependencyGroups: GeneratedDependencyGroups): void;
80
87
  export declare function migrateLegacyBrandExport(sourceFile: SourceFile, classDeclaration: ClassDeclaration, className: string): void;
@@ -127,7 +127,13 @@ export function analyzeSourceFileDependencies(sourceFile, options = {}) {
127
127
  providers: mergeDeps(metadataDeps.providers, metadataDeps.viewProviders),
128
128
  };
129
129
  result.generatedTypeName = getGeneratedDepsTypeName(className);
130
- result.generatedDependencyGroups = createGeneratedDependencyGroups(sourceFile, result.dependencyGroups.importDeps, result.dependencyGroups.injected, providedDeps.entries);
130
+ result.generatedDependencyGroups = createGeneratedDependencyGroups(sourceFile, result.dependencyGroups.importDeps, [
131
+ ...constructorDeps.dependencies.map((dependencyText) => ({
132
+ dependencyText,
133
+ entry: createGeneratedDependencyEntry(sourceFile, dependencyText, 'inject'),
134
+ })),
135
+ ...injectCallDeps.generatedDependencies,
136
+ ], providedDeps.entries);
131
137
  return result;
132
138
  }
133
139
  export function findAngularDecoratedClass(sourceFile) {
@@ -233,6 +239,8 @@ export function extractInjectCallDeps(classDeclaration) {
233
239
  var _a;
234
240
  const warnings = [];
235
241
  const dependencies = [];
242
+ const generatedDependencies = [];
243
+ const sourceFile = classDeclaration.getSourceFile();
236
244
  for (const callExpression of classDeclaration.getDescendantsOfKind(SyntaxKind.CallExpression)) {
237
245
  const expression = callExpression.getExpression();
238
246
  const injectMethodName = getInjectMethodName(expression);
@@ -247,8 +255,18 @@ export function extractInjectCallDeps(classDeclaration) {
247
255
  continue;
248
256
  }
249
257
  dependencies.push(dependency);
258
+ generatedDependencies.push({
259
+ dependencyText: dependency,
260
+ entry: injectMethodName === 'inject'
261
+ ? createGeneratedDependencyEntry(sourceFile, dependency, 'inject')
262
+ : createGeneratedInjectHelperDependencyEntry(sourceFile, callExpression, expression, dependency),
263
+ });
250
264
  }
251
- return { dependencies: mergeDeps(dependencies), warnings };
265
+ return {
266
+ dependencies: mergeDeps(dependencies),
267
+ warnings,
268
+ generatedDependencies,
269
+ };
252
270
  }
253
271
  export function mergeDeps(...dependencyGroups) {
254
272
  const seen = new Set();
@@ -282,16 +300,20 @@ function getGeneratedDepsTypeName(className) {
282
300
  return `GenDeps_${className}`;
283
301
  }
284
302
  function createGeneratedDependencyGroups(sourceFile, importDependencies, injectedDependencies, providedEntries) {
285
- const deps = mergeGeneratedDependencyEntries(importDependencies.map((dependency) => createGeneratedDependencyEntry(sourceFile, dependency, 'import')), injectedDependencies.map((dependency) => createGeneratedDependencyEntry(sourceFile, dependency, 'inject')));
303
+ const deps = mergeGeneratedDependencyEntries(importDependencies.map((dependency) => createGeneratedDependencyEntry(sourceFile, dependency, 'import')), injectedDependencies.map((dependency) => dependency.entry));
286
304
  const provided = mergeGeneratedDependencyEntries(providedEntries);
287
305
  const providedKeys = new Set(provided.map((entry) => entry.key));
306
+ const injectedEntriesByKey = new Map(injectedDependencies.map((dependency) => [dependency.entry.key, dependency.entry]));
288
307
  const missingProvider = mergeGeneratedDependencyEntries(injectedDependencies
289
308
  .filter((dependency) => {
290
- const dependencyKey = createGeneratedDependencyKey(dependency);
309
+ const dependencyKey = dependency.entry.key;
291
310
  return (!providedKeys.has(dependencyKey) &&
292
- !isProvidedInInjectableTree(sourceFile, dependency));
311
+ !isDependencyProvidedElsewhere(sourceFile, dependency.dependencyText));
293
312
  })
294
- .map((dependency) => createGeneratedDependencyEntry(sourceFile, dependency, 'inject')));
313
+ .map((dependency) => {
314
+ var _a;
315
+ return (_a = injectedEntriesByKey.get(dependency.entry.key)) !== null && _a !== void 0 ? _a : createGeneratedDependencyEntry(sourceFile, dependency.dependencyText, 'inject');
316
+ }));
295
317
  return {
296
318
  deps,
297
319
  provided,
@@ -331,6 +353,216 @@ function createGeneratedDependencyEntry(sourceFile, dependencyText, context) {
331
353
  typeText: createGeneratedDependencyTypeText(sourceFile, dependencyText),
332
354
  };
333
355
  }
356
+ function createGeneratedInjectHelperDependencyEntry(sourceFile, callExpression, expression, dependencyText) {
357
+ const trackedHelper = resolveTrackedInjectHelper(expression);
358
+ if (!trackedHelper) {
359
+ return createGeneratedDependencyEntry(sourceFile, dependencyText, 'inject');
360
+ }
361
+ const exposureTracking = extractHelperExposureTracking(callExpression);
362
+ return {
363
+ key: trackedHelper.serviceName,
364
+ typeText: createTrackedInjectHelperTypeText(dependencyText, exposureTracking),
365
+ };
366
+ }
367
+ function createTrackedInjectHelperTypeText(dependencyText, exposureTracking) {
368
+ const baseType = `GetInjectedServiceDependencies<typeof ${dependencyText}>`;
369
+ if (!exposureTracking) {
370
+ return [baseType + ' & {', ' usesWholeService: true;', '}'].join('\n');
371
+ }
372
+ return [
373
+ `${baseType} & {`,
374
+ ` derivedPropertiesUsed: ${formatHelperExposurePropertiesType(dependencyText, exposureTracking.usedProperties.map((sourceKey) => ({
375
+ propertyKey: sourceKey,
376
+ sourceKey,
377
+ })))};`,
378
+ ` derivedPropertiesExposed: ${formatHelperExposurePropertiesType(dependencyText, exposureTracking.exposedProperties.map(({ exposedKey, sourceKey }) => ({
379
+ propertyKey: exposedKey,
380
+ sourceKey,
381
+ })))};`,
382
+ '}',
383
+ ].join('\n');
384
+ }
385
+ function formatHelperExposurePropertiesType(dependencyText, properties) {
386
+ if (properties.length === 0) {
387
+ return '{}';
388
+ }
389
+ return [
390
+ '{',
391
+ ...properties.map(({ propertyKey, sourceKey }) => ` ${formatObjectKey(propertyKey)}: ${createTrackedHelperOutputTypeText(dependencyText, sourceKey)};`),
392
+ ' }',
393
+ ].join('\n');
394
+ }
395
+ function createTrackedHelperOutputTypeText(dependencyText, sourceKey) {
396
+ if (sourceKey === '$self') {
397
+ return `GetServiceOutput<typeof ${dependencyText}>`;
398
+ }
399
+ return `GetServiceOutput<typeof ${dependencyText}>[${JSON.stringify(sourceKey)}]`;
400
+ }
401
+ function resolveTrackedInjectHelper(expression) {
402
+ var _a, _b, _c, _d;
403
+ const symbol = (_a = expression.getSymbol()) !== null && _a !== void 0 ? _a : expression.getType().getSymbol();
404
+ const declarations = (_d = (_c = (_b = symbol === null || symbol === void 0 ? void 0 : symbol.getAliasedSymbol()) === null || _b === void 0 ? void 0 : _b.getDeclarations()) !== null && _c !== void 0 ? _c : symbol === null || symbol === void 0 ? void 0 : symbol.getDeclarations()) !== null && _d !== void 0 ? _d : [];
405
+ for (const declaration of declarations) {
406
+ const helper = resolveTrackedInjectHelperFromDeclaration(declaration);
407
+ if (helper) {
408
+ return helper;
409
+ }
410
+ }
411
+ return undefined;
412
+ }
413
+ function resolveTrackedInjectHelperFromDeclaration(declaration) {
414
+ var _a, _b;
415
+ if (!Node.isBindingElement(declaration)) {
416
+ return undefined;
417
+ }
418
+ const objectBindingPattern = declaration.getFirstAncestorByKind(SyntaxKind.ObjectBindingPattern);
419
+ const variableDeclaration = objectBindingPattern === null || objectBindingPattern === void 0 ? void 0 : objectBindingPattern.getFirstAncestorByKind(SyntaxKind.VariableDeclaration);
420
+ const initializer = variableDeclaration === null || variableDeclaration === void 0 ? void 0 : variableDeclaration.getInitializer();
421
+ if (!Node.isCallExpression(initializer) || !isServiceFactoryCall(initializer)) {
422
+ return undefined;
423
+ }
424
+ const [optionsArgument] = initializer.getArguments();
425
+ if (!Node.isObjectLiteralExpression(optionsArgument)) {
426
+ return undefined;
427
+ }
428
+ const nameInitializer = (_a = getObjectPropertyAssignment(optionsArgument, 'name')) === null || _a === void 0 ? void 0 : _a.getInitializer();
429
+ const scopeInitializer = (_b = getObjectPropertyAssignment(optionsArgument, 'scope')) === null || _b === void 0 ? void 0 : _b.getInitializer();
430
+ if (!Node.isStringLiteral(nameInitializer) ||
431
+ !Node.isStringLiteral(scopeInitializer)) {
432
+ return undefined;
433
+ }
434
+ return {
435
+ serviceName: nameInitializer.getLiteralText(),
436
+ scope: scopeInitializer.getLiteralText(),
437
+ };
438
+ }
439
+ function isServiceFactoryCall(callExpression) {
440
+ const expression = callExpression.getExpression();
441
+ if (Node.isIdentifier(expression)) {
442
+ return expression.getText() === 'craftService' || expression.getText() === 'toCraftService';
443
+ }
444
+ if (Node.isPropertyAccessExpression(expression)) {
445
+ const methodName = expression.getName();
446
+ return methodName === 'craftService' || methodName === 'toCraftService';
447
+ }
448
+ return false;
449
+ }
450
+ function extractHelperExposureTracking(callExpression) {
451
+ const exposeArgument = [...callExpression.getArguments()]
452
+ .reverse()
453
+ .find((argument) => Node.isArrowFunction(argument) || Node.isFunctionExpression(argument));
454
+ if (!exposeArgument ||
455
+ (!Node.isArrowFunction(exposeArgument) &&
456
+ !Node.isFunctionExpression(exposeArgument))) {
457
+ return undefined;
458
+ }
459
+ const parameter = exposeArgument.getParameters()[0];
460
+ const nameNode = parameter === null || parameter === void 0 ? void 0 : parameter.getNameNode();
461
+ if (!nameNode || !Node.isObjectBindingPattern(nameNode)) {
462
+ return undefined;
463
+ }
464
+ const bindings = extractHelperExposureBindings(nameNode);
465
+ if (bindings.length === 0) {
466
+ return undefined;
467
+ }
468
+ const returnObjectLiteral = getExposureReturnObjectLiteral(exposeArgument);
469
+ if (!returnObjectLiteral) {
470
+ return undefined;
471
+ }
472
+ const exposedProperties = extractHelperExposedProperties(returnObjectLiteral, bindings);
473
+ const usedProperties = mergeDeps(exposedProperties.map(({ sourceKey }) => sourceKey), extractHelperYieldedProperties(exposeArgument, bindings));
474
+ return {
475
+ usedProperties,
476
+ exposedProperties,
477
+ };
478
+ }
479
+ function extractHelperExposureBindings(bindingPattern) {
480
+ var _a;
481
+ const bindings = [];
482
+ for (const element of bindingPattern.getElements()) {
483
+ const nameNode = element.getNameNode();
484
+ if (!Node.isIdentifier(nameNode)) {
485
+ continue;
486
+ }
487
+ const propertyNameNode = element.getPropertyNameNode();
488
+ const sourceKey = (_a = getStaticPropertyName(propertyNameNode !== null && propertyNameNode !== void 0 ? propertyNameNode : nameNode)) !== null && _a !== void 0 ? _a : nameNode.getText();
489
+ bindings.push({
490
+ localName: nameNode.getText(),
491
+ sourceKey,
492
+ });
493
+ }
494
+ return bindings;
495
+ }
496
+ function getExposureReturnObjectLiteral(exposeArgument) {
497
+ const body = exposeArgument.getBody();
498
+ if (Node.isObjectLiteralExpression(body)) {
499
+ return body;
500
+ }
501
+ if (Node.isParenthesizedExpression(body)) {
502
+ const expression = body.getExpression();
503
+ return Node.isObjectLiteralExpression(expression) ? expression : undefined;
504
+ }
505
+ if (!Node.isBlock(body)) {
506
+ return undefined;
507
+ }
508
+ const returnStatement = [...body.getDescendantsOfKind(SyntaxKind.ReturnStatement)]
509
+ .reverse()
510
+ .find((statement) => Node.isObjectLiteralExpression(statement.getExpression()));
511
+ const expression = returnStatement === null || returnStatement === void 0 ? void 0 : returnStatement.getExpression();
512
+ return Node.isObjectLiteralExpression(expression) ? expression : undefined;
513
+ }
514
+ function extractHelperExposedProperties(objectLiteral, bindings) {
515
+ const bindingMap = new Map(bindings.map((binding) => [binding.localName, binding.sourceKey]));
516
+ const exposedProperties = [];
517
+ for (const property of objectLiteral.getProperties()) {
518
+ if (Node.isShorthandPropertyAssignment(property)) {
519
+ const sourceKey = bindingMap.get(property.getName());
520
+ if (sourceKey) {
521
+ exposedProperties.push({
522
+ exposedKey: property.getName(),
523
+ sourceKey,
524
+ });
525
+ }
526
+ continue;
527
+ }
528
+ if (!Node.isPropertyAssignment(property)) {
529
+ continue;
530
+ }
531
+ const exposedKey = getStaticPropertyName(property.getNameNode());
532
+ const initializer = property.getInitializer();
533
+ if (!exposedKey || !Node.isIdentifier(initializer)) {
534
+ continue;
535
+ }
536
+ const sourceKey = bindingMap.get(initializer.getText());
537
+ if (!sourceKey) {
538
+ continue;
539
+ }
540
+ exposedProperties.push({
541
+ exposedKey,
542
+ sourceKey,
543
+ });
544
+ }
545
+ return exposedProperties;
546
+ }
547
+ function extractHelperYieldedProperties(exposeArgument, bindings) {
548
+ const bindingMap = new Map(bindings.map((binding) => [binding.localName, binding.sourceKey]));
549
+ const yieldedProperties = [];
550
+ for (const yieldExpression of exposeArgument.getDescendantsOfKind(SyntaxKind.YieldExpression)) {
551
+ const expression = yieldExpression.getExpression();
552
+ if (!Node.isCallExpression(expression)) {
553
+ continue;
554
+ }
555
+ const target = expression.getExpression();
556
+ if (!Node.isIdentifier(target)) {
557
+ continue;
558
+ }
559
+ const sourceKey = bindingMap.get(target.getText());
560
+ if (sourceKey) {
561
+ yieldedProperties.push(sourceKey);
562
+ }
563
+ }
564
+ return yieldedProperties;
565
+ }
334
566
  function createGeneratedDependencyKey(dependencyText) {
335
567
  var _a;
336
568
  const lastSegment = (_a = dependencyText.split('.').pop()) !== null && _a !== void 0 ? _a : dependencyText;
@@ -430,10 +662,19 @@ function formatGeneratedDependencyObject(entries) {
430
662
  }
431
663
  return [
432
664
  '{',
433
- ...entries.map((entry) => ` ${formatObjectKey(entry.key)}: ${entry.typeText};`),
665
+ ...entries.map((entry) => formatGeneratedDependencyEntry(entry)),
434
666
  ' }',
435
667
  ].join('\n');
436
668
  }
669
+ function formatGeneratedDependencyEntry(entry) {
670
+ const typeLines = entry.typeText.split('\n');
671
+ const lines = [
672
+ ` ${formatObjectKey(entry.key)}: ${typeLines[0]}`,
673
+ ...typeLines.slice(1).map((line) => ` ${line}`),
674
+ ];
675
+ lines[lines.length - 1] += ';';
676
+ return lines.join('\n');
677
+ }
437
678
  function formatObjectKey(key) {
438
679
  return /^[$A-Z_][0-9A-Z_$]*$/i.test(key) ? key : `'${key}'`;
439
680
  }
@@ -524,7 +765,11 @@ function getInjectionHelperDependency(expression) {
524
765
  return undefined;
525
766
  }
526
767
  export function ensureHelperImports(sourceFile, helperImportPath) {
527
- const missingImports = ['GetDeps'].filter((importName) => !hasLocalNamedImport(sourceFile, helperImportPath, importName));
768
+ const missingImports = [
769
+ 'GetDeps',
770
+ 'GetInjectedServiceDependencies',
771
+ 'GetServiceOutput',
772
+ ].filter((importName) => !hasLocalNamedImport(sourceFile, helperImportPath, importName));
528
773
  if (missingImports.length === 0) {
529
774
  return;
530
775
  }
@@ -1107,6 +1352,46 @@ function isProvidedInInjectableTree(sourceFile, dependencyText) {
1107
1352
  !Node.isFalseLiteral(initializer) &&
1108
1353
  !(Node.isIdentifier(initializer) && initializer.getText() === 'undefined'));
1109
1354
  }
1355
+ function isDependencyProvidedElsewhere(sourceFile, dependencyText) {
1356
+ const trackedHelper = resolveTrackedInjectHelperByName(sourceFile, dependencyText);
1357
+ if (trackedHelper) {
1358
+ return trackedHelper.scope === 'global' || trackedHelper.scope === 'function';
1359
+ }
1360
+ return isProvidedInInjectableTree(sourceFile, dependencyText);
1361
+ }
1362
+ function resolveTrackedInjectHelperByName(sourceFile, dependencyText) {
1363
+ const [rootIdentifier] = dependencyText.split('.');
1364
+ if (!rootIdentifier) {
1365
+ return undefined;
1366
+ }
1367
+ for (const declaration of resolveDependencyIdentifierDeclarations(sourceFile, rootIdentifier)) {
1368
+ const helper = resolveTrackedInjectHelperFromDeclaration(declaration);
1369
+ if (helper) {
1370
+ return helper;
1371
+ }
1372
+ }
1373
+ return undefined;
1374
+ }
1375
+ function resolveDependencyIdentifierDeclarations(sourceFile, rootIdentifier) {
1376
+ var _a, _b, _c, _d;
1377
+ for (const importDeclaration of sourceFile.getImportDeclarations()) {
1378
+ const namedImport = importDeclaration.getNamedImports().find((specifier) => {
1379
+ var _a, _b;
1380
+ const localName = (_b = (_a = specifier.getAliasNode()) === null || _a === void 0 ? void 0 : _a.getText()) !== null && _b !== void 0 ? _b : specifier.getNameNode().getText();
1381
+ return localName === rootIdentifier;
1382
+ });
1383
+ if (!namedImport) {
1384
+ continue;
1385
+ }
1386
+ const identifier = (_a = namedImport.getAliasNode()) !== null && _a !== void 0 ? _a : namedImport.getNameNode();
1387
+ const symbol = (_b = identifier.getSymbol()) !== null && _b !== void 0 ? _b : identifier.getType().getSymbol();
1388
+ const aliasedSymbol = (_c = symbol === null || symbol === void 0 ? void 0 : symbol.getAliasedSymbol()) !== null && _c !== void 0 ? _c : symbol;
1389
+ return (_d = aliasedSymbol === null || aliasedSymbol === void 0 ? void 0 : aliasedSymbol.getDeclarations()) !== null && _d !== void 0 ? _d : [namedImport];
1390
+ }
1391
+ return sourceFile
1392
+ .getDescendantsOfKind(SyntaxKind.BindingElement)
1393
+ .filter((bindingElement) => bindingElement.getName() === rootIdentifier);
1394
+ }
1110
1395
  function getDependencyTextFromTypeNode(typeNode) {
1111
1396
  if (isPrimitiveTypeNode(typeNode)) {
1112
1397
  return undefined;
@@ -1268,7 +1553,11 @@ function getExportRewriteSafety(sourceFile, classDeclaration, className) {
1268
1553
  : { safe: false, warnings };
1269
1554
  }
1270
1555
  function getHelperImportSafety(sourceFile, helperImportPath) {
1271
- const warnings = ['GetDeps']
1556
+ const warnings = [
1557
+ 'GetDeps',
1558
+ 'GetInjectedServiceDependencies',
1559
+ 'GetServiceOutput',
1560
+ ]
1272
1561
  .filter((helperName) => hasConflictingTopLevelBinding(sourceFile, helperImportPath, helperName))
1273
1562
  .map((helperName) => `Skipped file because "${helperName}" is already bound to a different top-level symbol.`);
1274
1563
  return warnings.length === 0
@@ -1 +1 @@
1
- {"version":3,"file":"angular-brand-codemod.js","sourceRoot":"","sources":["../../../../../libs/dev-tools/src/scripts/angular-brand-codemod.ts"],"names":[],"mappings":";AAAA,OAAO,EAOL,IAAI,EAEJ,OAAO,EAEP,SAAS,EAET,UAAU,EAEV,EAAE,GACH,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA2GzC,MAAM,oBAAoB,GAAgC;IACxD,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;CACzB,CAAC;AAEF,MAAM,eAAe,GAAsB;IACzC,gBAAgB,EAAE,gBAAgB;IAClC,kCAAkC,EAAE,KAAK;IACzC,gBAAgB,EAAE,IAAI;IACtB,oBAAoB,EAAE,IAAI;CAC3B,CAAC;AAEF,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,KAAK;IACL,QAAQ;IACR,SAAS;IACT,OAAO;IACP,OAAO;IACP,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,WAAW;IACX,SAAS;IACT,MAAM;IACN,OAAO;IACP,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,eAAe;IACf,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG;IAC9B,OAAO;IACP,SAAS;IACT,eAAe;IACf,eAAe;IACf,eAAe;IACf,iBAAiB;CAClB,CAAC;AAEF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,UAAU;IACV,MAAM;IACN,KAAK;IACL,QAAQ;IACR,UAAU;IACV,MAAM;IACN,cAAc;IACd,SAAS;IACT,KAAK;CACN,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CACjC,UAAsB,EACtB,UAAsC,EAAE;IAExC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,6BAA6B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACpE,MAAM,MAAM,mCACP,QAAQ,KACX,OAAO,EAAE,KAAK,GACf,CAAC;IAEF,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;IAE9D,IAAI,QAAQ,CAAC,OAAO,IAAI,CAAC,gBAAgB,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;QACxE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,YAAY,GAAG,qBAAqB,CACxC,UAAU,EACV,iBAAiB,CAAC,gBAAgB,CACnC,CAAC;IACF,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAE5C,wBAAwB,CAAC,UAAU,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAClE,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACpE,oCAAoC,CAClC,UAAU,EACV,MAAM,CAAC,yBAAyB,CACjC,CAAC;IACF,2BAA2B,CACzB,UAAU,EACV,SAAS,EACT,MAAM,CAAC,yBAAyB,CACjC,CAAC;IACF,UAAU,CAAC,eAAe,EAAE,CAAC;IAE7B,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC;IACzD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,UAAsB,EACtB,UAAsC,EAAE;IAExC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,MAAM,GAA6B;QACvC,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,EAAE;QAChB,gBAAgB,EAAE,qBAAqB,EAAE;QACzC,yBAAyB,EAAE,8BAA8B,EAAE;KAC5D,CAAC;IAEF,MAAM,YAAY,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;IAC9C,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;IAC1C,MAAM,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;IAExD,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;IAElE,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IACE,iBAAiB,CAAC,kCAAkC;QACpD,CAAC,WAAW,KAAK,WAAW,IAAI,WAAW,KAAK,WAAW,CAAC;QAC5D,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,EACzC,CAAC;QACD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClB,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,SAAS,uEAAuE,CACnH,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,YAAY,GAChB,WAAW,KAAK,WAAW,IAAI,WAAW,KAAK,WAAW;QACxD,CAAC,CAAC,iCAAiC,CAC/B,gBAAgB,EAChB,WAAW,EACX,iBAAiB,CAClB;QACH,CAAC,CAAC,6BAA6B,EAAE,CAAC;IACtC,MAAM,YAAY,GAChB,WAAW,KAAK,WAAW,IAAI,WAAW,KAAK,WAAW;QACxD,CAAC,CAAC,2BAA2B,CACzB,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,iBAAiB,CAClB;QACH,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACpC,MAAM,eAAe,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IAE/D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClB,GAAG,YAAY,CAAC,QAAQ,EACxB,GAAG,YAAY,CAAC,QAAQ,EACxB,GAAG,eAAe,CAAC,QAAQ,EAC3B,GAAG,cAAc,CAAC,QAAQ,CAC3B,CAAC;IACF,MAAM,CAAC,YAAY,GAAG,SAAS,CAC7B,eAAe,CAAC,YAAY,EAC5B,cAAc,CAAC,YAAY,EAC3B,YAAY,CAAC,OAAO,EACpB,YAAY,CAAC,cAAc,EAC3B,YAAY,CAAC,SAAS,EACtB,YAAY,CAAC,aAAa,CAC3B,CAAC;IACF,MAAM,CAAC,gBAAgB,GAAG;QACxB,QAAQ,EAAE,SAAS,CACjB,eAAe,CAAC,YAAY,EAC5B,cAAc,CAAC,YAAY,CAC5B;QACD,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC;QACxE,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,aAAa,CAAC;KACzE,CAAC;IACF,MAAM,CAAC,iBAAiB,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC/D,MAAM,CAAC,yBAAyB,GAAG,+BAA+B,CAChE,UAAU,EACV,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAClC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAChC,YAAY,CAAC,OAAO,CACrB,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,UAAsB;IAEtB,MAAM,gBAAgB,GAAG,UAAU;SAChC,UAAU,EAAE;SACZ,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE;QACxB,MAAM,WAAW,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACrD,OAAO,WAAW,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,CAAC,CAAC;SACD,MAAM,CACL,CACE,KAAK,EAIL,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CACpB,CAAC;IAEJ,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE;gBACR,oCAAoC,gBAAgB,CAAC,MAAM,6BAA6B;aACzF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,GAAG,gBAAgB,CAAC;IAC7D,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,gBAAgB;YAChB,WAAW;YACX,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,CAAC,mDAAmD,CAAC;SAChE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,gBAAgB;QAChB,WAAW;QACX,SAAS;QACT,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,gBAAkC;IAElC,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,aAAa,EAAE,EAAE,CAAC;QACzD,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,aAAa,IAAI,aAAa,IAAI,oBAAoB,EAAE,CAAC;YAC3D,OAAO,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,gBAAkC;IAElC,MAAM,WAAW,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACrD,IAAI,WAAW,KAAK,WAAW,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;IAC9D,MAAM,kBAAkB,GAAG,QAAQ;QACjC,CAAC,CAAC,2BAA2B,CAAC,QAAQ,EAAE,YAAY,CAAC;QACrD,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,WAAW,GAAG,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,cAAc,EAAE,CAAC;IAEzD,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,gBAAkC,EAClC,WAAW,GAAG,cAAc,CAAC,gBAAgB,CAAC,EAC9C,UAAsC,EAAE;IAExC,IAAI,WAAW,KAAK,WAAW,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;QAC/D,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,MAAM,GAAG,iCAAiC,CAC9C,gBAAgB,EAChB,WAAW,EACX,gBAAgB,CAAC,OAAO,CAAC,CAC1B,CAAC;IAEF,OAAO;QACL,YAAY,EAAE,SAAS,CACrB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,aAAa,CACrB;QACD,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,gBAAkC;IAElC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,sBAAsB,IAAI,gBAAgB,CAAC,eAAe,EAAE,EAAE,CAAC;QACxE,KAAK,MAAM,SAAS,IAAI,sBAAsB,CAAC,aAAa,EAAE,EAAE,CAAC;YAC/D,MAAM,WAAW,GAAG,uBAAuB,CACzC,SAAS,CAAC,aAAa,EAAE,EACzB,QAAQ,CACT,CAAC;YACF,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;gBACtB,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;oBAC3B,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC5C,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CACX,kCAAkC,SAAS,CAAC,OAAO,EAAE,2BAA2B,CACjF,CAAC;gBACF,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GAAG,6BAA6B,CAAC,QAAQ,CAAC,CAAC;YAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,QAAQ,CAAC,IAAI,CACX,kCAAkC,SAAS,CAAC,OAAO,EAAE,mBAAmB,QAAQ,CAAC,OAAO,EAAE,uCAAuC,CAClI,CAAC;gBACF,SAAS;YACX,CAAC;YAED,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;gBACvD,QAAQ,CAAC,IAAI,CACX,mCAAmC,UAAU,gEAAgE,CAC9G,CAAC;gBACF,SAAS;YACX,CAAC;YAED,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,gBAAkC;;IAElC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,cAAc,IAAI,gBAAgB,CAAC,oBAAoB,CAChE,UAAU,CAAC,cAAc,CAC1B,EAAE,CAAC;QACF,MAAM,UAAU,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC;QAClD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,UAAU,CAAC,QAAQ,CAAC,CAAA,EAAE,CAAC;YAC5C,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GACd,gBAAgB,KAAK,QAAQ;YAC3B,CAAC,CAAC,8BAA8B,CAAC,cAAc,CAAC;YAChD,CAAC,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,CACX,WAAW,gBAAgB,cAAc,MAAA,gBAAgB,CAAC,OAAO,EAAE,mCAAI,iBAAiB,kDAAkD,CAC3I,CAAC;YACF,SAAS;QACX,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAG,gBAAqC;IAChE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,KAAK,MAAM,UAAU,IAAI,KAAK,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzB,SAAS;YACX,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACrB,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;QACL,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B;IACrC,OAAO;QACL,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,EAAE;QACZ,eAAe,EAAE,EAAE;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,SAAiB;IACjD,OAAO,WAAW,SAAS,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,+BAA+B,CACtC,UAAsB,EACtB,kBAA4B,EAC5B,oBAA8B,EAC9B,eAA2C;IAE3C,MAAM,IAAI,GAAG,+BAA+B,CAC1C,kBAAkB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CACpC,8BAA8B,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CACjE,EACD,oBAAoB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CACtC,8BAA8B,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CACjE,CACF,CAAC;IACF,MAAM,QAAQ,GAAG,+BAA+B,CAAC,eAAe,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,MAAM,eAAe,GAAG,+BAA+B,CACrD,oBAAoB;SACjB,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE;QACrB,MAAM,aAAa,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;QAC/D,OAAO,CACL,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC;YAChC,CAAC,0BAA0B,CAAC,UAAU,EAAE,UAAU,CAAC,CACpD,CAAC;IACJ,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAClB,8BAA8B,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CACjE,CACJ,CAAC;IAEF,OAAO;QACL,IAAI;QACJ,QAAQ;QACR,eAAe;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CACtC,GAAG,MAA6C;IAEhD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoC,CAAC;IAE5D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,8BAA8B,CACrC,UAAsB,EACtB,cAAsB,EACtB,OAA4B;IAE5B,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,oBAAoB,GAAG,kCAAkC,CAC7D,UAAU,EACV,cAAc,CACf,CAAC;QACF,IAAI,oBAAoB,EAAE,CAAC;YACzB,MAAM,iBAAiB,GAAG,wBAAwB,CAChD,oBAAoB,CAAC,SAAS,CAC/B,CAAC;YACF,OAAO;gBACL,GAAG,EAAE,iBAAiB;gBACtB,QAAQ,EAAE,iBAAiB;gBAC3B,UAAU,EAAE,oBAAoB,CAAC,eAAe;oBAC9C,CAAC,CAAC;wBACE,eAAe,EAAE,oBAAoB,CAAC,eAAe;wBACrD,IAAI,EAAE,iBAAiB;qBACxB;oBACH,CAAC,CAAC,SAAS;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,EAAE,4BAA4B,CAAC,cAAc,CAAC;QACjD,QAAQ,EAAE,iCAAiC,CAAC,UAAU,EAAE,cAAc,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,cAAsB;;IAC1D,MAAM,WAAW,GAAG,MAAA,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,mCAAI,cAAc,CAAC;IACtE,MAAM,WAAW,GAAG,6BAA6B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvD,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,iCAAiC,CACxC,UAAsB,EACtB,cAAsB;IAEtB,IAAI,sBAAsB,CAAC,cAAc,CAAC,EAAE,CAAC;QAC3C,OAAO,qBAAqB,cAAc,GAAG,CAAC;IAChD,CAAC;IAED,MAAM,UAAU,GAAG,0BAA0B,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC1E,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC9D,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,UAAU,cAAc,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,sBAAsB,CAAC,cAAsB;;IACpD,MAAM,WAAW,GAAG,MAAA,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,mCAAI,cAAc,CAAC;IACtE,OAAO,CACL,0BAA0B,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED,SAAS,kCAAkC,CACzC,UAAsB,EACtB,cAAsB;IAEtB,MAAM,UAAU,GAAG,0BAA0B,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC1E,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAChE,IACE,WAAW,KAAK,WAAW;QAC3B,WAAW,KAAK,WAAW;QAC3B,WAAW,KAAK,MAAM,EACtB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;IACxD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,qBAAqB,GAAG,UAAU,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC;IAC1E,IACE,qBAAqB,KAAK,UAAU;QACpC,qBAAqB,CAAC,iBAAiB,EAAE,EACzC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,SAAS;QACT,eAAe,EAAE,UAAU,CAAC,eAAe;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,oCAAoC,CAC3C,UAAsB,EACtB,yBAAoD;;IAEpD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEpD,KAAK,MAAM,KAAK,IAAI,yBAAyB,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GACf,MAAA,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,mCAAI,IAAI,GAAG,EAAU,CAAC;QAC1E,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC,IAAI,YAAY,EAAE,CAAC;QAC1D,MAAM,cAAc,GAAG,UAAU;aAC9B,qBAAqB,EAAE;aACvB,IAAI,CACH,CAAC,iBAAiB,EAAE,EAAE,CACpB,iBAAiB,CAAC,uBAAuB,EAAE,KAAK,eAAe,CAClE,CAAC;QAEJ,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,CAAC,eAAe,CAC5B,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAC7D,CAAC;YACF,SAAS;QACX,CAAC;QAED,UAAU,CAAC,oBAAoB,CAAC;YAC9B,eAAe;YACf,YAAY,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC5C,IAAI;gBACJ,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CACpC,yBAAoD;IAEpD,OAAO;QACL,GAAG;QACH,WAAW,+BAA+B,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG;QAC7E,eAAe,+BAA+B,CAAC,yBAAyB,CAAC,QAAQ,CAAC,GAAG;QACrF,sBAAsB,+BAA+B,CAAC,yBAAyB,CAAC,eAAe,CAAC,GAAG;QACnG,GAAG;KACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,+BAA+B,CACtC,OAAmC;IAEnC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,GAAG;QACH,GAAG,OAAO,CAAC,GAAG,CACZ,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,QAAQ,GAAG,CACnE;QACD,KAAK;KACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,UAAsB,EACtB,SAAiB,EACjB,yBAAoD;IAEpD,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,WAAW,6BAA6B,CAAC,yBAAyB,CAAC,GAAG,CAAC;IAC7F,MAAM,iBAAiB,GAAG,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAErE,IAAI,iBAAiB,EAAE,CAAC;QACtB,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACtC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,UAAU,CAAC,YAAY,CAAC;QACtB,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,aAAa;KACpB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,UAAsB,EACtB,gBAAkC,EAClC,SAAiB;IAEjB,MAAM,QAAQ,GAAG,4BAA4B,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACrE,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QACtD,OAAO;IACT,CAAC;IAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAC3D,UAAU,CAAC,gBAAgB,CAC5B,CAAC;IACF,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM,EAAE,CAAC;IAE3B,IACE,CAAC,gBAAgB,CAAC,eAAe,EAAE;QACnC,CAAC,gBAAgB,CAAC,UAAU,EAAE;QAC9B,gBAAgB,EAChB,CAAC;QACD,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,SAAS,+BAA+B,CACtC,IAAU,EACV,QAAkB;IAElB,OAAO;QACL,KAAK,EAAE,IAAI;QACX,QAAQ;QACR,gBAAgB,EAAE,qBAAqB,EAAE;QACzC,oBAAoB,EAAE,IAAI;QAC1B,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,EAAE;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,mCAAmC,CAC1C,aAAsC,EACtC,YAAoC,EACpC,QAAkB,EAClB,aAA8D;IAE9D,MAAM,QAAQ,GAAG,2BAA2B,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC1E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,6BAA6B,YAAY,UAAU,CAAC,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,aAAa,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;IACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;IAC9C,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,QAAQ,YAAY,0BAA0B,CAAC,CAAC;QAC9D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,CACX,QAAQ,YAAY,sCAAsC,OAAO,CAAC,OAAO,EAAE,EAAE,CAC9E,CAAC;YACF,SAAS;QACX,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAgB;IAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,8BAA8B,CACrC,cAAiD;IAEjD,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,YAAY,EAAE,CAAC;IAC9C,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,4BAA4B,CAAC,UAAgB;IACpD,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,UAAsB,EACtB,gBAAwB;IAExB,MAAM,cAAc,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CACvC,CAAC,UAAU,EAAE,EAAE,CACb,CAAC,mBAAmB,CAAC,UAAU,EAAE,gBAAgB,EAAE,UAAU,CAAC,CACjE,CAAC;IAEF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,UAAU;SAC9B,qBAAqB,EAAE;SACvB,IAAI,CACH,CAAC,iBAAiB,EAAE,EAAE,CACpB,iBAAiB,CAAC,uBAAuB,EAAE,KAAK,gBAAgB,CACnE,CAAC;IAEJ,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,eAAe,CAC5B,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAC3D,CAAC;QACF,OAAO;IACT,CAAC;IAED,UAAU,CAAC,oBAAoB,CAAC;QAC9B,eAAe,EAAE,gBAAgB;QACjC,YAAY,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1C,IAAI;YACJ,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;KACJ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,UAAsB,EACtB,SAAkB;IAElB,MAAM,aAAa,GAAG,UAAU;SAC7B,oBAAoB,EAAE;SACtB,IAAI,CAAC,CAAC,gBAAgB,EAAE,EAAE;QACzB,IAAI,gBAAgB,CAAC,cAAc,EAAE,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,EAAE,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC;QAC9C,IACE,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;YAC9B,UAAU,CAAC,OAAO,EAAE,KAAK,oBAAoB,EAC7C,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;QAChD,OAAO,CACL,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,SAAS,CACtE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,EAAE;YACZ,gBAAgB,EAAE,qBAAqB,EAAE;YACzC,aAAa,EAAE,EAAE;SAClB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,EAAE,CAAC;IACjD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,OAAO,+BAA+B,CAAC,aAAa,EAAE;YACpD,wEAAwE;SACzE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,EAAE,YAAY,CAAC,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;IACnD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;QACzC,OAAO,+BAA+B,CAAC,aAAa,EAAE;YACpD,4EAA4E;SAC7E,CAAC,CAAC;IACL,CAAC;IAED,MAAM,cAAc,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;IACpD,IACE,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;QAClC,cAAc,CAAC,OAAO,EAAE,KAAK,MAAM,EACnC,CAAC;QACD,OAAO,+BAA+B,CAAC,YAAY,EAAE;YACnD,8DAA8D;SAC/D,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;IACjD,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD,OAAO,+BAA+B,CAAC,YAAY,EAAE;YACnD,kDAAkD;SACnD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAoD,EAAE,CAAC;IAC1E,MAAM,gBAAgB,GAAqB;QACzC,QAAQ,EAAE,mCAAmC,CAC3C,UAAU,EACV,UAAU,EACV,QAAQ,EACR,aAAa,CACd;QACD,UAAU,EAAE,mCAAmC,CAC7C,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,CACd;QACD,SAAS,EAAE,mCAAmC,CAC5C,UAAU,EACV,WAAW,EACX,QAAQ,EACR,aAAa,CACd;KACF,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,IAAI;QACX,QAAQ;QACR,gBAAgB;QAChB,oBAAoB,EAAE,aAAa;QACnC,cAAc,EAAE,UAAU;QAC1B,aAAa;KACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,gBAAkC;IAElC,OAAO;QACL,aAAa,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACpD,eAAe,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACxD,cAAc,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;KACvD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAgB,sBAAsB;yDAC1C,UAKI,EAAE;;QAEN,MAAM,OAAO,GAAG,OAAO,CAAC,MAAA,OAAO,CAAC,OAAO,mCAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1D,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB;YAC/C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACnC,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAE9C,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACrC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAE7B,MAAM,OAAO,GAAe;YAC1B,gBAAgB,EAAE,CAAC;YACnB,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC;YACX,kBAAkB,EAAE;gBAClB,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,CAAC;aACR;YACD,KAAK,EAAE,EAAE;SACV,CAAC;QAEF,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;gBACrD,SAAS;YACX,CAAC;YAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,MAAM,mCACP,MAAM,KACT,QAAQ,EAAE,UAAU,CAAC,WAAW,EAAE,GACnC,CAAC;YAEF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAE3C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC;gBAC9B,IACE,MAAM,CAAC,WAAW;oBAClB,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,kBAAkB,EAChD,CAAC;oBACD,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAA0B,CAAC,IAAI,CAAC,CAAC;gBACrE,CAAC;gBAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBACpB,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,aAAa,CAAC,MAAM,EAAE,MAAA,OAAO,CAAC,GAAG,mCAAI,OAAO,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC;QAED,UAAU,CAAC,OAAO,EAAE,MAAA,OAAO,CAAC,GAAG,mCAAI,OAAO,CAAC,GAAG,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC;IACjB,CAAC;CAAA;AAED,SAAS,gBAAgB,CACvB,OAAmC;;IAEnC,OAAO;QACL,gBAAgB,EACd,MAAA,OAAO,CAAC,gBAAgB,mCAAI,eAAe,CAAC,gBAAgB;QAC9D,kCAAkC,EAChC,MAAA,OAAO,CAAC,kCAAkC,mCAC1C,eAAe,CAAC,kCAAkC;QACpD,gBAAgB,EACd,MAAA,OAAO,CAAC,gBAAgB,mCAAI,eAAe,CAAC,gBAAgB;QAC9D,oBAAoB,EAClB,MAAA,OAAO,CAAC,oBAAoB,mCAAI,eAAe,CAAC,oBAAoB;KACvE,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,MAAuB,EAAE,QAAkB;IACvD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAoB;IAC5C,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;IAC7C,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAAE,CAAC;YAChD,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,WAAwB;IAC9C,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,WAAW;YACd,OAAO,YAAY,CAAC;QACtB,KAAK,WAAW;YACd,OAAO,YAAY,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,OAAO,CAAC;QACjB,KAAK,YAAY;YACf,OAAO,aAAa,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CACjC,gBAAkC;;IAElC,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,aAAa,EAAE,EAAE,CAAC;QACzD,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,SAAS;QACX,CAAC;QAED,MAAM,cAAc,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;QACrD,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,YAAY,EAAE,mCAAI,EAAE,CAAC;QACxD,IAAI,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,2BAA2B,CAClC,SAAoB;IAEpB,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,aAAa,IAAI,aAAa,IAAI,oBAAoB;QAC3D,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC;QACrC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,2BAA2B,CAClC,aAAsC,EACtC,YAAoB;IAEpB,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE;QACrE,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,qBAAqB,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,KAAK,YAAY,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC;AAED,SAAS,iCAAiC,CACxC,gBAAkC,EAClC,WAAwB,EACxB,OAA0B;IAE1B,MAAM,QAAQ,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,6BAA6B,EAAE,CAAC;IAE/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,OAAO,GAAG,4BAA4B,CAC3C,QAAQ,EACR,SAAS,EACT,SAAS,EACT,MAAM,CAAC,QAAQ,CAChB,CAAC;IACF,MAAM,CAAC,cAAc,GAAG,4BAA4B,CAClD,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,CAAC,QAAQ,CAChB,CAAC;IAEF,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,MAAM,CAAC,SAAS,GAAG,4BAA4B,CAC7C,QAAQ,EACR,WAAW,EACX,WAAW,EACX,MAAM,CAAC,QAAQ,CAChB,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,oBAAoB,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;QAChE,MAAM,CAAC,aAAa,GAAG,4BAA4B,CACjD,QAAQ,EACR,eAAe,EACf,eAAe,EACf,MAAM,CAAC,QAAQ,CAChB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,6BAA6B;IACpC,OAAO;QACL,OAAO,EAAE,EAAE;QACX,cAAc,EAAE,EAAE;QAClB,SAAS,EAAE,EAAE;QACb,aAAa,EAAE,EAAE;QACjB,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,UAAsB,EACtB,gBAAkC,EAClC,WAAwB,EACxB,OAA0B;IAE1B,MAAM,QAAQ,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAA+B,EAAE,CAAC;IAE/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CACV,GAAG,sCAAsC,CACvC,UAAU,EACV,QAAQ,EACR,WAAW,EACX,QAAQ,CACT,CACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,oBAAoB,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;QAChE,OAAO,CAAC,IAAI,CACV,GAAG,sCAAsC,CACvC,UAAU,EACV,QAAQ,EACR,eAAe,EACf,QAAQ,CACT,CACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,+BAA+B,CAAC,OAAO,CAAC;QACjD,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,SAAS,sCAAsC,CAC7C,UAAsB,EACtB,QAAiC,EACjC,YAA2C,EAC3C,QAAkB;IAElB,MAAM,QAAQ,GAAG,2BAA2B,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;IAC9C,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,CAAC;QAChD,QAAQ,CAAC,IAAI,CACX,8BAA8B,YAAY,qCAAqC,CAChF,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,yCAAyC,CAC9C,UAAU,EACV,WAAW,EACX,YAAY,EACZ,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,SAAS,yCAAyC,CAChD,UAAsB,EACtB,YAAoC,EACpC,OAAsC,EACtC,QAAkB;IAElB,MAAM,OAAO,GAA+B,EAAE,CAAC;IAE/C,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,CACV,GAAG,yCAAyC,CAC1C,UAAU,EACV,OAAO,EACP,OAAO,EACP,QAAQ,CACT,CACF,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,QAAQ,CAAC,IAAI,CACX,8BAA8B,OAAO,uBAAuB,CAC7D,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,MAAM,eAAe,GAAG,uBAAuB,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,QAAQ,CAAC,IAAI,CACX,qCAAqC,OAAO,CAAC,OAAO,EAAE,SAAS,OAAO,IAAI,CAC3E,CAAC;gBACF,SAAS;YACX,CAAC;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,EAAE,4BAA4B,CAAC,eAAe,CAAC;gBAClD,QAAQ,EAAE,qBAAqB,eAAe,GAAG;aAClD,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,EAAE,4BAA4B,CAAC,gBAAgB,CAAC;gBACnD,QAAQ,EAAE,iCAAiC,CACzC,UAAU,EACV,gBAAgB,CACjB;aACF,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C,MAAM,aAAa,GAAG,+CAA+C,CACnE,UAAU,EACV,OAAO,EACP,OAAO,EACP,QAAQ,CACT,CAAC;YACF,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC9B,CAAC;YACD,SAAS;QACX,CAAC;QAED,QAAQ,CAAC,IAAI,CACX,+BAA+B,OAAO,CAAC,OAAO,EAAE,SAAS,OAAO,uBAAuB,CACxF,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,+CAA+C,CACtD,UAAsB,EACtB,aAAsC,EACtC,OAAsC,EACtC,QAAkB;;IAElB,MAAM,eAAe,GAAG,2BAA2B,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,uBAAuB,CACzC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,cAAc,EAAE,CAClC,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CACX,+BAA+B,OAAO,oCAAoC,CAC3E,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,uBAAuB,CACtC,MAAA,2BAA2B,CAAC,aAAa,EAAE,UAAU,CAAC,0CAAE,cAAc,EAAE,CACzE,CAAC;IACF,MAAM,WAAW,GAAG,uBAAuB,CACzC,MAAA,2BAA2B,CAAC,aAAa,EAAE,aAAa,CAAC,0CAAE,cAAc,EAAE,CAC5E,CAAC;IACF,MAAM,QAAQ,GAAG,uBAAuB,CACtC,MAAA,2BAA2B,CAAC,aAAa,EAAE,UAAU,CAAC,0CAAE,cAAc,EAAE,CACzE,CAAC;IACF,MAAM,UAAU,GAAG,uBAAuB,CACxC,MAAA,2BAA2B,CAAC,aAAa,EAAE,YAAY,CAAC,0CAAE,cAAc,EAAE,CAC3E,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;YACL,GAAG,EAAE,4BAA4B,CAAC,WAAW,CAAC;YAC9C,QAAQ,EAAE,qBAAqB,UAAU,GAAG;SAC7C,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,GAAG,EAAE,4BAA4B,CAAC,WAAW,CAAC;YAC9C,QAAQ,EAAE,UAAU,QAAQ,EAAE;SAC/B,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,MAAA,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,WAAW,mCAAI,WAAW,CAAC;IACzD,OAAO;QACL,GAAG,EAAE,4BAA4B,CAAC,WAAW,CAAC;QAC9C,QAAQ,EAAE,iCAAiC,CAAC,UAAU,EAAE,SAAS,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CACnC,QAAiC,EACjC,YAAoB,EACpB,OAAe,EACf,QAAkB;IAElB,MAAM,QAAQ,GAAG,2BAA2B,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;IAC9C,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,CAAC;QAChD,QAAQ,CAAC,IAAI,CACX,8BAA8B,YAAY,qCAAqC,CAChF,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,0BAA0B,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,0BAA0B,CACjC,YAAoC,EACpC,OAAe,EACf,QAAkB;IAElB,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,YAAY,CAAC,IAAI,CACf,GAAG,0BAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAC1D,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,QAAQ,CAAC,IAAI,CACX,8BAA8B,OAAO,0BAA0B,CAChE,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,iBAAiB,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,MAAM,eAAe,GAAG,uBAAuB,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;YACzE,IAAI,eAAe,EAAE,CAAC;gBACpB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACnC,SAAS;YACX,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C,YAAY,CAAC,IAAI,CACf,GAAG,sCAAsC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CACtE,CAAC;YACF,SAAS;QACX,CAAC;QAED,QAAQ,CAAC,IAAI,CACX,+BAA+B,OAAO,CAAC,OAAO,EAAE,SAAS,OAAO,0BAA0B,CAC3F,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,eAAe,CAAC;AAChE,CAAC;AAED,SAAS,sCAAsC,CAC7C,aAAsC,EACtC,OAAe,EACf,QAAkB;IAElB,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,oBAAoB,GACxB,OAAO,KAAK,gBAAgB;QAC1B,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;QACxB,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IAEtD,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,aAAa,EAAE,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,QAAQ,CAAC,IAAI,CACX,qCAAqC,OAAO,0BAA0B,CACvE,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QAEnE,IAAI,CAAC,YAAY,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7D,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;QACtE,IAAI,UAAU,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,QAAQ,CAAC,IAAI,CACX,oBAAoB,YAAY,eAAe,OAAO,0BAA0B,CACjF,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,uBAAuB,CAC9B,UAAuB,EACvB,QAAkB;;IAElB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,gBAAgB,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC7C,SAAS;QACX,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,GAAG,MAAA,MAAA,SAAS,CAAC,iBAAiB,EAAE,0CAAE,YAAY,EAAE,mCAAI,EAAE,CAAC;QACpE,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,CACX,4EAA4E,CAC7E,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACrC,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,uBAAuB,CAC9B,UAA4B;IAE5B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAc;IAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtE,OAAO,QAAQ,CAAC,cAAc,EAAE,CAAC;IACnC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,0BAA0B,CACjC,UAAsB,EACtB,cAAsB;IAEtB,MAAM,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,gBAAgB,GAAG,kCAAkC,CACzD,UAAU,EACV,cAAc,EACd,cAAc,CACf,CAAC;IACF,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACvD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;QAC3C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;IAED,IACE,UAAU;SACP,uBAAuB,EAAE;SACzB,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,cAAc,CAAC,EAClE,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,kCAAkC,CACzC,UAAsB,EACtB,cAAsB,EACtB,cAAsB;;IAEtB,KAAK,MAAM,iBAAiB,IAAI,UAAU,CAAC,qBAAqB,EAAE,EAAE,CAAC;QACnE,MAAM,eAAe,GAAG,iBAAiB,CAAC,uBAAuB,EAAE,CAAC;QAEpE,IAAI,CAAA,MAAA,iBAAiB,CAAC,gBAAgB,EAAE,0CAAE,OAAO,EAAE,MAAK,cAAc,EAAE,CAAC;YACvE,MAAM,WAAW,GAAG,gCAAgC,CAAC,iBAAiB,CAAC,CAAC;YACxE,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO;oBACL,IAAI,EAAE,OAAO;oBACb,gBAAgB,EAAE,WAAW;oBAC7B,eAAe;iBAChB,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;QAC9C,CAAC;QAED,IAAI,CAAA,MAAA,iBAAiB,CAAC,kBAAkB,EAAE,0CAAE,OAAO,EAAE,MAAK,cAAc,EAAE,CAAC;YACzE,MAAM,WAAW,GAAG,kCAAkC,CACpD,iBAAiB,EACjB,cAAc,CACf,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO;oBACL,IAAI,EAAE,OAAO;oBACb,gBAAgB,EAAE,WAAW;oBAC7B,eAAe;iBAChB,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;QAChD,CAAC;QAED,MAAM,WAAW,GAAG,iBAAiB;aAClC,eAAe,EAAE;aACjB,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;;YAClB,MAAM,SAAS,GACb,MAAA,MAAA,SAAS,CAAC,YAAY,EAAE,0CAAE,OAAO,EAAE,mCACnC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;YACpC,OAAO,SAAS,KAAK,cAAc,CAAC;QACtC,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QAED,MAAM,eAAe,GACnB,MAAA,WAAW,CAAC,YAAY,EAAE,mCAAI,WAAW,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,MAAM,GACV,MAAA,eAAe,CAAC,SAAS,EAAE,mCAAI,eAAe,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC;QACvE,MAAM,aAAa,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,EAAE,mCAAI,MAAM,CAAC;QAC3D,MAAM,YAAY,GAAG,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,eAAe,EAAE,mCAAI,EAAE,CAAC;QAC5D,MAAM,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CACzD,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CACrC,CAAC;QAEF,IAAI,gBAAgB,IAAI,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClE,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,gBAAgB;gBAChB,eAAe;aAChB,CAAC;QACJ,CAAC;QAED,IACE,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,EACvE,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QAC3C,CAAC;QAED,IACE,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAChC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CACxC,EACD,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;QAC/C,CAAC;QAED,IACE,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAChC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CACxC,EACD,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;QAC/C,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;IAC9C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gCAAgC,CACvC,iBAAuD;;IAEvD,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,4BAA4B,EAAE,CAAC;IAC1E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,sBAAsB,EAAE,CAAC;IACtE,MAAM,YAAY,GAAG,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,eAAe,EAAE,mCAAI,EAAE,CAAC;IAClE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CACvC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CACL,CAAC;AACpC,CAAC;AAED,SAAS,kCAAkC,CACzC,iBAAuD,EACvD,cAAsB;;IAEtB,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,4BAA4B,EAAE,CAAC;IAC1E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACvD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,oBAAoB,GACxB,MAAA,gBAAgB,CAAC,uBAAuB,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,mCAAI,EAAE,CAAC;IACvE,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAC/C,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CACL,CAAC;AACpC,CAAC;AAED,SAAS,0BAA0B,CACjC,UAAsB,EACtB,cAAsB;IAEtB,MAAM,UAAU,GAAG,0BAA0B,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC1E,MAAM,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC;IAErD,IAAI,CAAC,gBAAgB,IAAI,cAAc,CAAC,gBAAgB,CAAC,KAAK,YAAY,EAAE,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;IAC9D,MAAM,kBAAkB,GAAG,QAAQ;QACjC,CAAC,CAAC,2BAA2B,CAAC,QAAQ,EAAE,YAAY,CAAC;QACrD,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,WAAW,GAAG,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,cAAc,EAAE,CAAC;IAEzD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;QAChC,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QACjC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,CAC3E,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,QAAkB;IACvD,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtC,OAAO,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IACxE,CAAC;IAED,IAAI,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5C,OAAO,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAkB;IAC7C,OAAO;QACL,UAAU,CAAC,UAAU;QACrB,UAAU,CAAC,aAAa;QACxB,UAAU,CAAC,cAAc;QACzB,UAAU,CAAC,YAAY;QACvB,UAAU,CAAC,YAAY;QACvB,UAAU,CAAC,WAAW;QACtB,UAAU,CAAC,aAAa;QACxB,UAAU,CAAC,aAAa;QACxB,UAAU,CAAC,aAAa;QACxB,UAAU,CAAC,aAAa;QACxB,UAAU,CAAC,WAAW;QACtB,UAAU,CAAC,gBAAgB;QAC3B,UAAU,CAAC,cAAc;QACzB,UAAU,CAAC,WAAW;KACvB,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,yBAAyB,CAAC,UAAkB;IACnD,OAAO,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,2BAA2B,CAClC,QAAkB,EAClB,UAAkB;IAElB,MAAM,WAAW,GAAG,oCAAoC,CAAC,QAAQ,CAAC,CAAC;IACnE,IACE,WAAW,CAAC,MAAM,KAAK,CAAC;QACxB,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC7D,UAAU,EACZ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC;IACrC,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3D,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAErD,OAAO,CACL,uBAAuB,CAAC,cAAc,EAAE;QACtC,uBAAuB,EAAE,qBAAqB;KAC/C,CAAC;QACF,uBAAuB,CAAC,cAAc,EAAE,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,CAC5E,CAAC;AACJ,CAAC;AAED,SAAS,oCAAoC,CAC3C,QAAkB;IAElB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,uBAAuB,CAC9B,UAAsB,EACtB,OAA6C;;IAE7C,MAAM,MAAM,GAAG,MAAA,UAAU,CAAC,SAAS,EAAE,mCAAI,UAAU,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC;IAC1E,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;IAC9C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IACE,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,EAC5E,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IACE,OAAO,CAAC,uBAAuB;QAC/B,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,EACvE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAChD,MAAM,mBAAmB,GAAG,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,eAAe,EAAE,mCAAI,YAAY,CAAC;IAC7E,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAC9C,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,CAChD,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,WAAiB;;IACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QACxC,OAAO,CACL,WAAW,CAAC,UAAU,EAAE;YACxB,WAAW,CAAC,oBAAoB,EAAE,CAAC,UAAU,EAAE,CAChD,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,OAAO,WAAW,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QACxC,OAAO,CACL,MAAA,MAAA,WAAW;aACR,sBAAsB,CAAC,UAAU,CAAC,iBAAiB,CAAC,0CACnD,UAAU,EAAE,mCAAI,KAAK,CAC1B,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,yBAAyB,CAChC,WAAiB,EACjB,OAA6C;IAE7C,IACE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;QACnC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACE,OAAO,CAAC,uBAAuB;QAC/B,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,EACrC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAC7B,UAAsB,EACtB,gBAAkC,EAClC,SAAiB;IAEjB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC;QACnD,IAAI,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC;YACzE,QAAQ,CAAC,IAAI,CACX,qEAAqE,CACtE,CAAC;QACJ,CAAC;QAED,IACE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;YAClC,SAAS,KAAK,gBAAgB;YAC9B,SAAS,CAAC,eAAe,EAAE,EAC3B,CAAC;YACD,QAAQ,CAAC,IAAI,CACX,kEAAkE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,MAAM,gBAAgB,IAAI,UAAU,CAAC,oBAAoB,EAAE,EAAE,CAAC;QACjE,IAAI,gBAAgB,CAAC,cAAc,EAAE,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CACX,2EAA2E,CAC5E,CAAC;YACF,SAAS;QACX,CAAC;QAED,IACE,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,SAAS,CAAC;YACvD,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,SAAS,CAAC,EACpD,CAAC;YACD,QAAQ,CAAC,IAAI,CACX,yDAAyD,gBAAgB,CAAC,OAAO,EAAE,EAAE,CACtF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,MAAM,iBAAiB,IAAI,UAAU,CAAC,qBAAqB,EAAE,EAAE,CAAC;QACnE,MAAM,sBAAsB,GAAG,iBAAiB;aAC7C,eAAe,EAAE;aACjB,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;;YAClB,MAAM,KAAK,GAAG,MAAA,SAAS,CAAC,YAAY,EAAE,0CAAE,OAAO,EAAE,CAAC;YAClD,OAAO,CACL,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,SAAS,CAAC,CACrE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEL,IACE,sBAAsB;YACtB,sBAAsB,CAAC,OAAO,EAAE,KAAK,SAAS,EAC9C,CAAC;YACD,QAAQ,CAAC,IAAI,CACX,gEAAgE,CACjE,CAAC;QACJ,CAAC;QAED,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC3C,MAAM,cAAc,GAAG,iBAAiB;iBACrC,eAAe,EAAE;iBACjB,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC;YAC1D,IAAI,cAAc,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CACX,uCAAuC,SAAS,wBAAwB,CACzE,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC1B,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9B,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,qBAAqB,CAC5B,UAAsB,EACtB,gBAAwB;IAExB,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC;SACzB,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CACrB,6BAA6B,CAAC,UAAU,EAAE,gBAAgB,EAAE,UAAU,CAAC,CACxE;SACA,GAAG,CACF,CAAC,UAAU,EAAE,EAAE,CACb,yBAAyB,UAAU,qDAAqD,CAC3F,CAAC;IAEJ,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC1B,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9B,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,6BAA6B,CACpC,UAAsB,EACtB,gBAAwB,EACxB,UAAkB;;IAElB,KAAK,MAAM,iBAAiB,IAAI,UAAU,CAAC,qBAAqB,EAAE,EAAE,CAAC;QACnE,IAAI,CAAA,MAAA,iBAAiB,CAAC,gBAAgB,EAAE,0CAAE,OAAO,EAAE,MAAK,UAAU,EAAE,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAA,MAAA,iBAAiB,CAAC,kBAAkB,EAAE,0CAAE,OAAO,EAAE,MAAK,UAAU,EAAE,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,MAAM,WAAW,IAAI,iBAAiB,CAAC,eAAe,EAAE,EAAE,CAAC;YAC9D,MAAM,SAAS,GACb,MAAA,MAAA,WAAW,CAAC,YAAY,EAAE,0CAAE,OAAO,EAAE,mCAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACjE,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,SAAS;YACX,CAAC;YAED,OAAO,iBAAiB,CAAC,uBAAuB,EAAE,KAAK,gBAAgB,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC;QACnD,IACE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;YAClC,SAAS,CAAC,OAAO,EAAE,KAAK,UAAU,EAClC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IACE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;YACrC,SAAS,CAAC,OAAO,EAAE,KAAK,UAAU,EAClC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IACE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;YACjC,SAAS,CAAC,OAAO,EAAE,KAAK,UAAU,EAClC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IACE,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC;YACtC,SAAS,CAAC,OAAO,EAAE,KAAK,UAAU,EAClC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IACE,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC;YACtC,SAAS,CAAC,OAAO,EAAE,KAAK,UAAU,EAClC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,MAAM,eAAe,GAAG,SAAS;iBAC9B,kBAAkB,EAAE;iBACpB,eAAe,EAAE;iBACjB,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,CAAC;YAC/D,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,yBAAyB,CAChC,gBAAkC,EAClC,SAAiB;IAEjB,IAAI,gBAAgB,CAAC,cAAc,EAAE,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,EAAE,CAAC;IACpD,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,KAAK,SAAS,CAAC;AAC7E,CAAC;AAED,SAAS,sBAAsB,CAC7B,gBAAkC,EAClC,SAAiB;IAEjB,IAAI,gBAAgB,CAAC,cAAc,EAAE,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,EAAE,CAAC;IACpD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC;IAC9C,IACE,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;QAC9B,UAAU,CAAC,OAAO,EAAE,KAAK,oBAAoB,EAC7C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;IAChD,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,SAAS,CAAC;AAC/E,CAAC;AAED,SAAS,gCAAgC,CACvC,iBAAoC,EACpC,SAAiB;IAEjB,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,KAAK,MAAM,WAAW,IAAI,iBAAiB,CAAC,eAAe,EAAE,EAAE,CAAC;QAC9D,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,SAAS,EAAE,CAAC;YACxC,WAAW,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB,CAAC,eAAe,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,iBAAiB,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAAsB,EACtB,gBAAwB,EACxB,UAAkB;IAElB,OAAO,UAAU,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,EAAE;QACnE,IAAI,iBAAiB,CAAC,uBAAuB,EAAE,KAAK,gBAAgB,EAAE,CAAC;YACrE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,iBAAiB,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;;YAC9D,MAAM,SAAS,GACb,MAAA,MAAA,WAAW,CAAC,YAAY,EAAE,0CAAE,OAAO,EAAE,mCAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACjE,OAAO,SAAS,KAAK,UAAU,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,gBAAoC;IACzD,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,IAAI,OAAO,CAAC;YACjB,2BAA2B,EAAE,IAAI;YACjC,gBAAgB;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,OAAO,CAAC;QACjB,eAAe,EAAE;YACf,sBAAsB,EAAE,IAAI;YAC5B,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ;YAC9B,gBAAgB,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM;YAChD,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM;SAC/B;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACpD,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe;IAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,0BAA0B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,0BAA0B,CAAC,SAAiB,EAAE,KAAe;IACpE,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QAElC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxC,0BAA0B,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC/C,CAAC;YACD,SAAS;QACX,CAAC;QAED,IACE,CAAC,KAAK,CAAC,MAAM,EAAE;YACf,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK;YAC5B,eAAe,CAAC,SAAS,CAAC,EAC1B,CAAC;YACD,SAAS;QACX,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpC,OAAO,CACL,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnE,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;QAChC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CACnC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgB;IAC3C,MAAM,oBAAoB,GAAG,OAAO;SACjC,cAAc,EAAE;SAChB,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;SAC3D,GAAG,CAAC,CAAC,iBAAiB,EAAE,EAAE,CACzB,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,CACjD;SACA,IAAI,CAAC,OAAO,CAAC,CAAC;IAEjB,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC;QAC/B,SAAS,EAAE,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,UAAU,CAAC,GAAG,CAAC;YAC9C,CAAC,CAAC,SAAS,CAAC,MAAM;YAClB,CAAC,CAAC,SAAS,CAAC,MAAM;KACrB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB,EAAE,OAAe;IACrD,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7E,OAAO,CACL,gBAAgB,KAAK,OAAO,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,CAC3E,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,MAAqB,EACrB,GAA8B;IAE9B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO;QAC3B,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,MAAM,CAAC,OAAO;YACd,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,WAAW,CAAC;IAClB,MAAM,OAAO,GAAG;QACd,QAAQ,MAAM,CAAC,QAAQ,EAAE;QACzB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;QAC7D,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;QAC1D,SAAS,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACtF,aAAa,MAAM,CAAC,yBAAyB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC9F,oBAAoB,MAAM,CAAC,yBAAyB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC5G,UAAU,MAAM,EAAE;KACnB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAElB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAEvB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,GAAG,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,OAAmB,EAAE,GAA8B;IACrE,GAAG,CACD;QACE,uBAAuB,OAAO,CAAC,gBAAgB,EAAE;QACjD,WAAW,OAAO,CAAC,YAAY,EAAE;QACjC,YAAY,OAAO,CAAC,QAAQ,EAAE;QAC9B,cAAc,OAAO,CAAC,kBAAkB,CAAC,SAAS,EAAE;QACpD,cAAc,OAAO,CAAC,kBAAkB,CAAC,SAAS,EAAE;QACpD,SAAS,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE;QAC1C,eAAe,OAAO,CAAC,kBAAkB,CAAC,UAAU,EAAE;KACvD,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAc;IAKlC,MAAM,OAAO,GAIT,EAAE,CAAC;IAEP,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAExB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,QAAQ;gBACX,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,YAAY;gBACf,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,iBAAiB;gBACpB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,yCAAyC;gBAC5C,OAAO,CAAC,kCAAkC,GAAG,IAAI,CAAC;gBAClD,MAAM;YACR,KAAK,gBAAgB;gBACnB,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBACjC,MAAM;YACR,KAAK,qBAAqB;gBACxB,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;gBACrC,MAAM;YACR,KAAK,WAAW;gBACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;gBACtB,MAAM;YACR,KAAK,QAAQ;gBACX,gBAAgB,EAAE,CAAC;gBACnB,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;CAWb,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,yFAAyF;AACzF,IACE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;IAC/C,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACrD,CAAC;IACD,sBAAsB,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAC/D,CAAC,KAAc,EAAE,EAAE;QACjB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"angular-brand-codemod.js","sourceRoot":"","sources":["../../../../../libs/dev-tools/src/scripts/angular-brand-codemod.ts"],"names":[],"mappings":"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"}
@@ -178,6 +178,81 @@ describe('angular-brand-codemod', () => {
178
178
  );
179
179
  expect(output).toContain('missingProvider: {};');
180
180
  });
181
+
182
+ it('tracks craft-service helpers by source service and derived exposed properties', async () => {
183
+ const project = await createProjectFixture({
184
+ 'src/angular-core.d.ts': `
185
+ declare module '@angular/core' {
186
+ export declare function Component(metadata: unknown): ClassDecorator;
187
+ export declare function input<T>(): T;
188
+ }
189
+ declare module '@angular/router' {
190
+ export declare class Router {
191
+ navigate(commands: unknown[]): void;
192
+ }
193
+ }
194
+ `,
195
+ 'src/craft-ng-core.d.ts': `
196
+ declare module '@craft-ng/core' {
197
+ export declare function craftService(...args: any[]): any;
198
+ export declare function toCraftService(...args: any[]): any;
199
+ export type GetDeps<T> = T;
200
+ export type GetInjectedServiceDependencies<T> = T;
201
+ export type GetServiceOutput<T> = T;
202
+ }
203
+ `,
204
+ 'src/app/api.service.ts': `
205
+ import { craftService } from '@craft-ng/core';
206
+
207
+ export const { injectApiService } = craftService(
208
+ { name: 'ApiService', scope: 'global' },
209
+ () => ({
210
+ getItemById: async (userId: string) => ({ id: userId }),
211
+ }),
212
+ );
213
+ `,
214
+ 'src/app/demo.ts': `
215
+ import { Component, input } from '@angular/core';
216
+ import { Router } from '@angular/router';
217
+ import { injectApiService } from './api.service';
218
+ import { toCraftService } from '@craft-ng/core';
219
+
220
+ const { injectRouter } = toCraftService({
221
+ name: 'Router',
222
+ scope: 'global',
223
+ token: Router,
224
+ });
225
+
226
+ @Component({
227
+ standalone: true,
228
+ template: '',
229
+ })
230
+ export class DemoComponent {
231
+ readonly userId = input<string>();
232
+ private readonly apiService = injectApiService();
233
+ private readonly router = injectRouter(undefined, ({ navigate }) => ({
234
+ navigate,
235
+ }));
236
+ }
237
+ `,
238
+ });
239
+
240
+ const sourceFile = getFixtureSourceFile(project, 'src/app/demo.ts');
241
+ transformSourceFile(sourceFile);
242
+ const output = sourceFile.getFullText();
243
+
244
+ expect(output).toContain(
245
+ 'ApiService: GetInjectedServiceDependencies<typeof injectApiService> & {',
246
+ );
247
+ expect(output).toContain('usesWholeService: true;');
248
+ expect(output).toContain(
249
+ 'Router: GetInjectedServiceDependencies<typeof injectRouter> & {',
250
+ );
251
+ expect(output).toContain(
252
+ `navigate: GetServiceOutput<typeof injectRouter>["navigate"];`,
253
+ );
254
+ expect(output).toContain('missingProvider: {};');
255
+ });
181
256
  });
182
257
 
183
258
  async function createProjectFixture(
@@ -100,12 +100,39 @@ type ProvidedDependencyExtractionResult = {
100
100
  warnings: string[];
101
101
  };
102
102
 
103
+ type InjectedDependencyDescriptor = {
104
+ dependencyText: string;
105
+ entry: GeneratedDependencyEntry;
106
+ };
107
+
108
+ type InjectCallDependencyExtractionResult = DependencyExtractionResult & {
109
+ generatedDependencies: InjectedDependencyDescriptor[];
110
+ };
111
+
103
112
  type DependencyReferenceResolution = {
104
113
  kind: 'class' | 'enum' | 'function' | 'variable' | 'namespace' | 'unknown';
105
114
  classDeclaration?: ClassDeclaration;
106
115
  moduleSpecifier?: string;
107
116
  };
108
117
 
118
+ type TrackedHelperResolution = {
119
+ serviceName: string;
120
+ scope: string;
121
+ };
122
+
123
+ type HelperExposureBinding = {
124
+ localName: string;
125
+ sourceKey: string;
126
+ };
127
+
128
+ type HelperExposureTracking = {
129
+ usedProperties: string[];
130
+ exposedProperties: Array<{
131
+ exposedKey: string;
132
+ sourceKey: string;
133
+ }>;
134
+ };
135
+
109
136
  type NormalizedOptions = Required<AngularBrandCodemodOptions>;
110
137
 
111
138
  type InjectDecoratorTokenResult =
@@ -320,7 +347,13 @@ export function analyzeSourceFileDependencies(
320
347
  result.generatedDependencyGroups = createGeneratedDependencyGroups(
321
348
  sourceFile,
322
349
  result.dependencyGroups.importDeps,
323
- result.dependencyGroups.injected,
350
+ [
351
+ ...constructorDeps.dependencies.map((dependencyText) => ({
352
+ dependencyText,
353
+ entry: createGeneratedDependencyEntry(sourceFile, dependencyText, 'inject'),
354
+ })),
355
+ ...injectCallDeps.generatedDependencies,
356
+ ],
324
357
  providedDeps.entries,
325
358
  );
326
359
 
@@ -485,9 +518,11 @@ export function extractConstructorDeps(
485
518
 
486
519
  export function extractInjectCallDeps(
487
520
  classDeclaration: ClassDeclaration,
488
- ): DependencyExtractionResult {
521
+ ): InjectCallDependencyExtractionResult {
489
522
  const warnings: string[] = [];
490
523
  const dependencies: string[] = [];
524
+ const generatedDependencies: InjectedDependencyDescriptor[] = [];
525
+ const sourceFile = classDeclaration.getSourceFile();
491
526
 
492
527
  for (const callExpression of classDeclaration.getDescendantsOfKind(
493
528
  SyntaxKind.CallExpression,
@@ -511,9 +546,25 @@ export function extractInjectCallDeps(
511
546
  }
512
547
 
513
548
  dependencies.push(dependency);
549
+ generatedDependencies.push({
550
+ dependencyText: dependency,
551
+ entry:
552
+ injectMethodName === 'inject'
553
+ ? createGeneratedDependencyEntry(sourceFile, dependency, 'inject')
554
+ : createGeneratedInjectHelperDependencyEntry(
555
+ sourceFile,
556
+ callExpression,
557
+ expression,
558
+ dependency,
559
+ ),
560
+ });
514
561
  }
515
562
 
516
- return { dependencies: mergeDeps(dependencies), warnings };
563
+ return {
564
+ dependencies: mergeDeps(dependencies),
565
+ warnings,
566
+ generatedDependencies,
567
+ };
517
568
  }
518
569
 
519
570
  export function mergeDeps(...dependencyGroups: readonly string[][]): string[] {
@@ -557,30 +608,36 @@ function getGeneratedDepsTypeName(className: string): string {
557
608
  function createGeneratedDependencyGroups(
558
609
  sourceFile: SourceFile,
559
610
  importDependencies: string[],
560
- injectedDependencies: string[],
611
+ injectedDependencies: InjectedDependencyDescriptor[],
561
612
  providedEntries: GeneratedDependencyEntry[],
562
613
  ): GeneratedDependencyGroups {
563
614
  const deps = mergeGeneratedDependencyEntries(
564
615
  importDependencies.map((dependency) =>
565
616
  createGeneratedDependencyEntry(sourceFile, dependency, 'import'),
566
617
  ),
567
- injectedDependencies.map((dependency) =>
568
- createGeneratedDependencyEntry(sourceFile, dependency, 'inject'),
569
- ),
618
+ injectedDependencies.map((dependency) => dependency.entry),
570
619
  );
571
620
  const provided = mergeGeneratedDependencyEntries(providedEntries);
572
621
  const providedKeys = new Set(provided.map((entry) => entry.key));
622
+ const injectedEntriesByKey = new Map(
623
+ injectedDependencies.map((dependency) => [dependency.entry.key, dependency.entry]),
624
+ );
573
625
  const missingProvider = mergeGeneratedDependencyEntries(
574
626
  injectedDependencies
575
627
  .filter((dependency) => {
576
- const dependencyKey = createGeneratedDependencyKey(dependency);
628
+ const dependencyKey = dependency.entry.key;
577
629
  return (
578
630
  !providedKeys.has(dependencyKey) &&
579
- !isProvidedInInjectableTree(sourceFile, dependency)
631
+ !isDependencyProvidedElsewhere(sourceFile, dependency.dependencyText)
580
632
  );
581
633
  })
582
634
  .map((dependency) =>
583
- createGeneratedDependencyEntry(sourceFile, dependency, 'inject'),
635
+ injectedEntriesByKey.get(dependency.entry.key) ??
636
+ createGeneratedDependencyEntry(
637
+ sourceFile,
638
+ dependency.dependencyText,
639
+ 'inject',
640
+ ),
584
641
  ),
585
642
  );
586
643
 
@@ -640,6 +697,342 @@ function createGeneratedDependencyEntry(
640
697
  };
641
698
  }
642
699
 
700
+ function createGeneratedInjectHelperDependencyEntry(
701
+ sourceFile: SourceFile,
702
+ callExpression: import('ts-morph').CallExpression,
703
+ expression: Node,
704
+ dependencyText: string,
705
+ ): GeneratedDependencyEntry {
706
+ const trackedHelper = resolveTrackedInjectHelper(expression);
707
+ if (!trackedHelper) {
708
+ return createGeneratedDependencyEntry(sourceFile, dependencyText, 'inject');
709
+ }
710
+
711
+ const exposureTracking = extractHelperExposureTracking(callExpression);
712
+
713
+ return {
714
+ key: trackedHelper.serviceName,
715
+ typeText: createTrackedInjectHelperTypeText(
716
+ dependencyText,
717
+ exposureTracking,
718
+ ),
719
+ };
720
+ }
721
+
722
+ function createTrackedInjectHelperTypeText(
723
+ dependencyText: string,
724
+ exposureTracking: HelperExposureTracking | undefined,
725
+ ): string {
726
+ const baseType = `GetInjectedServiceDependencies<typeof ${dependencyText}>`;
727
+ if (!exposureTracking) {
728
+ return [baseType + ' & {', ' usesWholeService: true;', '}'].join('\n');
729
+ }
730
+
731
+ return [
732
+ `${baseType} & {`,
733
+ ` derivedPropertiesUsed: ${formatHelperExposurePropertiesType(
734
+ dependencyText,
735
+ exposureTracking.usedProperties.map((sourceKey) => ({
736
+ propertyKey: sourceKey,
737
+ sourceKey,
738
+ })),
739
+ )};`,
740
+ ` derivedPropertiesExposed: ${formatHelperExposurePropertiesType(
741
+ dependencyText,
742
+ exposureTracking.exposedProperties.map(
743
+ ({ exposedKey, sourceKey }) => ({
744
+ propertyKey: exposedKey,
745
+ sourceKey,
746
+ }),
747
+ ),
748
+ )};`,
749
+ '}',
750
+ ].join('\n');
751
+ }
752
+
753
+ function formatHelperExposurePropertiesType(
754
+ dependencyText: string,
755
+ properties: Array<{ propertyKey: string; sourceKey: string }>,
756
+ ): string {
757
+ if (properties.length === 0) {
758
+ return '{}';
759
+ }
760
+
761
+ return [
762
+ '{',
763
+ ...properties.map(
764
+ ({ propertyKey, sourceKey }) =>
765
+ ` ${formatObjectKey(propertyKey)}: ${createTrackedHelperOutputTypeText(
766
+ dependencyText,
767
+ sourceKey,
768
+ )};`,
769
+ ),
770
+ ' }',
771
+ ].join('\n');
772
+ }
773
+
774
+ function createTrackedHelperOutputTypeText(
775
+ dependencyText: string,
776
+ sourceKey: string,
777
+ ): string {
778
+ if (sourceKey === '$self') {
779
+ return `GetServiceOutput<typeof ${dependencyText}>`;
780
+ }
781
+
782
+ return `GetServiceOutput<typeof ${dependencyText}>[${JSON.stringify(sourceKey)}]`;
783
+ }
784
+
785
+ function resolveTrackedInjectHelper(
786
+ expression: Node,
787
+ ): TrackedHelperResolution | undefined {
788
+ const symbol = expression.getSymbol() ?? expression.getType().getSymbol();
789
+ const declarations =
790
+ symbol?.getAliasedSymbol()?.getDeclarations() ?? symbol?.getDeclarations() ?? [];
791
+
792
+ for (const declaration of declarations) {
793
+ const helper = resolveTrackedInjectHelperFromDeclaration(declaration);
794
+ if (helper) {
795
+ return helper;
796
+ }
797
+ }
798
+
799
+ return undefined;
800
+ }
801
+
802
+ function resolveTrackedInjectHelperFromDeclaration(
803
+ declaration: Node,
804
+ ): TrackedHelperResolution | undefined {
805
+ if (!Node.isBindingElement(declaration)) {
806
+ return undefined;
807
+ }
808
+
809
+ const objectBindingPattern = declaration.getFirstAncestorByKind(
810
+ SyntaxKind.ObjectBindingPattern,
811
+ );
812
+ const variableDeclaration =
813
+ objectBindingPattern?.getFirstAncestorByKind(SyntaxKind.VariableDeclaration);
814
+ const initializer = variableDeclaration?.getInitializer();
815
+ if (!Node.isCallExpression(initializer) || !isServiceFactoryCall(initializer)) {
816
+ return undefined;
817
+ }
818
+
819
+ const [optionsArgument] = initializer.getArguments();
820
+ if (!Node.isObjectLiteralExpression(optionsArgument)) {
821
+ return undefined;
822
+ }
823
+
824
+ const nameInitializer = getObjectPropertyAssignment(
825
+ optionsArgument,
826
+ 'name',
827
+ )?.getInitializer();
828
+ const scopeInitializer = getObjectPropertyAssignment(
829
+ optionsArgument,
830
+ 'scope',
831
+ )?.getInitializer();
832
+
833
+ if (
834
+ !Node.isStringLiteral(nameInitializer) ||
835
+ !Node.isStringLiteral(scopeInitializer)
836
+ ) {
837
+ return undefined;
838
+ }
839
+
840
+ return {
841
+ serviceName: nameInitializer.getLiteralText(),
842
+ scope: scopeInitializer.getLiteralText(),
843
+ };
844
+ }
845
+
846
+ function isServiceFactoryCall(
847
+ callExpression: import('ts-morph').CallExpression,
848
+ ): boolean {
849
+ const expression = callExpression.getExpression();
850
+ if (Node.isIdentifier(expression)) {
851
+ return expression.getText() === 'craftService' || expression.getText() === 'toCraftService';
852
+ }
853
+
854
+ if (Node.isPropertyAccessExpression(expression)) {
855
+ const methodName = expression.getName();
856
+ return methodName === 'craftService' || methodName === 'toCraftService';
857
+ }
858
+
859
+ return false;
860
+ }
861
+
862
+ function extractHelperExposureTracking(
863
+ callExpression: import('ts-morph').CallExpression,
864
+ ): HelperExposureTracking | undefined {
865
+ const exposeArgument = [...callExpression.getArguments()]
866
+ .reverse()
867
+ .find(
868
+ (argument) =>
869
+ Node.isArrowFunction(argument) || Node.isFunctionExpression(argument),
870
+ );
871
+
872
+ if (
873
+ !exposeArgument ||
874
+ (!Node.isArrowFunction(exposeArgument) &&
875
+ !Node.isFunctionExpression(exposeArgument))
876
+ ) {
877
+ return undefined;
878
+ }
879
+
880
+ const parameter = exposeArgument.getParameters()[0];
881
+ const nameNode = parameter?.getNameNode();
882
+ if (!nameNode || !Node.isObjectBindingPattern(nameNode)) {
883
+ return undefined;
884
+ }
885
+
886
+ const bindings = extractHelperExposureBindings(nameNode);
887
+ if (bindings.length === 0) {
888
+ return undefined;
889
+ }
890
+
891
+ const returnObjectLiteral = getExposureReturnObjectLiteral(exposeArgument);
892
+ if (!returnObjectLiteral) {
893
+ return undefined;
894
+ }
895
+
896
+ const exposedProperties = extractHelperExposedProperties(
897
+ returnObjectLiteral,
898
+ bindings,
899
+ );
900
+ const usedProperties = mergeDeps(
901
+ exposedProperties.map(({ sourceKey }) => sourceKey),
902
+ extractHelperYieldedProperties(exposeArgument, bindings),
903
+ );
904
+
905
+ return {
906
+ usedProperties,
907
+ exposedProperties,
908
+ };
909
+ }
910
+
911
+ function extractHelperExposureBindings(
912
+ bindingPattern: import('ts-morph').ObjectBindingPattern,
913
+ ): HelperExposureBinding[] {
914
+ const bindings: HelperExposureBinding[] = [];
915
+
916
+ for (const element of bindingPattern.getElements()) {
917
+ const nameNode = element.getNameNode();
918
+ if (!Node.isIdentifier(nameNode)) {
919
+ continue;
920
+ }
921
+
922
+ const propertyNameNode = element.getPropertyNameNode();
923
+ const sourceKey =
924
+ getStaticPropertyName(propertyNameNode ?? nameNode) ?? nameNode.getText();
925
+
926
+ bindings.push({
927
+ localName: nameNode.getText(),
928
+ sourceKey,
929
+ });
930
+ }
931
+
932
+ return bindings;
933
+ }
934
+
935
+ function getExposureReturnObjectLiteral(
936
+ exposeArgument: import('ts-morph').ArrowFunction | import('ts-morph').FunctionExpression,
937
+ ): ObjectLiteralExpression | undefined {
938
+ const body = exposeArgument.getBody();
939
+ if (Node.isObjectLiteralExpression(body)) {
940
+ return body;
941
+ }
942
+
943
+ if (Node.isParenthesizedExpression(body)) {
944
+ const expression = body.getExpression();
945
+ return Node.isObjectLiteralExpression(expression) ? expression : undefined;
946
+ }
947
+
948
+ if (!Node.isBlock(body)) {
949
+ return undefined;
950
+ }
951
+
952
+ const returnStatement = [...body.getDescendantsOfKind(SyntaxKind.ReturnStatement)]
953
+ .reverse()
954
+ .find((statement) => Node.isObjectLiteralExpression(statement.getExpression()));
955
+
956
+ const expression = returnStatement?.getExpression();
957
+ return Node.isObjectLiteralExpression(expression) ? expression : undefined;
958
+ }
959
+
960
+ function extractHelperExposedProperties(
961
+ objectLiteral: ObjectLiteralExpression,
962
+ bindings: HelperExposureBinding[],
963
+ ): Array<{ exposedKey: string; sourceKey: string }> {
964
+ const bindingMap = new Map(
965
+ bindings.map((binding) => [binding.localName, binding.sourceKey]),
966
+ );
967
+ const exposedProperties: Array<{ exposedKey: string; sourceKey: string }> = [];
968
+
969
+ for (const property of objectLiteral.getProperties()) {
970
+ if (Node.isShorthandPropertyAssignment(property)) {
971
+ const sourceKey = bindingMap.get(property.getName());
972
+ if (sourceKey) {
973
+ exposedProperties.push({
974
+ exposedKey: property.getName(),
975
+ sourceKey,
976
+ });
977
+ }
978
+ continue;
979
+ }
980
+
981
+ if (!Node.isPropertyAssignment(property)) {
982
+ continue;
983
+ }
984
+
985
+ const exposedKey = getStaticPropertyName(property.getNameNode());
986
+ const initializer = property.getInitializer();
987
+ if (!exposedKey || !Node.isIdentifier(initializer)) {
988
+ continue;
989
+ }
990
+
991
+ const sourceKey = bindingMap.get(initializer.getText());
992
+ if (!sourceKey) {
993
+ continue;
994
+ }
995
+
996
+ exposedProperties.push({
997
+ exposedKey,
998
+ sourceKey,
999
+ });
1000
+ }
1001
+
1002
+ return exposedProperties;
1003
+ }
1004
+
1005
+ function extractHelperYieldedProperties(
1006
+ exposeArgument: import('ts-morph').ArrowFunction | import('ts-morph').FunctionExpression,
1007
+ bindings: HelperExposureBinding[],
1008
+ ): string[] {
1009
+ const bindingMap = new Map(
1010
+ bindings.map((binding) => [binding.localName, binding.sourceKey]),
1011
+ );
1012
+ const yieldedProperties: string[] = [];
1013
+
1014
+ for (const yieldExpression of exposeArgument.getDescendantsOfKind(
1015
+ SyntaxKind.YieldExpression,
1016
+ )) {
1017
+ const expression = yieldExpression.getExpression();
1018
+ if (!Node.isCallExpression(expression)) {
1019
+ continue;
1020
+ }
1021
+
1022
+ const target = expression.getExpression();
1023
+ if (!Node.isIdentifier(target)) {
1024
+ continue;
1025
+ }
1026
+
1027
+ const sourceKey = bindingMap.get(target.getText());
1028
+ if (sourceKey) {
1029
+ yieldedProperties.push(sourceKey);
1030
+ }
1031
+ }
1032
+
1033
+ return yieldedProperties;
1034
+ }
1035
+
643
1036
  function createGeneratedDependencyKey(dependencyText: string): string {
644
1037
  const lastSegment = dependencyText.split('.').pop() ?? dependencyText;
645
1038
  const helperMatch = /^(inject|provide)([A-Z].*)$/.exec(lastSegment);
@@ -782,13 +1175,21 @@ function formatGeneratedDependencyObject(
782
1175
 
783
1176
  return [
784
1177
  '{',
785
- ...entries.map(
786
- (entry) => ` ${formatObjectKey(entry.key)}: ${entry.typeText};`,
787
- ),
1178
+ ...entries.map((entry) => formatGeneratedDependencyEntry(entry)),
788
1179
  ' }',
789
1180
  ].join('\n');
790
1181
  }
791
1182
 
1183
+ function formatGeneratedDependencyEntry(entry: GeneratedDependencyEntry): string {
1184
+ const typeLines = entry.typeText.split('\n');
1185
+ const lines = [
1186
+ ` ${formatObjectKey(entry.key)}: ${typeLines[0]}`,
1187
+ ...typeLines.slice(1).map((line) => ` ${line}`),
1188
+ ];
1189
+ lines[lines.length - 1] += ';';
1190
+ return lines.join('\n');
1191
+ }
1192
+
792
1193
  function formatObjectKey(key: string): string {
793
1194
  return /^[$A-Z_][0-9A-Z_$]*$/i.test(key) ? key : `'${key}'`;
794
1195
  }
@@ -927,7 +1328,11 @@ export function ensureHelperImports(
927
1328
  sourceFile: SourceFile,
928
1329
  helperImportPath: string,
929
1330
  ): void {
930
- const missingImports = ['GetDeps'].filter(
1331
+ const missingImports = [
1332
+ 'GetDeps',
1333
+ 'GetInjectedServiceDependencies',
1334
+ 'GetServiceOutput',
1335
+ ].filter(
931
1336
  (importName) =>
932
1337
  !hasLocalNamedImport(sourceFile, helperImportPath, importName),
933
1338
  );
@@ -1875,6 +2280,66 @@ function isProvidedInInjectableTree(
1875
2280
  );
1876
2281
  }
1877
2282
 
2283
+ function isDependencyProvidedElsewhere(
2284
+ sourceFile: SourceFile,
2285
+ dependencyText: string,
2286
+ ): boolean {
2287
+ const trackedHelper = resolveTrackedInjectHelperByName(sourceFile, dependencyText);
2288
+ if (trackedHelper) {
2289
+ return trackedHelper.scope === 'global' || trackedHelper.scope === 'function';
2290
+ }
2291
+
2292
+ return isProvidedInInjectableTree(sourceFile, dependencyText);
2293
+ }
2294
+
2295
+ function resolveTrackedInjectHelperByName(
2296
+ sourceFile: SourceFile,
2297
+ dependencyText: string,
2298
+ ): TrackedHelperResolution | undefined {
2299
+ const [rootIdentifier] = dependencyText.split('.');
2300
+ if (!rootIdentifier) {
2301
+ return undefined;
2302
+ }
2303
+
2304
+ for (const declaration of resolveDependencyIdentifierDeclarations(
2305
+ sourceFile,
2306
+ rootIdentifier,
2307
+ )) {
2308
+ const helper = resolveTrackedInjectHelperFromDeclaration(declaration);
2309
+ if (helper) {
2310
+ return helper;
2311
+ }
2312
+ }
2313
+
2314
+ return undefined;
2315
+ }
2316
+
2317
+ function resolveDependencyIdentifierDeclarations(
2318
+ sourceFile: SourceFile,
2319
+ rootIdentifier: string,
2320
+ ): Node[] {
2321
+ for (const importDeclaration of sourceFile.getImportDeclarations()) {
2322
+ const namedImport = importDeclaration.getNamedImports().find((specifier) => {
2323
+ const localName =
2324
+ specifier.getAliasNode()?.getText() ?? specifier.getNameNode().getText();
2325
+ return localName === rootIdentifier;
2326
+ });
2327
+
2328
+ if (!namedImport) {
2329
+ continue;
2330
+ }
2331
+
2332
+ const identifier = namedImport.getAliasNode() ?? namedImport.getNameNode();
2333
+ const symbol = identifier.getSymbol() ?? identifier.getType().getSymbol();
2334
+ const aliasedSymbol = symbol?.getAliasedSymbol() ?? symbol;
2335
+ return aliasedSymbol?.getDeclarations() ?? [namedImport];
2336
+ }
2337
+
2338
+ return sourceFile
2339
+ .getDescendantsOfKind(SyntaxKind.BindingElement)
2340
+ .filter((bindingElement) => bindingElement.getName() === rootIdentifier);
2341
+ }
2342
+
1878
2343
  function getDependencyTextFromTypeNode(typeNode: TypeNode): string | undefined {
1879
2344
  if (isPrimitiveTypeNode(typeNode)) {
1880
2345
  return undefined;
@@ -2124,7 +2589,11 @@ function getHelperImportSafety(
2124
2589
  sourceFile: SourceFile,
2125
2590
  helperImportPath: string,
2126
2591
  ): { safe: true; warnings: [] } | { safe: false; warnings: string[] } {
2127
- const warnings = ['GetDeps']
2592
+ const warnings = [
2593
+ 'GetDeps',
2594
+ 'GetInjectedServiceDependencies',
2595
+ 'GetServiceOutput',
2596
+ ]
2128
2597
  .filter((helperName) =>
2129
2598
  hasConflictingTopLevelBinding(sourceFile, helperImportPath, helperName),
2130
2599
  )