poe-code 3.0.11 → 3.0.13

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.
@@ -3,12 +3,11 @@ import { loadCredentials } from "../../services/credentials.js";
3
3
  import { initializeClient } from "../../services/client-instance.js";
4
4
  import { runMcpServerWithTransport, formatMcpToolsDocs } from "../mcp-server.js";
5
5
  import { createExecutionResources, resolveCommandFlags } from "./shared.js";
6
- import { ValidationError } from "../errors.js";
7
- import { supportedAgents, configure, unconfigure } from "@poe-code/agent-mcp-config";
6
+ import { parseMcpOutputFormatPreferences } from "../mcp-output-format.js";
7
+ import { supportedAgents, configure, unconfigure, resolveAgentSupport } from "@poe-code/agent-mcp-config";
8
8
  import { getCurrentExecutionContext, toMcpServerCommand } from "../../utils/execution-context.js";
9
- import { DEFAULT_AGENT, MCP_AGENT_PROFILES, formatAgentsList, getAgentProfile } from "../mcp-agents.js";
10
9
  const DEFAULT_MCP_AGENT = "claude-code";
11
- function createMcpServerEntry(profileName = DEFAULT_AGENT) {
10
+ function createMcpServerEntry() {
12
11
  const context = getCurrentExecutionContext(import.meta.url);
13
12
  const mcpCommand = toMcpServerCommand(context.command, "mcp");
14
13
  return {
@@ -16,20 +15,18 @@ function createMcpServerEntry(profileName = DEFAULT_AGENT) {
16
15
  config: {
17
16
  transport: "stdio",
18
17
  command: mcpCommand.command,
19
- args: [...mcpCommand.args, "serve", "--agent", profileName]
18
+ args: [...mcpCommand.args, "serve"]
20
19
  }
21
20
  };
22
21
  }
23
22
  function buildHelpText() {
24
- const server = createMcpServerEntry(DEFAULT_AGENT);
23
+ const server = createMcpServerEntry();
25
24
  const lines = [
26
25
  "",
27
26
  "Configuration:",
28
27
  JSON.stringify({ [server.name]: server.config }, null, 2),
29
28
  "",
30
- formatMcpToolsDocs(),
31
- "",
32
- formatAgentsList()
29
+ formatMcpToolsDocs()
33
30
  ];
34
31
  return lines.join("\n");
35
32
  }
@@ -44,15 +41,10 @@ export function registerMcpCommand(program, container) {
44
41
  mcp
45
42
  .command("serve")
46
43
  .description("Run MCP server on stdin/stdout")
47
- .option("--agent <name>", `MCP client profile (default: ${DEFAULT_AGENT})`)
44
+ .option("--output-format <format>", 'Preferred MCP media output format(s): "url", "base64", or comma-separated list (default: "url").')
48
45
  .addHelpText("after", buildHelpText())
49
- .action(async function () {
50
- const agent = this.opts().agent ?? DEFAULT_AGENT;
51
- const profile = getAgentProfile(agent);
52
- if (!profile) {
53
- throw new ValidationError(`Unknown agent: ${agent}. Available agents: ${Object.keys(MCP_AGENT_PROFILES).join(", ")}`);
54
- }
55
- await runMcpServer(container, profile);
46
+ .action(async (options) => {
47
+ await runMcpServer(container, { outputFormat: options.outputFormat });
56
48
  });
57
49
  mcp
58
50
  .command("configure [agent]")
@@ -79,11 +71,17 @@ export function registerMcpCommand(program, container) {
79
71
  }
80
72
  }
81
73
  resources.logger.intro(`mcp configure ${agent}`);
82
- if (!supportedAgents.includes(agent)) {
74
+ const support = resolveAgentSupport(agent);
75
+ if (support.status === "unknown") {
83
76
  resources.logger.error(`Unknown agent: ${agent}`);
84
77
  return;
85
78
  }
86
- await configure(agent, createMcpServerEntry(agent), {
79
+ if (support.status === "unsupported") {
80
+ resources.logger.error(`MCP not supported for ${support.id}.`);
81
+ return;
82
+ }
83
+ const resolvedAgent = support.id ?? agent;
84
+ await configure(resolvedAgent, createMcpServerEntry(), {
87
85
  fs: container.fs,
88
86
  homeDir: container.env.homeDir,
89
87
  platform: process.platform,
@@ -102,8 +100,8 @@ export function registerMcpCommand(program, container) {
102
100
  }
103
101
  });
104
102
  resources.context.complete({
105
- success: `Configured MCP for ${agent}.`,
106
- dry: `Would configure MCP for ${agent}.`
103
+ success: `Configured MCP for ${resolvedAgent}.`,
104
+ dry: `Would configure MCP for ${resolvedAgent}.`
107
105
  });
108
106
  resources.context.finalize();
109
107
  });
@@ -114,11 +112,17 @@ export function registerMcpCommand(program, container) {
114
112
  const flags = resolveCommandFlags(program);
115
113
  const resources = createExecutionResources(container, flags, "mcp");
116
114
  resources.logger.intro(`mcp unconfigure ${agent}`);
117
- if (!supportedAgents.includes(agent)) {
115
+ const support = resolveAgentSupport(agent);
116
+ if (support.status === "unknown") {
118
117
  resources.logger.error(`Unknown agent: ${agent}`);
119
118
  return;
120
119
  }
121
- await unconfigure(agent, "poe-code", {
120
+ if (support.status === "unsupported") {
121
+ resources.logger.error(`MCP not supported for ${support.id}.`);
122
+ return;
123
+ }
124
+ const resolvedAgent = support.id ?? agent;
125
+ await unconfigure(resolvedAgent, "poe-code", {
122
126
  fs: container.fs,
123
127
  homeDir: container.env.homeDir,
124
128
  platform: process.platform,
@@ -137,13 +141,14 @@ export function registerMcpCommand(program, container) {
137
141
  }
138
142
  });
139
143
  resources.context.complete({
140
- success: `Removed MCP configuration from ${agent}.`,
141
- dry: `Would remove MCP configuration from ${agent}.`
144
+ success: `Removed MCP configuration from ${resolvedAgent}.`,
145
+ dry: `Would remove MCP configuration from ${resolvedAgent}.`
142
146
  });
143
147
  resources.context.finalize();
144
148
  });
145
149
  }
146
- async function runMcpServer(container, profile) {
150
+ async function runMcpServer(container, options) {
151
+ const outputFormatPreferences = parseMcpOutputFormatPreferences(options.outputFormat);
147
152
  const apiKey = await loadCredentials({
148
153
  fs: container.fs,
149
154
  filePath: container.env.credentialsPath
@@ -158,6 +163,6 @@ async function runMcpServer(container, profile) {
158
163
  baseUrl: container.env.poeApiBaseUrl,
159
164
  httpClient: container.httpClient
160
165
  });
161
- await runMcpServerWithTransport(profile);
166
+ await runMcpServerWithTransport(outputFormatPreferences);
162
167
  }
163
168
  //# sourceMappingURL=mcp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ import type { CliContainer } from "../container.js";
3
+ export declare function registerSkillCommand(program: Command, container: CliContainer): void;
@@ -0,0 +1,232 @@
1
+ import { select, isCancel, cancel } from "@poe-code/design-system";
2
+ import { supportedAgents, configure, unconfigure, resolveAgentSupport } from "@poe-code/agent-skill-config";
3
+ import { createExecutionResources, resolveCommandFlags } from "./shared.js";
4
+ const DEFAULT_SKILL_AGENT = "claude-code";
5
+ function buildHelpText() {
6
+ return [
7
+ "",
8
+ "Skill directories:",
9
+ "- poe-code skill configure installs skill directories for supported agents.",
10
+ "- poe-code skill unconfigure removes skill directories."
11
+ ].join("\n");
12
+ }
13
+ export function registerSkillCommand(program, container) {
14
+ const skill = program
15
+ .command("skill")
16
+ .description("Skill directory commands")
17
+ .addHelpText("after", buildHelpText())
18
+ .action(async function () {
19
+ this.help();
20
+ });
21
+ skill
22
+ .command("configure [agent]")
23
+ .description("Install skill directories for an agent")
24
+ .option("--agent <name>", "Agent to configure skills for")
25
+ .option("--local", "Use local scope (in the current project)")
26
+ .option("--global", "Use global scope (in the user home directory)")
27
+ .action(async (agentArg, options) => {
28
+ const flags = resolveCommandFlags(program);
29
+ const resources = createExecutionResources(container, flags, "skill");
30
+ if (options.local && options.global) {
31
+ resources.logger.error("Use either --local or --global, not both.");
32
+ return;
33
+ }
34
+ let agent = options.agent ?? agentArg;
35
+ if (!agent) {
36
+ if (flags.assumeYes) {
37
+ agent = DEFAULT_SKILL_AGENT;
38
+ }
39
+ else {
40
+ const selected = await select({
41
+ message: "Select agent to configure:",
42
+ options: supportedAgents.map((a) => ({ value: a, label: a }))
43
+ });
44
+ if (isCancel(selected)) {
45
+ cancel("Operation cancelled");
46
+ return;
47
+ }
48
+ agent = selected;
49
+ }
50
+ }
51
+ const support = resolveAgentSupport(agent);
52
+ if (support.status === "unknown") {
53
+ resources.logger.error(`Unknown agent: ${agent}`);
54
+ return;
55
+ }
56
+ if (support.status === "unsupported") {
57
+ resources.logger.error(`Skills not supported for ${support.id}.`);
58
+ return;
59
+ }
60
+ const resolvedAgent = support.id ?? agent;
61
+ const config = support.config;
62
+ let scope;
63
+ if (options.local) {
64
+ scope = "local";
65
+ }
66
+ else if (options.global) {
67
+ scope = "global";
68
+ }
69
+ else if (flags.assumeYes) {
70
+ scope = "global";
71
+ }
72
+ else {
73
+ const selected = await select({
74
+ message: "Select scope:",
75
+ options: [
76
+ { value: "global", label: "Global" },
77
+ { value: "local", label: "Local" }
78
+ ]
79
+ });
80
+ if (isCancel(selected)) {
81
+ cancel("Operation cancelled");
82
+ return;
83
+ }
84
+ scope = selected;
85
+ }
86
+ const displayPath = scope === "global"
87
+ ? config.globalSkillDir
88
+ : config.localSkillDir.startsWith("./")
89
+ ? config.localSkillDir
90
+ : `./${config.localSkillDir}`;
91
+ resources.logger.intro(`skill configure ${resolvedAgent}`);
92
+ await configure(resolvedAgent, {
93
+ fs: container.fs,
94
+ homeDir: container.env.homeDir,
95
+ cwd: container.env.cwd,
96
+ scope,
97
+ dryRun: flags.dryRun,
98
+ observers: {
99
+ onStart: (details) => {
100
+ if (flags.dryRun) {
101
+ resources.logger.dryRun(`Would ${details.label.toLowerCase()}`);
102
+ }
103
+ },
104
+ onComplete: (details, outcome) => {
105
+ if (!flags.dryRun && outcome.changed) {
106
+ resources.logger.verbose(details.label);
107
+ }
108
+ }
109
+ }
110
+ });
111
+ resources.context.complete({
112
+ success: `Configured skills for ${resolvedAgent} at ${displayPath}`,
113
+ dry: `Would configure skills for ${resolvedAgent} at ${displayPath}`
114
+ });
115
+ resources.context.finalize();
116
+ });
117
+ skill
118
+ .command("unconfigure [agent]")
119
+ .description("Remove skill directories for an agent")
120
+ .option("--agent <name>", "Agent to unconfigure skills for")
121
+ .option("--local", "Use local scope (in the current project)")
122
+ .option("--global", "Use global scope (in the user home directory)")
123
+ .option("--force", "Remove directory even if it contains files")
124
+ .action(async (agentArg, options) => {
125
+ const flags = resolveCommandFlags(program);
126
+ const resources = createExecutionResources(container, flags, "skill");
127
+ if (options.local && options.global) {
128
+ resources.logger.error("Use either --local or --global, not both.");
129
+ return;
130
+ }
131
+ let agent = options.agent ?? agentArg;
132
+ if (!agent) {
133
+ const selected = await select({
134
+ message: "Select agent to unconfigure:",
135
+ options: supportedAgents.map((a) => ({ value: a, label: a }))
136
+ });
137
+ if (isCancel(selected)) {
138
+ cancel("Operation cancelled");
139
+ return;
140
+ }
141
+ agent = selected;
142
+ }
143
+ const support = resolveAgentSupport(agent);
144
+ if (support.status === "unknown") {
145
+ resources.logger.error(`Unknown agent: ${agent}`);
146
+ return;
147
+ }
148
+ if (support.status === "unsupported") {
149
+ resources.logger.error(`Skills not supported for ${support.id}.`);
150
+ return;
151
+ }
152
+ const resolvedAgent = support.id ?? agent;
153
+ const config = support.config;
154
+ let scope;
155
+ if (options.local) {
156
+ scope = "local";
157
+ }
158
+ else if (options.global) {
159
+ scope = "global";
160
+ }
161
+ else {
162
+ const selected = await select({
163
+ message: "Select scope:",
164
+ options: [
165
+ { value: "global", label: "Global" },
166
+ { value: "local", label: "Local" }
167
+ ]
168
+ });
169
+ if (isCancel(selected)) {
170
+ cancel("Operation cancelled");
171
+ return;
172
+ }
173
+ scope = selected;
174
+ }
175
+ const displayPath = scope === "global" ? config.globalSkillDir : config.localSkillDir;
176
+ resources.logger.intro(`skill unconfigure ${resolvedAgent}`);
177
+ let targetPath;
178
+ let removed = false;
179
+ await unconfigure(resolvedAgent, {
180
+ fs: container.fs,
181
+ homeDir: container.env.homeDir,
182
+ cwd: container.env.cwd,
183
+ scope,
184
+ force: Boolean(options.force),
185
+ dryRun: flags.dryRun,
186
+ observers: {
187
+ onStart: (details) => {
188
+ if (flags.dryRun) {
189
+ resources.logger.dryRun(`Would ${details.label.toLowerCase()}`);
190
+ }
191
+ },
192
+ onComplete: (details, outcome) => {
193
+ targetPath = details.targetPath;
194
+ removed = outcome.changed;
195
+ if (!flags.dryRun && outcome.changed) {
196
+ resources.logger.verbose(details.label);
197
+ }
198
+ }
199
+ }
200
+ });
201
+ if (flags.dryRun) {
202
+ resources.context.complete({
203
+ success: `Removed skill directory for ${resolvedAgent} at ${displayPath}`,
204
+ dry: `Would remove skill directory for ${resolvedAgent} at ${displayPath}`
205
+ });
206
+ resources.context.finalize();
207
+ return;
208
+ }
209
+ if (removed) {
210
+ resources.context.complete({
211
+ success: `Removed skill directory for ${resolvedAgent} at ${displayPath}`,
212
+ dry: `Would remove skill directory for ${resolvedAgent} at ${displayPath}`
213
+ });
214
+ resources.context.finalize();
215
+ return;
216
+ }
217
+ if (!options.force && targetPath) {
218
+ try {
219
+ const entries = await container.fs.readdir(targetPath);
220
+ if (entries.length > 0) {
221
+ resources.logger.warn(`Skill directory for ${resolvedAgent} at ${displayPath} has files. Use --force to remove.`);
222
+ return;
223
+ }
224
+ }
225
+ catch {
226
+ // Directory missing or unreadable.
227
+ }
228
+ }
229
+ resources.logger.info(`No skill directory found for ${resolvedAgent} at ${displayPath}.`);
230
+ });
231
+ }
232
+ //# sourceMappingURL=skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../src/cli/commands/skill.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  import path from "node:path";
2
+ import { renderAcpStream } from "@poe-code/agent-spawn";
3
+ import { allAgents, resolveAgentId } from "@poe-code/agent-defs";
4
+ import { text } from "@poe-code/design-system";
2
5
  import { createExecutionResources, resolveCommandFlags, resolveServiceAdapter, formatServiceList } from "./shared.js";
3
6
  import { spawnCore } from "../../sdk/spawn-core.js";
7
+ import { spawn as spawnSdk } from "../../sdk/spawn.js";
4
8
  export function registerSpawnCommand(program, container, options = {}) {
5
9
  const spawnServices = container.registry
6
10
  .list()
@@ -73,47 +77,122 @@ export function registerSpawnCommand(program, container, options = {}) {
73
77
  resources.logger.intro(`spawn ${canonicalService}`);
74
78
  const canonicalHandler = options.handlers?.[canonicalService];
75
79
  if (canonicalHandler) {
76
- await canonicalHandler({
77
- container,
78
- service: canonicalService,
79
- options: spawnOptions,
80
- flags,
81
- resources
80
+ try {
81
+ await canonicalHandler({
82
+ container,
83
+ service: canonicalService,
84
+ options: spawnOptions,
85
+ flags,
86
+ resources
87
+ });
88
+ return;
89
+ }
90
+ finally {
91
+ resources.context.finalize();
92
+ }
93
+ }
94
+ try {
95
+ if (flags.dryRun) {
96
+ // spawnCore already logs the dry run details.
97
+ await spawnCore(container, canonicalService, spawnOptions, {
98
+ dryRun: true,
99
+ verbose: flags.verbose
100
+ });
101
+ return;
102
+ }
103
+ const { events, result } = spawnSdk(canonicalService, {
104
+ prompt: spawnOptions.prompt,
105
+ args: spawnOptions.args,
106
+ model: spawnOptions.model,
107
+ cwd: spawnOptions.cwd
82
108
  });
83
- resources.context.finalize();
84
- return;
109
+ await renderAcpStream(events);
110
+ const final = await result;
111
+ if (final.exitCode !== 0) {
112
+ const detail = final.stderr.trim() || final.stdout.trim();
113
+ const suffix = detail ? `: ${detail}` : "";
114
+ throw new Error(`${adapter.label} spawn failed with exit code ${final.exitCode}${suffix}`);
115
+ }
116
+ const trimmedStdout = final.stdout.trim();
117
+ if (trimmedStdout) {
118
+ resources.logger.info(trimmedStdout);
119
+ }
120
+ else {
121
+ const trimmedStderr = final.stderr.trim();
122
+ if (trimmedStderr) {
123
+ resources.logger.info(trimmedStderr);
124
+ }
125
+ else {
126
+ resources.logger.info(`${adapter.label} spawn completed.`);
127
+ }
128
+ }
129
+ if (final.threadId) {
130
+ const resolvedId = resolveAgentId(canonicalService) ?? canonicalService;
131
+ const agentDefinition = allAgents.find((agent) => agent.id === resolvedId);
132
+ const binaryName = agentDefinition?.binaryName;
133
+ if (binaryName) {
134
+ const resumeCwd = spawnOptions.cwd ?? process.cwd();
135
+ const resumeCommand = `${binaryName} resume -C ${shlexQuote(resumeCwd)} ${final.threadId}`;
136
+ resources.logger.info(text.muted(`\nResume: ${resumeCommand}`));
137
+ }
138
+ }
85
139
  }
86
- // Use SDK core spawn implementation
87
- const result = await spawnCore(container, canonicalService, spawnOptions, {
88
- dryRun: flags.dryRun,
89
- verbose: flags.verbose
90
- });
91
- // Handle dry run - spawnCore already logged the message
92
- if (flags.dryRun) {
140
+ finally {
93
141
  resources.context.finalize();
94
- return;
95
- }
96
- // Handle result output
97
- if (result.exitCode !== 0) {
98
- const detail = result.stderr.trim() || result.stdout.trim();
99
- const suffix = detail ? `: ${detail}` : "";
100
- throw new Error(`${adapter.label} spawn failed with exit code ${result.exitCode}${suffix}`);
101
142
  }
102
- const trimmedStdout = result.stdout.trim();
103
- if (trimmedStdout) {
104
- resources.logger.info(trimmedStdout);
105
- resources.context.finalize();
106
- return;
143
+ });
144
+ }
145
+ function shlexQuote(value) {
146
+ if (value.length === 0) {
147
+ return "''";
148
+ }
149
+ let isSafe = true;
150
+ for (let index = 0; index < value.length; index += 1) {
151
+ if (!isSafeShellChar(value.charCodeAt(index))) {
152
+ isSafe = false;
153
+ break;
107
154
  }
108
- const trimmedStderr = result.stderr.trim();
109
- if (trimmedStderr) {
110
- resources.logger.info(trimmedStderr);
111
- resources.context.finalize();
112
- return;
155
+ }
156
+ if (isSafe) {
157
+ return value;
158
+ }
159
+ let output = "'";
160
+ for (let index = 0; index < value.length; index += 1) {
161
+ const char = value[index];
162
+ if (char === "'") {
163
+ output += `'"'"'`;
164
+ continue;
113
165
  }
114
- resources.logger.info(`${adapter.label} spawn completed.`);
115
- resources.context.finalize();
116
- });
166
+ output += char;
167
+ }
168
+ output += "'";
169
+ return output;
170
+ }
171
+ function isSafeShellChar(code) {
172
+ if (code >= 48 && code <= 57) {
173
+ return true;
174
+ }
175
+ if (code >= 65 && code <= 90) {
176
+ return true;
177
+ }
178
+ if (code >= 97 && code <= 122) {
179
+ return true;
180
+ }
181
+ switch (code) {
182
+ case 95: // _
183
+ case 64: // @
184
+ case 37: // %
185
+ case 43: // +
186
+ case 61: // =
187
+ case 58: // :
188
+ case 44: // ,
189
+ case 46: // .
190
+ case 47: // /
191
+ case 45: // -
192
+ return true;
193
+ default:
194
+ return false;
195
+ }
117
196
  }
118
197
  function resolveSpawnWorkingDirectory(baseDir, candidate) {
119
198
  if (!candidate || candidate.trim().length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/cli/commands/spawn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/cli/commands/spawn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export type McpOutputFormat = "url" | "base64";
2
+ export declare function parseMcpOutputFormatPreferences(value: string | undefined): McpOutputFormat[];
@@ -0,0 +1,22 @@
1
+ import { ValidationError } from "./errors.js";
2
+ export function parseMcpOutputFormatPreferences(value) {
3
+ if (value === undefined) {
4
+ return ["url"];
5
+ }
6
+ const rawParts = value.split(",");
7
+ const preferences = [];
8
+ for (const raw of rawParts) {
9
+ const normalized = raw.trim().toLowerCase();
10
+ if (normalized.length === 0) {
11
+ throw new ValidationError(`Invalid --output-format: empty entry in "${value}". ` +
12
+ `Use "url", "base64", or a comma-separated list like "base64,url".`);
13
+ }
14
+ if (normalized !== "url" && normalized !== "base64") {
15
+ throw new ValidationError(`Invalid --output-format entry "${raw.trim()}". ` +
16
+ `Expected "url" or "base64".`);
17
+ }
18
+ preferences.push(normalized);
19
+ }
20
+ return preferences;
21
+ }
22
+ //# sourceMappingURL=mcp-output-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-output-format.js","sourceRoot":"","sources":["../../src/cli/mcp-output-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI9C,MAAM,UAAU,+BAA+B,CAC7C,KAAyB;IAEzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,WAAW,GAAsB,EAAE,CAAC;IAE1C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,eAAe,CACvB,4CAA4C,KAAK,KAAK;gBACpD,mEAAmE,CACtE,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YACpD,MAAM,IAAI,eAAe,CACvB,kCAAkC,GAAG,CAAC,IAAI,EAAE,KAAK;gBAC/C,6BAA6B,CAChC,CAAC;QACJ,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,UAA6B,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}