@theia/scm 1.48.3 → 1.49.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 (52) hide show
  1. package/lib/browser/decorations/scm-decorations-service.d.ts +9 -3
  2. package/lib/browser/decorations/scm-decorations-service.d.ts.map +1 -1
  3. package/lib/browser/decorations/scm-decorations-service.js +50 -30
  4. package/lib/browser/decorations/scm-decorations-service.js.map +1 -1
  5. package/lib/browser/dirty-diff/content-lines.d.ts +2 -0
  6. package/lib/browser/dirty-diff/content-lines.d.ts.map +1 -1
  7. package/lib/browser/dirty-diff/content-lines.js +7 -0
  8. package/lib/browser/dirty-diff/content-lines.js.map +1 -1
  9. package/lib/browser/dirty-diff/diff-computer.d.ts +23 -14
  10. package/lib/browser/dirty-diff/diff-computer.d.ts.map +1 -1
  11. package/lib/browser/dirty-diff/diff-computer.js +91 -27
  12. package/lib/browser/dirty-diff/diff-computer.js.map +1 -1
  13. package/lib/browser/dirty-diff/diff-computer.spec.js +120 -52
  14. package/lib/browser/dirty-diff/diff-computer.spec.js.map +1 -1
  15. package/lib/browser/dirty-diff/dirty-diff-decorator.d.ts +5 -3
  16. package/lib/browser/dirty-diff/dirty-diff-decorator.d.ts.map +1 -1
  17. package/lib/browser/dirty-diff/dirty-diff-decorator.js +14 -7
  18. package/lib/browser/dirty-diff/dirty-diff-decorator.js.map +1 -1
  19. package/lib/browser/dirty-diff/dirty-diff-module.d.ts.map +1 -1
  20. package/lib/browser/dirty-diff/dirty-diff-module.js +9 -0
  21. package/lib/browser/dirty-diff/dirty-diff-module.js.map +1 -1
  22. package/lib/browser/dirty-diff/dirty-diff-navigator.d.ts +49 -0
  23. package/lib/browser/dirty-diff/dirty-diff-navigator.d.ts.map +1 -0
  24. package/lib/browser/dirty-diff/dirty-diff-navigator.js +292 -0
  25. package/lib/browser/dirty-diff/dirty-diff-navigator.js.map +1 -0
  26. package/lib/browser/dirty-diff/dirty-diff-widget.d.ts +47 -0
  27. package/lib/browser/dirty-diff/dirty-diff-widget.d.ts.map +1 -0
  28. package/lib/browser/dirty-diff/dirty-diff-widget.js +320 -0
  29. package/lib/browser/dirty-diff/dirty-diff-widget.js.map +1 -0
  30. package/lib/browser/scm-colors.d.ts +6 -0
  31. package/lib/browser/scm-colors.d.ts.map +1 -0
  32. package/lib/browser/scm-colors.js +25 -0
  33. package/lib/browser/scm-colors.js.map +1 -0
  34. package/lib/browser/scm-contribution.d.ts +20 -6
  35. package/lib/browser/scm-contribution.d.ts.map +1 -1
  36. package/lib/browser/scm-contribution.js +112 -22
  37. package/lib/browser/scm-contribution.js.map +1 -1
  38. package/lib/browser/scm-tree-widget.js +1 -1
  39. package/lib/browser/scm-tree-widget.js.map +1 -1
  40. package/package.json +8 -6
  41. package/src/browser/decorations/scm-decorations-service.ts +60 -36
  42. package/src/browser/dirty-diff/content-lines.ts +9 -0
  43. package/src/browser/dirty-diff/diff-computer.spec.ts +120 -52
  44. package/src/browser/dirty-diff/diff-computer.ts +88 -40
  45. package/src/browser/dirty-diff/dirty-diff-decorator.ts +17 -10
  46. package/src/browser/dirty-diff/dirty-diff-module.ts +9 -0
  47. package/src/browser/dirty-diff/dirty-diff-navigator.ts +288 -0
  48. package/src/browser/dirty-diff/dirty-diff-widget.ts +364 -0
  49. package/src/browser/scm-colors.ts +21 -0
  50. package/src/browser/scm-contribution.ts +97 -6
  51. package/src/browser/scm-tree-widget.tsx +1 -1
  52. package/src/browser/style/dirty-diff-decorator.css +2 -1
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2023 1C-Soft LLC and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.DirtyDiffController = exports.DirtyDiffNavigator = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ const core_1 = require("@theia/core");
22
+ const context_key_service_1 = require("@theia/core/lib/browser/context-key-service");
23
+ const browser_1 = require("@theia/editor/lib/browser");
24
+ const monaco_editor_1 = require("@theia/monaco/lib/browser/monaco-editor");
25
+ const diff_computer_1 = require("./diff-computer");
26
+ const dirty_diff_widget_1 = require("./dirty-diff-widget");
27
+ let DirtyDiffNavigator = class DirtyDiffNavigator {
28
+ constructor() {
29
+ this.controllers = new Map();
30
+ }
31
+ init() {
32
+ const dirtyDiffVisible = this.contextKeyService.createKey('dirtyDiffVisible', false);
33
+ this.editorManager.onActiveEditorChanged(editorWidget => {
34
+ var _a;
35
+ dirtyDiffVisible.set(editorWidget && ((_a = this.controllers.get(editorWidget.editor)) === null || _a === void 0 ? void 0 : _a.isShowingChange()));
36
+ });
37
+ this.editorManager.onCreated(editorWidget => {
38
+ const { editor } = editorWidget;
39
+ if (editor.uri.scheme !== 'file') {
40
+ return;
41
+ }
42
+ const controller = this.createController(editor);
43
+ controller.widgetFactory = props => {
44
+ var _a;
45
+ const widget = this.widgetFactory(props);
46
+ if (widget.editor === ((_a = this.editorManager.activeEditor) === null || _a === void 0 ? void 0 : _a.editor)) {
47
+ dirtyDiffVisible.set(true);
48
+ }
49
+ widget.onDidClose(() => {
50
+ var _a;
51
+ if (widget.editor === ((_a = this.editorManager.activeEditor) === null || _a === void 0 ? void 0 : _a.editor)) {
52
+ dirtyDiffVisible.set(false);
53
+ }
54
+ });
55
+ return widget;
56
+ };
57
+ this.controllers.set(editor, controller);
58
+ editorWidget.disposed.connect(() => {
59
+ this.controllers.delete(editor);
60
+ controller.dispose();
61
+ });
62
+ });
63
+ }
64
+ handleDirtyDiffUpdate(update) {
65
+ const controller = this.controllers.get(update.editor);
66
+ controller === null || controller === void 0 ? void 0 : controller.handleDirtyDiffUpdate(update);
67
+ }
68
+ canNavigate() {
69
+ var _a;
70
+ return !!((_a = this.activeController) === null || _a === void 0 ? void 0 : _a.canNavigate());
71
+ }
72
+ gotoNextChange() {
73
+ var _a;
74
+ (_a = this.activeController) === null || _a === void 0 ? void 0 : _a.gotoNextChange();
75
+ }
76
+ gotoPreviousChange() {
77
+ var _a;
78
+ (_a = this.activeController) === null || _a === void 0 ? void 0 : _a.gotoPreviousChange();
79
+ }
80
+ canShowChange() {
81
+ var _a;
82
+ return !!((_a = this.activeController) === null || _a === void 0 ? void 0 : _a.canShowChange());
83
+ }
84
+ showNextChange() {
85
+ var _a;
86
+ (_a = this.activeController) === null || _a === void 0 ? void 0 : _a.showNextChange();
87
+ }
88
+ showPreviousChange() {
89
+ var _a;
90
+ (_a = this.activeController) === null || _a === void 0 ? void 0 : _a.showPreviousChange();
91
+ }
92
+ isShowingChange() {
93
+ var _a;
94
+ return !!((_a = this.activeController) === null || _a === void 0 ? void 0 : _a.isShowingChange());
95
+ }
96
+ closeChangePeekView() {
97
+ var _a;
98
+ (_a = this.activeController) === null || _a === void 0 ? void 0 : _a.closeWidget();
99
+ }
100
+ get activeController() {
101
+ var _a;
102
+ const editor = (_a = this.editorManager.activeEditor) === null || _a === void 0 ? void 0 : _a.editor;
103
+ return editor && this.controllers.get(editor);
104
+ }
105
+ createController(editor) {
106
+ return new DirtyDiffController(editor);
107
+ }
108
+ };
109
+ (0, tslib_1.__decorate)([
110
+ (0, inversify_1.inject)(context_key_service_1.ContextKeyService),
111
+ (0, tslib_1.__metadata)("design:type", Object)
112
+ ], DirtyDiffNavigator.prototype, "contextKeyService", void 0);
113
+ (0, tslib_1.__decorate)([
114
+ (0, inversify_1.inject)(browser_1.EditorManager),
115
+ (0, tslib_1.__metadata)("design:type", browser_1.EditorManager)
116
+ ], DirtyDiffNavigator.prototype, "editorManager", void 0);
117
+ (0, tslib_1.__decorate)([
118
+ (0, inversify_1.inject)(dirty_diff_widget_1.DirtyDiffWidgetFactory),
119
+ (0, tslib_1.__metadata)("design:type", Function)
120
+ ], DirtyDiffNavigator.prototype, "widgetFactory", void 0);
121
+ (0, tslib_1.__decorate)([
122
+ (0, inversify_1.postConstruct)(),
123
+ (0, tslib_1.__metadata)("design:type", Function),
124
+ (0, tslib_1.__metadata)("design:paramtypes", []),
125
+ (0, tslib_1.__metadata)("design:returntype", void 0)
126
+ ], DirtyDiffNavigator.prototype, "init", null);
127
+ DirtyDiffNavigator = (0, tslib_1.__decorate)([
128
+ (0, inversify_1.injectable)()
129
+ ], DirtyDiffNavigator);
130
+ exports.DirtyDiffNavigator = DirtyDiffNavigator;
131
+ class DirtyDiffController {
132
+ constructor(editor) {
133
+ this.editor = editor;
134
+ this.toDispose = new core_1.DisposableCollection();
135
+ editor.onMouseDown(this.handleEditorMouseDown, this, this.toDispose);
136
+ }
137
+ dispose() {
138
+ this.closeWidget();
139
+ this.toDispose.dispose();
140
+ }
141
+ handleDirtyDiffUpdate(dirtyDiff) {
142
+ if (dirtyDiff.editor === this.editor) {
143
+ this.closeWidget();
144
+ this.dirtyDiff = dirtyDiff;
145
+ }
146
+ }
147
+ canNavigate() {
148
+ var _a;
149
+ return !!((_a = this.changes) === null || _a === void 0 ? void 0 : _a.length);
150
+ }
151
+ gotoNextChange() {
152
+ var _a;
153
+ const { editor } = this;
154
+ const index = this.findNextClosestChange(editor.cursor.line, false);
155
+ const change = (_a = this.changes) === null || _a === void 0 ? void 0 : _a[index];
156
+ if (change) {
157
+ const position = diff_computer_1.LineRange.getStartPosition(change.currentRange);
158
+ editor.cursor = position;
159
+ editor.revealPosition(position, { vertical: 'auto' });
160
+ }
161
+ }
162
+ gotoPreviousChange() {
163
+ var _a;
164
+ const { editor } = this;
165
+ const index = this.findPreviousClosestChange(editor.cursor.line, false);
166
+ const change = (_a = this.changes) === null || _a === void 0 ? void 0 : _a[index];
167
+ if (change) {
168
+ const position = diff_computer_1.LineRange.getStartPosition(change.currentRange);
169
+ editor.cursor = position;
170
+ editor.revealPosition(position, { vertical: 'auto' });
171
+ }
172
+ }
173
+ canShowChange() {
174
+ var _a;
175
+ return !!(this.widget || this.widgetFactory && this.editor instanceof monaco_editor_1.MonacoEditor && ((_a = this.changes) === null || _a === void 0 ? void 0 : _a.length) && this.previousRevisionUri);
176
+ }
177
+ showNextChange() {
178
+ var _a;
179
+ if (this.widget) {
180
+ this.widget.showNextChange();
181
+ }
182
+ else {
183
+ (_a = (this.widget = this.createWidget())) === null || _a === void 0 ? void 0 : _a.showChange(this.findNextClosestChange(this.editor.cursor.line, true));
184
+ }
185
+ }
186
+ showPreviousChange() {
187
+ var _a;
188
+ if (this.widget) {
189
+ this.widget.showPreviousChange();
190
+ }
191
+ else {
192
+ (_a = (this.widget = this.createWidget())) === null || _a === void 0 ? void 0 : _a.showChange(this.findPreviousClosestChange(this.editor.cursor.line, true));
193
+ }
194
+ }
195
+ isShowingChange() {
196
+ return !!this.widget;
197
+ }
198
+ closeWidget() {
199
+ if (this.widget) {
200
+ this.widget.dispose();
201
+ this.widget = undefined;
202
+ }
203
+ }
204
+ get changes() {
205
+ var _a;
206
+ return (_a = this.dirtyDiff) === null || _a === void 0 ? void 0 : _a.changes;
207
+ }
208
+ get previousRevisionUri() {
209
+ var _a;
210
+ return (_a = this.dirtyDiff) === null || _a === void 0 ? void 0 : _a.previousRevisionUri;
211
+ }
212
+ createWidget() {
213
+ const { widgetFactory, editor, changes, previousRevisionUri } = this;
214
+ if (widgetFactory && editor instanceof monaco_editor_1.MonacoEditor && (changes === null || changes === void 0 ? void 0 : changes.length) && previousRevisionUri) {
215
+ const widget = widgetFactory({ editor, previousRevisionUri, changes });
216
+ widget.onDidClose(() => {
217
+ this.widget = undefined;
218
+ });
219
+ return widget;
220
+ }
221
+ }
222
+ findNextClosestChange(line, inclusive) {
223
+ var _a;
224
+ const length = (_a = this.changes) === null || _a === void 0 ? void 0 : _a.length;
225
+ if (!length) {
226
+ return -1;
227
+ }
228
+ for (let i = 0; i < length; i++) {
229
+ const { currentRange } = this.changes[i];
230
+ if (inclusive) {
231
+ if (diff_computer_1.LineRange.getEndPosition(currentRange).line >= line) {
232
+ return i;
233
+ }
234
+ }
235
+ else {
236
+ if (diff_computer_1.LineRange.getStartPosition(currentRange).line > line) {
237
+ return i;
238
+ }
239
+ }
240
+ }
241
+ return 0;
242
+ }
243
+ findPreviousClosestChange(line, inclusive) {
244
+ var _a;
245
+ const length = (_a = this.changes) === null || _a === void 0 ? void 0 : _a.length;
246
+ if (!length) {
247
+ return -1;
248
+ }
249
+ for (let i = length - 1; i >= 0; i--) {
250
+ const { currentRange } = this.changes[i];
251
+ if (inclusive) {
252
+ if (diff_computer_1.LineRange.getStartPosition(currentRange).line <= line) {
253
+ return i;
254
+ }
255
+ }
256
+ else {
257
+ if (diff_computer_1.LineRange.getEndPosition(currentRange).line < line) {
258
+ return i;
259
+ }
260
+ }
261
+ }
262
+ return length - 1;
263
+ }
264
+ handleEditorMouseDown({ event, target }) {
265
+ var _a, _b;
266
+ if (event.button !== 0) {
267
+ return;
268
+ }
269
+ const { range, type, element } = target;
270
+ if (!range || type !== browser_1.MouseTargetType.GUTTER_LINE_DECORATIONS || !element || element.className.indexOf('dirty-diff-glyph') < 0) {
271
+ return;
272
+ }
273
+ const gutterOffsetX = target.detail.offsetX - element.offsetLeft;
274
+ if (gutterOffsetX < -3 || gutterOffsetX > 3) { // dirty diff decoration on hover is 6px wide
275
+ return; // to avoid colliding with folding
276
+ }
277
+ const index = this.findNextClosestChange(range.start.line, true);
278
+ if (index < 0) {
279
+ return;
280
+ }
281
+ if (index === ((_a = this.widget) === null || _a === void 0 ? void 0 : _a.currentChangeIndex)) {
282
+ this.closeWidget();
283
+ return;
284
+ }
285
+ if (!this.widget) {
286
+ this.widget = this.createWidget();
287
+ }
288
+ (_b = this.widget) === null || _b === void 0 ? void 0 : _b.showChange(index);
289
+ }
290
+ }
291
+ exports.DirtyDiffController = DirtyDiffController;
292
+ //# sourceMappingURL=dirty-diff-navigator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dirty-diff-navigator.js","sourceRoot":"","sources":["../../../src/browser/dirty-diff/dirty-diff-navigator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { Disposable, Event, MenuCommandExecutor, MenuModelRegistry, MenuPath, URI } from '@theia/core';
2
+ import { ContextKeyService } from '@theia/core/lib/browser/context-key-service';
3
+ import { MonacoEditor } from '@theia/monaco/lib/browser/monaco-editor';
4
+ import { MonacoEditorProvider } from '@theia/monaco/lib/browser/monaco-editor-provider';
5
+ import { Change } from './diff-computer';
6
+ export declare const SCM_CHANGE_TITLE_MENU: MenuPath;
7
+ /** Reserved for plugin contributions, corresponds to contribution point 'scm/change/title'. */
8
+ export declare const PLUGIN_SCM_CHANGE_TITLE_MENU: MenuPath;
9
+ export declare const DirtyDiffWidgetProps: unique symbol;
10
+ export interface DirtyDiffWidgetProps {
11
+ readonly editor: MonacoEditor;
12
+ readonly previousRevisionUri: URI;
13
+ readonly changes: readonly Change[];
14
+ }
15
+ export declare const DirtyDiffWidgetFactory: unique symbol;
16
+ export declare type DirtyDiffWidgetFactory = (props: DirtyDiffWidgetProps) => DirtyDiffWidget;
17
+ export declare class DirtyDiffWidget implements Disposable {
18
+ protected readonly props: DirtyDiffWidgetProps;
19
+ readonly editorProvider: MonacoEditorProvider;
20
+ readonly contextKeyService: ContextKeyService;
21
+ readonly menuModelRegistry: MenuModelRegistry;
22
+ readonly menuCommandExecutor: MenuCommandExecutor;
23
+ private readonly onDidCloseEmitter;
24
+ readonly onDidClose: Event<unknown>;
25
+ protected index: number;
26
+ private peekView?;
27
+ private diffEditorPromise?;
28
+ constructor(props: DirtyDiffWidgetProps, editorProvider: MonacoEditorProvider, contextKeyService: ContextKeyService, menuModelRegistry: MenuModelRegistry, menuCommandExecutor: MenuCommandExecutor);
29
+ create(): void;
30
+ get editor(): MonacoEditor;
31
+ get uri(): URI;
32
+ get previousRevisionUri(): URI;
33
+ get changes(): readonly Change[];
34
+ get currentChange(): Change | undefined;
35
+ get currentChangeIndex(): number;
36
+ showChange(index: number): void;
37
+ showNextChange(): void;
38
+ showPreviousChange(): void;
39
+ getContentWithSelectedChanges(predicate: (change: Change, index: number, changes: readonly Change[]) => boolean): Promise<string>;
40
+ dispose(): void;
41
+ protected showCurrentChange(): void;
42
+ protected computePrimaryHeading(): string;
43
+ protected computeSecondaryHeading(): string;
44
+ protected computeHeightInLines(): number;
45
+ protected checkCreated(): void;
46
+ }
47
+ //# sourceMappingURL=dirty-diff-widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dirty-diff-widget.d.ts","sourceRoot":"","sources":["../../../src/browser/dirty-diff/dirty-diff-widget.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAkB,UAAU,EAAW,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,EAAO,MAAM,aAAa,CAAC;AAErI,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAGxF,OAAO,EAAE,MAAM,EAAa,MAAM,iBAAiB,CAAC;AAIpD,eAAO,MAAM,qBAAqB,EAAE,QAAoC,CAAC;AACzE,+FAA+F;AAC/F,eAAO,MAAM,4BAA4B,EAAE,QAA2C,CAAC;AAEvF,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AACnE,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,eAAO,MAAM,sBAAsB,eAAmC,CAAC;AACvE,oBAAY,sBAAsB,GAAG,CAAC,KAAK,EAAE,oBAAoB,KAAK,eAAe,CAAC;AAEtF,qBACa,eAAgB,YAAW,UAAU;IASZ,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,oBAAoB;IAC9C,QAAQ,CAAC,cAAc,EAAE,oBAAoB;IAChD,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IAC7C,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IAC3C,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB;IAXlF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0B;IAC5D,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAgC;IACnE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAM;IAC7B,OAAO,CAAC,QAAQ,CAAC,CAAoB;IACrC,OAAO,CAAC,iBAAiB,CAAC,CAA4B;gBAGD,KAAK,EAAE,oBAAoB,EACrC,cAAc,EAAE,oBAAoB,EACvC,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EAClC,mBAAmB,EAAE,mBAAmB;IAIlF,MAAM,IAAI,IAAI;IAMd,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,GAAG,IAAI,GAAG,CAEb;IAED,IAAI,mBAAmB,IAAI,GAAG,CAE7B;IAED,IAAI,OAAO,IAAI,SAAS,MAAM,EAAE,CAE/B;IAED,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;IAED,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ/B,cAAc,IAAI,IAAI;IAUtB,kBAAkB,IAAI,IAAI;IAUpB,6BAA6B,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAQvI,OAAO,IAAI,IAAI;IAKf,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAoBnC,SAAS,CAAC,qBAAqB,IAAI,MAAM;IAIzC,SAAS,CAAC,uBAAuB,IAAI,MAAM;IAO3C,SAAS,CAAC,oBAAoB,IAAI,MAAM;IAYxC,SAAS,CAAC,YAAY,IAAI,IAAI;CAKjC"}