experimental-agent 0.5.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{adapter-Cl735Kp4.d.mts → adapter-txsF6hou.d.mts} +2 -0
- package/dist/{adapter-Cl735Kp4.d.ts → adapter-txsF6hou.d.ts} +2 -0
- package/dist/{chunk-AB2JYY6A.mjs → chunk-CCWLV27N.mjs} +10 -2
- package/dist/chunk-CS2SEUAA.mjs +405 -0
- package/dist/{chunk-6MS4CGEZ.mjs → chunk-D35AQN7O.mjs} +5 -5
- package/dist/chunk-LZOMFHX3.mjs +38 -0
- package/dist/chunk-PH2FXKOU.mjs +9 -0
- package/dist/client-B2ohNvwc.d.mts +494 -0
- package/dist/client-BbQZtxca.d.ts +494 -0
- package/dist/client.mjs +1 -1
- package/dist/{docker-OBUQX5ZI.mjs → docker-FCSNVBEQ.mjs} +1 -1
- package/dist/{entry-Bs17QEiq.d.mts → entry-BUiucCNp.d.mts} +1 -1
- package/dist/{entry-QNyd4S1s.d.ts → entry-ok9EBUS3.d.ts} +1 -1
- package/dist/index.d.mts +475 -475
- package/dist/index.d.ts +475 -475
- package/dist/index.js +16595 -245
- package/dist/index.mjs +16406 -117
- package/dist/lifecycle-workflow-steps.d.mts +2 -2
- package/dist/lifecycle-workflow-steps.d.ts +2 -2
- package/dist/lifecycle-workflow-steps.mjs +1 -1
- package/dist/lifecycle-workflow.d.mts +2 -2
- package/dist/lifecycle-workflow.d.ts +2 -2
- package/dist/lifecycle-workflow.mjs +1 -1
- package/dist/{local-4C3V4EFS.mjs → local-NXHIUJTO.mjs} +1 -1
- package/dist/next/loader.js +10 -2
- package/dist/next/loader.mjs +2 -2
- package/dist/next.js +10 -2
- package/dist/next.mjs +2 -2
- package/dist/{process-manager-WQHAIVRB.mjs → process-manager-26NELLRU.mjs} +1 -1
- package/dist/react.d.mts +56 -0
- package/dist/react.d.ts +56 -0
- package/dist/react.js +144 -0
- package/dist/react.mjs +117 -0
- package/dist/sandbox.d.mts +3 -3
- package/dist/sandbox.d.ts +3 -3
- package/dist/sandbox.js +5 -5
- package/dist/sandbox.mjs +2 -2
- package/dist/{steps-XA4wG8W3.d.ts → steps-BOKeU8X3.d.ts} +3 -2
- package/dist/{steps-eTytqxQb.d.mts → steps-Mi3sjYbD.d.mts} +3 -2
- package/dist/storage.d.mts +2 -2
- package/dist/storage.d.ts +2 -2
- package/dist/storage.js +107 -48
- package/dist/storage.mjs +2 -2
- package/dist/{vercel-6ORAC625.mjs → vercel-BOGHAFI4.mjs} +2 -2
- package/package.json +9 -1
- package/dist/chunk-BJTO5JO5.mjs +0 -11
- package/dist/chunk-I5DCB7RU.mjs +0 -346
package/dist/storage.js
CHANGED
|
@@ -121,6 +121,33 @@ function toStorage(h) {
|
|
|
121
121
|
return isStepFunction(h) ? fromStepFunction(h) : fromHandlers(h);
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
+
// src/storage/bindings/kv-optimistic-update.ts
|
|
125
|
+
var DEFAULT_MAX_RETRIES = 3;
|
|
126
|
+
async function mergeWithKVOptimisticUpdate(opts) {
|
|
127
|
+
const maxRetries = opts.maxRetries ?? DEFAULT_MAX_RETRIES;
|
|
128
|
+
const { KVVersionConflictError } = await import("@vercel/kv2");
|
|
129
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
130
|
+
const entry = await opts.store.get(opts.id);
|
|
131
|
+
if (!entry.exists) {
|
|
132
|
+
throw new Error(opts.notFoundErrorMessage);
|
|
133
|
+
}
|
|
134
|
+
const existing = await entry.value;
|
|
135
|
+
const updated = { ...existing, ...opts.updates };
|
|
136
|
+
try {
|
|
137
|
+
await entry.update(updated);
|
|
138
|
+
return updated;
|
|
139
|
+
} catch (error) {
|
|
140
|
+
if (!(error instanceof KVVersionConflictError) && (!(error instanceof Error) || error.name !== "KVVersionConflictError")) {
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
if (attempt === maxRetries - 1) {
|
|
144
|
+
throw new Error(opts.conflictErrorMessage, { cause: error });
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
throw new Error(opts.conflictErrorMessage);
|
|
149
|
+
}
|
|
150
|
+
|
|
124
151
|
// src/storage/bindings/kv.ts
|
|
125
152
|
async function initKvStores(prefix) {
|
|
126
153
|
const { createKV } = await import("@vercel/kv2");
|
|
@@ -157,15 +184,13 @@ function kvStorageFallback(opts) {
|
|
|
157
184
|
},
|
|
158
185
|
"session.update": async ({ id, updates }) => {
|
|
159
186
|
const { sessions } = await getStores();
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
await sessions.set(id, updated);
|
|
168
|
-
return updated;
|
|
187
|
+
return mergeWithKVOptimisticUpdate({
|
|
188
|
+
id,
|
|
189
|
+
updates,
|
|
190
|
+
store: sessions,
|
|
191
|
+
notFoundErrorMessage: `${tag}[session.update] no session found with id "${id}"`,
|
|
192
|
+
conflictErrorMessage: `${tag}[session.update] optimistic update failed after retries for id "${id}"`
|
|
193
|
+
});
|
|
169
194
|
},
|
|
170
195
|
"message.get": async ({ id }) => {
|
|
171
196
|
const { messages } = await getStores();
|
|
@@ -177,15 +202,13 @@ function kvStorageFallback(opts) {
|
|
|
177
202
|
},
|
|
178
203
|
"message.update": async ({ id, updates }) => {
|
|
179
204
|
const { messages } = await getStores();
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
await messages.set(id, updated);
|
|
188
|
-
return updated;
|
|
205
|
+
return mergeWithKVOptimisticUpdate({
|
|
206
|
+
id,
|
|
207
|
+
updates,
|
|
208
|
+
store: messages,
|
|
209
|
+
notFoundErrorMessage: `${tag}[message.update] no message found with id "${id}"`,
|
|
210
|
+
conflictErrorMessage: `${tag}[message.update] optimistic update failed after retries for id "${id}"`
|
|
211
|
+
});
|
|
189
212
|
},
|
|
190
213
|
"message.listBySession": async ({ sessionId }) => {
|
|
191
214
|
const { messages } = await getStores();
|
|
@@ -225,15 +248,13 @@ function kvStorageFallback(opts) {
|
|
|
225
248
|
},
|
|
226
249
|
"sandbox.update": async ({ id, updates }) => {
|
|
227
250
|
const { sandboxes } = await getStores();
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
await sandboxes.set(id, updated);
|
|
236
|
-
return updated;
|
|
251
|
+
return mergeWithKVOptimisticUpdate({
|
|
252
|
+
id,
|
|
253
|
+
updates,
|
|
254
|
+
store: sandboxes,
|
|
255
|
+
notFoundErrorMessage: `${tag}[sandbox.update] no sandbox found with id "${id}"`,
|
|
256
|
+
conflictErrorMessage: `${tag}[sandbox.update] optimistic update failed after retries for id "${id}"`
|
|
257
|
+
});
|
|
237
258
|
},
|
|
238
259
|
"setup.get": async ({ id }) => {
|
|
239
260
|
const { setups } = await getStores();
|
|
@@ -261,8 +282,36 @@ async function path() {
|
|
|
261
282
|
}
|
|
262
283
|
return _path;
|
|
263
284
|
}
|
|
285
|
+
function createWriteLock() {
|
|
286
|
+
const locks = /* @__PURE__ */ new Map();
|
|
287
|
+
return async function withWriteLock(opts) {
|
|
288
|
+
let state = locks.get(opts.key);
|
|
289
|
+
if (!state) {
|
|
290
|
+
state = { locked: false, waiters: [] };
|
|
291
|
+
locks.set(opts.key, state);
|
|
292
|
+
}
|
|
293
|
+
if (state.locked) {
|
|
294
|
+
await new Promise((resolve) => {
|
|
295
|
+
state.waiters.push(resolve);
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
state.locked = true;
|
|
299
|
+
try {
|
|
300
|
+
return await opts.fn();
|
|
301
|
+
} finally {
|
|
302
|
+
const next = state.waiters.shift();
|
|
303
|
+
if (next) {
|
|
304
|
+
next();
|
|
305
|
+
} else {
|
|
306
|
+
state.locked = false;
|
|
307
|
+
locks.delete(opts.key);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
};
|
|
311
|
+
}
|
|
264
312
|
function createStore(dir) {
|
|
265
313
|
const filePath = async (key) => (await path()).join(dir, `${key}.json`);
|
|
314
|
+
const withWriteLock = createWriteLock();
|
|
266
315
|
return {
|
|
267
316
|
async get(key) {
|
|
268
317
|
try {
|
|
@@ -273,27 +322,37 @@ function createStore(dir) {
|
|
|
273
322
|
}
|
|
274
323
|
},
|
|
275
324
|
async set(key, value) {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
325
|
+
await withWriteLock({
|
|
326
|
+
key,
|
|
327
|
+
fn: async () => {
|
|
328
|
+
const p = await filePath(key);
|
|
329
|
+
const { mkdir, writeFile } = await fs();
|
|
330
|
+
const { dirname } = await path();
|
|
331
|
+
await mkdir(dirname(p), { recursive: true });
|
|
332
|
+
await writeFile(p, JSON.stringify(value, null, 2));
|
|
333
|
+
}
|
|
334
|
+
});
|
|
281
335
|
},
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
336
|
+
update(key, updates) {
|
|
337
|
+
return withWriteLock({
|
|
338
|
+
key,
|
|
339
|
+
fn: async () => {
|
|
340
|
+
const p = await filePath(key);
|
|
341
|
+
const { readFile, mkdir, writeFile } = await fs();
|
|
342
|
+
const { dirname } = await path();
|
|
343
|
+
let existing;
|
|
344
|
+
try {
|
|
345
|
+
const data = await readFile(p, "utf-8");
|
|
346
|
+
existing = JSON.parse(data);
|
|
347
|
+
} catch {
|
|
348
|
+
throw new Error(`Not found: ${key}`);
|
|
349
|
+
}
|
|
350
|
+
const updated = { ...existing, ...updates };
|
|
351
|
+
await mkdir(dirname(p), { recursive: true });
|
|
352
|
+
await writeFile(p, JSON.stringify(updated, null, 2));
|
|
353
|
+
return updated;
|
|
354
|
+
}
|
|
355
|
+
});
|
|
297
356
|
}
|
|
298
357
|
};
|
|
299
358
|
}
|
|
@@ -383,4 +442,4 @@ function shouldFallbackToKV2() {
|
|
|
383
442
|
shouldFallbackToKV2,
|
|
384
443
|
toStorage
|
|
385
444
|
});
|
|
386
|
-
//# 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+KTogUHJvbWlzZTxUPiB7XG4gICAgICBjb25zdCBwID0gYXdhaXQgZmlsZVBhdGgoa2V5KTtcbiAgICAgIGNvbnN0IHsgcmVhZEZpbGUsIG1rZGlyLCB3cml0ZUZpbGUgfSA9IGF3YWl0IGZzKCk7XG4gICAgICBjb25zdCB7IGRpcm5hbWUgfSA9IGF3YWl0IHBhdGgoKTtcbiAgICAgIGxldCBleGlzdGluZzogVDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWFkRmlsZShwLCBcInV0Zi04XCIpO1xuICAgICAgICBleGlzdGluZyA9IEpTT04ucGFyc2UoZGF0YSkgYXMgVDtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCBmb3VuZDogJHtrZXl9YCk7XG4gICAgICB9XG4gICAgICBjb25zdCB1cGRhdGVkID0geyAuLi5leGlzdGluZywgLi4udXBkYXRlcyB9O1xuICAgICAgYXdhaXQgbWtkaXIoZGlybmFtZShwKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICBhd2FpdCB3cml0ZUZpbGUocCwgSlNPTi5zdHJpbmdpZnkodXBkYXRlZCwgbnVsbCwgMikpO1xuICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgfSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEFsbEZyb21EaXI8VD4oZGlyOiBzdHJpbmcpOiBQcm9taXNlPFRbXT4ge1xuICBjb25zdCB7IHJlYWRkaXIsIHJlYWRGaWxlIH0gPSBhd2FpdCBmcygpO1xuICBjb25zdCB7IGpvaW4gfSA9IGF3YWl0IHBhdGgoKTtcbiAgbGV0IGZpbGVzOiBzdHJpbmdbXTtcbiAgdHJ5IHtcbiAgICBmaWxlcyA9IGF3YWl0IHJlYWRkaXIoZGlyKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IHJlc3VsdDogVFtdID0gW107XG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGlmICghZmlsZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWFkRmlsZShqb2luKGRpciwgZmlsZSksIFwidXRmLThcIik7XG4gICAgICByZXN1bHQucHVzaChKU09OLnBhcnNlKGRhdGEpIGFzIFQpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2tpcCBjb3JydXB0IGZpbGVzXG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGVuc3VyZUdpdGlnbm9yZShkaXI6IHN0cmluZykge1xuICBjb25zdCB7IG1rZGlyLCB3cml0ZUZpbGUsIHJlYWRGaWxlIH0gPSBhd2FpdCBmcygpO1xuICBjb25zdCB7IGpvaW4gfSA9IGF3YWl0IHBhdGgoKTtcbiAgY29uc3QgZ2l0aWdub3JlUGF0aCA9IGpvaW4oZGlyLCBcIi5naXRpZ25vcmVcIik7XG4gIHRyeSB7XG4gICAgYXdhaXQgcmVhZEZpbGUoZ2l0aWdub3JlUGF0aCwgXCJ1dGYtOFwiKTtcbiAgfSBjYXRjaCB7XG4gICAgYXdhaXQgbWtkaXIoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBhd2FpdCB3cml0ZUZpbGUoZ2l0aWdub3JlUGF0aCwgXCIqXFxuXCIpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbFN0b3JhZ2Uob3B0cz86IHsgZGlyPzogc3RyaW5nIH0pOiBTdG9yYWdlSGFuZGxlcnMge1xuICBjb25zdCBkaXIgPSBvcHRzPy5kaXIgPz8gXCIuYWdlbnRcIjtcbiAgbGV0IGdpdGlnbm9yZVByb21pc2U6IFByb21pc2U8dm9pZD4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdCBzZXNzaW9uU3RvcmUgPSBjcmVhdGVTdG9yZTxTZXNzaW9uPihgJHtkaXJ9L3Nlc3Npb25gKTtcbiAgY29uc3QgbWVzc2FnZVN0b3JlID0gY3JlYXRlU3RvcmU8TWVzc2FnZT4oYCR7ZGlyfS9tZXNzYWdlYCk7XG4gIGNvbnN0IHBhcnRTdG9yZSA9IGNyZWF0ZVN0b3JlPFBhcnQ+KGAke2Rpcn0vcGFydGApO1xuICBjb25zdCBzYW5kYm94U3RvcmUgPSBjcmVhdGVTdG9yZTxTYW5kYm94PihgJHtkaXJ9L3NhbmRib3hgKTtcbiAgY29uc3Qgc2V0dXBTdG9yZSA9IGNyZWF0ZVN0b3JlPFNldHVwPihgJHtkaXJ9L3NldHVwYCk7XG4gIGNvbnN0IG1lc3NhZ2VEaXIgPSBgJHtkaXJ9L21lc3NhZ2VgO1xuICBjb25zdCBwYXJ0RGlyID0gYCR7ZGlyfS9wYXJ0YDtcblxuICBmdW5jdGlvbiBvbldyaXRlPFQ+KGZuOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCFnaXRpZ25vcmVQcm9taXNlKSB7XG4gICAgICBnaXRpZ25vcmVQcm9taXNlID0gZW5zdXJlR2l0aWdub3JlKGRpcik7XG4gICAgfVxuICAgIHJldHVybiBnaXRpZ25vcmVQcm9taXNlLnRoZW4oZm4pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBcInNlc3Npb24uZ2V0XCI6ICh7IGlkIH0pID0+IHNlc3Npb25TdG9yZS5nZXQoaWQpLFxuICAgIFwic2Vzc2lvbi5zZXRcIjogKHsgaWQsIHZhbHVlIH0pID0+XG4gICAgICBvbldyaXRlKCgpID0+IHNlc3Npb25TdG9yZS5zZXQoaWQsIHZhbHVlKSksXG4gICAgXCJzZXNzaW9uLnVwZGF0ZVwiOiAoeyBpZCwgdXBkYXRlcyB9KSA9PlxuICAgICAgb25Xcml0ZSgoKSA9PiBzZXNzaW9uU3RvcmUudXBkYXRlKGlkLCB1cGRhdGVzKSksXG5cbiAgICBcIm1lc3NhZ2UuZ2V0XCI6ICh7IGlkIH0pID0+IG1lc3NhZ2VTdG9yZS5nZXQoaWQpLFxuICAgIFwibWVzc2FnZS5zZXRcIjogKHsgaWQsIHZhbHVlIH0pID0+XG4gICAgICBvbldyaXRlKCgpID0+IG1lc3NhZ2VTdG9yZS5zZXQoaWQsIHZhbHVlKSksXG4gICAgXCJtZXNzYWdlLnVwZGF0ZVwiOiAoeyBpZCwgdXBkYXRlcyB9KSA9PlxuICAgICAgb25Xcml0ZSgoKSA9PiBtZXNzYWdlU3RvcmUudXBkYXRlKGlkLCB1cGRhdGVzKSksXG4gICAgXCJtZXNzYWdlLmxpc3RCeVNlc3Npb25cIjogYXN5bmMgKHsgc2Vzc2lvbklkIH0pID0+IHtcbiAgICAgIGNvbnN0IGFsbCA9IGF3YWl0IHJlYWRBbGxGcm9tRGlyPE1lc3NhZ2U+KG1lc3NhZ2VEaXIpO1xuICAgICAgcmV0dXJuIGFsbC5maWx0ZXIoKG0pID0+IG0uc2Vzc2lvbklkID09PSBzZXNzaW9uSWQpO1xuICAgIH0sXG5cbiAgICBcInBhcnQuZ2V0XCI6ICh7IGlkIH0pID0+IHBhcnRTdG9yZS5nZXQoaWQpLFxuICAgIFwicGFydC5zZXRcIjogKHsgaWQsIHZhbHVlIH0pID0+IG9uV3JpdGUoKCkgPT4gcGFydFN0b3JlLnNldChpZCwgdmFsdWUpKSxcbiAgICBcInBhcnQubGlzdEJ5U2Vzc2lvblwiOiBhc3luYyAoeyBzZXNzaW9uSWQgfSkgPT4ge1xuICAgICAgY29uc3QgYWxsID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8UGFydD4ocGFydERpcik7XG4gICAgICByZXR1cm4gYWxsLmZpbHRlcigocCkgPT4gcC5zZXNzaW9uSWQgPT09IHNlc3Npb25JZCk7XG4gICAgfSxcblxuICAgIFwic2FuZGJveC5nZXRcIjogKHsgaWQgfSkgPT4gc2FuZGJveFN0b3JlLmdldChpZCksXG4gICAgXCJzYW5kYm94LnNldFwiOiAoeyBpZCwgdmFsdWUgfSkgPT5cbiAgICAgIG9uV3JpdGUoKCkgPT4gc2FuZGJveFN0b3JlLnNldChpZCwgdmFsdWUpKSxcbiAgICBcInNhbmRib3gudXBkYXRlXCI6ICh7IGlkLCB1cGRhdGVzIH0pID0+XG4gICAgICBvbldyaXRlKCgpID0+IHNhbmRib3hTdG9yZS51cGRhdGUoaWQsIHVwZGF0ZXMpKSxcblxuICAgIFwic2V0dXAuZ2V0XCI6ICh7IGlkIH0pID0+IHNldHVwU3RvcmUuZ2V0KGlkKSxcbiAgICBcInNldHVwLnNldFwiOiAoeyBpZCwgdmFsdWUgfSkgPT4gb25Xcml0ZSgoKSA9PiBzZXR1cFN0b3JlLnNldChpZCwgdmFsdWUpKSxcbiAgfTtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gc2hvdWxkRmFsbGJhY2tUb0tWMigpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhcHJvY2Vzcy5lbnYuQkxPQl9SRUFEX1dSSVRFX1RPS0VOO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQSxtQkFBeUQ7QUE4Q2xELElBQU0sY0FBTixNQUFNLGFBQVk7QUFBQSxFQUN2QjtBQUFBLEVBRUEsWUFBWSxPQUFvQjtBQUM5QixTQUFLLFFBQVE7QUFBQSxFQUNmO0FBQUEsRUFFQSxRQUFRLCtCQUFrQixFQUFFLFVBQXVCO0FBQ2pELFdBQU8sRUFBRSxPQUFPLFNBQVMsTUFBTTtBQUFBLEVBQ2pDO0FBQUEsRUFFQSxRQUFRLGlDQUFvQixFQUFFLE1BQThCO0FBQzFELFdBQU8sSUFBSSxhQUFZLEtBQUssS0FBSztBQUFBLEVBQ25DO0FBQUE7QUFBQSxFQUdBLEdBQUcsVUFBeUM7QUFFMUMsV0FBUSxTQUFTLEtBQUssTUFBTSxNQUFNLEVBQVUsS0FBSyxLQUFLO0FBQUEs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
|
|
445
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3N0b3JhZ2UvZW50cnkudHMiLCAiLi4vc3JjL3N0b3JhZ2UvYWRhcHRlci50cyIsICIuLi9zcmMvc3RvcmFnZS9iaW5kaW5ncy9rdi1vcHRpbWlzdGljLXVwZGF0ZS50cyIsICIuLi9zcmMvc3RvcmFnZS9iaW5kaW5ncy9rdi50cyIsICIuLi9zcmMvc3RvcmFnZS9iaW5kaW5ncy9sb2NhbC50cyIsICIuLi9zcmMvc3RvcmFnZS9zaG91bGQtZmFsbGJhY2sta3YyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgdHlwZSB7XG4gIFN0b3JhZ2UsXG4gIFN0b3JhZ2VDYWxsLFxuICBTdG9yYWdlSGFuZGxlcnMsXG4gIFN0b3JhZ2VTdGVwRnVuY3Rpb24sXG59IGZyb20gXCIuL2FkYXB0ZXJcIjtcbmV4cG9ydCB7IFN0b3JhZ2VTdGVwLCB0b1N0b3JhZ2UgfSBmcm9tIFwiLi9hZGFwdGVyXCI7XG5leHBvcnQgeyBrdlN0b3JhZ2VGYWxsYmFjayB9IGZyb20gXCIuL2JpbmRpbmdzL2t2XCI7XG5leHBvcnQgeyBsb2NhbFN0b3JhZ2UgfSBmcm9tIFwiLi9iaW5kaW5ncy9sb2NhbFwiO1xuZXhwb3J0IHsgc2hvdWxkRmFsbGJhY2tUb0tWMiB9IGZyb20gXCIuL3Nob3VsZC1mYWxsYmFjay1rdjJcIjtcbmV4cG9ydCB0eXBlIHtcbiAgR2VuZXJhdGlvbk9wdGlvbnMsXG4gIE1lc3NhZ2UsXG4gIE1lc3NhZ2VVc2FnZSxcbiAgUGFydCxcbiAgU2FuZGJveCxcbiAgU2Vzc2lvbixcbiAgU2V0dXAsXG4gIFNldHVwU25hcHNob3QsXG59IGZyb20gXCIuL3R5cGVzXCI7XG4iLCAiaW1wb3J0IHsgV09SS0ZMT1dfREVTRVJJQUxJWkUsIFdPUktGTE9XX1NFUklBTElaRSB9IGZyb20gXCJAd29ya2Zsb3cvc2VyZGVcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZSwgUGFydCwgU2FuZGJveCwgU2Vzc2lvbiwgU2V0dXAgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vLyBcdTI1MDBcdTI1MDBcdTI1MDAgU3RvcmFnZUhhbmRsZXJzIChwdWJsaWMsIGZsYXQpIFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFxuXG5leHBvcnQgdHlwZSBTdG9yYWdlSGFuZGxlcnMgPSB7XG4gIFwic2Vzc2lvbi5nZXRcIihwOiB7IGlkOiBzdHJpbmcgfSk6IFByb21pc2U8U2Vzc2lvbiB8IG51bGw+O1xuICBcInNlc3Npb24uc2V0XCIocDogeyBpZDogc3RyaW5nOyB2YWx1ZTogU2Vzc2lvbiB9KTogUHJvbWlzZTx2b2lkPjtcbiAgXCJzZXNzaW9uLnVwZGF0ZVwiKHA6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHVwZGF0ZXM6IFBhcnRpYWw8U2Vzc2lvbj47XG4gIH0pOiBQcm9taXNlPFNlc3Npb24+O1xuXG4gIFwibWVzc2FnZS5nZXRcIihwOiB7IGlkOiBzdHJpbmcgfSk6IFByb21pc2U8TWVzc2FnZSB8IG51bGw+O1xuICBcIm1lc3NhZ2Uuc2V0XCIocDogeyBpZDogc3RyaW5nOyB2YWx1ZTogTWVzc2FnZSB9KTogUHJvbWlzZTx2b2lkPjtcbiAgXCJtZXNzYWdlLnVwZGF0ZVwiKHA6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHVwZGF0ZXM6IFBhcnRpYWw8TWVzc2FnZT47XG4gIH0pOiBQcm9taXNlPE1lc3NhZ2U+O1xuICBcIm1lc3NhZ2UubGlzdEJ5U2Vzc2lvblwiKHA6IHsgc2Vzc2lvbklkOiBzdHJpbmcgfSk6IFByb21pc2U8TWVzc2FnZVtdPjtcblxuICBcInBhcnQuZ2V0XCIocDogeyBpZDogc3RyaW5nIH0pOiBQcm9taXNlPFBhcnQgfCBudWxsPjtcbiAgXCJwYXJ0LnNldFwiKHA6IHsgaWQ6IHN0cmluZzsgdmFsdWU6IFBhcnQgfSk6IFByb21pc2U8dm9pZD47XG4gIFwicGFydC5saXN0QnlTZXNzaW9uXCIocDogeyBzZXNzaW9uSWQ6IHN0cmluZyB9KTogUHJvbWlzZTxQYXJ0W10+O1xuXG4gIFwic2FuZGJveC5nZXRcIihwOiB7IGlkOiBzdHJpbmcgfSk6IFByb21pc2U8U2FuZGJveCB8IG51bGw+O1xuICBcInNhbmRib3guc2V0XCIocDogeyBpZDogc3RyaW5nOyB2YWx1ZTogU2FuZGJveCB9KTogUHJvbWlzZTx2b2lkPjtcbiAgXCJzYW5kYm94LnVwZGF0ZVwiKHA6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHVwZGF0ZXM6IFBhcnRpYWw8U2FuZGJveD47XG4gIH0pOiBQcm9taXNlPFNhbmRib3g+O1xuXG4gIFwic2V0dXAuZ2V0XCIocDogeyBpZDogc3RyaW5nIH0pOiBQcm9taXNlPFNldHVwIHwgbnVsbD47XG4gIFwic2V0dXAuc2V0XCIocDogeyBpZDogc3RyaW5nOyB2YWx1ZTogU2V0dXAgfSk6IFByb21pc2U8dm9pZD47XG59O1xuXG4vLyBcdTI1MDBcdTI1MDBcdTI1MDAgU3RvcmFnZUNhbGwgKGRlcml2ZWQgZnJvbSBTdG9yYWdlSGFuZGxlcnMpIFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFx1MjUwMFxuXG5leHBvcnQgdHlwZSBTdG9yYWdlQ2FsbCA9IHtcbiAgW0sgaW4ga2V5b2YgU3RvcmFnZUhhbmRsZXJzXTogeyBtZXRob2Q6IEsgfSAmIFBhcmFtZXRlcnM8XG4gICAgU3RvcmFnZUhhbmRsZXJzW0tdXG4gID5bMF07XG59W2tleW9mIFN0b3JhZ2VIYW5kbGVyc107XG5cbi8vIFx1MjUwMFx1MjUwMFx1MjUwMCBTdG9yYWdlU3RlcCAoc2VyaWFsaXphYmxlIGFjcm9zcyB3b3JrZmxvdyBib3VuZGFyeSkgXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXHUyNTAwXG5cbmV4cG9ydCBjbGFzcyBTdG9yYWdlU3RlcCB7XG4gIGV2ZW50OiBTdG9yYWdlQ2FsbDtcblxuICBjb25zdHJ1Y3RvcihldmVudDogU3RvcmFnZUNhbGwpIHtcbiAgICB0aGlzLmV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBzdGF0aWMgW1dPUktGTE9XX1NFUklBTElaRV0oaW5zdGFuY2U6IFN0b3JhZ2VTdGVwKSB7XG4gICAgcmV0dXJuIHsgZXZlbnQ6IGluc3RhbmNlLmV2ZW50IH07XG4gIH1cblxuICBzdGF0aWMgW1dPUktGTE9XX0RFU0VSSUFMSVpFXShkYXRhOiB7IGV2ZW50OiBTdG9yYWdlQ2FsbCB9KSB7XG4gICAgcmV0dXJuIG5ldyBTdG9yYWdlU3RlcChkYXRhLmV2ZW50KTtcbiAgfVxuXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogc2FmZSBkaXNwYXRjaCBcdTIwMTQgZXZlbnQubWV0aG9kIHNlbGVjdHMgdGhlIG1hdGNoaW5nIGhhbmRsZXJcbiAgb24oaGFuZGxlcnM6IFN0b3JhZ2VIYW5kbGVycyk6IFByb21pc2U8YW55PiB7XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBzZWUgYWJvdmVcbiAgICByZXR1cm4gKGhhbmRsZXJzW3RoaXMuZXZlbnQubWV0aG9kXSBhcyBhbnkpKHRoaXMuZXZlbnQpO1xuICB9XG59XG5cbi8qKlxuICogQSBzaW5nbGUgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIGFsbCBzdG9yYWdlIG9wZXJhdGlvbnMuIEludGVuZGVkIHRvIGJlXG4gKiBtYXJrZWQgd2l0aCBgXCJ1c2Ugc3RlcFwiYCBzbyB0aGF0IGl0cyBib2R5IChhbmQgTm9kZS5qcy1kZXBlbmRlbnRcbiAqIGltcG9ydHMgbGlrZSBkYXRhYmFzZSBjbGllbnRzKSBpcyBleHRyYWN0ZWQgYnkgdGhlIHdvcmtmbG93IGJ1bmRsZXJcbiAqIGFuZCBydW5zIHNlcnZlci1zaWRlLlxuICpcbiAqIFRoZSBzdGVwIHJlY2VpdmVzIGEgYFN0b3JhZ2VTdGVwYCBpbnN0YW5jZSAoc2VyaWFsaXphYmxlIHZpYVxuICogYEB3b3JrZmxvdy9zZXJkZWApIGFuZCBzaG91bGQgY2FsbCBgc3RlcC5oYW5kbGUoeyAuLi4gfSlgIHdpdGggYVxuICogYFN0b3JhZ2VIYW5kbGVyc2AgbWFwLlxuICovXG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IHN0ZXAgZnVuY3Rpb24gaXMgYSBkaXNwYXRjaGVyOyB0eXBlIHNhZmV0eSBpcyBhdCB0aGUgaGFuZGxlcnMgbGV2ZWxcbmV4cG9ydCB0eXBlIFN0b3JhZ2VTdGVwRnVuY3Rpb24gPSAoc3RvcmU6IFN0b3JhZ2VTdGVwKSA9PiBQcm9taXNlPGFueT47XG5cbi8vIFx1MjUwMFx1MjUwMFx1MjUwMCBTdG9yYWdlIChpbnRlcm5hbCwgbmVzdGVkKSBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcdTI1MDBcblxuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlIHtcbiAgc2Vzc2lvbjoge1xuICAgIGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8U2Vzc2lvbiB8IG51bGw+O1xuICAgIHNldChrZXk6IHN0cmluZywgdmFsdWU6IFNlc3Npb24pOiBQcm9taXNlPHZvaWQ+O1xuICAgIHVwZGF0ZShrZXk6IHN0cmluZywgdXBkYXRlczogUGFydGlhbDxTZXNzaW9uPik6IFByb21pc2U8U2Vzc2lvbj47XG4gIH07XG4gIG1lc3NhZ2U6IHtcbiAgICBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2UgfCBudWxsPjtcbiAgICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBNZXNzYWdlKTogUHJvbWlzZTx2b2lkPjtcbiAgICB1cGRhdGUoa2V5OiBzdHJpbmcsIHVwZGF0ZXM6IFBhcnRpYWw8TWVzc2FnZT4pOiBQcm9taXNlPE1lc3NhZ2U+O1xuICAgIGxpc3RCeVNlc3Npb24oc2Vzc2lvbklkOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2VbXT47XG4gIH07XG4gIHBhcnQ6IHtcbiAgICBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPFBhcnQgfCBudWxsPjtcbiAgICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBQYXJ0KTogUHJvbWlzZTx2b2lkPjtcbiAgICBsaXN0QnlTZXNzaW9uKHNlc3Npb25JZDogc3RyaW5nKTogUHJvbWlzZTxQYXJ0W10+O1xuICB9O1xuICBzYW5kYm94OiB7XG4gICAgZ2V0KGtleTogc3RyaW5nKTogUHJvbWlzZTxTYW5kYm94IHwgbnVsbD47XG4gICAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogU2FuZGJveCk6IFByb21pc2U8dm9pZD47XG4gICAgdXBkYXRlKGtleTogc3RyaW5nLCB1cGRhdGVzOiBQYXJ0aWFsPFNhbmRib3g+KTogUHJvbWlzZTxTYW5kYm94PjtcbiAgfTtcbiAgc2V0dXA6IHtcbiAgICBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPFNldHVwIHwgbnVsbD47XG4gICAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogU2V0dXApOiBQcm9taXNlPHZvaWQ+O1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTdG9yYWdlSW5wdXQgPSBTdG9yYWdlSGFuZGxlcnMgfCBTdG9yYWdlU3RlcEZ1bmN0aW9uO1xuXG5mdW5jdGlvbiBpc1N0ZXBGdW5jdGlvbihoOiBTdG9yYWdlSW5wdXQpOiBoIGlzIFN0b3JhZ2VTdGVwRnVuY3Rpb24ge1xuICByZXR1cm4gdHlwZW9mIGggPT09IFwiZnVuY3Rpb25cIjtcbn1cblxuZnVuY3Rpb24gZnJvbVN0ZXBGdW5jdGlvbihmbjogU3RvcmFnZVN0ZXBGdW5jdGlvbik6IFN0b3JhZ2Uge1xuICByZXR1cm4ge1xuICAgIHNlc3Npb246IHtcbiAgICAgIGdldDogKGlkKSA9PiBmbihuZXcgU3RvcmFnZVN0ZXAoeyBtZXRob2Q6IFwic2Vzc2lvbi5nZXRcIiwgaWQgfSkpLFxuICAgICAgc2V0OiAoaWQsIHZhbHVlKSA9PlxuICAgICAgICBmbihuZXcgU3RvcmFnZVN0ZXAoeyBtZXRob2Q6IFwic2Vzc2lvbi5zZXRcIiwgaWQsIHZhbHVlIH0pKSxcbiAgICAgIHVwZGF0ZTogKGlkLCB1cGRhdGVzKSA9PlxuICAgICAgICBmbihuZXcgU3RvcmFnZVN0ZXAoeyBtZXRob2Q6IFwic2Vzc2lvbi51cGRhdGVcIiwgaWQsIHVwZGF0ZXMgfSkpLFxuICAgIH0sXG4gICAgbWVzc2FnZToge1xuICAgICAgZ2V0OiAoaWQpID0+IGZuKG5ldyBTdG9yYWdlU3RlcCh7IG1ldGhvZDogXCJtZXNzYWdlLmdldFwiLCBpZCB9KSksXG4gICAgICBzZXQ6IChpZCwgdmFsdWUpID0+XG4gICAgICAgIGZuKG5ldyBTdG9yYWdlU3RlcCh7IG1ldGhvZDogXCJtZXNzYWdlLnNldFwiLCBpZCwgdmFsdWUgfSkpLFxuICAgICAgdXBkYXRlOiAoaWQsIHVwZGF0ZXMpID0+XG4gICAgICAgIGZuKG5ldyBTdG9yYWdlU3RlcCh7IG1ldGhvZDogXCJtZXNzYWdlLnVwZGF0ZVwiLCBpZCwgdXBkYXRlcyB9KSksXG4gICAgICBsaXN0QnlTZXNzaW9uOiAoc2Vzc2lvbklkKSA9PlxuICAgICAgICBmbihuZXcgU3RvcmFnZVN0ZXAoeyBtZXRob2Q6IFwibWVzc2FnZS5saXN0QnlTZXNzaW9uXCIsIHNlc3Npb25JZCB9KSksXG4gICAgfSxcbiAgICBwYXJ0OiB7XG4gICAgICBnZXQ6IChpZCkgPT4gZm4obmV3IFN0b3JhZ2VTdGVwKHsgbWV0aG9kOiBcInBhcnQuZ2V0XCIsIGlkIH0pKSxcbiAgICAgIHNldDogKGlkLCB2YWx1ZSkgPT5cbiAgICAgICAgZm4obmV3IFN0b3JhZ2VTdGVwKHsgbWV0aG9kOiBcInBhcnQuc2V0XCIsIGlkLCB2YWx1ZSB9KSksXG4gICAgICBsaXN0QnlTZXNzaW9uOiAoc2Vzc2lvbklkKSA9PlxuICAgICAgICBmbihuZXcgU3RvcmFnZVN0ZXAoeyBtZXRob2Q6IFwicGFydC5saXN0QnlTZXNzaW9uXCIsIHNlc3Npb25JZCB9KSksXG4gICAgfSxcbiAgICBzYW5kYm94OiB7XG4gICAgICBnZXQ6IChpZCkgPT4gZm4obmV3IFN0b3JhZ2VTdGVwKHsgbWV0aG9kOiBcInNhbmRib3guZ2V0XCIsIGlkIH0pKSxcbiAgICAgIHNldDogKGlkLCB2YWx1ZSkgPT5cbiAgICAgICAgZm4obmV3IFN0b3JhZ2VTdGVwKHsgbWV0aG9kOiBcInNhbmRib3guc2V0XCIsIGlkLCB2YWx1ZSB9KSksXG4gICAgICB1cGRhdGU6IChpZCwgdXBkYXRlcykgPT5cbiAgICAgICAgZm4obmV3IFN0b3JhZ2VTdGVwKHsgbWV0aG9kOiBcInNhbmRib3gudXBkYXRlXCIsIGlkLCB1cGRhdGVzIH0pKSxcbiAgICB9LFxuICAgIHNldHVwOiB7XG4gICAgICBnZXQ6IChpZCkgPT4gZm4obmV3IFN0b3JhZ2VTdGVwKHsgbWV0aG9kOiBcInNldHVwLmdldFwiLCBpZCB9KSksXG4gICAgICBzZXQ6IChpZCwgdmFsdWUpID0+XG4gICAgICAgIGZuKG5ldyBTdG9yYWdlU3RlcCh7IG1ldGhvZDogXCJzZXR1cC5zZXRcIiwgaWQsIHZhbHVlIH0pKSxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBmcm9tSGFuZGxlcnMoaDogU3RvcmFnZUhhbmRsZXJzKTogU3RvcmFnZSB7XG4gIHJldHVybiB7XG4gICAgc2Vzc2lvbjoge1xuICAgICAgZ2V0OiAoaWQpID0+IGhbXCJzZXNzaW9uLmdldFwiXSh7IGlkIH0pLFxuICAgICAgc2V0OiAoaWQsIHZhbHVlKSA9PiBoW1wic2Vzc2lvbi5zZXRcIl0oeyBpZCwgdmFsdWUgfSksXG4gICAgICB1cGRhdGU6IChpZCwgdXBkYXRlcykgPT4gaFtcInNlc3Npb24udXBkYXRlXCJdKHsgaWQsIHVwZGF0ZXMgfSksXG4gICAgfSxcbiAgICBtZXNzYWdlOiB7XG4gICAgICBnZXQ6IChpZCkgPT4gaFtcIm1lc3NhZ2UuZ2V0XCJdKHsgaWQgfSksXG4gICAgICBzZXQ6IChpZCwgdmFsdWUpID0+IGhbXCJtZXNzYWdlLnNldFwiXSh7IGlkLCB2YWx1ZSB9KSxcbiAgICAgIHVwZGF0ZTogKGlkLCB1cGRhdGVzKSA9PiBoW1wibWVzc2FnZS51cGRhdGVcIl0oeyBpZCwgdXBkYXRlcyB9KSxcbiAgICAgIGxpc3RCeVNlc3Npb246IChzZXNzaW9uSWQpID0+IGhbXCJtZXNzYWdlLmxpc3RCeVNlc3Npb25cIl0oeyBzZXNzaW9uSWQgfSksXG4gICAgfSxcbiAgICBwYXJ0OiB7XG4gICAgICBnZXQ6IChpZCkgPT4gaFtcInBhcnQuZ2V0XCJdKHsgaWQgfSksXG4gICAgICBzZXQ6IChpZCwgdmFsdWUpID0+IGhbXCJwYXJ0LnNldFwiXSh7IGlkLCB2YWx1ZSB9KSxcbiAgICAgIGxpc3RCeVNlc3Npb246IChzZXNzaW9uSWQpID0+IGhbXCJwYXJ0Lmxpc3RCeVNlc3Npb25cIl0oeyBzZXNzaW9uSWQgfSksXG4gICAgfSxcbiAgICBzYW5kYm94OiB7XG4gICAgICBnZXQ6IChpZCkgPT4gaFtcInNhbmRib3guZ2V0XCJdKHsgaWQgfSksXG4gICAgICBzZXQ6IChpZCwgdmFsdWUpID0+IGhbXCJzYW5kYm94LnNldFwiXSh7IGlkLCB2YWx1ZSB9KSxcbiAgICAgIHVwZGF0ZTogKGlkLCB1cGRhdGVzKSA9PiBoW1wic2FuZGJveC51cGRhdGVcIl0oeyBpZCwgdXBkYXRlcyB9KSxcbiAgICB9LFxuICAgIHNldHVwOiB7XG4gICAgICBnZXQ6IChpZCkgPT4gaFtcInNldHVwLmdldFwiXSh7IGlkIH0pLFxuICAgICAgc2V0OiAoaWQsIHZhbHVlKSA9PiBoW1wic2V0dXAuc2V0XCJdKHsgaWQsIHZhbHVlIH0pLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1N0b3JhZ2UoaDogU3RvcmFnZUlucHV0KTogU3RvcmFnZSB7XG4gIHJldHVybiBpc1N0ZXBGdW5jdGlvbihoKSA/IGZyb21TdGVwRnVuY3Rpb24oaCkgOiBmcm9tSGFuZGxlcnMoaCk7XG59XG4iLCAiY29uc3QgREVGQVVMVF9NQVhfUkVUUklFUyA9IDM7XG5cbi8qKlxuICogV2UgaW50ZW50aW9uYWxseSBtaXJyb3IgdGhlIG1pbmltYWwgYGdldCgpYCByZXR1cm4gc2hhcGUgd2UgdXNlIGhlcmVcbiAqIGluc3RlYWQgb2YgaW1wb3J0aW5nIEtWMiB0eXBlcy4gVGhlIHdvcmtmbG93IGJ1bmRsZXIgYW5hbHl6ZXMgdHlwZS1vbmx5XG4gKiBpbXBvcnRzIGFuZCBmbGFncyBgQHZlcmNlbC9rdjJgIGFzIGEgTm9kZSBtb2R1bGUgaW4gd29ya2Zsb3cgY29kZSBwYXRocy5cbiAqIEtlZXBpbmcgdGhpcyBsb2NhbCBhdm9pZHMgdGhhdCBmYWxzZS1wb3NpdGl2ZSB3aGlsZSBwcmVzZXJ2aW5nIHJ1bnRpbWUgYmVoYXZpb3IuXG4gKi9cbnR5cGUgS1ZPcHRpbWlzdGljR2V0UmVzdWx0PFQ+ID1cbiAgfCB7XG4gICAgICBleGlzdHM6IGZhbHNlO1xuICAgIH1cbiAgfCB7XG4gICAgICBleGlzdHM6IHRydWU7XG4gICAgICB2YWx1ZTogUHJvbWlzZTxUPjtcbiAgICAgIHVwZGF0ZSh2YWx1ZTogVCk6IFByb21pc2U8dW5rbm93bj47XG4gICAgfTtcblxudHlwZSBLVk9wdGltaXN0aWNTdG9yZTxUPiA9IHtcbiAgZ2V0KGtleU9yRmlsdGVyOiBzdHJpbmcpOiBQcm9taXNlPEtWT3B0aW1pc3RpY0dldFJlc3VsdDxUPj47XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWVyZ2VXaXRoS1ZPcHRpbWlzdGljVXBkYXRlPFQ+KG9wdHM6IHtcbiAgaWQ6IHN0cmluZztcbiAgdXBkYXRlczogUGFydGlhbDxUPjtcbiAgc3RvcmU6IEtWT3B0aW1pc3RpY1N0b3JlPFQ+O1xuICBub3RGb3VuZEVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBjb25mbGljdEVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBtYXhSZXRyaWVzPzogbnVtYmVyO1xufSk6IFByb21pc2U8VD4ge1xuICBjb25zdCBtYXhSZXRyaWVzID0gb3B0cy5tYXhSZXRyaWVzID8/IERFRkFVTFRfTUFYX1JFVFJJRVM7XG4gIGNvbnN0IHsgS1ZWZXJzaW9uQ29uZmxpY3RFcnJvciB9ID0gYXdhaXQgaW1wb3J0KFwiQHZlcmNlbC9rdjJcIik7XG5cbiAgZm9yIChsZXQgYXR0ZW1wdCA9IDA7IGF0dGVtcHQgPCBtYXhSZXRyaWVzOyBhdHRlbXB0KyspIHtcbiAgICBjb25zdCBlbnRyeSA9IGF3YWl0IG9wdHMuc3RvcmUuZ2V0KG9wdHMuaWQpO1xuICAgIGlmICghZW50cnkuZXhpc3RzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3Iob3B0cy5ub3RGb3VuZEVycm9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCBlbnRyeS52YWx1ZTtcbiAgICBjb25zdCB1cGRhdGVkID0geyAuLi5leGlzdGluZywgLi4ub3B0cy51cGRhdGVzIH07XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZW50cnkudXBkYXRlKHVwZGF0ZWQpO1xuICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChcbiAgICAgICAgIShlcnJvciBpbnN0YW5jZW9mIEtWVmVyc2lvbkNvbmZsaWN0RXJyb3IpICYmXG4gICAgICAgICghKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHx8IGVycm9yLm5hbWUgIT09IFwiS1ZWZXJzaW9uQ29uZmxpY3RFcnJvclwiKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXR0ZW1wdCA9PT0gbWF4UmV0cmllcyAtIDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG9wdHMuY29uZmxpY3RFcnJvck1lc3NhZ2UsIHsgY2F1c2U6IGVycm9yIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihvcHRzLmNvbmZsaWN0RXJyb3JNZXNzYWdlKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IFN0b3JhZ2VIYW5kbGVycyB9IGZyb20gXCIuLi9hZGFwdGVyXCI7XG5pbXBvcnQgdHlwZSB7IE1lc3NhZ2UsIFBhcnQsIFNhbmRib3gsIFNlc3Npb24sIFNldHVwIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBtZXJnZVdpdGhLVk9wdGltaXN0aWNVcGRhdGUgfSBmcm9tIFwiLi9rdi1vcHRpbWlzdGljLXVwZGF0ZVwiO1xuXG50eXBlIEt2U3RvcmVzID0gQXdhaXRlZDxSZXR1cm5UeXBlPHR5cGVvZiBpbml0S3ZTdG9yZXM+PjtcblxuYXN5bmMgZnVuY3Rpb24gaW5pdEt2U3RvcmVzKHByZWZpeDogc3RyaW5nKSB7XG4gIGNvbnN0IHsgY3JlYXRlS1YgfSA9IGF3YWl0IGltcG9ydChcIkB2ZXJjZWwva3YyXCIpO1xuICBjb25zdCBrdiA9IGNyZWF0ZUtWKHsgcHJlZml4IH0pLmdldFN0b3JlKFwiYWdlbnQvXCIpO1xuXG4gIHJldHVybiB7XG4gICAgc2Vzc2lvbnM6IGt2LmdldFN0b3JlPFNlc3Npb24+KFwic2Vzc2lvbi9cIiksXG4gICAgbWVzc2FnZXM6IGt2LmdldFN0b3JlPE1lc3NhZ2U+KFwibWVzc2FnZS9cIikud2l0aEluZGV4ZXMoe1xuICAgICAgYnlTZXNzaW9uSWQ6IHsga2V5OiAobTogTWVzc2FnZSkgPT4gbS5zZXNzaW9uSWQgfSxcbiAgICB9KSxcbiAgICBwYXJ0czoga3YuZ2V0U3RvcmU8UGFydD4oXCJwYXJ0L1wiKS53aXRoSW5kZXhlcyh7XG4gICAgICBieVNlc3Npb25JZDogeyBrZXk6IChwOiBQYXJ0KSA9PiBwLnNlc3Npb25JZCB9LFxuICAgIH0pLFxuICAgIHNhbmRib3hlczoga3YuZ2V0U3RvcmU8U2FuZGJveD4oXCJzYW5kYm94L1wiKSxcbiAgICBzZXR1cHM6IGt2LmdldFN0b3JlPFNldHVwPihcInNldHVwL1wiKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGt2U3RvcmFnZUZhbGxiYWNrKG9wdHM6IHsgcHJlZml4OiBzdHJpbmcgfSk6IFN0b3JhZ2VIYW5kbGVycyB7XG4gIGxldCBzdG9yZXNQcm9taXNlOiBQcm9taXNlPEt2U3RvcmVzPiB8IHVuZGVmaW5lZDtcblxuICBmdW5jdGlvbiBnZXRTdG9yZXMoKSB7XG4gICAgaWYgKCFzdG9yZXNQcm9taXNlKSB7XG4gICAgICBzdG9yZXNQcm9taXNlID0gaW5pdEt2U3RvcmVzKG9wdHMucHJlZml4KTtcbiAgICB9XG4gICAgcmV0dXJuIHN0b3Jlc1Byb21pc2U7XG4gIH1cblxuICBjb25zdCB0YWcgPSBgW2FnZW50LiR7b3B0cy5wcmVmaXh9XVtrdjJdYDtcblxuICByZXR1cm4ge1xuICAgIFwic2Vzc2lvbi5nZXRcIjogYXN5bmMgKHsgaWQgfSkgPT4ge1xuICAgICAgY29uc3QgeyBzZXNzaW9ucyB9ID0gYXdhaXQgZ2V0U3RvcmVzKCk7XG4gICAgICByZXR1cm4gKGF3YWl0IHNlc3Npb25zLmdldFZhbHVlKGlkKSkgPz8gbnVsbDtcbiAgICB9LFxuXG4gICAgXCJzZXNzaW9uLnNldFwiOiBhc3luYyAoeyBpZCwgdmFsdWUgfSkgPT4ge1xuICAgICAgY29uc3QgeyBzZXNzaW9ucyB9ID0gYXdhaXQgZ2V0U3RvcmVzKCk7XG4gICAgICBhd2FpdCBzZXNzaW9ucy5zZXQoaWQsIHZhbHVlKTtcbiAgICB9LFxuXG4gICAgXCJzZXNzaW9uLnVwZGF0ZVwiOiBhc3luYyAoeyBpZCwgdXBkYXRlcyB9KSA9PiB7XG4gICAgICBjb25zdCB7IHNlc3Npb25zIH0gPSBhd2FpdCBnZXRTdG9yZXMoKTtcbiAgICAgIHJldHVybiBtZXJnZVdpdGhLVk9wdGltaXN0aWNVcGRhdGU8U2Vzc2lvbj4oe1xuICAgICAgICBpZCxcbiAgICAgICAgdXBkYXRlcyxcbiAgICAgICAgc3RvcmU6IHNlc3Npb25zLFxuICAgICAgICBub3RGb3VuZEVycm9yTWVzc2FnZTogYCR7dGFnfVtzZXNzaW9uLnVwZGF0ZV0gbm8gc2Vzc2lvbiBmb3VuZCB3aXRoIGlkIFwiJHtpZH1cImAsXG4gICAgICAgIGNvbmZsaWN0RXJyb3JNZXNzYWdlOiBgJHt0YWd9W3Nlc3Npb24udXBkYXRlXSBvcHRpbWlzdGljIHVwZGF0ZSBmYWlsZWQgYWZ0ZXIgcmV0cmllcyBmb3IgaWQgXCIke2lkfVwiYCxcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBcIm1lc3NhZ2UuZ2V0XCI6IGFzeW5jICh7IGlkIH0pID0+IHtcbiAgICAgIGNvbnN0IHsgbWVzc2FnZXMgfSA9IGF3YWl0IGdldFN0b3JlcygpO1xuICAgICAgcmV0dXJuIChhd2FpdCBtZXNzYWdlcy5nZXRWYWx1ZShpZCkpID8/IG51bGw7XG4gICAgfSxcblxuICAgIFwibWVzc2FnZS5zZXRcIjogYXN5bmMgKHsgaWQsIHZhbHVlIH0pID0+IHtcbiAgICAgIGNvbnN0IHsgbWVzc2FnZXMgfSA9IGF3YWl0IGdldFN0b3JlcygpO1xuICAgICAgYXdhaXQgbWVzc2FnZXMuc2V0KGlkLCB2YWx1ZSk7XG4gICAgfSxcblxuICAgIFwibWVzc2FnZS51cGRhdGVcIjogYXN5bmMgKHsgaWQsIHVwZGF0ZXMgfSkgPT4ge1xuICAgICAgY29uc3QgeyBtZXNzYWdlcyB9ID0gYXdhaXQgZ2V0U3RvcmVzKCk7XG4gICAgICByZXR1cm4gbWVyZ2VXaXRoS1ZPcHRpbWlzdGljVXBkYXRlPE1lc3NhZ2U+KHtcbiAgICAgICAgaWQsXG4gICAgICAgIHVwZGF0ZXMsXG4gICAgICAgIHN0b3JlOiBtZXNzYWdlcyxcbiAgICAgICAgbm90Rm91bmRFcnJvck1lc3NhZ2U6IGAke3RhZ31bbWVzc2FnZS51cGRhdGVdIG5vIG1lc3NhZ2UgZm91bmQgd2l0aCBpZCBcIiR7aWR9XCJgLFxuICAgICAgICBjb25mbGljdEVycm9yTWVzc2FnZTogYCR7dGFnfVttZXNzYWdlLnVwZGF0ZV0gb3B0aW1pc3RpYyB1cGRhdGUgZmFpbGVkIGFmdGVyIHJldHJpZXMgZm9yIGlkIFwiJHtpZH1cImAsXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgXCJtZXNzYWdlLmxpc3RCeVNlc3Npb25cIjogYXN5bmMgKHsgc2Vzc2lvbklkIH0pID0+IHtcbiAgICAgIGNvbnN0IHsgbWVzc2FnZXMgfSA9IGF3YWl0IGdldFN0b3JlcygpO1xuICAgICAgY29uc3QgcmVzdWx0OiBNZXNzYWdlW10gPSBbXTtcbiAgICAgIGZvciBhd2FpdCAoY29uc3QgWywgZW50cnldIG9mIG1lc3NhZ2VzLmVudHJpZXMoe1xuICAgICAgICBieVNlc3Npb25JZDogc2Vzc2lvbklkLFxuICAgICAgfSkpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goYXdhaXQgZW50cnkudmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuXG4gICAgXCJwYXJ0LmdldFwiOiBhc3luYyAoeyBpZCB9KSA9PiB7XG4gICAgICBjb25zdCB7IHBhcnRzIH0gPSBhd2FpdCBnZXRTdG9yZXMoKTtcbiAgICAgIHJldHVybiAoYXdhaXQgcGFydHMuZ2V0VmFsdWUoaWQpKSA/PyBudWxsO1xuICAgIH0sXG5cbiAgICBcInBhcnQuc2V0XCI6IGFzeW5jICh7IGlkLCB2YWx1ZSB9KSA9PiB7XG4gICAgICBjb25zdCB7IHBhcnRzIH0gPSBhd2FpdCBnZXRTdG9yZXMoKTtcbiAgICAgIGF3YWl0IHBhcnRzLnNldChpZCwgdmFsdWUpO1xuICAgIH0sXG5cbiAgICBcInBhcnQubGlzdEJ5U2Vzc2lvblwiOiBhc3luYyAoeyBzZXNzaW9uSWQgfSkgPT4ge1xuICAgICAgY29uc3QgeyBwYXJ0cyB9ID0gYXdhaXQgZ2V0U3RvcmVzKCk7XG4gICAgICBjb25zdCByZXN1bHQ6IFBhcnRbXSA9IFtdO1xuICAgICAgZm9yIGF3YWl0IChjb25zdCBbLCBlbnRyeV0gb2YgcGFydHMuZW50cmllcyh7XG4gICAgICAgIGJ5U2Vzc2lvbklkOiBzZXNzaW9uSWQsXG4gICAgICB9KSkge1xuICAgICAgICByZXN1bHQucHVzaChhd2FpdCBlbnRyeS52YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG5cbiAgICBcInNhbmRib3guZ2V0XCI6IGFzeW5jICh7IGlkIH0pID0+IHtcbiAgICAgIGNvbnN0IHsgc2FuZGJveGVzIH0gPSBhd2FpdCBnZXRTdG9yZXMoKTtcbiAgICAgIHJldHVybiAoYXdhaXQgc2FuZGJveGVzLmdldFZhbHVlKGlkKSkgPz8gbnVsbDtcbiAgICB9LFxuXG4gICAgXCJzYW5kYm94LnNldFwiOiBhc3luYyAoeyBpZCwgdmFsdWUgfSkgPT4ge1xuICAgICAgY29uc3QgeyBzYW5kYm94ZXMgfSA9IGF3YWl0IGdldFN0b3JlcygpO1xuICAgICAgYXdhaXQgc2FuZGJveGVzLnNldChpZCwgdmFsdWUpO1xuICAgIH0sXG5cbiAgICBcInNhbmRib3gudXBkYXRlXCI6IGFzeW5jICh7IGlkLCB1cGRhdGVzIH0pID0+IHtcbiAgICAgIGNvbnN0IHsgc2FuZGJveGVzIH0gPSBhd2FpdCBnZXRTdG9yZXMoKTtcbiAgICAgIHJldHVybiBtZXJnZVdpdGhLVk9wdGltaXN0aWNVcGRhdGU8U2FuZGJveD4oe1xuICAgICAgICBpZCxcbiAgICAgICAgdXBkYXRlcyxcbiAgICAgICAgc3RvcmU6IHNhbmRib3hlcyxcbiAgICAgICAgbm90Rm91bmRFcnJvck1lc3NhZ2U6IGAke3RhZ31bc2FuZGJveC51cGRhdGVdIG5vIHNhbmRib3ggZm91bmQgd2l0aCBpZCBcIiR7aWR9XCJgLFxuICAgICAgICBjb25mbGljdEVycm9yTWVzc2FnZTogYCR7dGFnfVtzYW5kYm94LnVwZGF0ZV0gb3B0aW1pc3RpYyB1cGRhdGUgZmFpbGVkIGFmdGVyIHJldHJpZXMgZm9yIGlkIFwiJHtpZH1cImAsXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgXCJzZXR1cC5nZXRcIjogYXN5bmMgKHsgaWQgfSkgPT4ge1xuICAgICAgY29uc3QgeyBzZXR1cHMgfSA9IGF3YWl0IGdldFN0b3JlcygpO1xuICAgICAgcmV0dXJuIChhd2FpdCBzZXR1cHMuZ2V0VmFsdWUoaWQpKSA/PyBudWxsO1xuICAgIH0sXG5cbiAgICBcInNldHVwLnNldFwiOiBhc3luYyAoeyBpZCwgdmFsdWUgfSkgPT4ge1xuICAgICAgY29uc3QgeyBzZXR1cHMgfSA9IGF3YWl0IGdldFN0b3JlcygpO1xuICAgICAgYXdhaXQgc2V0dXBzLnNldChpZCwgdmFsdWUpO1xuICAgIH0sXG4gIH07XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBTdG9yYWdlSGFuZGxlcnMgfSBmcm9tIFwiLi4vYWRhcHRlclwiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlLCBQYXJ0LCBTYW5kYm94LCBTZXNzaW9uLCBTZXR1cCB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5sZXQgX2ZzOiB0eXBlb2YgaW1wb3J0KFwibm9kZTpmcy9wcm9taXNlc1wiKSB8IHVuZGVmaW5lZDtcbmxldCBfcGF0aDogdHlwZW9mIGltcG9ydChcIm5vZGU6cGF0aFwiKSB8IHVuZGVmaW5lZDtcblxuYXN5bmMgZnVuY3Rpb24gZnMoKSB7XG4gIGlmICghX2ZzKSB7XG4gICAgX2ZzID0gYXdhaXQgaW1wb3J0KFwibm9kZTpmcy9wcm9taXNlc1wiKTtcbiAgfVxuICByZXR1cm4gX2ZzO1xufVxuYXN5bmMgZnVuY3Rpb24gcGF0aCgpIHtcbiAgaWYgKCFfcGF0aCkge1xuICAgIF9wYXRoID0gYXdhaXQgaW1wb3J0KFwibm9kZTpwYXRoXCIpO1xuICB9XG4gIHJldHVybiBfcGF0aDtcbn1cblxudHlwZSBXcml0ZUxvY2tTdGF0ZSA9IHtcbiAgbG9ja2VkOiBib29sZWFuO1xuICB3YWl0ZXJzOiBBcnJheTwoKSA9PiB2b2lkPjtcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZVdyaXRlTG9jaygpIHtcbiAgY29uc3QgbG9ja3MgPSBuZXcgTWFwPHN0cmluZywgV3JpdGVMb2NrU3RhdGU+KCk7XG5cbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIHdpdGhXcml0ZUxvY2s8VD4ob3B0czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIGZuOiAoKSA9PiBQcm9taXNlPFQ+O1xuICB9KTogUHJvbWlzZTxUPiB7XG4gICAgbGV0IHN0YXRlID0gbG9ja3MuZ2V0KG9wdHMua2V5KTtcbiAgICBpZiAoIXN0YXRlKSB7XG4gICAgICBzdGF0ZSA9IHsgbG9ja2VkOiBmYWxzZSwgd2FpdGVyczogW10gfTtcbiAgICAgIGxvY2tzLnNldChvcHRzLmtleSwgc3RhdGUpO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5sb2NrZWQpIHtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHN0YXRlLndhaXRlcnMucHVzaChyZXNvbHZlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRlLmxvY2tlZCA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IG9wdHMuZm4oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgY29uc3QgbmV4dCA9IHN0YXRlLndhaXRlcnMuc2hpZnQoKTtcbiAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgIG5leHQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLmxvY2tlZCA9IGZhbHNlO1xuICAgICAgICBsb2Nrcy5kZWxldGUob3B0cy5rZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU3RvcmU8VD4oZGlyOiBzdHJpbmcpIHtcbiAgY29uc3QgZmlsZVBhdGggPSBhc3luYyAoa2V5OiBzdHJpbmcpID0+XG4gICAgKGF3YWl0IHBhdGgoKSkuam9pbihkaXIsIGAke2tleX0uanNvbmApO1xuICBjb25zdCB3aXRoV3JpdGVMb2NrID0gY3JlYXRlV3JpdGVMb2NrKCk7XG5cbiAgcmV0dXJuIHtcbiAgICBhc3luYyBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgKGF3YWl0IGZzKCkpLnJlYWRGaWxlKGF3YWl0IGZpbGVQYXRoKGtleSksIFwidXRmLThcIik7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpIGFzIFQ7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBhd2FpdCB3aXRoV3JpdGVMb2NrKHtcbiAgICAgICAga2V5LFxuICAgICAgICBmbjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHAgPSBhd2FpdCBmaWxlUGF0aChrZXkpO1xuICAgICAgICAgIGNvbnN0IHsgbWtkaXIsIHdyaXRlRmlsZSB9ID0gYXdhaXQgZnMoKTtcbiAgICAgICAgICBjb25zdCB7IGRpcm5hbWUgfSA9IGF3YWl0IHBhdGgoKTtcbiAgICAgICAgICBhd2FpdCBta2RpcihkaXJuYW1lKHApLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUocCwgSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdXBkYXRlKGtleTogc3RyaW5nLCB1cGRhdGVzOiBQYXJ0aWFsPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgICByZXR1cm4gd2l0aFdyaXRlTG9jayh7XG4gICAgICAgIGtleSxcbiAgICAgICAgZm46IGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBwID0gYXdhaXQgZmlsZVBhdGgoa2V5KTtcbiAgICAgICAgICBjb25zdCB7IHJlYWRGaWxlLCBta2Rpciwgd3JpdGVGaWxlIH0gPSBhd2FpdCBmcygpO1xuICAgICAgICAgIGNvbnN0IHsgZGlybmFtZSB9ID0gYXdhaXQgcGF0aCgpO1xuICAgICAgICAgIGxldCBleGlzdGluZzogVDtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlYWRGaWxlKHAsIFwidXRmLThcIik7XG4gICAgICAgICAgICBleGlzdGluZyA9IEpTT04ucGFyc2UoZGF0YSkgYXMgVDtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm90IGZvdW5kOiAke2tleX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdXBkYXRlZCA9IHsgLi4uZXhpc3RpbmcsIC4uLnVwZGF0ZXMgfTtcbiAgICAgICAgICBhd2FpdCBta2RpcihkaXJuYW1lKHApLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUocCwgSlNPTi5zdHJpbmdpZnkodXBkYXRlZCwgbnVsbCwgMikpO1xuICAgICAgICAgIHJldHVybiB1cGRhdGVkO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEFsbEZyb21EaXI8VD4oZGlyOiBzdHJpbmcpOiBQcm9taXNlPFRbXT4ge1xuICBjb25zdCB7IHJlYWRkaXIsIHJlYWRGaWxlIH0gPSBhd2FpdCBmcygpO1xuICBjb25zdCB7IGpvaW4gfSA9IGF3YWl0IHBhdGgoKTtcbiAgbGV0IGZpbGVzOiBzdHJpbmdbXTtcbiAgdHJ5IHtcbiAgICBmaWxlcyA9IGF3YWl0IHJlYWRkaXIoZGlyKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IHJlc3VsdDogVFtdID0gW107XG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGlmICghZmlsZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWFkRmlsZShqb2luKGRpciwgZmlsZSksIFwidXRmLThcIik7XG4gICAgICByZXN1bHQucHVzaChKU09OLnBhcnNlKGRhdGEpIGFzIFQpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2tpcCBjb3JydXB0IGZpbGVzXG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGVuc3VyZUdpdGlnbm9yZShkaXI6IHN0cmluZykge1xuICBjb25zdCB7IG1rZGlyLCB3cml0ZUZpbGUsIHJlYWRGaWxlIH0gPSBhd2FpdCBmcygpO1xuICBjb25zdCB7IGpvaW4gfSA9IGF3YWl0IHBhdGgoKTtcbiAgY29uc3QgZ2l0aWdub3JlUGF0aCA9IGpvaW4oZGlyLCBcIi5naXRpZ25vcmVcIik7XG4gIHRyeSB7XG4gICAgYXdhaXQgcmVhZEZpbGUoZ2l0aWdub3JlUGF0aCwgXCJ1dGYtOFwiKTtcbiAgfSBjYXRjaCB7XG4gICAgYXdhaXQgbWtkaXIoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBhd2FpdCB3cml0ZUZpbGUoZ2l0aWdub3JlUGF0aCwgXCIqXFxuXCIpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbFN0b3JhZ2Uob3B0cz86IHsgZGlyPzogc3RyaW5nIH0pOiBTdG9yYWdlSGFuZGxlcnMge1xuICBjb25zdCBkaXIgPSBvcHRzPy5kaXIgPz8gXCIuYWdlbnRcIjtcbiAgbGV0IGdpdGlnbm9yZVByb21pc2U6IFByb21pc2U8dm9pZD4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdCBzZXNzaW9uU3RvcmUgPSBjcmVhdGVTdG9yZTxTZXNzaW9uPihgJHtkaXJ9L3Nlc3Npb25gKTtcbiAgY29uc3QgbWVzc2FnZVN0b3JlID0gY3JlYXRlU3RvcmU8TWVzc2FnZT4oYCR7ZGlyfS9tZXNzYWdlYCk7XG4gIGNvbnN0IHBhcnRTdG9yZSA9IGNyZWF0ZVN0b3JlPFBhcnQ+KGAke2Rpcn0vcGFydGApO1xuICBjb25zdCBzYW5kYm94U3RvcmUgPSBjcmVhdGVTdG9yZTxTYW5kYm94PihgJHtkaXJ9L3NhbmRib3hgKTtcbiAgY29uc3Qgc2V0dXBTdG9yZSA9IGNyZWF0ZVN0b3JlPFNldHVwPihgJHtkaXJ9L3NldHVwYCk7XG4gIGNvbnN0IG1lc3NhZ2VEaXIgPSBgJHtkaXJ9L21lc3NhZ2VgO1xuICBjb25zdCBwYXJ0RGlyID0gYCR7ZGlyfS9wYXJ0YDtcblxuICBmdW5jdGlvbiBvbldyaXRlPFQ+KGZuOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCFnaXRpZ25vcmVQcm9taXNlKSB7XG4gICAgICBnaXRpZ25vcmVQcm9taXNlID0gZW5zdXJlR2l0aWdub3JlKGRpcik7XG4gICAgfVxuICAgIHJldHVybiBnaXRpZ25vcmVQcm9taXNlLnRoZW4oZm4pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBcInNlc3Npb24uZ2V0XCI6ICh7IGlkIH0pID0+IHNlc3Npb25TdG9yZS5nZXQoaWQpLFxuICAgIFwic2Vzc2lvbi5zZXRcIjogKHsgaWQsIHZhbHVlIH0pID0+XG4gICAgICBvbldyaXRlKCgpID0+IHNlc3Npb25TdG9yZS5zZXQoaWQsIHZhbHVlKSksXG4gICAgXCJzZXNzaW9uLnVwZGF0ZVwiOiAoeyBpZCwgdXBkYXRlcyB9KSA9PlxuICAgICAgb25Xcml0ZSgoKSA9PiBzZXNzaW9uU3RvcmUudXBkYXRlKGlkLCB1cGRhdGVzKSksXG5cbiAgICBcIm1lc3NhZ2UuZ2V0XCI6ICh7IGlkIH0pID0+IG1lc3NhZ2VTdG9yZS5nZXQoaWQpLFxuICAgIFwibWVzc2FnZS5zZXRcIjogKHsgaWQsIHZhbHVlIH0pID0+XG4gICAgICBvbldyaXRlKCgpID0+IG1lc3NhZ2VTdG9yZS5zZXQoaWQsIHZhbHVlKSksXG4gICAgXCJtZXNzYWdlLnVwZGF0ZVwiOiAoeyBpZCwgdXBkYXRlcyB9KSA9PlxuICAgICAgb25Xcml0ZSgoKSA9PiBtZXNzYWdlU3RvcmUudXBkYXRlKGlkLCB1cGRhdGVzKSksXG4gICAgXCJtZXNzYWdlLmxpc3RCeVNlc3Npb25cIjogYXN5bmMgKHsgc2Vzc2lvbklkIH0pID0+IHtcbiAgICAgIGNvbnN0IGFsbCA9IGF3YWl0IHJlYWRBbGxGcm9tRGlyPE1lc3NhZ2U+KG1lc3NhZ2VEaXIpO1xuICAgICAgcmV0dXJuIGFsbC5maWx0ZXIoKG0pID0+IG0uc2Vzc2lvbklkID09PSBzZXNzaW9uSWQpO1xuICAgIH0sXG5cbiAgICBcInBhcnQuZ2V0XCI6ICh7IGlkIH0pID0+IHBhcnRTdG9yZS5nZXQoaWQpLFxuICAgIFwicGFydC5zZXRcIjogKHsgaWQsIHZhbHVlIH0pID0+IG9uV3JpdGUoKCkgPT4gcGFydFN0b3JlLnNldChpZCwgdmFsdWUpKSxcbiAgICBcInBhcnQubGlzdEJ5U2Vzc2lvblwiOiBhc3luYyAoeyBzZXNzaW9uSWQgfSkgPT4ge1xuICAgICAgY29uc3QgYWxsID0gYXdhaXQgcmVhZEFsbEZyb21EaXI8UGFydD4ocGFydERpcik7XG4gICAgICByZXR1cm4gYWxsLmZpbHRlcigocCkgPT4gcC5zZXNzaW9uSWQgPT09IHNlc3Npb25JZCk7XG4gICAgfSxcblxuICAgIFwic2FuZGJveC5nZXRcIjogKHsgaWQgfSkgPT4gc2FuZGJveFN0b3JlLmdldChpZCksXG4gICAgXCJzYW5kYm94LnNldFwiOiAoeyBpZCwgdmFsdWUgfSkgPT5cbiAgICAgIG9uV3JpdGUoKCkgPT4gc2FuZGJveFN0b3JlLnNldChpZCwgdmFsdWUpKSxcbiAgICBcInNhbmRib3gudXBkYXRlXCI6ICh7IGlkLCB1cGRhdGVzIH0pID0+XG4gICAgICBvbldyaXRlKCgpID0+IHNhbmRib3hTdG9yZS51cGRhdGUoaWQsIHVwZGF0ZXMpKSxcblxuICAgIFwic2V0dXAuZ2V0XCI6ICh7IGlkIH0pID0+IHNldHVwU3RvcmUuZ2V0KGlkKSxcbiAgICBcInNldHVwLnNldFwiOiAoeyBpZCwgdmFsdWUgfSkgPT4gb25Xcml0ZSgoKSA9PiBzZXR1cFN0b3JlLnNldChpZCwgdmFsdWUpKSxcbiAgfTtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gc2hvdWxkRmFsbGJhY2tUb0tWMigpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhcHJvY2Vzcy5lbnYuQkxPQl9SRUFEX1dSSVRFX1RPS0VOO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
package/dist/storage.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
vercelSandbox
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-D35AQN7O.mjs";
|
|
4
4
|
import "./chunk-GKASMIBR.mjs";
|
|
5
5
|
import "./chunk-JO3JDCH5.mjs";
|
|
6
6
|
import "./chunk-MSWINCCM.mjs";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-LZOMFHX3.mjs";
|
|
8
8
|
export {
|
|
9
9
|
vercelSandbox
|
|
10
10
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "experimental-agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -49,15 +49,22 @@
|
|
|
49
49
|
"types": "./dist/lifecycle-workflow-steps.d.ts",
|
|
50
50
|
"import": "./dist/lifecycle-workflow-steps.mjs",
|
|
51
51
|
"require": "./dist/lifecycle-workflow-steps.js"
|
|
52
|
+
},
|
|
53
|
+
"./react": {
|
|
54
|
+
"types": "./dist/react.d.ts",
|
|
55
|
+
"import": "./dist/react.mjs",
|
|
56
|
+
"require": "./dist/react.js"
|
|
52
57
|
}
|
|
53
58
|
},
|
|
54
59
|
"dependencies": {
|
|
55
60
|
"@swc/core": "^1.10.0",
|
|
61
|
+
"@tanstack/react-query": "^5.90.21",
|
|
56
62
|
"@vercel/kv2": "^0.0.18",
|
|
57
63
|
"@vercel/oidc": "^3.1.0",
|
|
58
64
|
"@vercel/sandbox": "1.7.1",
|
|
59
65
|
"@workflow/serde": "4.1.0-beta.2",
|
|
60
66
|
"better-all": "^0.0.5",
|
|
67
|
+
"elysia": "^1.4.25",
|
|
61
68
|
"errore": "^0.14.0",
|
|
62
69
|
"fast-deep-equal": "^3.1.3",
|
|
63
70
|
"ulid": "^3.0.2",
|
|
@@ -66,6 +73,7 @@
|
|
|
66
73
|
"devDependencies": {
|
|
67
74
|
"@ai-sdk/react": "^3.0.88",
|
|
68
75
|
"@types/node": "^20.11.24",
|
|
76
|
+
"@types/react": "^19.2.14",
|
|
69
77
|
"dotenv": "^17.2.3",
|
|
70
78
|
"next": "^16.0.0",
|
|
71
79
|
"react": "^19.2.4",
|
package/dist/chunk-BJTO5JO5.mjs
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
-
}) : x)(function(x) {
|
|
4
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export {
|
|
9
|
-
__require
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFtdLAogICJzb3VyY2VzQ29udGVudCI6IFtdLAogICJtYXBwaW5ncyI6ICIiLAogICJuYW1lcyI6IFtdCn0K
|