@treza/cli 1.1.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 (39) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +353 -0
  3. package/dist/commands/config.d.ts +3 -0
  4. package/dist/commands/config.d.ts.map +1 -0
  5. package/dist/commands/config.js +149 -0
  6. package/dist/commands/config.js.map +1 -0
  7. package/dist/commands/enclave.d.ts +3 -0
  8. package/dist/commands/enclave.d.ts.map +1 -0
  9. package/dist/commands/enclave.js +535 -0
  10. package/dist/commands/enclave.js.map +1 -0
  11. package/dist/commands/kyc.d.ts +3 -0
  12. package/dist/commands/kyc.d.ts.map +1 -0
  13. package/dist/commands/kyc.js +158 -0
  14. package/dist/commands/kyc.js.map +1 -0
  15. package/dist/commands/provider.d.ts +3 -0
  16. package/dist/commands/provider.d.ts.map +1 -0
  17. package/dist/commands/provider.js +49 -0
  18. package/dist/commands/provider.js.map +1 -0
  19. package/dist/commands/task.d.ts +3 -0
  20. package/dist/commands/task.d.ts.map +1 -0
  21. package/dist/commands/task.js +220 -0
  22. package/dist/commands/task.js.map +1 -0
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +59 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/utils/api.d.ts +125 -0
  28. package/dist/utils/api.d.ts.map +1 -0
  29. package/dist/utils/api.js +104 -0
  30. package/dist/utils/api.js.map +1 -0
  31. package/dist/utils/config.d.ts +13 -0
  32. package/dist/utils/config.d.ts.map +1 -0
  33. package/dist/utils/config.js +39 -0
  34. package/dist/utils/config.js.map +1 -0
  35. package/dist/utils/output.d.ts +12 -0
  36. package/dist/utils/output.d.ts.map +1 -0
  37. package/dist/utils/output.js +64 -0
  38. package/dist/utils/output.js.map +1 -0
  39. package/package.json +59 -0
@@ -0,0 +1,535 @@
1
+ import { Command } from 'commander';
2
+ import ora from 'ora';
3
+ import prompts from 'prompts';
4
+ import chalk from 'chalk';
5
+ import { isConfigured } from '../utils/config.js';
6
+ import * as api from '../utils/api.js';
7
+ import * as output from '../utils/output.js';
8
+ export const enclaveCommand = new Command('enclave')
9
+ .alias('enc')
10
+ .description('Manage secure enclaves');
11
+ // Check configuration before running commands
12
+ function requireConfig() {
13
+ if (!isConfigured()) {
14
+ output.error('Not configured. Run: treza config init');
15
+ process.exit(1);
16
+ }
17
+ }
18
+ enclaveCommand
19
+ .command('list')
20
+ .alias('ls')
21
+ .description('List all enclaves')
22
+ .option('--json', 'Output as JSON')
23
+ .action(async (options) => {
24
+ requireConfig();
25
+ const spinner = ora('Fetching enclaves...').start();
26
+ try {
27
+ const { enclaves } = await api.getEnclaves();
28
+ spinner.stop();
29
+ if (options.json) {
30
+ output.json(enclaves);
31
+ return;
32
+ }
33
+ if (enclaves.length === 0) {
34
+ output.info('No enclaves found. Create one with: treza enclave create');
35
+ return;
36
+ }
37
+ output.heading(`Enclaves (${enclaves.length})`);
38
+ output.printTable(['ID', 'Name', 'Status', 'Region', 'Provider', 'Created'], enclaves.map((e) => [
39
+ e.id.slice(0, 16) + '...',
40
+ e.name,
41
+ output.statusColor(e.status),
42
+ e.region,
43
+ e.providerId,
44
+ new Date(e.createdAt).toLocaleDateString(),
45
+ ]));
46
+ }
47
+ catch (err) {
48
+ spinner.stop();
49
+ if (err instanceof api.ApiError) {
50
+ output.error(`API Error: ${err.message}`);
51
+ }
52
+ else {
53
+ output.error(`Failed to fetch enclaves: ${err.message}`);
54
+ }
55
+ process.exit(1);
56
+ }
57
+ });
58
+ enclaveCommand
59
+ .command('get <id>')
60
+ .description('Get enclave details')
61
+ .option('--json', 'Output as JSON')
62
+ .action(async (id, options) => {
63
+ requireConfig();
64
+ const spinner = ora('Fetching enclave...').start();
65
+ try {
66
+ const { enclave } = await api.getEnclave(id);
67
+ spinner.stop();
68
+ if (options.json) {
69
+ output.json(enclave);
70
+ return;
71
+ }
72
+ output.heading(enclave.name);
73
+ output.keyValue('ID', enclave.id);
74
+ output.keyValue('Status', output.statusColor(enclave.status));
75
+ output.keyValue('Region', enclave.region);
76
+ output.keyValue('Provider', enclave.providerId);
77
+ output.keyValue('Description', enclave.description || '(none)');
78
+ output.keyValue('Created', new Date(enclave.createdAt).toLocaleString());
79
+ output.keyValue('Updated', new Date(enclave.updatedAt).toLocaleString());
80
+ }
81
+ catch (err) {
82
+ spinner.stop();
83
+ if (err instanceof api.ApiError) {
84
+ if (err.statusCode === 404) {
85
+ output.error(`Enclave not found: ${id}`);
86
+ }
87
+ else {
88
+ output.error(`API Error: ${err.message}`);
89
+ }
90
+ }
91
+ else {
92
+ output.error(`Failed to fetch enclave: ${err.message}`);
93
+ }
94
+ process.exit(1);
95
+ }
96
+ });
97
+ enclaveCommand
98
+ .command('create')
99
+ .description('Create a new enclave')
100
+ .option('-n, --name <name>', 'Enclave name')
101
+ .option('-d, --description <desc>', 'Enclave description')
102
+ .option('-r, --region <region>', 'Deployment region')
103
+ .option('-p, --provider <provider>', 'Provider ID', 'aws-nitro')
104
+ // Source type
105
+ .option('--source-type <type>', 'Deployment source: registry (default), github, private-registry')
106
+ // Registry source
107
+ .option('-i, --image <image>', 'Docker image URI (e.g. nginx:alpine, myorg/myapp:latest)')
108
+ // GitHub source
109
+ .option('--github-repo <owner/repo>', 'GitHub repository to build from (e.g. acme/my-api)')
110
+ .option('--github-branch <branch>', 'Branch to build from', 'main')
111
+ .option('--github-token <token>', 'GitHub personal access token (for private repos)')
112
+ // Private registry source
113
+ .option('--registry-url <url>', 'Private registry URL (e.g. ghcr.io, 123.dkr.ecr.us-east-1.amazonaws.com)')
114
+ .option('--registry-username <user>', 'Registry username or access key ID')
115
+ .option('--registry-password <pass>', 'Registry password or token')
116
+ // Instance config
117
+ .option('--instance-type <type>', 'EC2 instance type (e.g. m6i.xlarge, c6i.xlarge)', 'm6i.xlarge')
118
+ .option('--cpu <count>', 'vCPU count to allocate to the enclave (2, 4, 8, 16)', '2')
119
+ .option('--memory <mib>', 'Memory in MiB to allocate (1024, 2048, 4096, 8192, 16384)', '1024')
120
+ // Workload config
121
+ .option('-w, --workload-type <type>', 'Workload type: batch, service, or daemon', 'service')
122
+ .option('--health-path <path>', 'Health check path for service workloads', '/health')
123
+ .option('--health-interval <seconds>', 'Health check interval in seconds', '30')
124
+ .option('--aws-services <services>', 'Comma-separated AWS services to proxy (e.g. kms,s3)')
125
+ .option('--expose-ports <ports>', 'Comma-separated ports the app listens on')
126
+ .option('--json', 'Output as JSON')
127
+ .action(async (options) => {
128
+ requireConfig();
129
+ let { name, description, region, provider } = options;
130
+ let sourceType = options.sourceType || 'registry';
131
+ // If a GitHub flag is provided but --source-type wasn't specified, infer it
132
+ if (!options.sourceType && options.githubRepo) {
133
+ sourceType = 'github';
134
+ }
135
+ else if (!options.sourceType && options.registryUrl) {
136
+ sourceType = 'private-registry';
137
+ }
138
+ // Fetch providers for interactive prompts
139
+ const spinner0 = ora('Loading providers...').start();
140
+ let providers = [];
141
+ try {
142
+ const result = await api.getProviders();
143
+ providers = result.providers;
144
+ spinner0.stop();
145
+ }
146
+ catch {
147
+ spinner0.stop();
148
+ output.warn('Could not load providers, using defaults');
149
+ providers = [{ id: 'aws-nitro', name: 'AWS Nitro', description: '', regions: ['us-east-1', 'us-west-2', 'eu-west-1'] }];
150
+ }
151
+ const selectedProvider = providers.find((p) => p.id === provider) || providers[0];
152
+ // ── Prompt for basic info ──────────────────────────────────────────────
153
+ if (!name || !region) {
154
+ const basicResponse = await prompts([
155
+ {
156
+ type: name ? null : 'text',
157
+ name: 'name',
158
+ message: 'Enclave name',
159
+ validate: (v) => (v ? true : 'Name is required'),
160
+ },
161
+ {
162
+ type: description ? null : 'text',
163
+ name: 'description',
164
+ message: 'Description (optional)',
165
+ },
166
+ {
167
+ type: region ? null : 'select',
168
+ name: 'region',
169
+ message: 'Region',
170
+ choices: selectedProvider.regions.map((r) => ({ title: r, value: r })),
171
+ },
172
+ ]);
173
+ name = name || basicResponse.name;
174
+ description = description || basicResponse.description;
175
+ region = region || basicResponse.region;
176
+ if (!name || !region) {
177
+ output.error('Cancelled');
178
+ process.exit(1);
179
+ }
180
+ }
181
+ // ── Prompt for source type if not provided ─────────────────────────────
182
+ if (!options.sourceType && !options.githubRepo && !options.registryUrl) {
183
+ const sourceResponse = await prompts({
184
+ type: 'select',
185
+ name: 'sourceType',
186
+ message: 'Deployment source',
187
+ choices: [
188
+ { title: 'Container Registry — Docker Hub, ECR Public, or any public image', value: 'registry' },
189
+ { title: 'GitHub Repository — Treza auto-builds from your repo', value: 'github' },
190
+ { title: 'Private Registry — Your own registry with credentials', value: 'private-registry' },
191
+ ],
192
+ initial: 0,
193
+ });
194
+ sourceType = sourceResponse.sourceType || 'registry';
195
+ }
196
+ // ── Prompt for source-specific details ────────────────────────────────
197
+ let dockerImage = options.image || '';
198
+ let githubRepo = options.githubRepo || '';
199
+ let githubBranch = options.githubBranch || 'main';
200
+ let githubToken = options.githubToken || '';
201
+ let registryUrl = options.registryUrl || '';
202
+ let registryUsername = options.registryUsername || '';
203
+ let registryPassword = options.registryPassword || '';
204
+ if (sourceType === 'registry' && !dockerImage) {
205
+ const r = await prompts({
206
+ type: 'text',
207
+ name: 'dockerImage',
208
+ message: 'Docker image URI (e.g. nginx:alpine)',
209
+ validate: (v) => (v ? true : 'Image URI is required'),
210
+ });
211
+ dockerImage = r.dockerImage || '';
212
+ }
213
+ if (sourceType === 'github') {
214
+ if (!githubRepo) {
215
+ const r = await prompts([
216
+ {
217
+ type: 'text',
218
+ name: 'githubRepo',
219
+ message: 'GitHub repository (owner/repo)',
220
+ validate: (v) => (v.includes('/') ? true : 'Must be owner/repo format'),
221
+ },
222
+ {
223
+ type: 'text',
224
+ name: 'githubBranch',
225
+ message: 'Branch',
226
+ initial: 'main',
227
+ },
228
+ {
229
+ type: 'password',
230
+ name: 'githubToken',
231
+ message: 'GitHub token (for private repos, leave blank for public)',
232
+ },
233
+ ]);
234
+ githubRepo = r.githubRepo || '';
235
+ githubBranch = r.githubBranch || 'main';
236
+ githubToken = r.githubToken || '';
237
+ }
238
+ }
239
+ if (sourceType === 'private-registry') {
240
+ const missingFields = !registryUrl || !dockerImage;
241
+ if (missingFields) {
242
+ const r = await prompts([
243
+ { type: registryUrl ? null : 'text', name: 'registryUrl', message: 'Registry URL (e.g. ghcr.io)' },
244
+ { type: dockerImage ? null : 'text', name: 'dockerImage', message: 'Image URI (e.g. myorg/myapp:latest)' },
245
+ { type: registryUsername ? null : 'text', name: 'registryUsername', message: 'Username' },
246
+ { type: registryPassword ? null : 'password', name: 'registryPassword', message: 'Password / token' },
247
+ ]);
248
+ registryUrl = registryUrl || r.registryUrl || '';
249
+ dockerImage = dockerImage || r.dockerImage || '';
250
+ registryUsername = registryUsername || r.registryUsername || '';
251
+ registryPassword = registryPassword || r.registryPassword || '';
252
+ }
253
+ }
254
+ // ── Prompt for workload config ─────────────────────────────────────────
255
+ if (!options.workloadType) {
256
+ const r = await prompts({
257
+ type: 'select',
258
+ name: 'workloadType',
259
+ message: 'Workload type',
260
+ choices: [
261
+ { title: 'Batch (run-to-completion)', value: 'batch' },
262
+ { title: 'Service (long-running HTTP server)', value: 'service' },
263
+ { title: 'Daemon (background process)', value: 'daemon' },
264
+ ],
265
+ });
266
+ if (r.workloadType)
267
+ options.workloadType = r.workloadType;
268
+ }
269
+ // ── Build providerConfig ───────────────────────────────────────────────
270
+ const providerConfig = {
271
+ sourceType,
272
+ instanceType: options.instanceType || 'm6i.xlarge',
273
+ cpuCount: options.cpu || '2',
274
+ memoryMiB: options.memory || '1024',
275
+ workloadType: options.workloadType || 'service',
276
+ };
277
+ if (dockerImage) {
278
+ providerConfig.dockerImage = dockerImage;
279
+ }
280
+ if (options.workloadType) {
281
+ providerConfig.workloadType = options.workloadType;
282
+ }
283
+ if (options.healthPath && options.workloadType === 'service') {
284
+ providerConfig.healthCheckPath = options.healthPath;
285
+ }
286
+ if (options.healthInterval) {
287
+ providerConfig.healthCheckInterval = options.healthInterval;
288
+ }
289
+ if (options.awsServices) {
290
+ providerConfig.awsServices = options.awsServices;
291
+ }
292
+ if (options.exposePorts) {
293
+ providerConfig.exposePorts = options.exposePorts;
294
+ }
295
+ // ── Submit ─────────────────────────────────────────────────────────────
296
+ const spinnerMsg = sourceType === 'github' ? 'Creating enclave and starting build...' : 'Creating enclave...';
297
+ const spinner = ora(spinnerMsg).start();
298
+ try {
299
+ const payload = {
300
+ name,
301
+ description: description || '',
302
+ region,
303
+ providerId: selectedProvider.id,
304
+ providerConfig,
305
+ sourceType,
306
+ };
307
+ if (sourceType === 'github') {
308
+ payload.githubConnection = {
309
+ isConnected: true,
310
+ username: '',
311
+ selectedRepo: githubRepo,
312
+ selectedBranch: githubBranch,
313
+ ...(githubToken && { accessToken: githubToken }),
314
+ };
315
+ }
316
+ if (sourceType === 'private-registry' && registryUrl) {
317
+ payload.privateRegistry = {
318
+ registryUrl,
319
+ username: registryUsername,
320
+ password: registryPassword,
321
+ };
322
+ payload.dockerImage = dockerImage;
323
+ }
324
+ const { enclave } = await api.createEnclave(payload);
325
+ if (sourceType === 'github') {
326
+ spinner.succeed(`Enclave created — build started (${enclave.buildId ? enclave.buildId.split(':').pop() : 'queued'})`);
327
+ }
328
+ else {
329
+ spinner.succeed('Enclave created!');
330
+ }
331
+ if (options.json) {
332
+ output.json(enclave);
333
+ return;
334
+ }
335
+ console.log('');
336
+ output.keyValue('ID', enclave.id);
337
+ output.keyValue('Status', output.statusColor(enclave.status));
338
+ output.keyValue('Source', sourceType);
339
+ output.keyValue('Region', enclave.region);
340
+ if (sourceType === 'github') {
341
+ output.keyValue('Repo', githubRepo);
342
+ output.keyValue('Branch', githubBranch);
343
+ if (enclave.buildStatus) {
344
+ output.keyValue('Build Status', enclave.buildStatus);
345
+ }
346
+ }
347
+ else if (sourceType === 'registry') {
348
+ output.keyValue('Image', dockerImage);
349
+ }
350
+ else if (sourceType === 'private-registry') {
351
+ output.keyValue('Registry', registryUrl);
352
+ output.keyValue('Image', dockerImage);
353
+ }
354
+ console.log('');
355
+ console.log(chalk.gray(`View details: treza enclave get ${enclave.id}`));
356
+ console.log(chalk.gray(`Stream logs: treza enclave logs ${enclave.id}${sourceType === 'github' ? ' --type build' : ''}`));
357
+ }
358
+ catch (err) {
359
+ spinner.stop();
360
+ if (err instanceof api.ApiError) {
361
+ const details = err.details?.details;
362
+ output.error(`Failed to create enclave: ${err.message}${details ? '\n ' + details.join('\n ') : ''}`);
363
+ }
364
+ else {
365
+ output.error(`Failed to create enclave: ${err.message}`);
366
+ }
367
+ process.exit(1);
368
+ }
369
+ });
370
+ enclaveCommand
371
+ .command('pause <id>')
372
+ .description('Pause an enclave')
373
+ .action(async (id) => {
374
+ requireConfig();
375
+ const spinner = ora('Pausing enclave...').start();
376
+ try {
377
+ const { enclave, message } = await api.performEnclaveAction(id, 'pause');
378
+ spinner.succeed(message || 'Enclave paused');
379
+ output.keyValue('Status', output.statusColor(enclave.status));
380
+ }
381
+ catch (err) {
382
+ spinner.stop();
383
+ if (err instanceof api.ApiError) {
384
+ output.error(`Failed to pause: ${err.message}`);
385
+ }
386
+ else {
387
+ output.error(`Failed to pause: ${err.message}`);
388
+ }
389
+ process.exit(1);
390
+ }
391
+ });
392
+ enclaveCommand
393
+ .command('resume <id>')
394
+ .description('Resume a paused enclave')
395
+ .action(async (id) => {
396
+ requireConfig();
397
+ const spinner = ora('Resuming enclave...').start();
398
+ try {
399
+ const { enclave, message } = await api.performEnclaveAction(id, 'resume');
400
+ spinner.succeed(message || 'Enclave resumed');
401
+ output.keyValue('Status', output.statusColor(enclave.status));
402
+ }
403
+ catch (err) {
404
+ spinner.stop();
405
+ if (err instanceof api.ApiError) {
406
+ output.error(`Failed to resume: ${err.message}`);
407
+ }
408
+ else {
409
+ output.error(`Failed to resume: ${err.message}`);
410
+ }
411
+ process.exit(1);
412
+ }
413
+ });
414
+ enclaveCommand
415
+ .command('terminate <id>')
416
+ .description('Terminate an enclave')
417
+ .option('-f, --force', 'Skip confirmation')
418
+ .action(async (id, options) => {
419
+ requireConfig();
420
+ if (!options.force) {
421
+ const response = await prompts({
422
+ type: 'confirm',
423
+ name: 'confirm',
424
+ message: `Are you sure you want to terminate enclave ${id}? This cannot be undone.`,
425
+ initial: false,
426
+ });
427
+ if (!response.confirm) {
428
+ output.info('Cancelled');
429
+ return;
430
+ }
431
+ }
432
+ const spinner = ora('Terminating enclave...').start();
433
+ try {
434
+ const { enclave, message } = await api.performEnclaveAction(id, 'terminate');
435
+ spinner.succeed(message || 'Enclave terminated');
436
+ output.keyValue('Status', output.statusColor(enclave.status));
437
+ }
438
+ catch (err) {
439
+ spinner.stop();
440
+ if (err instanceof api.ApiError) {
441
+ output.error(`Failed to terminate: ${err.message}`);
442
+ }
443
+ else {
444
+ output.error(`Failed to terminate: ${err.message}`);
445
+ }
446
+ process.exit(1);
447
+ }
448
+ });
449
+ enclaveCommand
450
+ .command('delete <id>')
451
+ .description('Delete a terminated enclave')
452
+ .option('-f, --force', 'Skip confirmation')
453
+ .action(async (id, options) => {
454
+ requireConfig();
455
+ if (!options.force) {
456
+ const response = await prompts({
457
+ type: 'confirm',
458
+ name: 'confirm',
459
+ message: `Delete enclave ${id}? This will remove all data.`,
460
+ initial: false,
461
+ });
462
+ if (!response.confirm) {
463
+ output.info('Cancelled');
464
+ return;
465
+ }
466
+ }
467
+ const spinner = ora('Deleting enclave...').start();
468
+ try {
469
+ const { message } = await api.deleteEnclave(id);
470
+ spinner.succeed(message || 'Enclave deleted');
471
+ }
472
+ catch (err) {
473
+ spinner.stop();
474
+ if (err instanceof api.ApiError) {
475
+ output.error(`Failed to delete: ${err.message}`);
476
+ }
477
+ else {
478
+ output.error(`Failed to delete: ${err.message}`);
479
+ }
480
+ process.exit(1);
481
+ }
482
+ });
483
+ enclaveCommand
484
+ .command('logs <id>')
485
+ .description('View enclave logs')
486
+ .option('-t, --type <type>', 'Log type: all, ecs, application, errors, lambda, stepfunctions, build', 'all')
487
+ .option('-n, --limit <limit>', 'Number of log entries', '50')
488
+ .option('--json', 'Output as JSON')
489
+ .action(async (id, options) => {
490
+ requireConfig();
491
+ const spinner = ora('Fetching logs...').start();
492
+ try {
493
+ const { logs } = await api.getEnclaveLogs(id, options.type, parseInt(options.limit));
494
+ spinner.stop();
495
+ if (options.json) {
496
+ output.json(logs);
497
+ return;
498
+ }
499
+ const allLogs = [];
500
+ for (const [source, entries] of Object.entries(logs)) {
501
+ if (Array.isArray(entries)) {
502
+ for (const entry of entries) {
503
+ allLogs.push({
504
+ timestamp: entry.timestamp || Date.now(),
505
+ message: entry.message || '',
506
+ source,
507
+ });
508
+ }
509
+ }
510
+ }
511
+ if (allLogs.length === 0) {
512
+ output.info('No logs found');
513
+ return;
514
+ }
515
+ // Sort by timestamp
516
+ allLogs.sort((a, b) => a.timestamp - b.timestamp);
517
+ output.heading(`Logs (${allLogs.length} entries)`);
518
+ for (const log of allLogs.slice(-parseInt(options.limit))) {
519
+ const time = new Date(log.timestamp).toLocaleTimeString();
520
+ const sourceColor = log.source === 'errors' ? chalk.red : chalk.cyan;
521
+ console.log(chalk.gray(time) + ' ' + sourceColor(`[${log.source}]`) + ' ' + log.message);
522
+ }
523
+ }
524
+ catch (err) {
525
+ spinner.stop();
526
+ if (err instanceof api.ApiError) {
527
+ output.error(`Failed to fetch logs: ${err.message}`);
528
+ }
529
+ else {
530
+ output.error(`Failed to fetch logs: ${err.message}`);
531
+ }
532
+ process.exit(1);
533
+ }
534
+ });
535
+ //# sourceMappingURL=enclave.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enclave.js","sourceRoot":"","sources":["../../src/commands/enclave.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const kycCommand: Command;
3
+ //# sourceMappingURL=kyc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kyc.d.ts","sourceRoot":"","sources":["../../src/commands/kyc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,UAAU,SAC0B,CAAC"}