@namzu/deepseek 0.1.0 → 1.1.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/CHANGELOG.md +183 -0
- package/README.md +26 -9
- package/dist/client.d.ts +7 -13
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +255 -60
- package/dist/client.js.map +1 -1
- package/package.json +13 -14
- package/src/client.ts +313 -61
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,188 @@
|
|
|
1
1
|
# @namzu/deepseek
|
|
2
2
|
|
|
3
|
+
## 1.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 77242a0: Expose optional per-model input modalities through `ModelInfo`, add inline image input for DeepSeek's vision preview while refusing images on text models and documents on every DeepSeek model, and label models whose listing explicitly advertises image input in the CLI picker.
|
|
8
|
+
|
|
9
|
+
## 1.0.0
|
|
10
|
+
|
|
11
|
+
### Major Changes
|
|
12
|
+
|
|
13
|
+
- ee4fd1d: Persist provider-native reasoning state with the exact provider, model, and fallback-chain member that produced it. Same-route sessions now replay native reasoning after restart, `/resume`, and `/fork`; a model, provider, or member switch keeps portable assistant/tool history without sending foreign native reasoning metadata.
|
|
14
|
+
|
|
15
|
+
`@namzu/sdk` adds `ProviderRoute`, `AssistantMessageSource`, optional assistant source/replay fields, and the provider request/stream/response plumbing. Fallback and forced-final turns now attribute provenance and cost to the member that actually answered.
|
|
16
|
+
|
|
17
|
+
`@namzu/cli` preserves and validates the additive assistant source shape in stateless and durable history.
|
|
18
|
+
|
|
19
|
+
**What breaks in the drivers:** hand-built assistant reasoning and histories written by earlier versions do not carry a validated route-bound replay envelope, so they are no longer emitted as native `reasoning_content` or signed thinking. Their portable assistant text and tool exchanges remain available, but an upstream that requires native metadata for an old tool continuation may refuse that request; compact or start a fresh conversation before continuing such legacy history. Preserve the complete assistant message returned by new runs, including `source.replayState`. Direct callers of the exported DeepSeek `toDeepSeekMessages` converter must also pass the target `ProviderRoute` as its second argument.
|
|
20
|
+
|
|
21
|
+
### Minor Changes
|
|
22
|
+
|
|
23
|
+
- 94d3306: Add the chain-aware `reasoningEffortLevelsFor(model, thinking)` provider capability while retaining `effortLevelsFor` as a deprecated compatibility member. The four capability states now distinguish a driver with no menu, an unknown model, an explicitly unsupported model, and an exact selectable set; fallback chains expose only levels every reachable member accepts.
|
|
24
|
+
|
|
25
|
+
The TUI adds session-scoped `/effort [level|default]`, sends the selection to later main-query turns, and resets it atomically when a provider/model replacement succeeds. Failed or cancelled replacements preserve the current selection.
|
|
26
|
+
|
|
27
|
+
OpenAI publishes exact known-model menus and keeps unknown compatible-endpoint models unknown. DeepSeek explicitly publishes no supported levels. Anthropic now refuses unsupported effort levels before transport instead of silently dropping them; callers upgrading Anthropic must choose a level returned by `reasoningEffortLevelsFor()` or omit `effort` to retain the provider default.
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- 15f8ee4: Bound provider stream silence, including query-owned advisory calls and
|
|
32
|
+
RouterAgent routing decisions, compaction verifiers and model-graded eval
|
|
33
|
+
judges, to five minutes by default and abort the stalled provider transport,
|
|
34
|
+
with network-classified retry and fallback recovery where those policies
|
|
35
|
+
apply. This changes the previous default, under which a provider iterator could
|
|
36
|
+
remain silent forever. Set `streamIdleTimeoutMs: 0` on the run, agent, manual
|
|
37
|
+
compaction, verifier, or judge config to keep the old unbounded behavior, or set
|
|
38
|
+
a positive millisecond value to choose a different bound.
|
|
39
|
+
|
|
40
|
+
Queries whose caller signal is already aborted now settle as cancelled before
|
|
41
|
+
starting provider, provider-metadata, or tool work. A later cancellation also
|
|
42
|
+
settles while an optional context-window resolver remains pending, even when
|
|
43
|
+
that resolver ignores its signal. With no caller cancellation, `timeoutMs`
|
|
44
|
+
bounds the optional metadata lookup, aborts its private transport signal, and
|
|
45
|
+
falls back to the static context-window table instead of blocking the run.
|
|
46
|
+
|
|
47
|
+
The OpenRouter context-window lookup now forwards cancellation to its model-list
|
|
48
|
+
transport. Only fulfilled listings are cached, so cancelling one concurrent
|
|
49
|
+
query cannot abort another query's shared metadata request or force that query
|
|
50
|
+
onto the static context-window table.
|
|
51
|
+
|
|
52
|
+
`runExperiment({ timeoutMs })` now applies one validated wall-clock deadline to
|
|
53
|
+
both case execution and scoring. Scorers receive its optional cancellation
|
|
54
|
+
signal; a non-cooperative scorer is detached, and `judgeScorer` forwards the
|
|
55
|
+
signal to its bounded provider transport. Values outside the positive platform
|
|
56
|
+
timer range are refused before a case starts; omit the field for the prior
|
|
57
|
+
unbounded case behavior.
|
|
58
|
+
|
|
59
|
+
Compaction verification inside a query now carries the run cancellation cause
|
|
60
|
+
to its provider transport without placing a second idle timer around retry and
|
|
61
|
+
fallback. Public `buildVerifiedSummary`, `compactNow`, and `compactRegion`
|
|
62
|
+
calls bound raw provider silence themselves and accept optional `signal` and
|
|
63
|
+
`streamIdleTimeoutMs`; malformed values and pre-cancelled manual work are
|
|
64
|
+
refused before provider work or a no-op result.
|
|
65
|
+
|
|
66
|
+
HTTP embedding batches now have a 30-second whole-request default, including
|
|
67
|
+
response-body reads, where the previous default could wait forever. Set
|
|
68
|
+
`requestTimeoutMs: 0` on `HttpEmbeddingProvider` to keep the former unbounded
|
|
69
|
+
behavior. Invalid timeout values and non-positive or fractional `batchSize`
|
|
70
|
+
or `dimensions` values are refused at construction instead of silently
|
|
71
|
+
disabling the bound or entering a non-progressing batch loop. Successful HTTP
|
|
72
|
+
responses must contain exactly one unique, in-range result per input and finite
|
|
73
|
+
vectors of the configured dimension; malformed or incomplete batches are
|
|
74
|
+
refused atomically instead of reaching ingestion with missing embeddings.
|
|
75
|
+
|
|
76
|
+
Public RAG operations accept optional cancellation context. The shipped
|
|
77
|
+
`knowledge_search` tool forwards its run-owned signal through
|
|
78
|
+
`KnowledgeBase`, retrieval or ingestion, and the embedding provider. The HTTP
|
|
79
|
+
provider preserves the caller's exact cancellation reason while aborting only
|
|
80
|
+
its private fetch transport. Custom embedding providers receive the signal as
|
|
81
|
+
a cooperative request; callers still own their wait boundary if a custom
|
|
82
|
+
implementation ignores it. Default retrieval and ingestion recheck authority
|
|
83
|
+
after that custom call settles, so a late result cannot start a vector search
|
|
84
|
+
or persist chunks after cancellation. `VectorStore.search` and `upsert` now
|
|
85
|
+
receive the same optional operation context. The default pipelines also race
|
|
86
|
+
those store promises against cancellation, so a non-cooperative custom store
|
|
87
|
+
cannot leave the public query or ingestion call pending forever.
|
|
88
|
+
|
|
89
|
+
A2A agent-card discovery now has a 30-second whole fetch-and-body default and
|
|
90
|
+
accepts an optional caller signal and `timeoutMs`; set `timeoutMs: 0` to retain
|
|
91
|
+
the former unbounded behavior. `A2ADelegate.timeoutMs` now starts before
|
|
92
|
+
`message/send` and bounds the whole delegation instead of polling only. A
|
|
93
|
+
pre-cancelled dispatch starts no remote work, pending fetch and body promises
|
|
94
|
+
cannot hold `waitForTask`, and caller cancellation preserves its exact cause on
|
|
95
|
+
the private transport. Poll and delegation timers are validated at
|
|
96
|
+
construction. Once a safe task id exists, cancellation or timeout sends one
|
|
97
|
+
independently bounded `tasks/cancel`; during initial task creation the client
|
|
98
|
+
keeps a short cleanup grace and explicitly reports an unknown remote outcome if
|
|
99
|
+
the peer never returns an addressable id. Poll replies are bound to that initial
|
|
100
|
+
id, and transport or protocol failures after it is known make the same bounded
|
|
101
|
+
cleanup attempt before the original failure is returned. An `input-required`
|
|
102
|
+
task is also bounded-cancelled before the delegate reports that it cannot
|
|
103
|
+
supply the requested input.
|
|
104
|
+
|
|
105
|
+
Connector execution now carries optional operation authority through the
|
|
106
|
+
manager, every connector-tool adapter, real query runs, tenant/environment
|
|
107
|
+
facades, health checks, and `MCPConnectorBridge.callTool`. Custom connectors
|
|
108
|
+
receive the signal; if they ignore it, the manager settles with an honest
|
|
109
|
+
unknown remote outcome and rejects a late success that does not identify a
|
|
110
|
+
received response. A tenant call cancelled before admission no longer spends a
|
|
111
|
+
rate-limit slot.
|
|
112
|
+
|
|
113
|
+
`HttpConnector` and `WebhookConnector` now apply one validated 30-second
|
|
114
|
+
fetch-and-body deadline and a streaming 2 MiB response limit by default. Set
|
|
115
|
+
positive `timeoutMs` and `maxResponseBytes` values to choose different bounds.
|
|
116
|
+
Cancellation, deadline, or response-size failure aborts only the private
|
|
117
|
+
transport/body reader and preserves the caller's exact cause. Result metadata
|
|
118
|
+
distinguishes `not_started`, `unknown`, and `response_received`, includes retry
|
|
119
|
+
safety, and keeps a received status visible when its body is unavailable.
|
|
120
|
+
|
|
121
|
+
Dynamic HTTP paths and webhook URL overrides must remain on the configured
|
|
122
|
+
origin. Model-authored routing headers are refused, redirects are not followed,
|
|
123
|
+
and 3xx responses are no longer reported as success. Configure a separate
|
|
124
|
+
connector instance for each authorized origin; callers that previously used a
|
|
125
|
+
cross-origin webhook override must migrate to that instance.
|
|
126
|
+
|
|
127
|
+
`GuardedFetchProvider` now applies one validated 30-second deadline across DNS
|
|
128
|
+
resolution, every manually admitted redirect fetch, and the final response
|
|
129
|
+
body, while preserving a caller's exact cancellation cause on a private
|
|
130
|
+
transport signal. Its 2 MiB default response cap is enforced from streamed
|
|
131
|
+
bytes rather than after `response.text()` allocates the whole body; overflow
|
|
132
|
+
cancels the reader and returns a valid UTF-8 prefix. Redirect bodies are
|
|
133
|
+
cancelled when abandoned, and a spent redirect budget causes no DNS lookup for
|
|
134
|
+
the next target. Set positive `timeoutMs` and `maxBytes` values or a
|
|
135
|
+
non-negative integer `maxRedirects` to choose other bounds. Custom
|
|
136
|
+
`GuardedFetchConfig.resolve` functions may now accept the operation signal as
|
|
137
|
+
a second argument. IPv4-mapped IPv6 literals are canonicalized back to their
|
|
138
|
+
IPv4 address before range checks, closing the hexadecimal mapped loopback and
|
|
139
|
+
link-local bypass; the full IPv6 link-local and multicast ranges are also
|
|
140
|
+
refused.
|
|
141
|
+
|
|
142
|
+
MCP request methods now accept optional cancellation authority, and generated
|
|
143
|
+
MCP tool and prompt adapters forward the run-owned tool signal. A pre-aborted
|
|
144
|
+
request starts no transport work; a pending request preserves the caller's
|
|
145
|
+
exact cause, aborts a private transport, removes its correlated pending id, and
|
|
146
|
+
makes a one-second best-effort `notifications/cancelled` attempt. The
|
|
147
|
+
notification does not prove that an already-started remote side effect stopped.
|
|
148
|
+
Paged list calls recheck the same signal before each page.
|
|
149
|
+
|
|
150
|
+
`MCPClient.requestTimeoutMs` and HTTP MCP transport `timeoutMs` values must now
|
|
151
|
+
be positive platform-range integers. A shorter transport deadline remains a
|
|
152
|
+
request-timeout terminal and emits the same correlated cancellation. HTTP
|
|
153
|
+
fetches and response-body reads share operation authority; disconnect owns
|
|
154
|
+
active requests and cancellation cleanup. Reconnects fence late POST responses
|
|
155
|
+
and SSE batches from prior generations, clear Streamable session state, and
|
|
156
|
+
accept session ids only from successful `initialize` responses. Per-send
|
|
157
|
+
failure no longer marks a Streamable client connection-wide errored or rejects
|
|
158
|
+
unrelated concurrent calls. `MCPTransport.send` now accepts optional
|
|
159
|
+
`MCPTransportSendOptions`; custom transports should refuse pre-aborted work and
|
|
160
|
+
stop their per-send I/O when its signal fires.
|
|
161
|
+
|
|
162
|
+
Provider model listings and credential probes now accept optional cancellation
|
|
163
|
+
signals. Retry, fallback, stream-idle and instrumentation decorators preserve
|
|
164
|
+
that authority, and every bundled CLI driver forwards it to the underlying
|
|
165
|
+
transport where supported or refuses a result that arrived after cancellation.
|
|
166
|
+
Existing zero-argument provider implementations remain valid.
|
|
167
|
+
|
|
168
|
+
The interactive provider picker now cancels model discovery, credential checks
|
|
169
|
+
and subscription sign-in when the operator backs out, supersedes the work, or
|
|
170
|
+
leaves the screen. Late results cannot reopen an old model step, accept a
|
|
171
|
+
credential, re-probe the application, or persist a subscription credential
|
|
172
|
+
after cancellation. Model listing and credential probing both settle after a
|
|
173
|
+
three-second bound even when a custom provider ignores its signal.
|
|
174
|
+
|
|
175
|
+
Between-turn and durable-resume subscription refreshes now settle on caller
|
|
176
|
+
cancellation and apply one 30-second bound across the token request and response
|
|
177
|
+
body. Refreshes in one session are serialized and re-read their source at the
|
|
178
|
+
head of the queue, preventing a later stale caller from downgrading a token
|
|
179
|
+
published by an earlier one. Namzu's credential file uses an exact conditional
|
|
180
|
+
replacement under a cross-process, atomically published lock; an external
|
|
181
|
+
rotation or logout wins, and an uncertain publication refuses instead of using
|
|
182
|
+
an uncommitted refresh. Borrowed macOS Keychain credentials are read-only: a
|
|
183
|
+
changed or removed entry wins, and a successful refresh of an unchanged entry
|
|
184
|
+
remains session-local.
|
|
185
|
+
|
|
3
186
|
## 0.1.0
|
|
4
187
|
|
|
5
188
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -3,10 +3,10 @@ type: Reference
|
|
|
3
3
|
title: "@namzu/deepseek"
|
|
4
4
|
description: >-
|
|
5
5
|
The DeepSeek model driver for the Namzu agent kernel. Chat Completions with
|
|
6
|
-
streaming
|
|
7
|
-
blocks in both directions.
|
|
6
|
+
streaming, tool use and inline image input, with thinking mode mapped onto
|
|
7
|
+
the kernel's reasoning blocks in both directions.
|
|
8
8
|
tags: [readme, package, provider, deepseek]
|
|
9
|
-
timestamp: 2026-08-
|
|
9
|
+
timestamp: 2026-08-20T00:00:00Z
|
|
10
10
|
status: active
|
|
11
11
|
diataxis: reference
|
|
12
12
|
-->
|
|
@@ -21,7 +21,7 @@ diataxis: reference
|
|
|
21
21
|
[](https://github.com/cogitave/namzu/actions/workflows/ci.yml)
|
|
22
22
|
[](https://github.com/cogitave/namzu/blob/main/LICENSE.md)
|
|
23
23
|
|
|
24
|
-
[Install](#install) · [Usage](#usage) · [Thinking mode](#thinking-mode) · [Documentation](#documentation)
|
|
24
|
+
[Install](#install) · [Usage](#usage) · [Image input](#image-input) · [Thinking mode](#thinking-mode) · [Documentation](#documentation)
|
|
25
25
|
|
|
26
26
|
</div>
|
|
27
27
|
|
|
@@ -63,15 +63,32 @@ for await (const chunk of provider.chatStream({
|
|
|
63
63
|
}
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
`deepseek-
|
|
66
|
+
The built-in catalogue offers `deepseek-v4-flash`, `deepseek-v4-pro`, and
|
|
67
|
+
`deepseek-v4-flash-vision-exp`. `deepseek-chat` and `deepseek-reasoner` were
|
|
68
|
+
discontinued on 2026-07-24 and are not aliases.
|
|
69
|
+
|
|
70
|
+
## Image input
|
|
71
|
+
|
|
72
|
+
Only `deepseek-v4-flash-vision-exp` accepts images. User attachments are sent
|
|
73
|
+
as ordered `image_url` data-URL parts. Images returned by tools keep their
|
|
74
|
+
`role: "tool"` result and follow it in a separate user image message, so the
|
|
75
|
+
tool-call/result sequence remains valid. PNG, JPEG, WebP and GIF are accepted.
|
|
76
|
+
|
|
77
|
+
The SDK's accumulated request-rich-content budget still applies before this
|
|
78
|
+
projection and leaves durable `Run.messages` unchanged. This driver currently
|
|
79
|
+
uses inline base64 only; it does not upload through the Files API or claim to
|
|
80
|
+
normalize or decode caller-supplied image bytes. Documents, unresolved stored
|
|
81
|
+
refs, unsupported image types, and images sent to either text model are refused
|
|
82
|
+
before transport.
|
|
68
83
|
|
|
69
84
|
## Thinking mode
|
|
70
85
|
|
|
71
86
|
**Thinking is on by default** — the vendor's default, not this driver's. The
|
|
72
87
|
chain of thought arrives as `delta.reasoning` fragments, the same channel
|
|
73
|
-
`@namzu/anthropic` uses
|
|
74
|
-
|
|
88
|
+
`@namzu/anthropic` uses. The kernel persists it with versioned adapter state and
|
|
89
|
+
the exact provider/model/fallback route, so the same configured route replays it
|
|
90
|
+
after restart or `/resume`. A model, provider, or chain-member switch keeps the
|
|
91
|
+
portable assistant/tool history and omits the foreign native reasoning field.
|
|
75
92
|
|
|
76
93
|
Turn it off per call with `thinking: { type: 'disabled' }`.
|
|
77
94
|
|
|
@@ -81,7 +98,7 @@ is on. Both refusals, and how to opt out, are in the documentation below.
|
|
|
81
98
|
|
|
82
99
|
## Documentation
|
|
83
100
|
|
|
84
|
-
- [The DeepSeek driver](https://github.com/cogitave/namzu/blob/main/docs/providers/deepseek.md) — thinking mode, reasoning replay, what this wire refuses, and why it carries no price rows
|
|
101
|
+
- [The DeepSeek driver](https://github.com/cogitave/namzu/blob/main/docs/providers/deepseek.md) — image input, thinking mode, reasoning replay, what this wire refuses, and why it carries no price rows
|
|
85
102
|
- [Namzu docs](https://github.com/cogitave/namzu/tree/main/docs)
|
|
86
103
|
|
|
87
104
|
## License
|
package/dist/client.d.ts
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
import type { ChatCompletionParams, LLMProvider, ModelInfo, ProviderCapabilities, StreamChunk, ThinkingConfig } from '@namzu/sdk';
|
|
1
|
+
import type { ChatCompletionParams, LLMProvider, ModelInfo, ProviderCapabilities, ProviderRoute, ReasoningEffort, StreamChunk, ThinkingConfig } from '@namzu/sdk';
|
|
2
2
|
import type { ChatCompletionMessageParam, ChatCompletionTool } from 'openai/resources/chat/completions';
|
|
3
3
|
import type { DeepSeekConfig } from './types.js';
|
|
4
|
-
/**
|
|
5
|
-
* No vision, no documents.
|
|
6
|
-
*
|
|
7
|
-
* The wire is OpenAI's Chat Completions, which has `image_url` content parts —
|
|
8
|
-
* but the models behind this endpoint are text-only, and a capability set is a
|
|
9
|
-
* claim about what a call will actually do, not about what the request format
|
|
10
|
-
* can express. Claiming vision here would route an image-bearing run to a
|
|
11
|
-
* driver that sends the image and gets prose about nothing.
|
|
12
|
-
*/
|
|
4
|
+
/** Driver-level mapping capabilities; model input support is listed separately. */
|
|
13
5
|
export declare const DEEPSEEK_CAPABILITIES: ProviderCapabilities;
|
|
14
6
|
/**
|
|
15
7
|
* Is thinking on for this call?
|
|
@@ -49,7 +41,7 @@ export declare function assertSamplingUsable(params: ChatCompletionParams, mode:
|
|
|
49
41
|
* Completions and says so.
|
|
50
42
|
*/
|
|
51
43
|
export declare function assertEffortUnsupported(params: ChatCompletionParams): void;
|
|
52
|
-
export declare function toDeepSeekMessages(messages: ChatCompletionParams['messages']): ChatCompletionMessageParam[];
|
|
44
|
+
export declare function toDeepSeekMessages(messages: ChatCompletionParams['messages'], targetRoute: ProviderRoute): ChatCompletionMessageParam[];
|
|
53
45
|
export declare function toDeepSeekTools(params: ChatCompletionParams): ChatCompletionTool[] | undefined;
|
|
54
46
|
export declare class DeepSeekProvider implements LLMProvider {
|
|
55
47
|
readonly id = "deepseek";
|
|
@@ -60,9 +52,11 @@ export declare class DeepSeekProvider implements LLMProvider {
|
|
|
60
52
|
private samplingMode;
|
|
61
53
|
constructor(config: DeepSeekConfig);
|
|
62
54
|
private resolveModel;
|
|
55
|
+
/** This Chat Completions endpoint explicitly carries no effort control. */
|
|
56
|
+
reasoningEffortLevelsFor(_model: string): readonly ReasoningEffort[];
|
|
63
57
|
chatStream(params: ChatCompletionParams): AsyncIterable<StreamChunk>;
|
|
64
|
-
probeCredential(): Promise<void>;
|
|
65
|
-
listModels(): Promise<ModelInfo[]>;
|
|
58
|
+
probeCredential(signal?: AbortSignal): Promise<void>;
|
|
59
|
+
listModels(signal?: AbortSignal): Promise<ModelInfo[]>;
|
|
66
60
|
healthCheck(): Promise<boolean>;
|
|
67
61
|
}
|
|
68
62
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,oBAAoB,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,oBAAoB,EAGpB,WAAW,EACX,SAAS,EAET,oBAAoB,EACpB,aAAa,EAEb,eAAe,EACf,WAAW,EACX,cAAc,EAId,MAAM,YAAY,CAAA;AAUnB,OAAO,KAAK,EACX,0BAA0B,EAC1B,kBAAkB,EAElB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,EAAE,oBAMnC,CAAA;AAoGD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,GAAG,OAAO,CAE7E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GACvB,IAAI,CAQN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAK1E;AAuGD,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,oBAAoB,CAAC,UAAU,CAAC,EAC1C,WAAW,EAAE,aAAa,GACxB,0BAA0B,EAAE,CA6E9B;AA0ED,wBAAgB,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,kBAAkB,EAAE,GAAG,SAAS,CAe9F;AAED,qBAAa,gBAAiB,YAAW,WAAW;IACnD,QAAQ,CAAC,EAAE,cAAa;IACxB,QAAQ,CAAC,IAAI,cAAa;IAC1B,QAAQ,CAAC,YAAY,uBAAwB;IAE7C,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,YAAY,CAAC,CAAQ;IAC7B,OAAO,CAAC,YAAY,CAAqB;gBAE7B,MAAM,EAAE,cAAc;IAmBlC,OAAO,CAAC,YAAY;IAUpB,2EAA2E;IAC3E,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE;IAI7D,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,aAAa,CAAC,WAAW,CAAC;IA6KrE,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAyBtD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAQrC"}
|