agentinit 1.8.1 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +27 -2
  3. package/dist/cli.js +25193 -24549
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/apply.d.ts +1 -0
  6. package/dist/commands/apply.d.ts.map +1 -1
  7. package/dist/commands/apply.js +8 -1
  8. package/dist/commands/apply.js.map +1 -1
  9. package/dist/commands/plugins.d.ts.map +1 -1
  10. package/dist/commands/plugins.js +11 -2
  11. package/dist/commands/plugins.js.map +1 -1
  12. package/dist/commands/skills.d.ts.map +1 -1
  13. package/dist/commands/skills.js +64 -37
  14. package/dist/commands/skills.js.map +1 -1
  15. package/dist/commands/sync.d.ts.map +1 -1
  16. package/dist/commands/sync.js +6 -0
  17. package/dist/commands/sync.js.map +1 -1
  18. package/dist/core/managedState.d.ts +1 -0
  19. package/dist/core/managedState.d.ts.map +1 -1
  20. package/dist/core/managedState.js +40 -8
  21. package/dist/core/managedState.js.map +1 -1
  22. package/dist/core/marketplaceRegistry.d.ts +5 -0
  23. package/dist/core/marketplaceRegistry.d.ts.map +1 -0
  24. package/dist/core/marketplaceRegistry.js +23 -0
  25. package/dist/core/marketplaceRegistry.js.map +1 -0
  26. package/dist/core/pluginManager.d.ts +2 -0
  27. package/dist/core/pluginManager.d.ts.map +1 -1
  28. package/dist/core/pluginManager.js +114 -54
  29. package/dist/core/pluginManager.js.map +1 -1
  30. package/dist/core/projectSkills.d.ts +3 -3
  31. package/dist/core/projectSkills.d.ts.map +1 -1
  32. package/dist/core/projectSkills.js +22 -18
  33. package/dist/core/projectSkills.js.map +1 -1
  34. package/dist/core/propagator.d.ts +2 -0
  35. package/dist/core/propagator.d.ts.map +1 -1
  36. package/dist/core/propagator.js +89 -21
  37. package/dist/core/propagator.js.map +1 -1
  38. package/dist/core/skillsManager.d.ts +32 -6
  39. package/dist/core/skillsManager.d.ts.map +1 -1
  40. package/dist/core/skillsManager.js +341 -108
  41. package/dist/core/skillsManager.js.map +1 -1
  42. package/dist/types/plugins.d.ts +4 -5
  43. package/dist/types/plugins.d.ts.map +1 -1
  44. package/dist/types/skills.d.ts +23 -3
  45. package/dist/types/skills.d.ts.map +1 -1
  46. package/dist/utils/fs.d.ts +5 -0
  47. package/dist/utils/fs.d.ts.map +1 -1
  48. package/dist/utils/fs.js +86 -1
  49. package/dist/utils/fs.js.map +1 -1
  50. package/package.json +1 -1
@@ -1,12 +1,18 @@
1
1
  import { resolve, join, relative } from 'path';
2
2
  import { promises as fs } from 'fs';
3
- import { tmpdir } from 'os';
3
+ import { homedir, tmpdir } from 'os';
4
4
  import { execFile } from 'child_process';
5
5
  import { promisify } from 'util';
6
6
  import matter from 'gray-matter';
7
- import { readFileIfExists, listFiles, fileExists, isDirectory } from '../utils/fs.js';
7
+ import { createRelativeSymlink, fileExists, isDirectory, listFiles, pathsReferToSameLocation, readFileIfExists, resolveRealPathOrSelf, } from '../utils/fs.js';
8
8
  import { AgentManager } from './agentManager.js';
9
+ import { getMarketplace, getMarketplaceIds } from './marketplaceRegistry.js';
9
10
  const execFileAsync = promisify(execFile);
11
+ const DEFAULT_SKILLS_CATALOG = {
12
+ owner: 'vercel-labs',
13
+ repo: 'agent-skills',
14
+ url: 'https://github.com/vercel-labs/agent-skills.git',
15
+ };
10
16
  /**
11
17
  * Standard directories where skills are discovered in a repository
12
18
  * Compatible with the open agent skills ecosystem (vercel-labs/skills)
@@ -28,7 +34,7 @@ export class SkillsManager {
28
34
  /**
29
35
  * Parse a source string into a structured SkillSource
30
36
  */
31
- resolveSource(source) {
37
+ resolveSource(source, options) {
32
38
  // Local path
33
39
  if (source.startsWith('.') || source.startsWith('/') || source.startsWith('~')) {
34
40
  return { type: 'local', path: source };
@@ -48,6 +54,27 @@ export class SkillsManager {
48
54
  if (source.startsWith('git@') || source.endsWith('.git')) {
49
55
  return { type: 'github', url: source };
50
56
  }
57
+ if (options?.from) {
58
+ if (!getMarketplace(options.from)) {
59
+ throw new Error(`Unknown marketplace: ${options.from}. Available: ${getMarketplaceIds().join(', ')}`);
60
+ }
61
+ return {
62
+ type: 'marketplace',
63
+ marketplace: options.from,
64
+ pluginName: source,
65
+ };
66
+ }
67
+ const marketplacePrefixMatch = source.match(/^([a-zA-Z0-9._-]+)\/(.+)$/);
68
+ if (marketplacePrefixMatch) {
69
+ const [, marketplaceId, pluginName] = marketplacePrefixMatch;
70
+ if (marketplaceId && pluginName && getMarketplace(marketplaceId)) {
71
+ return {
72
+ type: 'marketplace',
73
+ marketplace: marketplaceId,
74
+ pluginName,
75
+ };
76
+ }
77
+ }
51
78
  // GitHub shorthand: owner/repo
52
79
  if (/^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/.test(source)) {
53
80
  const [owner, repo] = source.split('/');
@@ -61,6 +88,38 @@ export class SkillsManager {
61
88
  // Fallback: treat as local path
62
89
  return { type: 'local', path: source };
63
90
  }
91
+ isImplicitCatalogSkillSource(source, options) {
92
+ const normalizedSource = source.trim();
93
+ if (!normalizedSource || options?.from) {
94
+ return false;
95
+ }
96
+ return !(normalizedSource.startsWith('.') ||
97
+ normalizedSource.startsWith('/') ||
98
+ normalizedSource.startsWith('~') ||
99
+ normalizedSource.startsWith('https://') ||
100
+ normalizedSource.startsWith('http://') ||
101
+ normalizedSource.startsWith('git@') ||
102
+ normalizedSource.endsWith('.git') ||
103
+ normalizedSource.includes('/') ||
104
+ normalizedSource.includes('\\'));
105
+ }
106
+ resolveSourceRequest(source, options) {
107
+ if (this.isImplicitCatalogSkillSource(source, options)) {
108
+ return {
109
+ source: {
110
+ type: 'github',
111
+ owner: DEFAULT_SKILLS_CATALOG.owner,
112
+ repo: DEFAULT_SKILLS_CATALOG.repo,
113
+ url: DEFAULT_SKILLS_CATALOG.url,
114
+ },
115
+ implicitSkills: [source.trim()],
116
+ };
117
+ }
118
+ return {
119
+ source: this.resolveSource(source, options),
120
+ implicitSkills: [],
121
+ };
122
+ }
64
123
  /**
65
124
  * Parse a SKILL.md file and extract name + description from frontmatter
66
125
  */
@@ -150,6 +209,77 @@ export class SkillsManager {
150
209
  }
151
210
  return tempDir;
152
211
  }
212
+ getMarketplaceSourceId(source) {
213
+ if (source.type !== 'marketplace' || !source.marketplace || !source.pluginName) {
214
+ throw new Error('Invalid marketplace skill source');
215
+ }
216
+ return `${source.marketplace}/${source.pluginName}`;
217
+ }
218
+ getMissingLocalPathError(source, resolvedPath) {
219
+ const normalizedSource = source.trim();
220
+ if (!normalizedSource || normalizedSource.startsWith('.') || normalizedSource.startsWith('/') || normalizedSource.startsWith('~')) {
221
+ return new Error(`Local path not found: ${resolvedPath}`);
222
+ }
223
+ const marketplaces = getMarketplaceIds();
224
+ const marketplaceHints = marketplaces.length > 0
225
+ ? ` If you meant a marketplace skill, use "${marketplaces[0]}/${normalizedSource}" or "--from ${marketplaces[0]}".`
226
+ : '';
227
+ return new Error(`Local path not found: ${resolvedPath}. If you meant a local path, prefix it with "./".${marketplaceHints}`);
228
+ }
229
+ async discoverMarketplaceSkills(source, projectPath) {
230
+ const { PluginManager } = await import('./pluginManager.js');
231
+ const pluginManager = new PluginManager(this.agentManager);
232
+ const result = await pluginManager.installPlugin(source.pluginName || this.getMarketplaceSourceId(source), projectPath, {
233
+ from: source.marketplace,
234
+ list: true,
235
+ });
236
+ const warnings = [...result.warnings];
237
+ if (result.plugin.mcpServers.length > 0) {
238
+ warnings.push(`Source "${this.getMarketplaceSourceId(source)}" also includes ${result.plugin.mcpServers.length} MCP server(s); use "agentinit plugins install ${this.getMarketplaceSourceId(source)}" to install them.`);
239
+ }
240
+ return {
241
+ skills: result.plugin.skills,
242
+ warnings,
243
+ };
244
+ }
245
+ async discoverFromSource(source, projectPath, options = {}) {
246
+ const request = this.resolveSourceRequest(source, options);
247
+ const resolved = request.source;
248
+ let tempDir = null;
249
+ try {
250
+ if (resolved.type === 'marketplace') {
251
+ return await this.discoverMarketplaceSkills(resolved, projectPath);
252
+ }
253
+ let repoPath;
254
+ if (resolved.type === 'github') {
255
+ if (!resolved.url) {
256
+ throw new Error(`Invalid source: ${source}`);
257
+ }
258
+ tempDir = await this.cloneRepo(resolved.url);
259
+ repoPath = tempDir;
260
+ }
261
+ else {
262
+ repoPath = resolve(resolved.path || source);
263
+ if (!(await fileExists(repoPath))) {
264
+ throw this.getMissingLocalPathError(source, repoPath);
265
+ }
266
+ }
267
+ let skills = await this.discoverSkills(repoPath);
268
+ if (request.implicitSkills.length > 0) {
269
+ const names = new Set(request.implicitSkills.map(skill => skill.toLowerCase()));
270
+ skills = skills.filter(skill => names.has(skill.name.toLowerCase()));
271
+ }
272
+ const warnings = request.implicitSkills.length > 0
273
+ ? [`Resolved "${source}" from the default skills catalog ${DEFAULT_SKILLS_CATALOG.owner}/${DEFAULT_SKILLS_CATALOG.repo}. Use "./${source}" for a local path.`]
274
+ : [];
275
+ return { skills, warnings };
276
+ }
277
+ finally {
278
+ if (tempDir) {
279
+ await fs.rm(tempDir, { recursive: true, force: true }).catch(() => { });
280
+ }
281
+ }
282
+ }
153
283
  /**
154
284
  * Get target agents based on options
155
285
  */
@@ -197,6 +327,97 @@ export class SkillsManager {
197
327
  await fs.writeFile(join(destPath, 'SKILL.md'), skillContent, 'utf8');
198
328
  return destPath;
199
329
  }
330
+ getCanonicalSkillsDir(projectPath, global = false) {
331
+ return global
332
+ ? resolve(homedir(), '.agents/skills')
333
+ : resolve(projectPath, '.agents/skills');
334
+ }
335
+ async getInstallPlan(skillName, agent, projectPath, options = {}) {
336
+ const normalizedSkillName = this.normalizeSkillName(skillName);
337
+ const skillsDir = agent.getSkillsDir(projectPath, options.global);
338
+ if (!skillsDir) {
339
+ throw new Error(`No skills directory for ${agent.name}`);
340
+ }
341
+ const agentPath = this.resolveInstallPath(skillsDir, normalizedSkillName);
342
+ if (options.copy) {
343
+ return {
344
+ path: agentPath,
345
+ mode: 'copy',
346
+ };
347
+ }
348
+ const canonicalPath = this.resolveInstallPath(this.getCanonicalSkillsDir(projectPath, options.global ?? false), normalizedSkillName);
349
+ if (await pathsReferToSameLocation(canonicalPath, agentPath)) {
350
+ return {
351
+ path: canonicalPath,
352
+ canonicalPath,
353
+ mode: 'symlink',
354
+ };
355
+ }
356
+ return {
357
+ path: agentPath,
358
+ canonicalPath,
359
+ mode: 'symlink',
360
+ };
361
+ }
362
+ async installSkillForAgent(skillPath, skillName, agent, projectPath, options = {}) {
363
+ const plan = await this.getInstallPlan(skillName, agent, projectPath, options);
364
+ const skillsDir = agent.getSkillsDir(projectPath, options.global);
365
+ if (!skillsDir) {
366
+ throw new Error(`No skills directory for ${agent.name}`);
367
+ }
368
+ if (plan.mode === 'copy') {
369
+ await this.installSkill(skillPath, skillName, skillsDir, true);
370
+ return plan;
371
+ }
372
+ const canonicalPath = plan.canonicalPath;
373
+ if (!canonicalPath) {
374
+ throw new Error(`Missing canonical path for ${skillName}`);
375
+ }
376
+ await this.cleanAndCreateDirectory(canonicalPath);
377
+ await this.copyDir(skillPath, canonicalPath);
378
+ if (plan.path === canonicalPath) {
379
+ return plan;
380
+ }
381
+ const symlinkCreated = await createRelativeSymlink(canonicalPath, plan.path);
382
+ if (!symlinkCreated) {
383
+ await this.cleanAndCreateDirectory(plan.path);
384
+ await this.copyDir(skillPath, plan.path);
385
+ return {
386
+ ...plan,
387
+ symlinkFailed: true,
388
+ };
389
+ }
390
+ return plan;
391
+ }
392
+ async installSkillFromContentForAgent(skillName, skillContent, agent, projectPath, options = {}) {
393
+ const plan = await this.getInstallPlan(skillName, agent, projectPath, options);
394
+ const skillsDir = agent.getSkillsDir(projectPath, options.global);
395
+ if (!skillsDir) {
396
+ throw new Error(`No skills directory for ${agent.name}`);
397
+ }
398
+ if (plan.mode === 'copy') {
399
+ await this.installSkillFromContent(skillName, skillContent, skillsDir);
400
+ return plan;
401
+ }
402
+ const canonicalPath = plan.canonicalPath;
403
+ if (!canonicalPath) {
404
+ throw new Error(`Missing canonical path for ${skillName}`);
405
+ }
406
+ await this.cleanAndCreateDirectory(canonicalPath);
407
+ await fs.writeFile(join(canonicalPath, 'SKILL.md'), skillContent, 'utf8');
408
+ if (plan.path === canonicalPath) {
409
+ return plan;
410
+ }
411
+ const symlinkCreated = await createRelativeSymlink(canonicalPath, plan.path);
412
+ if (!symlinkCreated) {
413
+ await this.installSkillFromContent(skillName, skillContent, skillsDir);
414
+ return {
415
+ ...plan,
416
+ symlinkFailed: true,
417
+ };
418
+ }
419
+ return plan;
420
+ }
200
421
  normalizeSkillName(skillName) {
201
422
  const normalized = skillName.trim();
202
423
  if (!normalized) {
@@ -219,110 +440,88 @@ export class SkillsManager {
219
440
  getInstallPath(skillName, targetDir) {
220
441
  return this.resolveInstallPath(targetDir, this.normalizeSkillName(skillName));
221
442
  }
443
+ async cleanAndCreateDirectory(path) {
444
+ await fs.rm(path, { recursive: true, force: true }).catch(() => { });
445
+ await fs.mkdir(path, { recursive: true });
446
+ }
447
+ isWithinPath(basePath, targetPath) {
448
+ const relativePath = relative(resolve(basePath), resolve(targetPath));
449
+ return relativePath === '' || (!relativePath.startsWith('..') &&
450
+ !relativePath.includes('/../') &&
451
+ !relativePath.includes('\\..\\'));
452
+ }
222
453
  /**
223
454
  * Recursively copy a directory
224
455
  */
225
456
  async copyDir(src, dest) {
226
- await fs.mkdir(dest, { recursive: true });
227
- const entries = await fs.readdir(src, { withFileTypes: true });
228
- for (const entry of entries) {
229
- const srcPath = join(src, entry.name);
230
- const destPath = join(dest, entry.name);
231
- if (entry.isDirectory()) {
232
- await this.copyDir(srcPath, destPath);
233
- }
234
- else {
235
- await fs.copyFile(srcPath, destPath);
236
- }
237
- }
457
+ await fs.cp(src, dest, { recursive: true, dereference: true });
238
458
  }
239
459
  /**
240
460
  * Add skills from a source (GitHub repo or local path)
241
461
  */
242
462
  async addFromSource(source, projectPath, options = {}) {
243
- const resolved = this.resolveSource(source);
244
- let repoPath;
245
- let tempDir = null;
246
- if (resolved.type === 'github') {
247
- if (!resolved.url)
248
- throw new Error(`Invalid source: ${source}`);
249
- tempDir = await this.cloneRepo(resolved.url);
250
- repoPath = tempDir;
463
+ const discovered = await this.discoverFromSource(source, projectPath, {
464
+ ...(options.from !== undefined ? { from: options.from } : {}),
465
+ });
466
+ let skills = discovered.skills;
467
+ if (skills.length === 0) {
468
+ return { installed: [], skipped: [], warnings: discovered.warnings };
251
469
  }
252
- else {
253
- repoPath = resolve(resolved.path || source);
254
- if (!(await fileExists(repoPath))) {
255
- throw new Error(`Local path not found: ${repoPath}`);
256
- }
470
+ if (options.skills && options.skills.length > 0) {
471
+ const names = new Set(options.skills.map(skill => skill.toLowerCase()));
472
+ skills = skills.filter(skill => names.has(skill.name.toLowerCase()));
257
473
  }
258
- try {
259
- // Discover skills
260
- let skills = await this.discoverSkills(repoPath);
261
- if (skills.length === 0) {
262
- return { installed: [], skipped: [] };
263
- }
264
- // Filter by name if specified
265
- if (options.skills && options.skills.length > 0) {
266
- const names = new Set(options.skills.map(s => s.toLowerCase()));
267
- skills = skills.filter(s => names.has(s.name.toLowerCase()));
268
- }
269
- // Get target agents
270
- const agents = await this.getTargetAgents(projectPath, options);
271
- if (agents.length === 0) {
272
- return {
273
- installed: [],
274
- skipped: skills.map(s => ({ skill: s, reason: 'No target agents found' }))
275
- };
276
- }
277
- const result = { installed: [], skipped: [] };
278
- const dirToAgents = new Map();
279
- for (const agent of agents) {
280
- if (!agent.supportsSkills()) {
281
- for (const skill of skills) {
282
- result.skipped.push({ skill, reason: `${agent.name} does not support skills` });
283
- }
284
- continue;
285
- }
286
- const skillsDir = agent.getSkillsDir(projectPath, options.global);
287
- if (!skillsDir) {
288
- for (const skill of skills) {
289
- result.skipped.push({ skill, reason: `No skills directory for ${agent.name}` });
290
- }
291
- continue;
474
+ const agents = await this.getTargetAgents(projectPath, options);
475
+ if (agents.length === 0) {
476
+ return {
477
+ installed: [],
478
+ skipped: skills.map(skill => ({ skill, reason: 'No target agents found' })),
479
+ warnings: discovered.warnings,
480
+ };
481
+ }
482
+ const result = { installed: [], skipped: [], warnings: discovered.warnings };
483
+ const installableAgents = [];
484
+ for (const agent of agents) {
485
+ if (!agent.supportsSkills()) {
486
+ for (const skill of skills) {
487
+ result.skipped.push({ skill, reason: `${agent.name} does not support skills` });
292
488
  }
293
- const existing = dirToAgents.get(skillsDir) || [];
294
- existing.push(agent);
295
- dirToAgents.set(skillsDir, existing);
489
+ continue;
296
490
  }
297
- for (const skill of skills) {
298
- for (const [skillsDir, dirAgents] of dirToAgents) {
299
- try {
300
- // For GitHub repos, always copy (symlinks to temp dirs would break)
301
- const shouldCopy = options.copy || resolved.type === 'github';
302
- const installedPath = await this.installSkill(skill.path, skill.name, skillsDir, shouldCopy);
303
- for (const agent of dirAgents) {
304
- result.installed.push({ skill, agent: agent.id, path: installedPath });
305
- }
306
- }
307
- catch (error) {
308
- result.skipped.push({ skill, reason: error.message });
309
- }
491
+ const skillsDir = agent.getSkillsDir(projectPath, options.global);
492
+ if (!skillsDir) {
493
+ for (const skill of skills) {
494
+ result.skipped.push({ skill, reason: `No skills directory for ${agent.name}` });
310
495
  }
496
+ continue;
311
497
  }
312
- return result;
498
+ installableAgents.push(agent);
313
499
  }
314
- finally {
315
- // Clean up temp directory
316
- if (tempDir) {
317
- await fs.rm(tempDir, { recursive: true, force: true }).catch(() => { });
500
+ for (const skill of skills) {
501
+ for (const agent of installableAgents) {
502
+ try {
503
+ const installOptions = {
504
+ ...(options.global !== undefined ? { global: options.global } : {}),
505
+ ...(options.copy !== undefined ? { copy: options.copy } : {}),
506
+ };
507
+ const installed = await this.installSkillForAgent(skill.path, skill.name, agent, projectPath, installOptions);
508
+ result.installed.push({ skill, agent: agent.id, ...installed });
509
+ }
510
+ catch (error) {
511
+ result.skipped.push({ skill, reason: error.message });
512
+ }
318
513
  }
319
514
  }
515
+ return result;
320
516
  }
321
517
  /**
322
518
  * List all installed skills
323
519
  */
324
520
  async listInstalled(projectPath, options = {}) {
325
521
  const agents = await this.getTargetAgents(projectPath, options);
522
+ return this.listInstalledForAgents(projectPath, agents, options);
523
+ }
524
+ async listInstalledForAgents(projectPath, agents, options = {}) {
326
525
  const installed = [];
327
526
  for (const agent of agents) {
328
527
  if (!agent.supportsSkills())
@@ -354,9 +553,18 @@ export class SkillsManager {
354
553
  continue;
355
554
  // Check if it's a symlink
356
555
  let isSymlink = false;
556
+ let canonicalPath;
357
557
  try {
358
558
  const stat = await fs.lstat(entryPath);
359
559
  isSymlink = stat.isSymbolicLink();
560
+ const canonicalBase = this.getCanonicalSkillsDir(projectPath, scope === 'global');
561
+ const resolvedEntryPath = await resolveRealPathOrSelf(entryPath);
562
+ if (this.isWithinPath(canonicalBase, resolvedEntryPath)) {
563
+ canonicalPath = resolvedEntryPath;
564
+ }
565
+ else if (this.isWithinPath(canonicalBase, entryPath)) {
566
+ canonicalPath = resolve(entryPath);
567
+ }
360
568
  }
361
569
  catch { }
362
570
  installed.push({
@@ -365,7 +573,9 @@ export class SkillsManager {
365
573
  path: entryPath,
366
574
  agent: agent.id,
367
575
  scope,
368
- isSymlink
576
+ isSymlink,
577
+ mode: canonicalPath ? 'symlink' : 'copy',
578
+ ...(canonicalPath ? { canonicalPath } : {}),
369
579
  });
370
580
  }
371
581
  }
@@ -377,43 +587,66 @@ export class SkillsManager {
377
587
  */
378
588
  async remove(skillNames, projectPath, options = {}) {
379
589
  const agents = await this.getTargetAgents(projectPath, options);
590
+ const allAgents = this.agentManager.getAllAgents().filter(agent => agent.supportsSkills());
380
591
  const removed = [];
381
592
  const notFound = [];
593
+ const skipped = [];
382
594
  const namesLower = new Set(skillNames.map(n => n.toLowerCase()));
383
- for (const agent of agents) {
384
- if (!agent.supportsSkills())
385
- continue;
386
- const scopes = [];
387
- if (!options.global) {
388
- scopes.push({ scope: 'project', dir: agent.getSkillsDir(projectPath, false) });
389
- }
390
- if (options.global) {
391
- scopes.push({ scope: 'global', dir: agent.getSkillsDir(projectPath, true) });
595
+ const targetAgentIds = new Set(agents.map(agent => agent.id));
596
+ const installed = await this.listInstalledForAgents(projectPath, allAgents, options);
597
+ const scopedInstalled = installed.filter(entry => options.global ? entry.scope === 'global' : entry.scope === 'project');
598
+ const targetedEntries = scopedInstalled.filter(entry => targetAgentIds.has(entry.agent) &&
599
+ namesLower.has(entry.name.toLowerCase()));
600
+ const targetedKeys = new Set(targetedEntries.map(entry => `${entry.agent}:${entry.scope}:${entry.path}:${entry.name}`));
601
+ const remainingEntries = installed.filter(entry => !targetedKeys.has(`${entry.agent}:${entry.scope}:${entry.path}:${entry.name}`));
602
+ const removedPaths = new Set();
603
+ const removedCanonicalPaths = new Set();
604
+ for (const entry of targetedEntries) {
605
+ const removedEntry = `${entry.agent}:${entry.name}`;
606
+ if (entry.canonicalPath && entry.path === entry.canonicalPath) {
607
+ const stillReferenced = remainingEntries.some(other => other.name.toLowerCase() === entry.name.toLowerCase() &&
608
+ other.canonicalPath === entry.canonicalPath);
609
+ if (stillReferenced) {
610
+ skipped.push({
611
+ name: entry.name,
612
+ reason: `Shared canonical path still used by another agent: ${entry.canonicalPath}`,
613
+ });
614
+ continue;
615
+ }
392
616
  }
393
- for (const { dir } of scopes) {
394
- if (!dir || !(await fileExists(dir)))
617
+ if (!removedPaths.has(entry.path)) {
618
+ try {
619
+ await fs.rm(entry.path, { recursive: true, force: true });
620
+ removedPaths.add(entry.path);
621
+ }
622
+ catch {
623
+ skipped.push({
624
+ name: entry.name,
625
+ reason: `Could not remove skill path: ${entry.path}`,
626
+ });
395
627
  continue;
396
- const entries = await listFiles(dir);
397
- for (const entry of entries) {
398
- if (!namesLower.has(entry.toLowerCase()))
399
- continue;
400
- const entryPath = join(dir, entry);
401
- try {
402
- await fs.rm(entryPath, { recursive: true, force: true });
403
- removed.push(`${agent.id}:${entry}`);
404
- }
405
- catch { }
406
628
  }
407
629
  }
630
+ if (entry.canonicalPath &&
631
+ entry.canonicalPath !== entry.path &&
632
+ !removedCanonicalPaths.has(entry.canonicalPath)) {
633
+ const stillReferenced = remainingEntries.some(other => other.name.toLowerCase() === entry.name.toLowerCase() &&
634
+ other.canonicalPath === entry.canonicalPath);
635
+ if (!stillReferenced) {
636
+ await fs.rm(entry.canonicalPath, { recursive: true, force: true }).catch(() => { });
637
+ removedCanonicalPaths.add(entry.canonicalPath);
638
+ }
639
+ }
640
+ removed.push(removedEntry);
408
641
  }
409
642
  // Check which names were not found anywhere
410
- const removedNames = new Set(removed.map(r => r.split(':')[1]?.toLowerCase()));
643
+ const foundNames = new Set(targetedEntries.map(entry => entry.name.toLowerCase()));
411
644
  for (const name of skillNames) {
412
- if (!removedNames.has(name.toLowerCase())) {
645
+ if (!foundNames.has(name.toLowerCase())) {
413
646
  notFound.push(name);
414
647
  }
415
648
  }
416
- return { removed, notFound };
649
+ return { removed, notFound, skipped };
417
650
  }
418
651
  }
419
652
  //# sourceMappingURL=skillsManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skillsManager.js","sourceRoot":"","sources":["../../src/core/skillsManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skillsManager.js","sourceRoot":"","sources":["../../src/core/skillsManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,WAAW,EACX,SAAS,EACT,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAc7E,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,sBAAsB,GAAG;IAC7B,KAAK,EAAE,aAAa;IACpB,IAAI,EAAE,cAAc;IACpB,GAAG,EAAE,iDAAiD;CACvD,CAAC;AAEF;;;GAGG;AACH,MAAM,iBAAiB,GAAG;IACxB,GAAG;IACH,QAAQ;IACR,iBAAiB;IACjB,sBAAsB;IACtB,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;CAClB,CAAC;AAEF,MAAM,OAAO,aAAa;IAChB,YAAY,CAAe;IAEnC,YAAY,YAA2B;QACrC,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,IAAI,YAAY,EAAE,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,MAAc,EAAE,OAA2B;QACvD,aAAa;QACb,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QAED,kBAAkB;QAClB,IAAI,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACxF,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACzD,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE,sBAAsB,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM;gBACzD,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBACjB,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;aACjB,CAAC;QACJ,CAAC;QAED,eAAe;QACf,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACzD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QAED,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,IAAI,gBAAgB,iBAAiB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxG,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,OAAO,CAAC,IAAI;gBACzB,UAAU,EAAE,MAAM;aACnB,CAAC;QACJ,CAAC;QAED,MAAM,sBAAsB,GAAG,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACzE,IAAI,sBAAsB,EAAE,CAAC;YAC3B,MAAM,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,GAAG,sBAAsB,CAAC;YAC7D,IAAI,aAAa,IAAI,UAAU,IAAI,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjE,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,aAAa;oBAC1B,UAAU;iBACX,CAAC;YACJ,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,IAAI,oCAAoC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE,sBAAsB,KAAK,IAAI,IAAI,MAAM;gBAC9C,KAAK;gBACL,IAAI;aACL,CAAC;QACJ,CAAC;QAED,gCAAgC;QAChC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACzC,CAAC;IAEO,4BAA4B,CAAC,MAAc,EAAE,OAA2B;QAC9E,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAEvC,IAAI,CAAC,gBAAgB,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CAAC,CACN,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC;YAChC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC;YAChC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC;YAChC,gBAAgB,CAAC,UAAU,CAAC,UAAU,CAAC;YACvC,gBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC;YACtC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC;YACnC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC9B,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAChC,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAC1B,MAAc,EACd,OAA2B;QAE3B,IAAI,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YACvD,OAAO;gBACL,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,sBAAsB,CAAC,KAAK;oBACnC,IAAI,EAAE,sBAAsB,CAAC,IAAI;oBACjC,GAAG,EAAE,sBAAsB,CAAC,GAAG;iBAChC;gBACD,cAAc,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;aAChC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;YAC3C,cAAc,EAAE,EAAE;SACnB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YAC1C,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAC;YACvC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAE/B,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC7C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;gBAAE,SAAS;YAE3C,gDAAgD;YAChD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAChD,IAAI,MAAM,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBACpC,8BAA8B;gBAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBACtD,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;YAED,uBAAuB;YACvB,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACrD,IAAI,MAAM,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;gBAC3D,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;YAED,yCAAyC;YACzC,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;gBAAE,SAAS;YAC5C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YAEzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACvC,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;oBAAE,SAAS;gBAE9C,oCAAoC;gBACpC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBACrD,MAAM,SAAS,GAAG,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;oBAC7D,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;wBACzD,CAAC,CAAC,IAAI,CAAC;gBAET,IAAI,CAAC,SAAS;oBAAE,SAAS;gBAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAClD,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,GAAW;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;gBAClE,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,sBAAsB,CAAC,MAAmB;QAChD,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;IACtD,CAAC;IAEO,wBAAwB,CAAC,MAAc,EAAE,YAAoB;QACnE,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAEvC,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAClI,OAAO,IAAI,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,YAAY,GAAG,iBAAiB,EAAE,CAAC;QACzC,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;YAC9C,CAAC,CAAC,2CAA2C,YAAY,CAAC,CAAC,CAAC,IAAI,gBAAgB,gBAAgB,YAAY,CAAC,CAAC,CAAC,IAAI;YACnH,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO,IAAI,KAAK,CACd,yBAAyB,YAAY,oDAAoD,gBAAgB,EAAE,CAC5G,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,yBAAyB,CACrC,MAAmB,EACnB,WAAmB;QAEnB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE;YACtH,IAAI,EAAE,MAAM,CAAC,WAAW;YACxB,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,QAAQ,CAAC,IAAI,CACX,WAAW,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,mBAAmB,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,kDAAkD,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,oBAAoB,CAC1M,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;YAC5B,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,MAAc,EACd,WAAmB,EACnB,UAA6B,EAAE;QAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;QAChC,IAAI,OAAO,GAAkB,IAAI,CAAC;QAElC,IAAI,CAAC;YACH,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACpC,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACrE,CAAC;YAED,IAAI,QAAgB,CAAC;YACrB,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBAED,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC7C,QAAQ,GAAG,OAAO,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC;gBAC5C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;oBAClC,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;YAED,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAChF,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;gBAChD,CAAC,CAAC,CAAC,aAAa,MAAM,qCAAqC,sBAAsB,CAAC,KAAK,IAAI,sBAAsB,CAAC,IAAI,YAAY,MAAM,qBAAqB,CAAC;gBAC9J,CAAC,CAAC,EAAE,CAAC;YAEP,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,WAAmB,EAAE,OAAgD;QACzF,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,MAAM,GAAY,EAAE,CAAC;YAC3B,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBACjD,IAAI,KAAK;oBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,oCAAoC;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACnE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,SAAiB,EACjB,SAAiB,EACjB,SAAiB,EACjB,OAAgB,KAAK;QAErB,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QACzE,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAExD,6BAA6B;QAC7B,IAAI,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,SAAiB,EACjB,YAAoB,EACpB,SAAiB;QAEjB,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QACzE,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAExD,IAAI,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAErE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,qBAAqB,CAAC,WAAmB,EAAE,SAAkB,KAAK;QAChE,OAAO,MAAM;YACX,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC;YACtC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,SAAiB,EACjB,KAAY,EACZ,WAAmB,EACnB,UAAgD,EAAE;QAElD,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAElE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAC1E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,MAAM;aACb,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAC3C,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,EAChE,mBAAmB,CACpB,CAAC;QAEF,IAAI,MAAM,wBAAwB,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC;YAC7D,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,aAAa;gBACb,IAAI,EAAE,SAAS;aAChB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,SAAS;YACf,aAAa;YACb,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,SAAiB,EACjB,SAAiB,EACjB,KAAY,EACZ,WAAmB,EACnB,UAAgD,EAAE;QAElD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAElE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7E,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO;gBACL,GAAG,IAAI;gBACP,aAAa,EAAE,IAAI;aACpB,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,+BAA+B,CACnC,SAAiB,EACjB,YAAoB,EACpB,KAAY,EACZ,WAAmB,EACnB,UAAgD,EAAE;QAElD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAElE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAE1E,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7E,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;YACvE,OAAO;gBACL,GAAG,IAAI;gBACP,aAAa,EAAE,IAAI;aACpB,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,kBAAkB,CAAC,SAAiB;QAC1C,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAEpC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACvG,MAAM,IAAI,KAAK,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,kBAAkB,CAAC,SAAiB,EAAE,SAAiB;QAC7D,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QAE3D,IAAI,YAAY,KAAK,EAAE,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7H,MAAM,IAAI,KAAK,CAAC,uDAAuD,SAAS,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,cAAc,CAAC,SAAiB,EAAE,SAAiB;QACjD,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IAChF,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,IAAY;QAChD,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAEO,YAAY,CAAC,QAAgB,EAAE,UAAkB;QACvD,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACtE,OAAO,YAAY,KAAK,EAAE,IAAI,CAC5B,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC;YAC9B,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC9B,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACjC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,IAAY;QAC7C,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,MAAc,EACd,WAAmB,EACnB,UAA4B,EAAE;QAE9B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE;YACpE,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAE/B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;QACvE,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACxE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,SAAS,EAAE,EAAE;gBACb,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;gBAC3E,QAAQ,EAAE,UAAU,CAAC,QAAQ;aAC9B,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAoB,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC9F,MAAM,iBAAiB,GAAY,EAAE,CAAC;QAEtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,0BAA0B,EAAE,CAAC,CAAC;gBAClF,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAClF,CAAC;gBACD,SAAS;YACX,CAAC;YAED,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;gBACtC,IAAI,CAAC;oBACH,MAAM,cAAc,GAAG;wBACrB,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACnE,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC9D,CAAC;oBACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAC/C,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,EACV,KAAK,EACL,WAAW,EACX,cAAc,CACf,CAAC;oBAEF,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;gBAClE,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,WAAmB,EAAE,UAA6B,EAAE;QACtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,WAAmB,EACnB,MAAe,EACf,UAA6B,EAAE;QAE/B,MAAM,SAAS,GAAqB,EAAE,CAAC;QAEvC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;gBAAE,SAAS;YAEtC,uCAAuC;YACvC,MAAM,MAAM,GAA+D,EAAE,CAAC;YAE9E,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAE7E,KAAK,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,MAAM,EAAE,CAAC;gBACpC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;oBAAE,SAAS;gBAE/C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;gBACrC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBACnC,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;wBAAE,SAAS;oBAE9C,oBAAoB;oBACpB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;oBAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;oBACrD,MAAM,SAAS,GAAG,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;wBAC7D,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;4BACzD,CAAC,CAAC,IAAI,CAAC;oBAET,IAAI,CAAC,SAAS;wBAAE,SAAS;oBAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;oBAClD,IAAI,CAAC,MAAM;wBAAE,SAAS;oBAEtB,0BAA0B;oBAC1B,IAAI,SAAS,GAAG,KAAK,CAAC;oBACtB,IAAI,aAAiC,CAAC;oBACtC,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBACvC,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;wBAClC,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC;wBAClF,MAAM,iBAAiB,GAAG,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAC;wBACjE,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,iBAAiB,CAAC,EAAE,CAAC;4BACxD,aAAa,GAAG,iBAAiB,CAAC;wBACpC,CAAC;6BAAM,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC;4BACvD,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;wBACrC,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;oBAEV,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;wBAC/B,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,KAAK,CAAC,EAAE;wBACf,KAAK;wBACL,SAAS;wBACT,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;wBACxC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC5C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,UAAoB,EACpB,WAAmB,EACnB,UAA+B,EAAE;QAEjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;QAC3F,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,OAAO,GAA4C,EAAE,CAAC;QAC5D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACrF,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC/C,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CACtE,CAAC;QACF,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACrD,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CACzC,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAC1F,CAAC;QACF,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CACvC,KAAK,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CACxF,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QACvC,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;QAEhD,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;YACpC,MAAM,YAAY,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAEpD,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC9D,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACpD,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;oBACrD,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,CAC5C,CAAC;gBAEF,IAAI,eAAe,EAAE,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,MAAM,EAAE,sDAAsD,KAAK,CAAC,aAAa,EAAE;qBACpF,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;YACH,CAAC;YAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1D,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,MAAM,EAAE,gCAAgC,KAAK,CAAC,IAAI,EAAE;qBACrD,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;YACH,CAAC;YAED,IACE,KAAK,CAAC,aAAa;gBACnB,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,IAAI;gBAClC,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,EAC/C,CAAC;gBACD,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACpD,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;oBACrD,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,CAC5C,CAAC;gBAEF,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBACnF,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC;QAED,4CAA4C;QAC5C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACnF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACxC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACxC,CAAC;CACF"}