@usequeek/app-sdk 0.4.0 → 0.5.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 +30 -0
- package/README.md +126 -10
- package/dist/delivery.d.ts +48 -0
- package/dist/delivery.d.ts.map +1 -0
- package/dist/delivery.js +46 -0
- package/dist/delivery.js.map +1 -0
- package/dist/hono.d.ts +19 -0
- package/dist/hono.d.ts.map +1 -0
- package/dist/hono.js +27 -0
- package/dist/hono.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/install-handlers.d.ts +23 -5
- package/dist/install-handlers.d.ts.map +1 -1
- package/dist/install-handlers.js +191 -156
- package/dist/install-handlers.js.map +1 -1
- package/dist/webhooks.d.ts +22 -4
- package/dist/webhooks.d.ts.map +1 -1
- package/dist/webhooks.js +94 -72
- package/dist/webhooks.js.map +1 -1
- package/package.json +10 -1
package/dist/install-handlers.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Hono } from "hono";
|
|
2
1
|
import { INSTALL_EVENT, RESYNC_EVENT, SETTINGS_EVENT, UNINSTALL_EVENT, } from "./handoff.js";
|
|
2
|
+
import { decodeBody, readHeader, toResponse, } from "./delivery.js";
|
|
3
3
|
import { MAX_TIMESTAMP_SKEW_SECONDS, verifyQueekSignatureDetailed, WEBHOOK_ID_HEADER, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_TIMESTAMP_HEADER, } from "./signatures.js";
|
|
4
4
|
/**
|
|
5
5
|
* Build the storable installation record from install `data`. Timestamps
|
|
@@ -60,179 +60,214 @@ export function saveResyncedInstallation(existing, data, nowIso = new Date().toI
|
|
|
60
60
|
tokenKid: existing.tokenKid,
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
return {
|
|
73
|
-
ok: false,
|
|
74
|
-
status: 401,
|
|
75
|
-
reason: checked.reason === "stale_timestamp" ? "stale timestamp" : "signature mismatch",
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
return { ok: true, id };
|
|
63
|
+
/**
|
|
64
|
+
* Layer 1: handle one signed install-handoff delivery (`install`,
|
|
65
|
+
* `uninstall`, or `settings`, taken from the input path's last segment)
|
|
66
|
+
* from plain data — no `Request`, no framework. Same options, same
|
|
67
|
+
* behaviour, same errors/status codes at every layer.
|
|
68
|
+
*/
|
|
69
|
+
export async function handleInstallDelivery(input, options) {
|
|
70
|
+
if ((input.method ?? "POST").toUpperCase() !== "POST") {
|
|
71
|
+
return { status: 405, body: { ok: false, error: "method_not_allowed" } };
|
|
79
72
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
73
|
+
const route = trailingSegment(input.path ?? "");
|
|
74
|
+
const rawBody = decodeBody(input.rawBody);
|
|
75
|
+
if (route === "install")
|
|
76
|
+
return installDelivery(rawBody, input.headers, options);
|
|
77
|
+
if (route === "uninstall")
|
|
78
|
+
return uninstallDelivery(rawBody, input.headers, options);
|
|
79
|
+
if (route === "settings")
|
|
80
|
+
return settingsDelivery(rawBody, input.headers, options);
|
|
81
|
+
return { status: 404, body: { ok: false, error: "unknown_route" } };
|
|
82
|
+
}
|
|
83
|
+
/** Last path segment of a pathname or full URL (query/fragment stripped, trailing slashes ignored). */
|
|
84
|
+
function trailingSegment(path) {
|
|
85
|
+
const withoutQuery = path.split("?", 1)[0] ?? "";
|
|
86
|
+
const withoutFragment = withoutQuery.split("#", 1)[0] ?? "";
|
|
87
|
+
const trimmed = withoutFragment.replace(/\/+$/, "");
|
|
88
|
+
return trimmed.slice(trimmed.lastIndexOf("/") + 1);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Layer 2: the Web-standard wrapper, built ONLY on layer 1 — reads
|
|
92
|
+
* `await request.arrayBuffer()` + headers, calls the core, builds the
|
|
93
|
+
* `Response`.
|
|
94
|
+
*/
|
|
95
|
+
export async function handleInstallRequest(request, options) {
|
|
96
|
+
return toResponse(await handleInstallDelivery({
|
|
97
|
+
rawBody: new Uint8Array(await request.arrayBuffer()),
|
|
98
|
+
headers: request.headers,
|
|
99
|
+
method: request.method,
|
|
100
|
+
path: new URL(request.url).pathname,
|
|
101
|
+
}, options));
|
|
102
|
+
}
|
|
103
|
+
async function guard(options, headers, rawBody) {
|
|
104
|
+
const id = readHeader(headers, WEBHOOK_ID_HEADER);
|
|
105
|
+
const timestamp = readHeader(headers, WEBHOOK_TIMESTAMP_HEADER);
|
|
106
|
+
const signatureHeader = readHeader(headers, WEBHOOK_SIGNATURE_HEADER);
|
|
107
|
+
if (!id || !timestamp || !signatureHeader) {
|
|
108
|
+
return { ok: false, status: 401, reason: "missing signature headers" };
|
|
109
|
+
}
|
|
110
|
+
const checked = verifyQueekSignatureDetailed({ id, timestamp, body: rawBody, signatureHeader, secret: options.appSecret }, { nowSeconds: options.nowSeconds, maxSkewSeconds: options.maxSkewSeconds ?? MAX_TIMESTAMP_SKEW_SECONDS });
|
|
111
|
+
if (!checked.ok) {
|
|
112
|
+
return {
|
|
113
|
+
ok: false,
|
|
114
|
+
status: 401,
|
|
115
|
+
reason: checked.reason === "stale_timestamp" ? "stale timestamp" : "signature mismatch",
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return { ok: true, id };
|
|
119
|
+
}
|
|
120
|
+
function parseEnvelope(rawBody) {
|
|
121
|
+
try {
|
|
122
|
+
const parsed = JSON.parse(rawBody);
|
|
123
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
88
124
|
return null;
|
|
89
|
-
|
|
125
|
+
return parsed;
|
|
90
126
|
}
|
|
91
|
-
|
|
92
|
-
return
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
127
|
+
catch {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function isInstallPayload(data) {
|
|
132
|
+
return (!!data &&
|
|
133
|
+
typeof data === "object" &&
|
|
134
|
+
typeof data.installation?.id === "string" &&
|
|
135
|
+
typeof data.api_base === "string");
|
|
136
|
+
}
|
|
137
|
+
/** Default resync apply: merge into the existing row (keeping
|
|
138
|
+
* `installedAt`, the cached token and stored values the resync omits) or
|
|
139
|
+
* store a fresh row when nothing is stored (post-outage recovery). */
|
|
140
|
+
async function applyResync(store, data) {
|
|
141
|
+
const existing = await store.getInstallation(data.installation.id);
|
|
142
|
+
await store.saveInstallation(existing
|
|
143
|
+
? saveResyncedInstallation(existing, data, new Date().toISOString())
|
|
144
|
+
: installationRecordFromInstall(data, new Date().toISOString()));
|
|
145
|
+
}
|
|
146
|
+
async function installDelivery(rawBody, headers, options) {
|
|
147
|
+
const checked = await guard(options, headers, rawBody);
|
|
148
|
+
if (!checked.ok)
|
|
149
|
+
return { status: checked.status, body: { ok: false, error: checked.reason } };
|
|
150
|
+
const envelope = parseEnvelope(rawBody);
|
|
151
|
+
if (!envelope)
|
|
152
|
+
return { status: 400, body: { ok: false, error: "invalid_envelope" } };
|
|
153
|
+
// The platform resync handoff redelivers the install-shaped data under
|
|
154
|
+
// `type: app/resync` (same signed channel, same verification): it lands
|
|
155
|
+
// here as well as on `settings` (the backend aims at `settings_url`
|
|
156
|
+
// first, falling back to `install_url`).
|
|
157
|
+
if (envelope.type !== INSTALL_EVENT && envelope.type !== RESYNC_EVENT) {
|
|
158
|
+
return { status: 400, body: { ok: false, error: "unexpected event type" } };
|
|
159
|
+
}
|
|
160
|
+
if (!isInstallPayload(envelope.data)) {
|
|
161
|
+
return { status: 400, body: { ok: false, error: "invalid install payload" } };
|
|
162
|
+
}
|
|
163
|
+
// Atomic claim on the HEADER id (never the body id): exactly one
|
|
164
|
+
// same-id delivery runs the callback.
|
|
165
|
+
if (!(await options.store.claimWebhookId(checked.id))) {
|
|
166
|
+
return { status: 409, body: { ok: false, error: "duplicate delivery" } };
|
|
167
|
+
}
|
|
168
|
+
try {
|
|
169
|
+
if (options.onInstall) {
|
|
170
|
+
// A resync envelope is install-shaped, so the install callback
|
|
171
|
+
// handles it (apps merge via `saveResyncedInstallation` there).
|
|
172
|
+
await options.onInstall(envelope);
|
|
123
173
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
174
|
+
else {
|
|
175
|
+
// A resync redelivers the install envelope for an EXISTING
|
|
176
|
+
// installation: merge idempotently (keep `installedAt` + the cached
|
|
177
|
+
// token) instead of resetting the row.
|
|
178
|
+
await applyResync(options.store, envelope.data);
|
|
128
179
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
// Non-2xx on purpose: Queek revokes the key and the merchant retries
|
|
183
|
+
// as a fresh install. The claim is released so the retry can land.
|
|
184
|
+
await options.store.releaseWebhookId(checked.id);
|
|
185
|
+
return { status: 500, body: { ok: false, error: "install_failed" } };
|
|
186
|
+
}
|
|
187
|
+
return { status: 200, body: { ok: true } };
|
|
188
|
+
}
|
|
189
|
+
async function uninstallDelivery(rawBody, headers, options) {
|
|
190
|
+
const checked = await guard(options, headers, rawBody);
|
|
191
|
+
if (!checked.ok)
|
|
192
|
+
return { status: checked.status, body: { ok: false, error: checked.reason } };
|
|
193
|
+
const envelope = parseEnvelope(rawBody);
|
|
194
|
+
if (!envelope)
|
|
195
|
+
return { status: 400, body: { ok: false, error: "invalid_envelope" } };
|
|
196
|
+
if (envelope.type !== UNINSTALL_EVENT) {
|
|
197
|
+
return { status: 400, body: { ok: false, error: "unexpected event type" } };
|
|
198
|
+
}
|
|
199
|
+
if (!(await options.store.claimWebhookId(checked.id))) {
|
|
200
|
+
return { status: 409, body: { ok: false, error: "duplicate delivery" } };
|
|
201
|
+
}
|
|
202
|
+
try {
|
|
203
|
+
if (options.onUninstall) {
|
|
204
|
+
await options.onUninstall(envelope);
|
|
141
205
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
// as a fresh install. The claim is released so the retry can land.
|
|
145
|
-
await options.store.releaseWebhookId(checked.id);
|
|
146
|
-
return c.json({ ok: false, error: "install_failed" }, 500);
|
|
206
|
+
else {
|
|
207
|
+
await options.store.deleteInstallation(envelope.data.installation.id);
|
|
147
208
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
await options.store.releaseWebhookId(checked.id);
|
|
212
|
+
return { status: 500, body: { ok: false, error: "uninstall_failed" } };
|
|
213
|
+
}
|
|
214
|
+
return { status: 200, body: { ok: true } };
|
|
215
|
+
}
|
|
216
|
+
async function settingsDelivery(rawBody, headers, options) {
|
|
217
|
+
const checked = await guard(options, headers, rawBody);
|
|
218
|
+
if (!checked.ok)
|
|
219
|
+
return { status: checked.status, body: { ok: false, error: checked.reason } };
|
|
220
|
+
const envelope = parseEnvelope(rawBody);
|
|
221
|
+
if (!envelope)
|
|
222
|
+
return { status: 400, body: { ok: false, error: "invalid_envelope" } };
|
|
223
|
+
// The platform resync handoff (`type: app/resync`) is delivered to the
|
|
224
|
+
// app's `settings_url` first: it lands here with the install-shaped
|
|
225
|
+
// data, so it takes the resync merge — never the settings callback,
|
|
226
|
+
// whose envelope shape does not fit.
|
|
227
|
+
if (envelope.type !== SETTINGS_EVENT && envelope.type !== RESYNC_EVENT) {
|
|
228
|
+
return { status: 400, body: { ok: false, error: "unexpected event type" } };
|
|
229
|
+
}
|
|
230
|
+
if (envelope.type === RESYNC_EVENT) {
|
|
231
|
+
if (!isInstallPayload(envelope.data)) {
|
|
232
|
+
return { status: 400, body: { ok: false, error: "invalid install payload" } };
|
|
160
233
|
}
|
|
161
234
|
if (!(await options.store.claimWebhookId(checked.id))) {
|
|
162
|
-
return
|
|
235
|
+
return { status: 409, body: { ok: false, error: "duplicate delivery" } };
|
|
163
236
|
}
|
|
164
237
|
try {
|
|
165
|
-
|
|
166
|
-
await options.onUninstall(envelope);
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
await options.store.deleteInstallation(envelope.data.installation.id);
|
|
170
|
-
}
|
|
238
|
+
await applyResync(options.store, envelope.data);
|
|
171
239
|
}
|
|
172
240
|
catch {
|
|
173
241
|
await options.store.releaseWebhookId(checked.id);
|
|
174
|
-
return
|
|
242
|
+
return { status: 500, body: { ok: false, error: "settings_failed" } };
|
|
175
243
|
}
|
|
176
|
-
return
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
if (!envelope)
|
|
185
|
-
return c.json({ ok: false, error: "invalid_envelope" }, 400);
|
|
186
|
-
// The platform resync handoff (`type: app/resync`) is delivered to the
|
|
187
|
-
// app's `settings_url` first: it lands here with the install-shaped
|
|
188
|
-
// data, so it takes the resync merge — never the settings callback,
|
|
189
|
-
// whose envelope shape does not fit.
|
|
190
|
-
if (envelope.type !== SETTINGS_EVENT && envelope.type !== RESYNC_EVENT) {
|
|
191
|
-
return c.json({ ok: false, error: "unexpected event type" }, 400);
|
|
244
|
+
return { status: 200, body: { ok: true } };
|
|
245
|
+
}
|
|
246
|
+
if (!(await options.store.claimWebhookId(checked.id))) {
|
|
247
|
+
return { status: 409, body: { ok: false, error: "duplicate delivery" } };
|
|
248
|
+
}
|
|
249
|
+
try {
|
|
250
|
+
if (options.onSettings) {
|
|
251
|
+
await options.onSettings(envelope);
|
|
192
252
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
if (!(await options.store.claimWebhookId(checked.id))) {
|
|
198
|
-
return c.json({ ok: false, error: "duplicate delivery" }, 409);
|
|
199
|
-
}
|
|
200
|
-
try {
|
|
201
|
-
await applyResync(envelope.data);
|
|
202
|
-
}
|
|
203
|
-
catch {
|
|
253
|
+
else {
|
|
254
|
+
const data = envelope.data;
|
|
255
|
+
const existing = await options.store.getInstallation(data.installation.id);
|
|
256
|
+
if (!existing) {
|
|
204
257
|
await options.store.releaseWebhookId(checked.id);
|
|
205
|
-
return
|
|
206
|
-
}
|
|
207
|
-
return c.json({ ok: true });
|
|
208
|
-
}
|
|
209
|
-
if (!(await options.store.claimWebhookId(checked.id))) {
|
|
210
|
-
return c.json({ ok: false, error: "duplicate delivery" }, 409);
|
|
211
|
-
}
|
|
212
|
-
try {
|
|
213
|
-
if (options.onSettings) {
|
|
214
|
-
await options.onSettings(envelope);
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
const data = envelope.data;
|
|
218
|
-
const existing = await options.store.getInstallation(data.installation.id);
|
|
219
|
-
if (!existing) {
|
|
220
|
-
await options.store.releaseWebhookId(checked.id);
|
|
221
|
-
return c.json({ ok: false, error: "unknown_installation" }, 404);
|
|
222
|
-
}
|
|
223
|
-
await options.store.saveInstallation({
|
|
224
|
-
...existing,
|
|
225
|
-
settings: data.settings,
|
|
226
|
-
updatedAt: new Date().toISOString(),
|
|
227
|
-
});
|
|
258
|
+
return { status: 404, body: { ok: false, error: "unknown_installation" } };
|
|
228
259
|
}
|
|
260
|
+
await options.store.saveInstallation({
|
|
261
|
+
...existing,
|
|
262
|
+
settings: data.settings,
|
|
263
|
+
updatedAt: new Date().toISOString(),
|
|
264
|
+
});
|
|
229
265
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
}
|
|
236
|
-
return app;
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
await options.store.releaseWebhookId(checked.id);
|
|
269
|
+
return { status: 500, body: { ok: false, error: "settings_failed" } };
|
|
270
|
+
}
|
|
271
|
+
return { status: 200, body: { ok: true } };
|
|
237
272
|
}
|
|
238
273
|
//# sourceMappingURL=install-handlers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-handlers.js","sourceRoot":"","sources":["../src/install-handlers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install-handlers.js","sourceRoot":"","sources":["../src/install-handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/webhooks.d.ts
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type CoreDelivery, type DeliveryResult } from "./delivery.js";
|
|
2
2
|
import type { InstallationRecord, InstallationStore } from "./store.js";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* queek_backend, one signed POST per installation
|
|
4
|
+
* Framework-agnostic receiver for Queek topic deliveries
|
|
5
|
+
* (`DeliverWebhookJob` in queek_backend, one signed POST per installation
|
|
6
|
+
* endpoint) in three thin layers: layer 1
|
|
7
|
+
* `handleWebhookDelivery(input, options)` takes plain data (untouched body
|
|
8
|
+
* bytes + headers) and returns a plain `{ status, body }` result — zero
|
|
9
|
+
* request/response types, so whatever request object each framework
|
|
10
|
+
* supports works; layer 2 `handleWebhookRequest(request, options)` adapts
|
|
11
|
+
* the Web standard onto layer 1; layer 3 (`@usequeek/app-sdk/hono`)
|
|
12
|
+
* adapts Hono onto layer 2.
|
|
6
13
|
*
|
|
7
14
|
* Delivery envelope: `{ id, topic, api_version: "v1", created_at, data }`
|
|
8
15
|
* with `X-Queek-Topic` echoing `topic`. Verification uses the
|
|
@@ -56,5 +63,16 @@ export interface WebhookHandlerOptions {
|
|
|
56
63
|
nowSeconds?: number;
|
|
57
64
|
maxSkewSeconds?: number;
|
|
58
65
|
}
|
|
59
|
-
|
|
66
|
+
/**
|
|
67
|
+
* Layer 1: handle one signed Queek topic delivery from plain data — no
|
|
68
|
+
* `Request`, no framework. Same options, same behaviour, same
|
|
69
|
+
* errors/status codes at every layer.
|
|
70
|
+
*/
|
|
71
|
+
export declare function handleWebhookDelivery(input: CoreDelivery, options: WebhookHandlerOptions): Promise<DeliveryResult>;
|
|
72
|
+
/**
|
|
73
|
+
* Layer 2: the Web-standard wrapper, built ONLY on layer 1 — reads
|
|
74
|
+
* `await request.arrayBuffer()` + headers, calls the core, builds the
|
|
75
|
+
* `Response`. Only `POST` is served; anything else answers 405.
|
|
76
|
+
*/
|
|
77
|
+
export declare function handleWebhookRequest(request: Request, options: WebhookHandlerOptions): Promise<Response>;
|
|
60
78
|
//# sourceMappingURL=webhooks.d.ts.map
|
package/dist/webhooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,cAAc,EAGpB,MAAM,eAAe,CAAC;AAQvB,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,MAAM,WAAW,oBAAoB,CAAC,KAAK,GAAG,OAAO;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,IAAI,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,kBAAkB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,gBAAgB,CAAC,KAAK,GAAG,OAAO,IAAI,CAC9C,QAAQ,EAAE,oBAAoB,CAAC,KAAK,CAAC,EACrC,OAAO,EAAE,qBAAqB,KAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,iBAAiB,CAAC;IACzB,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC3C,uDAAuD;IACvD,aAAa,CAAC,EAAE,CACd,QAAQ,EAAE,oBAAoB,GAAG,IAAI,EACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,KAChE,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAyCD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,cAAc,CAAC,CA2EzB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAanB"}
|