@google/gemini-cli-core 0.15.0-nightly.20251111.51f952e7 → 0.15.0-preview.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.
- package/dist/src/code_assist/experiments/flagNames.d.ts +10 -0
- package/dist/src/code_assist/experiments/flagNames.js +10 -0
- package/dist/src/code_assist/experiments/flagNames.js.map +1 -0
- package/dist/src/config/config.d.ts +11 -1
- package/dist/src/config/config.js +91 -9
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +113 -2
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/defaultModelConfigs.js +7 -2
- package/dist/src/config/defaultModelConfigs.js.map +1 -1
- package/dist/src/core/baseLlmClient.test.js +18 -16
- package/dist/src/core/baseLlmClient.test.js.map +1 -1
- package/dist/src/core/client.d.ts +6 -4
- package/dist/src/core/client.js +25 -19
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +35 -6
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +15 -0
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +2 -2
- package/dist/src/core/geminiChat.js +3 -3
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +1 -0
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +1 -0
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/prompts.js +8 -9
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/fallback/handler.test.js +1 -0
- package/dist/src/fallback/handler.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/services/chatCompressionService.test.js +1 -0
- package/dist/src/services/chatCompressionService.test.js.map +1 -1
- package/dist/src/services/loopDetectionService.test.js +2 -0
- package/dist/src/services/loopDetectionService.test.js.map +1 -1
- package/dist/src/services/test-data/resolved-aliases.golden.json +9 -2
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +4 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +0 -2
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +2 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/loggers.test.circular.js +0 -1
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +54 -0
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/telemetryAttributes.js +1 -0
- package/dist/src/telemetry/telemetryAttributes.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +2 -0
- package/dist/src/telemetry/types.js +11 -0
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/tools/edit.test.js +1 -0
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/read-file.test.js +1 -0
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +2 -0
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/shell.js +1 -1
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +1 -1
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/smart-edit.d.ts +5 -0
- package/dist/src/tools/smart-edit.js +10 -6
- package/dist/src/tools/smart-edit.js.map +1 -1
- package/dist/src/tools/smart-edit.test.js +49 -24
- package/dist/src/tools/smart-edit.test.js.map +1 -1
- package/dist/src/tools/web-fetch.js +2 -4
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-fetch.test.js +11 -4
- package/dist/src/tools/web-fetch.test.js.map +1 -1
- package/dist/src/tools/web-search.js +1 -2
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/web-search.test.js +6 -0
- package/dist/src/tools/web-search.test.js.map +1 -1
- package/dist/src/tools/write-file.test.js +1 -0
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/utils/environmentContext.js +2 -0
- package/dist/src/utils/environmentContext.js.map +1 -1
- package/dist/src/utils/environmentContext.test.js +6 -0
- package/dist/src/utils/environmentContext.test.js.map +1 -1
- package/dist/src/utils/summarizer.d.ts +4 -2
- package/dist/src/utils/summarizer.js +6 -8
- package/dist/src/utils/summarizer.js.map +1 -1
- package/dist/src/utils/summarizer.test.js +32 -11
- package/dist/src/utils/summarizer.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/google-gemini-cli-core-0.15.0-nightly.20251107.b8eeb553.tgz +0 -0
|
@@ -7,16 +7,27 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
|
7
7
|
import { GeminiClient } from '../core/client.js';
|
|
8
8
|
import { Config } from '../config/config.js';
|
|
9
9
|
import { summarizeToolOutput, llmSummarizer, defaultSummarizer, } from './summarizer.js';
|
|
10
|
+
import { DEFAULT_GEMINI_MODEL } from '../config/models.js';
|
|
10
11
|
// Mock GeminiClient and Config constructor
|
|
11
12
|
vi.mock('../core/client.js');
|
|
12
13
|
vi.mock('../config/config.js');
|
|
13
14
|
describe('summarizers', () => {
|
|
14
15
|
let mockGeminiClient;
|
|
15
16
|
let MockConfig;
|
|
17
|
+
let mockConfigInstance;
|
|
16
18
|
const abortSignal = new AbortController().signal;
|
|
19
|
+
const mockResolvedConfig = {
|
|
20
|
+
model: 'gemini-pro',
|
|
21
|
+
generateContentConfig: {
|
|
22
|
+
maxOutputTokens: 2000,
|
|
23
|
+
},
|
|
24
|
+
};
|
|
17
25
|
beforeEach(() => {
|
|
18
26
|
MockConfig = vi.mocked(Config);
|
|
19
|
-
|
|
27
|
+
mockConfigInstance = new MockConfig('test-api-key', 'gemini-pro', false, '.', false, undefined, false, undefined, undefined, undefined);
|
|
28
|
+
mockConfigInstance.modelConfigService = {
|
|
29
|
+
getResolvedConfig: vi.fn().mockReturnValue(mockResolvedConfig),
|
|
30
|
+
};
|
|
20
31
|
mockGeminiClient = new GeminiClient(mockConfigInstance);
|
|
21
32
|
mockGeminiClient.generateContent = vi.fn();
|
|
22
33
|
vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
@@ -28,13 +39,13 @@ describe('summarizers', () => {
|
|
|
28
39
|
describe('summarizeToolOutput', () => {
|
|
29
40
|
it('should return original text if it is shorter than maxLength', async () => {
|
|
30
41
|
const shortText = 'This is a short text.';
|
|
31
|
-
const result = await summarizeToolOutput(shortText, mockGeminiClient, abortSignal
|
|
42
|
+
const result = await summarizeToolOutput(mockConfigInstance, { model: DEFAULT_GEMINI_MODEL }, shortText, mockGeminiClient, abortSignal);
|
|
32
43
|
expect(result).toBe(shortText);
|
|
33
44
|
expect(mockGeminiClient.generateContent).not.toHaveBeenCalled();
|
|
34
45
|
});
|
|
35
46
|
it('should return original text if it is empty', async () => {
|
|
36
47
|
const emptyText = '';
|
|
37
|
-
const result = await summarizeToolOutput(emptyText, mockGeminiClient, abortSignal
|
|
48
|
+
const result = await summarizeToolOutput(mockConfigInstance, { model: DEFAULT_GEMINI_MODEL }, emptyText, mockGeminiClient, abortSignal);
|
|
38
49
|
expect(result).toBe(emptyText);
|
|
39
50
|
expect(mockGeminiClient.generateContent).not.toHaveBeenCalled();
|
|
40
51
|
});
|
|
@@ -44,7 +55,7 @@ describe('summarizers', () => {
|
|
|
44
55
|
mockGeminiClient.generateContent.mockResolvedValue({
|
|
45
56
|
candidates: [{ content: { parts: [{ text: summary }] } }],
|
|
46
57
|
});
|
|
47
|
-
const result = await summarizeToolOutput(longText, mockGeminiClient, abortSignal
|
|
58
|
+
const result = await summarizeToolOutput(mockConfigInstance, { model: DEFAULT_GEMINI_MODEL }, longText, mockGeminiClient, abortSignal);
|
|
48
59
|
expect(mockGeminiClient.generateContent).toHaveBeenCalledTimes(1);
|
|
49
60
|
expect(result).toBe(summary);
|
|
50
61
|
});
|
|
@@ -52,7 +63,7 @@ describe('summarizers', () => {
|
|
|
52
63
|
const longText = 'This is a very long text.'.repeat(200);
|
|
53
64
|
const error = new Error('API Error');
|
|
54
65
|
mockGeminiClient.generateContent.mockRejectedValue(error);
|
|
55
|
-
const result = await summarizeToolOutput(longText, mockGeminiClient, abortSignal
|
|
66
|
+
const result = await summarizeToolOutput(mockConfigInstance, { model: DEFAULT_GEMINI_MODEL }, longText, mockGeminiClient, abortSignal);
|
|
56
67
|
expect(mockGeminiClient.generateContent).toHaveBeenCalledTimes(1);
|
|
57
68
|
expect(result).toBe(longText);
|
|
58
69
|
});
|
|
@@ -62,7 +73,17 @@ describe('summarizers', () => {
|
|
|
62
73
|
mockGeminiClient.generateContent.mockResolvedValue({
|
|
63
74
|
candidates: [{ content: { parts: [{ text: summary }] } }],
|
|
64
75
|
});
|
|
65
|
-
|
|
76
|
+
mockConfigInstance.modelConfigService = {
|
|
77
|
+
getResolvedConfig() {
|
|
78
|
+
return {
|
|
79
|
+
model: 'gemini-pro-limited',
|
|
80
|
+
generateContentConfig: {
|
|
81
|
+
maxOutputTokens: 1000,
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
await summarizeToolOutput(mockConfigInstance, { model: 'gemini-pro-limited' }, longText, mockGeminiClient, abortSignal);
|
|
66
87
|
const expectedPrompt = `Summarize the following tool output to be a maximum of 1000 tokens. The summary should be concise and capture the main points of the tool output.
|
|
67
88
|
|
|
68
89
|
The summarization should be done based on the content that is provided. Here are the basic rules to follow:
|
|
@@ -78,7 +99,7 @@ Return the summary string which should first contain an overall summarization of
|
|
|
78
99
|
`;
|
|
79
100
|
const calledWith = mockGeminiClient.generateContent.mock
|
|
80
101
|
.calls[0];
|
|
81
|
-
const contents = calledWith[
|
|
102
|
+
const contents = calledWith[1];
|
|
82
103
|
expect(contents[0].parts[0].text).toBe(expectedPrompt);
|
|
83
104
|
});
|
|
84
105
|
});
|
|
@@ -92,7 +113,7 @@ Return the summary string which should first contain an overall summarization of
|
|
|
92
113
|
mockGeminiClient.generateContent.mockResolvedValue({
|
|
93
114
|
candidates: [{ content: { parts: [{ text: summary }] } }],
|
|
94
115
|
});
|
|
95
|
-
const result = await llmSummarizer(toolResult, mockGeminiClient, abortSignal);
|
|
116
|
+
const result = await llmSummarizer(mockConfigInstance, toolResult, mockGeminiClient, abortSignal);
|
|
96
117
|
expect(mockGeminiClient.generateContent).toHaveBeenCalledTimes(1);
|
|
97
118
|
expect(result).toBe(summary);
|
|
98
119
|
});
|
|
@@ -106,11 +127,11 @@ Return the summary string which should first contain an overall summarization of
|
|
|
106
127
|
mockGeminiClient.generateContent.mockResolvedValue({
|
|
107
128
|
candidates: [{ content: { parts: [{ text: summary }] } }],
|
|
108
129
|
});
|
|
109
|
-
const result = await llmSummarizer(toolResult, mockGeminiClient, abortSignal);
|
|
130
|
+
const result = await llmSummarizer(mockConfigInstance, toolResult, mockGeminiClient, abortSignal);
|
|
110
131
|
expect(mockGeminiClient.generateContent).toHaveBeenCalledTimes(1);
|
|
111
132
|
const calledWith = mockGeminiClient.generateContent.mock
|
|
112
133
|
.calls[0];
|
|
113
|
-
const contents = calledWith[
|
|
134
|
+
const contents = calledWith[1];
|
|
114
135
|
expect(contents[0].parts[0].text).toContain(`"${longText}"`);
|
|
115
136
|
expect(result).toBe(summary);
|
|
116
137
|
});
|
|
@@ -121,7 +142,7 @@ Return the summary string which should first contain an overall summarization of
|
|
|
121
142
|
llmContent: { text: 'some data' },
|
|
122
143
|
returnDisplay: '',
|
|
123
144
|
};
|
|
124
|
-
const result = await defaultSummarizer(toolResult, mockGeminiClient, abortSignal);
|
|
145
|
+
const result = await defaultSummarizer(mockConfigInstance, toolResult, mockGeminiClient, abortSignal);
|
|
125
146
|
expect(result).toBe(JSON.stringify({ text: 'some data' }));
|
|
126
147
|
expect(mockGeminiClient.generateContent).not.toHaveBeenCalled();
|
|
127
148
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarizer.test.js","sourceRoot":"","sources":["../../../src/utils/summarizer.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"summarizer.test.js","sourceRoot":"","sources":["../../../src/utils/summarizer.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,2CAA2C;AAC3C,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC7B,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAE/B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,gBAA8B,CAAC;IACnC,IAAI,UAAgB,CAAC;IACrB,IAAI,kBAA0B,CAAC;IAC/B,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC;IACjD,MAAM,kBAAkB,GAAG;QACzB,KAAK,EAAE,YAAY;QACnB,qBAAqB,EAAE;YACrB,eAAe,EAAE,IAAI;SACtB;KACgC,CAAC;IAEpC,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,kBAAkB,GAAG,IAAI,UAAU,CACjC,cAAc,EACd,YAAY,EACZ,KAAK,EACL,GAAG,EACH,KAAK,EACL,SAAS,EACT,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;QACD,kBAAkB,CAAC,kBAA8B,GAAG;YACnD,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC;SAC9B,CAAC;QAEnC,gBAAgB,GAAG,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC;QACvD,gBAAgB,CAAC,eAAwB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAErD,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,KAAc,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,SAAS,GAAG,uBAAuB,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACtC,kBAAkB,EAClB,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAC/B,SAAS,EACT,gBAAgB,EAChB,WAAW,CACZ,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,SAAS,GAAG,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACtC,kBAAkB,EAClB,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAC/B,SAAS,EACT,gBAAgB,EAChB,WAAW,CACZ,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,QAAQ,GAAG,2BAA2B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,oBAAoB,CAAC;YACpC,gBAAgB,CAAC,eAAwB,CAAC,iBAAiB,CAAC;gBAC3D,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;aAC1D,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACtC,kBAAkB,EAClB,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAC/B,QAAQ,EACR,gBAAgB,EAChB,WAAW,CACZ,CAAC;YAEF,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;YAC9E,MAAM,QAAQ,GAAG,2BAA2B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YACpC,gBAAgB,CAAC,eAAwB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAEpE,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACtC,kBAAkB,EAClB,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAC/B,QAAQ,EACR,gBAAgB,EAChB,WAAW,CACZ,CAAC;YAEF,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,QAAQ,GAAG,2BAA2B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,oBAAoB,CAAC;YACpC,gBAAgB,CAAC,eAAwB,CAAC,iBAAiB,CAAC;gBAC3D,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;aAC1D,CAAC,CAAC;YACF,kBAAkB,CAAC,kBAA8B,GAAG;gBACnD,iBAAiB;oBACf,OAAO;wBACL,KAAK,EAAE,oBAAoB;wBAC3B,qBAAqB,EAAE;4BACrB,eAAe,EAAE,IAAI;yBACtB;qBACF,CAAC;gBACJ,CAAC;aACF,CAAC;YAEF,MAAM,mBAAmB,CACvB,kBAAkB,EAClB,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAC/B,QAAQ,EACR,gBAAgB,EAChB,WAAW,CACZ,CAAC;YAEF,MAAM,cAAc,GAAG;;;;;;;;;GAS1B,QAAQ;;;CAGV,CAAC;YACI,MAAM,UAAU,GAAI,gBAAgB,CAAC,eAAwB,CAAC,IAAI;iBAC/D,KAAK,CAAC,CAAC,CAAC,CAAC;YACZ,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,UAAU,GAAe;gBAC7B,UAAU,EAAE,2BAA2B,CAAC,MAAM,CAAC,GAAG,CAAC;gBACnD,aAAa,EAAE,EAAE;aAClB,CAAC;YACF,MAAM,OAAO,GAAG,oBAAoB,CAAC;YACpC,gBAAgB,CAAC,eAAwB,CAAC,iBAAiB,CAAC;gBAC3D,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;aAC1D,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,WAAW,CACZ,CAAC;YAEF,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,QAAQ,GAAG,2BAA2B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzD,MAAM,UAAU,GAAe;gBAC7B,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBAChC,aAAa,EAAE,EAAE;aAClB,CAAC;YACF,MAAM,OAAO,GAAG,oBAAoB,CAAC;YACpC,gBAAgB,CAAC,eAAwB,CAAC,iBAAiB,CAAC;gBAC3D,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;aAC1D,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,WAAW,CACZ,CAAC;YAEF,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAClE,MAAM,UAAU,GAAI,gBAAgB,CAAC,eAAwB,CAAC,IAAI;iBAC/D,KAAK,CAAC,CAAC,CAAC,CAAC;YACZ,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,UAAU,GAAe;gBAC7B,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBACjC,aAAa,EAAE,EAAE;aAClB,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,WAAW,CACZ,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|