codebuff 1.0.286 → 1.0.287
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/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/common/__tests__/project-file-tree.test.d.ts +1 -0
- package/dist/common/__tests__/project-file-tree.test.js +251 -0
- package/dist/common/__tests__/project-file-tree.test.js.map +1 -0
- package/dist/common/actions.d.ts +34 -34
- package/dist/common/json-config/__tests__/__snapshots__/stringify-schema.test.js.snap +119 -0
- package/dist/common/types/agent-state.d.ts +8 -8
- package/dist/common/types/message.d.ts +6 -6
- package/dist/common/types/usage.d.ts +2 -2
- package/dist/common/util/credentials.d.ts +2 -2
- package/dist/common/util/process-stream.d.ts +7 -0
- package/dist/common/util/process-stream.js +162 -0
- package/dist/common/util/process-stream.js.map +1 -0
- package/dist/common/websockets/websocket-schema.d.ts +72 -72
- package/dist/index.js +1 -7
- package/dist/utils/__tests__/__snapshots__/background-process-manager.test.js.snap +137 -0
- package/dist/utils/__tests__/file-paths.test.d.ts +1 -0
- package/dist/utils/__tests__/file-paths.test.js +37 -0
- package/dist/utils/__tests__/file-paths.test.js.map +1 -0
- package/dist/utils/__tests__/path.test.d.ts +1 -0
- package/dist/utils/__tests__/path.test.js +37 -0
- package/dist/utils/__tests__/path.test.js.map +1 -0
- package/dist/utils/file-paths.d.ts +9 -0
- package/dist/utils/file-paths.js +24 -0
- package/dist/utils/file-paths.js.map +1 -0
- package/dist/utils/path.d.ts +9 -0
- package/dist/utils/path.js +27 -0
- package/dist/utils/path.js.map +1 -0
- package/package.json +1 -1
- package/dist/slash-commands.d.ts +0 -7
- package/dist/slash-commands.js +0 -21
- package/dist/slash-commands.js.map +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const file_paths_1 = require("../file-paths");
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
describe('toAbsolutePath', () => {
|
|
9
|
+
const projectRoot = '/home/user/project';
|
|
10
|
+
it('should handle relative paths', () => {
|
|
11
|
+
expect((0, file_paths_1.toAbsolutePath)('src/file.ts', projectRoot))
|
|
12
|
+
.toBe(path_1.default.normalize(path_1.default.join(projectRoot, 'src/file.ts')));
|
|
13
|
+
});
|
|
14
|
+
it('should handle parent directory references', () => {
|
|
15
|
+
expect((0, file_paths_1.toAbsolutePath)('../file.ts', projectRoot))
|
|
16
|
+
.toBe(path_1.default.normalize(path_1.default.join(path_1.default.dirname(projectRoot), 'file.ts')));
|
|
17
|
+
});
|
|
18
|
+
it('should handle current directory references', () => {
|
|
19
|
+
expect((0, file_paths_1.toAbsolutePath)('./file.ts', projectRoot))
|
|
20
|
+
.toBe(path_1.default.normalize(path_1.default.join(projectRoot, 'file.ts')));
|
|
21
|
+
});
|
|
22
|
+
it('should return absolute paths unchanged', () => {
|
|
23
|
+
const absolutePath = '/absolute/path/file.ts';
|
|
24
|
+
expect((0, file_paths_1.toAbsolutePath)(absolutePath, projectRoot))
|
|
25
|
+
.toBe(path_1.default.normalize(absolutePath));
|
|
26
|
+
});
|
|
27
|
+
it('should handle Windows-style paths', () => {
|
|
28
|
+
const winPath = 'src\\file.ts';
|
|
29
|
+
expect((0, file_paths_1.toAbsolutePath)(winPath, projectRoot))
|
|
30
|
+
.toBe(path_1.default.normalize(path_1.default.join(projectRoot, 'src/file.ts')));
|
|
31
|
+
});
|
|
32
|
+
it('should normalize paths with multiple slashes', () => {
|
|
33
|
+
expect((0, file_paths_1.toAbsolutePath)('src//file.ts', projectRoot))
|
|
34
|
+
.toBe(path_1.default.normalize(path_1.default.join(projectRoot, 'src/file.ts')));
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=file-paths.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-paths.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/file-paths.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAA8C;AAC9C,gDAAuB;AAEvB,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,MAAM,WAAW,GAAG,oBAAoB,CAAA;IAExC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,IAAA,2BAAc,EAAC,aAAa,EAAE,WAAW,CAAC,CAAC;aAC/C,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,IAAA,2BAAc,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;aAC9C,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,IAAA,2BAAc,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC;aAC7C,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,YAAY,GAAG,wBAAwB,CAAA;QAC7C,MAAM,CAAC,IAAA,2BAAc,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;aAC9C,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,OAAO,GAAG,cAAc,CAAA;QAC9B,MAAM,CAAC,IAAA,2BAAc,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;aACzC,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,IAAA,2BAAc,EAAC,cAAc,EAAE,WAAW,CAAC,CAAC;aAChD,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const path_1 = require("../path");
|
|
7
|
+
const path_2 = __importDefault(require("path"));
|
|
8
|
+
describe('toAbsolutePath', () => {
|
|
9
|
+
const projectRoot = '/home/user/project';
|
|
10
|
+
it('should handle relative paths', () => {
|
|
11
|
+
expect((0, path_1.toAbsolutePath)('src/file.ts', projectRoot))
|
|
12
|
+
.toBe(path_2.default.normalize(path_2.default.join(projectRoot, 'src/file.ts')));
|
|
13
|
+
});
|
|
14
|
+
it('should handle parent directory references', () => {
|
|
15
|
+
expect((0, path_1.toAbsolutePath)('../file.ts', projectRoot))
|
|
16
|
+
.toBe(path_2.default.normalize(path_2.default.join(path_2.default.dirname(projectRoot), 'file.ts')));
|
|
17
|
+
});
|
|
18
|
+
it('should handle current directory references', () => {
|
|
19
|
+
expect((0, path_1.toAbsolutePath)('./file.ts', projectRoot))
|
|
20
|
+
.toBe(path_2.default.normalize(path_2.default.join(projectRoot, 'file.ts')));
|
|
21
|
+
});
|
|
22
|
+
it('should return absolute paths unchanged', () => {
|
|
23
|
+
const absolutePath = '/absolute/path/file.ts';
|
|
24
|
+
expect((0, path_1.toAbsolutePath)(absolutePath, projectRoot))
|
|
25
|
+
.toBe(path_2.default.normalize(absolutePath));
|
|
26
|
+
});
|
|
27
|
+
it('should handle Windows-style paths', () => {
|
|
28
|
+
const winPath = 'src\\file.ts';
|
|
29
|
+
expect((0, path_1.toAbsolutePath)(winPath, projectRoot))
|
|
30
|
+
.toBe(path_2.default.normalize(path_2.default.join(projectRoot, 'src/file.ts')));
|
|
31
|
+
});
|
|
32
|
+
it('should normalize paths with multiple slashes', () => {
|
|
33
|
+
expect((0, path_1.toAbsolutePath)('src//file.ts', projectRoot))
|
|
34
|
+
.toBe(path_2.default.normalize(path_2.default.join(projectRoot, 'src/file.ts')));
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=path.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/path.test.ts"],"names":[],"mappings":";;;;;AAAA,kCAAwC;AACxC,gDAAuB;AAEvB,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,MAAM,WAAW,GAAG,oBAAoB,CAAA;IAExC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,IAAA,qBAAc,EAAC,aAAa,EAAE,WAAW,CAAC,CAAC;aAC/C,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,IAAA,qBAAc,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;aAC9C,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,IAAA,qBAAc,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC;aAC7C,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,YAAY,GAAG,wBAAwB,CAAA;QAC7C,MAAM,CAAC,IAAA,qBAAc,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;aAC9C,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,OAAO,GAAG,cAAc,CAAA;QAC9B,MAAM,CAAC,IAAA,qBAAc,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;aACzC,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,IAAA,qBAAc,EAAC,cAAc,EAAE,WAAW,CAAC,CAAC;aAChD,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transforms a relative filepath into an absolute one, using the project root as the base.
|
|
3
|
+
* Handles '..' and '.' in paths correctly. Also handles Windows paths.
|
|
4
|
+
*
|
|
5
|
+
* @param filepath The relative filepath to transform
|
|
6
|
+
* @param projectRoot The absolute path to the project root
|
|
7
|
+
* @returns The absolute filepath
|
|
8
|
+
*/
|
|
9
|
+
export declare function toAbsolutePath(filepath: string, projectRoot: string): string;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.toAbsolutePath = toAbsolutePath;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
/**
|
|
9
|
+
* Transforms a relative filepath into an absolute one, using the project root as the base.
|
|
10
|
+
* Handles '..' and '.' in paths correctly. Also handles Windows paths.
|
|
11
|
+
*
|
|
12
|
+
* @param filepath The relative filepath to transform
|
|
13
|
+
* @param projectRoot The absolute path to the project root
|
|
14
|
+
* @returns The absolute filepath
|
|
15
|
+
*/
|
|
16
|
+
function toAbsolutePath(filepath, projectRoot) {
|
|
17
|
+
// If already absolute, normalize and return
|
|
18
|
+
if (path_1.default.isAbsolute(filepath)) {
|
|
19
|
+
return path_1.default.normalize(filepath);
|
|
20
|
+
}
|
|
21
|
+
// Handle '..' at the start by resolving against project root
|
|
22
|
+
return path_1.default.normalize(path_1.default.resolve(projectRoot, filepath));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=file-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-paths.js","sourceRoot":"","sources":["../../src/utils/file-paths.ts"],"names":[],"mappings":";;;;;AAUA,wCAQC;AAlBD,gDAAuB;AAEvB;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,QAAgB,EAAE,WAAmB;IAClE,4CAA4C;IAC5C,IAAI,cAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,cAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;IAED,6DAA6D;IAC7D,OAAO,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC5D,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transforms a relative filepath into an absolute one, using the project root as the base.
|
|
3
|
+
* Handles '..' and '.' in paths correctly. Also handles Windows paths.
|
|
4
|
+
*
|
|
5
|
+
* @param filepath The relative filepath to transform
|
|
6
|
+
* @param projectRoot The absolute path to the project root
|
|
7
|
+
* @returns The absolute filepath
|
|
8
|
+
*/
|
|
9
|
+
export declare function toAbsolutePath(filepath: string, projectRoot: string): string;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.toAbsolutePath = toAbsolutePath;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
/**
|
|
9
|
+
* Transforms a relative filepath into an absolute one, using the project root as the base.
|
|
10
|
+
* Handles '..' and '.' in paths correctly. Also handles Windows paths.
|
|
11
|
+
*
|
|
12
|
+
* @param filepath The relative filepath to transform
|
|
13
|
+
* @param projectRoot The absolute path to the project root
|
|
14
|
+
* @returns The absolute filepath
|
|
15
|
+
*/
|
|
16
|
+
function toAbsolutePath(filepath, projectRoot) {
|
|
17
|
+
// If already absolute, normalize and return
|
|
18
|
+
if (path_1.default.isAbsolute(filepath)) {
|
|
19
|
+
return path_1.default.normalize(filepath);
|
|
20
|
+
}
|
|
21
|
+
// Handle Windows paths
|
|
22
|
+
const normalizedFilepath = filepath.replace(/\\/g, '/');
|
|
23
|
+
const normalizedProjectRoot = projectRoot.replace(/\\/g, '/');
|
|
24
|
+
// Handle '..' at the start by resolving against project root
|
|
25
|
+
return path_1.default.normalize(path_1.default.resolve(normalizedProjectRoot, normalizedFilepath));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":";;;;;AAUA,wCAYC;AAtBD,gDAAuB;AAEvB;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,QAAgB,EAAE,WAAmB;IAClE,4CAA4C;IAC5C,IAAI,cAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,cAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;IAED,uBAAuB;IACvB,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACvD,MAAM,qBAAqB,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAE7D,6DAA6D;IAC7D,OAAO,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC,CAAA;AAChF,CAAC"}
|
package/package.json
CHANGED
package/dist/slash-commands.d.ts
DELETED
package/dist/slash-commands.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.slashCommands = void 0;
|
|
4
|
-
exports.slashCommands = [
|
|
5
|
-
{ command: '/help', fullCommand: 'help', description: 'Show help menu', aliases: ['/h'] },
|
|
6
|
-
{ command: '/login', fullCommand: 'login', description: 'Authenticate your session' },
|
|
7
|
-
{ command: '/logout', fullCommand: 'logout', description: 'Sign out of your session' },
|
|
8
|
-
{ command: '/init', fullCommand: 'init', description: 'Configure project for better results' },
|
|
9
|
-
{ command: '/diff', fullCommand: 'diff', description: 'Show last assistant change diff', aliases: ['/d'] },
|
|
10
|
-
{ command: '/undo', fullCommand: 'undo', description: 'Revert to previous checkpoint', aliases: ['/u'] },
|
|
11
|
-
{ command: '/redo', fullCommand: 'redo', description: 'Re-apply previously undone checkpoint', aliases: ['/r'] },
|
|
12
|
-
{ command: '/checkpoint save', fullCommand: 'checkpoint save', description: 'Save current state as a new checkpoint' },
|
|
13
|
-
{ command: '/checkpoint list', fullCommand: 'checkpoint list', description: 'List all saved checkpoints' },
|
|
14
|
-
{ command: '/checkpoint clear', fullCommand: 'checkpoint clear', description: 'Clear all checkpoints' },
|
|
15
|
-
// For commands like "checkpoint <id>", direct slash command is tricky.
|
|
16
|
-
// User would type "/checkpoint restore" then space and the id.
|
|
17
|
-
{ command: '/checkpoint restore', fullCommand: 'checkpoint restore', description: 'Restore to checkpoint <id> (type ID after)' },
|
|
18
|
-
{ command: '/usage', fullCommand: 'usage', description: 'View remaining/bonus AI credits', aliases: ['/credits'] },
|
|
19
|
-
{ command: '/exit', fullCommand: 'exit', description: 'Quit Codebuff', aliases: ['/quit', '/q'] },
|
|
20
|
-
];
|
|
21
|
-
//# sourceMappingURL=slash-commands.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"slash-commands.js","sourceRoot":"","sources":["../src/slash-commands.ts"],"names":[],"mappings":";;;AAOa,QAAA,aAAa,GAAmB;IAC3C,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IACzF,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE;IACrF,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;IACtF,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,sCAAsC,EAAE;IAC9F,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,iCAAiC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IAC1G,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,+BAA+B,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IACxG,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,uCAAuC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;IAChH,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,wCAAwC,EAAE;IACtH,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC1G,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,uBAAuB,EAAE;IACvG,uEAAuE;IACvE,+DAA+D;IAC/D,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,oBAAoB,EAAE,WAAW,EAAE,4CAA4C,EAAE;IAChI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,iCAAiC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;IAClH,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;CAClG,CAAC"}
|