visionclaw 0.1.166 → 0.1.167
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +2 -0
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/upgrade-handler.d.ts +7 -0
- package/dist/agent/upgrade-handler.d.ts.map +1 -0
- package/dist/agent/upgrade-handler.js +28 -0
- package/dist/agent/upgrade-handler.js.map +1 -0
- package/dist/onboarding/index.d.ts.map +1 -1
- package/dist/onboarding/index.js +3 -36
- package/dist/onboarding/index.js.map +1 -1
- package/dist/onboarding/setup-steps.d.ts.map +1 -1
- package/dist/onboarding/setup-steps.js +4 -11
- package/dist/onboarding/setup-steps.js.map +1 -1
- package/dist/tools/upgrade.d.ts +15 -0
- package/dist/tools/upgrade.d.ts.map +1 -1
- package/dist/tools/upgrade.js +130 -145
- package/dist/tools/upgrade.js.map +1 -1
- package/dist-agent/bundle.cjs +1599 -1649
- package/package.json +1 -1
package/dist/tools/upgrade.js
CHANGED
|
@@ -76,6 +76,128 @@ async function getNpmTarballUrl(version) {
|
|
|
76
76
|
}
|
|
77
77
|
return url;
|
|
78
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Core upgrade logic shared by the MCP upgrade tool and the remote command handler.
|
|
81
|
+
*
|
|
82
|
+
* Checks npm for the latest version, installs it, writes the pending-upgrade
|
|
83
|
+
* marker, and schedules a restart when a process manager is available.
|
|
84
|
+
*
|
|
85
|
+
* Throws on unexpected errors (callers should catch).
|
|
86
|
+
*/
|
|
87
|
+
export async function performUpgrade() {
|
|
88
|
+
const currentVersion = getCurrentVersion();
|
|
89
|
+
const installation = getInstallationInfo();
|
|
90
|
+
let latestVersion;
|
|
91
|
+
try {
|
|
92
|
+
latestVersion = await getLatestNpmVersion();
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return { ok: false, message: "Could not check for updates. Failed to query npm registry." };
|
|
96
|
+
}
|
|
97
|
+
if (compareSemver(latestVersion, currentVersion) <= 0) {
|
|
98
|
+
return { ok: true, message: `Already up to date. Current version: ${currentVersion}` };
|
|
99
|
+
}
|
|
100
|
+
const changelog = await fetchChangelogFromNpm(latestVersion, currentVersion);
|
|
101
|
+
const changelogSection = changelog
|
|
102
|
+
? `\n\nChanges in ${latestVersion}:\n${changelog}`
|
|
103
|
+
: "";
|
|
104
|
+
// ── Electron mode: download bundle to external path ──
|
|
105
|
+
if (isElectronChild()) {
|
|
106
|
+
const installLog = await downloadBundleFromNpm(latestVersion);
|
|
107
|
+
writePendingUpgrade({
|
|
108
|
+
fromVersion: currentVersion,
|
|
109
|
+
toVersion: latestVersion,
|
|
110
|
+
upgradedAt: new Date().toISOString(),
|
|
111
|
+
});
|
|
112
|
+
scheduleRestart(RESTART_DELAY, runGracefulShutdown);
|
|
113
|
+
return {
|
|
114
|
+
ok: true,
|
|
115
|
+
message: [
|
|
116
|
+
`Downloaded ${PACKAGE_NAME} ${latestVersion} bundle to ${EXTERNAL_AGENT_DIR}.`,
|
|
117
|
+
installLog,
|
|
118
|
+
changelogSection,
|
|
119
|
+
`Restarting via Electron in ${RESTART_DELAY / 1000} seconds...`,
|
|
120
|
+
]
|
|
121
|
+
.filter(Boolean)
|
|
122
|
+
.join("\n"),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
// ── Standard mode: pnpm global install ──
|
|
126
|
+
await ensurePnpmAvailable();
|
|
127
|
+
const installCmd = `pnpm add -g ${PACKAGE_NAME}@latest`;
|
|
128
|
+
const { stdout: installOut, stderr: installErr } = await execAsync(installCmd, EXEC_OPTIONS);
|
|
129
|
+
const installLog = (installOut + installErr).trim();
|
|
130
|
+
if (installation.isLocalCheckout) {
|
|
131
|
+
return {
|
|
132
|
+
ok: true,
|
|
133
|
+
message: [
|
|
134
|
+
`Installed ${PACKAGE_NAME} ${latestVersion} globally via pnpm.`,
|
|
135
|
+
installLog,
|
|
136
|
+
changelogSection,
|
|
137
|
+
`This VisionClaw instance is running from a local checkout at ${installation.packageRoot}, so its running version remains ${currentVersion} until that checkout is updated and restarted.`,
|
|
138
|
+
"A restart was not scheduled because it would just relaunch the same local checkout.",
|
|
139
|
+
]
|
|
140
|
+
.filter(Boolean)
|
|
141
|
+
.join("\n"),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
const procManager = detectProcessManager();
|
|
145
|
+
if (procManager) {
|
|
146
|
+
writePendingUpgrade({
|
|
147
|
+
fromVersion: currentVersion,
|
|
148
|
+
toVersion: latestVersion,
|
|
149
|
+
upgradedAt: new Date().toISOString(),
|
|
150
|
+
});
|
|
151
|
+
scheduleRestart(RESTART_DELAY, runGracefulShutdown);
|
|
152
|
+
return {
|
|
153
|
+
ok: true,
|
|
154
|
+
message: [
|
|
155
|
+
`Installed ${latestVersion} via pnpm; the current process is still running ${currentVersion}.`,
|
|
156
|
+
installLog,
|
|
157
|
+
changelogSection,
|
|
158
|
+
`Restarting via ${procManager} in ${RESTART_DELAY / 1000} seconds...`,
|
|
159
|
+
]
|
|
160
|
+
.filter(Boolean)
|
|
161
|
+
.join("\n"),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
ok: true,
|
|
166
|
+
message: [
|
|
167
|
+
`Installed ${latestVersion} via pnpm; the current process is still running ${currentVersion}.`,
|
|
168
|
+
installLog,
|
|
169
|
+
changelogSection,
|
|
170
|
+
"Please restart VisionClaw manually to run the new version.",
|
|
171
|
+
"Tip: run VisionClaw with PM2 (`pm2 start visionclaw --name visionclaw`) to enable automatic restarts after upgrades.",
|
|
172
|
+
]
|
|
173
|
+
.filter(Boolean)
|
|
174
|
+
.join("\n"),
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
// ---------------------------------------------------------------------------
|
|
178
|
+
// Check-only helper (used by the MCP tool)
|
|
179
|
+
// ---------------------------------------------------------------------------
|
|
180
|
+
async function checkForUpgrade() {
|
|
181
|
+
const currentVersion = getCurrentVersion();
|
|
182
|
+
let latestVersion;
|
|
183
|
+
try {
|
|
184
|
+
latestVersion = await getLatestNpmVersion();
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
return { ok: false, message: "Could not check for updates. Failed to query npm registry." };
|
|
188
|
+
}
|
|
189
|
+
if (compareSemver(latestVersion, currentVersion) <= 0) {
|
|
190
|
+
return { ok: true, message: `Already up to date. Current version: ${currentVersion}` };
|
|
191
|
+
}
|
|
192
|
+
const changelog = await fetchChangelogFromNpm(latestVersion, currentVersion);
|
|
193
|
+
const changelogSection = changelog
|
|
194
|
+
? `\n\nChanges in ${latestVersion}:\n${changelog}`
|
|
195
|
+
: "";
|
|
196
|
+
return { ok: true, message: `Update available: ${currentVersion} → ${latestVersion}${changelogSection}` };
|
|
197
|
+
}
|
|
198
|
+
// ---------------------------------------------------------------------------
|
|
199
|
+
// MCP Tool definition
|
|
200
|
+
// ---------------------------------------------------------------------------
|
|
79
201
|
export const upgradeTool = tool("upgrade", "Check for new versions of VisionClaw and upgrade if available. Can also perform a pure restart without upgrading (restart_only=true).", {
|
|
80
202
|
check_only: z
|
|
81
203
|
.boolean()
|
|
@@ -91,163 +213,26 @@ export const upgradeTool = tool("upgrade", "Check for new versions of VisionClaw
|
|
|
91
213
|
const pm = detectProcessManager();
|
|
92
214
|
if (!pm) {
|
|
93
215
|
return {
|
|
94
|
-
content: [
|
|
95
|
-
{
|
|
96
|
-
type: "text",
|
|
97
|
-
text: "Cannot restart: no process manager detected (pm2, systemd, or Electron). Please restart manually.",
|
|
98
|
-
},
|
|
99
|
-
],
|
|
216
|
+
content: [{ type: "text", text: "Cannot restart: no process manager detected (pm2, systemd, or Electron). Please restart manually." }],
|
|
100
217
|
isError: true,
|
|
101
218
|
};
|
|
102
219
|
}
|
|
103
220
|
scheduleRestart(RESTART_DELAY, runGracefulShutdown);
|
|
104
221
|
return {
|
|
105
|
-
content: [
|
|
106
|
-
{
|
|
107
|
-
type: "text",
|
|
108
|
-
text: `Restarting via ${pm} in ${RESTART_DELAY / 1000} seconds...`,
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
const currentVersion = getCurrentVersion();
|
|
114
|
-
const installation = getInstallationInfo();
|
|
115
|
-
let latestVersion;
|
|
116
|
-
try {
|
|
117
|
-
latestVersion = await getLatestNpmVersion();
|
|
118
|
-
}
|
|
119
|
-
catch {
|
|
120
|
-
return {
|
|
121
|
-
content: [
|
|
122
|
-
{
|
|
123
|
-
type: "text",
|
|
124
|
-
text: "Could not check for updates. Failed to query npm registry.",
|
|
125
|
-
},
|
|
126
|
-
],
|
|
127
|
-
isError: true,
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
if (compareSemver(latestVersion, currentVersion) <= 0) {
|
|
131
|
-
return {
|
|
132
|
-
content: [
|
|
133
|
-
{
|
|
134
|
-
type: "text",
|
|
135
|
-
text: `Already up to date. Current version: ${currentVersion}`,
|
|
136
|
-
},
|
|
137
|
-
],
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
const changelog = await fetchChangelogFromNpm(latestVersion, currentVersion);
|
|
141
|
-
const changelogSection = changelog
|
|
142
|
-
? `\n\nChanges in ${latestVersion}:\n${changelog}`
|
|
143
|
-
: "";
|
|
144
|
-
if (args.check_only) {
|
|
145
|
-
return {
|
|
146
|
-
content: [
|
|
147
|
-
{
|
|
148
|
-
type: "text",
|
|
149
|
-
text: `Update available: ${currentVersion} → ${latestVersion}${changelogSection}`,
|
|
150
|
-
},
|
|
151
|
-
],
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
// ── Electron mode: download bundle to external path ──
|
|
155
|
-
if (isElectronChild()) {
|
|
156
|
-
const installLog = await downloadBundleFromNpm(latestVersion);
|
|
157
|
-
writePendingUpgrade({
|
|
158
|
-
fromVersion: currentVersion,
|
|
159
|
-
toVersion: latestVersion,
|
|
160
|
-
upgradedAt: new Date().toISOString(),
|
|
161
|
-
});
|
|
162
|
-
scheduleRestart(RESTART_DELAY, runGracefulShutdown);
|
|
163
|
-
return {
|
|
164
|
-
content: [
|
|
165
|
-
{
|
|
166
|
-
type: "text",
|
|
167
|
-
text: [
|
|
168
|
-
`Downloaded ${PACKAGE_NAME} ${latestVersion} bundle to ${EXTERNAL_AGENT_DIR}.`,
|
|
169
|
-
installLog,
|
|
170
|
-
changelogSection,
|
|
171
|
-
`Restarting via Electron in ${RESTART_DELAY / 1000} seconds...`,
|
|
172
|
-
]
|
|
173
|
-
.filter(Boolean)
|
|
174
|
-
.join("\n"),
|
|
175
|
-
},
|
|
176
|
-
],
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
// ── Standard mode: pnpm global install ──
|
|
180
|
-
await ensurePnpmAvailable();
|
|
181
|
-
const installCmd = `pnpm add -g ${PACKAGE_NAME}@latest`;
|
|
182
|
-
const { stdout: installOut, stderr: installErr } = await execAsync(installCmd, EXEC_OPTIONS);
|
|
183
|
-
const installLog = (installOut + installErr).trim();
|
|
184
|
-
if (installation.isLocalCheckout) {
|
|
185
|
-
return {
|
|
186
|
-
content: [
|
|
187
|
-
{
|
|
188
|
-
type: "text",
|
|
189
|
-
text: [
|
|
190
|
-
`Installed ${PACKAGE_NAME} ${latestVersion} globally via pnpm.`,
|
|
191
|
-
installLog,
|
|
192
|
-
changelogSection,
|
|
193
|
-
`This VisionClaw instance is running from a local checkout at ${installation.packageRoot}, so its running version remains ${currentVersion} until that checkout is updated and restarted.`,
|
|
194
|
-
"A restart was not scheduled because it would just relaunch the same local checkout.",
|
|
195
|
-
]
|
|
196
|
-
.filter(Boolean)
|
|
197
|
-
.join("\n"),
|
|
198
|
-
},
|
|
199
|
-
],
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
const procManager = detectProcessManager();
|
|
203
|
-
if (procManager) {
|
|
204
|
-
writePendingUpgrade({
|
|
205
|
-
fromVersion: currentVersion,
|
|
206
|
-
toVersion: latestVersion,
|
|
207
|
-
upgradedAt: new Date().toISOString(),
|
|
208
|
-
});
|
|
209
|
-
scheduleRestart(RESTART_DELAY, runGracefulShutdown);
|
|
210
|
-
return {
|
|
211
|
-
content: [
|
|
212
|
-
{
|
|
213
|
-
type: "text",
|
|
214
|
-
text: [
|
|
215
|
-
`Installed ${latestVersion} via pnpm; the current process is still running ${currentVersion}.`,
|
|
216
|
-
installLog,
|
|
217
|
-
changelogSection,
|
|
218
|
-
`Restarting via ${procManager} in ${RESTART_DELAY / 1000} seconds...`,
|
|
219
|
-
]
|
|
220
|
-
.filter(Boolean)
|
|
221
|
-
.join("\n"),
|
|
222
|
-
},
|
|
223
|
-
],
|
|
222
|
+
content: [{ type: "text", text: `Restarting via ${pm} in ${RESTART_DELAY / 1000} seconds...` }],
|
|
224
223
|
};
|
|
225
224
|
}
|
|
225
|
+
const result = args.check_only
|
|
226
|
+
? await checkForUpgrade()
|
|
227
|
+
: await performUpgrade();
|
|
226
228
|
return {
|
|
227
|
-
content: [
|
|
228
|
-
|
|
229
|
-
type: "text",
|
|
230
|
-
text: [
|
|
231
|
-
`Installed ${latestVersion} via pnpm; the current process is still running ${currentVersion}.`,
|
|
232
|
-
installLog,
|
|
233
|
-
changelogSection,
|
|
234
|
-
"Please restart VisionClaw manually to run the new version.",
|
|
235
|
-
"Tip: run VisionClaw with PM2 (`pm2 start visionclaw --name visionclaw`) to enable automatic restarts after upgrades.",
|
|
236
|
-
]
|
|
237
|
-
.filter(Boolean)
|
|
238
|
-
.join("\n"),
|
|
239
|
-
},
|
|
240
|
-
],
|
|
229
|
+
content: [{ type: "text", text: result.message }],
|
|
230
|
+
...(result.ok ? {} : { isError: true }),
|
|
241
231
|
};
|
|
242
232
|
}
|
|
243
233
|
catch (err) {
|
|
244
234
|
return {
|
|
245
|
-
content: [
|
|
246
|
-
{
|
|
247
|
-
type: "text",
|
|
248
|
-
text: `Upgrade failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
249
|
-
},
|
|
250
|
-
],
|
|
235
|
+
content: [{ type: "text", text: `Upgrade failed: ${err instanceof Error ? err.message : String(err)}` }],
|
|
251
236
|
isError: true,
|
|
252
237
|
};
|
|
253
238
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/tools/upgrade.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/tools/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAEtD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,MAAM,YAAY,GAAG,YAAY,CAAC;AAClC,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/E,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAC3E,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;AAEpE,KAAK,UAAU,mBAAmB;IAChC,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,qBAAqB,CAAC,OAAe;IAClD,EAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtD,MAAM,UAAU,GAAG,GAAG,eAAe,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACnC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC;QACH,qEAAqE;QACrE,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAChC,aAAa,UAAU,2CAA2C,kBAAkB,iCAAiC,EACrH,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,CACtC,CAAC;QAEF,4EAA4E;QAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QAC/E,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;YAC7C,6BAA6B;YAC7B,IAAI,CAAC;gBAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;QACzG,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,kBAAkB;QAClB,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC;gBAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sBAAsB;QACtB,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAC7C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAChC,YAAY,YAAY,IAAI,OAAO,eAAe,EAClD,YAAY,CACb,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAaD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAE3C,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,aAAa,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,4DAA4D,EAAE,CAAC;IAC9F,CAAC;IAED,IAAI,aAAa,CAAC,aAAa,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,wCAAwC,cAAc,EAAE,EAAE,CAAC;IACzF,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC7E,MAAM,gBAAgB,GAAG,SAAS;QAChC,CAAC,CAAC,kBAAkB,aAAa,MAAM,SAAS,EAAE;QAClD,CAAC,CAAC,EAAE,CAAC;IAEP,wDAAwD;IACxD,IAAI,eAAe,EAAE,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAE9D,mBAAmB,CAAC;YAClB,WAAW,EAAE,cAAc;YAC3B,SAAS,EAAE,aAAa;YACxB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;QACH,eAAe,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;QAEpD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,OAAO,EAAE;gBACP,cAAc,YAAY,IAAI,aAAa,cAAc,kBAAkB,GAAG;gBAC9E,UAAU;gBACV,gBAAgB;gBAChB,8BAA8B,aAAa,GAAG,IAAI,aAAa;aAChE;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC;SACd,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,MAAM,mBAAmB,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,eAAe,YAAY,SAAS,CAAC;IACxD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC7F,MAAM,UAAU,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IAEpD,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;QACjC,OAAO;YACL,EAAE,EAAE,IAAI;YACR,OAAO,EAAE;gBACP,aAAa,YAAY,IAAI,aAAa,qBAAqB;gBAC/D,UAAU;gBACV,gBAAgB;gBAChB,gEAAgE,YAAY,CAAC,WAAW,oCAAoC,cAAc,gDAAgD;gBAC1L,qFAAqF;aACtF;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC;SACd,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;IAC3C,IAAI,WAAW,EAAE,CAAC;QAChB,mBAAmB,CAAC;YAClB,WAAW,EAAE,cAAc;YAC3B,SAAS,EAAE,aAAa;YACxB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;QACH,eAAe,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;QAEpD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,OAAO,EAAE;gBACP,aAAa,aAAa,mDAAmD,cAAc,GAAG;gBAC9F,UAAU;gBACV,gBAAgB;gBAChB,kBAAkB,WAAW,OAAO,aAAa,GAAG,IAAI,aAAa;aACtE;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC;SACd,CAAC;IACJ,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE;YACP,aAAa,aAAa,mDAAmD,cAAc,GAAG;YAC9F,UAAU;YACV,gBAAgB;YAChB,4DAA4D;YAC5D,sHAAsH;SACvH;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC;KACd,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,2CAA2C;AAC3C,8EAA8E;AAE9E,KAAK,UAAU,eAAe;IAC5B,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,aAAa,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,4DAA4D,EAAE,CAAC;IAC9F,CAAC;IAED,IAAI,aAAa,CAAC,aAAa,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,wCAAwC,cAAc,EAAE,EAAE,CAAC;IACzF,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC7E,MAAM,gBAAgB,GAAG,SAAS;QAChC,CAAC,CAAC,kBAAkB,aAAa,MAAM,SAAS,EAAE;QAClD,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,cAAc,MAAM,aAAa,GAAG,gBAAgB,EAAE,EAAE,CAAC;AAC5G,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAC7B,SAAS,EACT,uIAAuI,EACvI;IACE,UAAU,EAAE,CAAC;SACV,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;IACjE,YAAY,EAAE,CAAC;SACZ,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,iEAAiE,CAAC;CAC/E,EACD,KAAK,EAAE,IAAI,EAA2B,EAAE;IACtC,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;YAClC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mGAAmG,EAAE,CAAC;oBACtI,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YACD,eAAe,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;YACpD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;aAChG,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU;YAC5B,CAAC,CAAC,MAAM,eAAe,EAAE;YACzB,CAAC,CAAC,MAAM,cAAc,EAAE,CAAC;QAE3B,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;YACjD,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;SACxC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACxG,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC"}
|