obsidian-dev-utils 22.1.1-beta.2 → 22.1.1-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +113 -0
- package/dist/dprint.json +1 -0
- package/dist/lib/cjs/Async.cjs +1 -1
- package/dist/lib/cjs/Async.d.cts +17 -17
- package/dist/lib/cjs/Library.cjs +1 -1
- package/dist/lib/cjs/Object.cjs +38 -3
- package/dist/lib/cjs/Object.d.cts +16 -6
- package/dist/lib/cjs/ScriptUtils/CliUtils.cjs +7 -8
- package/dist/lib/cjs/ScriptUtils/CliUtils.d.cts +11 -10
- package/dist/lib/cjs/ScriptUtils/Exec.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/Exec.d.cts +2 -2
- package/dist/lib/cjs/ScriptUtils/Root.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/Root.d.cts +2 -2
- package/dist/lib/cjs/ScriptUtils/cli.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/esbuild/Dependency.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/esbuild/Dependency.d.cts +2 -2
- package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.d.cts +2 -2
- package/dist/lib/cjs/ScriptUtils/spellcheck.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/spellcheck.d.cts +2 -2
- package/dist/lib/cjs/ScriptUtils/version.cjs +1 -1
- package/dist/lib/cjs/ScriptUtils/version.d.cts +2 -2
- package/dist/lib/cjs/String.cjs +1 -1
- package/dist/lib/cjs/String.d.cts +2 -1
- package/dist/lib/cjs/Transformers/Transformer.cjs +9 -2
- package/dist/lib/cjs/Type.cjs +24 -0
- package/dist/lib/cjs/Type.d.cts +12 -0
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/Backlink.cjs +1 -1
- package/dist/lib/cjs/obsidian/Backlink.d.cts +1 -1
- package/dist/lib/cjs/obsidian/Callout.cjs +1 -1
- package/dist/lib/cjs/obsidian/Callout.d.cts +2 -1
- package/dist/lib/cjs/obsidian/Components/MultipleTextComponent.cjs +29 -2
- package/dist/lib/cjs/obsidian/Components/MultipleTextComponent.d.cts +20 -1
- package/dist/lib/cjs/obsidian/Components/TextBasedComponent.cjs +60 -0
- package/dist/lib/cjs/obsidian/Components/TextBasedComponent.d.cts +30 -0
- package/dist/lib/cjs/obsidian/Components/TypedTextComponent.cjs +27 -3
- package/dist/lib/cjs/obsidian/Components/TypedTextComponent.d.cts +19 -1
- package/dist/lib/cjs/obsidian/Components/index.cjs +4 -1
- package/dist/lib/cjs/obsidian/Components/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/Dataview.cjs +1 -1
- package/dist/lib/cjs/obsidian/Dataview.d.cts +3 -3
- package/dist/lib/cjs/obsidian/DataviewLink.cjs +1 -1
- package/dist/lib/cjs/obsidian/DataviewLink.d.cts +2 -2
- package/dist/lib/cjs/obsidian/FileManager.cjs +1 -1
- package/dist/lib/cjs/obsidian/FileManager.d.cts +2 -1
- package/dist/lib/cjs/obsidian/Link.cjs +1 -1
- package/dist/lib/cjs/obsidian/Link.d.cts +4 -3
- package/dist/lib/cjs/obsidian/Markdown.cjs +5 -8
- package/dist/lib/cjs/obsidian/Modals/Prompt.cjs +1 -1
- package/dist/lib/cjs/obsidian/Modals/Prompt.d.cts +2 -1
- package/dist/lib/cjs/obsidian/MonkeyAround.cjs +1 -1
- package/dist/lib/cjs/obsidian/MonkeyAround.d.cts +2 -2
- package/dist/lib/cjs/obsidian/Plugin/PluginBase.cjs +42 -4
- package/dist/lib/cjs/obsidian/Plugin/PluginBase.d.cts +24 -5
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.cjs +203 -62
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.d.cts +55 -21
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.cjs +33 -20
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.d.cts +20 -17
- package/dist/lib/cjs/obsidian/RenameDeleteHandler.cjs +75 -75
- package/dist/lib/cjs/obsidian/ValidationMessage.cjs +38 -0
- package/dist/lib/cjs/obsidian/ValidationMessage.d.cts +16 -0
- package/dist/lib/cjs/obsidian/Vault.cjs +1 -1
- package/dist/lib/cjs/obsidian/Vault.d.cts +1 -1
- package/dist/lib/cjs/obsidian/index.cjs +4 -1
- package/dist/lib/cjs/obsidian/index.d.cts +1 -0
- package/dist/lib/esm/Async.d.mts +17 -17
- package/dist/lib/esm/Async.mjs +1 -1
- package/dist/lib/esm/Library.mjs +1 -1
- package/dist/lib/esm/Object.d.mts +16 -6
- package/dist/lib/esm/Object.mjs +36 -3
- package/dist/lib/esm/ScriptUtils/CliUtils.d.mts +11 -10
- package/dist/lib/esm/ScriptUtils/CliUtils.mjs +7 -8
- package/dist/lib/esm/ScriptUtils/Exec.d.mts +2 -2
- package/dist/lib/esm/ScriptUtils/Exec.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/Root.d.mts +2 -2
- package/dist/lib/esm/ScriptUtils/Root.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/cli.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/esbuild/Dependency.d.mts +2 -2
- package/dist/lib/esm/ScriptUtils/esbuild/Dependency.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.d.mts +2 -2
- package/dist/lib/esm/ScriptUtils/esbuild/ObsidianPluginBuilder.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/spellcheck.d.mts +2 -2
- package/dist/lib/esm/ScriptUtils/spellcheck.mjs +1 -1
- package/dist/lib/esm/ScriptUtils/version.d.mts +2 -2
- package/dist/lib/esm/ScriptUtils/version.mjs +1 -1
- package/dist/lib/esm/String.d.mts +2 -1
- package/dist/lib/esm/String.mjs +1 -1
- package/dist/lib/esm/Transformers/Transformer.mjs +9 -2
- package/dist/lib/esm/Type.d.mts +12 -0
- package/dist/lib/esm/Type.mjs +8 -0
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/obsidian/Backlink.d.mts +1 -1
- package/dist/lib/esm/obsidian/Backlink.mjs +1 -1
- package/dist/lib/esm/obsidian/Callout.d.mts +2 -1
- package/dist/lib/esm/obsidian/Callout.mjs +1 -1
- package/dist/lib/esm/obsidian/Components/MultipleTextComponent.d.mts +20 -1
- package/dist/lib/esm/obsidian/Components/MultipleTextComponent.mjs +29 -2
- package/dist/lib/esm/obsidian/Components/TextBasedComponent.d.mts +30 -0
- package/dist/lib/esm/obsidian/Components/TextBasedComponent.mjs +36 -0
- package/dist/lib/esm/obsidian/Components/TypedTextComponent.d.mts +19 -1
- package/dist/lib/esm/obsidian/Components/TypedTextComponent.mjs +27 -3
- package/dist/lib/esm/obsidian/Components/index.d.mts +1 -0
- package/dist/lib/esm/obsidian/Components/index.mjs +3 -1
- package/dist/lib/esm/obsidian/Dataview.d.mts +3 -3
- package/dist/lib/esm/obsidian/Dataview.mjs +1 -1
- package/dist/lib/esm/obsidian/DataviewLink.d.mts +2 -2
- package/dist/lib/esm/obsidian/DataviewLink.mjs +1 -1
- package/dist/lib/esm/obsidian/FileManager.d.mts +2 -1
- package/dist/lib/esm/obsidian/FileManager.mjs +1 -1
- package/dist/lib/esm/obsidian/Link.d.mts +4 -3
- package/dist/lib/esm/obsidian/Link.mjs +1 -1
- package/dist/lib/esm/obsidian/Markdown.mjs +5 -8
- package/dist/lib/esm/obsidian/Modals/Prompt.d.mts +2 -1
- package/dist/lib/esm/obsidian/Modals/Prompt.mjs +1 -1
- package/dist/lib/esm/obsidian/MonkeyAround.d.mts +2 -2
- package/dist/lib/esm/obsidian/MonkeyAround.mjs +1 -1
- package/dist/lib/esm/obsidian/Plugin/PluginBase.d.mts +24 -5
- package/dist/lib/esm/obsidian/Plugin/PluginBase.mjs +42 -4
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.d.mts +55 -21
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.mjs +203 -63
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.d.mts +20 -17
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.mjs +36 -20
- package/dist/lib/esm/obsidian/RenameDeleteHandler.mjs +75 -75
- package/dist/lib/esm/obsidian/ValidationMessage.d.mts +16 -0
- package/dist/lib/esm/obsidian/ValidationMessage.mjs +14 -0
- package/dist/lib/esm/obsidian/Vault.d.mts +1 -1
- package/dist/lib/esm/obsidian/Vault.mjs +1 -1
- package/dist/lib/esm/obsidian/index.d.mts +1 -0
- package/dist/lib/esm/obsidian/index.mjs +3 -1
- package/obsidian/Components/TextBasedComponent/package.json +6 -0
- package/obsidian/ValidationMessage/package.json +6 -0
- package/package.json +4 -4
@@ -28,7 +28,6 @@ __export(RenameDeleteHandler_exports, {
|
|
28
28
|
registerRenameDeleteHandlers: () => registerRenameDeleteHandlers
|
29
29
|
});
|
30
30
|
module.exports = __toCommonJS(RenameDeleteHandler_exports);
|
31
|
-
var import_monkey_around = require('monkey-around');
|
32
31
|
var import_obsidian = require('obsidian');
|
33
32
|
var import_Debug = require('../Debug.cjs');
|
34
33
|
var import_Function = require('../Function.cjs');
|
@@ -40,6 +39,7 @@ var import_AttachmentPath = require('./AttachmentPath.cjs');
|
|
40
39
|
var import_FileSystem = require('./FileSystem.cjs');
|
41
40
|
var import_Link = require('./Link.cjs');
|
42
41
|
var import_MetadataCache = require('./MetadataCache.cjs');
|
42
|
+
var import_MonkeyAround = require('./MonkeyAround.cjs');
|
43
43
|
var import_Queue = require('./Queue.cjs');
|
44
44
|
var import_Vault = require('./Vault.cjs');
|
45
45
|
var import_VaultEx = require('./VaultEx.cjs');
|
@@ -257,89 +257,89 @@ async function handleRenameAsync(app, oldPath, newPath, oldPathBacklinksMap, old
|
|
257
257
|
if (await handleCaseCollision(app, oldPath, newPath, oldPathBacklinksMap, oldPathLinks)) {
|
258
258
|
return;
|
259
259
|
}
|
260
|
-
|
260
|
+
await (0, import_MonkeyAround.invokeWithPatchAsync)(app.fileManager, {
|
261
261
|
updateAllLinks: () => import_Function.noopAsync
|
262
|
-
})
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
}
|
275
|
-
const parentFolders = /* @__PURE__ */ new Set();
|
276
|
-
for (const [oldAttachmentPath, newAttachmentPath] of renameMap.entries()) {
|
277
|
-
if (oldAttachmentPath === oldPath) {
|
278
|
-
continue;
|
279
|
-
}
|
280
|
-
const fixedNewAttachmentPath = await renameHandled(app, oldAttachmentPath, newAttachmentPath);
|
281
|
-
renameMap.set(oldAttachmentPath, fixedNewAttachmentPath);
|
282
|
-
parentFolders.add((0, import_Path.dirname)(oldAttachmentPath));
|
283
|
-
}
|
284
|
-
const settings = getSettings(app);
|
285
|
-
if (settings.shouldDeleteEmptyFolders) {
|
286
|
-
for (const parentFolder of parentFolders) {
|
287
|
-
await (0, import_VaultEx.deleteEmptyFolderHierarchy)(app, parentFolder);
|
262
|
+
}, async () => {
|
263
|
+
try {
|
264
|
+
const renameMap = /* @__PURE__ */ new Map();
|
265
|
+
await fillRenameMap(app, oldPath, newPath, renameMap, oldPathLinks);
|
266
|
+
const combinedBacklinksMap = /* @__PURE__ */ new Map();
|
267
|
+
initBacklinksMap(oldPathBacklinksMap, renameMap, combinedBacklinksMap, oldPath);
|
268
|
+
for (const attachmentOldPath of renameMap.keys()) {
|
269
|
+
if (attachmentOldPath === oldPath) {
|
270
|
+
continue;
|
271
|
+
}
|
272
|
+
const attachmentOldPathBacklinksMap = (await (0, import_MetadataCache.getBacklinksForFileSafe)(app, attachmentOldPath)).data;
|
273
|
+
initBacklinksMap(attachmentOldPathBacklinksMap, renameMap, combinedBacklinksMap, attachmentOldPath);
|
288
274
|
}
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
await (0, import_Link.editLinks)(app, newBacklinkPath, (link) => {
|
294
|
-
const oldAttachmentPath = linkJsonToPathMap.get((0, import_Object.toJson)(link));
|
295
|
-
if (!oldAttachmentPath) {
|
296
|
-
return;
|
275
|
+
const parentFolders = /* @__PURE__ */ new Set();
|
276
|
+
for (const [oldAttachmentPath, newAttachmentPath] of renameMap.entries()) {
|
277
|
+
if (oldAttachmentPath === oldPath) {
|
278
|
+
continue;
|
297
279
|
}
|
298
|
-
const
|
299
|
-
|
300
|
-
|
280
|
+
const fixedNewAttachmentPath = await renameHandled(app, oldAttachmentPath, newAttachmentPath);
|
281
|
+
renameMap.set(oldAttachmentPath, fixedNewAttachmentPath);
|
282
|
+
parentFolders.add((0, import_Path.dirname)(oldAttachmentPath));
|
283
|
+
}
|
284
|
+
const settings = getSettings(app);
|
285
|
+
if (settings.shouldDeleteEmptyFolders) {
|
286
|
+
for (const parentFolder of parentFolders) {
|
287
|
+
await (0, import_VaultEx.deleteEmptyFolderHierarchy)(app, parentFolder);
|
301
288
|
}
|
302
|
-
|
289
|
+
}
|
290
|
+
for (const [newBacklinkPath, linkJsonToPathMap] of Array.from(combinedBacklinksMap.entries()).concat(
|
291
|
+
Array.from(interruptedCombinedBacklinksMap?.entries() ?? [])
|
292
|
+
)) {
|
293
|
+
await (0, import_Link.editLinks)(app, newBacklinkPath, (link) => {
|
294
|
+
const oldAttachmentPath = linkJsonToPathMap.get((0, import_Object.toJson)(link));
|
295
|
+
if (!oldAttachmentPath) {
|
296
|
+
return;
|
297
|
+
}
|
298
|
+
const newAttachmentPath = renameMap.get(oldAttachmentPath);
|
299
|
+
if (!newAttachmentPath) {
|
300
|
+
return;
|
301
|
+
}
|
302
|
+
return (0, import_Link.updateLink)((0, import_Object.normalizeOptionalProperties)({
|
303
|
+
app,
|
304
|
+
link,
|
305
|
+
newSourcePathOrFile: newBacklinkPath,
|
306
|
+
newTargetPathOrFile: newAttachmentPath,
|
307
|
+
oldTargetPathOrFile: oldAttachmentPath,
|
308
|
+
shouldUpdateFilenameAlias: settings.shouldUpdateFilenameAliases
|
309
|
+
}));
|
310
|
+
}, {
|
311
|
+
shouldFailOnMissingFile: false
|
312
|
+
});
|
313
|
+
}
|
314
|
+
if ((0, import_FileSystem.isNote)(app, newPath)) {
|
315
|
+
await (0, import_Link.updateLinksInFile)((0, import_Object.normalizeOptionalProperties)({
|
303
316
|
app,
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
oldTargetPathOrFile: oldAttachmentPath,
|
317
|
+
newSourcePathOrFile: newPath,
|
318
|
+
oldSourcePathOrFile: oldPath,
|
319
|
+
shouldFailOnMissingFile: false,
|
308
320
|
shouldUpdateFilenameAlias: settings.shouldUpdateFilenameAliases
|
309
321
|
}));
|
310
|
-
}, {
|
311
|
-
shouldFailOnMissingFile: false
|
312
|
-
});
|
313
|
-
}
|
314
|
-
if ((0, import_FileSystem.isNote)(app, newPath)) {
|
315
|
-
await (0, import_Link.updateLinksInFile)((0, import_Object.normalizeOptionalProperties)({
|
316
|
-
app,
|
317
|
-
newSourcePathOrFile: newPath,
|
318
|
-
oldSourcePathOrFile: oldPath,
|
319
|
-
shouldFailOnMissingFile: false,
|
320
|
-
shouldUpdateFilenameAlias: settings.shouldUpdateFilenameAliases
|
321
|
-
}));
|
322
|
-
}
|
323
|
-
if (!(0, import_FileSystem.getFileOrNull)(app, newPath)) {
|
324
|
-
let interruptedRenames = interruptedRenamesMap.get(newPath);
|
325
|
-
if (!interruptedRenames) {
|
326
|
-
interruptedRenames = [];
|
327
|
-
interruptedRenamesMap.set(newPath, interruptedRenames);
|
328
322
|
}
|
329
|
-
|
330
|
-
|
331
|
-
|
323
|
+
if (!(0, import_FileSystem.getFileOrNull)(app, newPath)) {
|
324
|
+
let interruptedRenames = interruptedRenamesMap.get(newPath);
|
325
|
+
if (!interruptedRenames) {
|
326
|
+
interruptedRenames = [];
|
327
|
+
interruptedRenamesMap.set(newPath, interruptedRenames);
|
328
|
+
}
|
329
|
+
interruptedRenames.push({
|
330
|
+
combinedBacklinksMap,
|
331
|
+
oldPath
|
332
|
+
});
|
333
|
+
}
|
334
|
+
} finally {
|
335
|
+
const orphanKeys = Array.from(handledRenames);
|
336
|
+
(0, import_Queue.addToQueue)(app, () => {
|
337
|
+
for (const key of orphanKeys) {
|
338
|
+
handledRenames.delete(key);
|
339
|
+
}
|
332
340
|
});
|
333
341
|
}
|
334
|
-
}
|
335
|
-
restoreUpdateAllLinks();
|
336
|
-
const orphanKeys = Array.from(handledRenames);
|
337
|
-
(0, import_Queue.addToQueue)(app, () => {
|
338
|
-
for (const key of orphanKeys) {
|
339
|
-
handledRenames.delete(key);
|
340
|
-
}
|
341
|
-
});
|
342
|
-
}
|
342
|
+
});
|
343
343
|
}
|
344
344
|
function handleRenameIfEnabled(plugin, file, oldPath) {
|
345
345
|
if (!shouldInvokeHandler(plugin)) {
|
@@ -422,4 +422,4 @@ function shouldInvokeHandler(plugin) {
|
|
422
422
|
0 && (module.exports = {
|
423
423
|
registerRenameDeleteHandlers
|
424
424
|
});
|
425
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1JlbmFtZURlbGV0ZUhhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIFJlbmFtZURlbGV0ZUhhbmRsZXJcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBoYW5kbGluZyByZW5hbWUgYW5kIGRlbGV0ZSBldmVudHMgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIENhY2hlZE1ldGFkYXRhLFxuICBQbHVnaW4sXG4gIFJlZmVyZW5jZSxcbiAgVEFic3RyYWN0RmlsZSxcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBhcm91bmQgfSBmcm9tICdtb25rZXktYXJvdW5kJztcbmltcG9ydCB7IFZhdWx0IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFVwZGF0ZUxpbmtPcHRpb25zLFxuICBVcGRhdGVMaW5rc0luRmlsZU9wdGlvbnNcbn0gZnJvbSAnLi9MaW5rLnRzJztcblxuaW1wb3J0IHsgZ2V0TGliRGVidWdnZXIgfSBmcm9tICcuLi9EZWJ1Zy50cyc7XG5pbXBvcnQgeyBub29wQXN5bmMgfSBmcm9tICcuLi9GdW5jdGlvbi50cyc7XG5pbXBvcnQge1xuICBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMsXG4gIHRvSnNvblxufSBmcm9tICcuLi9PYmplY3QudHMnO1xuaW1wb3J0IHtcbiAgYmFzZW5hbWUsXG4gIGRpcm5hbWUsXG4gIGV4dG5hbWUsXG4gIGpvaW4sXG4gIG1ha2VGaWxlTmFtZSxcbiAgcmVsYXRpdmVcbn0gZnJvbSAnLi4vUGF0aC50cyc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnLi4vU3RyaW5nLnRzJztcbmltcG9ydCB7IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSB9IGZyb20gJy4vQXBwLnRzJztcbmltcG9ydCB7XG4gIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoLFxuICBoYXNPd25BdHRhY2htZW50Rm9sZGVyXG59IGZyb20gJy4vQXR0YWNobWVudFBhdGgudHMnO1xuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgZ2V0RmlsZU9yTnVsbCxcbiAgZ2V0Rm9sZGVyT3JOdWxsLFxuICBpc0ZpbGUsXG4gIGlzTWFya2Rvd25GaWxlLFxuICBpc05vdGVcbn0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB7XG4gIGVkaXRMaW5rcyxcbiAgZXh0cmFjdExpbmtGaWxlLFxuICB1cGRhdGVMaW5rLFxuICB1cGRhdGVMaW5rc0luRmlsZVxufSBmcm9tICcuL0xpbmsudHMnO1xuaW1wb3J0IHtcbiAgZ2V0QWxsTGlua3MsXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgsXG4gIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlLFxuICB0ZW1wUmVnaXN0ZXJGaWxlQW5kUnVuXG59IGZyb20gJy4vTWV0YWRhdGFDYWNoZS50cyc7XG5pbXBvcnQgeyBhZGRUb1F1ZXVlIH0gZnJvbSAnLi9RdWV1ZS50cyc7XG5pbXBvcnQge1xuICBnZXRTYWZlUmVuYW1lUGF0aCxcbiAgcmVuYW1lU2FmZVxufSBmcm9tICcuL1ZhdWx0LnRzJztcbmltcG9ydCB7XG4gIGRlbGV0ZUVtcHR5Rm9sZGVySGllcmFyY2h5LFxuICBkZWxldGVTYWZlXG59IGZyb20gJy4vVmF1bHRFeC50cyc7XG5cbmNvbnN0IGRlbGV0ZWRNZXRhZGF0YUNhY2hlTWFwID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlZE1ldGFkYXRhPigpO1xuY29uc3QgaGFuZGxlZFJlbmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbmNvbnN0IGludGVycnVwdGVkUmVuYW1lc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBJbnRlcnJ1cHRlZFJlbmFtZVtdPigpO1xuXG4vKipcbiAqIFNldHRpbmdzIGZvciB0aGUgcmVuYW1lL2RlbGV0ZSBoYW5kbGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGlnbm9yZSB0aGUgcGF0aC5cbiAgICovXG4gIGlzUGF0aElnbm9yZWQocGF0aDogc3RyaW5nKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkZWxldGUgY29uZmxpY3RpbmcgYXR0YWNobWVudHMuXG4gICAqL1xuICBzaG91bGREZWxldGVDb25mbGljdGluZ0F0dGFjaG1lbnRzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRlbGV0ZSBlbXB0eSBmb2xkZXJzLlxuICAgKi9cbiAgc2hvdWxkRGVsZXRlRW1wdHlGb2xkZXJzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGhhbmRsZSBkZWxldGlvbnMuXG4gICAqL1xuICBzaG91bGRIYW5kbGVEZWxldGlvbnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaGFuZGxlIHJlbmFtZXMuXG4gICAqL1xuICBzaG91bGRIYW5kbGVSZW5hbWVzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlbmFtZSBhdHRhY2htZW50IGZpbGVzIHdoZW4gYSBub3RlIGlzIHJlbmFtZWQuXG4gICAqL1xuICBzaG91bGRSZW5hbWVBdHRhY2htZW50RmlsZXM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVuYW1lIGF0dGFjaG1lbnQgZm9sZGVyIHdoZW4gYSBub3RlIGlzIHJlbmFtZWQuXG4gICAqL1xuICBzaG91bGRSZW5hbWVBdHRhY2htZW50Rm9sZGVyOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVwZGF0ZSBmaWxlbmFtZSBhbGlhc2VzIHdoZW4gYSBub3RlIGlzIHJlbmFtZWQuXG4gICAqL1xuICBzaG91bGRVcGRhdGVGaWxlbmFtZUFsaWFzZXM6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBJbnRlcnJ1cHRlZFJlbmFtZSB7XG4gIGNvbWJpbmVkQmFja2xpbmtzTWFwOiBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBzdHJpbmc+PjtcbiAgb2xkUGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgcmVuYW1lL2RlbGV0ZSBoYW5kbGVycy5cbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIGluc3RhbmNlLlxuICogQHBhcmFtIHNldHRpbmdzQnVpbGRlciAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzZXR0aW5ncyBmb3IgdGhlIHJlbmFtZSBkZWxldGUgaGFuZGxlci5cbiAqIEByZXR1cm5zIHZvaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyUmVuYW1lRGVsZXRlSGFuZGxlcnMocGx1Z2luOiBQbHVnaW4sIHNldHRpbmdzQnVpbGRlcjogKCkgPT4gUGFydGlhbDxSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3M+KTogdm9pZCB7XG4gIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwID0gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAocGx1Z2luLmFwcCk7XG4gIGNvbnN0IHBsdWdpbklkID0gcGx1Z2luLm1hbmlmZXN0LmlkO1xuXG4gIHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwLnNldChwbHVnaW5JZCwgc2V0dGluZ3NCdWlsZGVyKTtcbiAgbG9nUmVnaXN0ZXJlZEhhbmRsZXJzKHBsdWdpbi5hcHApO1xuXG4gIHBsdWdpbi5yZWdpc3RlcigoKSA9PiB7XG4gICAgcmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAuZGVsZXRlKHBsdWdpbklkKTtcbiAgICBsb2dSZWdpc3RlcmVkSGFuZGxlcnMocGx1Z2luLmFwcCk7XG4gIH0pO1xuXG4gIGNvbnN0IGFwcCA9IHBsdWdpbi5hcHA7XG4gIHBsdWdpbi5yZWdpc3RlckV2ZW50KFxuICAgIGFwcC52YXVsdC5vbignZGVsZXRlJywgKGZpbGUpID0+IHtcbiAgICAgIGhhbmRsZURlbGV0ZUlmRW5hYmxlZChwbHVnaW4sIGZpbGUpO1xuICAgIH0pXG4gICk7XG5cbiAgcGx1Z2luLnJlZ2lzdGVyRXZlbnQoXG4gICAgYXBwLnZhdWx0Lm9uKCdyZW5hbWUnLCAoZmlsZSwgb2xkUGF0aCkgPT4ge1xuICAgICAgaGFuZGxlUmVuYW1lSWZFbmFibGVkKHBsdWdpbiwgZmlsZSwgb2xkUGF0aCk7XG4gICAgfSlcbiAgKTtcblxuICBwbHVnaW4ucmVnaXN0ZXJFdmVudChcbiAgICBhcHAubWV0YWRhdGFDYWNoZS5vbignZGVsZXRlZCcsIChmaWxlLCBwcmV2Q2FjaGUpID0+IHtcbiAgICAgIGhhbmRsZU1ldGFkYXRhRGVsZXRlZElmRW5hYmxlZChwbHVnaW4sIGZpbGUsIHByZXZDYWNoZSk7XG4gICAgfSlcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29udGludWVJbnRlcnJ1cHRlZFJlbmFtZXMoXG4gIGFwcDogQXBwLFxuICBvbGRQYXRoOiBzdHJpbmcsXG4gIG5ld1BhdGg6IHN0cmluZyxcbiAgb2xkUGF0aEJhY2tsaW5rc01hcDogTWFwPHN0cmluZywgUmVmZXJlbmNlW10+LFxuICBvbGRQYXRoTGlua3M6IFJlZmVyZW5jZVtdXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgaW50ZXJydXB0ZWRSZW5hbWVzID0gaW50ZXJydXB0ZWRSZW5hbWVzTWFwLmdldChvbGRQYXRoKTtcbiAgaWYgKGludGVycnVwdGVkUmVuYW1lcykge1xuICAgIGludGVycnVwdGVkUmVuYW1lc01hcC5kZWxldGUob2xkUGF0aCk7XG4gICAgZm9yIChjb25zdCBpbnRlcnJ1cHRlZFJlbmFtZSBvZiBpbnRlcnJ1cHRlZFJlbmFtZXMpIHtcbiAgICAgIGF3YWl0IGhhbmRsZVJlbmFtZUFzeW5jKGFwcCwgaW50ZXJydXB0ZWRSZW5hbWUub2xkUGF0aCwgbmV3UGF0aCwgb2xkUGF0aEJhY2tsaW5rc01hcCwgb2xkUGF0aExpbmtzLCBpbnRlcnJ1cHRlZFJlbmFtZS5jb21iaW5lZEJhY2tsaW5rc01hcCk7XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbGxSZW5hbWVNYXAoYXBwOiBBcHAsIG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nLCByZW5hbWVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4sIG9sZFBhdGhMaW5rczogUmVmZXJlbmNlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmVuYW1lTWFwLnNldChvbGRQYXRoLCBuZXdQYXRoKTtcblxuICBpZiAoIWlzTm90ZShhcHAsIG9sZFBhdGgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhhcHApO1xuXG4gIGNvbnN0IG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgoYXBwLCBvbGRQYXRoKTtcbiAgY29uc3QgbmV3QXR0YWNobWVudEZvbGRlclBhdGggPSBzZXR0aW5ncy5zaG91bGRSZW5hbWVBdHRhY2htZW50Rm9sZGVyXG4gICAgPyBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHAsIG5ld1BhdGgpXG4gICAgOiBvbGRBdHRhY2htZW50Rm9sZGVyUGF0aDtcblxuICBjb25zdCBvbGRBdHRhY2htZW50Rm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgb2xkQXR0YWNobWVudEZvbGRlclBhdGgpO1xuXG4gIGlmICghb2xkQXR0YWNobWVudEZvbGRlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCA9PT0gbmV3QXR0YWNobWVudEZvbGRlclBhdGggJiYgIXNldHRpbmdzLnNob3VsZFJlbmFtZUF0dGFjaG1lbnRGaWxlcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG9sZEF0dGFjaG1lbnRGaWxlczogVEZpbGVbXSA9IFtdO1xuXG4gIGlmIChhd2FpdCBoYXNPd25BdHRhY2htZW50Rm9sZGVyKGFwcCwgb2xkUGF0aCkpIHtcbiAgICBWYXVsdC5yZWN1cnNlQ2hpbGRyZW4ob2xkQXR0YWNobWVudEZvbGRlciwgKG9sZEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgICBpZiAoaXNGaWxlKG9sZEF0dGFjaG1lbnRGaWxlKSkge1xuICAgICAgICBvbGRBdHRhY2htZW50RmlsZXMucHVzaChvbGRBdHRhY2htZW50RmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgZm9yIChjb25zdCBvbGRQYXRoTGluayBvZiBvbGRQYXRoTGlua3MpIHtcbiAgICAgIGNvbnN0IG9sZEF0dGFjaG1lbnRGaWxlID0gZXh0cmFjdExpbmtGaWxlKGFwcCwgb2xkUGF0aExpbmssIG9sZFBhdGgpO1xuICAgICAgaWYgKCFvbGRBdHRhY2htZW50RmlsZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9sZEF0dGFjaG1lbnRGaWxlLnBhdGguc3RhcnRzV2l0aChvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCkpIHtcbiAgICAgICAgY29uc3Qgb2xkQXR0YWNobWVudEJhY2tsaW5rcyA9IGF3YWl0IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKGFwcCwgb2xkQXR0YWNobWVudEZpbGUpO1xuICAgICAgICBpZiAob2xkQXR0YWNobWVudEJhY2tsaW5rcy5rZXlzKCkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgb2xkQXR0YWNobWVudEZpbGVzLnB1c2gob2xkQXR0YWNobWVudEZpbGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb2xkQmFzZW5hbWUgPSBiYXNlbmFtZShvbGRQYXRoLCBleHRuYW1lKG9sZFBhdGgpKTtcbiAgY29uc3QgbmV3QmFzZW5hbWUgPSBiYXNlbmFtZShuZXdQYXRoLCBleHRuYW1lKG5ld1BhdGgpKTtcblxuICBmb3IgKGNvbnN0IG9sZEF0dGFjaG1lbnRGaWxlIG9mIG9sZEF0dGFjaG1lbnRGaWxlcykge1xuICAgIGlmIChpc05vdGUoYXBwLCBvbGRBdHRhY2htZW50RmlsZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZShvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCwgb2xkQXR0YWNobWVudEZpbGUucGF0aCk7XG4gICAgY29uc3QgbmV3RGlyID0gam9pbihuZXdBdHRhY2htZW50Rm9sZGVyUGF0aCwgZGlybmFtZShyZWxhdGl2ZVBhdGgpKTtcbiAgICBjb25zdCBuZXdDaGlsZEJhc2VuYW1lID0gc2V0dGluZ3Muc2hvdWxkUmVuYW1lQXR0YWNobWVudEZpbGVzXG4gICAgICA/IHJlcGxhY2VBbGwob2xkQXR0YWNobWVudEZpbGUuYmFzZW5hbWUsIG9sZEJhc2VuYW1lLCBuZXdCYXNlbmFtZSlcbiAgICAgIDogb2xkQXR0YWNobWVudEZpbGUuYmFzZW5hbWU7XG4gICAgbGV0IG5ld0NoaWxkUGF0aCA9IGpvaW4obmV3RGlyLCBtYWtlRmlsZU5hbWUobmV3Q2hpbGRCYXNlbmFtZSwgb2xkQXR0YWNobWVudEZpbGUuZXh0ZW5zaW9uKSk7XG5cbiAgICBpZiAob2xkQXR0YWNobWVudEZpbGUucGF0aCA9PT0gbmV3Q2hpbGRQYXRoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoc2V0dGluZ3Muc2hvdWxkRGVsZXRlQ29uZmxpY3RpbmdBdHRhY2htZW50cykge1xuICAgICAgY29uc3QgbmV3Q2hpbGRGaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIG5ld0NoaWxkUGF0aCk7XG4gICAgICBpZiAobmV3Q2hpbGRGaWxlKSB7XG4gICAgICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci50cmFzaEZpbGUobmV3Q2hpbGRGaWxlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbmV3Q2hpbGRQYXRoID0gYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgoam9pbihuZXdEaXIsIG5ld0NoaWxkQmFzZW5hbWUpLCBvbGRBdHRhY2htZW50RmlsZS5leHRlbnNpb24pO1xuICAgIH1cbiAgICByZW5hbWVNYXAuc2V0KG9sZEF0dGFjaG1lbnRGaWxlLnBhdGgsIG5ld0NoaWxkUGF0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAoYXBwOiBBcHApOiBNYXA8c3RyaW5nLCAoKSA9PiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4+IHtcbiAgcmV0dXJuIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZShhcHAsICdyZW5hbWVEZWxldGVIYW5kbGVyc01hcCcsIG5ldyBNYXA8c3RyaW5nLCAoKSA9PiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4+KCkpLnZhbHVlO1xufVxuXG5mdW5jdGlvbiBnZXRTZXR0aW5ncyhhcHA6IEFwcCk6IFBhcnRpYWw8UmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzPiB7XG4gIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwID0gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAoYXBwKTtcbiAgY29uc3Qgc2V0dGluZ3NCdWlsZGVycyA9IEFycmF5LmZyb20ocmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAudmFsdWVzKCkpLnJldmVyc2UoKTtcblxuICBjb25zdCBzZXR0aW5nczogUGFydGlhbDxSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3M+ID0ge307XG4gIGZvciAoY29uc3Qgc2V0dGluZ3NCdWlsZGVyIG9mIHNldHRpbmdzQnVpbGRlcnMpIHtcbiAgICBjb25zdCBuZXdTZXR0aW5ncyA9IHNldHRpbmdzQnVpbGRlcigpO1xuICAgIHNldHRpbmdzLnNob3VsZERlbGV0ZUNvbmZsaWN0aW5nQXR0YWNobWVudHMgfHw9IG5ld1NldHRpbmdzLnNob3VsZERlbGV0ZUNvbmZsaWN0aW5nQXR0YWNobWVudHMgPz8gZmFsc2U7XG4gICAgc2V0dGluZ3Muc2hvdWxkRGVsZXRlRW1wdHlGb2xkZXJzIHx8PSBuZXdTZXR0aW5ncy5zaG91bGREZWxldGVFbXB0eUZvbGRlcnMgPz8gZmFsc2U7XG4gICAgc2V0dGluZ3Muc2hvdWxkSGFuZGxlRGVsZXRpb25zIHx8PSBuZXdTZXR0aW5ncy5zaG91bGRIYW5kbGVEZWxldGlvbnMgPz8gZmFsc2U7XG4gICAgc2V0dGluZ3Muc2hvdWxkSGFuZGxlUmVuYW1lcyB8fD0gbmV3U2V0dGluZ3Muc2hvdWxkSGFuZGxlUmVuYW1lcyA/PyBmYWxzZTtcbiAgICBzZXR0aW5ncy5zaG91bGRSZW5hbWVBdHRhY2htZW50RmlsZXMgfHw9IG5ld1NldHRpbmdzLnNob3VsZFJlbmFtZUF0dGFjaG1lbnRGaWxlcyA/PyBmYWxzZTtcbiAgICBzZXR0aW5ncy5zaG91bGRSZW5hbWVBdHRhY2htZW50Rm9sZGVyIHx8PSBuZXdTZXR0aW5ncy5zaG91bGRSZW5hbWVBdHRhY2htZW50Rm9sZGVyID8/IGZhbHNlO1xuICAgIHNldHRpbmdzLnNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXNlcyB8fD0gbmV3U2V0dGluZ3Muc2hvdWxkVXBkYXRlRmlsZW5hbWVBbGlhc2VzID8/IGZhbHNlO1xuICAgIGNvbnN0IGlzUGF0aElnbm9yZWQgPSBzZXR0aW5ncy5pc1BhdGhJZ25vcmVkO1xuICAgIHNldHRpbmdzLmlzUGF0aElnbm9yZWQgPSAocGF0aDogc3RyaW5nKTogYm9vbGVhbiA9PiBpc1BhdGhJZ25vcmVkPy4ocGF0aCkgPz8gbmV3U2V0dGluZ3MuaXNQYXRoSWdub3JlZD8uKHBhdGgpID8/IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHNldHRpbmdzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVDYXNlQ29sbGlzaW9uKFxuICBhcHA6IEFwcCxcbiAgb2xkUGF0aDogc3RyaW5nLFxuICBuZXdQYXRoOiBzdHJpbmcsXG4gIG9sZFBhdGhCYWNrbGlua3NNYXA6IE1hcDxzdHJpbmcsIFJlZmVyZW5jZVtdPixcbiAgb2xkUGF0aExpbmtzOiBSZWZlcmVuY2VbXVxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmICghYXBwLnZhdWx0LmFkYXB0ZXIuaW5zZW5zaXRpdmUgfHwgb2xkUGF0aC50b0xvd2VyQ2FzZSgpICE9PSBuZXdQYXRoLnRvTG93ZXJDYXNlKCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB0ZW1wUGF0aCA9IGpvaW4oZGlybmFtZShuZXdQYXRoKSwgYF9fdGVtcF9fJHtiYXNlbmFtZShuZXdQYXRoKX1gKTtcbiAgYXdhaXQgcmVuYW1lSGFuZGxlZChhcHAsIG5ld1BhdGgsIHRlbXBQYXRoKTtcbiAgYXdhaXQgaGFuZGxlUmVuYW1lQXN5bmMoYXBwLCBvbGRQYXRoLCB0ZW1wUGF0aCwgb2xkUGF0aEJhY2tsaW5rc01hcCwgb2xkUGF0aExpbmtzKTtcbiAgYXdhaXQgYXBwLnZhdWx0LnJlbmFtZShnZXRGaWxlKGFwcCwgdGVtcFBhdGgpLCBuZXdQYXRoKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZURlbGV0ZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGdldExpYkRlYnVnZ2VyKCdSZW5hbWVEZWxldGVIYW5kbGVyOmhhbmRsZURlbGV0ZScpKGBIYW5kbGUgRGVsZXRlICR7cGF0aH1gKTtcbiAgaWYgKCFpc05vdGUoYXBwLCBwYXRoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3MoYXBwKTtcbiAgaWYgKCFzZXR0aW5ncy5zaG91bGRIYW5kbGVEZWxldGlvbnMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoc2V0dGluZ3MuaXNQYXRoSWdub3JlZD8uKHBhdGgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY2FjaGUgPSBkZWxldGVkTWV0YWRhdGFDYWNoZU1hcC5nZXQocGF0aCk7XG4gIGRlbGV0ZWRNZXRhZGF0YUNhY2hlTWFwLmRlbGV0ZShwYXRoKTtcbiAgaWYgKGNhY2hlKSB7XG4gICAgY29uc3QgbGlua3MgPSBnZXRBbGxMaW5rcyhjYWNoZSk7XG5cbiAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRGaWxlID0gZXh0cmFjdExpbmtGaWxlKGFwcCwgbGluaywgcGF0aCk7XG4gICAgICBpZiAoIWF0dGFjaG1lbnRGaWxlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNOb3RlKGFwcCwgYXR0YWNobWVudEZpbGUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBkZWxldGVTYWZlKGFwcCwgYXR0YWNobWVudEZpbGUsIHBhdGgsIHNldHRpbmdzLnNob3VsZERlbGV0ZUVtcHR5Rm9sZGVycyk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHAsIHBhdGgpO1xuICBjb25zdCBhdHRhY2htZW50Rm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgYXR0YWNobWVudEZvbGRlclBhdGgpO1xuXG4gIGlmICghYXR0YWNobWVudEZvbGRlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghKGF3YWl0IGhhc093bkF0dGFjaG1lbnRGb2xkZXIoYXBwLCBwYXRoKSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBhd2FpdCBkZWxldGVTYWZlKGFwcCwgYXR0YWNobWVudEZvbGRlciwgcGF0aCwgZmFsc2UsIHNldHRpbmdzLnNob3VsZERlbGV0ZUVtcHR5Rm9sZGVycyk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZURlbGV0ZUlmRW5hYmxlZChwbHVnaW46IFBsdWdpbiwgZmlsZTogVEFic3RyYWN0RmlsZSk6IHZvaWQge1xuICBjb25zdCBhcHAgPSBwbHVnaW4uYXBwO1xuICBpZiAoIXNob3VsZEludm9rZUhhbmRsZXIocGx1Z2luKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBwYXRoID0gZmlsZS5wYXRoO1xuICBhZGRUb1F1ZXVlKGFwcCwgKCkgPT4gaGFuZGxlRGVsZXRlKGFwcCwgcGF0aCkpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXRhZGF0YURlbGV0ZWQoYXBwOiBBcHAsIGZpbGU6IFRBYnN0cmFjdEZpbGUsIHByZXZDYWNoZTogQ2FjaGVkTWV0YWRhdGEgfCBudWxsKTogdm9pZCB7XG4gIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3MoYXBwKTtcbiAgaWYgKHNldHRpbmdzLmlzUGF0aElnbm9yZWQ/LihmaWxlLnBhdGgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFzZXR0aW5ncy5zaG91bGRIYW5kbGVEZWxldGlvbnMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGlzTWFya2Rvd25GaWxlKGFwcCwgZmlsZSkgJiYgcHJldkNhY2hlKSB7XG4gICAgZGVsZXRlZE1ldGFkYXRhQ2FjaGVNYXAuc2V0KGZpbGUucGF0aCwgcHJldkNhY2hlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXRhZGF0YURlbGV0ZWRJZkVuYWJsZWQocGx1Z2luOiBQbHVnaW4sIGZpbGU6IFRBYnN0cmFjdEZpbGUsIHByZXZDYWNoZTogQ2FjaGVkTWV0YWRhdGEgfCBudWxsKTogdm9pZCB7XG4gIGlmICghc2hvdWxkSW52b2tlSGFuZGxlcihwbHVnaW4pKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGhhbmRsZU1ldGFkYXRhRGVsZXRlZChwbHVnaW4uYXBwLCBmaWxlLCBwcmV2Q2FjaGUpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVSZW5hbWUoYXBwOiBBcHAsIG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGtleSA9IG1ha2VLZXkob2xkUGF0aCwgbmV3UGF0aCk7XG4gIGdldExpYkRlYnVnZ2VyKCdSZW5hbWVEZWxldGVIYW5kbGVyOmhhbmRsZVJlbmFtZScpKGBIYW5kbGUgUmVuYW1lICR7a2V5fWApO1xuICBpZiAoaGFuZGxlZFJlbmFtZXMuaGFzKGtleSkpIHtcbiAgICBoYW5kbGVkUmVuYW1lcy5kZWxldGUoa2V5KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzZXR0aW5ncyA9IGdldFNldHRpbmdzKGFwcCk7XG4gIGlmICghc2V0dGluZ3Muc2hvdWxkSGFuZGxlUmVuYW1lcyB8fCBzZXR0aW5ncy5pc1BhdGhJZ25vcmVkPy4ob2xkUGF0aCkgfHwgc2V0dGluZ3MuaXNQYXRoSWdub3JlZD8uKG5ld1BhdGgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY2FjaGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRDYWNoZShvbGRQYXRoKSA/PyBhcHAubWV0YWRhdGFDYWNoZS5nZXRDYWNoZShuZXdQYXRoKTtcbiAgY29uc3Qgb2xkUGF0aExpbmtzID0gY2FjaGUgPyBnZXRBbGxMaW5rcyhjYWNoZSkgOiBbXTtcbiAgY29uc3Qgb2xkUGF0aEJhY2tsaW5rc01hcCA9IGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgoYXBwLCBvbGRQYXRoKS5kYXRhO1xuICBhZGRUb1F1ZXVlKGFwcCwgKCkgPT4gaGFuZGxlUmVuYW1lQXN5bmMoYXBwLCBvbGRQYXRoLCBuZXdQYXRoLCBvbGRQYXRoQmFja2xpbmtzTWFwLCBvbGRQYXRoTGlua3MpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlUmVuYW1lQXN5bmMoXG4gIGFwcDogQXBwLFxuICBvbGRQYXRoOiBzdHJpbmcsXG4gIG5ld1BhdGg6IHN0cmluZyxcbiAgb2xkUGF0aEJhY2tsaW5rc01hcDogTWFwPHN0cmluZywgUmVmZXJlbmNlW10+LFxuICBvbGRQYXRoTGlua3M6IFJlZmVyZW5jZVtdLFxuICBpbnRlcnJ1cHRlZENvbWJpbmVkQmFja2xpbmtzTWFwPzogTWFwPHN0cmluZywgTWFwPHN0cmluZywgc3RyaW5nPj5cbik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBjb250aW51ZUludGVycnVwdGVkUmVuYW1lcyhhcHAsIG9sZFBhdGgsIG5ld1BhdGgsIG9sZFBhdGhCYWNrbGlua3NNYXAsIG9sZFBhdGhMaW5rcyk7XG4gIGF3YWl0IHJlZnJlc2hMaW5rcyhhcHAsIG9sZFBhdGgsIG5ld1BhdGgsIG9sZFBhdGhCYWNrbGlua3NNYXAsIG9sZFBhdGhMaW5rcyk7XG4gIGlmIChhd2FpdCBoYW5kbGVDYXNlQ29sbGlzaW9uKGFwcCwgb2xkUGF0aCwgbmV3UGF0aCwgb2xkUGF0aEJhY2tsaW5rc01hcCwgb2xkUGF0aExpbmtzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHJlc3RvcmVVcGRhdGVBbGxMaW5rcyA9IGFyb3VuZChhcHAuZmlsZU1hbmFnZXIsIHtcbiAgICB1cGRhdGVBbGxMaW5rczogKCkgPT4gbm9vcEFzeW5jXG4gIH0pO1xuICB0cnkge1xuICAgIGNvbnN0IHJlbmFtZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgYXdhaXQgZmlsbFJlbmFtZU1hcChhcHAsIG9sZFBhdGgsIG5ld1BhdGgsIHJlbmFtZU1hcCwgb2xkUGF0aExpbmtzKTtcblxuICAgIGNvbnN0IGNvbWJpbmVkQmFja2xpbmtzTWFwID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIHN0cmluZz4+KCk7XG4gICAgaW5pdEJhY2tsaW5rc01hcChvbGRQYXRoQmFja2xpbmtzTWFwLCByZW5hbWVNYXAsIGNvbWJpbmVkQmFja2xpbmtzTWFwLCBvbGRQYXRoKTtcblxuICAgIGZvciAoY29uc3QgYXR0YWNobWVudE9sZFBhdGggb2YgcmVuYW1lTWFwLmtleXMoKSkge1xuICAgICAgaWYgKGF0dGFjaG1lbnRPbGRQYXRoID09PSBvbGRQYXRoKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgYXR0YWNobWVudE9sZFBhdGhCYWNrbGlua3NNYXAgPSAoYXdhaXQgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUoYXBwLCBhdHRhY2htZW50T2xkUGF0aCkpLmRhdGE7XG4gICAgICBpbml0QmFja2xpbmtzTWFwKGF0dGFjaG1lbnRPbGRQYXRoQmFja2xpbmtzTWFwLCByZW5hbWVNYXAsIGNvbWJpbmVkQmFja2xpbmtzTWFwLCBhdHRhY2htZW50T2xkUGF0aCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50Rm9sZGVycyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgZm9yIChjb25zdCBbb2xkQXR0YWNobWVudFBhdGgsIG5ld0F0dGFjaG1lbnRQYXRoXSBvZiByZW5hbWVNYXAuZW50cmllcygpKSB7XG4gICAgICBpZiAob2xkQXR0YWNobWVudFBhdGggPT09IG9sZFBhdGgpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBmaXhlZE5ld0F0dGFjaG1lbnRQYXRoID0gYXdhaXQgcmVuYW1lSGFuZGxlZChhcHAsIG9sZEF0dGFjaG1lbnRQYXRoLCBuZXdBdHRhY2htZW50UGF0aCk7XG4gICAgICByZW5hbWVNYXAuc2V0KG9sZEF0dGFjaG1lbnRQYXRoLCBmaXhlZE5ld0F0dGFjaG1lbnRQYXRoKTtcbiAgICAgIHBhcmVudEZvbGRlcnMuYWRkKGRpcm5hbWUob2xkQXR0YWNobWVudFBhdGgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXR0aW5ncyA9IGdldFNldHRpbmdzKGFwcCk7XG4gICAgaWYgKHNldHRpbmdzLnNob3VsZERlbGV0ZUVtcHR5Rm9sZGVycykge1xuICAgICAgZm9yIChjb25zdCBwYXJlbnRGb2xkZXIgb2YgcGFyZW50Rm9sZGVycykge1xuICAgICAgICBhd2FpdCBkZWxldGVFbXB0eUZvbGRlckhpZXJhcmNoeShhcHAsIHBhcmVudEZvbGRlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChcbiAgICAgIGNvbnN0IFtuZXdCYWNrbGlua1BhdGgsIGxpbmtKc29uVG9QYXRoTWFwXSBvZiBBcnJheS5mcm9tKGNvbWJpbmVkQmFja2xpbmtzTWFwLmVudHJpZXMoKSkuY29uY2F0KFxuICAgICAgICBBcnJheS5mcm9tKGludGVycnVwdGVkQ29tYmluZWRCYWNrbGlua3NNYXA/LmVudHJpZXMoKSA/PyBbXSlcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGF3YWl0IGVkaXRMaW5rcyhhcHAsIG5ld0JhY2tsaW5rUGF0aCwgKGxpbmspID0+IHtcbiAgICAgICAgY29uc3Qgb2xkQXR0YWNobWVudFBhdGggPSBsaW5rSnNvblRvUGF0aE1hcC5nZXQodG9Kc29uKGxpbmspKTtcbiAgICAgICAgaWYgKCFvbGRBdHRhY2htZW50UGF0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld0F0dGFjaG1lbnRQYXRoID0gcmVuYW1lTWFwLmdldChvbGRBdHRhY2htZW50UGF0aCk7XG4gICAgICAgIGlmICghbmV3QXR0YWNobWVudFBhdGgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXBkYXRlTGluayhub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8VXBkYXRlTGlua09wdGlvbnM+KHtcbiAgICAgICAgICBhcHAsXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICBuZXdTb3VyY2VQYXRoT3JGaWxlOiBuZXdCYWNrbGlua1BhdGgsXG4gICAgICAgICAgbmV3VGFyZ2V0UGF0aE9yRmlsZTogbmV3QXR0YWNobWVudFBhdGgsXG4gICAgICAgICAgb2xkVGFyZ2V0UGF0aE9yRmlsZTogb2xkQXR0YWNobWVudFBhdGgsXG4gICAgICAgICAgc2hvdWxkVXBkYXRlRmlsZW5hbWVBbGlhczogc2V0dGluZ3Muc2hvdWxkVXBkYXRlRmlsZW5hbWVBbGlhc2VzXG4gICAgICAgIH0pKTtcbiAgICAgIH0sIHtcbiAgICAgICAgc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoaXNOb3RlKGFwcCwgbmV3UGF0aCkpIHtcbiAgICAgIGF3YWl0IHVwZGF0ZUxpbmtzSW5GaWxlKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxVcGRhdGVMaW5rc0luRmlsZU9wdGlvbnM+KHtcbiAgICAgICAgYXBwLFxuICAgICAgICBuZXdTb3VyY2VQYXRoT3JGaWxlOiBuZXdQYXRoLFxuICAgICAgICBvbGRTb3VyY2VQYXRoT3JGaWxlOiBvbGRQYXRoLFxuICAgICAgICBzaG91bGRGYWlsT25NaXNzaW5nRmlsZTogZmFsc2UsXG4gICAgICAgIHNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXM6IHNldHRpbmdzLnNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXNlc1xuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmICghZ2V0RmlsZU9yTnVsbChhcHAsIG5ld1BhdGgpKSB7XG4gICAgICBsZXQgaW50ZXJydXB0ZWRSZW5hbWVzID0gaW50ZXJydXB0ZWRSZW5hbWVzTWFwLmdldChuZXdQYXRoKTtcbiAgICAgIGlmICghaW50ZXJydXB0ZWRSZW5hbWVzKSB7XG4gICAgICAgIGludGVycnVwdGVkUmVuYW1lcyA9IFtdO1xuICAgICAgICBpbnRlcnJ1cHRlZFJlbmFtZXNNYXAuc2V0KG5ld1BhdGgsIGludGVycnVwdGVkUmVuYW1lcyk7XG4gICAgICB9XG4gICAgICBpbnRlcnJ1cHRlZFJlbmFtZXMucHVzaCh7XG4gICAgICAgIGNvbWJpbmVkQmFja2xpbmtzTWFwLFxuICAgICAgICBvbGRQYXRoXG4gICAgICB9KTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgcmVzdG9yZVVwZGF0ZUFsbExpbmtzKCk7XG4gICAgY29uc3Qgb3JwaGFuS2V5cyA9IEFycmF5LmZyb20oaGFuZGxlZFJlbmFtZXMpO1xuICAgIGFkZFRvUXVldWUoYXBwLCAoKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBvcnBoYW5LZXlzKSB7XG4gICAgICAgIGhhbmRsZWRSZW5hbWVzLmRlbGV0ZShrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVJlbmFtZUlmRW5hYmxlZChwbHVnaW46IFBsdWdpbiwgZmlsZTogVEFic3RyYWN0RmlsZSwgb2xkUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGlmICghc2hvdWxkSW52b2tlSGFuZGxlcihwbHVnaW4pKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghaXNGaWxlKGZpbGUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IG5ld1BhdGggPSBmaWxlLnBhdGg7XG4gIGhhbmRsZVJlbmFtZShwbHVnaW4uYXBwLCBvbGRQYXRoLCBuZXdQYXRoKTtcbn1cblxuZnVuY3Rpb24gaW5pdEJhY2tsaW5rc01hcChcbiAgc2luZ2xlQmFja2xpbmtzTWFwOiBNYXA8c3RyaW5nLCBSZWZlcmVuY2VbXT4sXG4gIHJlbmFtZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPixcbiAgY29tYmluZWRCYWNrbGlua3NNYXA6IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIHN0cmluZz4+LFxuICBwYXRoOiBzdHJpbmdcbik6IHZvaWQge1xuICBmb3IgKGNvbnN0IFtiYWNrbGlua1BhdGgsIGxpbmtzXSBvZiBzaW5nbGVCYWNrbGlua3NNYXAuZW50cmllcygpKSB7XG4gICAgY29uc3QgbmV3QmFja2xpbmtQYXRoID0gcmVuYW1lTWFwLmdldChiYWNrbGlua1BhdGgpID8/IGJhY2tsaW5rUGF0aDtcbiAgICBjb25zdCBsaW5rSnNvblRvUGF0aE1hcCA9IGNvbWJpbmVkQmFja2xpbmtzTWFwLmdldChuZXdCYWNrbGlua1BhdGgpID8/IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgY29tYmluZWRCYWNrbGlua3NNYXAuc2V0KG5ld0JhY2tsaW5rUGF0aCwgbGlua0pzb25Ub1BhdGhNYXApO1xuICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rcykge1xuICAgICAgbGlua0pzb25Ub1BhdGhNYXAuc2V0KHRvSnNvbihsaW5rKSwgcGF0aCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGxvZ1JlZ2lzdGVyZWRIYW5kbGVycyhhcHA6IEFwcCk6IHZvaWQge1xuICBjb25zdCByZW5hbWVEZWxldGVIYW5kbGVyc01hcCA9IGdldFJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwKGFwcCk7XG4gIGdldExpYkRlYnVnZ2VyKCdSZW5hbWVEZWxldGVIYW5kbGVyOmxvZ1JlZ2lzdGVyZWRIYW5kbGVycycpKFxuICAgIGBQbHVnaW5zIHdpdGggcmVnaXN0ZXJlZCByZW5hbWUvZGVsZXRlIGhhbmRsZXJzOiAke0pTT04uc3RyaW5naWZ5KEFycmF5LmZyb20ocmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAua2V5cygpKSl9YFxuICApO1xufVxuXG5mdW5jdGlvbiBtYWtlS2V5KG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke29sZFBhdGh9IC0+ICR7bmV3UGF0aH1gO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWZyZXNoTGlua3MoXG4gIGFwcDogQXBwLFxuICBvbGRQYXRoOiBzdHJpbmcsXG4gIG5ld1BhdGg6IHN0cmluZyxcbiAgb2xkUGF0aEJhY2tsaW5rc01hcDogTWFwPHN0cmluZywgUmVmZXJlbmNlW10+LFxuICBvbGRQYXRoTGlua3M6IFJlZmVyZW5jZVtdXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgY2FjaGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRDYWNoZShvbGRQYXRoKSA/PyBhcHAubWV0YWRhdGFDYWNoZS5nZXRDYWNoZShuZXdQYXRoKTtcbiAgY29uc3Qgb2xkUGF0aExpbmtzUmVmcmVzaGVkID0gY2FjaGUgPyBnZXRBbGxMaW5rcyhjYWNoZSkgOiBbXTtcbiAgY29uc3QgZmFrZU9sZEZpbGUgPSBnZXRGaWxlKGFwcCwgb2xkUGF0aCwgdHJ1ZSk7XG4gIGxldCBvbGRQYXRoQmFja2xpbmtzTWFwUmVmcmVzaGVkID0gbmV3IE1hcDxzdHJpbmcsIFJlZmVyZW5jZVtdPigpO1xuICBhd2FpdCB0ZW1wUmVnaXN0ZXJGaWxlQW5kUnVuKGFwcCwgZmFrZU9sZEZpbGUsIGFzeW5jICgpID0+IHtcbiAgICBvbGRQYXRoQmFja2xpbmtzTWFwUmVmcmVzaGVkID0gKGF3YWl0IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKGFwcCwgZmFrZU9sZEZpbGUpKS5kYXRhO1xuICB9KTtcblxuICBmb3IgKGNvbnN0IGxpbmsgb2Ygb2xkUGF0aExpbmtzUmVmcmVzaGVkKSB7XG4gICAgaWYgKG9sZFBhdGhMaW5rcy5pbmNsdWRlcyhsaW5rKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIG9sZFBhdGhMaW5rcy5wdXNoKGxpbmspO1xuICB9XG5cbiAgZm9yIChjb25zdCBbYmFja2xpbmtQYXRoLCByZWZyZXNoZWRMaW5rc10gb2Ygb2xkUGF0aEJhY2tsaW5rc01hcFJlZnJlc2hlZC5lbnRyaWVzKCkpIHtcbiAgICBsZXQgb2xkTGlua3MgPSBvbGRQYXRoQmFja2xpbmtzTWFwLmdldChiYWNrbGlua1BhdGgpO1xuICAgIGlmICghb2xkTGlua3MpIHtcbiAgICAgIG9sZExpbmtzID0gW107XG4gICAgICBvbGRQYXRoQmFja2xpbmtzTWFwLnNldChiYWNrbGlua1BhdGgsIG9sZExpbmtzKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGxpbmsgb2YgcmVmcmVzaGVkTGlua3MpIHtcbiAgICAgIGlmIChvbGRMaW5rcy5pbmNsdWRlcyhsaW5rKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIG9sZExpbmtzLnB1c2gobGluayk7XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbmFtZUhhbmRsZWQoYXBwOiBBcHAsIG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgbmV3UGF0aCA9IGdldFNhZmVSZW5hbWVQYXRoKGFwcCwgb2xkUGF0aCwgbmV3UGF0aCk7XG4gIGlmIChvbGRQYXRoID09PSBuZXdQYXRoKSB7XG4gICAgcmV0dXJuIG5ld1BhdGg7XG4gIH1cbiAgY29uc3Qga2V5ID0gbWFrZUtleShvbGRQYXRoLCBuZXdQYXRoKTtcbiAgaGFuZGxlZFJlbmFtZXMuYWRkKGtleSk7XG4gIG5ld1BhdGggPSBhd2FpdCByZW5hbWVTYWZlKGFwcCwgb2xkUGF0aCwgbmV3UGF0aCk7XG4gIHJldHVybiBuZXdQYXRoO1xufVxuXG5mdW5jdGlvbiBzaG91bGRJbnZva2VIYW5kbGVyKHBsdWdpbjogUGx1Z2luKTogYm9vbGVhbiB7XG4gIGNvbnN0IGFwcCA9IHBsdWdpbi5hcHA7XG4gIGNvbnN0IHBsdWdpbklkID0gcGx1Z2luLm1hbmlmZXN0LmlkO1xuXG4gIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXJQbHVnaW5JZHMgPSBnZXRSZW5hbWVEZWxldGVIYW5kbGVyc01hcChhcHApO1xuICBjb25zdCBtYWluUGx1Z2luSWQgPSBBcnJheS5mcm9tKHJlbmFtZURlbGV0ZUhhbmRsZXJQbHVnaW5JZHMua2V5cygpKVswXTtcbiAgaWYgKG1haW5QbHVnaW5JZCAhPT0gcGx1Z2luSWQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWNBLDJCQUF1QjtBQUN2QixzQkFBc0I7QUFPdEIsbUJBQStCO0FBQy9CLHNCQUEwQjtBQUMxQixvQkFHTztBQUNQLGtCQU9PO0FBQ1Asb0JBQTJCO0FBQzNCLGlCQUF5QztBQUN6Qyw0QkFHTztBQUNQLHdCQU9PO0FBQ1Asa0JBS087QUFDUCwyQkFLTztBQUNQLG1CQUEyQjtBQUMzQixtQkFHTztBQUNQLHFCQUdPO0FBRVAsTUFBTSwwQkFBMEIsb0JBQUksSUFBNEI7QUFDaEUsTUFBTSxpQkFBaUIsb0JBQUksSUFBWTtBQUN2QyxNQUFNLHdCQUF3QixvQkFBSSxJQUFpQztBQTBENUQsU0FBUyw2QkFBNkIsUUFBZ0IsaUJBQW1FO0FBQzlILFFBQU0sMEJBQTBCLDJCQUEyQixPQUFPLEdBQUc7QUFDckUsUUFBTSxXQUFXLE9BQU8sU0FBUztBQUVqQywwQkFBd0IsSUFBSSxVQUFVLGVBQWU7QUFDckQsd0JBQXNCLE9BQU8sR0FBRztBQUVoQyxTQUFPLFNBQVMsTUFBTTtBQUNwQiw0QkFBd0IsT0FBTyxRQUFRO0FBQ3ZDLDBCQUFzQixPQUFPLEdBQUc7QUFBQSxFQUNsQyxDQUFDO0FBRUQsUUFBTSxNQUFNLE9B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
|
425
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1JlbmFtZURlbGV0ZUhhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIFJlbmFtZURlbGV0ZUhhbmRsZXJcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBoYW5kbGluZyByZW5hbWUgYW5kIGRlbGV0ZSBldmVudHMgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIENhY2hlZE1ldGFkYXRhLFxuICBQbHVnaW4sXG4gIFJlZmVyZW5jZSxcbiAgVEFic3RyYWN0RmlsZSxcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBWYXVsdCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUge1xuICBVcGRhdGVMaW5rT3B0aW9ucyxcbiAgVXBkYXRlTGlua3NJbkZpbGVPcHRpb25zXG59IGZyb20gJy4vTGluay50cyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vRGVidWcudHMnO1xuaW1wb3J0IHsgbm9vcEFzeW5jIH0gZnJvbSAnLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzLFxuICB0b0pzb25cbn0gZnJvbSAnLi4vT2JqZWN0LnRzJztcbmltcG9ydCB7XG4gIGJhc2VuYW1lLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBqb2luLFxuICBtYWtlRmlsZU5hbWUsXG4gIHJlbGF0aXZlXG59IGZyb20gJy4uL1BhdGgudHMnO1xuaW1wb3J0IHsgcmVwbGFjZUFsbCB9IGZyb20gJy4uL1N0cmluZy50cyc7XG5pbXBvcnQgeyBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUgfSBmcm9tICcuL0FwcC50cyc7XG5pbXBvcnQge1xuICBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCxcbiAgaGFzT3duQXR0YWNobWVudEZvbGRlclxufSBmcm9tICcuL0F0dGFjaG1lbnRQYXRoLnRzJztcbmltcG9ydCB7XG4gIGdldEZpbGUsXG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZvbGRlck9yTnVsbCxcbiAgaXNGaWxlLFxuICBpc01hcmtkb3duRmlsZSxcbiAgaXNOb3RlXG59IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBlZGl0TGlua3MsXG4gIGV4dHJhY3RMaW5rRmlsZSxcbiAgdXBkYXRlTGluayxcbiAgdXBkYXRlTGlua3NJbkZpbGVcbn0gZnJvbSAnLi9MaW5rLnRzJztcbmltcG9ydCB7XG4gIGdldEFsbExpbmtzLFxuICBnZXRCYWNrbGlua3NGb3JGaWxlT3JQYXRoLFxuICBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZSxcbiAgdGVtcFJlZ2lzdGVyRmlsZUFuZFJ1blxufSBmcm9tICcuL01ldGFkYXRhQ2FjaGUudHMnO1xuaW1wb3J0IHsgaW52b2tlV2l0aFBhdGNoQXN5bmMgfSBmcm9tICcuL01vbmtleUFyb3VuZC50cyc7XG5pbXBvcnQgeyBhZGRUb1F1ZXVlIH0gZnJvbSAnLi9RdWV1ZS50cyc7XG5pbXBvcnQge1xuICBnZXRTYWZlUmVuYW1lUGF0aCxcbiAgcmVuYW1lU2FmZVxufSBmcm9tICcuL1ZhdWx0LnRzJztcbmltcG9ydCB7XG4gIGRlbGV0ZUVtcHR5Rm9sZGVySGllcmFyY2h5LFxuICBkZWxldGVTYWZlXG59IGZyb20gJy4vVmF1bHRFeC50cyc7XG5cbmNvbnN0IGRlbGV0ZWRNZXRhZGF0YUNhY2hlTWFwID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlZE1ldGFkYXRhPigpO1xuY29uc3QgaGFuZGxlZFJlbmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbmNvbnN0IGludGVycnVwdGVkUmVuYW1lc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBJbnRlcnJ1cHRlZFJlbmFtZVtdPigpO1xuXG4vKipcbiAqIFNldHRpbmdzIGZvciB0aGUgcmVuYW1lL2RlbGV0ZSBoYW5kbGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGlnbm9yZSB0aGUgcGF0aC5cbiAgICovXG4gIGlzUGF0aElnbm9yZWQocGF0aDogc3RyaW5nKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkZWxldGUgY29uZmxpY3RpbmcgYXR0YWNobWVudHMuXG4gICAqL1xuICBzaG91bGREZWxldGVDb25mbGljdGluZ0F0dGFjaG1lbnRzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRlbGV0ZSBlbXB0eSBmb2xkZXJzLlxuICAgKi9cbiAgc2hvdWxkRGVsZXRlRW1wdHlGb2xkZXJzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGhhbmRsZSBkZWxldGlvbnMuXG4gICAqL1xuICBzaG91bGRIYW5kbGVEZWxldGlvbnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaGFuZGxlIHJlbmFtZXMuXG4gICAqL1xuICBzaG91bGRIYW5kbGVSZW5hbWVzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlbmFtZSBhdHRhY2htZW50IGZpbGVzIHdoZW4gYSBub3RlIGlzIHJlbmFtZWQuXG4gICAqL1xuICBzaG91bGRSZW5hbWVBdHRhY2htZW50RmlsZXM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVuYW1lIGF0dGFjaG1lbnQgZm9sZGVyIHdoZW4gYSBub3RlIGlzIHJlbmFtZWQuXG4gICAqL1xuICBzaG91bGRSZW5hbWVBdHRhY2htZW50Rm9sZGVyOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVwZGF0ZSBmaWxlbmFtZSBhbGlhc2VzIHdoZW4gYSBub3RlIGlzIHJlbmFtZWQuXG4gICAqL1xuICBzaG91bGRVcGRhdGVGaWxlbmFtZUFsaWFzZXM6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBJbnRlcnJ1cHRlZFJlbmFtZSB7XG4gIGNvbWJpbmVkQmFja2xpbmtzTWFwOiBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBzdHJpbmc+PjtcbiAgb2xkUGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgcmVuYW1lL2RlbGV0ZSBoYW5kbGVycy5cbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIGluc3RhbmNlLlxuICogQHBhcmFtIHNldHRpbmdzQnVpbGRlciAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzZXR0aW5ncyBmb3IgdGhlIHJlbmFtZSBkZWxldGUgaGFuZGxlci5cbiAqIEByZXR1cm5zIHZvaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyUmVuYW1lRGVsZXRlSGFuZGxlcnMocGx1Z2luOiBQbHVnaW4sIHNldHRpbmdzQnVpbGRlcjogKCkgPT4gUGFydGlhbDxSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3M+KTogdm9pZCB7XG4gIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwID0gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAocGx1Z2luLmFwcCk7XG4gIGNvbnN0IHBsdWdpbklkID0gcGx1Z2luLm1hbmlmZXN0LmlkO1xuXG4gIHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwLnNldChwbHVnaW5JZCwgc2V0dGluZ3NCdWlsZGVyKTtcbiAgbG9nUmVnaXN0ZXJlZEhhbmRsZXJzKHBsdWdpbi5hcHApO1xuXG4gIHBsdWdpbi5yZWdpc3RlcigoKSA9PiB7XG4gICAgcmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAuZGVsZXRlKHBsdWdpbklkKTtcbiAgICBsb2dSZWdpc3RlcmVkSGFuZGxlcnMocGx1Z2luLmFwcCk7XG4gIH0pO1xuXG4gIGNvbnN0IGFwcCA9IHBsdWdpbi5hcHA7XG4gIHBsdWdpbi5yZWdpc3RlckV2ZW50KFxuICAgIGFwcC52YXVsdC5vbignZGVsZXRlJywgKGZpbGUpID0+IHtcbiAgICAgIGhhbmRsZURlbGV0ZUlmRW5hYmxlZChwbHVnaW4sIGZpbGUpO1xuICAgIH0pXG4gICk7XG5cbiAgcGx1Z2luLnJlZ2lzdGVyRXZlbnQoXG4gICAgYXBwLnZhdWx0Lm9uKCdyZW5hbWUnLCAoZmlsZSwgb2xkUGF0aCkgPT4ge1xuICAgICAgaGFuZGxlUmVuYW1lSWZFbmFibGVkKHBsdWdpbiwgZmlsZSwgb2xkUGF0aCk7XG4gICAgfSlcbiAgKTtcblxuICBwbHVnaW4ucmVnaXN0ZXJFdmVudChcbiAgICBhcHAubWV0YWRhdGFDYWNoZS5vbignZGVsZXRlZCcsIChmaWxlLCBwcmV2Q2FjaGUpID0+IHtcbiAgICAgIGhhbmRsZU1ldGFkYXRhRGVsZXRlZElmRW5hYmxlZChwbHVnaW4sIGZpbGUsIHByZXZDYWNoZSk7XG4gICAgfSlcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29udGludWVJbnRlcnJ1cHRlZFJlbmFtZXMoXG4gIGFwcDogQXBwLFxuICBvbGRQYXRoOiBzdHJpbmcsXG4gIG5ld1BhdGg6IHN0cmluZyxcbiAgb2xkUGF0aEJhY2tsaW5rc01hcDogTWFwPHN0cmluZywgUmVmZXJlbmNlW10+LFxuICBvbGRQYXRoTGlua3M6IFJlZmVyZW5jZVtdXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgaW50ZXJydXB0ZWRSZW5hbWVzID0gaW50ZXJydXB0ZWRSZW5hbWVzTWFwLmdldChvbGRQYXRoKTtcbiAgaWYgKGludGVycnVwdGVkUmVuYW1lcykge1xuICAgIGludGVycnVwdGVkUmVuYW1lc01hcC5kZWxldGUob2xkUGF0aCk7XG4gICAgZm9yIChjb25zdCBpbnRlcnJ1cHRlZFJlbmFtZSBvZiBpbnRlcnJ1cHRlZFJlbmFtZXMpIHtcbiAgICAgIGF3YWl0IGhhbmRsZVJlbmFtZUFzeW5jKGFwcCwgaW50ZXJydXB0ZWRSZW5hbWUub2xkUGF0aCwgbmV3UGF0aCwgb2xkUGF0aEJhY2tsaW5rc01hcCwgb2xkUGF0aExpbmtzLCBpbnRlcnJ1cHRlZFJlbmFtZS5jb21iaW5lZEJhY2tsaW5rc01hcCk7XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbGxSZW5hbWVNYXAoYXBwOiBBcHAsIG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nLCByZW5hbWVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4sIG9sZFBhdGhMaW5rczogUmVmZXJlbmNlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmVuYW1lTWFwLnNldChvbGRQYXRoLCBuZXdQYXRoKTtcblxuICBpZiAoIWlzTm90ZShhcHAsIG9sZFBhdGgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhhcHApO1xuXG4gIGNvbnN0IG9sZEF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXdhaXQgZ2V0QXR0YWNobWVudEZvbGRlclBhdGgoYXBwLCBvbGRQYXRoKTtcbiAgY29uc3QgbmV3QXR0YWNobWVudEZvbGRlclBhdGggPSBzZXR0aW5ncy5zaG91bGRSZW5hbWVBdHRhY2htZW50Rm9sZGVyXG4gICAgPyBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHAsIG5ld1BhdGgpXG4gICAgOiBvbGRBdHRhY2htZW50Rm9sZGVyUGF0aDtcblxuICBjb25zdCBvbGRBdHRhY2htZW50Rm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgb2xkQXR0YWNobWVudEZvbGRlclBhdGgpO1xuXG4gIGlmICghb2xkQXR0YWNobWVudEZvbGRlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCA9PT0gbmV3QXR0YWNobWVudEZvbGRlclBhdGggJiYgIXNldHRpbmdzLnNob3VsZFJlbmFtZUF0dGFjaG1lbnRGaWxlcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG9sZEF0dGFjaG1lbnRGaWxlczogVEZpbGVbXSA9IFtdO1xuXG4gIGlmIChhd2FpdCBoYXNPd25BdHRhY2htZW50Rm9sZGVyKGFwcCwgb2xkUGF0aCkpIHtcbiAgICBWYXVsdC5yZWN1cnNlQ2hpbGRyZW4ob2xkQXR0YWNobWVudEZvbGRlciwgKG9sZEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgICBpZiAoaXNGaWxlKG9sZEF0dGFjaG1lbnRGaWxlKSkge1xuICAgICAgICBvbGRBdHRhY2htZW50RmlsZXMucHVzaChvbGRBdHRhY2htZW50RmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgZm9yIChjb25zdCBvbGRQYXRoTGluayBvZiBvbGRQYXRoTGlua3MpIHtcbiAgICAgIGNvbnN0IG9sZEF0dGFjaG1lbnRGaWxlID0gZXh0cmFjdExpbmtGaWxlKGFwcCwgb2xkUGF0aExpbmssIG9sZFBhdGgpO1xuICAgICAgaWYgKCFvbGRBdHRhY2htZW50RmlsZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9sZEF0dGFjaG1lbnRGaWxlLnBhdGguc3RhcnRzV2l0aChvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCkpIHtcbiAgICAgICAgY29uc3Qgb2xkQXR0YWNobWVudEJhY2tsaW5rcyA9IGF3YWl0IGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKGFwcCwgb2xkQXR0YWNobWVudEZpbGUpO1xuICAgICAgICBpZiAob2xkQXR0YWNobWVudEJhY2tsaW5rcy5rZXlzKCkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgb2xkQXR0YWNobWVudEZpbGVzLnB1c2gob2xkQXR0YWNobWVudEZpbGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb2xkQmFzZW5hbWUgPSBiYXNlbmFtZShvbGRQYXRoLCBleHRuYW1lKG9sZFBhdGgpKTtcbiAgY29uc3QgbmV3QmFzZW5hbWUgPSBiYXNlbmFtZShuZXdQYXRoLCBleHRuYW1lKG5ld1BhdGgpKTtcblxuICBmb3IgKGNvbnN0IG9sZEF0dGFjaG1lbnRGaWxlIG9mIG9sZEF0dGFjaG1lbnRGaWxlcykge1xuICAgIGlmIChpc05vdGUoYXBwLCBvbGRBdHRhY2htZW50RmlsZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZShvbGRBdHRhY2htZW50Rm9sZGVyUGF0aCwgb2xkQXR0YWNobWVudEZpbGUucGF0aCk7XG4gICAgY29uc3QgbmV3RGlyID0gam9pbihuZXdBdHRhY2htZW50Rm9sZGVyUGF0aCwgZGlybmFtZShyZWxhdGl2ZVBhdGgpKTtcbiAgICBjb25zdCBuZXdDaGlsZEJhc2VuYW1lID0gc2V0dGluZ3Muc2hvdWxkUmVuYW1lQXR0YWNobWVudEZpbGVzXG4gICAgICA/IHJlcGxhY2VBbGwob2xkQXR0YWNobWVudEZpbGUuYmFzZW5hbWUsIG9sZEJhc2VuYW1lLCBuZXdCYXNlbmFtZSlcbiAgICAgIDogb2xkQXR0YWNobWVudEZpbGUuYmFzZW5hbWU7XG4gICAgbGV0IG5ld0NoaWxkUGF0aCA9IGpvaW4obmV3RGlyLCBtYWtlRmlsZU5hbWUobmV3Q2hpbGRCYXNlbmFtZSwgb2xkQXR0YWNobWVudEZpbGUuZXh0ZW5zaW9uKSk7XG5cbiAgICBpZiAob2xkQXR0YWNobWVudEZpbGUucGF0aCA9PT0gbmV3Q2hpbGRQYXRoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoc2V0dGluZ3Muc2hvdWxkRGVsZXRlQ29uZmxpY3RpbmdBdHRhY2htZW50cykge1xuICAgICAgY29uc3QgbmV3Q2hpbGRGaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIG5ld0NoaWxkUGF0aCk7XG4gICAgICBpZiAobmV3Q2hpbGRGaWxlKSB7XG4gICAgICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci50cmFzaEZpbGUobmV3Q2hpbGRGaWxlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbmV3Q2hpbGRQYXRoID0gYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgoam9pbihuZXdEaXIsIG5ld0NoaWxkQmFzZW5hbWUpLCBvbGRBdHRhY2htZW50RmlsZS5leHRlbnNpb24pO1xuICAgIH1cbiAgICByZW5hbWVNYXAuc2V0KG9sZEF0dGFjaG1lbnRGaWxlLnBhdGgsIG5ld0NoaWxkUGF0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAoYXBwOiBBcHApOiBNYXA8c3RyaW5nLCAoKSA9PiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4+IHtcbiAgcmV0dXJuIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZShhcHAsICdyZW5hbWVEZWxldGVIYW5kbGVyc01hcCcsIG5ldyBNYXA8c3RyaW5nLCAoKSA9PiBQYXJ0aWFsPFJlbmFtZURlbGV0ZUhhbmRsZXJTZXR0aW5ncz4+KCkpLnZhbHVlO1xufVxuXG5mdW5jdGlvbiBnZXRTZXR0aW5ncyhhcHA6IEFwcCk6IFBhcnRpYWw8UmVuYW1lRGVsZXRlSGFuZGxlclNldHRpbmdzPiB7XG4gIGNvbnN0IHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwID0gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAoYXBwKTtcbiAgY29uc3Qgc2V0dGluZ3NCdWlsZGVycyA9IEFycmF5LmZyb20ocmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAudmFsdWVzKCkpLnJldmVyc2UoKTtcblxuICBjb25zdCBzZXR0aW5nczogUGFydGlhbDxSZW5hbWVEZWxldGVIYW5kbGVyU2V0dGluZ3M+ID0ge307XG4gIGZvciAoY29uc3Qgc2V0dGluZ3NCdWlsZGVyIG9mIHNldHRpbmdzQnVpbGRlcnMpIHtcbiAgICBjb25zdCBuZXdTZXR0aW5ncyA9IHNldHRpbmdzQnVpbGRlcigpO1xuICAgIHNldHRpbmdzLnNob3VsZERlbGV0ZUNvbmZsaWN0aW5nQXR0YWNobWVudHMgfHw9IG5ld1NldHRpbmdzLnNob3VsZERlbGV0ZUNvbmZsaWN0aW5nQXR0YWNobWVudHMgPz8gZmFsc2U7XG4gICAgc2V0dGluZ3Muc2hvdWxkRGVsZXRlRW1wdHlGb2xkZXJzIHx8PSBuZXdTZXR0aW5ncy5zaG91bGREZWxldGVFbXB0eUZvbGRlcnMgPz8gZmFsc2U7XG4gICAgc2V0dGluZ3Muc2hvdWxkSGFuZGxlRGVsZXRpb25zIHx8PSBuZXdTZXR0aW5ncy5zaG91bGRIYW5kbGVEZWxldGlvbnMgPz8gZmFsc2U7XG4gICAgc2V0dGluZ3Muc2hvdWxkSGFuZGxlUmVuYW1lcyB8fD0gbmV3U2V0dGluZ3Muc2hvdWxkSGFuZGxlUmVuYW1lcyA/PyBmYWxzZTtcbiAgICBzZXR0aW5ncy5zaG91bGRSZW5hbWVBdHRhY2htZW50RmlsZXMgfHw9IG5ld1NldHRpbmdzLnNob3VsZFJlbmFtZUF0dGFjaG1lbnRGaWxlcyA/PyBmYWxzZTtcbiAgICBzZXR0aW5ncy5zaG91bGRSZW5hbWVBdHRhY2htZW50Rm9sZGVyIHx8PSBuZXdTZXR0aW5ncy5zaG91bGRSZW5hbWVBdHRhY2htZW50Rm9sZGVyID8/IGZhbHNlO1xuICAgIHNldHRpbmdzLnNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXNlcyB8fD0gbmV3U2V0dGluZ3Muc2hvdWxkVXBkYXRlRmlsZW5hbWVBbGlhc2VzID8/IGZhbHNlO1xuICAgIGNvbnN0IGlzUGF0aElnbm9yZWQgPSBzZXR0aW5ncy5pc1BhdGhJZ25vcmVkO1xuICAgIHNldHRpbmdzLmlzUGF0aElnbm9yZWQgPSAocGF0aDogc3RyaW5nKTogYm9vbGVhbiA9PiBpc1BhdGhJZ25vcmVkPy4ocGF0aCkgPz8gbmV3U2V0dGluZ3MuaXNQYXRoSWdub3JlZD8uKHBhdGgpID8/IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHNldHRpbmdzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVDYXNlQ29sbGlzaW9uKFxuICBhcHA6IEFwcCxcbiAgb2xkUGF0aDogc3RyaW5nLFxuICBuZXdQYXRoOiBzdHJpbmcsXG4gIG9sZFBhdGhCYWNrbGlua3NNYXA6IE1hcDxzdHJpbmcsIFJlZmVyZW5jZVtdPixcbiAgb2xkUGF0aExpbmtzOiBSZWZlcmVuY2VbXVxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmICghYXBwLnZhdWx0LmFkYXB0ZXIuaW5zZW5zaXRpdmUgfHwgb2xkUGF0aC50b0xvd2VyQ2FzZSgpICE9PSBuZXdQYXRoLnRvTG93ZXJDYXNlKCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB0ZW1wUGF0aCA9IGpvaW4oZGlybmFtZShuZXdQYXRoKSwgYF9fdGVtcF9fJHtiYXNlbmFtZShuZXdQYXRoKX1gKTtcbiAgYXdhaXQgcmVuYW1lSGFuZGxlZChhcHAsIG5ld1BhdGgsIHRlbXBQYXRoKTtcbiAgYXdhaXQgaGFuZGxlUmVuYW1lQXN5bmMoYXBwLCBvbGRQYXRoLCB0ZW1wUGF0aCwgb2xkUGF0aEJhY2tsaW5rc01hcCwgb2xkUGF0aExpbmtzKTtcbiAgYXdhaXQgYXBwLnZhdWx0LnJlbmFtZShnZXRGaWxlKGFwcCwgdGVtcFBhdGgpLCBuZXdQYXRoKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZURlbGV0ZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGdldExpYkRlYnVnZ2VyKCdSZW5hbWVEZWxldGVIYW5kbGVyOmhhbmRsZURlbGV0ZScpKGBIYW5kbGUgRGVsZXRlICR7cGF0aH1gKTtcbiAgaWYgKCFpc05vdGUoYXBwLCBwYXRoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3MoYXBwKTtcbiAgaWYgKCFzZXR0aW5ncy5zaG91bGRIYW5kbGVEZWxldGlvbnMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoc2V0dGluZ3MuaXNQYXRoSWdub3JlZD8uKHBhdGgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY2FjaGUgPSBkZWxldGVkTWV0YWRhdGFDYWNoZU1hcC5nZXQocGF0aCk7XG4gIGRlbGV0ZWRNZXRhZGF0YUNhY2hlTWFwLmRlbGV0ZShwYXRoKTtcbiAgaWYgKGNhY2hlKSB7XG4gICAgY29uc3QgbGlua3MgPSBnZXRBbGxMaW5rcyhjYWNoZSk7XG5cbiAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRGaWxlID0gZXh0cmFjdExpbmtGaWxlKGFwcCwgbGluaywgcGF0aCk7XG4gICAgICBpZiAoIWF0dGFjaG1lbnRGaWxlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNOb3RlKGFwcCwgYXR0YWNobWVudEZpbGUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBkZWxldGVTYWZlKGFwcCwgYXR0YWNobWVudEZpbGUsIHBhdGgsIHNldHRpbmdzLnNob3VsZERlbGV0ZUVtcHR5Rm9sZGVycyk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aChhcHAsIHBhdGgpO1xuICBjb25zdCBhdHRhY2htZW50Rm9sZGVyID0gZ2V0Rm9sZGVyT3JOdWxsKGFwcCwgYXR0YWNobWVudEZvbGRlclBhdGgpO1xuXG4gIGlmICghYXR0YWNobWVudEZvbGRlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghKGF3YWl0IGhhc093bkF0dGFjaG1lbnRGb2xkZXIoYXBwLCBwYXRoKSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBhd2FpdCBkZWxldGVTYWZlKGFwcCwgYXR0YWNobWVudEZvbGRlciwgcGF0aCwgZmFsc2UsIHNldHRpbmdzLnNob3VsZERlbGV0ZUVtcHR5Rm9sZGVycyk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZURlbGV0ZUlmRW5hYmxlZChwbHVnaW46IFBsdWdpbiwgZmlsZTogVEFic3RyYWN0RmlsZSk6IHZvaWQge1xuICBjb25zdCBhcHAgPSBwbHVnaW4uYXBwO1xuICBpZiAoIXNob3VsZEludm9rZUhhbmRsZXIocGx1Z2luKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBwYXRoID0gZmlsZS5wYXRoO1xuICBhZGRUb1F1ZXVlKGFwcCwgKCkgPT4gaGFuZGxlRGVsZXRlKGFwcCwgcGF0aCkpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXRhZGF0YURlbGV0ZWQoYXBwOiBBcHAsIGZpbGU6IFRBYnN0cmFjdEZpbGUsIHByZXZDYWNoZTogQ2FjaGVkTWV0YWRhdGEgfCBudWxsKTogdm9pZCB7XG4gIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3MoYXBwKTtcbiAgaWYgKHNldHRpbmdzLmlzUGF0aElnbm9yZWQ/LihmaWxlLnBhdGgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFzZXR0aW5ncy5zaG91bGRIYW5kbGVEZWxldGlvbnMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGlzTWFya2Rvd25GaWxlKGFwcCwgZmlsZSkgJiYgcHJldkNhY2hlKSB7XG4gICAgZGVsZXRlZE1ldGFkYXRhQ2FjaGVNYXAuc2V0KGZpbGUucGF0aCwgcHJldkNhY2hlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVNZXRhZGF0YURlbGV0ZWRJZkVuYWJsZWQocGx1Z2luOiBQbHVnaW4sIGZpbGU6IFRBYnN0cmFjdEZpbGUsIHByZXZDYWNoZTogQ2FjaGVkTWV0YWRhdGEgfCBudWxsKTogdm9pZCB7XG4gIGlmICghc2hvdWxkSW52b2tlSGFuZGxlcihwbHVnaW4pKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGhhbmRsZU1ldGFkYXRhRGVsZXRlZChwbHVnaW4uYXBwLCBmaWxlLCBwcmV2Q2FjaGUpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVSZW5hbWUoYXBwOiBBcHAsIG9sZFBhdGg6IHN0cmluZywgbmV3UGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGtleSA9IG1ha2VLZXkob2xkUGF0aCwgbmV3UGF0aCk7XG4gIGdldExpYkRlYnVnZ2VyKCdSZW5hbWVEZWxldGVIYW5kbGVyOmhhbmRsZVJlbmFtZScpKGBIYW5kbGUgUmVuYW1lICR7a2V5fWApO1xuICBpZiAoaGFuZGxlZFJlbmFtZXMuaGFzKGtleSkpIHtcbiAgICBoYW5kbGVkUmVuYW1lcy5kZWxldGUoa2V5KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzZXR0aW5ncyA9IGdldFNldHRpbmdzKGFwcCk7XG4gIGlmICghc2V0dGluZ3Muc2hvdWxkSGFuZGxlUmVuYW1lcyB8fCBzZXR0aW5ncy5pc1BhdGhJZ25vcmVkPy4ob2xkUGF0aCkgfHwgc2V0dGluZ3MuaXNQYXRoSWdub3JlZD8uKG5ld1BhdGgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY2FjaGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRDYWNoZShvbGRQYXRoKSA/PyBhcHAubWV0YWRhdGFDYWNoZS5nZXRDYWNoZShuZXdQYXRoKTtcbiAgY29uc3Qgb2xkUGF0aExpbmtzID0gY2FjaGUgPyBnZXRBbGxMaW5rcyhjYWNoZSkgOiBbXTtcbiAgY29uc3Qgb2xkUGF0aEJhY2tsaW5rc01hcCA9IGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgoYXBwLCBvbGRQYXRoKS5kYXRhO1xuICBhZGRUb1F1ZXVlKGFwcCwgKCkgPT4gaGFuZGxlUmVuYW1lQXN5bmMoYXBwLCBvbGRQYXRoLCBuZXdQYXRoLCBvbGRQYXRoQmFja2xpbmtzTWFwLCBvbGRQYXRoTGlua3MpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlUmVuYW1lQXN5bmMoXG4gIGFwcDogQXBwLFxuICBvbGRQYXRoOiBzdHJpbmcsXG4gIG5ld1BhdGg6IHN0cmluZyxcbiAgb2xkUGF0aEJhY2tsaW5rc01hcDogTWFwPHN0cmluZywgUmVmZXJlbmNlW10+LFxuICBvbGRQYXRoTGlua3M6IFJlZmVyZW5jZVtdLFxuICBpbnRlcnJ1cHRlZENvbWJpbmVkQmFja2xpbmtzTWFwPzogTWFwPHN0cmluZywgTWFwPHN0cmluZywgc3RyaW5nPj5cbik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBjb250aW51ZUludGVycnVwdGVkUmVuYW1lcyhhcHAsIG9sZFBhdGgsIG5ld1BhdGgsIG9sZFBhdGhCYWNrbGlua3NNYXAsIG9sZFBhdGhMaW5rcyk7XG4gIGF3YWl0IHJlZnJlc2hMaW5rcyhhcHAsIG9sZFBhdGgsIG5ld1BhdGgsIG9sZFBhdGhCYWNrbGlua3NNYXAsIG9sZFBhdGhMaW5rcyk7XG4gIGlmIChhd2FpdCBoYW5kbGVDYXNlQ29sbGlzaW9uKGFwcCwgb2xkUGF0aCwgbmV3UGF0aCwgb2xkUGF0aEJhY2tsaW5rc01hcCwgb2xkUGF0aExpbmtzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IGludm9rZVdpdGhQYXRjaEFzeW5jKGFwcC5maWxlTWFuYWdlciwge1xuICAgIHVwZGF0ZUFsbExpbmtzOiAoKSA9PiBub29wQXN5bmNcbiAgfSwgYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZW5hbWVNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgICAgYXdhaXQgZmlsbFJlbmFtZU1hcChhcHAsIG9sZFBhdGgsIG5ld1BhdGgsIHJlbmFtZU1hcCwgb2xkUGF0aExpbmtzKTtcblxuICAgICAgY29uc3QgY29tYmluZWRCYWNrbGlua3NNYXAgPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgc3RyaW5nPj4oKTtcbiAgICAgIGluaXRCYWNrbGlua3NNYXAob2xkUGF0aEJhY2tsaW5rc01hcCwgcmVuYW1lTWFwLCBjb21iaW5lZEJhY2tsaW5rc01hcCwgb2xkUGF0aCk7XG5cbiAgICAgIGZvciAoY29uc3QgYXR0YWNobWVudE9sZFBhdGggb2YgcmVuYW1lTWFwLmtleXMoKSkge1xuICAgICAgICBpZiAoYXR0YWNobWVudE9sZFBhdGggPT09IG9sZFBhdGgpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhdHRhY2htZW50T2xkUGF0aEJhY2tsaW5rc01hcCA9IChhd2FpdCBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZShhcHAsIGF0dGFjaG1lbnRPbGRQYXRoKSkuZGF0YTtcbiAgICAgICAgaW5pdEJhY2tsaW5rc01hcChhdHRhY2htZW50T2xkUGF0aEJhY2tsaW5rc01hcCwgcmVuYW1lTWFwLCBjb21iaW5lZEJhY2tsaW5rc01hcCwgYXR0YWNobWVudE9sZFBhdGgpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJlbnRGb2xkZXJzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICAgIGZvciAoY29uc3QgW29sZEF0dGFjaG1lbnRQYXRoLCBuZXdBdHRhY2htZW50UGF0aF0gb2YgcmVuYW1lTWFwLmVudHJpZXMoKSkge1xuICAgICAgICBpZiAob2xkQXR0YWNobWVudFBhdGggPT09IG9sZFBhdGgpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaXhlZE5ld0F0dGFjaG1lbnRQYXRoID0gYXdhaXQgcmVuYW1lSGFuZGxlZChhcHAsIG9sZEF0dGFjaG1lbnRQYXRoLCBuZXdBdHRhY2htZW50UGF0aCk7XG4gICAgICAgIHJlbmFtZU1hcC5zZXQob2xkQXR0YWNobWVudFBhdGgsIGZpeGVkTmV3QXR0YWNobWVudFBhdGgpO1xuICAgICAgICBwYXJlbnRGb2xkZXJzLmFkZChkaXJuYW1lKG9sZEF0dGFjaG1lbnRQYXRoKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3MoYXBwKTtcbiAgICAgIGlmIChzZXR0aW5ncy5zaG91bGREZWxldGVFbXB0eUZvbGRlcnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBwYXJlbnRGb2xkZXIgb2YgcGFyZW50Rm9sZGVycykge1xuICAgICAgICAgIGF3YWl0IGRlbGV0ZUVtcHR5Rm9sZGVySGllcmFyY2h5KGFwcCwgcGFyZW50Rm9sZGVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKFxuICAgICAgICBjb25zdCBbbmV3QmFja2xpbmtQYXRoLCBsaW5rSnNvblRvUGF0aE1hcF0gb2YgQXJyYXkuZnJvbShjb21iaW5lZEJhY2tsaW5rc01hcC5lbnRyaWVzKCkpLmNvbmNhdChcbiAgICAgICAgICBBcnJheS5mcm9tKGludGVycnVwdGVkQ29tYmluZWRCYWNrbGlua3NNYXA/LmVudHJpZXMoKSA/PyBbXSlcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIGF3YWl0IGVkaXRMaW5rcyhhcHAsIG5ld0JhY2tsaW5rUGF0aCwgKGxpbmspID0+IHtcbiAgICAgICAgICBjb25zdCBvbGRBdHRhY2htZW50UGF0aCA9IGxpbmtKc29uVG9QYXRoTWFwLmdldCh0b0pzb24obGluaykpO1xuICAgICAgICAgIGlmICghb2xkQXR0YWNobWVudFBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBuZXdBdHRhY2htZW50UGF0aCA9IHJlbmFtZU1hcC5nZXQob2xkQXR0YWNobWVudFBhdGgpO1xuICAgICAgICAgIGlmICghbmV3QXR0YWNobWVudFBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXBkYXRlTGluayhub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8VXBkYXRlTGlua09wdGlvbnM+KHtcbiAgICAgICAgICAgIGFwcCxcbiAgICAgICAgICAgIGxpbmssXG4gICAgICAgICAgICBuZXdTb3VyY2VQYXRoT3JGaWxlOiBuZXdCYWNrbGlua1BhdGgsXG4gICAgICAgICAgICBuZXdUYXJnZXRQYXRoT3JGaWxlOiBuZXdBdHRhY2htZW50UGF0aCxcbiAgICAgICAgICAgIG9sZFRhcmdldFBhdGhPckZpbGU6IG9sZEF0dGFjaG1lbnRQYXRoLFxuICAgICAgICAgICAgc2hvdWxkVXBkYXRlRmlsZW5hbWVBbGlhczogc2V0dGluZ3Muc2hvdWxkVXBkYXRlRmlsZW5hbWVBbGlhc2VzXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGU6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNOb3RlKGFwcCwgbmV3UGF0aCkpIHtcbiAgICAgICAgYXdhaXQgdXBkYXRlTGlua3NJbkZpbGUobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFVwZGF0ZUxpbmtzSW5GaWxlT3B0aW9ucz4oe1xuICAgICAgICAgIGFwcCxcbiAgICAgICAgICBuZXdTb3VyY2VQYXRoT3JGaWxlOiBuZXdQYXRoLFxuICAgICAgICAgIG9sZFNvdXJjZVBhdGhPckZpbGU6IG9sZFBhdGgsXG4gICAgICAgICAgc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGU6IGZhbHNlLFxuICAgICAgICAgIHNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXM6IHNldHRpbmdzLnNob3VsZFVwZGF0ZUZpbGVuYW1lQWxpYXNlc1xuICAgICAgICB9KSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZ2V0RmlsZU9yTnVsbChhcHAsIG5ld1BhdGgpKSB7XG4gICAgICAgIGxldCBpbnRlcnJ1cHRlZFJlbmFtZXMgPSBpbnRlcnJ1cHRlZFJlbmFtZXNNYXAuZ2V0KG5ld1BhdGgpO1xuICAgICAgICBpZiAoIWludGVycnVwdGVkUmVuYW1lcykge1xuICAgICAgICAgIGludGVycnVwdGVkUmVuYW1lcyA9IFtdO1xuICAgICAgICAgIGludGVycnVwdGVkUmVuYW1lc01hcC5zZXQobmV3UGF0aCwgaW50ZXJydXB0ZWRSZW5hbWVzKTtcbiAgICAgICAgfVxuICAgICAgICBpbnRlcnJ1cHRlZFJlbmFtZXMucHVzaCh7XG4gICAgICAgICAgY29tYmluZWRCYWNrbGlua3NNYXAsXG4gICAgICAgICAgb2xkUGF0aFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgY29uc3Qgb3JwaGFuS2V5cyA9IEFycmF5LmZyb20oaGFuZGxlZFJlbmFtZXMpO1xuICAgICAgYWRkVG9RdWV1ZShhcHAsICgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Ygb3JwaGFuS2V5cykge1xuICAgICAgICAgIGhhbmRsZWRSZW5hbWVzLmRlbGV0ZShrZXkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVSZW5hbWVJZkVuYWJsZWQocGx1Z2luOiBQbHVnaW4sIGZpbGU6IFRBYnN0cmFjdEZpbGUsIG9sZFBhdGg6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoIXNob3VsZEludm9rZUhhbmRsZXIocGx1Z2luKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIWlzRmlsZShmaWxlKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBuZXdQYXRoID0gZmlsZS5wYXRoO1xuICBoYW5kbGVSZW5hbWUocGx1Z2luLmFwcCwgb2xkUGF0aCwgbmV3UGF0aCk7XG59XG5cbmZ1bmN0aW9uIGluaXRCYWNrbGlua3NNYXAoXG4gIHNpbmdsZUJhY2tsaW5rc01hcDogTWFwPHN0cmluZywgUmVmZXJlbmNlW10+LFxuICByZW5hbWVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4sXG4gIGNvbWJpbmVkQmFja2xpbmtzTWFwOiBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBzdHJpbmc+PixcbiAgcGF0aDogc3RyaW5nXG4pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBbYmFja2xpbmtQYXRoLCBsaW5rc10gb2Ygc2luZ2xlQmFja2xpbmtzTWFwLmVudHJpZXMoKSkge1xuICAgIGNvbnN0IG5ld0JhY2tsaW5rUGF0aCA9IHJlbmFtZU1hcC5nZXQoYmFja2xpbmtQYXRoKSA/PyBiYWNrbGlua1BhdGg7XG4gICAgY29uc3QgbGlua0pzb25Ub1BhdGhNYXAgPSBjb21iaW5lZEJhY2tsaW5rc01hcC5nZXQobmV3QmFja2xpbmtQYXRoKSA/PyBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGNvbWJpbmVkQmFja2xpbmtzTWFwLnNldChuZXdCYWNrbGlua1BhdGgsIGxpbmtKc29uVG9QYXRoTWFwKTtcbiAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgIGxpbmtKc29uVG9QYXRoTWFwLnNldCh0b0pzb24obGluayksIHBhdGgpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBsb2dSZWdpc3RlcmVkSGFuZGxlcnMoYXBwOiBBcHApOiB2b2lkIHtcbiAgY29uc3QgcmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAgPSBnZXRSZW5hbWVEZWxldGVIYW5kbGVyc01hcChhcHApO1xuICBnZXRMaWJEZWJ1Z2dlcignUmVuYW1lRGVsZXRlSGFuZGxlcjpsb2dSZWdpc3RlcmVkSGFuZGxlcnMnKShcbiAgICBgUGx1Z2lucyB3aXRoIHJlZ2lzdGVyZWQgcmVuYW1lL2RlbGV0ZSBoYW5kbGVyczogJHtKU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKHJlbmFtZURlbGV0ZUhhbmRsZXJzTWFwLmtleXMoKSkpfWBcbiAgKTtcbn1cblxuZnVuY3Rpb24gbWFrZUtleShvbGRQYXRoOiBzdHJpbmcsIG5ld1BhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtvbGRQYXRofSAtPiAke25ld1BhdGh9YDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVmcmVzaExpbmtzKFxuICBhcHA6IEFwcCxcbiAgb2xkUGF0aDogc3RyaW5nLFxuICBuZXdQYXRoOiBzdHJpbmcsXG4gIG9sZFBhdGhCYWNrbGlua3NNYXA6IE1hcDxzdHJpbmcsIFJlZmVyZW5jZVtdPixcbiAgb2xkUGF0aExpbmtzOiBSZWZlcmVuY2VbXVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Q2FjaGUob2xkUGF0aCkgPz8gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Q2FjaGUobmV3UGF0aCk7XG4gIGNvbnN0IG9sZFBhdGhMaW5rc1JlZnJlc2hlZCA9IGNhY2hlID8gZ2V0QWxsTGlua3MoY2FjaGUpIDogW107XG4gIGNvbnN0IGZha2VPbGRGaWxlID0gZ2V0RmlsZShhcHAsIG9sZFBhdGgsIHRydWUpO1xuICBsZXQgb2xkUGF0aEJhY2tsaW5rc01hcFJlZnJlc2hlZCA9IG5ldyBNYXA8c3RyaW5nLCBSZWZlcmVuY2VbXT4oKTtcbiAgYXdhaXQgdGVtcFJlZ2lzdGVyRmlsZUFuZFJ1bihhcHAsIGZha2VPbGRGaWxlLCBhc3luYyAoKSA9PiB7XG4gICAgb2xkUGF0aEJhY2tsaW5rc01hcFJlZnJlc2hlZCA9IChhd2FpdCBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZShhcHAsIGZha2VPbGRGaWxlKSkuZGF0YTtcbiAgfSk7XG5cbiAgZm9yIChjb25zdCBsaW5rIG9mIG9sZFBhdGhMaW5rc1JlZnJlc2hlZCkge1xuICAgIGlmIChvbGRQYXRoTGlua3MuaW5jbHVkZXMobGluaykpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBvbGRQYXRoTGlua3MucHVzaChsaW5rKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgW2JhY2tsaW5rUGF0aCwgcmVmcmVzaGVkTGlua3NdIG9mIG9sZFBhdGhCYWNrbGlua3NNYXBSZWZyZXNoZWQuZW50cmllcygpKSB7XG4gICAgbGV0IG9sZExpbmtzID0gb2xkUGF0aEJhY2tsaW5rc01hcC5nZXQoYmFja2xpbmtQYXRoKTtcbiAgICBpZiAoIW9sZExpbmtzKSB7XG4gICAgICBvbGRMaW5rcyA9IFtdO1xuICAgICAgb2xkUGF0aEJhY2tsaW5rc01hcC5zZXQoYmFja2xpbmtQYXRoLCBvbGRMaW5rcyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBsaW5rIG9mIHJlZnJlc2hlZExpbmtzKSB7XG4gICAgICBpZiAob2xkTGlua3MuaW5jbHVkZXMobGluaykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBvbGRMaW5rcy5wdXNoKGxpbmspO1xuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZW5hbWVIYW5kbGVkKGFwcDogQXBwLCBvbGRQYXRoOiBzdHJpbmcsIG5ld1BhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIG5ld1BhdGggPSBnZXRTYWZlUmVuYW1lUGF0aChhcHAsIG9sZFBhdGgsIG5ld1BhdGgpO1xuICBpZiAob2xkUGF0aCA9PT0gbmV3UGF0aCkge1xuICAgIHJldHVybiBuZXdQYXRoO1xuICB9XG4gIGNvbnN0IGtleSA9IG1ha2VLZXkob2xkUGF0aCwgbmV3UGF0aCk7XG4gIGhhbmRsZWRSZW5hbWVzLmFkZChrZXkpO1xuICBuZXdQYXRoID0gYXdhaXQgcmVuYW1lU2FmZShhcHAsIG9sZFBhdGgsIG5ld1BhdGgpO1xuICByZXR1cm4gbmV3UGF0aDtcbn1cblxuZnVuY3Rpb24gc2hvdWxkSW52b2tlSGFuZGxlcihwbHVnaW46IFBsdWdpbik6IGJvb2xlYW4ge1xuICBjb25zdCBhcHAgPSBwbHVnaW4uYXBwO1xuICBjb25zdCBwbHVnaW5JZCA9IHBsdWdpbi5tYW5pZmVzdC5pZDtcblxuICBjb25zdCByZW5hbWVEZWxldGVIYW5kbGVyUGx1Z2luSWRzID0gZ2V0UmVuYW1lRGVsZXRlSGFuZGxlcnNNYXAoYXBwKTtcbiAgY29uc3QgbWFpblBsdWdpbklkID0gQXJyYXkuZnJvbShyZW5hbWVEZWxldGVIYW5kbGVyUGx1Z2luSWRzLmtleXMoKSlbMF07XG4gIGlmIChtYWluUGx1Z2luSWQgIT09IHBsdWdpbklkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQSxzQkFBc0I7QUFPdEIsbUJBQStCO0FBQy9CLHNCQUEwQjtBQUMxQixvQkFHTztBQUNQLGtCQU9PO0FBQ1Asb0JBQTJCO0FBQzNCLGlCQUF5QztBQUN6Qyw0QkFHTztBQUNQLHdCQU9PO0FBQ1Asa0JBS087QUFDUCwyQkFLTztBQUNQLDBCQUFxQztBQUNyQyxtQkFBMkI7QUFDM0IsbUJBR087QUFDUCxxQkFHTztBQUVQLE1BQU0sMEJBQTBCLG9CQUFJLElBQTRCO0FBQ2hFLE1BQU0saUJBQWlCLG9CQUFJLElBQVk7QUFDdkMsTUFBTSx3QkFBd0Isb0JBQUksSUFBaUM7QUEwRDVELFNBQVMsNkJBQTZCLFFBQWdCLGlCQUFtRTtBQUM5SCxRQUFNLDBCQUEwQiwyQkFBMkIsT0FBTyxHQUFHO0FBQ3JFLFFBQU0sV0FBVyxP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
|
@@ -0,0 +1,38 @@
|
|
1
|
+
/*
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
4
|
+
*/
|
5
|
+
|
6
|
+
(function initCjs(){const globalThisRecord=globalThis;globalThisRecord["__name"]??=name;const originalRequire=require;if(originalRequire&&!originalRequire.__isPatched){require=Object.assign(id=>requirePatched(id),originalRequire,{__isPatched:true})}const newFuncs={__extractDefault:__name(()=>extractDefault,"__extractDefault"),process:__name(()=>{const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};return browserProcess},"process")};for(const key of Object.keys(newFuncs)){globalThisRecord[key]??=newFuncs[key]?.()}function name(obj){return obj}__name(name,"name");function extractDefault(module){return module&&module.__esModule&&module.default?module.default:module}__name(extractDefault,"extractDefault");function requirePatched(id){const module=originalRequire?.(id);if(module){return extractDefault(module)}if(id==="process"||id==="node:process"){console.error(`Module not found: ${id}. Fake process object is returned instead.`);return globalThis.process}console.error(`Module not found: ${id}. Empty object is returned instead.`);return{}}__name(requirePatched,"requirePatched")})();
|
7
|
+
|
8
|
+
"use strict";
|
9
|
+
var __defProp = Object.defineProperty;
|
10
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
11
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
12
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
13
|
+
var __export = (target, all) => {
|
14
|
+
for (var name in all)
|
15
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
16
|
+
};
|
17
|
+
var __copyProps = (to, from, except, desc) => {
|
18
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
19
|
+
for (let key of __getOwnPropNames(from))
|
20
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
21
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
22
|
+
}
|
23
|
+
return to;
|
24
|
+
};
|
25
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
26
|
+
var ValidationMessage_exports = {};
|
27
|
+
__export(ValidationMessage_exports, {
|
28
|
+
isValidationMessageHolder: () => isValidationMessageHolder
|
29
|
+
});
|
30
|
+
module.exports = __toCommonJS(ValidationMessage_exports);
|
31
|
+
function isValidationMessageHolder(value) {
|
32
|
+
return value.validationMessage !== void 0;
|
33
|
+
}
|
34
|
+
// Annotate the CommonJS export names for ESM import in node:
|
35
|
+
0 && (module.exports = {
|
36
|
+
isValidationMessageHolder
|
37
|
+
});
|
38
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1ZhbGlkYXRpb25NZXNzYWdlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEhvbGRzIGEgdmFsaWRhdGlvbiBtZXNzYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25NZXNzYWdlSG9sZGVyIHtcbiAgLyoqXG4gICAqIFRoZSB2YWxpZGF0aW9uIG1lc3NhZ2UuXG4gICAqL1xuICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYSB2YWx1ZSBpcyBhIHZhbGlkYXRpb24gbWVzc2FnZSBob2xkZXIuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZSBpcyBhIHZhbGlkYXRpb24gbWVzc2FnZSBob2xkZXIsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZGF0aW9uTWVzc2FnZUhvbGRlcih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFZhbGlkYXRpb25NZXNzYWdlSG9sZGVyIHtcbiAgcmV0dXJuICh2YWx1ZSBhcyBQYXJ0aWFsPFZhbGlkYXRpb25NZXNzYWdlSG9sZGVyPikudmFsaWRhdGlvbk1lc3NhZ2UgIT09IHVuZGVmaW5lZDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ0JPLFNBQVMsMEJBQTBCLE9BQWtEO0FBQzFGLFNBQVEsTUFBMkMsc0JBQXNCO0FBQzNFOyIsCiAgIm5hbWVzIjogW10KfQo=
|
@@ -0,0 +1,16 @@
|
|
1
|
+
/**
|
2
|
+
* Holds a validation message.
|
3
|
+
*/
|
4
|
+
export interface ValidationMessageHolder {
|
5
|
+
/**
|
6
|
+
* The validation message.
|
7
|
+
*/
|
8
|
+
validationMessage: string;
|
9
|
+
}
|
10
|
+
/**
|
11
|
+
* Type guard to check if a value is a validation message holder.
|
12
|
+
*
|
13
|
+
* @param value - The value to check.
|
14
|
+
* @returns `true` if the value is a validation message holder, `false` otherwise.
|
15
|
+
*/
|
16
|
+
export declare function isValidationMessageHolder(value: unknown): value is ValidationMessageHolder;
|
@@ -264,4 +264,4 @@ async function invokeFileActionSafe(app, pathOrFile, fileAction) {
|
|
264
264
|
readSafe,
|
265
265
|
renameSafe
|
266
266
|
});
|
267
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBWYXVsdFxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgT2JzaWRpYW4gVmF1bHQuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIExpc3RlZEZpbGVzLFxuICBURmlsZSxcbiAgVEZvbGRlclxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IHBhcmVudEZvbGRlclBhdGggfSBmcm9tICdvYnNpZGlhbi10eXBpbmdzL2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBhdGhPckZpbGUsXG4gIFBhdGhPckZvbGRlclxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyByZXRyeVdpdGhUaW1lb3V0IH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHsgbm9vcEFzeW5jIH0gZnJvbSAnLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHtcbiAgYmFzZW5hbWUsXG4gIGRpcm5hbWUsXG4gIGV4dG5hbWUsXG4gIGpvaW5cbn0gZnJvbSAnLi4vUGF0aC50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB7XG4gIGdldEZpbGUsXG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZvbGRlcixcbiAgZ2V0Rm9sZGVyT3JOdWxsLFxuICBnZXRQYXRoLFxuICBpc0ZpbGUsXG4gIGlzTm90ZVxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBgcHJvY2Vzc2AgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc09wdGlvbnMgZXh0ZW5kcyBSZXRyeU9wdGlvbnMge1xuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgZnVuY3Rpb24gd2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuXG4gICAqL1xuICBzaG91bGRGYWlsT25NaXNzaW5nRmlsZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29waWVzIGEgZmlsZSBzYWZlbHkgaW4gdGhlIHZhdWx0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gb2xkUGF0aE9yRmlsZSAtIFRoZSBvbGQgcGF0aCBvciBmaWxlIHRvIGNvcHkuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byBjb3B5IHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5ldyBwYXRoIG9mIHRoZSBjb3BpZWQgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvcHlTYWZlKGFwcDogQXBwLCBvbGRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBuZXdQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIG9sZFBhdGhPckZpbGUpO1xuXG4gIGNvbnN0IG5ld0ZvbGRlclBhdGggPSBwYXJlbnRGb2xkZXJQYXRoKG5ld1BhdGgpO1xuICBhd2FpdCBjcmVhdGVGb2xkZXJTYWZlKGFwcCwgbmV3Rm9sZGVyUGF0aCk7XG5cbiAgY29uc3QgbmV3QXZhaWxhYmxlUGF0aCA9IGdldEF2YWlsYWJsZVBhdGgoYXBwLCBuZXdQYXRoKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jb3B5KGZpbGUsIG5ld0F2YWlsYWJsZVBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKG5ld0F2YWlsYWJsZVBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdBdmFpbGFibGVQYXRoO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmb2xkZXIgc2FmZWx5IGluIHRoZSBzcGVjaWZpZWQgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvbGRlciB3YXMgY3JlYXRlZC5cbiAqIEB0aHJvd3MgSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGNyZWF0aW5nIHRoZSBmb2xkZXIgYW5kIGl0IHN0aWxsIGRvZXNuJ3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVGb2xkZXJTYWZlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgaWYgKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhwYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihwYXRoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdGVtcG9yYXJ5IGZpbGUgaW4gdGhlIHZhdWx0IHdpdGggcGFyZW50IGZvbGRlcnMgaWYgbmVlZGVkLlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZmlsZSBhbmQgYWxsIGl0cyBjcmVhdGVkIHBhcmVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVUZW1wRmlsZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTwoKSA9PiBQcm9taXNlPHZvaWQ+PiB7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoZmlsZSkge1xuICAgIHJldHVybiBub29wQXN5bmM7XG4gIH1cblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZShwYXRoLCAnJyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGgpO1xuICAgIGlmICghZmlsZS5kZWxldGVkKSB7XG4gICAgICBhd2FpdCBhcHAuZmlsZU1hbmFnZXIudHJhc2hGaWxlKGZpbGUpO1xuICAgIH1cbiAgICBhd2FpdCBmb2xkZXJDbGVhbnVwKCk7XG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRlbXBvcmFyeSBmb2xkZXIgaW4gdGhlIHZhdWx0IHdpdGggcGFyZW50IGZvbGRlcnMgaWYgbmVlZGVkLlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGNhbGxlZCB0byBkZWxldGUgdGhlIHRlbXBvcmFyeSBmb2xkZXIgYW5kIGFsbCBpdHMgY3JlYXRlZCBwYXJlbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVtcEZvbGRlcihhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTwoKSA9PiBQcm9taXNlPHZvaWQ+PiB7XG4gIGxldCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZvbGRlcikge1xuICAgIHJldHVybiBub29wQXN5bmM7XG4gIH1cblxuICBjb25zdCBkaXJQYXRoID0gcGFyZW50Rm9sZGVyUGF0aChwYXRoKTtcbiAgYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIGRpclBhdGgpO1xuXG4gIGNvbnN0IGZvbGRlckNsZWFudXAgPSBhd2FpdCBjcmVhdGVUZW1wRm9sZGVyKGFwcCwgcGFyZW50Rm9sZGVyUGF0aChwYXRoKSk7XG5cbiAgYXdhaXQgY3JlYXRlRm9sZGVyU2FmZShhcHAsIHBhdGgpO1xuXG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgZm9sZGVyID0gZ2V0Rm9sZGVyKGFwcCwgcGF0aCk7XG4gICAgaWYgKCFmb2xkZXIuZGVsZXRlZCkge1xuICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShmb2xkZXIpO1xuICAgIH1cbiAgICBhd2FpdCBmb2xkZXJDbGVhbnVwKCk7XG4gIH07XG59XG5cbi8qKlxuICogR2V0cyBhbiBhdmFpbGFibGUgcGF0aCBmb3IgYSBmaWxlIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBnZXQgYW4gYXZhaWxhYmxlIHBhdGggZm9yLlxuICogQHJldHVybnMgVGhlIGF2YWlsYWJsZSBwYXRoIGZvciB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEF2YWlsYWJsZVBhdGgoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGV4dCA9IGV4dG5hbWUocGF0aCk7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChqb2luKGRpcm5hbWUocGF0aCksIGJhc2VuYW1lKHBhdGgsIGV4dCkpLCBleHQuc2xpY2UoMSkpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbiBhcnJheSBvZiBNYXJrZG93biBmaWxlcyBmcm9tIHRoZSBhcHAncyB2YXVsdCBhbmQgc29ydHMgdGhlbSBhbHBoYWJldGljYWxseSBieSB0aGVpciBmaWxlIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBNYXJrZG93biBmaWxlcyBzb3J0ZWQgYnkgZmlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlc1NvcnRlZChhcHA6IEFwcCk6IFRGaWxlW10ge1xuICByZXR1cm4gYXBwLnZhdWx0LmdldE1hcmtkb3duRmlsZXMoKS5zb3J0KChhLCBiKSA9PiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgYWxsIG5vdGUgZmlsZXMgZnJvbSB0aGUgYXBwJ3MgdmF1bHQgYW5kIHNvcnRzIHRoZW0gYWxwaGFiZXRpY2FsbHkgYnkgdGhlaXIgZmlsZSBwYXRoLlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhbGwgbm90ZSBmaWxlcyBpbiB0aGUgdmF1bHQgc29ydGVkIGJ5IGZpbGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5vdGVGaWxlc1NvcnRlZChhcHA6IEFwcCk6IFRGaWxlW10ge1xuICByZXR1cm4gYXBwLnZhdWx0LmdldEFsbExvYWRlZEZpbGVzKCkuZmlsdGVyKChmaWxlKSA9PiBpc0ZpbGUoZmlsZSkgJiYgaXNOb3RlKGFwcCwgZmlsZSkpLnNvcnQoKGEsIGIpID0+IGEucGF0aC5sb2NhbGVDb21wYXJlKGIucGF0aCkpIGFzIFRGaWxlW107XG59XG5cbi8qKlxuICogR2V0cyBhIHNhZmUgcmVuYW1lIHBhdGggZm9yIGEgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIG9sZFBhdGhPckZpbGUgLSBUaGUgb2xkIHBhdGggb3IgZmlsZSB0byByZW5hbWUuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byByZW5hbWUgdGhlIGZpbGUgdG8uXG4gKiBAcmV0dXJucyBUaGUgc2FmZSByZW5hbWUgcGF0aCBmb3IgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTYWZlUmVuYW1lUGF0aChhcHA6IEFwcCwgb2xkUGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgbmV3UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgb2xkUGF0aCA9IGdldFBhdGgoYXBwLCBvbGRQYXRoT3JGaWxlKTtcblxuICBpZiAoYXBwLnZhdWx0LmFkYXB0ZXIuaW5zZW5zaXRpdmUpIHtcbiAgICBsZXQgZm9sZGVyUGF0aCA9IGRpcm5hbWUobmV3UGF0aCk7XG4gICAgbGV0IG5vbkV4aXN0aW5nUGF0aCA9IGJhc2VuYW1lKG5ld1BhdGgpO1xuICAgIGxldCBmb2xkZXI6IG51bGwgfCBURm9sZGVyO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIGZvbGRlclBhdGgsIHRydWUpO1xuICAgICAgaWYgKGZvbGRlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG5vbkV4aXN0aW5nUGF0aCA9IGpvaW4oYmFzZW5hbWUoZm9sZGVyUGF0aCksIG5vbkV4aXN0aW5nUGF0aCk7XG4gICAgICBmb2xkZXJQYXRoID0gZGlybmFtZShmb2xkZXJQYXRoKTtcbiAgICB9XG4gICAgbmV3UGF0aCA9IGpvaW4oZm9sZGVyLmdldFBhcmVudFByZWZpeCgpLCBub25FeGlzdGluZ1BhdGgpO1xuICB9XG5cbiAgaWYgKG9sZFBhdGgudG9Mb3dlckNhc2UoKSA9PT0gbmV3UGF0aC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgcmV0dXJuIG5ld1BhdGg7XG4gIH1cblxuICByZXR1cm4gZ2V0QXZhaWxhYmxlUGF0aChhcHAsIG5ld1BhdGgpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZvbGRlciBpcyBlbXB0eS5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZm9sZGVyIGlzIGVtcHR5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNFbXB0eUZvbGRlcihhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgbGlzdGVkRmlsZXMgPSBhd2FpdCBsaXN0U2FmZShhcHAsIGdldFBhdGgoYXBwLCBwYXRoT3JGb2xkZXIpKTtcbiAgcmV0dXJuIGxpc3RlZEZpbGVzLmZpbGVzLmxlbmd0aCA9PT0gMCAmJiBsaXN0ZWRGaWxlcy5mb2xkZXJzLmxlbmd0aCA9PT0gMDtcbn1cblxuLyoqXG4gKiBTYWZlbHkgbGlzdHMgdGhlIGZpbGVzIGFuZCBmb2xkZXJzIGF0IHRoZSBzcGVjaWZpZWQgcGF0aCBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gbGlzdC5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgYExpc3RlZEZpbGVzYCBvYmplY3QgY29udGFpbmluZyB0aGUgbGlzdGVkIGZpbGVzIGFuZCBmb2xkZXJzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdFNhZmUoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyKTogUHJvbWlzZTxMaXN0ZWRGaWxlcz4ge1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZvbGRlcik7XG4gIGNvbnN0IEVNUFRZID0geyBmaWxlczogW10sIGZvbGRlcnM6IFtdIH07XG5cbiAgaWYgKChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5zdGF0KHBhdGgpKT8udHlwZSAhPT0gJ2ZvbGRlcicpIHtcbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5saXN0KHBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIGZpbGUgd2l0aCByZXRyeSBsb2dpYywgdXBkYXRpbmcgaXRzIGNvbnRlbnQgYmFzZWQgb24gYSBwcm92aWRlZCB2YWx1ZSBvciBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLCB0eXBpY2FsbHkgdXNlZCBmb3IgYWNjZXNzaW5nIHRoZSB2YXVsdC5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBiZSBwcm9jZXNzZWQuIEl0IGNhbiBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggb3IgYSBmaWxlIG9iamVjdC5cbiAqIEBwYXJhbSBuZXdDb250ZW50UHJvdmlkZXIgLSBBIHZhbHVlIHByb3ZpZGVyIHRoYXQgcmV0dXJucyB0aGUgbmV3IGNvbnRlbnQgYmFzZWQgb24gdGhlIG9sZCBjb250ZW50IG9mIHRoZSBmaWxlLlxuICogSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgb2xkIGNvbnRlbnQgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVybnMgdGhlIG5ldyBjb250ZW50LlxuICogSWYgZnVuY3Rpb24gaXMgcHJvdmlkZWQsIGl0IHNob3VsZCByZXR1cm4gYG51bGxgIGlmIHRoZSBwcm9jZXNzIHNob3VsZCBiZSByZXRyaWVkLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBvcHRpb25zIGZvciBwcm9jZXNzaW5nL3JldHJ5aW5nIHRoZSBvcGVyYXRpb24uXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcHJvY2VzcyBpcyBjb21wbGV0ZS5cbiAqXG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHByb2Nlc3MgZmFpbHMgYWZ0ZXIgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgcmV0cmllcyBvciB0aW1lb3V0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2VzcyhcbiAgYXBwOiBBcHAsXG4gIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsXG4gIG5ld0NvbnRlbnRQcm92aWRlcjogVmFsdWVQcm92aWRlcjxudWxsIHwgc3RyaW5nLCBbc3RyaW5nXT4sXG4gIG9wdGlvbnM6IFByb2Nlc3NPcHRpb25zID0ge31cbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlMgPSB7XG4gICAgc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGU6IHRydWVcbiAgfTtcbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7IC4uLkRFRkFVTFRfUkVUUllfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuXG4gIGF3YWl0IHJldHJ5V2l0aFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG9sZENvbnRlbnQgPSBhd2FpdCByZWFkU2FmZShhcHAsIHBhdGhPckZpbGUpO1xuXG4gICAgaWYgKG9sZENvbnRlbnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBoYW5kbGVNaXNzaW5nRmlsZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0NvbnRlbnQgPSBhd2FpdCByZXNvbHZlVmFsdWUobmV3Q29udGVudFByb3ZpZGVyLCBvbGRDb250ZW50KTtcbiAgICBpZiAobmV3Q29udGVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBpc1N1Y2Nlc3MgPSB0cnVlO1xuICAgIGNvbnN0IGRvZXNGaWxlRXhpc3QgPSBhd2FpdCBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHAsIHBhdGhPckZpbGUsIGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICBhd2FpdCBhcHAudmF1bHQucHJvY2VzcyhmaWxlLCAoY29udGVudCkgPT4ge1xuICAgICAgICBpZiAoY29udGVudCAhPT0gb2xkQ29udGVudCkge1xuICAgICAgICAgIGNvbnNvbGUud2FybignQ29udGVudCBoYXMgY2hhbmdlZCBzaW5jZSBpdCB3YXMgcmVhZC4gUmV0cnlpbmcuLi4nLCB7XG4gICAgICAgICAgICBhY3R1YWxDb250ZW50OiBjb250ZW50LFxuICAgICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBvbGRDb250ZW50LFxuICAgICAgICAgICAgcGF0aDogZmlsZS5wYXRoXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaXNTdWNjZXNzID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3Q29udGVudDtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKCFkb2VzRmlsZUV4aXN0KSB7XG4gICAgICByZXR1cm4gaGFuZGxlTWlzc2luZ0ZpbGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNTdWNjZXNzO1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlTWlzc2luZ0ZpbGUoKTogYm9vbGVhbiB7XG4gICAgICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGUpIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlICcke3BhdGh9JyBub3QgZm91bmRgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSwgZnVsbE9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBjb250ZW50IG9mIGEgZmlsZSBzYWZlbHkgZnJvbSB0aGUgdmF1bHQuXG4gKlxuICogSXQgY292ZXJzIHRoZSBjYXNlIHdoZW4gdGhlIGZpbGUgd2FzIHJlbW92ZWQgZHVyaW5nIHRoZSByZWFkaW5nLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gcmVhZC5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZW50IG9mIHRoZSBmaWxlIG9yIGBudWxsYCBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkU2FmZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBsZXQgY29udGVudDogbnVsbCB8IHN0cmluZyA9IG51bGw7XG4gIGF3YWl0IGludm9rZUZpbGVBY3Rpb25TYWZlKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGZpbGUpID0+IHtcbiAgICBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQoZmlsZSk7XG4gIH0pO1xuICByZXR1cm4gY29udGVudDtcbn1cblxuLyoqXG4gKiBSZW5hbWVzIGEgZmlsZSBzYWZlbHkgaW4gdGhlIHZhdWx0LlxuICogSWYgdGhlIG5ldyBwYXRoIGFscmVhZHkgZXhpc3RzLCB0aGUgZmlsZSB3aWxsIGJlIHJlbmFtZWQgdG8gYW4gYXZhaWxhYmxlIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBvbGRQYXRoT3JGaWxlIC0gVGhlIG9sZCBwYXRoIG9yIGZpbGUgdG8gcmVuYW1lLlxuICogQHBhcmFtIG5ld1BhdGggLSBUaGUgbmV3IHBhdGggdG8gcmVuYW1lIHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5ldyBwYXRoIG9mIHRoZSBmaWxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuYW1lU2FmZShhcHA6IEFwcCwgb2xkUGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgbmV3UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgb2xkRmlsZSA9IGdldEZpbGUoYXBwLCBvbGRQYXRoT3JGaWxlLCBmYWxzZSwgdHJ1ZSk7XG5cbiAgY29uc3QgbmV3QXZhaWxhYmxlUGF0aCA9IGdldFNhZmVSZW5hbWVQYXRoKGFwcCwgb2xkUGF0aE9yRmlsZSwgbmV3UGF0aCk7XG5cbiAgaWYgKG9sZEZpbGUucGF0aC50b0xvd2VyQ2FzZSgpID09PSBuZXdBdmFpbGFibGVQYXRoLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBpZiAob2xkRmlsZS5wYXRoICE9PSBuZXdQYXRoKSB7XG4gICAgICBhd2FpdCBhcHAudmF1bHQucmVuYW1lKG9sZEZpbGUsIG5ld0F2YWlsYWJsZVBhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbiAgfVxuXG4gIGNvbnN0IG5ld0ZvbGRlclBhdGggPSBwYXJlbnRGb2xkZXJQYXRoKG5ld0F2YWlsYWJsZVBhdGgpO1xuICBhd2FpdCBjcmVhdGVGb2xkZXJTYWZlKGFwcCwgbmV3Rm9sZGVyUGF0aCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBhcHAudmF1bHQucmVuYW1lKG9sZEZpbGUsIG5ld0F2YWlsYWJsZVBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKG5ld0F2YWlsYWJsZVBhdGgpIHx8IGF3YWl0IGFwcC52YXVsdC5leGlzdHMob2xkRmlsZS5wYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW52b2tlRmlsZUFjdGlvblNhZmUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsIGZpbGVBY3Rpb246IChmaWxlOiBURmlsZSkgPT4gUHJvbWlzZTx2b2lkPik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpO1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGF3YWl0IGZpbGVBY3Rpb24oZmlsZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICAgIGlmICghZmlsZSB8fCBmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgZTtc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
|
267
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBWYXVsdFxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgT2JzaWRpYW4gVmF1bHQuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIExpc3RlZEZpbGVzLFxuICBURmlsZSxcbiAgVEZvbGRlclxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IHBhcmVudEZvbGRlclBhdGggfSBmcm9tICdvYnNpZGlhbi10eXBpbmdzL2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBhdGhPckZpbGUsXG4gIFBhdGhPckZvbGRlclxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyByZXRyeVdpdGhUaW1lb3V0IH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHsgbm9vcEFzeW5jIH0gZnJvbSAnLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHtcbiAgYmFzZW5hbWUsXG4gIGRpcm5hbWUsXG4gIGV4dG5hbWUsXG4gIGpvaW5cbn0gZnJvbSAnLi4vUGF0aC50cyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuLi9WYWx1ZVByb3ZpZGVyLnRzJztcbmltcG9ydCB7XG4gIGdldEZpbGUsXG4gIGdldEZpbGVPck51bGwsXG4gIGdldEZvbGRlcixcbiAgZ2V0Rm9sZGVyT3JOdWxsLFxuICBnZXRQYXRoLFxuICBpc0ZpbGUsXG4gIGlzTm90ZVxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBgcHJvY2Vzc2AgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc09wdGlvbnMgZXh0ZW5kcyBSZXRyeU9wdGlvbnMge1xuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgZnVuY3Rpb24gd2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuXG4gICAqL1xuICBzaG91bGRGYWlsT25NaXNzaW5nRmlsZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29waWVzIGEgZmlsZSBzYWZlbHkgaW4gdGhlIHZhdWx0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gb2xkUGF0aE9yRmlsZSAtIFRoZSBvbGQgcGF0aCBvciBmaWxlIHRvIGNvcHkuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byBjb3B5IHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5ldyBwYXRoIG9mIHRoZSBjb3BpZWQgZmlsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvcHlTYWZlKGFwcDogQXBwLCBvbGRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBuZXdQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIG9sZFBhdGhPckZpbGUpO1xuXG4gIGNvbnN0IG5ld0ZvbGRlclBhdGggPSBwYXJlbnRGb2xkZXJQYXRoKG5ld1BhdGgpO1xuICBhd2FpdCBjcmVhdGVGb2xkZXJTYWZlKGFwcCwgbmV3Rm9sZGVyUGF0aCk7XG5cbiAgY29uc3QgbmV3QXZhaWxhYmxlUGF0aCA9IGdldEF2YWlsYWJsZVBhdGgoYXBwLCBuZXdQYXRoKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jb3B5KGZpbGUsIG5ld0F2YWlsYWJsZVBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKG5ld0F2YWlsYWJsZVBhdGgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdBdmFpbGFibGVQYXRoO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmb2xkZXIgc2FmZWx5IGluIHRoZSBzcGVjaWZpZWQgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvbGRlciB3YXMgY3JlYXRlZC5cbiAqIEB0aHJvd3MgSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGNyZWF0aW5nIHRoZSBmb2xkZXIgYW5kIGl0IHN0aWxsIGRvZXNuJ3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVGb2xkZXJTYWZlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgaWYgKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhwYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihwYXRoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdGVtcG9yYXJ5IGZpbGUgaW4gdGhlIHZhdWx0IHdpdGggcGFyZW50IGZvbGRlcnMgaWYgbmVlZGVkLlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gY3JlYXRlLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZmlsZSBhbmQgYWxsIGl0cyBjcmVhdGVkIHBhcmVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVUZW1wRmlsZShhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTwoKSA9PiBQcm9taXNlPHZvaWQ+PiB7XG4gIGxldCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICBpZiAoZmlsZSkge1xuICAgIHJldHVybiBub29wQXN5bmM7XG4gIH1cblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZShwYXRoLCAnJyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGgpO1xuICAgIGlmICghZmlsZS5kZWxldGVkKSB7XG4gICAgICBhd2FpdCBhcHAuZmlsZU1hbmFnZXIudHJhc2hGaWxlKGZpbGUpO1xuICAgIH1cbiAgICBhd2FpdCBmb2xkZXJDbGVhbnVwKCk7XG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRlbXBvcmFyeSBmb2xkZXIgaW4gdGhlIHZhdWx0IHdpdGggcGFyZW50IGZvbGRlcnMgaWYgbmVlZGVkLlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGNhbGxlZCB0byBkZWxldGUgdGhlIHRlbXBvcmFyeSBmb2xkZXIgYW5kIGFsbCBpdHMgY3JlYXRlZCBwYXJlbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGVtcEZvbGRlcihhcHA6IEFwcCwgcGF0aDogc3RyaW5nKTogUHJvbWlzZTwoKSA9PiBQcm9taXNlPHZvaWQ+PiB7XG4gIGxldCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKGZvbGRlcikge1xuICAgIHJldHVybiBub29wQXN5bmM7XG4gIH1cblxuICBjb25zdCBkaXJQYXRoID0gcGFyZW50Rm9sZGVyUGF0aChwYXRoKTtcbiAgYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIGRpclBhdGgpO1xuXG4gIGNvbnN0IGZvbGRlckNsZWFudXAgPSBhd2FpdCBjcmVhdGVUZW1wRm9sZGVyKGFwcCwgcGFyZW50Rm9sZGVyUGF0aChwYXRoKSk7XG5cbiAgYXdhaXQgY3JlYXRlRm9sZGVyU2FmZShhcHAsIHBhdGgpO1xuXG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgZm9sZGVyID0gZ2V0Rm9sZGVyKGFwcCwgcGF0aCk7XG4gICAgaWYgKCFmb2xkZXIuZGVsZXRlZCkge1xuICAgICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnRyYXNoRmlsZShmb2xkZXIpO1xuICAgIH1cbiAgICBhd2FpdCBmb2xkZXJDbGVhbnVwKCk7XG4gIH07XG59XG5cbi8qKlxuICogR2V0cyBhbiBhdmFpbGFibGUgcGF0aCBmb3IgYSBmaWxlIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBnZXQgYW4gYXZhaWxhYmxlIHBhdGggZm9yLlxuICogQHJldHVybnMgVGhlIGF2YWlsYWJsZSBwYXRoIGZvciB0aGUgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEF2YWlsYWJsZVBhdGgoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGV4dCA9IGV4dG5hbWUocGF0aCk7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aChqb2luKGRpcm5hbWUocGF0aCksIGJhc2VuYW1lKHBhdGgsIGV4dCkpLCBleHQuc2xpY2UoMSkpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbiBhcnJheSBvZiBNYXJrZG93biBmaWxlcyBmcm9tIHRoZSBhcHAncyB2YXVsdCBhbmQgc29ydHMgdGhlbSBhbHBoYWJldGljYWxseSBieSB0aGVpciBmaWxlIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBNYXJrZG93biBmaWxlcyBzb3J0ZWQgYnkgZmlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlc1NvcnRlZChhcHA6IEFwcCk6IFRGaWxlW10ge1xuICByZXR1cm4gYXBwLnZhdWx0LmdldE1hcmtkb3duRmlsZXMoKS5zb3J0KChhLCBiKSA9PiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgYWxsIG5vdGUgZmlsZXMgZnJvbSB0aGUgYXBwJ3MgdmF1bHQgYW5kIHNvcnRzIHRoZW0gYWxwaGFiZXRpY2FsbHkgYnkgdGhlaXIgZmlsZSBwYXRoLlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhbGwgbm90ZSBmaWxlcyBpbiB0aGUgdmF1bHQgc29ydGVkIGJ5IGZpbGUgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5vdGVGaWxlc1NvcnRlZChhcHA6IEFwcCk6IFRGaWxlW10ge1xuICByZXR1cm4gYXBwLnZhdWx0LmdldEFsbExvYWRlZEZpbGVzKCkuZmlsdGVyKChmaWxlKSA9PiBpc0ZpbGUoZmlsZSkgJiYgaXNOb3RlKGFwcCwgZmlsZSkpLnNvcnQoKGEsIGIpID0+IGEucGF0aC5sb2NhbGVDb21wYXJlKGIucGF0aCkpIGFzIFRGaWxlW107XG59XG5cbi8qKlxuICogR2V0cyBhIHNhZmUgcmVuYW1lIHBhdGggZm9yIGEgZmlsZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIG9sZFBhdGhPckZpbGUgLSBUaGUgb2xkIHBhdGggb3IgZmlsZSB0byByZW5hbWUuXG4gKiBAcGFyYW0gbmV3UGF0aCAtIFRoZSBuZXcgcGF0aCB0byByZW5hbWUgdGhlIGZpbGUgdG8uXG4gKiBAcmV0dXJucyBUaGUgc2FmZSByZW5hbWUgcGF0aCBmb3IgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTYWZlUmVuYW1lUGF0aChhcHA6IEFwcCwgb2xkUGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgbmV3UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgb2xkUGF0aCA9IGdldFBhdGgoYXBwLCBvbGRQYXRoT3JGaWxlKTtcblxuICBpZiAoYXBwLnZhdWx0LmFkYXB0ZXIuaW5zZW5zaXRpdmUpIHtcbiAgICBsZXQgZm9sZGVyUGF0aCA9IGRpcm5hbWUobmV3UGF0aCk7XG4gICAgbGV0IG5vbkV4aXN0aW5nUGF0aCA9IGJhc2VuYW1lKG5ld1BhdGgpO1xuICAgIGxldCBmb2xkZXI6IG51bGwgfCBURm9sZGVyO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIGZvbGRlclBhdGgsIHRydWUpO1xuICAgICAgaWYgKGZvbGRlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG5vbkV4aXN0aW5nUGF0aCA9IGpvaW4oYmFzZW5hbWUoZm9sZGVyUGF0aCksIG5vbkV4aXN0aW5nUGF0aCk7XG4gICAgICBmb2xkZXJQYXRoID0gZGlybmFtZShmb2xkZXJQYXRoKTtcbiAgICB9XG4gICAgbmV3UGF0aCA9IGpvaW4oZm9sZGVyLmdldFBhcmVudFByZWZpeCgpLCBub25FeGlzdGluZ1BhdGgpO1xuICB9XG5cbiAgaWYgKG9sZFBhdGgudG9Mb3dlckNhc2UoKSA9PT0gbmV3UGF0aC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgcmV0dXJuIG5ld1BhdGg7XG4gIH1cblxuICByZXR1cm4gZ2V0QXZhaWxhYmxlUGF0aChhcHAsIG5ld1BhdGgpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZvbGRlciBpcyBlbXB0eS5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZm9sZGVyIGlzIGVtcHR5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNFbXB0eUZvbGRlcihhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgbGlzdGVkRmlsZXMgPSBhd2FpdCBsaXN0U2FmZShhcHAsIGdldFBhdGgoYXBwLCBwYXRoT3JGb2xkZXIpKTtcbiAgcmV0dXJuIGxpc3RlZEZpbGVzLmZpbGVzLmxlbmd0aCA9PT0gMCAmJiBsaXN0ZWRGaWxlcy5mb2xkZXJzLmxlbmd0aCA9PT0gMDtcbn1cblxuLyoqXG4gKiBTYWZlbHkgbGlzdHMgdGhlIGZpbGVzIGFuZCBmb2xkZXJzIGF0IHRoZSBzcGVjaWZpZWQgcGF0aCBpbiB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gbGlzdC5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEge0BsaW5rIExpc3RlZEZpbGVzfSBvYmplY3QgY29udGFpbmluZyB0aGUgbGlzdGVkIGZpbGVzIGFuZCBmb2xkZXJzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdFNhZmUoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyKTogUHJvbWlzZTxMaXN0ZWRGaWxlcz4ge1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZvbGRlcik7XG4gIGNvbnN0IEVNUFRZID0geyBmaWxlczogW10sIGZvbGRlcnM6IFtdIH07XG5cbiAgaWYgKChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5zdGF0KHBhdGgpKT8udHlwZSAhPT0gJ2ZvbGRlcicpIHtcbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5saXN0KHBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIGZpbGUgd2l0aCByZXRyeSBsb2dpYywgdXBkYXRpbmcgaXRzIGNvbnRlbnQgYmFzZWQgb24gYSBwcm92aWRlZCB2YWx1ZSBvciBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLCB0eXBpY2FsbHkgdXNlZCBmb3IgYWNjZXNzaW5nIHRoZSB2YXVsdC5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBiZSBwcm9jZXNzZWQuIEl0IGNhbiBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggb3IgYSBmaWxlIG9iamVjdC5cbiAqIEBwYXJhbSBuZXdDb250ZW50UHJvdmlkZXIgLSBBIHZhbHVlIHByb3ZpZGVyIHRoYXQgcmV0dXJucyB0aGUgbmV3IGNvbnRlbnQgYmFzZWQgb24gdGhlIG9sZCBjb250ZW50IG9mIHRoZSBmaWxlLlxuICogSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgb2xkIGNvbnRlbnQgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVybnMgdGhlIG5ldyBjb250ZW50LlxuICogSWYgZnVuY3Rpb24gaXMgcHJvdmlkZWQsIGl0IHNob3VsZCByZXR1cm4gYG51bGxgIGlmIHRoZSBwcm9jZXNzIHNob3VsZCBiZSByZXRyaWVkLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBvcHRpb25zIGZvciBwcm9jZXNzaW5nL3JldHJ5aW5nIHRoZSBvcGVyYXRpb24uXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcHJvY2VzcyBpcyBjb21wbGV0ZS5cbiAqXG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHByb2Nlc3MgZmFpbHMgYWZ0ZXIgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgcmV0cmllcyBvciB0aW1lb3V0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2VzcyhcbiAgYXBwOiBBcHAsXG4gIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsXG4gIG5ld0NvbnRlbnRQcm92aWRlcjogVmFsdWVQcm92aWRlcjxudWxsIHwgc3RyaW5nLCBbc3RyaW5nXT4sXG4gIG9wdGlvbnM6IFByb2Nlc3NPcHRpb25zID0ge31cbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlMgPSB7XG4gICAgc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGU6IHRydWVcbiAgfTtcbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7IC4uLkRFRkFVTFRfUkVUUllfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuXG4gIGF3YWl0IHJldHJ5V2l0aFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG9sZENvbnRlbnQgPSBhd2FpdCByZWFkU2FmZShhcHAsIHBhdGhPckZpbGUpO1xuXG4gICAgaWYgKG9sZENvbnRlbnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBoYW5kbGVNaXNzaW5nRmlsZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0NvbnRlbnQgPSBhd2FpdCByZXNvbHZlVmFsdWUobmV3Q29udGVudFByb3ZpZGVyLCBvbGRDb250ZW50KTtcbiAgICBpZiAobmV3Q29udGVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBpc1N1Y2Nlc3MgPSB0cnVlO1xuICAgIGNvbnN0IGRvZXNGaWxlRXhpc3QgPSBhd2FpdCBpbnZva2VGaWxlQWN0aW9uU2FmZShhcHAsIHBhdGhPckZpbGUsIGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICBhd2FpdCBhcHAudmF1bHQucHJvY2VzcyhmaWxlLCAoY29udGVudCkgPT4ge1xuICAgICAgICBpZiAoY29udGVudCAhPT0gb2xkQ29udGVudCkge1xuICAgICAgICAgIGNvbnNvbGUud2FybignQ29udGVudCBoYXMgY2hhbmdlZCBzaW5jZSBpdCB3YXMgcmVhZC4gUmV0cnlpbmcuLi4nLCB7XG4gICAgICAgICAgICBhY3R1YWxDb250ZW50OiBjb250ZW50LFxuICAgICAgICAgICAgZXhwZWN0ZWRDb250ZW50OiBvbGRDb250ZW50LFxuICAgICAgICAgICAgcGF0aDogZmlsZS5wYXRoXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaXNTdWNjZXNzID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3Q29udGVudDtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKCFkb2VzRmlsZUV4aXN0KSB7XG4gICAgICByZXR1cm4gaGFuZGxlTWlzc2luZ0ZpbGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNTdWNjZXNzO1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlTWlzc2luZ0ZpbGUoKTogYm9vbGVhbiB7XG4gICAgICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkRmFpbE9uTWlzc2luZ0ZpbGUpIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlICcke3BhdGh9JyBub3QgZm91bmRgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSwgZnVsbE9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBjb250ZW50IG9mIGEgZmlsZSBzYWZlbHkgZnJvbSB0aGUgdmF1bHQuXG4gKlxuICogSXQgY292ZXJzIHRoZSBjYXNlIHdoZW4gdGhlIGZpbGUgd2FzIHJlbW92ZWQgZHVyaW5nIHRoZSByZWFkaW5nLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gcmVhZC5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZW50IG9mIHRoZSBmaWxlIG9yIGBudWxsYCBpZiB0aGUgZmlsZSBpcyBtaXNzaW5nIG9yIGRlbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkU2FmZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBsZXQgY29udGVudDogbnVsbCB8IHN0cmluZyA9IG51bGw7XG4gIGF3YWl0IGludm9rZUZpbGVBY3Rpb25TYWZlKGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGZpbGUpID0+IHtcbiAgICBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQoZmlsZSk7XG4gIH0pO1xuICByZXR1cm4gY29udGVudDtcbn1cblxuLyoqXG4gKiBSZW5hbWVzIGEgZmlsZSBzYWZlbHkgaW4gdGhlIHZhdWx0LlxuICogSWYgdGhlIG5ldyBwYXRoIGFscmVhZHkgZXhpc3RzLCB0aGUgZmlsZSB3aWxsIGJlIHJlbmFtZWQgdG8gYW4gYXZhaWxhYmxlIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBvbGRQYXRoT3JGaWxlIC0gVGhlIG9sZCBwYXRoIG9yIGZpbGUgdG8gcmVuYW1lLlxuICogQHBhcmFtIG5ld1BhdGggLSBUaGUgbmV3IHBhdGggdG8gcmVuYW1lIHRoZSBmaWxlIHRvLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5ldyBwYXRoIG9mIHRoZSBmaWxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuYW1lU2FmZShhcHA6IEFwcCwgb2xkUGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgbmV3UGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgb2xkRmlsZSA9IGdldEZpbGUoYXBwLCBvbGRQYXRoT3JGaWxlLCBmYWxzZSwgdHJ1ZSk7XG5cbiAgY29uc3QgbmV3QXZhaWxhYmxlUGF0aCA9IGdldFNhZmVSZW5hbWVQYXRoKGFwcCwgb2xkUGF0aE9yRmlsZSwgbmV3UGF0aCk7XG5cbiAgaWYgKG9sZEZpbGUucGF0aC50b0xvd2VyQ2FzZSgpID09PSBuZXdBdmFpbGFibGVQYXRoLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBpZiAob2xkRmlsZS5wYXRoICE9PSBuZXdQYXRoKSB7XG4gICAgICBhd2FpdCBhcHAudmF1bHQucmVuYW1lKG9sZEZpbGUsIG5ld0F2YWlsYWJsZVBhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbiAgfVxuXG4gIGNvbnN0IG5ld0ZvbGRlclBhdGggPSBwYXJlbnRGb2xkZXJQYXRoKG5ld0F2YWlsYWJsZVBhdGgpO1xuICBhd2FpdCBjcmVhdGVGb2xkZXJTYWZlKGFwcCwgbmV3Rm9sZGVyUGF0aCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBhcHAudmF1bHQucmVuYW1lKG9sZEZpbGUsIG5ld0F2YWlsYWJsZVBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFhd2FpdCBhcHAudmF1bHQuZXhpc3RzKG5ld0F2YWlsYWJsZVBhdGgpIHx8IGF3YWl0IGFwcC52YXVsdC5leGlzdHMob2xkRmlsZS5wYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QXZhaWxhYmxlUGF0aDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW52b2tlRmlsZUFjdGlvblNhZmUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUsIGZpbGVBY3Rpb246IChmaWxlOiBURmlsZSkgPT4gUHJvbWlzZTx2b2lkPik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckZpbGUpO1xuICBsZXQgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoKTtcbiAgaWYgKCFmaWxlIHx8IGZpbGUuZGVsZXRlZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGF3YWl0IGZpbGVBY3Rpb24oZmlsZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIHBhdGgpO1xuICAgIGlmICghZmlsZSB8fCBmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhy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
|
@@ -89,7 +89,7 @@ export declare function isEmptyFolder(app: App, pathOrFolder: PathOrFolder): Pro
|
|
89
89
|
*
|
90
90
|
* @param app - The Obsidian application instance.
|
91
91
|
* @param pathOrFolder - The path or folder to list.
|
92
|
-
* @returns A promise that resolves to a
|
92
|
+
* @returns A promise that resolves to a {@link ListedFiles} object containing the listed files and folders.
|
93
93
|
*/
|
94
94
|
export declare function listSafe(app: App, pathOrFolder: PathOrFolder): Promise<ListedFiles>;
|
95
95
|
/**
|
@@ -64,6 +64,7 @@ __export(obsidian_exports, {
|
|
64
64
|
RenameDeleteHandler: () => RenameDeleteHandler,
|
65
65
|
ResourceUrl: () => ResourceUrl,
|
66
66
|
SettingEx: () => SettingEx,
|
67
|
+
ValidationMessage: () => ValidationMessage,
|
67
68
|
Vault: () => Vault,
|
68
69
|
VaultEx: () => VaultEx
|
69
70
|
});
|
@@ -97,6 +98,7 @@ var Reference = __toESM(__extractDefault(require('./Reference.cjs')), 1);
|
|
97
98
|
var RenameDeleteHandler = __toESM(__extractDefault(require('./RenameDeleteHandler.cjs')), 1);
|
98
99
|
var ResourceUrl = __toESM(__extractDefault(require('./ResourceUrl.cjs')), 1);
|
99
100
|
var SettingEx = __toESM(__extractDefault(require('./SettingEx.cjs')), 1);
|
101
|
+
var ValidationMessage = __toESM(__extractDefault(require('./ValidationMessage.cjs')), 1);
|
100
102
|
var Vault = __toESM(__extractDefault(require('./Vault.cjs')), 1);
|
101
103
|
var VaultEx = __toESM(__extractDefault(require('./VaultEx.cjs')), 1);
|
102
104
|
// Annotate the CommonJS export names for ESM import in node:
|
@@ -130,7 +132,8 @@ var VaultEx = __toESM(__extractDefault(require('./VaultEx.cjs')), 1);
|
|
130
132
|
RenameDeleteHandler,
|
131
133
|
ResourceUrl,
|
132
134
|
SettingEx,
|
135
|
+
ValidationMessage,
|
133
136
|
Vault,
|
134
137
|
VaultEx
|
135
138
|
});
|
136
|
-
//# sourceMappingURL=data:application/json;base64,
|
139
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgQXBwIGZyb20gJy4vQXBwLnRzJztcbmV4cG9ydCAqIGFzIEF0dGFjaG1lbnRQYXRoIGZyb20gJy4vQXR0YWNobWVudFBhdGgudHMnO1xuZXhwb3J0ICogYXMgQmFja2xpbmsgZnJvbSAnLi9CYWNrbGluay50cyc7XG5leHBvcnQgKiBhcyBDYWxsb3V0IGZyb20gJy4vQ2FsbG91dC50cyc7XG5leHBvcnQgKiBhcyBDb21wb25lbnRzIGZyb20gJy4vQ29tcG9uZW50cy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyBEYXRhdmlldyBmcm9tICcuL0RhdGF2aWV3LnRzJztcbmV4cG9ydCAqIGFzIERhdGF2aWV3TGluayBmcm9tICcuL0RhdGF2aWV3TGluay50cyc7XG5leHBvcnQgKiBhcyBGaWxlQ2hhbmdlIGZyb20gJy4vRmlsZUNoYW5nZS50cyc7XG5leHBvcnQgKiBhcyBGaWxlTWFuYWdlciBmcm9tICcuL0ZpbGVNYW5hZ2VyLnRzJztcbmV4cG9ydCAqIGFzIEZpbGVTeXN0ZW0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmV4cG9ydCAqIGFzIEZyb250bWF0dGVyIGZyb20gJy4vRnJvbnRtYXR0ZXIudHMnO1xuZXhwb3J0ICogYXMgTGluayBmcm9tICcuL0xpbmsudHMnO1xuZXhwb3J0ICogYXMgTG9nZ2VyIGZyb20gJy4vTG9nZ2VyLnRzJztcbmV4cG9ydCAqIGFzIExvb3AgZnJvbSAnLi9Mb29wLnRzJztcbmV4cG9ydCAqIGFzIE1hcmtkb3duIGZyb20gJy4vTWFya2Rvd24udHMnO1xuZXhwb3J0ICogYXMgTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3IgZnJvbSAnLi9NYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3Nvci50cyc7XG5leHBvcnQgKiBhcyBNYXJrZG93blZpZXcgZnJvbSAnLi9NYXJrZG93blZpZXcudHMnO1xuZXhwb3J0ICogYXMgTWV0YWRhdGFDYWNoZSBmcm9tICcuL01ldGFkYXRhQ2FjaGUudHMnO1xuZXhwb3J0ICogYXMgTW9kYWxzIGZyb20gJy4vTW9kYWxzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzIE1vbmtleUFyb3VuZCBmcm9tICcuL01vbmtleUFyb3VuZC50cyc7XG5leHBvcnQgKiBhcyBPYnNpZGlhblNldHRpbmdzIGZyb20gJy4vT2JzaWRpYW5TZXR0aW5ncy50cyc7XG5leHBvcnQgKiBhcyBQZGYgZnJvbSAnLi9QZGYudHMnO1xuZXhwb3J0ICogYXMgUGx1Z2luIGZyb20gJy4vUGx1Z2luL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzIFF1ZXVlIGZyb20gJy4vUXVldWUudHMnO1xuZXhwb3J0ICogYXMgUmVhY3QgZnJvbSAnLi9SZWFjdC9pbmRleC50cyc7XG5leHBvcnQgKiBhcyBSZWZlcmVuY2UgZnJvbSAnLi9SZWZlcmVuY2UudHMnO1xuZXhwb3J0ICogYXMgUmVuYW1lRGVsZXRlSGFuZGxlciBmcm9tICcuL1JlbmFtZURlbGV0ZUhhbmRsZXIudHMnO1xuZXhwb3J0ICogYXMgUmVzb3VyY2VVcmwgZnJvbSAnLi9SZXNvdXJjZVVybC50cyc7XG5leHBvcnQgKiBhcyBTZXR0aW5nRXggZnJvbSAnLi9TZXR0aW5nRXgudHMnO1xuZXhwb3J0ICogYXMgVmFsaWRhdGlvbk1lc3NhZ2UgZnJvbSAnLi9WYWxpZGF0aW9uTWVzc2FnZS50cyc7XG5leHBvcnQgKiBhcyBWYXVsdCBmcm9tICcuL1ZhdWx0LnRzJztcbmV4cG9ydCAqIGFzIFZhdWx0RXggZnJvbSAnLi9WYXVsdEV4LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUEsVUFBcUI7QUFDckIscUJBQWdDO0FBQ2hDLGVBQTBCO0FBQzFCLGNBQXlCO0FBQ3pCLGlCQUE0QjtBQUM1QixlQUEwQjtBQUMxQixtQkFBOEI7QUFDOUIsaUJBQTRCO0FBQzVCLGtCQUE2QjtBQUM3QixpQkFBNEI7QUFDNUIsa0JBQTZCO0FBQzdCLFdBQXNCO0FBQ3RCLGFBQXdCO0FBQ3hCLFdBQXNCO0FBQ3RCLGVBQTBCO0FBQzFCLGlDQUE0QztBQUM1QyxtQkFBOEI7QUFDOUIsb0JBQStCO0FBQy9CLGFBQXdCO0FBQ3hCLG1CQUE4QjtBQUM5Qix1QkFBa0M7QUFDbEMsVUFBcUI7QUFDckIsYUFBd0I7QUFDeEIsWUFBdUI7QUFDdkIsWUFBdUI7QUFDdkIsZ0JBQTJCO0FBQzNCLDBCQUFxQztBQUNyQyxrQkFBNkI7QUFDN0IsZ0JBQTJCO0FBQzNCLHdCQUFtQztBQUNuQyxZQUF1QjtBQUN2QixjQUF5QjsiLAogICJuYW1lcyI6IFtdCn0K
|
@@ -27,5 +27,6 @@ export * as Reference from './Reference.cjs';
|
|
27
27
|
export * as RenameDeleteHandler from './RenameDeleteHandler.cjs';
|
28
28
|
export * as ResourceUrl from './ResourceUrl.cjs';
|
29
29
|
export * as SettingEx from './SettingEx.cjs';
|
30
|
+
export * as ValidationMessage from './ValidationMessage.cjs';
|
30
31
|
export * as Vault from './Vault.cjs';
|
31
32
|
export * as VaultEx from './VaultEx.cjs';
|