@tarquinen/opencode-dcp 1.0.4 → 1.1.0-beta.2
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/README.md +68 -43
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +47 -17
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +20 -7
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +320 -158
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +3 -0
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/logger.d.ts +17 -0
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +90 -7
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/messages/prune.d.ts.map +1 -1
- package/dist/lib/messages/prune.js +90 -29
- package/dist/lib/messages/prune.js.map +1 -1
- package/dist/lib/messages/utils.js +7 -7
- package/dist/lib/model-selector.d.ts +3 -3
- package/dist/lib/model-selector.d.ts.map +1 -1
- package/dist/lib/model-selector.js +34 -34
- package/dist/lib/model-selector.js.map +1 -1
- package/dist/lib/prompt.d.ts.map +1 -1
- package/dist/lib/prompt.js +37 -25
- package/dist/lib/prompt.js.map +1 -1
- package/dist/lib/prompts/discard-tool-spec.txt +56 -0
- package/dist/lib/prompts/extract-tool-spec.txt +79 -0
- package/dist/lib/prompts/nudge/nudge-both.txt +10 -0
- package/dist/lib/prompts/nudge/nudge-discard.txt +9 -0
- package/dist/lib/prompts/nudge/nudge-extract.txt +9 -0
- package/dist/lib/prompts/{synthetic.txt → system/system-prompt-both.txt} +23 -13
- package/dist/lib/prompts/system/system-prompt-discard.txt +49 -0
- package/dist/lib/prompts/system/system-prompt-extract.txt +49 -0
- package/dist/lib/shared-utils.d.ts.map +1 -1
- package/dist/lib/shared-utils.js +1 -1
- package/dist/lib/shared-utils.js.map +1 -1
- package/dist/lib/state/persistence.d.ts.map +1 -1
- package/dist/lib/state/persistence.js +4 -7
- package/dist/lib/state/persistence.js.map +1 -1
- package/dist/lib/state/state.d.ts +1 -0
- package/dist/lib/state/state.d.ts.map +1 -1
- package/dist/lib/state/state.js +26 -6
- package/dist/lib/state/state.js.map +1 -1
- package/dist/lib/state/tool-cache.d.ts.map +1 -1
- package/dist/lib/state/tool-cache.js +24 -10
- package/dist/lib/state/tool-cache.js.map +1 -1
- package/dist/lib/state/types.d.ts +2 -0
- package/dist/lib/state/types.d.ts.map +1 -1
- package/dist/lib/strategies/deduplication.js +4 -4
- package/dist/lib/strategies/deduplication.js.map +1 -1
- package/dist/lib/strategies/index.d.ts +1 -1
- package/dist/lib/strategies/index.d.ts.map +1 -1
- package/dist/lib/strategies/index.js +1 -1
- package/dist/lib/strategies/index.js.map +1 -1
- package/dist/lib/strategies/on-idle.d.ts.map +1 -1
- package/dist/lib/strategies/on-idle.js +25 -24
- package/dist/lib/strategies/on-idle.js.map +1 -1
- package/dist/lib/strategies/supersede-writes.js +4 -4
- package/dist/lib/strategies/supersede-writes.js.map +1 -1
- package/dist/lib/strategies/{prune-tool.d.ts → tools.d.ts} +3 -6
- package/dist/lib/strategies/tools.d.ts.map +1 -0
- package/dist/lib/strategies/tools.js +127 -0
- package/dist/lib/strategies/tools.js.map +1 -0
- package/dist/lib/strategies/utils.d.ts +0 -1
- package/dist/lib/strategies/utils.d.ts.map +1 -1
- package/dist/lib/strategies/utils.js +20 -10
- package/dist/lib/strategies/utils.js.map +1 -1
- package/dist/lib/ui/notification.d.ts +1 -0
- package/dist/lib/ui/notification.d.ts.map +1 -1
- package/dist/lib/ui/notification.js +44 -20
- package/dist/lib/ui/notification.js.map +1 -1
- package/dist/lib/ui/utils.d.ts.map +1 -1
- package/dist/lib/ui/utils.js +9 -9
- package/dist/lib/ui/utils.js.map +1 -1
- package/package.json +61 -58
- package/dist/lib/prompts/nudge.txt +0 -10
- package/dist/lib/prompts/tool.txt +0 -72
- package/dist/lib/strategies/prune-tool.d.ts.map +0 -1
- package/dist/lib/strategies/prune-tool.js +0 -88
- package/dist/lib/strategies/prune-tool.js.map +0 -1
- /package/dist/lib/prompts/{pruning.txt → on-idle-analysis.txt} +0 -0
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ Add to your OpenCode config:
|
|
|
13
13
|
```jsonc
|
|
14
14
|
// opencode.jsonc
|
|
15
15
|
{
|
|
16
|
-
|
|
16
|
+
"plugin": ["@tarquinen/opencode-dcp@latest"],
|
|
17
17
|
}
|
|
18
18
|
```
|
|
19
19
|
|
|
@@ -29,7 +29,9 @@ DCP uses multiple strategies to reduce context size:
|
|
|
29
29
|
|
|
30
30
|
**Supersede Writes** — Prunes write tool inputs for files that have subsequently been read. When a file is written and later read, the original write content becomes redundant since the current file state is captured in the read result. Runs automatically on every request with zero LLM cost.
|
|
31
31
|
|
|
32
|
-
**
|
|
32
|
+
**Discard Tool** — Exposes a `discard` tool that the AI can call to remove completed or noisy tool outputs from context. Use this for task completion cleanup and removing irrelevant outputs.
|
|
33
|
+
|
|
34
|
+
**Extract Tool** — Exposes an `extract` tool that the AI can call to distill valuable context into concise summaries before removing the raw outputs. Use this when you need to preserve key findings while reducing context size.
|
|
33
35
|
|
|
34
36
|
**On Idle Analysis** — Uses a language model to semantically analyze conversation context during idle periods and identify tool outputs that are no longer relevant.
|
|
35
37
|
|
|
@@ -54,59 +56,82 @@ DCP uses its own config file:
|
|
|
54
56
|
|
|
55
57
|
```jsonc
|
|
56
58
|
{
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
"enabled": true,
|
|
68
|
-
// Additional tools to protect from pruning
|
|
69
|
-
"protectedTools": []
|
|
59
|
+
// Enable or disable the plugin
|
|
60
|
+
"enabled": true,
|
|
61
|
+
// Enable debug logging to ~/.config/opencode/logs/dcp/
|
|
62
|
+
"debug": false,
|
|
63
|
+
// Notification display: "off", "minimal", or "detailed"
|
|
64
|
+
"pruneNotification": "detailed",
|
|
65
|
+
// Protect from pruning for <turns> message turns
|
|
66
|
+
"turnProtection": {
|
|
67
|
+
"enabled": false,
|
|
68
|
+
"turns": 4,
|
|
70
69
|
},
|
|
71
|
-
//
|
|
72
|
-
"
|
|
73
|
-
|
|
70
|
+
// LLM-driven context pruning tools
|
|
71
|
+
"tools": {
|
|
72
|
+
// Shared settings for all prune tools
|
|
73
|
+
"settings": {
|
|
74
|
+
// Nudge the LLM to use prune tools (every <nudgeFrequency> tool results)
|
|
75
|
+
"nudgeEnabled": true,
|
|
76
|
+
"nudgeFrequency": 10,
|
|
77
|
+
// Additional tools to protect from pruning
|
|
78
|
+
"protectedTools": [],
|
|
79
|
+
},
|
|
80
|
+
// Removes tool content from context without preservation (for completed tasks or noise)
|
|
81
|
+
"discard": {
|
|
82
|
+
"enabled": true,
|
|
83
|
+
},
|
|
84
|
+
// Distills key findings into preserved knowledge before removing raw content
|
|
85
|
+
"extract": {
|
|
86
|
+
"enabled": true,
|
|
87
|
+
// Show distillation content as an ignored message notification
|
|
88
|
+
"showDistillation": false,
|
|
89
|
+
},
|
|
74
90
|
},
|
|
75
|
-
//
|
|
76
|
-
"
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
91
|
+
// Automatic pruning strategies
|
|
92
|
+
"strategies": {
|
|
93
|
+
// Remove duplicate tool calls (same tool with same arguments)
|
|
94
|
+
"deduplication": {
|
|
95
|
+
"enabled": true,
|
|
96
|
+
// Additional tools to protect from pruning
|
|
97
|
+
"protectedTools": [],
|
|
98
|
+
},
|
|
99
|
+
// Prune write tool inputs when the file has been subsequently read
|
|
100
|
+
"supersedeWrites": {
|
|
101
|
+
"enabled": true,
|
|
102
|
+
},
|
|
103
|
+
// (Legacy) Run an LLM to analyze what tool calls are no longer relevant on idle
|
|
104
|
+
"onIdle": {
|
|
105
|
+
"enabled": false,
|
|
106
|
+
// Additional tools to protect from pruning
|
|
107
|
+
"protectedTools": [],
|
|
108
|
+
// Override model for analysis (format: "provider/model")
|
|
109
|
+
// "model": "anthropic/claude-haiku-4-5",
|
|
110
|
+
// Show toast notifications when model selection fails
|
|
111
|
+
"showModelErrorToasts": true,
|
|
112
|
+
// When true, fallback models are not permitted
|
|
113
|
+
"strictModelSelection": false,
|
|
114
|
+
},
|
|
85
115
|
},
|
|
86
|
-
// (Legacy) Run an LLM to analyze what tool calls are no longer relevant on idle
|
|
87
|
-
"onIdle": {
|
|
88
|
-
"enabled": false,
|
|
89
|
-
// Additional tools to protect from pruning
|
|
90
|
-
"protectedTools": [],
|
|
91
|
-
// Override model for analysis (format: "provider/model")
|
|
92
|
-
// "model": "anthropic/claude-haiku-4-5",
|
|
93
|
-
// Show toast notifications when model selection fails
|
|
94
|
-
"showModelErrorToasts": true,
|
|
95
|
-
// When true, fallback models are not permitted
|
|
96
|
-
"strictModelSelection": false
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
116
|
}
|
|
100
117
|
```
|
|
101
118
|
|
|
102
119
|
</details>
|
|
103
120
|
|
|
121
|
+
### Turn Protection
|
|
122
|
+
|
|
123
|
+
When enabled, turn protection prevents tool outputs from being pruned for a configurable number of message turns. This gives the AI time to reference recent tool outputs before they become prunable. Applies to both `discard` and `extract` tools, as well as automatic strategies.
|
|
124
|
+
|
|
104
125
|
### Protected Tools
|
|
105
126
|
|
|
106
127
|
By default, these tools are always protected from pruning across all strategies:
|
|
107
|
-
`task`, `todowrite`, `todoread`, `
|
|
128
|
+
`task`, `todowrite`, `todoread`, `discard`, `extract`, `batch`
|
|
129
|
+
|
|
130
|
+
The `protectedTools` arrays in each section add to this default list:
|
|
108
131
|
|
|
109
|
-
|
|
132
|
+
- `tools.settings.protectedTools` — Protects tools from the `discard` and `extract` tools
|
|
133
|
+
- `strategies.deduplication.protectedTools` — Protects tools from deduplication
|
|
134
|
+
- `strategies.onIdle.protectedTools` — Protects tools from on-idle analysis
|
|
110
135
|
|
|
111
136
|
### Config Precedence
|
|
112
137
|
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAQjD,QAAA,MAAM,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAQjD,QAAA,MAAM,MAAM,EAAE,MAuFK,CAAA;AAEnB,eAAe,MAAM,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { getConfig } from "./lib/config";
|
|
|
2
2
|
import { Logger } from "./lib/logger";
|
|
3
3
|
import { loadPrompt } from "./lib/prompt";
|
|
4
4
|
import { createSessionState } from "./lib/state";
|
|
5
|
-
import {
|
|
5
|
+
import { createDiscardTool, createExtractTool } from "./lib/strategies";
|
|
6
6
|
import { createChatMessageTransformHandler, createEventHandler } from "./lib/hooks";
|
|
7
7
|
const plugin = (async (ctx) => {
|
|
8
8
|
const config = getConfig(ctx);
|
|
@@ -10,41 +10,71 @@ const plugin = (async (ctx) => {
|
|
|
10
10
|
return {};
|
|
11
11
|
}
|
|
12
12
|
// Suppress AI SDK warnings
|
|
13
|
-
if (typeof globalThis !==
|
|
13
|
+
if (typeof globalThis !== "undefined") {
|
|
14
|
+
;
|
|
14
15
|
globalThis.AI_SDK_LOG_WARNINGS = false;
|
|
15
16
|
}
|
|
16
|
-
// Initialize core components
|
|
17
17
|
const logger = new Logger(config.debug);
|
|
18
18
|
const state = createSessionState();
|
|
19
|
-
// Log initialization
|
|
20
19
|
logger.info("DCP initialized", {
|
|
21
20
|
strategies: config.strategies,
|
|
22
21
|
});
|
|
23
22
|
return {
|
|
24
23
|
"experimental.chat.system.transform": async (_input, output) => {
|
|
25
|
-
const
|
|
24
|
+
const discardEnabled = config.tools.discard.enabled;
|
|
25
|
+
const extractEnabled = config.tools.extract.enabled;
|
|
26
|
+
let promptName;
|
|
27
|
+
if (discardEnabled && extractEnabled) {
|
|
28
|
+
promptName = "system/system-prompt-both";
|
|
29
|
+
}
|
|
30
|
+
else if (discardEnabled) {
|
|
31
|
+
promptName = "system/system-prompt-discard";
|
|
32
|
+
}
|
|
33
|
+
else if (extractEnabled) {
|
|
34
|
+
promptName = "system/system-prompt-extract";
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const syntheticPrompt = loadPrompt(promptName);
|
|
26
40
|
output.system.push(syntheticPrompt);
|
|
27
41
|
},
|
|
28
42
|
"experimental.chat.messages.transform": createChatMessageTransformHandler(ctx.client, state, logger, config),
|
|
29
|
-
tool:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
43
|
+
tool: {
|
|
44
|
+
...(config.tools.discard.enabled && {
|
|
45
|
+
discard: createDiscardTool({
|
|
46
|
+
client: ctx.client,
|
|
47
|
+
state,
|
|
48
|
+
logger,
|
|
49
|
+
config,
|
|
50
|
+
workingDirectory: ctx.directory,
|
|
51
|
+
}),
|
|
52
|
+
}),
|
|
53
|
+
...(config.tools.extract.enabled && {
|
|
54
|
+
extract: createExtractTool({
|
|
55
|
+
client: ctx.client,
|
|
56
|
+
state,
|
|
57
|
+
logger,
|
|
58
|
+
config,
|
|
59
|
+
workingDirectory: ctx.directory,
|
|
60
|
+
}),
|
|
36
61
|
}),
|
|
37
|
-
}
|
|
62
|
+
},
|
|
38
63
|
config: async (opencodeConfig) => {
|
|
39
|
-
// Add
|
|
64
|
+
// Add enabled tools to primary_tools by mutating the opencode config
|
|
40
65
|
// This works because config is cached and passed by reference
|
|
41
|
-
|
|
66
|
+
const toolsToAdd = [];
|
|
67
|
+
if (config.tools.discard.enabled)
|
|
68
|
+
toolsToAdd.push("discard");
|
|
69
|
+
if (config.tools.extract.enabled)
|
|
70
|
+
toolsToAdd.push("extract");
|
|
71
|
+
if (toolsToAdd.length > 0) {
|
|
42
72
|
const existingPrimaryTools = opencodeConfig.experimental?.primary_tools ?? [];
|
|
43
73
|
opencodeConfig.experimental = {
|
|
44
74
|
...opencodeConfig.experimental,
|
|
45
|
-
primary_tools: [...existingPrimaryTools,
|
|
75
|
+
primary_tools: [...existingPrimaryTools, ...toolsToAdd],
|
|
46
76
|
};
|
|
47
|
-
logger.info(
|
|
77
|
+
logger.info(`Added ${toolsToAdd.map((t) => `'${t}'`).join(" and ")} to experimental.primary_tools via config mutation`);
|
|
48
78
|
}
|
|
49
79
|
},
|
|
50
80
|
event: createEventHandler(ctx.client, config, state, logger, ctx.directory),
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PluginInput } from
|
|
1
|
+
import type { PluginInput } from "@opencode-ai/plugin";
|
|
2
2
|
export interface Deduplication {
|
|
3
3
|
enabled: boolean;
|
|
4
4
|
protectedTools: string[];
|
|
@@ -10,26 +10,39 @@ export interface OnIdle {
|
|
|
10
10
|
strictModelSelection?: boolean;
|
|
11
11
|
protectedTools: string[];
|
|
12
12
|
}
|
|
13
|
-
export interface
|
|
13
|
+
export interface DiscardTool {
|
|
14
14
|
enabled: boolean;
|
|
15
|
-
frequency: number;
|
|
16
15
|
}
|
|
17
|
-
export interface
|
|
16
|
+
export interface ExtractTool {
|
|
18
17
|
enabled: boolean;
|
|
18
|
+
showDistillation: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface ToolSettings {
|
|
21
|
+
nudgeEnabled: boolean;
|
|
22
|
+
nudgeFrequency: number;
|
|
19
23
|
protectedTools: string[];
|
|
20
|
-
|
|
24
|
+
}
|
|
25
|
+
export interface Tools {
|
|
26
|
+
settings: ToolSettings;
|
|
27
|
+
discard: DiscardTool;
|
|
28
|
+
extract: ExtractTool;
|
|
21
29
|
}
|
|
22
30
|
export interface SupersedeWrites {
|
|
23
31
|
enabled: boolean;
|
|
24
32
|
}
|
|
33
|
+
export interface TurnProtection {
|
|
34
|
+
enabled: boolean;
|
|
35
|
+
turns: number;
|
|
36
|
+
}
|
|
25
37
|
export interface PluginConfig {
|
|
26
38
|
enabled: boolean;
|
|
27
39
|
debug: boolean;
|
|
28
|
-
|
|
40
|
+
pruneNotification: "off" | "minimal" | "detailed";
|
|
41
|
+
turnProtection: TurnProtection;
|
|
42
|
+
tools: Tools;
|
|
29
43
|
strategies: {
|
|
30
44
|
deduplication: Deduplication;
|
|
31
45
|
onIdle: OnIdle;
|
|
32
|
-
pruneTool: PruneTool;
|
|
33
46
|
supersedeWrites: SupersedeWrites;
|
|
34
47
|
};
|
|
35
48
|
}
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,MAAM;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,MAAM;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,gBAAgB,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,YAAY;IACzB,YAAY,EAAE,OAAO,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,KAAK;IAClB,QAAQ,EAAE,YAAY,CAAA;IACtB,OAAO,EAAE,WAAW,CAAA;IACpB,OAAO,EAAE,WAAW,CAAA;CACvB;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,iBAAiB,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,CAAA;IACjD,cAAc,EAAE,cAAc,CAAA;IAC9B,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE;QACR,aAAa,EAAE,aAAa,CAAA;QAC5B,MAAM,EAAE,MAAM,CAAA;QACd,eAAe,EAAE,eAAe,CAAA;KACnC,CAAA;CACJ;AAKD,eAAO,MAAM,iBAAiB,aAkC5B,CAAA;AAgBF,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,CAG9E;AAmiBD,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,YAAY,CA2GxD"}
|