experimental-agent 0.2.3 → 0.4.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/README.md +103 -241
- package/dist/adapter-zgOel4wW.d.mts +256 -0
- package/dist/adapter-zgOel4wW.d.ts +256 -0
- package/dist/chunk-BFFNCESS.mjs +302 -0
- package/dist/chunk-C4VSUEY2.mjs +72 -0
- package/dist/chunk-GKASMIBR.mjs +50 -0
- package/dist/chunk-IV75IMEW.mjs +328 -0
- package/dist/chunk-JO3JDCH5.mjs +107 -0
- package/dist/chunk-MSTM6W3Y.mjs +99 -0
- package/dist/chunk-MSWINCCM.mjs +128 -0
- package/dist/chunk-RT72C52I.mjs +324 -0
- package/dist/chunk-ZUFJJYC4.mjs +150 -0
- package/dist/{handler-FRUPZ4LX.mjs → docker-QPCLWLYR.mjs} +3 -4
- package/dist/entry-6HYg5qqg.d.mts +36 -0
- package/dist/entry-BrWOmEK2.d.ts +36 -0
- package/dist/index.d.mts +401 -18
- package/dist/index.d.ts +401 -18
- package/dist/index.js +3396 -5500
- package/dist/index.mjs +3511 -1166
- package/dist/lifecycle-workflow-steps.d.mts +5 -0
- package/dist/lifecycle-workflow-steps.d.ts +5 -0
- package/dist/lifecycle-workflow-steps.js +263 -0
- package/dist/lifecycle-workflow-steps.mjs +9 -0
- package/dist/lifecycle-workflow.d.mts +6 -6
- package/dist/lifecycle-workflow.d.ts +6 -6
- package/dist/lifecycle-workflow.js +192 -905
- package/dist/lifecycle-workflow.mjs +3 -1
- package/dist/local-KJ3BSIFJ.mjs +8 -0
- package/dist/next/loader.js +31 -7
- package/dist/next/loader.mjs +1 -1
- package/dist/next.js +35 -8
- package/dist/next.mjs +6 -3
- package/dist/{process-manager-JDUJDYGU.mjs → process-manager-WQHAIVRB.mjs} +1 -1
- package/dist/sandbox.d.mts +6 -0
- package/dist/sandbox.d.ts +6 -0
- package/dist/sandbox.js +1070 -0
- package/dist/sandbox.mjs +19 -0
- package/dist/steps-BIsP57pm.d.mts +173 -0
- package/dist/steps-DShnXBLf.d.ts +173 -0
- package/dist/storage.d.mts +17 -0
- package/dist/storage.d.ts +17 -0
- package/dist/storage.js +368 -0
- package/dist/storage.mjs +16 -0
- package/dist/vercel-QZ6INPMV.mjs +11 -0
- package/package.json +29 -5
- package/dist/agent-workflow.d.mts +0 -30
- package/dist/agent-workflow.d.ts +0 -30
- package/dist/agent-workflow.js +0 -5433
- package/dist/agent-workflow.mjs +0 -14
- package/dist/chunk-7M6UPURS.mjs +0 -75
- package/dist/chunk-AML2VCQS.mjs +0 -1287
- package/dist/chunk-FQ67QZOI.mjs +0 -75
- package/dist/chunk-NO7RHGTH.mjs +0 -2367
- package/dist/chunk-NXDVNJRS.mjs +0 -106
- package/dist/chunk-OZZVS6L5.mjs +0 -139
- package/dist/chunk-SJVFFE5D.mjs +0 -402
- package/dist/chunk-TAXLUVIC.mjs +0 -1
- package/dist/chunk-TGNVXSMX.mjs +0 -399
- package/dist/chunk-YRYXN7W4.mjs +0 -48
- package/dist/chunk-ZIAHPXOJ.mjs +0 -595
- package/dist/client-BKA7XBGW.mjs +0 -15
- package/dist/client-CEeSFGva.d.mts +0 -2376
- package/dist/client-CEeSFGva.d.ts +0 -2376
- package/dist/docker-FB2MJTHJ.mjs +0 -12
- package/dist/local-fs-handlers-SYOCKTPN.mjs +0 -447
- package/dist/sandbox-UENKQV3T.mjs +0 -21
- package/dist/storage-LSDMRW73.mjs +0 -20
- package/dist/vercel-SD3JTECG.mjs +0 -20
- package/dist/vercel-sdk-I6A4MVAN.mjs +0 -8
package/dist/storage.js
ADDED
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/storage/entry.ts
|
|
31
|
+
var entry_exports = {};
|
|
32
|
+
__export(entry_exports, {
|
|
33
|
+
StorageStep: () => StorageStep,
|
|
34
|
+
kvStorageFallback: () => kvStorageFallback,
|
|
35
|
+
localStorage: () => localStorage,
|
|
36
|
+
shouldFallbackToKV2: () => shouldFallbackToKV2,
|
|
37
|
+
toStorage: () => toStorage
|
|
38
|
+
});
|
|
39
|
+
module.exports = __toCommonJS(entry_exports);
|
|
40
|
+
|
|
41
|
+
// src/storage/adapter.ts
|
|
42
|
+
var import_serde = require("@workflow/serde");
|
|
43
|
+
var StorageStep = class _StorageStep {
|
|
44
|
+
event;
|
|
45
|
+
constructor(event) {
|
|
46
|
+
this.event = event;
|
|
47
|
+
}
|
|
48
|
+
static [import_serde.WORKFLOW_SERIALIZE](instance) {
|
|
49
|
+
return { event: instance.event };
|
|
50
|
+
}
|
|
51
|
+
static [import_serde.WORKFLOW_DESERIALIZE](data) {
|
|
52
|
+
return new _StorageStep(data.event);
|
|
53
|
+
}
|
|
54
|
+
// biome-ignore lint/suspicious/noExplicitAny: safe dispatch — event.method selects the matching handler
|
|
55
|
+
on(handlers) {
|
|
56
|
+
return handlers[this.event.method](this.event);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
function isStepFunction(h) {
|
|
60
|
+
return typeof h === "function";
|
|
61
|
+
}
|
|
62
|
+
function fromStepFunction(fn) {
|
|
63
|
+
return {
|
|
64
|
+
session: {
|
|
65
|
+
get: (id) => fn(new StorageStep({ method: "session.get", id })),
|
|
66
|
+
set: (id, value) => fn(new StorageStep({ method: "session.set", id, value })),
|
|
67
|
+
update: (id, updates) => fn(new StorageStep({ method: "session.update", id, updates }))
|
|
68
|
+
},
|
|
69
|
+
message: {
|
|
70
|
+
get: (id) => fn(new StorageStep({ method: "message.get", id })),
|
|
71
|
+
set: (id, value) => fn(new StorageStep({ method: "message.set", id, value })),
|
|
72
|
+
update: (id, updates) => fn(new StorageStep({ method: "message.update", id, updates })),
|
|
73
|
+
listBySession: (sessionId) => fn(new StorageStep({ method: "message.listBySession", sessionId }))
|
|
74
|
+
},
|
|
75
|
+
part: {
|
|
76
|
+
get: (id) => fn(new StorageStep({ method: "part.get", id })),
|
|
77
|
+
set: (id, value) => fn(new StorageStep({ method: "part.set", id, value })),
|
|
78
|
+
listBySession: (sessionId) => fn(new StorageStep({ method: "part.listBySession", sessionId }))
|
|
79
|
+
},
|
|
80
|
+
sandbox: {
|
|
81
|
+
get: (id) => fn(new StorageStep({ method: "sandbox.get", id })),
|
|
82
|
+
set: (id, value) => fn(new StorageStep({ method: "sandbox.set", id, value })),
|
|
83
|
+
update: (id, updates) => fn(new StorageStep({ method: "sandbox.update", id, updates }))
|
|
84
|
+
},
|
|
85
|
+
setup: {
|
|
86
|
+
get: (id) => fn(new StorageStep({ method: "setup.get", id })),
|
|
87
|
+
set: (id, value) => fn(new StorageStep({ method: "setup.set", id, value }))
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function fromHandlers(h) {
|
|
92
|
+
return {
|
|
93
|
+
session: {
|
|
94
|
+
get: (id) => h["session.get"]({ id }),
|
|
95
|
+
set: (id, value) => h["session.set"]({ id, value }),
|
|
96
|
+
update: (id, updates) => h["session.update"]({ id, updates })
|
|
97
|
+
},
|
|
98
|
+
message: {
|
|
99
|
+
get: (id) => h["message.get"]({ id }),
|
|
100
|
+
set: (id, value) => h["message.set"]({ id, value }),
|
|
101
|
+
update: (id, updates) => h["message.update"]({ id, updates }),
|
|
102
|
+
listBySession: (sessionId) => h["message.listBySession"]({ sessionId })
|
|
103
|
+
},
|
|
104
|
+
part: {
|
|
105
|
+
get: (id) => h["part.get"]({ id }),
|
|
106
|
+
set: (id, value) => h["part.set"]({ id, value }),
|
|
107
|
+
listBySession: (sessionId) => h["part.listBySession"]({ sessionId })
|
|
108
|
+
},
|
|
109
|
+
sandbox: {
|
|
110
|
+
get: (id) => h["sandbox.get"]({ id }),
|
|
111
|
+
set: (id, value) => h["sandbox.set"]({ id, value }),
|
|
112
|
+
update: (id, updates) => h["sandbox.update"]({ id, updates })
|
|
113
|
+
},
|
|
114
|
+
setup: {
|
|
115
|
+
get: (id) => h["setup.get"]({ id }),
|
|
116
|
+
set: (id, value) => h["setup.set"]({ id, value })
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
function toStorage(h) {
|
|
121
|
+
return isStepFunction(h) ? fromStepFunction(h) : fromHandlers(h);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// src/storage/bindings/kv.ts
|
|
125
|
+
async function initKvStores(prefix) {
|
|
126
|
+
const { createKV } = await import("@vercel/kv2");
|
|
127
|
+
const kv = createKV({ prefix }).getStore("agent/");
|
|
128
|
+
return {
|
|
129
|
+
sessions: kv.getStore("session/"),
|
|
130
|
+
messages: kv.getStore("message/").withIndexes({
|
|
131
|
+
bySessionId: { key: (m) => m.sessionId }
|
|
132
|
+
}),
|
|
133
|
+
parts: kv.getStore("part/").withIndexes({
|
|
134
|
+
bySessionId: { key: (p) => p.sessionId }
|
|
135
|
+
}),
|
|
136
|
+
sandboxes: kv.getStore("sandbox/"),
|
|
137
|
+
setups: kv.getStore("setup/")
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function kvStorageFallback(opts) {
|
|
141
|
+
let storesPromise;
|
|
142
|
+
function getStores() {
|
|
143
|
+
if (!storesPromise) {
|
|
144
|
+
storesPromise = initKvStores(opts.prefix);
|
|
145
|
+
}
|
|
146
|
+
return storesPromise;
|
|
147
|
+
}
|
|
148
|
+
const tag = `[agent.${opts.prefix}][kv2]`;
|
|
149
|
+
return {
|
|
150
|
+
"session.get": async ({ id }) => {
|
|
151
|
+
const { sessions } = await getStores();
|
|
152
|
+
return await sessions.getValue(id) ?? null;
|
|
153
|
+
},
|
|
154
|
+
"session.set": async ({ id, value }) => {
|
|
155
|
+
const { sessions } = await getStores();
|
|
156
|
+
await sessions.set(id, value);
|
|
157
|
+
},
|
|
158
|
+
"session.update": async ({ id, updates }) => {
|
|
159
|
+
const { sessions } = await getStores();
|
|
160
|
+
const existing = await sessions.getValue(id);
|
|
161
|
+
if (!existing) {
|
|
162
|
+
throw new Error(
|
|
163
|
+
`${tag}[session.update] no session found with id "${id}"`
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
const updated = { ...existing, ...updates };
|
|
167
|
+
await sessions.set(id, updated);
|
|
168
|
+
return updated;
|
|
169
|
+
},
|
|
170
|
+
"message.get": async ({ id }) => {
|
|
171
|
+
const { messages } = await getStores();
|
|
172
|
+
return await messages.getValue(id) ?? null;
|
|
173
|
+
},
|
|
174
|
+
"message.set": async ({ id, value }) => {
|
|
175
|
+
const { messages } = await getStores();
|
|
176
|
+
await messages.set(id, value);
|
|
177
|
+
},
|
|
178
|
+
"message.update": async ({ id, updates }) => {
|
|
179
|
+
const { messages } = await getStores();
|
|
180
|
+
const existing = await messages.getValue(id);
|
|
181
|
+
if (!existing) {
|
|
182
|
+
throw new Error(
|
|
183
|
+
`${tag}[message.update] no message found with id "${id}"`
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
const updated = { ...existing, ...updates };
|
|
187
|
+
await messages.set(id, updated);
|
|
188
|
+
return updated;
|
|
189
|
+
},
|
|
190
|
+
"message.listBySession": async ({ sessionId }) => {
|
|
191
|
+
const { messages } = await getStores();
|
|
192
|
+
const result = [];
|
|
193
|
+
for await (const [, entry] of messages.entries({
|
|
194
|
+
bySessionId: sessionId
|
|
195
|
+
})) {
|
|
196
|
+
result.push(await entry.value);
|
|
197
|
+
}
|
|
198
|
+
return result;
|
|
199
|
+
},
|
|
200
|
+
"part.get": async ({ id }) => {
|
|
201
|
+
const { parts } = await getStores();
|
|
202
|
+
return await parts.getValue(id) ?? null;
|
|
203
|
+
},
|
|
204
|
+
"part.set": async ({ id, value }) => {
|
|
205
|
+
const { parts } = await getStores();
|
|
206
|
+
await parts.set(id, value);
|
|
207
|
+
},
|
|
208
|
+
"part.listBySession": async ({ sessionId }) => {
|
|
209
|
+
const { parts } = await getStores();
|
|
210
|
+
const result = [];
|
|
211
|
+
for await (const [, entry] of parts.entries({
|
|
212
|
+
bySessionId: sessionId
|
|
213
|
+
})) {
|
|
214
|
+
result.push(await entry.value);
|
|
215
|
+
}
|
|
216
|
+
return result;
|
|
217
|
+
},
|
|
218
|
+
"sandbox.get": async ({ id }) => {
|
|
219
|
+
const { sandboxes } = await getStores();
|
|
220
|
+
return await sandboxes.getValue(id) ?? null;
|
|
221
|
+
},
|
|
222
|
+
"sandbox.set": async ({ id, value }) => {
|
|
223
|
+
const { sandboxes } = await getStores();
|
|
224
|
+
await sandboxes.set(id, value);
|
|
225
|
+
},
|
|
226
|
+
"sandbox.update": async ({ id, updates }) => {
|
|
227
|
+
const { sandboxes } = await getStores();
|
|
228
|
+
const existing = await sandboxes.getValue(id);
|
|
229
|
+
if (!existing) {
|
|
230
|
+
throw new Error(
|
|
231
|
+
`${tag}[sandbox.update] no sandbox found with id "${id}"`
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
const updated = { ...existing, ...updates };
|
|
235
|
+
await sandboxes.set(id, updated);
|
|
236
|
+
return updated;
|
|
237
|
+
},
|
|
238
|
+
"setup.get": async ({ id }) => {
|
|
239
|
+
const { setups } = await getStores();
|
|
240
|
+
return await setups.getValue(id) ?? null;
|
|
241
|
+
},
|
|
242
|
+
"setup.set": async ({ id, value }) => {
|
|
243
|
+
const { setups } = await getStores();
|
|
244
|
+
await setups.set(id, value);
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// src/storage/bindings/local.ts
|
|
250
|
+
var _fs;
|
|
251
|
+
var _path;
|
|
252
|
+
async function fs() {
|
|
253
|
+
if (!_fs) {
|
|
254
|
+
_fs = await import("fs/promises");
|
|
255
|
+
}
|
|
256
|
+
return _fs;
|
|
257
|
+
}
|
|
258
|
+
async function path() {
|
|
259
|
+
if (!_path) {
|
|
260
|
+
_path = await import("path");
|
|
261
|
+
}
|
|
262
|
+
return _path;
|
|
263
|
+
}
|
|
264
|
+
function createStore(dir) {
|
|
265
|
+
const filePath = async (key) => (await path()).join(dir, `${key}.json`);
|
|
266
|
+
return {
|
|
267
|
+
async get(key) {
|
|
268
|
+
try {
|
|
269
|
+
const data = await (await fs()).readFile(await filePath(key), "utf-8");
|
|
270
|
+
return JSON.parse(data);
|
|
271
|
+
} catch {
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
async set(key, value) {
|
|
276
|
+
const p = await filePath(key);
|
|
277
|
+
const { mkdir, writeFile } = await fs();
|
|
278
|
+
const { dirname } = await path();
|
|
279
|
+
await mkdir(dirname(p), { recursive: true });
|
|
280
|
+
await writeFile(p, JSON.stringify(value, null, 2));
|
|
281
|
+
},
|
|
282
|
+
async update(key, updates) {
|
|
283
|
+
const p = await filePath(key);
|
|
284
|
+
const { readFile, mkdir, writeFile } = await fs();
|
|
285
|
+
const { dirname } = await path();
|
|
286
|
+
let existing;
|
|
287
|
+
try {
|
|
288
|
+
const data = await readFile(p, "utf-8");
|
|
289
|
+
existing = JSON.parse(data);
|
|
290
|
+
} catch {
|
|
291
|
+
throw new Error(`Not found: ${key}`);
|
|
292
|
+
}
|
|
293
|
+
const updated = { ...existing, ...updates };
|
|
294
|
+
await mkdir(dirname(p), { recursive: true });
|
|
295
|
+
await writeFile(p, JSON.stringify(updated, null, 2));
|
|
296
|
+
return updated;
|
|
297
|
+
}
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
async function readAllFromDir(dir) {
|
|
301
|
+
const { readdir, readFile } = await fs();
|
|
302
|
+
const { join } = await path();
|
|
303
|
+
let files;
|
|
304
|
+
try {
|
|
305
|
+
files = await readdir(dir);
|
|
306
|
+
} catch {
|
|
307
|
+
return [];
|
|
308
|
+
}
|
|
309
|
+
const result = [];
|
|
310
|
+
for (const file of files) {
|
|
311
|
+
if (!file.endsWith(".json")) {
|
|
312
|
+
continue;
|
|
313
|
+
}
|
|
314
|
+
try {
|
|
315
|
+
const data = await readFile(join(dir, file), "utf-8");
|
|
316
|
+
result.push(JSON.parse(data));
|
|
317
|
+
} catch {
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
return result;
|
|
321
|
+
}
|
|
322
|
+
function localStorage(opts) {
|
|
323
|
+
const dir = opts?.dir ?? ".agent";
|
|
324
|
+
const sessionStore = createStore(`${dir}/session`);
|
|
325
|
+
const messageStore = createStore(`${dir}/message`);
|
|
326
|
+
const partStore = createStore(`${dir}/part`);
|
|
327
|
+
const sandboxStore = createStore(`${dir}/sandbox`);
|
|
328
|
+
const setupStore = createStore(`${dir}/setup`);
|
|
329
|
+
const messageDir = `${dir}/message`;
|
|
330
|
+
const partDir = `${dir}/part`;
|
|
331
|
+
return {
|
|
332
|
+
"session.get": ({ id }) => sessionStore.get(id),
|
|
333
|
+
"session.set": ({ id, value }) => sessionStore.set(id, value),
|
|
334
|
+
"session.update": ({ id, updates }) => sessionStore.update(id, updates),
|
|
335
|
+
"message.get": ({ id }) => messageStore.get(id),
|
|
336
|
+
"message.set": ({ id, value }) => messageStore.set(id, value),
|
|
337
|
+
"message.update": ({ id, updates }) => messageStore.update(id, updates),
|
|
338
|
+
"message.listBySession": async ({ sessionId }) => {
|
|
339
|
+
const all = await readAllFromDir(messageDir);
|
|
340
|
+
return all.filter((m) => m.sessionId === sessionId);
|
|
341
|
+
},
|
|
342
|
+
"part.get": ({ id }) => partStore.get(id),
|
|
343
|
+
"part.set": ({ id, value }) => partStore.set(id, value),
|
|
344
|
+
"part.listBySession": async ({ sessionId }) => {
|
|
345
|
+
const all = await readAllFromDir(partDir);
|
|
346
|
+
return all.filter((p) => p.sessionId === sessionId);
|
|
347
|
+
},
|
|
348
|
+
"sandbox.get": ({ id }) => sandboxStore.get(id),
|
|
349
|
+
"sandbox.set": ({ id, value }) => sandboxStore.set(id, value),
|
|
350
|
+
"sandbox.update": ({ id, updates }) => sandboxStore.update(id, updates),
|
|
351
|
+
"setup.get": ({ id }) => setupStore.get(id),
|
|
352
|
+
"setup.set": ({ id, value }) => setupStore.set(id, value)
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
// src/storage/should-fallback-kv2.ts
|
|
357
|
+
function shouldFallbackToKV2() {
|
|
358
|
+
return !!process.env.BLOB_READ_WRITE_TOKEN;
|
|
359
|
+
}
|
|
360
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
361
|
+
0 && (module.exports = {
|
|
362
|
+
StorageStep,
|
|
363
|
+
kvStorageFallback,
|
|
364
|
+
localStorage,
|
|
365
|
+
shouldFallbackToKV2,
|
|
366
|
+
toStorage
|
|
367
|
+
});
|
|
368
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3N0b3JhZ2UvZW50cnkudHMiLCAiLi4vc3JjL3N0b3JhZ2UvYWRhcHRlci50cyIsICIuLi9zcmMvc3RvcmFnZS9iaW5kaW5ncy9rdi50cyIsICIuLi9zcmMvc3RvcmFnZS9iaW5kaW5ncy9sb2NhbC50cyIsICIuLi9zcmMvc3RvcmFnZS9zaG91bGQtZmFsbGJhY2sta3YyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgdHlwZSB7XG4gIFN0b3JhZ2UsXG4gIFN0b3JhZ2VDYWxsLFxuICBTdG9yYWdlSGFuZGxlcnMsXG4gIFN0b3JhZ2VTdGVwRnVuY3Rpb24sXG59IGZyb20gXCIuL2FkYXB0ZXJcIjtcbmV4cG9ydCB7IFN0b3JhZ2VTdGVwLCB0b1N0b3JhZ2UgfSBmcm9tIFwiLi9hZGFwdGVyXCI7XG5leHBvcnQgeyBrdlN0b3JhZ2VGYWxsYmFjayB9IGZyb20gXCIuL2JpbmRpbmdzL2t2XCI7XG5leHBvcnQgeyBsb2NhbFN0b3JhZ2UgfSBmcm9tIFwiLi9iaW5kaW5ncy9sb2NhbFwiO1xuZXhwb3J0IHsgc2hvdWxkRmFsbGJhY2tUb0tWMiB9IGZyb20gXCIuL3Nob3VsZC1mYWxsYmFjay1rdjJcIjtcbmV4cG9ydCB0eXBlIHtcbiAgR2VuZXJhdGlvbk9wdGlvbnMsXG4gIE1lc3NhZ2UsXG4gIE1lc3NhZ2VVc2FnZSxcbiAgUGFydCxcbiAgU2FuZGJveCxcbiAgU2Vzc2lvbixcbiAgU2V0dXAsXG4gIFNldHVwU25hcHNob3QsXG59IGZyb20gXCIuL3R5cGVzXCI7XG4iLCAiaW1wb3J0IHsgV09SS0ZMT1dfREVTRVJJQUxJWkUsIFdPUktGTE9XX1NFUklBTElaRSB9IGZyb20gXCJAd29ya2Zsb3cvc2VyZGVcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZSwgUGFydCwgU2FuZGJveCwgU2Vzc2lvbiwgU2V0dXAgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vLyBcdTI1MDBcdTI1MDBcdTI1MDAgU3RvcmFnZUhhbmRsZXJzIChwdWJsaWMsIGZsYXQpIFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFxuXG5leHBvcnQgdHlwZSBTdG9yYWdlSGFuZGxlcnMgPSB7XG4gIFwic2Vzc2lvbi5nZXRcIihwOiB7IGlkOiBzdHJpbmcgfSk6IFByb21pc2U8U2Vzc2lvbiB8IG51bGw+O1xuICBcInNlc3Npb24uc2V0XCIocDogeyBpZDogc3RyaW5nOyB2YWx1ZTogU2Vzc2lvbiB9KTogUHJvbWlzZTx2b2lkPjtcbiAgXCJzZXNzaW9uLnVwZGF0ZVwiKHA6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHVwZGF0ZXM6IFBhcnRpYWw8U2Vzc2lvbj47XG4gIH0pOiBQcm9taXNlPFNlc3Npb24+O1xuXG4gIFwibWVzc2FnZS5nZXRcIihwOiB7IGlkOiBzdHJpbmcgfSk6IFByb21pc2U8TWVzc2FnZSB8IG51bGw+O1xuICBcIm1lc3NhZ2Uuc2V0XCIocDogeyBpZDogc3RyaW5nOyB2YWx1ZTogTWVzc2FnZSB9KTogUHJvbWlzZTx2b2lkPjtcbiAgXCJtZXNzYWdlLnVwZGF0ZVwiKHA6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHVwZGF0ZXM6IFBhcnRpYWw8TWVzc2FnZT47XG4gIH0pOiBQcm9taXNlPE1lc3NhZ2U+O1xuICBcIm1lc3NhZ2UubGlzdEJ5U2Vzc2lvblwiKHA6IHsgc2Vzc2lvbklkOiBzdHJpbmcgfSk6IFByb21pc2U8TWVzc2FnZVtdPjtcblxuICBcInBhcnQuZ2V0XCIocDogeyBpZDogc3RyaW5nIH0pOiBQcm9taXNlPFBhcnQgfCBudWxsPjtcbiAgXCJwYXJ0LnNldFwiKHA6IHsgaWQ6IHN0cmluZzsgdmFsdWU6IFBhcnQgfSk6IFByb21pc2U8dm9pZD47XG4gIFwicGFydC5saXN0QnlTZXNzaW9uXCIocDogeyBzZXNzaW9uSWQ6IHN0cmluZyB9KTogUHJvbWlzZTxQYXJ0W10+O1xuXG4gIFwic2FuZGJveC5nZXRcIihwOiB7IGlkOiBzdHJpbmcgfSk6IFByb21pc2U8U2FuZGJveCB8IG51bGw+O1xuICBcInNhbmRib3guc2V0XCIocDogeyBpZDogc3RyaW5nOyB2YWx1ZTogU2FuZGJveCB9KTogUHJvbWlzZTx2b2lkPjtcbiAgXCJzYW5kYm94LnVwZGF0ZVwiKHA6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHVwZGF0ZXM6IFBhcnRpYWw8U2FuZGJveD47XG4gIH0pOiBQcm9taXNlPFNhbmRib3g+O1xuXG4gIFwic2V0dXAuZ2V0XCIocDogeyBpZDogc3RyaW5nIH0pOiBQcm9taXNlPFNldHVwIHwgbnVsbD47XG4gIFwic2V0dXAuc2V0XCIocDogeyBpZDogc3RyaW5nOyB2YWx1ZTogU2V0dXAgfSk6IFByb21pc2U8dm9pZD47XG59O1xuXG4vLyBcdTI1MDBcdTI1MDBcdTI1MDAgU3RvcmFnZUNhbGwgKGRlcml2ZWQgZnJvbSBTdG9yYWdlSGFuZGxlcnMpIFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFxuXG5leHBvcnQgdHlwZSBTdG9yYWdlQ2FsbCA9IHtcbiAgW0sgaW4ga2V5b2YgU3RvcmFnZUhhbmRsZXJzXTogeyBtZXRob2Q6IEsgfSAmIFBhcmFtZXRlcnM8XG4gICAgU3RvcmFnZUhhbmRsZXJzW0tdXG4gID5bMF07XG59W2tleW9mIFN0b3JhZ2VIYW5kbGVyc107XG5cbi8vIFx1MjUwMFx1MjUwMFx1MjUwMCBTdG9yYWdlU3RlcCAoc2VyaWFsaXphYmxlIGFjcm9zcyB3b3JrZmxvdyBib3VuZGFyeSkgXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXG5cbmV4cG9ydCBjbGFzcyBTdG9yYWdlU3RlcCB7XG4gIGV2ZW50OiBTdG9yYWdlQ2FsbDtcblxuICBjb25zdHJ1Y3RvcihldmVudDogU3RvcmFnZUNhbGwpIHtcbiAgICB0aGlzLmV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBzdGF0aWMgW1dPUktGTE9XX1NFUklBTElaRV0oaW5zdGFuY2U6IFN0b3JhZ2VTdGVwKSB7XG4gICAgcmV0dXJuIHsgZXZlbnQ6IGluc3RhbmNlLmV2ZW50IH07XG4gIH1cblxuICBzdGF0aWMgW1dPUktGTE9XX0RFU0VSSUFMSVpFXShkYXRhOiB7IGV2ZW50OiBTdG9yYWdlQ2FsbCB9KSB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlU3RlcChkYXRhLmV2ZW50KTtcbiAgfVxuXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogc2FmZSBkaXNwYXRjaCBcdTIwMTQgZXZlbnQubWV0aG9kIHNlbGVjdHMgdGhlIG1hdGNoaW5nIGhhbmRsZXJcbiAgb24oaGFuZGxlcnM6IFN0b3JhZ2VIYW5kbGVycyk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBzZWUgYWJvdmVcbiAgICByZXR1cm4gKGhhbmRsZXJzW3RoaXMuZXZlbnQubWV0aG9kXSBhcyBhbnkpKHRoaXMuZXZlbnQpO1xuICB9XG59XG5cbi8qKlxuICogQSBzaW5nbGUgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIGFsbCBzdG9yYWdlIG9wZXJhdGlvbnMuIEludGVuZGVkIHRvIGJlXG4gKiBtYXJrZWQgd2l0aCBgXCJ1c2Ugc3RlcFwiYCBzbyB0aGF0IGl0cyBib2R5IChhbmQgTm9kZS5qcy1kZXBlbmRlbnRcbiAqIGltcG9ydHMgbGlrZSBkYXRhYmFzZSBjbGllbnRzKSBpcyBleHRyYWN0ZWQgYnkgdGhlIHdvcmtmbG93IGJ1bmRsZXJcbiAqIGFuZCBydW5zIHNlcnZlci1zaWRlLlxuICpcbiAqIFRoZSBzdGVwIHJlY2VpdmVzIGEgYFN0b3JhZ2VTdGVwYCBpbnN0YW5jZSAoc2VyaWFsaXphYmxlIHZpYVxuICogYEB3b3JrZmxvdy9zZXJkZWApIGFuZCBzaG91bGQgY2FsbCBgc3RlcC5oYW5kbGUoeyAuLi4gfSlgIHdpdGggYVxuICogYFN0b3JhZ2VIYW5kbGVyc2AgbWFwLlxuICovXG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IHN0ZXAgZnVuY3Rpb24gaXMgYSBkaXNwYXRjaGVyOyB0eXBlIHNhZmV0eSBpcyBhdCB0aGUgaGFuZGxlcnMgbGV2ZWxcbmV4cG9ydCB0eXBlIFN0b3JhZ2VTdGVwRnVuY3Rpb24gPSAoc3RvcmU6IFN0b3JhZ2VTdGVwKSA9PiBQcm9taXNlPGFueT47XG5cbi8vIFx1MjUwMFx1MjUwMFx1MjUwMCBTdG9yYWdlIChpbnRlcm5hbCwgbmVzdGVkKSBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcblxuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlIHtcbiAgc2Vzc2lvbjoge1xuICAgIGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8U2Vzc2lvbiB8IG51bGw+O1xuICAgIHNldChrZXk6IHN0cmluZywgdmFsdWU6IFNlc3Npb24pOiBQcm9taXNlPHZvaWQ+O1xuICAgIHVwZGF0ZShrZXk6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxTZXNzaW9uPik6IFByb21pc2U8U2Vzc2lvbj47XG4gIH07XG4gIG1lc3NhZ2U6IHtcbiAgICBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2UgfCBudWxsPjtcbiAgICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBNZXNzYWdlKTogUHJvbWlzZTx2b2lkPjtcbiAgICB1cGRhdGUoa2V5OiBzdHJpbmcsIHVwZGF0ZXM6IFBhcnRpYWw8TWVzc2FnZT4pOiBQcm9taXNlPE1lc3NhZ2U+O1xuICAgIGxpc3RCeVNlc3Npb24oc2Vzc2lvbklkOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2VbXT47XG4gIH07XG4gIHBhcnQ6IHtcbiAgICBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPFBhcnQgfCBudWxsPjtcbiAgICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBQYXJ0KTogUHJvbWlzZTx2b2lkPjtcbiAgICBsaXN0QnlTZXNzaW9uKHNlc3Npb25JZDogc3RyaW5nKTogUHJvbWlzZTxQYXJ0W10+O1xuICB9O1xuICBzYW5kYm94OiB7XG4gICAgZ2V0KGtleTogc3RyaW5nKTogUHJvbWlzZTxTYW5kYm94IHwgbnVsbD47XG4gICAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogU2FuZGJveCk6IFByb21pc2U8dm9pZD47XG4gICAgdXBkYXRlKGtleTogc3RyaW5nLCB1cGRhdGVzOiBQYXJ0aWFsPFNhbmRib3g+KTogUHJvbWlzZTxTYW5kYm94PjtcbiAgfTtcbiAgc2V0dXA6IHtcbiAgICBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPFNldHVwIHwgbnVsbD47XG4gICAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogU2V0dXApOiBQcm9taXNlPHZvaWQ+O1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTdG9yYWdlSW5wdXQgPSBTdG9yYWdlSGFuZGxlcnMgfCBTdG9yYWdlU3RlcEZ1bmN0aW9uO1xuXG5mdW5jdGlvbiBpc1N0ZXBGdW5jdGlvbihoOiBTdG9yYWdlSW5wdXQpOiBoIGlzIFN0b3JhZ2VTdGVwRnVuY3Rpb24ge1xuICByZXR1cm4gdHlwZW9mIGggPT09IFwiZnVuY3Rpb25cIjtcbn1cblxuZnVuY3Rpb24gZnJvbVN0ZXBGdW5jdGlvbihmbjogU3RvcmFnZVN0ZXBGdW5jdGlvbik6IFN0b3JhZ2Uge1xuICByZXR1cm4ge1xuICAgIHNlc3Npb246IHtcbiAgICAgIGdldDogKGlkKSA9PiBmbihuZXcgU3RvcmFnZVN0ZXAoeyBtZXRob2Q6IFwic2Vzc2lvbi5nZXRcIiwgaWQgfSkpLFxuICAgICAgc2V0OiAoaWQsIHZhbHVlKSA9PlxuICAgICAgICBmbihuZXcgU3RvcmFnZVN0ZXAoeyBtZXRob2Q6IFwic2Vzc2lvbi5zZXRcIiwgaWQsIHZhbHVlIH0pKSxcbiAgICAgIHVwZGF0ZTogKGlkLCB1cGRhdGVzKSA9PlxuICAgICAgICBmbihuZXcgU3RvcmFnZVN0ZXAoeyBtZXRob2Q6IFwic2Vzc2lvbi51cGRhdGVcIiwgaWQsIHVwZGF0ZXMgfSkpLFxuICAgIH0sXG4gICAgbWVzc2FnZToge1xuICAgICAgZ2V0OiAoaWQpID0+IGZuKG5ldyBTdG9yYWdlU3RlcCh7IG1ldGhvZDogXCJtZXNzYWdlLmdldFwiLCBpZCB9KSksXG4gICAgICBzZXQ6IChpZCwgdmFsdWUpID0+XG4gICAgICAgIGZuKG5ldyBTdG9yYWdlU3RlcCh7IG1ldGhvZDogXCJtZXNzYWdlLnNldFwiLCBpZCwgdmFsdWUgfSkpLFxuICAgICAgdXBkYXRlOiAoaWQsIHVwZGF0ZXMpID0+XG4gICAgICAgIGZuKG5ldyBTdG9yYWdlU3RlcCh7IG1ldGhvZDogXCJtZXNzYWdlLnVwZGF0ZVwiLCBpZCwgdXBkYXRlcyB9KSksXG4gICAgICBsaXN0QnlTZXNzaW9uOiAoc2Vzc2lvbklkKSA9PlxuICAgICAgICBmbihuZXcgU3RvcmFnZVN0ZXAoeyBtZXRob2Q6IFwibWVzc2FnZS5saXN0QnlTZXNzaW9uXCIsIHNlc3Npb25JZCB9KSksXG4gICAgfSxcbiAgICBwYXJ0OiB7XG4gICAgICBnZXQ6IChpZCkgPT4gZm4obmV3IFN0b3JhZ2VTdGVwKHsgbWV0aG9kOiBcInBhcnQuZ2V0XCIsIGlkIH0pKSxcbiAgICAgIHNldDogKGlkLCB2YWx1ZSkgPT5cbiAgICAgICAgZm4obmV3IFN0b3JhZ2VTdGVwKHsgbWV0aG9kOiBcInBhcnQuc2V0XCIsIGlkLCB2YWx1ZSB9KSksXG4gICAgICBsaXN0QnlTZXNzaW9uOiAoc2Vzc2lvbklkKSA9PlxuICAgICAgICBmbihuZXcgU3RvcmFnZVN0ZXAoeyBtZXRob2Q6IFwicGFydC5saXN0QnlTZXNzaW9uXCIsIHNlc3Npb25JZCB9KSksXG4gICAgfSxcbiAgICBzYW5kYm94OiB7XG4gICAgICBnZXQ6IChpZCkgPT4gZm4obmV3IFN0b3JhZ2VTdGVwKHsgbWV0aG9kOiBcInNhbmRib3guZ2V0XCIsIGlkIH0pKSxcbiAgICAgIHNldDogKGlkLCB2YWx1ZSkgPT5cbiAgICAgICAgZm4obmV3IFN0b3JhZ2VTdGVwKHsgbWV0aG9kOiBcInNhbmRib3guc2V0XCIsIGlkLCB2YWx1ZSB9KSksXG4gICAgICB1cGRhdGU6IChpZCwgdXBkYXRlcykgPT5cbiAgICAgICAgZm4obmV3IFN0b3JhZ2VTdGVwKHsgbWV0aG9kOiBcInNhbmRib3gudXBkYXRlXCIsIGlkLCB1cGRhdGVzIH0pKSxcbiAgICB9LFxuICAgIHNldHVwOiB7XG4gICAgICBnZXQ6IChpZCkgPT4gZm4obmV3IFN0b3JhZ2VTdGVwKHsgbWV0aG9kOiBcInNldHVwLmdldFwiLCBpZCB9KSksXG4gICAgICBzZXQ6IChpZCwgdmFsdWUpID0+XG4gICAgICAgIGZuKG5ldyBTdG9yYWdlU3RlcCh7IG1ldGhvZDogXCJzZXR1cC5zZXRcIiwgaWQsIHZhbHVlIH0pKSxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBmcm9tSGFuZGxlcnMoaDogU3RvcmFnZUhhbmRsZXJzKTogU3RvcmFnZSB7XG4gIHJldHVybiB7XG4gICAgc2Vzc2lvbjoge1xuICAgICAgZ2V0OiAoaWQpID0+IGhbXCJzZXNzaW9uLmdldFwiXSh7IGlkIH0pLFxuICAgICAgc2V0OiAoaWQsIHZhbHVlKSA9PiBoW1wic2Vzc2lvbi5zZXRcIl0oeyBpZCwgdmFsdWUgfSksXG4gICAgICB1cGRhdGU6IChpZCwgdXBkYXRlcykgPT4gaFtcInNlc3Npb24udXBkYXRlXCJdKHsgaWQsIHVwZGF0ZXMgfSksXG4gICAgfSxcbiAgICBtZXNzYWdlOiB7XG4gICAgICBnZXQ6IChpZCkgPT4gaFtcIm1lc3NhZ2UuZ2V0XCJdKHsgaWQgfSksXG4gICAgICBzZXQ6IChpZCwgdmFsdWUpID0+IGhbXCJtZXNzYWdlLnNldFwiXSh7IGlkLCB2YWx1ZSB9KSxcbiAgICAgIHVwZGF0ZTogKGlkLCB1cGRhdGVzKSA9PiBoW1wibWVzc2FnZS51cGRhdGVcIl0oeyBpZCwgdXBkYXRlcyB9KSxcbiAgICAgIGxpc3RCeVNlc3Npb246IChzZXNzaW9uSWQpID0+IGhbXCJtZXNzYWdlLmxpc3RCeVNlc3Npb25cIl0oeyBzZXNzaW9uSWQgfSksXG4gICAgfSxcbiAgICBwYXJ0OiB7XG4gICAgICBnZXQ6IChpZCkgPT4gaFtcInBhcnQuZ2V0XCJdKHsgaWQgfSksXG4gICAgICBzZXQ6IChpZCwgdmFsdWUpID0+IGhbXCJwYXJ0LnNldFwiXSh7IGlkLCB2YWx1ZSB9KSxcbiAgICAgIGxpc3RCeVNlc3Npb246IChzZXNzaW9uSWQpID0+IGhbXCJwYXJ0Lmxpc3RCeVNlc3Npb25cIl0oeyBzZXNzaW9uSWQgfSksXG4gICAgfSxcbiAgICBzYW5kYm94OiB7XG4gICAgICBnZXQ6IChpZCkgPT4gaFtcInNhbmRib3guZ2V0XCJdKHsgaWQgfSksXG4gICAgICBzZXQ6IChpZCwgdmFsdWUpID0+IGhbXCJzYW5kYm94LnNldFwiXSh7IGlkLCB2YWx1ZSB9KSxcbiAgICAgIHVwZGF0ZTogKGlkLCB1cGRhdGVzKSA9PiBoW1wic2FuZGJveC51cGRhdGVcIl0oeyBpZCwgdXBkYXRlcyB9KSxcbiAgICB9LFxuICAgIHNldHVwOiB7XG4gICAgICBnZXQ6IChpZCkgPT4gaFtcInNldHVwLmdldFwiXSh7IGlkIH0pLFxuICAgICAgc2V0OiAoaWQsIHZhbHVlKSA9PiBoW1wic2V0dXAuc2V0XCJdKHsgaWQsIHZhbHVlIH0pLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1N0b3JhZ2UoaDogU3RvcmFnZUlucHV0KTogU3RvcmFnZSB7XG4gIHJldHVybiBpc1N0ZXBGdW5jdGlvbihoKSA/IGZyb21TdGVwRnVuY3Rpb24oaCkgOiBmcm9tSGFuZGxlcnMoaCk7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBTdG9yYWdlSGFuZGxlcnMgfSBmcm9tIFwiLi4vYWRhcHRlclwiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlLCBQYXJ0LCBTYW5kYm94LCBTZXNzaW9uLCBTZXR1cCB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG50eXBlIEt2U3RvcmVzID0gQXdhaXRlZDxSZXR1cm5UeXBlPHR5cGVvZiBpbml0S3ZTdG9yZXM+PjtcblxuYXN5bmMgZnVuY3Rpb24gaW5pdEt2U3RvcmVzKHByZWZpeDogc3RyaW5nKSB7XG4gIGNvbnN0IHsgY3JlYXRlS1YgfSA9IGF3YWl0IGltcG9ydChcIkB2ZXJjZWwva3YyXCIpO1xuICBjb25zdCBrdiA9IGNyZWF0ZUtWKHsgcHJlZml4IH0pLmdldFN0b3JlKFwiYWdlbnQvXCIpO1xuXG4gIHJldHVybiB7XG4gICAgc2Vzc2lvbnM6IGt2LmdldFN0b3JlPFNlc3Npb24+KFwic2Vzc2lvbi9cIiksXG4gICAgbWVzc2FnZXM6IGt2LmdldFN0b3JlPE1lc3NhZ2U+KFwibWVzc2FnZS9cIikud2l0aEluZGV4ZXMoe1xuICAgICAgYnlTZXNzaW9uSWQ6IHsga2V5OiAobTogTWVzc2FnZSkgPT4gbS5zZXNzaW9uSWQgfSxcbiAgICB9KSxcbiAgICBwYXJ0czoga3YuZ2V0U3RvcmU8UGFydD4oXCJwYXJ0L1wiKS53aXRoSW5kZXhlcyh7XG4gICAgICBieVNlc3Npb25JZDogeyBrZXk6IChwOiBQYXJ0KSA9PiBwLnNlc3Npb25JZCB9LFxuICAgIH0pLFxuICAgIHNhbmRib3hlczoga3YuZ2V0U3RvcmU8U2FuZGJveD4oXCJzYW5kYm94L1wiKSxcbiAgICBzZXR1cHM6IGt2LmdldFN0b3JlPFNldHVwPihcInNldHVwL1wiKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGt2U3RvcmFnZUZhbGxiYWNrKG9wdHM6IHsgcHJlZml4OiBzdHJpbmcgfSk6IFN0b3JhZ2VIYW5kbGVycyB7XG4gIGxldCBzdG9yZXNQcm9taXNlOiBQcm9taXNlPEt2U3RvcmVzPiB8IHVuZGVmaW5lZDtcblxuICBmdW5jdGlvbiBnZXRTdG9yZXMoKSB7XG4gICAgaWYgKCFzdG9yZXNQcm9taXNlKSB7XG4gICAgICBzdG9yZXNQcm9taXNlID0gaW5pdEt2U3RvcmVzKG9wdHMucHJlZml4KTtcbiAgICB9XG4gICAgcmV0dXJuIHN0b3Jlc1Byb21pc2U7XG4gIH1cblxuICBjb25zdCB0YWcgPSBgW2FnZW50LiR7b3B0cy5wcmVmaXh9XVtrdjJdYDtcblxuICByZXR1cm4ge1xuICAgIFwic2Vzc2lvbi5nZXRcIjogYXN5bmMgKHsgaWQgfSkgPT4ge1xuICAgICAgY29uc3QgeyBzZXNzaW9ucyB9ID0gYXdhaXQgZ2V0U3RvcmVzKCk7XG4gICAgICByZXR1cm4gKGF3YWl0IHNlc3Npb25zLmdldFZhbHVlKGlkKSkgPz8gbnVsbDtcbiAgICB9LFxuXG4gICAgXCJzZXNzaW9uLnNldFwiOiBhc3luYyAoeyBpZCwgdmFsdWUgfSkgPT4ge1xuICAgICAgY29uc3QgeyBzZXNzaW9ucyB9ID0gYXdhaXQgZ2V0U3RvcmVzKCk7XG4gICAgICBhd2FpdCBzZXNzaW9ucy5zZXQoaWQsIHZhbHVlKTtcbiAgICB9LFxuXG4gICAgXCJzZXNzaW9uLnVwZGF0ZVwiOiBhc3luYyAoeyBpZCwgdXBkYXRlcyB9KSA9PiB7XG4gICAgICBjb25zdCB7IHNlc3Npb25zIH0gPSBhd2FpdCBnZXRTdG9yZXMoKTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgc2Vzc2lvbnMuZ2V0VmFsdWUoaWQpO1xuICAgICAgaWYgKCFleGlzdGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYCR7dGFnfVtzZXNzaW9uLnVwZGF0ZV0gbm8gc2Vzc2lvbiBmb3VuZCB3aXRoIGlkIFwiJHtpZH1cImBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSB7IC4uLmV4aXN0aW5nLCAuLi51cGRhdGVzIH07XG4gICAgICBhd2FpdCBzZXNzaW9ucy5zZXQoaWQsIHVwZGF0ZWQpO1xuICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgfSxcblxuICAgIFwibWVzc2FnZS5nZXRcIjogYXN5bmMgKHsgaWQgfSkgPT4ge1xuICAgICAgY29uc3QgeyBtZXNzYWdlcyB9ID0gYXdhaXQgZ2V0U3RvcmVzKCk7XG4gICAgICByZXR1cm4gKGF3YWl0IG1lc3NhZ2VzLmdldFZhbHVlKGlkKSkgPz8gbnVsbDtcbiAgICB9LFxuXG4gICAgXCJtZXNzYWdlLnNldFwiOiBhc3luYyAoeyBpZCwgdmFsdWUgfSkgPT4ge1xuICAgICAgY29uc3QgeyBtZXNzYWdlcyB9ID0gYXdhaXQgZ2V0U3RvcmVzKCk7XG4gICAgICBhd2FpdCBtZXNzYWdlcy5zZXQoaWQsIHZhbHVlKTtcbiAgICB9LFxuXG4gICAgXCJtZXNzYWdlLnVwZGF0ZVwiOiBhc3luYyAoeyBpZCwgdXBkYXRlcyB9KSA9PiB7XG4gICAgICBjb25zdCB7IG1lc3NhZ2VzIH0gPSBhd2FpdCBnZXRTdG9yZXMoKTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgbWVzc2FnZXMuZ2V0VmFsdWUoaWQpO1xuICAgICAgaWYgKCFleGlzdGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYCR7dGFnfVttZXNzYWdlLnVwZGF0ZV0gbm8gbWVzc2FnZSBmb3VuZCB3aXRoIGlkIFwiJHtpZH1cImBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSB7IC4uLmV4aXN0aW5nLCAuLi51cGRhdGVzIH07XG4gICAgICBhd2FpdCBtZXNzYWdlcy5zZXQoaWQsIHVwZGF0ZWQpO1xuICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgfSxcblxuICAgIFwibWVzc2FnZS5saXN0QnlTZXNzaW9uXCI6IGFzeW5jICh7IHNlc3Npb25JZCB9KSA9PiB7XG4gICAgICBjb25zdCB7IG1lc3NhZ2VzIH0gPSBhd2FpdCBnZXRTdG9yZXMoKTtcbiAgICAgIGNvbnN0IHJlc3VsdDogTWVzc2FnZVtdID0gW107XG4gICAgICBmb3IgYXdhaXQgKGNvbnN0IFssIGVudHJ5XSBvZiBtZXNzYWdlcy5lbnRyaWVzKHtcbiAgICAgICAgYnlTZXNzaW9uSWQ6IHNlc3Npb25JZCxcbiAgICAgIH0pKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGF3YWl0IGVudHJ5LnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcblxuICAgIFwicGFydC5nZXRcIjogYXN5bmMgKHsgaWQgfSkgPT4ge1xuICAgICAgY29uc3QgeyBwYXJ0cyB9ID0gYXdhaXQgZ2V0U3RvcmVzKCk7XG4gICAgICByZXR1cm4gKGF3YWl0IHBhcnRzLmdldFZhbHVlKGlkKSkgPz8gbnVsbDtcbiAgICB9LFxuXG4gICAgXCJwYXJ0LnNldFwiOiBhc3luYyAoeyBpZCwgdmFsdWUgfSkgPT4ge1xuICAgICAgY29uc3QgeyBwYXJ0cyB9ID0gYXdhaXQgZ2V0U3RvcmVzKCk7XG4gICAgICBhd2FpdCBwYXJ0cy5zZXQoaWQsIHZhbHVlKTtcbiAgICB9LFxuXG4gICAgXCJwYXJ0Lmxpc3RCeVNlc3Npb25cIjogYXN5bmMgKHsgc2Vzc2lvbklkIH0pID0+IHtcbiAgICAgIGNvbnN0IHsgcGFydHMgfSA9IGF3YWl0IGdldFN0b3JlcygpO1xuICAgICAgY29uc3QgcmVzdWx0OiBQYXJ0W10gPSBbXTtcbiAgICAgIGZvciBhd2FpdCAoY29uc3QgWywgZW50cnldIG9mIHBhcnRzLmVudHJpZXMoe1xuICAgICAgICBieVNlc3Npb25JZDogc2Vzc2lvbklkLFxuICAgICAgfSkpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goYXdhaXQgZW50cnkudmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuXG4gICAgXCJzYW5kYm94LmdldFwiOiBhc3luYyAoeyBpZCB9KSA9PiB7XG4gICAgICBjb25zdCB7IHNhbmRib3hlcyB9ID0gYXdhaXQgZ2V0U3RvcmVzKCk7XG4gICAgICByZXR1cm4gKGF3YWl0IHNhbmRib3hlcy5nZXRWYWx1ZShpZCkpID8/IG51bGw7XG4gICAgfSxcblxuICAgIFwic2FuZGJveC5zZXRcIjogYXN5bmMgKHsgaWQsIHZhbHVlIH0pID0+IHtcbiAgICAgIGNvbnN0IHsgc2FuZGJveGVzIH0gPSBhd2FpdCBnZXRTdG9yZXMoKTtcbiAgICAgIGF3YWl0IHNhbmRib3hlcy5zZXQoaWQsIHZhbHVlKTtcbiAgICB9LFxuXG4gICAgXCJzYW5kYm94LnVwZGF0ZVwiOiBhc3luYyAoeyBpZCwgdXBkYXRlcyB9KSA9PiB7XG4gICAgICBjb25zdCB7IHNhbmRib3hlcyB9ID0gYXdhaXQgZ2V0U3RvcmVzKCk7XG4gICAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHNhbmRib3hlcy5nZXRWYWx1ZShpZCk7XG4gICAgICBpZiAoIWV4aXN0aW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHt0YWd9W3NhbmRib3gudXBkYXRlXSBubyBzYW5kYm94IGZvdW5kIHdpdGggaWQgXCIke2lkfVwiYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgdXBkYXRlZCA9IHsgLi4uZXhpc3RpbmcsIC4uLnVwZGF0ZXMgfTtcbiAgICAgIGF3YWl0IHNhbmRib3hlcy5zZXQoaWQsIHVwZGF0ZWQpO1xuICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgfSxcblxuICAgIFwic2V0dXAuZ2V0XCI6IGFzeW5jICh7IGlkIH0pID0+IHtcbiAgICAgIGNvbnN0IHsgc2V0dXBzIH0gPSBhd2FpdCBnZXRTdG9yZXMoKTtcbiAgICAgIHJldHVybiAoYXdhaXQgc2V0dXBzLmdldFZhbHVlKGlkKSkgPz8gbnVsbDtcbiAgICB9LFxuXG4gICAgXCJzZXR1cC5zZXRcIjogYXN5bmMgKHsgaWQsIHZhbHVlIH0pID0+IHtcbiAgICAgIGNvbnN0IHsgc2V0dXBzIH0gPSBhd2FpdCBnZXRTdG9yZXMoKTtcbiAgICAgIGF3YWl0IHNldHVwcy5zZXQoaWQsIHZhbHVlKTtcbiAgICB9LFxuICB9O1xufVxuIiwgImltcG9ydCB0eXBlIHsgU3RvcmFnZUhhbmRsZXJzIH0gZnJvbSBcIi4uL2FkYXB0ZXJcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZSwgUGFydCwgU2FuZGJveCwgU2Vzc2lvbiwgU2V0dXAgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxubGV0IF9mczogdHlwZW9mIGltcG9ydChcIm5vZGU6ZnMvcHJvbWlzZXNcIikgfCB1bmRlZmluZWQ7XG5sZXQgX3BhdGg6IHR5cGVvZiBpbXBvcnQoXCJub2RlOnBhdGhcIikgfCB1bmRlZmluZWQ7XG5cbmFzeW5jIGZ1bmN0aW9uIGZzKCkge1xuICBpZiAoIV9mcykge1xuICAgIF9mcyA9IGF3YWl0IGltcG9ydChcIm5vZGU6ZnMvcHJvbWlzZXNcIik7XG4gIH1cbiAgcmV0dXJuIF9mcztcbn1cbmFzeW5jIGZ1bmN0aW9uIHBhdGgoKSB7XG4gIGlmICghX3BhdGgpIHtcbiAgICBfcGF0aCA9IGF3YWl0IGltcG9ydChcIm5vZGU6cGF0aFwiKTtcbiAgfVxuICByZXR1cm4gX3BhdGg7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0b3JlPFQ+KGRpcjogc3RyaW5nKSB7XG4gIGNvbnN0IGZpbGVQYXRoID0gYXN5bmMgKGtleTogc3RyaW5nKSA9PlxuICAgIChhd2FpdCBwYXRoKCkpLmpvaW4oZGlyLCBgJHtrZXl9Lmpzb25gKTtcblxuICByZXR1cm4ge1xuICAgIGFzeW5jIGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCAoYXdhaXQgZnMoKSkucmVhZEZpbGUoYXdhaXQgZmlsZVBhdGgoa2V5KSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZGF0YSkgYXMgVDtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHNldChrZXk6IHN0cmluZywgdmFsdWU6IFQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGNvbnN0IHAgPSBhd2FpdCBmaWxlUGF0aChrZXkpO1xuICAgICAgY29uc3QgeyBta2Rpciwgd3JpdGVGaWxlIH0gPSBhd2FpdCBmcygpO1xuICAgICAgY29uc3QgeyBkaXJuYW1lIH0gPSBhd2FpdCBwYXRoKCk7XG4gICAgICBhd2FpdCBta2RpcihkaXJuYW1lKHApLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShwLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMikpO1xuICAgIH0sXG4gICAgYXN5bmMgdXBkYXRlKGtleTogc3RyaW5nLCB1cGRhdGVzOiBQYXJ0aWFsPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgICBjb25zdCBwID0gYXdhaXQgZmlsZVBhdGgoa2V5KTtcbiAgICAgIGNvbnN0IHsgcmVhZEZpbGUsIG1rZGlyLCB3cml0ZUZpbGUgfSA9IGF3YWl0IGZzKCk7XG4gICAgICBjb25zdCB7IGRpcm5hbWUgfSA9IGF3YWl0IHBhdGgoKTtcbiAgICAgIGxldCBleGlzdGluZzogVDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWFkRmlsZShwLCBcInV0Zi04XCIpO1xuICAgICAgICBleGlzdGluZyA9IEpTT04ucGFyc2UoZGF0YSkgYXMgVDtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCBmb3VuZDogJHtrZXl9YCk7XG4gICAgICB9XG4gICAgICBjb25zdCB1cGRhdGVkID0geyAuLi5leGlzdGluZywgLi4udXBkYXRlcyB9O1xuICAgICAgYXdhaXQgbWtkaXIoZGlybmFtZShwKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICBhd2FpdCB3cml0ZUZpbGUocCwgSlNPTi5zdHJpbmdpZnkodXBkYXRlZCwgbnVsbCwgMikpO1xuICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgfSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEFsbEZyb21EaXI8VD4oZGlyOiBzdHJpbmcpOiBQcm9taXNlPFRbXT4ge1xuICBjb25zdCB7IHJlYWRkaXIsIHJlYWRGaWxlIH0gPSBhd2FpdCBmcygpO1xuICBjb25zdCB7IGpvaW4gfSA9IGF3YWl0IHBhdGgoKTtcbiAgbGV0IGZpbGVzOiBzdHJpbmdbXTtcbiAgdHJ5IHtcbiAgICBmaWxlcyA9IGF3YWl0IHJlYWRkaXIoZGlyKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IHJlc3VsdDogVFtdID0gW107XG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGlmICghZmlsZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWFkRmlsZShqb2luKGRpciwgZmlsZSksIFwidXRmLThcIik7XG4gICAgICByZXN1bHQucHVzaChKU09OLnBhcnNlKGRhdGEpIGFzIFQpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2tpcCBjb3JydXB0IGZpbGVzXG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbFN0b3JhZ2Uob3B0cz86IHsgZGlyPzogc3RyaW5nIH0pOiBTdG9yYWdlSGFuZGxlcnMge1xuICBjb25zdCBkaXIgPSBvcHRzPy5kaXIgPz8gXCIuYWdlbnRcIjtcblxuICBjb25zdCBzZXNzaW9uU3RvcmUgPSBjcmVhdGVTdG9yZTxTZXNzaW9uPihgJHtkaXJ9L3Nlc3Npb25gKTtcbiAgY29uc3QgbWVzc2FnZVN0b3JlID0gY3JlYXRlU3RvcmU8TWVzc2FnZT4oYCR7ZGlyfS9tZXNzYWdlYCk7XG4gIGNvbnN0IHBhcnRTdG9yZSA9IGNyZWF0ZVN0b3JlPFBhcnQ+KGAke2Rpcn0vcGFydGApO1xuICBjb25zdCBzYW5kYm94U3RvcmUgPSBjcmVhdGVTdG9yZTxTYW5kYm94PihgJHtkaXJ9L3NhbmRib3hgKTtcbiAgY29uc3Qgc2V0dXBTdG9yZSA9IGNyZWF0ZVN0b3JlPFNldHVwPihgJHtkaXJ9L3NldHVwYCk7XG4gIGNvbnN0IG1lc3NhZ2VEaXIgPSBgJHtkaXJ9L21lc3NhZ2VgO1xuICBjb25zdCBwYXJ0RGlyID0gYCR7ZGlyfS9wYXJ0YDtcblxuICByZXR1cm4ge1xuICAgIFwic2Vzc2lvbi5nZXRcIjogKHsgaWQgfSkgPT4gc2Vzc2lvblN0b3JlLmdldChpZCksXG4gICAgXCJzZXNzaW9uLnNldFwiOiAoeyBpZCwgdmFsdWUgfSkgPT4gc2Vzc2lvblN0b3JlLnNldChpZCwgdmFsdWUpLFxuICAgIFwic2Vzc2lvbi51cGRhdGVcIjogKHsgaWQsIHVwZGF0ZXMgfSkgPT4gc2Vzc2lvblN0b3JlLnVwZGF0ZShpZCwgdXBkYXRlcyksXG5cbiAgICBcIm1lc3NhZ2UuZ2V0XCI6ICh7IGlkIH0pID0+IG1lc3NhZ2VTdG9yZS5nZXQoaWQpLFxuICAgIFwibWVzc2FnZS5zZXRcIjogKHsgaWQsIHZhbHVlIH0pID0+IG1lc3NhZ2VTdG9yZS5zZXQoaWQsIHZhbHVlKSxcbiAgICBcIm1lc3NhZ2UudXBkYXRlXCI6ICh7IGlkLCB1cGRhdGVzIH0pID0+IG1lc3NhZ2VTdG9yZS51cGRhdGUoaWQsIHVwZGF0ZXMpLFxuICAgIFwibWVzc2FnZS5saXN0QnlTZXNzaW9uXCI6IGFzeW5jICh7IHNlc3Npb25JZCB9KSA9PiB7XG4gICAgICBjb25zdCBhbGwgPSBhd2FpdCByZWFkQWxsRnJvbURpcjxNZXNzYWdlPihtZXNzYWdlRGlyKTtcbiAgICAgIHJldHVybiBhbGwuZmlsdGVyKChtKSA9PiBtLnNlc3Npb25JZCA9PT0gc2Vzc2lvbklkKTtcbiAgICB9LFxuXG4gICAgXCJwYXJ0LmdldFwiOiAoeyBpZCB9KSA9PiBwYXJ0U3RvcmUuZ2V0KGlkKSxcbiAgICBcInBhcnQuc2V0XCI6ICh7IGlkLCB2YWx1ZSB9KSA9PiBwYXJ0U3RvcmUuc2V0KGlkLCB2YWx1ZSksXG4gICAgXCJwYXJ0Lmxpc3RCeVNlc3Npb25cIjogYXN5bmMgKHsgc2Vzc2lvbklkIH0pID0+IHtcbiAgICAgIGNvbnN0IGFsbCA9IGF3YWl0IHJlYWRBbGxGcm9tRGlyPFBhcnQ+KHBhcnREaXIpO1xuICAgICAgcmV0dXJuIGFsbC5maWx0ZXIoKHApID0+IHAuc2Vzc2lvbklkID09PSBzZXNzaW9uSWQpO1xuICAgIH0sXG5cbiAgICBcInNhbmRib3guZ2V0XCI6ICh7IGlkIH0pID0+IHNhbmRib3hTdG9yZS5nZXQoaWQpLFxuICAgIFwic2FuZGJveC5zZXRcIjogKHsgaWQsIHZhbHVlIH0pID0+IHNhbmRib3hTdG9yZS5zZXQoaWQsIHZhbHVlKSxcbiAgICBcInNhbmRib3gudXBkYXRlXCI6ICh7IGlkLCB1cGRhdGVzIH0pID0+IHNhbmRib3hTdG9yZS51cGRhdGUoaWQsIHVwZGF0ZXMpLFxuXG4gICAgXCJzZXR1cC5nZXRcIjogKHsgaWQgfSkgPT4gc2V0dXBTdG9yZS5nZXQoaWQpLFxuICAgIFwic2V0dXAuc2V0XCI6ICh7IGlkLCB2YWx1ZSB9KSA9PiBzZXR1cFN0b3JlLnNldChpZCwgdmFsdWUpLFxuICB9O1xufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBzaG91bGRGYWxsYmFja1RvS1YyKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gISFwcm9jZXNzLmVudi5CTE9CX1JFQURfV1JJVEVfVE9LRU47XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ0FBLG1CQUF5RDtBQThDbEQsSUFBTSxjQUFOLE1BQU0sYUFBWTtBQUFBLEVBQ3ZCO0FBQUEsRUFFQSxZQUFZLE9BQW9CO0FBQzlCLFNBQUssUUFBUTtBQUFBLEVBQ2Y7QUFBQSxFQUVBLFFBQVEsK0JBQWtCLEVBQUUsVUFBdUI7QUFDakQsV0FBTyxFQUFFLE9BQU8sU0FBUyxNQUFNO0FBQUEsRUFDakM7QUFBQSxFQUVBLFFBQVEsaUNBQW9CLEVBQUUsTUFBOEI7QUFDMUQsV0FBTyxJQUFJLGFBQVksS0FBSyxLQUFLO0FBQUEsRUFDbkM7QUFBQTtBQUFBLEVBR0EsR0FBRyxVQUF5QztBQUUxQyxXQUFRLFNBQVMsS0FBSyxNQUFNLE1BQU0sRUFBVSxLQUFLLEtBQUs7QUFBQSxFQUN4RDtBQUNGO0FBK0NBLFNBQVMsZUFBZSxHQUEyQztBQUNqRSxTQUFPLE9BQU8sTUFBTTtBQUN0QjtBQUVBLFNBQVMsaUJBQWlCLElBQWtDO0FBQzFELFNBQU87QUFBQSxJQUNMLFNBQVM7QUFBQSxNQUNQLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsUUFBUSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBQUEsTUFDOUQsS0FBSyxDQUFDLElBQUksVUFDUixHQUFHLElBQUksWUFBWSxFQUFFLFFBQVEsZUFBZSxJQUFJLE1BQU0sQ0FBQyxDQUFDO0FBQUEsTUFDMUQsUUFBUSxDQUFDLElBQUksWUFDWCxHQUFHLElBQUksWUFBWSxFQUFFLFFBQVEsa0JBQWtCLElBQUksUUFBUSxDQUFDLENBQUM7QUFBQSxJQUNqRTtBQUFBLElBQ0EsU0FBUztBQUFBLE1BQ1AsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxRQUFRLGVBQWUsR0FBRyxDQUFDLENBQUM7QUFBQSxNQUM5RCxLQUFLLENBQUMsSUFBSSxVQUNSLEdBQUcsSUFBSSxZQUFZLEVBQUUsUUFBUSxlQUFlLElBQUksTUFBTSxDQUFDLENBQUM7QUFBQSxNQUMxRCxRQUFRLENBQUMsSUFBSSxZQUNYLEdBQUcsSUFBSSxZQUFZLEVBQUUsUUFBUSxrQkFBa0IsSUFBSSxRQUFRLENBQUMsQ0FBQztBQUFBLE1BQy9ELGVBQWUsQ0FBQyxjQUNkLEdBQUcsSUFBSSxZQUFZLEVBQUUsUUFBUSx5QkFBeUIsVUFBVSxDQUFDLENBQUM7QUFBQSxJQUN0RTtBQUFBLElBQ0EsTUFBTTtBQUFBLE1BQ0osS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxRQUFRLFlBQVksR0FBRyxDQUFDLENBQUM7QUFBQSxNQUMzRCxLQUFLLENBQUMsSUFBSSxVQUNSLEdBQUcsSUFBSSxZQUFZLEVBQUUsUUFBUSxZQUFZLElBQUksTUFBTSxDQUFDLENBQUM7QUFBQSxNQUN2RCxlQUFlLENBQUMsY0FDZCxHQUFHLElBQUksWUFBWSxFQUFFLFFBQVEsc0JBQXNCLFVBQVUsQ0FBQyxDQUFDO0FBQUEsSUFDbkU7QUFBQSxJQUNBLFNBQVM7QUFBQSxNQUNQLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsUUFBUSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBQUEsTUFDOUQsS0FBSyxDQUFDLElBQUksVUFDUixHQUFHLElBQUksWUFBWSxFQUFFLFFBQVEsZUFBZSxJQUFJLE1BQU0sQ0FBQyxDQUFDO0FBQUEsTUFDMUQsUUFBUSxDQUFDLElBQUksWUFDWCxHQUFHLElBQUksWUFBWSxFQUFFLFFBQVEsa0JBQWtCLElBQUksUUFBUSxDQUFDLENBQUM7QUFBQSxJQUNqRTtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ0wsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxRQUFRLGFBQWEsR0FBRyxDQUFDLENBQUM7QUFBQSxNQUM1RCxLQUFLLENBQUMsSUFBSSxVQUNSLEdBQUcsSUFBSSxZQUFZLEVBQUUsUUFBUSxhQUFhLElBQUksTUFBTSxDQUFDLENBQUM7QUFBQSxJQUMxRDtBQUFBLEVBQ0Y7QUFDRjtBQUVBLFNBQVMsYUFBYSxHQUE2QjtBQUNqRCxTQUFPO0FBQUEsSUFDTCxTQUFTO0FBQUEsTUFDUCxLQUFLLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUFBLE1BQ3BDLEtBQUssQ0FBQyxJQUFJLFVBQVUsRUFBRSxhQUFhLEVBQUUsRUFBRSxJQUFJLE1BQU0sQ0FBQztBQUFBLE1BQ2xELFFBQVEsQ0FBQyxJQUFJLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLElBQUksUUFBUSxDQUFDO0FBQUEsSUFDOUQ7QUFBQSxJQUNBLFNBQVM7QUFBQSxNQUNQLEtBQUssQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQUEsTUFDcEMsS0FBSyxDQUFDLElBQUksVUFBVSxFQUFFLGFBQWEsRUFBRSxFQUFFLElBQUksTUFBTSxDQUFDO0FBQUEsTUFDbEQsUUFBUSxDQUFDLElBQUksWUFBWSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxRQUFRLENBQUM7QUFBQSxNQUM1RCxlQUFlLENBQUMsY0FBYyxFQUFFLHVCQUF1QixFQUFFLEVBQUUsVUFBVSxDQUFDO0FBQUEsSUFDeEU7QUFBQSxJQUNBLE1BQU07QUFBQSxNQUNKLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQUEsTUFDakMsS0FBSyxDQUFDLElBQUksVUFBVSxFQUFFLFVBQVUsRUFBRSxFQUFFLElBQUksTUFBTSxDQUFDO0FBQUEsTUFDL0MsZUFBZSxDQUFDLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLFVBQVUsQ0FBQztBQUFBLElBQ3JFO0FBQUEsSUFDQSxTQUFTO0FBQUEsTUFDUCxLQUFLLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUFBLE1BQ3BDLEtBQUssQ0FBQyxJQUFJLFVBQVUsRUFBRSxhQUFhLEVBQUUsRUFBRSxJQUFJLE1BQU0sQ0FBQztBQUFBLE1BQ2xELFFBQVEsQ0FBQyxJQUFJLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLElBQUksUUFBUSxDQUFDO0FBQUEsSUFDOUQ7QUFBQSxJQUNBLE9BQU87QUFBQSxNQUNMLEtBQUssQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQUEsTUFDbEMsS0FBSyxDQUFDLElBQUksVUFBVSxFQUFFLFdBQVcsRUFBRSxFQUFFLElBQUksTUFBTSxDQUFDO0FBQUEsSUFDbEQ7QUFBQSxFQUNGO0FBQ0Y7QUFFTyxTQUFTLFVBQVUsR0FBMEI7QUFDbEQsU0FBTyxlQUFlLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLGFBQWEsQ0FBQztBQUNqRTs7O0FDeExBLGVBQWUsYUFBYSxRQUFnQjtBQUMxQyxRQUFNLEVBQUUsU0FBUyxJQUFJLE1BQU0sT0FBTyxhQUFhO0FBQy9DLFFBQU0sS0FBSyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUUsU0FBUyxRQUFRO0FBRWpELFNBQU87QUFBQSxJQUNMLFVBQVUsR0FBRyxTQUFrQixVQUFVO0FBQUEsSUFDekMsVUFBVSxHQUFHLFNBQWtCLFVBQVUsRUFBRSxZQUFZO0FBQUEsTUFDckQsYUFBYSxFQUFFLEtBQUssQ0FBQyxNQUFlLEVBQUUsVUFBVTtBQUFBLElBQ2xELENBQUM7QUFBQSxJQUNELE9BQU8sR0FBRyxTQUFlLE9BQU8sRUFBRSxZQUFZO0FBQUEsTUFDNUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxNQUFZLEVBQUUsVUFBVTtBQUFBLElBQy9DLENBQUM7QUFBQSxJQUNELFdBQVcsR0FBRyxTQUFrQixVQUFVO0FBQUEsSUFDMUMsUUFBUSxHQUFHLFNBQWdCLFFBQVE7QUFBQSxFQUNyQztBQUNGO0FBRU8sU0FBUyxrQkFBa0IsTUFBMkM7QUFDM0UsTUFBSTtBQUVKLFdBQVMsWUFBWTtBQUNuQixRQUFJLENBQUMsZUFBZTtBQUNsQixzQkFBZ0IsYUFBYSxLQUFLLE1BQU07QUFBQSxJQUMxQztBQUNBLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxNQUFNLFVBQVUsS0FBSyxNQUFNO0FBRWpDLFNBQU87QUFBQSxJQUNMLGVBQWUsT0FBTyxFQUFFLEdBQUcsTUFBTTtBQUMvQixZQUFNLEVBQUUsU0FBUyxJQUFJLE1BQU0sVUFBVTtBQUNyQyxhQUFRLE1BQU0sU0FBUyxTQUFTLEVBQUUsS0FBTTtBQUFBLElBQzFDO0FBQUEsSUFFQSxlQUFlLE9BQU8sRUFBRSxJQUFJLE1BQU0sTUFBTTtBQUN0QyxZQUFNLEVBQUUsU0FBUyxJQUFJLE1BQU0sVUFBVTtBQUNyQyxZQUFNLFNBQVMsSUFBSSxJQUFJLEtBQUs7QUFBQSxJQUM5QjtBQUFBLElBRUEsa0JBQWtCLE9BQU8sRUFBRSxJQUFJLFFBQVEsTUFBTTtBQUMzQyxZQUFNLEVBQUUsU0FBUyxJQUFJLE1BQU0sVUFBVTtBQUNyQyxZQUFNLFdBQVcsTUFBTSxTQUFTLFNBQVMsRUFBRTtBQUMzQyxVQUFJLENBQUMsVUFBVTtBQUNiLGNBQU0sSUFBSTtBQUFBLFVBQ1IsR0FBRyxHQUFHLDhDQUE4QyxFQUFFO0FBQUEsUUFDeEQ7QUFBQSxNQUNGO0FBQ0EsWUFBTSxVQUFVLEVBQUUsR0FBRyxVQUFVLEdBQUcsUUFBUTtBQUMxQyxZQUFNLFNBQVMsSUFBSSxJQUFJLE9BQU87QUFDOUIsYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUVBLGVBQWUsT0FBTyxFQUFFLEdBQUcsTUFBTTtBQUMvQixZQUFNLEVBQUUsU0FBUyxJQUFJLE1BQU0sVUFBVTtBQUNyQyxhQUFRLE1BQU0sU0FBUyxTQUFTLEVBQUUsS0FBTTtBQUFBLElBQzFDO0FBQUEsSUFFQSxlQUFlLE9BQU8sRUFBRSxJQUFJLE1BQU0sTUFBTTtBQUN0QyxZQUFNLEVBQUUsU0FBUyxJQUFJLE1BQU0sVUFBVTtBQUNyQyxZQUFNLFNBQVMsSUFBSSxJQUFJLEtBQUs7QUFBQSxJQUM5QjtBQUFBLElBRUEsa0JBQWtCLE9BQU8sRUFBRSxJQUFJLFFBQVEsTUFBTTtBQUMzQyxZQUFNLEVBQUUsU0FBUyxJQUFJLE1BQU0sVUFBVTtBQUNyQyxZQUFNLFdBQVcsTUFBTSxTQUFTLFNBQVMsRUFBRTtBQUMzQyxVQUFJLENBQUMsVUFBVTtBQUNiLGNBQU0sSUFBSTtBQUFBLFVBQ1IsR0FBRyxHQUFHLDhDQUE4QyxFQUFFO0FBQUEsUUFDeEQ7QUFBQSxNQUNGO0FBQ0EsWUFBTSxVQUFVLEVBQUUsR0FBRyxVQUFVLEdBQUcsUUFBUTtBQUMxQyxZQUFNLFNBQVMsSUFBSSxJQUFJLE9BQU87QUFDOUIsYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUVBLHlCQUF5QixPQUFPLEVBQUUsVUFBVSxNQUFNO0FBQ2hELFlBQU0sRUFBRSxTQUFTLElBQUksTUFBTSxVQUFVO0FBQ3JDLFlBQU0sU0FBb0IsQ0FBQztBQUMzQix1QkFBaUIsQ0FBQyxFQUFFLEtBQUssS0FBSyxTQUFTLFFBQVE7QUFBQSxRQUM3QyxhQUFhO0FBQUEsTUFDZixDQUFDLEdBQUc7QUFDRixlQUFPLEtBQUssTUFBTSxNQUFNLEtBQUs7QUFBQSxNQUMvQjtBQUNBLGFBQU87QUFBQSxJQUNUO0FBQUEsSUFFQSxZQUFZLE9BQU8sRUFBRSxHQUFHLE1BQU07QUFDNUIsWUFBTSxFQUFFLE1BQU0sSUFBSSxNQUFNLFVBQVU7QUFDbEMsYUFBUSxNQUFNLE1BQU0sU0FBUyxFQUFFLEtBQU07QUFBQSxJQUN2QztBQUFBLElBRUEsWUFBWSxPQUFPLEVBQUUsSUFBSSxNQUFNLE1BQU07QUFDbkMsWUFBTSxFQUFFLE1BQU0sSUFBSSxNQUFNLFVBQVU7QUFDbEMsWUFBTSxNQUFNLElBQUksSUFBSSxLQUFLO0FBQUEsSUFDM0I7QUFBQSxJQUVBLHNCQUFzQixPQUFPLEVBQUUsVUFBVSxNQUFNO0FBQzdDLFlBQU0sRUFBRSxNQUFNLElBQUksTUFBTSxVQUFVO0FBQ2xDLFlBQU0sU0FBaUIsQ0FBQztBQUN4Qix1QkFBaUIsQ0FBQyxFQUFFLEtBQUssS0FBSyxNQUFNLFFBQVE7QUFBQSxRQUMxQyxhQUFhO0FBQUEsTUFDZixDQUFDLEdBQUc7QUFDRixlQUFPLEtBQUssTUFBTSxNQUFNLEtBQUs7QUFBQSxNQUMvQjtBQUNBLGFBQU87QUFBQSxJQUNUO0FBQUEsSUFFQSxlQUFlLE9BQU8sRUFBRSxHQUFHLE1BQU07QUFDL0IsWUFBTSxFQUFFLFVBQVUsSUFBSSxNQUFNLFVBQVU7QUFDdEMsYUFBUSxNQUFNLFVBQVUsU0FBUyxFQUFFLEtBQU07QUFBQSxJQUMzQztBQUFBLElBRUEsZUFBZSxPQUFPLEVBQUUsSUFBSSxNQUFNLE1BQU07QUFDdEMsWUFBTSxFQUFFLFVBQVUsSUFBSSxNQUFNLFVBQVU7QUFDdEMsWUFBTSxVQUFVLElBQUksSUFBSSxLQUFLO0FBQUEsSUFDL0I7QUFBQSxJQUVBLGtCQUFrQixPQUFPLEVBQUUsSUFBSSxRQUFRLE1BQU07QUFDM0MsWUFBTSxFQUFFLFVBQVUsSUFBSSxNQUFNLFVBQVU7QUFDdEMsWUFBTSxXQUFXLE1BQU0sVUFBVSxTQUFTLEVBQUU7QUFDNUMsVUFBSSxDQUFDLFVBQVU7QUFDYixjQUFNLElBQUk7QUFBQSxVQUNSLEdBQUcsR0FBRyw4Q0FBOEMsRUFBRTtBQUFBLFFBQ3hEO0FBQUEsTUFDRjtBQUNBLFlBQU0sVUFBVSxFQUFFLEdBQUcsVUFBVSxHQUFHLFFBQVE7QUFDMUMsWUFBTSxVQUFVLElBQUksSUFBSSxPQUFPO0FBQy9CLGFBQU87QUFBQSxJQUNUO0FBQUEsSUFFQSxhQUFhLE9BQU8sRUFBRSxHQUFHLE1BQU07QUFDN0IsWUFBTSxFQUFFLE9BQU8sSUFBSSxNQUFNLFVBQVU7QUFDbkMsYUFBUSxNQUFNLE9BQU8sU0FBUyxFQUFFLEtBQU07QUFBQSxJQUN4QztBQUFBLElBRUEsYUFBYSxPQUFPLEVBQUUsSUFBSSxNQUFNLE1BQU07QUFDcEMsWUFBTSxFQUFFLE9BQU8sSUFBSSxNQUFNLFVBQVU7QUFDbkMsWUFBTSxPQUFPLElBQUksSUFBSSxLQUFLO0FBQUEsSUFDNUI7QUFBQSxFQUNGO0FBQ0Y7OztBQy9JQSxJQUFJO0FBQ0osSUFBSTtBQUVKLGVBQWUsS0FBSztBQUNsQixNQUFJLENBQUMsS0FBSztBQUNSLFVBQU0sTUFBTSxPQUFPLGFBQWtCO0FBQUEsRUFDdkM7QUFDQSxTQUFPO0FBQ1Q7QUFDQSxlQUFlLE9BQU87QUFDcEIsTUFBSSxDQUFDLE9BQU87QUFDVixZQUFRLE1BQU0sT0FBTyxNQUFXO0FBQUEsRUFDbEM7QUFDQSxTQUFPO0FBQ1Q7QUFFQSxTQUFTLFlBQWUsS0FBYTtBQUNuQyxRQUFNLFdBQVcsT0FBTyxTQUNyQixNQUFNLEtBQUssR0FBRyxLQUFLLEtBQUssR0FBRyxHQUFHLE9BQU87QUFFeEMsU0FBTztBQUFBLElBQ0wsTUFBTSxJQUFJLEtBQWdDO0FBQ3hDLFVBQUk7QUFDRixjQUFNLE9BQU8sT0FBTyxNQUFNLEdBQUcsR0FBRyxTQUFTLE1BQU0sU0FBUyxHQUFHLEdBQUcsT0FBTztBQUNyRSxlQUFPLEtBQUssTUFBTSxJQUFJO0FBQUEsTUFDeEIsUUFBUTtBQUNOLGVBQU87QUFBQSxNQUNUO0FBQUEsSUFDRjtBQUFBLElBQ0EsTUFBTSxJQUFJLEtBQWEsT0FBeUI7QUFDOUMsWUFBTSxJQUFJLE1BQU0sU0FBUyxHQUFHO0FBQzVCLFlBQU0sRUFBRSxPQUFPLFVBQVUsSUFBSSxNQUFNLEdBQUc7QUFDdEMsWUFBTSxFQUFFLFFBQVEsSUFBSSxNQUFNLEtBQUs7QUFDL0IsWUFBTSxNQUFNLFFBQVEsQ0FBQyxHQUFHLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFDM0MsWUFBTSxVQUFVLEdBQUcsS0FBSyxVQUFVLE9BQU8sTUFBTSxDQUFDLENBQUM7QUFBQSxJQUNuRDtBQUFBLElBQ0EsTUFBTSxPQUFPLEtBQWEsU0FBaUM7QUFDekQsWUFBTSxJQUFJLE1BQU0sU0FBUyxHQUFHO0FBQzVCLFlBQU0sRUFBRSxVQUFVLE9BQU8sVUFBVSxJQUFJLE1BQU0sR0FBRztBQUNoRCxZQUFNLEVBQUUsUUFBUSxJQUFJLE1BQU0sS0FBSztBQUMvQixVQUFJO0FBQ0osVUFBSTtBQUNGLGNBQU0sT0FBTyxNQUFNLFNBQVMsR0FBRyxPQUFPO0FBQ3RDLG1CQUFXLEtBQUssTUFBTSxJQUFJO0FBQUEsTUFDNUIsUUFBUTtBQUNOLGNBQU0sSUFBSSxNQUFNLGNBQWMsR0FBRyxFQUFFO0FBQUEsTUFDckM7QUFDQSxZQUFNLFVBQVUsRUFBRSxHQUFHLFVBQVUsR0FBRyxRQUFRO0FBQzFDLFlBQU0sTUFBTSxRQUFRLENBQUMsR0FBRyxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQzNDLFlBQU0sVUFBVSxHQUFHLEtBQUssVUFBVSxTQUFTLE1BQU0sQ0FBQyxDQUFDO0FBQ25ELGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUNGO0FBRUEsZUFBZSxlQUFrQixLQUEyQjtBQUMxRCxRQUFNLEVBQUUsU0FBUyxTQUFTLElBQUksTUFBTSxHQUFHO0FBQ3ZDLFFBQU0sRUFBRSxLQUFLLElBQUksTUFBTSxLQUFLO0FBQzVCLE1BQUk7QUFDSixNQUFJO0FBQ0YsWUFBUSxNQUFNLFFBQVEsR0FBRztBQUFBLEVBQzNCLFFBQVE7QUFDTixXQUFPLENBQUM7QUFBQSxFQUNWO0FBQ0EsUUFBTSxTQUFjLENBQUM7QUFDckIsYUFBVyxRQUFRLE9BQU87QUFDeEIsUUFBSSxDQUFDLEtBQUssU0FBUyxPQUFPLEdBQUc7QUFDM0I7QUFBQSxJQUNGO0FBQ0EsUUFBSTtBQUNGLFlBQU0sT0FBTyxNQUFNLFNBQVMsS0FBSyxLQUFLLElBQUksR0FBRyxPQUFPO0FBQ3BELGFBQU8sS0FBSyxLQUFLLE1BQU0sSUFBSSxDQUFNO0FBQUEsSUFDbkMsUUFBUTtBQUFBLElBRVI7QUFBQSxFQUNGO0FBQ0EsU0FBTztBQUNUO0FBRU8sU0FBUyxhQUFhLE1BQTBDO0FBQ3JFLFFBQU0sTUFBTSxNQUFNLE9BQU87QUFFekIsUUFBTSxlQUFlLFlBQXFCLEdBQUcsR0FBRyxVQUFVO0FBQzFELFFBQU0sZUFBZSxZQUFxQixHQUFHLEdBQUcsVUFBVTtBQUMxRCxRQUFNLFlBQVksWUFBa0IsR0FBRyxHQUFHLE9BQU87QUFDakQsUUFBTSxlQUFlLFlBQXFCLEdBQUcsR0FBRyxVQUFVO0FBQzFELFFBQU0sYUFBYSxZQUFtQixHQUFHLEdBQUcsUUFBUTtBQUNwRCxRQUFNLGFBQWEsR0FBRyxHQUFHO0FBQ3pCLFFBQU0sVUFBVSxHQUFHLEdBQUc7QUFFdEIsU0FBTztBQUFBLElBQ0wsZUFBZSxDQUFDLEVBQUUsR0FBRyxNQUFNLGFBQWEsSUFBSSxFQUFFO0FBQUEsSUFDOUMsZUFBZSxDQUFDLEVBQUUsSUFBSSxNQUFNLE1BQU0sYUFBYSxJQUFJLElBQUksS0FBSztBQUFBLElBQzVELGtCQUFrQixDQUFDLEVBQUUsSUFBSSxRQUFRLE1BQU0sYUFBYSxPQUFPLElBQUksT0FBTztBQUFBLElBRXRFLGVBQWUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxhQUFhLElBQUksRUFBRTtBQUFBLElBQzlDLGVBQWUsQ0FBQyxFQUFFLElBQUksTUFBTSxNQUFNLGFBQWEsSUFBSSxJQUFJLEtBQUs7QUFBQSxJQUM1RCxrQkFBa0IsQ0FBQyxFQUFFLElBQUksUUFBUSxNQUFNLGFBQWEsT0FBTyxJQUFJLE9BQU87QUFBQSxJQUN0RSx5QkFBeUIsT0FBTyxFQUFFLFVBQVUsTUFBTTtBQUNoRCxZQUFNLE1BQU0sTUFBTSxlQUF3QixVQUFVO0FBQ3BELGFBQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLGNBQWMsU0FBUztBQUFBLElBQ3BEO0FBQUEsSUFFQSxZQUFZLENBQUMsRUFBRSxHQUFHLE1BQU0sVUFBVSxJQUFJLEVBQUU7QUFBQSxJQUN4QyxZQUFZLENBQUMsRUFBRSxJQUFJLE1BQU0sTUFBTSxVQUFVLElBQUksSUFBSSxLQUFLO0FBQUEsSUFDdEQsc0JBQXNCLE9BQU8sRUFBRSxVQUFVLE1BQU07QUFDN0MsWUFBTSxNQUFNLE1BQU0sZUFBcUIsT0FBTztBQUM5QyxhQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxjQUFjLFNBQVM7QUFBQSxJQUNwRDtBQUFBLElBRUEsZUFBZSxDQUFDLEVBQUUsR0FBRyxNQUFNLGFBQWEsSUFBSSxFQUFFO0FBQUEsSUFDOUMsZUFBZSxDQUFDLEVBQUUsSUFBSSxNQUFNLE1BQU0sYUFBYSxJQUFJLElBQUksS0FBSztBQUFBLElBQzVELGtCQUFrQixDQUFDLEVBQUUsSUFBSSxRQUFRLE1BQU0sYUFBYSxPQUFPLElBQUksT0FBTztBQUFBLElBRXRFLGFBQWEsQ0FBQyxFQUFFLEdBQUcsTUFBTSxXQUFXLElBQUksRUFBRTtBQUFBLElBQzFDLGFBQWEsQ0FBQyxFQUFFLElBQUksTUFBTSxNQUFNLFdBQVcsSUFBSSxJQUFJLEtBQUs7QUFBQSxFQUMxRDtBQUNGOzs7QUN4SE8sU0FBUyxzQkFBK0I7QUFDN0MsU0FBTyxDQUFDLENBQUMsUUFBUSxJQUFJO0FBQ3ZCOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/dist/storage.mjs
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
StorageStep,
|
|
3
|
+
kvStorageFallback,
|
|
4
|
+
localStorage,
|
|
5
|
+
shouldFallbackToKV2,
|
|
6
|
+
toStorage
|
|
7
|
+
} from "./chunk-IV75IMEW.mjs";
|
|
8
|
+
import "./chunk-BJTO5JO5.mjs";
|
|
9
|
+
export {
|
|
10
|
+
StorageStep,
|
|
11
|
+
kvStorageFallback,
|
|
12
|
+
localStorage,
|
|
13
|
+
shouldFallbackToKV2,
|
|
14
|
+
toStorage
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFtdLAogICJzb3VyY2VzQ29udGVudCI6IFtdLAogICJtYXBwaW5ncyI6ICIiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
vercelSandbox
|
|
3
|
+
} from "./chunk-RT72C52I.mjs";
|
|
4
|
+
import "./chunk-GKASMIBR.mjs";
|
|
5
|
+
import "./chunk-JO3JDCH5.mjs";
|
|
6
|
+
import "./chunk-MSWINCCM.mjs";
|
|
7
|
+
import "./chunk-BJTO5JO5.mjs";
|
|
8
|
+
export {
|
|
9
|
+
vercelSandbox
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFtdLAogICJzb3VyY2VzQ29udGVudCI6IFtdLAogICJtYXBwaW5ncyI6ICIiLAogICJuYW1lcyI6IFtdCn0K
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "experimental-agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -15,6 +15,16 @@
|
|
|
15
15
|
"import": "./dist/index.mjs",
|
|
16
16
|
"require": "./dist/index.js"
|
|
17
17
|
},
|
|
18
|
+
"./storage": {
|
|
19
|
+
"types": "./dist/storage.d.ts",
|
|
20
|
+
"import": "./dist/storage.mjs",
|
|
21
|
+
"require": "./dist/storage.js"
|
|
22
|
+
},
|
|
23
|
+
"./sandbox": {
|
|
24
|
+
"types": "./dist/sandbox.d.ts",
|
|
25
|
+
"import": "./dist/sandbox.mjs",
|
|
26
|
+
"require": "./dist/sandbox.js"
|
|
27
|
+
},
|
|
18
28
|
"./next": {
|
|
19
29
|
"types": "./dist/next.d.ts",
|
|
20
30
|
"import": "./dist/next.mjs",
|
|
@@ -29,30 +39,44 @@
|
|
|
29
39
|
"types": "./dist/client.d.ts",
|
|
30
40
|
"import": "./dist/client.mjs",
|
|
31
41
|
"require": "./dist/client.js"
|
|
42
|
+
},
|
|
43
|
+
"./lifecycle-workflow": {
|
|
44
|
+
"types": "./dist/lifecycle-workflow.d.ts",
|
|
45
|
+
"import": "./dist/lifecycle-workflow.mjs",
|
|
46
|
+
"require": "./dist/lifecycle-workflow.js"
|
|
47
|
+
},
|
|
48
|
+
"./lifecycle-workflow-steps": {
|
|
49
|
+
"types": "./dist/lifecycle-workflow-steps.d.ts",
|
|
50
|
+
"import": "./dist/lifecycle-workflow-steps.mjs",
|
|
51
|
+
"require": "./dist/lifecycle-workflow-steps.js"
|
|
32
52
|
}
|
|
33
53
|
},
|
|
34
54
|
"dependencies": {
|
|
35
55
|
"@swc/core": "^1.10.0",
|
|
56
|
+
"@vercel/kv2": "^0.0.18",
|
|
36
57
|
"@vercel/oidc": "^3.1.0",
|
|
58
|
+
"@vercel/sandbox": "1.7.1",
|
|
59
|
+
"@workflow/serde": "4.1.0-beta.2",
|
|
37
60
|
"better-all": "^0.0.5",
|
|
38
|
-
"errore": "^0.
|
|
61
|
+
"errore": "^0.14.0",
|
|
39
62
|
"fast-deep-equal": "^3.1.3",
|
|
40
|
-
"@vercel/sandbox": "1.7.1",
|
|
41
63
|
"ulid": "^3.0.2",
|
|
42
64
|
"zod": "^4.3.6"
|
|
43
65
|
},
|
|
44
66
|
"devDependencies": {
|
|
67
|
+
"@ai-sdk/react": "^3.0.88",
|
|
45
68
|
"@types/node": "^20.11.24",
|
|
46
69
|
"dotenv": "^17.2.3",
|
|
47
70
|
"next": "^16.0.0",
|
|
71
|
+
"react": "^19.2.4",
|
|
48
72
|
"tsup": "^8.0.2",
|
|
49
73
|
"typescript": "5.5.4",
|
|
50
74
|
"vitest": "^3.0.0",
|
|
75
|
+
"workflow": "4.1.0-beta.60",
|
|
51
76
|
"@agent/tsconfig": "0.0.0"
|
|
52
77
|
},
|
|
53
78
|
"peerDependencies": {
|
|
54
|
-
"ai": "^6.0.0"
|
|
55
|
-
"workflow": "*"
|
|
79
|
+
"ai": "^6.0.0"
|
|
56
80
|
},
|
|
57
81
|
"publishConfig": {
|
|
58
82
|
"access": "public"
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import * as workflow from 'workflow';
|
|
2
|
-
import { w as StorageConfig, h as RpcPayload, i as RpcResult } from './client-CEeSFGva.mjs';
|
|
3
|
-
import 'errore';
|
|
4
|
-
import 'ai';
|
|
5
|
-
import 'zod';
|
|
6
|
-
import '@vercel/sandbox';
|
|
7
|
-
|
|
8
|
-
type AgentInput = {
|
|
9
|
-
sessionId: string;
|
|
10
|
-
storageConfig: StorageConfig;
|
|
11
|
-
rpc: (params: RpcPayload) => Promise<RpcResult>;
|
|
12
|
-
};
|
|
13
|
-
type AgentMessageInput = {
|
|
14
|
-
assistantMessageId: string;
|
|
15
|
-
hookToken: string;
|
|
16
|
-
createdAt: number;
|
|
17
|
-
context: Record<string, unknown>;
|
|
18
|
-
};
|
|
19
|
-
type ApprovalResponse = {
|
|
20
|
-
approved: boolean;
|
|
21
|
-
reason?: string;
|
|
22
|
-
};
|
|
23
|
-
declare const agentMessageHook: workflow.TypedHook<AgentMessageInput, AgentMessageInput>;
|
|
24
|
-
declare const approvalHook: workflow.TypedHook<ApprovalResponse, ApprovalResponse>;
|
|
25
|
-
declare function agentWorkflow({ input, event, }: {
|
|
26
|
-
input: AgentInput;
|
|
27
|
-
event: AgentMessageInput;
|
|
28
|
-
}): Promise<void>;
|
|
29
|
-
|
|
30
|
-
export { type AgentInput, type AgentMessageInput, type ApprovalResponse, agentMessageHook, agentWorkflow, approvalHook };
|
package/dist/agent-workflow.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import * as workflow from 'workflow';
|
|
2
|
-
import { w as StorageConfig, h as RpcPayload, i as RpcResult } from './client-CEeSFGva.js';
|
|
3
|
-
import 'errore';
|
|
4
|
-
import 'ai';
|
|
5
|
-
import 'zod';
|
|
6
|
-
import '@vercel/sandbox';
|
|
7
|
-
|
|
8
|
-
type AgentInput = {
|
|
9
|
-
sessionId: string;
|
|
10
|
-
storageConfig: StorageConfig;
|
|
11
|
-
rpc: (params: RpcPayload) => Promise<RpcResult>;
|
|
12
|
-
};
|
|
13
|
-
type AgentMessageInput = {
|
|
14
|
-
assistantMessageId: string;
|
|
15
|
-
hookToken: string;
|
|
16
|
-
createdAt: number;
|
|
17
|
-
context: Record<string, unknown>;
|
|
18
|
-
};
|
|
19
|
-
type ApprovalResponse = {
|
|
20
|
-
approved: boolean;
|
|
21
|
-
reason?: string;
|
|
22
|
-
};
|
|
23
|
-
declare const agentMessageHook: workflow.TypedHook<AgentMessageInput, AgentMessageInput>;
|
|
24
|
-
declare const approvalHook: workflow.TypedHook<ApprovalResponse, ApprovalResponse>;
|
|
25
|
-
declare function agentWorkflow({ input, event, }: {
|
|
26
|
-
input: AgentInput;
|
|
27
|
-
event: AgentMessageInput;
|
|
28
|
-
}): Promise<void>;
|
|
29
|
-
|
|
30
|
-
export { type AgentInput, type AgentMessageInput, type ApprovalResponse, agentMessageHook, agentWorkflow, approvalHook };
|