@autonav/core 1.12.1 → 2.0.1

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 (59) hide show
  1. package/README.md +1 -1
  2. package/dist/adapter/navigator-adapter.d.ts +2 -1
  3. package/dist/adapter/navigator-adapter.d.ts.map +1 -1
  4. package/dist/adapter/navigator-adapter.js +31 -2
  5. package/dist/adapter/navigator-adapter.js.map +1 -1
  6. package/dist/cli/nav-chat.d.ts.map +1 -1
  7. package/dist/cli/nav-chat.js +57 -35
  8. package/dist/cli/nav-chat.js.map +1 -1
  9. package/dist/cli/nav-init.d.ts.map +1 -1
  10. package/dist/cli/nav-init.js +20 -0
  11. package/dist/cli/nav-init.js.map +1 -1
  12. package/dist/cli/nav-mend.js +5 -5
  13. package/dist/cli/nav-mend.js.map +1 -1
  14. package/dist/cli/nav-query.d.ts.map +1 -1
  15. package/dist/cli/nav-query.js +37 -4
  16. package/dist/cli/nav-query.js.map +1 -1
  17. package/dist/cli/nav-update.d.ts.map +1 -1
  18. package/dist/cli/nav-update.js +37 -4
  19. package/dist/cli/nav-update.js.map +1 -1
  20. package/dist/cli/resolve-nav.d.ts +11 -0
  21. package/dist/cli/resolve-nav.d.ts.map +1 -0
  22. package/dist/cli/resolve-nav.js +71 -0
  23. package/dist/cli/resolve-nav.js.map +1 -0
  24. package/dist/conversation/App.d.ts +6 -4
  25. package/dist/conversation/App.d.ts.map +1 -1
  26. package/dist/conversation/App.js +70 -65
  27. package/dist/conversation/App.js.map +1 -1
  28. package/dist/conversation/index.d.ts +7 -3
  29. package/dist/conversation/index.d.ts.map +1 -1
  30. package/dist/conversation/index.js.map +1 -1
  31. package/dist/harness/chibi-harness.d.ts.map +1 -1
  32. package/dist/harness/chibi-harness.js +13 -6
  33. package/dist/harness/chibi-harness.js.map +1 -1
  34. package/dist/harness/claude-code-harness.d.ts.map +1 -1
  35. package/dist/harness/claude-code-harness.js +65 -7
  36. package/dist/harness/claude-code-harness.js.map +1 -1
  37. package/dist/harness/index.d.ts +1 -1
  38. package/dist/harness/index.d.ts.map +1 -1
  39. package/dist/harness/index.js +1 -1
  40. package/dist/harness/index.js.map +1 -1
  41. package/dist/harness/sandbox.d.ts +104 -20
  42. package/dist/harness/sandbox.d.ts.map +1 -1
  43. package/dist/harness/sandbox.js +261 -42
  44. package/dist/harness/sandbox.js.map +1 -1
  45. package/dist/harness/types.d.ts +4 -0
  46. package/dist/harness/types.d.ts.map +1 -1
  47. package/dist/interview/App.d.ts +2 -1
  48. package/dist/interview/App.d.ts.map +1 -1
  49. package/dist/interview/App.js +65 -57
  50. package/dist/interview/App.js.map +1 -1
  51. package/dist/interview/prompts.d.ts +1 -1
  52. package/dist/interview/prompts.d.ts.map +1 -1
  53. package/dist/interview/prompts.js +8 -5
  54. package/dist/interview/prompts.js.map +1 -1
  55. package/dist/tools/sandbox-query.d.ts +24 -0
  56. package/dist/tools/sandbox-query.d.ts.map +1 -0
  57. package/dist/tools/sandbox-query.js +172 -0
  58. package/dist/tools/sandbox-query.js.map +1 -0
  59. package/package.json +4 -1
@@ -1,13 +1,14 @@
1
1
  /**
2
- * Sandbox Utility (nono)
2
+ * Sandbox Utility (nono-ts)
3
3
  *
4
- * Wraps subprocess commands with nono.sh for kernel-enforced sandboxing
5
- * (Landlock on Linux, Seatbelt on macOS). Used by ChibiHarness to sandbox
6
- * chibi-json subprocesses.
4
+ * Wraps subprocess commands with nono for kernel-enforced sandboxing
5
+ * (Landlock on Linux, Seatbelt on macOS). Uses the nono-ts CapabilitySet
6
+ * API to programmatically build sandbox profiles, then serializes them
7
+ * to JSON config files for child processes.
7
8
  *
8
- * ClaudeCodeHarness uses the SDK's built-in sandbox instead (also
9
- * Seatbelt/bubblewrap). Both harnesses read from AgentConfig.sandbox
10
- * callers never need to know which mechanism is active.
9
+ * Both harnesses use nono as the unified sandbox:
10
+ * - ClaudeCodeHarness nono wrapper script via pathToClaudeCodeExecutable
11
+ * - ChibiHarness nono run --config <profile> -- chibi-json
11
12
  *
12
13
  * Per-operation sandbox profiles:
13
14
  * - query: read-only access to navigator directory
@@ -19,26 +20,70 @@
19
20
  * own API calls (chibi). It's only useful for scenarios where the API
20
21
  * connection is managed in-process.
21
22
  *
22
- * Falls back gracefully when nono is not installed — the process runs
23
- * without sandboxing.
23
+ * Falls back gracefully when nono-ts native module is not available
24
+ * (e.g., unsupported platform, missing native binary in CI) — the
25
+ * process runs without sandboxing.
26
+ *
27
+ * CRITICAL: Never call nono-ts `apply()` — that sandboxes the autonav
28
+ * process itself. We only build profiles for child processes.
24
29
  */
25
- import { execFileSync } from "node:child_process";
30
+ import { createRequire } from "node:module";
26
31
  import * as fs from "node:fs";
27
32
  import * as os from "node:os";
33
+ import * as path from "node:path";
34
+ // ── Lazy nono-ts loading ─────────────────────────────────────────────
35
+ // nono-ts uses NAPI-RS native bindings that may not be available on all
36
+ // platforms (e.g., CI runners without the native binary). We load it
37
+ // lazily so the module itself always loads — functions just return
38
+ // "not available" when the native module is missing.
39
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
+ let nonoModule = null;
41
+ let nonoLoadAttempted = false;
42
+ function loadNono() {
43
+ if (nonoLoadAttempted)
44
+ return nonoModule !== null;
45
+ nonoLoadAttempted = true;
46
+ try {
47
+ // Use createRequire for synchronous loading in ESM context.
48
+ // nono-ts is a native module (NAPI-RS) that may not have binaries
49
+ // for all platforms. This fails gracefully when the native binary
50
+ // is missing (e.g., CI runners without platform-specific binaries).
51
+ const req = createRequire(import.meta.url);
52
+ nonoModule = req("nono-ts");
53
+ }
54
+ catch {
55
+ nonoModule = null;
56
+ }
57
+ return nonoModule !== null;
58
+ }
59
+ /**
60
+ * Access mode for sandbox path queries.
61
+ * Mirrors nono-ts AccessMode enum so consumers don't need to import nono-ts directly.
62
+ */
63
+ export var AccessMode;
64
+ (function (AccessMode) {
65
+ AccessMode[AccessMode["Read"] = 0] = "Read";
66
+ AccessMode[AccessMode["Write"] = 1] = "Write";
67
+ AccessMode[AccessMode["ReadWrite"] = 2] = "ReadWrite";
68
+ })(AccessMode || (AccessMode = {}));
28
69
  let nonoAvailableCache = null;
29
70
  /**
30
- * Check if nono is available on PATH (result is cached).
71
+ * Check if nono sandboxing is available on this platform (result is cached).
72
+ *
73
+ * Uses nono-ts isSupported() which checks for Seatbelt (macOS) or
74
+ * Landlock (Linux 5.13+) support without spawning a subprocess.
75
+ * Falls back to false if nono-ts native module isn't available.
31
76
  */
32
77
  export function isNonoAvailable() {
33
78
  if (nonoAvailableCache !== null) {
34
79
  return nonoAvailableCache;
35
80
  }
81
+ if (!loadNono()) {
82
+ nonoAvailableCache = false;
83
+ return false;
84
+ }
36
85
  try {
37
- execFileSync("nono", ["--version"], {
38
- stdio: ["ignore", "ignore", "ignore"],
39
- timeout: 3_000,
40
- });
41
- nonoAvailableCache = true;
86
+ nonoAvailableCache = nonoModule.isSupported() === true;
42
87
  }
43
88
  catch {
44
89
  nonoAvailableCache = false;
@@ -51,7 +96,7 @@ export function isNonoAvailable() {
51
96
  * Priority:
52
97
  * 1. config.enabled (explicit opt-in/out)
53
98
  * 2. AUTONAV_SANDBOX env var ("0" to disable)
54
- * 3. Auto-detect nono on PATH
99
+ * 3. Auto-detect via nono-ts isSupported()
55
100
  */
56
101
  export function isSandboxEnabled(config) {
57
102
  // Explicit config takes priority
@@ -93,60 +138,234 @@ function getSystemReadPaths() {
93
138
  return paths;
94
139
  }
95
140
  /**
96
- * Build nono CLI arguments for a given sandbox config.
141
+ * Build a nono-ts CapabilitySet from a SandboxConfig.
97
142
  *
98
- * Returns the full argument list: ["run", "--silent", ...flags, "--"]
99
- * Returns empty array if sandbox is disabled.
143
+ * Maps config fields to nono capabilities:
144
+ * - System read paths (macOS/Linux binaries, homebrew)
145
+ * - readPaths → allowPath(p, AccessMode.Read)
146
+ * - writePaths → allowPath(p, AccessMode.ReadWrite)
147
+ * - allowedCommands → allowCommand(cmd)
148
+ * - blockNetwork → blockNetwork()
149
+ *
150
+ * Paths that don't exist on disk are silently skipped (nono-ts
151
+ * validates path existence and throws on missing paths).
152
+ *
153
+ * Returns null if nono-ts is not available.
100
154
  */
101
- export function buildSandboxArgs(config) {
102
- if (!isSandboxEnabled(config)) {
103
- return [];
104
- }
105
- const args = ["run", "--silent", "--allow-cwd"];
155
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
156
+ export function buildCapabilitySet(config) {
157
+ if (!loadNono())
158
+ return null;
159
+ const { CapabilitySet: CapsClass, AccessMode: AM } = nonoModule;
160
+ const caps = new CapsClass();
106
161
  // System binary paths (read-only) — needed for plugin script execution
107
162
  for (const p of getSystemReadPaths()) {
108
- args.push("--read", p);
163
+ try {
164
+ caps.allowPath(p, AM.Read);
165
+ }
166
+ catch {
167
+ // Path may not exist or be inaccessible — skip
168
+ }
109
169
  }
110
170
  // Read-only paths
111
171
  if (config.readPaths) {
112
172
  for (const p of config.readPaths) {
113
- args.push("--read", p);
173
+ try {
174
+ caps.allowPath(p, AM.Read);
175
+ }
176
+ catch {
177
+ // Path doesn't exist — skip silently
178
+ }
114
179
  }
115
180
  }
116
181
  // Read+write paths
117
182
  if (config.writePaths) {
118
183
  for (const p of config.writePaths) {
119
- args.push("--allow", p);
184
+ try {
185
+ caps.allowPath(p, AM.ReadWrite);
186
+ }
187
+ catch {
188
+ // Path doesn't exist — skip silently
189
+ }
190
+ }
191
+ }
192
+ // Allowed commands
193
+ if (config.allowedCommands) {
194
+ for (const cmd of config.allowedCommands) {
195
+ caps.allowCommand(cmd);
120
196
  }
121
197
  }
122
198
  // Network blocking
123
199
  if (config.blockNetwork) {
124
- args.push("--net-block");
200
+ caps.blockNetwork();
201
+ }
202
+ return caps;
203
+ }
204
+ /**
205
+ * Write a nono sandbox profile JSON file to disk.
206
+ *
207
+ * Serializes the CapabilitySet via SandboxState and writes to a temp file.
208
+ * Returns the absolute path to the profile file.
209
+ *
210
+ * Note: allowedCommands are NOT included in the profile JSON (nono-ts
211
+ * SandboxState only serializes fs + network). Commands are passed as
212
+ * --allow-command flags on the CLI.
213
+ */
214
+ export function writeProfile(config, dir) {
215
+ const caps = buildCapabilitySet(config);
216
+ if (!caps) {
217
+ throw new Error("nono-ts not available — cannot write sandbox profile");
218
+ }
219
+ const { SandboxState: SSClass } = nonoModule;
220
+ const state = SSClass.fromCaps(caps);
221
+ const json = state.toJson();
222
+ const profilePath = path.join(dir, `nono-profile-${Date.now()}.json`);
223
+ fs.writeFileSync(profilePath, json, "utf-8");
224
+ return profilePath;
225
+ }
226
+ /**
227
+ * Build CLI arguments for allowedCommands (not included in profile JSON).
228
+ */
229
+ function commandFlags(config) {
230
+ if (!config?.allowedCommands?.length)
231
+ return [];
232
+ const flags = [];
233
+ for (const cmd of config.allowedCommands) {
234
+ flags.push("--allow-command", cmd);
125
235
  }
126
- // Separator between nono args and the wrapped command
127
- args.push("--");
128
- return args;
236
+ return flags;
237
+ }
238
+ /**
239
+ * Build nono CLI flags string for env var passing (NONO_FLAGS).
240
+ *
241
+ * Used by ClaudeCodeHarness where the wrapper script reads NONO_FLAGS
242
+ * from the environment (trellis pattern).
243
+ */
244
+ export function buildNonoFlags(config) {
245
+ // Note: do NOT include --exec here. The SDK spawns claude with pipes
246
+ // (not TTY), and --exec causes nono to do execvp() which can interfere
247
+ // with pipe-based stdio management. --exec is only for interactive
248
+ // terminal sessions (e.g., running `nono run -- claude` directly).
249
+ const parts = ["--allow-cwd"];
250
+ parts.push(...commandFlags(config));
251
+ return parts.join(" ");
129
252
  }
130
253
  /**
131
254
  * Wrap a command with nono sandbox if enabled.
132
255
  *
133
- * If sandboxing is active:
134
- * { command: "nono", args: ["run", ...flags, "--", originalCommand, ...originalArgs] }
256
+ * Uses profile-based approach:
257
+ * nono run --config <profile> --silent --allow-cwd [--allow-command X] -- cmd args
135
258
  *
136
- * If disabled:
137
- * { command: originalCommand, args: originalArgs } (passthrough)
259
+ * If sandboxing is disabled, returns the command unchanged (passthrough).
260
+ *
261
+ * @param profileDir - Directory to write the profile file. Defaults to os.tmpdir().
138
262
  */
139
- export function wrapCommand(command, args, config) {
263
+ export function wrapCommand(command, args, config, profileDir) {
140
264
  if (!config || !isSandboxEnabled(config)) {
141
265
  return { command, args };
142
266
  }
143
- const sandboxArgs = buildSandboxArgs(config);
144
- if (sandboxArgs.length === 0) {
145
- return { command, args };
146
- }
267
+ const dir = profileDir || os.tmpdir();
268
+ const profilePath = writeProfile(config, dir);
269
+ const nonoArgs = [
270
+ "run",
271
+ "--config", profilePath,
272
+ "--silent",
273
+ "--allow-cwd",
274
+ ...commandFlags(config),
275
+ "--",
276
+ command,
277
+ ...args,
278
+ ];
147
279
  return {
148
280
  command: "nono",
149
- args: [...sandboxArgs, command, ...args],
281
+ args: nonoArgs,
150
282
  };
151
283
  }
284
+ /**
285
+ * Create a shell wrapper script for the Claude Code SDK.
286
+ *
287
+ * The SDK accepts `pathToClaudeCodeExecutable` — a custom executable path.
288
+ * This generates a temp shell script that wraps `claude` with nono enforcement.
289
+ *
290
+ * Uses --exec flag to preserve TTY for interactive Claude Code sessions.
291
+ *
292
+ * @returns Absolute path to the wrapper script.
293
+ */
294
+ export function createSdkWrapper(_profilePath, dir, _config) {
295
+ const wrapperPath = path.join(dir, "nono-claude-wrapper.sh");
296
+ // Use nono's built-in claude-code profile as a base — it provides all
297
+ // the paths claude needs (config, keychain, tmp dirs, etc.) and is
298
+ // maintained by the nono team. Our custom --config adds navigator-specific
299
+ // paths on top, and NONO_FLAGS adds --allow-command flags.
300
+ //
301
+ // Workaround: nono --silent doesn't suppress WARN messages for missing
302
+ // optional profile paths (e.g., ~/.vscode) and they go to stdout,
303
+ // corrupting the SDK's JSON stream. We use --exec so nono replaces
304
+ // itself with claude (no monitoring layer), and pre-create the dirs
305
+ // nono expects so it doesn't warn. This is simpler and avoids fd
306
+ // juggling that can interfere with multi-turn pipe management.
307
+ const script = `#!/usr/bin/env bash
308
+ set -euo pipefail
309
+ # Pre-create optional paths the claude-code profile references to
310
+ # avoid nono WARN messages on stdout that corrupt the SDK JSON stream.
311
+ mkdir -p "\${HOME}/.vscode" 2>/dev/null || true
312
+ mkdir -p "\${HOME}/Library/Application Support/Code" 2>/dev/null || true
313
+ touch "\${HOME}/.gitignore_global" 2>/dev/null || true
314
+ exec nono run \\
315
+ --silent \\
316
+ --no-diagnostics \\
317
+ --exec \\
318
+ --profile claude-code \\
319
+ --config "\${NONO_PROFILE}" \\
320
+ \${NONO_FLAGS:-} \\
321
+ --allow "\${HOME}/.claude-personal" \\
322
+ -- claude "$@"
323
+ `;
324
+ fs.writeFileSync(wrapperPath, script, "utf-8");
325
+ fs.chmodSync(wrapperPath, 0o755);
326
+ return wrapperPath;
327
+ }
328
+ /**
329
+ * Query whether a path operation would be allowed by a sandbox config.
330
+ *
331
+ * Uses nono-ts QueryContext for dry-run policy checks without
332
+ * actually applying any sandbox. Useful for the sandbox_query
333
+ * debugging tool.
334
+ */
335
+ export function querySandbox(config, targetPath, mode) {
336
+ const caps = buildCapabilitySet(config);
337
+ if (!caps) {
338
+ return { status: "allowed", reason: "nono_unavailable" };
339
+ }
340
+ const { QueryContext: QCClass, AccessMode: AM } = nonoModule;
341
+ const nonoMode = mode === AccessMode.Read ? AM.Read
342
+ : mode === AccessMode.Write ? AM.Write
343
+ : AM.ReadWrite;
344
+ const qc = new QCClass(caps);
345
+ return qc.queryPath(targetPath, nonoMode);
346
+ }
347
+ /**
348
+ * Query whether network access would be allowed by a sandbox config.
349
+ */
350
+ export function querySandboxNetwork(config) {
351
+ const caps = buildCapabilitySet(config);
352
+ if (!caps) {
353
+ return { status: "allowed", reason: "nono_unavailable" };
354
+ }
355
+ const { QueryContext: QCClass } = nonoModule;
356
+ const qc = new QCClass(caps);
357
+ return qc.queryNetwork();
358
+ }
359
+ /**
360
+ * Get a human-readable summary of the sandbox policy.
361
+ *
362
+ * Uses CapabilitySet.summary() from nono-ts.
363
+ */
364
+ export function getSandboxSummary(config) {
365
+ const caps = buildCapabilitySet(config);
366
+ if (!caps) {
367
+ return "Sandbox: nono-ts not available on this platform";
368
+ }
369
+ return caps.summary();
370
+ }
152
371
  //# sourceMappingURL=sandbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/harness/sandbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/harness/sandbox.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,10 @@ export interface SandboxConfig {
32
32
  writePaths?: string[];
33
33
  /** Block all network access */
34
34
  blockNetwork?: boolean;
35
+ /** CLI tools nono should permit (e.g., "linear", "gh") */
36
+ allowedCommands?: string[];
37
+ /** Future: network host allowlist (not yet supported by nono) */
38
+ allowedHosts?: string[];
35
39
  }
36
40
  /**
37
41
  * Configuration for an agent session.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"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"}
@@ -9,13 +9,14 @@ import { type Harness } from "../harness/index.js";
9
9
  interface Message {
10
10
  role: "user" | "assistant";
11
11
  content: string;
12
+ id: number;
12
13
  }
13
14
  interface InterviewAppProps {
14
15
  name: string;
15
16
  navigatorPath: string;
16
17
  packContext?: PackContext;
17
18
  analysisContext?: AnalysisResult;
18
- initialMessages?: Message[];
19
+ initialMessages?: Omit<Message, "id">[];
19
20
  onComplete: (config: NavigatorConfig) => void;
20
21
  harness: Harness;
21
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/interview/App.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,EAAE,KAAK,OAAO,EAAgC,MAAM,qBAAqB,CAAC;AAwHjF,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5B,UAAU,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC9C,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,aAAa,EACb,WAAW,EACX,eAAe,EACf,eAAe,EACf,UAAU,EACV,OAAO,GACR,EAAE,iBAAiB,2CA0VnB"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/interview/App.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,EAAE,KAAK,OAAO,EAAgC,MAAM,qBAAqB,CAAC;AAwHjF,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,eAAe,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;IACxC,UAAU,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC9C,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,aAAa,EACb,WAAW,EACX,eAAe,EACf,eAAe,EACf,UAAU,EACV,OAAO,GACR,EAAE,iBAAiB,2CA+WnB"}