cursor-history 0.5.1 → 0.8.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 (83) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +385 -2
  3. package/dist/cli/commands/backup.d.ts +9 -0
  4. package/dist/cli/commands/backup.d.ts.map +1 -0
  5. package/dist/cli/commands/backup.js +168 -0
  6. package/dist/cli/commands/backup.js.map +1 -0
  7. package/dist/cli/commands/export.d.ts.map +1 -1
  8. package/dist/cli/commands/export.js +39 -7
  9. package/dist/cli/commands/export.js.map +1 -1
  10. package/dist/cli/commands/list-backups.d.ts +9 -0
  11. package/dist/cli/commands/list-backups.d.ts.map +1 -0
  12. package/dist/cli/commands/list-backups.js +166 -0
  13. package/dist/cli/commands/list-backups.js.map +1 -0
  14. package/dist/cli/commands/list.d.ts.map +1 -1
  15. package/dist/cli/commands/list.js +44 -9
  16. package/dist/cli/commands/list.js.map +1 -1
  17. package/dist/cli/commands/migrate-session.d.ts +12 -0
  18. package/dist/cli/commands/migrate-session.d.ts.map +1 -0
  19. package/dist/cli/commands/migrate-session.js +125 -0
  20. package/dist/cli/commands/migrate-session.js.map +1 -0
  21. package/dist/cli/commands/migrate.d.ts +13 -0
  22. package/dist/cli/commands/migrate.d.ts.map +1 -0
  23. package/dist/cli/commands/migrate.js +122 -0
  24. package/dist/cli/commands/migrate.js.map +1 -0
  25. package/dist/cli/commands/restore.d.ts +9 -0
  26. package/dist/cli/commands/restore.d.ts.map +1 -0
  27. package/dist/cli/commands/restore.js +192 -0
  28. package/dist/cli/commands/restore.js.map +1 -0
  29. package/dist/cli/commands/search.d.ts.map +1 -1
  30. package/dist/cli/commands/search.js +31 -3
  31. package/dist/cli/commands/search.js.map +1 -1
  32. package/dist/cli/commands/show.d.ts.map +1 -1
  33. package/dist/cli/commands/show.js +32 -4
  34. package/dist/cli/commands/show.js.map +1 -1
  35. package/dist/cli/errors.d.ts +56 -0
  36. package/dist/cli/errors.d.ts.map +1 -0
  37. package/dist/cli/errors.js +90 -0
  38. package/dist/cli/errors.js.map +1 -0
  39. package/dist/cli/index.js +11 -1
  40. package/dist/cli/index.js.map +1 -1
  41. package/dist/core/backup.d.ts +89 -0
  42. package/dist/core/backup.d.ts.map +1 -0
  43. package/dist/core/backup.js +709 -0
  44. package/dist/core/backup.js.map +1 -0
  45. package/dist/core/migrate.d.ts +40 -0
  46. package/dist/core/migrate.d.ts.map +1 -0
  47. package/dist/core/migrate.js +586 -0
  48. package/dist/core/migrate.js.map +1 -0
  49. package/dist/core/storage.d.ts +78 -6
  50. package/dist/core/storage.d.ts.map +1 -1
  51. package/dist/core/storage.js +327 -45
  52. package/dist/core/storage.js.map +1 -1
  53. package/dist/core/types.d.ts +280 -0
  54. package/dist/core/types.d.ts.map +1 -1
  55. package/dist/lib/backup.d.ts +98 -0
  56. package/dist/lib/backup.d.ts.map +1 -0
  57. package/dist/lib/backup.js +108 -0
  58. package/dist/lib/backup.js.map +1 -0
  59. package/dist/lib/config.d.ts +33 -0
  60. package/dist/lib/config.d.ts.map +1 -0
  61. package/dist/lib/config.js +81 -0
  62. package/dist/lib/config.js.map +1 -0
  63. package/dist/lib/errors.d.ts +257 -30
  64. package/dist/lib/errors.d.ts.map +1 -1
  65. package/dist/lib/errors.js +404 -54
  66. package/dist/lib/errors.js.map +1 -1
  67. package/dist/lib/index.d.ts +219 -0
  68. package/dist/lib/index.d.ts.map +1 -0
  69. package/dist/lib/index.js +520 -0
  70. package/dist/lib/index.js.map +1 -0
  71. package/dist/lib/platform.d.ts +11 -0
  72. package/dist/lib/platform.d.ts.map +1 -1
  73. package/dist/lib/platform.js +32 -0
  74. package/dist/lib/platform.js.map +1 -1
  75. package/dist/lib/types.d.ts +374 -0
  76. package/dist/lib/types.d.ts.map +1 -0
  77. package/dist/lib/types.js +9 -0
  78. package/dist/lib/types.js.map +1 -0
  79. package/dist/lib/utils.d.ts +17 -0
  80. package/dist/lib/utils.d.ts.map +1 -0
  81. package/dist/lib/utils.js +20 -0
  82. package/dist/lib/utils.js.map +1 -0
  83. package/package.json +32 -4
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Error handling utilities and exit codes
3
+ */
4
+ /**
5
+ * CLI exit codes following Unix conventions
6
+ */
7
+ export const ExitCode = {
8
+ SUCCESS: 0,
9
+ GENERAL_ERROR: 1,
10
+ USAGE_ERROR: 2, // Invalid arguments
11
+ NOT_FOUND: 3, // Resource not found
12
+ IO_ERROR: 4, // File/database access error
13
+ };
14
+ /**
15
+ * Custom error class for CLI errors with exit codes
16
+ */
17
+ export class CliError extends Error {
18
+ exitCode;
19
+ constructor(message, exitCode = ExitCode.GENERAL_ERROR) {
20
+ super(message);
21
+ this.exitCode = exitCode;
22
+ this.name = 'CliError';
23
+ }
24
+ }
25
+ /**
26
+ * Error for when no Cursor installation is found
27
+ */
28
+ export class CursorNotFoundError extends CliError {
29
+ constructor(searchPath) {
30
+ super(`Cursor data not found at: ${searchPath}\n` +
31
+ 'Make sure Cursor is installed and has been used at least once.\n' +
32
+ 'You can specify a custom path with --data-path or CURSOR_DATA_PATH env var.', ExitCode.NOT_FOUND);
33
+ this.name = 'CursorNotFoundError';
34
+ }
35
+ }
36
+ /**
37
+ * Error for when no chat history exists
38
+ */
39
+ export class NoHistoryError extends CliError {
40
+ constructor() {
41
+ super('No chat history found.\n' + 'Start a conversation in Cursor to create chat history.', ExitCode.NOT_FOUND);
42
+ this.name = 'NoHistoryError';
43
+ }
44
+ }
45
+ /**
46
+ * Error for invalid session index
47
+ */
48
+ export class SessionNotFoundError extends CliError {
49
+ constructor(index, maxIndex) {
50
+ const message = maxIndex > 0
51
+ ? `Session #${index} not found. Valid range: 1-${maxIndex}`
52
+ : 'No sessions found.';
53
+ super(message, ExitCode.NOT_FOUND);
54
+ this.name = 'SessionNotFoundError';
55
+ }
56
+ }
57
+ /**
58
+ * Error for file already exists
59
+ */
60
+ export class FileExistsError extends CliError {
61
+ constructor(path) {
62
+ super(`File already exists: ${path}\nUse --force to overwrite.`, ExitCode.IO_ERROR);
63
+ this.name = 'FileExistsError';
64
+ }
65
+ }
66
+ /**
67
+ * Error for search with no results
68
+ */
69
+ export class NoSearchResultsError extends CliError {
70
+ constructor(query) {
71
+ super(`No results found for: "${query}"`, ExitCode.NOT_FOUND);
72
+ this.name = 'NoSearchResultsError';
73
+ }
74
+ }
75
+ /**
76
+ * Handle an error and exit with appropriate code
77
+ */
78
+ export function handleError(error) {
79
+ if (error instanceof CliError) {
80
+ console.error(error.message);
81
+ process.exit(error.exitCode);
82
+ }
83
+ if (error instanceof Error) {
84
+ console.error(`Error: ${error.message}`);
85
+ process.exit(ExitCode.GENERAL_ERROR);
86
+ }
87
+ console.error('An unexpected error occurred');
88
+ process.exit(ExitCode.GENERAL_ERROR);
89
+ }
90
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/cli/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,CAAC;IAChB,WAAW,EAAE,CAAC,EAAE,oBAAoB;IACpC,SAAS,EAAE,CAAC,EAAE,qBAAqB;IACnC,QAAQ,EAAE,CAAC,EAAE,6BAA6B;CAClC,CAAC;AAIX;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGf;IAFlB,YACE,OAAe,EACC,WAAqB,QAAQ,CAAC,aAAa;QAE3D,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,aAAQ,GAAR,QAAQ,CAAmC;QAG3D,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,QAAQ;IAC/C,YAAY,UAAkB;QAC5B,KAAK,CACH,6BAA6B,UAAU,IAAI;YACzC,kEAAkE;YAClE,6EAA6E,EAC/E,QAAQ,CAAC,SAAS,CACnB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C;QACE,KAAK,CACH,0BAA0B,GAAG,wDAAwD,EACrF,QAAQ,CAAC,SAAS,CACnB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,QAAQ;IAChD,YAAY,KAAa,EAAE,QAAgB;QACzC,MAAM,OAAO,GACX,QAAQ,GAAG,CAAC;YACV,CAAC,CAAC,YAAY,KAAK,8BAA8B,QAAQ,EAAE;YAC3D,CAAC,CAAC,oBAAoB,CAAC;QAC3B,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,IAAY;QACtB,KAAK,CAAC,wBAAwB,IAAI,6BAA6B,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpF,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,QAAQ;IAChD,YAAY,KAAa;QACvB,KAAK,CAAC,0BAA0B,KAAK,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACvC,CAAC"}
package/dist/cli/index.js CHANGED
@@ -6,7 +6,7 @@ import { Command } from 'commander';
6
6
  import { readFileSync } from 'node:fs';
7
7
  import { fileURLToPath } from 'node:url';
8
8
  import { dirname, join } from 'node:path';
9
- import { handleError, ExitCode } from '../lib/errors.js';
9
+ import { handleError, ExitCode } from './errors.js';
10
10
  // Read version from package.json
11
11
  const __dirname = dirname(fileURLToPath(import.meta.url));
12
12
  const packageJson = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf-8'));
@@ -25,10 +25,20 @@ async function loadCommands() {
25
25
  const { registerShowCommand } = await import('./commands/show.js');
26
26
  const { registerSearchCommand } = await import('./commands/search.js');
27
27
  const { registerExportCommand } = await import('./commands/export.js');
28
+ const { registerMigrateSessionCommand } = await import('./commands/migrate-session.js');
29
+ const { registerMigrateCommand } = await import('./commands/migrate.js');
30
+ const { registerBackupCommand } = await import('./commands/backup.js');
31
+ const { registerRestoreCommand } = await import('./commands/restore.js');
32
+ const { registerListBackupsCommand } = await import('./commands/list-backups.js');
28
33
  registerListCommand(program);
29
34
  registerShowCommand(program);
30
35
  registerSearchCommand(program);
31
36
  registerExportCommand(program);
37
+ registerMigrateSessionCommand(program);
38
+ registerMigrateCommand(program);
39
+ registerBackupCommand(program);
40
+ registerRestoreCommand(program);
41
+ registerListBackupsCommand(program);
32
42
  }
33
43
  // Main execution
34
44
  async function main() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEzD,iCAAiC;AACjC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAE1F,CAAC;AAEF,sBAAsB;AACtB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC,yCAAyC,CAAC;KACtD,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,qBAAqB,CAAC;KACpE,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,MAAM,CAAC,oBAAoB,EAAE,8BAA8B,CAAC;KAC5D,MAAM,CAAC,wBAAwB,EAAE,0BAA0B,CAAC,CAAC;AAEhE,oDAAoD;AACpD,KAAK,UAAU,YAAY;IACzB,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACnE,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACnE,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACvE,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAEvE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,iBAAiB;AACjB,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,YAAY,EAAE,CAAC;QAErB,6BAA6B;QAC7B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC;QAED,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Core backup and restore functionality
3
+ *
4
+ * This module provides low-level backup operations:
5
+ * - SQLite database backup using better-sqlite3 backup API
6
+ * - Zip creation/extraction using adm-zip
7
+ * - Manifest generation with checksums
8
+ * - Integrity validation
9
+ */
10
+ import Database from 'better-sqlite3';
11
+ import type { BackupManifest, BackupFileEntry, BackupStats, BackupConfig, BackupResult, RestoreConfig, RestoreResult, BackupValidation, BackupInfo } from './types.js';
12
+ /**
13
+ * T005: Get the default backup directory path
14
+ * Returns ~/cursor-history-backups/
15
+ */
16
+ export declare function getDefaultBackupDir(): string;
17
+ /**
18
+ * T006: Compute SHA-256 checksum of a buffer
19
+ */
20
+ export declare function computeChecksum(buffer: Buffer): string;
21
+ /**
22
+ * T007: Generate a timestamped backup filename
23
+ * Format: cursor_history_backup_YYYY-MM-DD_HHMMSS.zip
24
+ */
25
+ export declare function generateBackupFilename(): string;
26
+ /**
27
+ * Information about a discovered database file
28
+ */
29
+ export interface DatabaseFileInfo {
30
+ /** Absolute path to the database file */
31
+ absolutePath: string;
32
+ /** Path relative to the Cursor data directory (for zip storage) */
33
+ relativePath: string;
34
+ /** File size in bytes */
35
+ size: number;
36
+ /** File type */
37
+ type: 'global-db' | 'workspace-db' | 'workspace-json';
38
+ /** Workspace ID (for workspace DBs) */
39
+ workspaceId?: string;
40
+ }
41
+ /**
42
+ * T008: Scan for all database files in the Cursor data directory
43
+ * Discovers globalStorage/state.vscdb and workspaceStorage/{id}/state.vscdb
44
+ */
45
+ export declare function scanDatabaseFiles(dataPath: string): DatabaseFileInfo[];
46
+ /**
47
+ * T009: Create a manifest object from file entries and stats
48
+ */
49
+ export declare function createManifest(files: BackupFileEntry[], stats: BackupStats): BackupManifest;
50
+ /**
51
+ * T011: Backup a single database file using SQLite backup API
52
+ * This ensures a consistent snapshot even if Cursor is running
53
+ */
54
+ export declare function backupDatabase(sourcePath: string, destPath: string): Promise<void>;
55
+ /**
56
+ * T013: Check if there's enough disk space for the backup
57
+ * Returns { available, required, sufficient }
58
+ */
59
+ export declare function checkDiskSpace(outputPath: string, requiredBytes: number): {
60
+ available: number;
61
+ required: number;
62
+ sufficient: boolean;
63
+ };
64
+ /**
65
+ * T012-T016: Create a full backup of all Cursor chat history
66
+ */
67
+ export declare function createBackup(config?: BackupConfig): Promise<BackupResult>;
68
+ /**
69
+ * T025: Open a database from a backup zip file
70
+ * Note: better-sqlite3 cannot open directly from buffer, so we extract to a temp file
71
+ */
72
+ export declare function openBackupDatabase(backupPath: string, dbPath: string): Database.Database;
73
+ /**
74
+ * Read manifest from a backup file
75
+ */
76
+ export declare function readBackupManifest(backupPath: string): BackupManifest | null;
77
+ /**
78
+ * T026: Validate backup integrity
79
+ */
80
+ export declare function validateBackup(backupPath: string): BackupValidation;
81
+ /**
82
+ * T040-T045: Restore backup to Cursor data directory
83
+ */
84
+ export declare function restoreBackup(config: RestoreConfig): RestoreResult;
85
+ /**
86
+ * T055-T057: List all backup files in a directory
87
+ */
88
+ export declare function listBackups(directory?: string): BackupInfo[];
89
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/core/backup.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,UAAU,EACX,MAAM,YAAY,CAAC;AAUpB;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAU/C;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,IAAI,EAAE,WAAW,GAAG,cAAc,GAAG,gBAAgB,CAAC;IACtD,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE,CA6DtE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,eAAe,EAAE,EACxB,KAAK,EAAE,WAAW,GACjB,cAAc,CAWhB;AAmCD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAyB9D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAsM/E;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAkCxF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAW5E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAiGnE;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CA+HlE;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,CAiD5D"}