vitest 0.0.136 → 0.0.137
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +4 -4
- package/dist/{diff-04ac7bc9.js → diff-5dfc7eb4.js} +2 -4
- package/dist/entry.js +9 -8
- package/dist/{global-3d90eb55.js → global-f971f18f.js} +4 -4
- package/dist/{index-6397bdab.js → index-314cb4d9.js} +3 -3
- package/dist/index-5d6a5929.js +9255 -0
- package/dist/index-64aafe4b.js +1 -1
- package/dist/index-64de1341.js +8677 -0
- package/dist/index.d.ts +8 -2
- package/dist/index.js +3 -3
- package/dist/{jest-mock-30625866.js → jest-mock-6c629944.js} +4 -3
- package/dist/node.d.ts +2 -0
- package/dist/node.js +3 -3
- package/dist/{setup-6bff359f.js → setup-97a1dda2.js} +9 -10
- package/dist/{vi-2509fe43.js → vi-567ba572.js} +2 -2
- package/dist/worker.js +25 -33
- package/package.json +3 -3
- package/dist/externalize-b979f524.js +0 -9259
- package/dist/index-0b823579.js +0 -8588
- package/dist/index-e909c175.js +0 -63
package/dist/entry.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import fs, { promises } from 'fs';
|
|
2
|
-
import { f as format_1, h as getSerializers, j as equals, k as iterableEquality, l as subsetEquality, p as plugins_1, b as getState, m as isA, J as JestChaiExpect, n as clearContext, o as defaultSuite, q as setHooks, r as getHooks, u as context, s as setState, x as getFn, e as vi } from './vi-
|
|
2
|
+
import { f as format_1, h as getSerializers, j as equals, k as iterableEquality, l as subsetEquality, p as plugins_1, b as getState, m as isA, J as JestChaiExpect, n as clearContext, o as defaultSuite, q as setHooks, r as getHooks, u as context, s as setState, x as getFn, e as vi } from './vi-567ba572.js';
|
|
3
3
|
import { Console } from 'console';
|
|
4
4
|
import { Writable } from 'stream';
|
|
5
5
|
import { importModule } from 'local-pkg';
|
|
@@ -7,11 +7,11 @@ import chai$1, { expect, util } from 'chai';
|
|
|
7
7
|
import { a as commonjsRequire, c as commonjsGlobal } from './_commonjsHelpers-c9e3b764.js';
|
|
8
8
|
import { u as index, s as slash, l as deepMerge, v as getNames, c, t as toArray, r as relative, w as partitionSuiteChildren, x as hasTests, h as hasFailed, g as getFullName } from './index-64aafe4b.js';
|
|
9
9
|
import { r as rpc } from './rpc-8c7cc374.js';
|
|
10
|
-
import { m as getOriginalPos, n as posToNumber, l as parseStacktrace, u as unifiedDiff } from './diff-
|
|
10
|
+
import { m as getOriginalPos, n as posToNumber, l as parseStacktrace, u as unifiedDiff } from './diff-5dfc7eb4.js';
|
|
11
11
|
import { performance as performance$1 } from 'perf_hooks';
|
|
12
12
|
import { createHash } from 'crypto';
|
|
13
13
|
import { format } from 'util';
|
|
14
|
-
import './jest-mock-
|
|
14
|
+
import './jest-mock-6c629944.js';
|
|
15
15
|
import 'tinyspy';
|
|
16
16
|
import 'url';
|
|
17
17
|
import 'tty';
|
|
@@ -185,7 +185,8 @@ const LIVING_KEYS = [
|
|
|
185
185
|
"MutationRecord",
|
|
186
186
|
"Headers",
|
|
187
187
|
"AbortController",
|
|
188
|
-
"AbortSignal"
|
|
188
|
+
"AbortSignal",
|
|
189
|
+
"Image"
|
|
189
190
|
];
|
|
190
191
|
const OTHER_KEYS = [
|
|
191
192
|
"addEventListener",
|
|
@@ -313,7 +314,7 @@ var jsdom = {
|
|
|
313
314
|
contentType,
|
|
314
315
|
userAgent
|
|
315
316
|
}, restOptions));
|
|
316
|
-
const keys = KEYS.concat(Object.getOwnPropertyNames(dom.window)).filter((k) => !k.startsWith("_")
|
|
317
|
+
const keys = KEYS.concat(Object.getOwnPropertyNames(dom.window)).filter((k) => !k.startsWith("_") && !(k in global));
|
|
317
318
|
for (const key of keys) {
|
|
318
319
|
Object.defineProperty(global, key, {
|
|
319
320
|
get() {
|
|
@@ -336,7 +337,7 @@ var happy = {
|
|
|
336
337
|
async setup(global) {
|
|
337
338
|
const { Window } = await importModule("happy-dom");
|
|
338
339
|
const win = new Window();
|
|
339
|
-
const keys = KEYS.concat(Object.getOwnPropertyNames(win)).filter((k) => !k.startsWith("_")
|
|
340
|
+
const keys = KEYS.concat(Object.getOwnPropertyNames(win)).filter((k) => !k.startsWith("_") && !(k in global));
|
|
340
341
|
for (const key of keys) {
|
|
341
342
|
Object.defineProperty(global, key, {
|
|
342
343
|
get() {
|
|
@@ -1347,7 +1348,7 @@ async function setupGlobalEnv(config) {
|
|
|
1347
1348
|
setupConsoleLogSpy();
|
|
1348
1349
|
await setupChai();
|
|
1349
1350
|
if (config.global)
|
|
1350
|
-
(await import('./global-
|
|
1351
|
+
(await import('./global-f971f18f.js')).registerApiGlobally();
|
|
1351
1352
|
}
|
|
1352
1353
|
function setupConsoleLogSpy() {
|
|
1353
1354
|
const stdout = new Writable({
|
|
@@ -1707,4 +1708,4 @@ async function run(files, config) {
|
|
|
1707
1708
|
}
|
|
1708
1709
|
|
|
1709
1710
|
export { run };
|
|
1710
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnkuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9lbnYvbm9kZS50cyIsIi4uL3NyYy9lbnYvanNkb20ta2V5cy50cyIsIi4uL3NyYy9lbnYvanNkb20udHMiLCIuLi9zcmMvZW52L2hhcHB5LWRvbS50cyIsIi4uL3NyYy9lbnYvaW5kZXgudHMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhaS1zdWJzZXRAMS42LjAvbm9kZV9tb2R1bGVzL2NoYWktc3Vic2V0L2xpYi9jaGFpLXN1YnNldC5qcyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvc25hcHNob3QvcG9ydC9pbmxpbmVTbmFwc2hvdC50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9uYXR1cmFsLWNvbXBhcmVAMS40LjAvbm9kZV9tb2R1bGVzL25hdHVyYWwtY29tcGFyZS9pbmRleC5qcyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvc25hcHNob3QvcG9ydC91dGlscy50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvc25hcHNob3QvcG9ydC9zdGF0ZS50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvc25hcHNob3QvY2xpZW50LnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9zbmFwc2hvdC9jaGFpLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9jaGFpL2plc3QtbWF0Y2hlci11dGlscy50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvY2hhaS9qZXN0LWV4dGVuZC50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvY2hhaS9qZXN0LWFzeW1tZXRyaWMtbWF0Y2hlcnMudHMiLCIuLi9zcmMvaW50ZWdyYXRpb25zL2NoYWkvc2V0dXAudHMiLCIuLi9zcmMvcnVudGltZS9zZXR1cC50cyIsIi4uL3NyYy9ydW50aW1lL2Vycm9yLnRzIiwiLi4vc3JjL3J1bnRpbWUvY29sbGVjdC50cyIsIi4uL3NyYy9ydW50aW1lL3J1bi50cyIsIi4uL3NyYy9ydW50aW1lL2VudHJ5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi90eXBlcydcblxuZXhwb3J0IGRlZmF1bHQgPEVudmlyb25tZW50Pih7XG4gIG5hbWU6ICdub2RlJyxcbiAgYXN5bmMgc2V0dXAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRlYXJkb3duKCkge1xuICAgICAgfSxcbiAgICB9XG4gIH0sXG59KVxuIiwiLy8gU0VFIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2RvbS9qc2RvbS9ibG9iL21hc3Rlci9saWIvanNkb20vbGl2aW5nL2ludGVyZmFjZXMuanNcblxuY29uc3QgTElWSU5HX0tFWVMgPSBbXG4gICdET01FeGNlcHRpb24nLFxuICAnVVJMJyxcbiAgJ1VSTFNlYXJjaFBhcmFtcycsXG4gICdFdmVudFRhcmdldCcsXG4gICdOYW1lZE5vZGVNYXAnLFxuICAnTm9kZScsXG4gICdBdHRyJyxcbiAgJ0VsZW1lbnQnLFxuICAnRG9jdW1lbnRGcmFnbWVudCcsXG4gICdET01JbXBsZW1lbnRhdGlvbicsXG4gICdEb2N1bWVudCcsXG4gICdYTUxEb2N1bWVudCcsXG4gICdDaGFyYWN0ZXJEYXRhJyxcbiAgJ1RleHQnLFxuICAnQ0RBVEFTZWN0aW9uJyxcbiAgJ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbicsXG4gICdDb21tZW50JyxcbiAgJ0RvY3VtZW50VHlwZScsXG4gICdOb2RlTGlzdCcsXG4gICdIVE1MQ29sbGVjdGlvbicsXG4gICdIVE1MT3B0aW9uc0NvbGxlY3Rpb24nLFxuICAnRE9NU3RyaW5nTWFwJyxcbiAgJ0RPTVRva2VuTGlzdCcsXG4gICdTdHlsZVNoZWV0TGlzdCcsXG4gICdIVE1MRWxlbWVudCcsXG4gICdIVE1MSGVhZEVsZW1lbnQnLFxuICAnSFRNTFRpdGxlRWxlbWVudCcsXG4gICdIVE1MQmFzZUVsZW1lbnQnLFxuICAnSFRNTExpbmtFbGVtZW50JyxcbiAgJ0hUTUxNZXRhRWxlbWVudCcsXG4gICdIVE1MU3R5bGVFbGVtZW50JyxcbiAgJ0hUTUxCb2R5RWxlbWVudCcsXG4gICdIVE1MSGVhZGluZ0VsZW1lbnQnLFxuICAnSFRNTFBhcmFncmFwaEVsZW1lbnQnLFxuICAnSFRNTEhSRWxlbWVudCcsXG4gICdIVE1MUHJlRWxlbWVudCcsXG4gICdIVE1MVUxpc3RFbGVtZW50JyxcbiAgJ0hUTUxPTGlzdEVsZW1lbnQnLFxuICAnSFRNTExJRWxlbWVudCcsXG4gICdIVE1MTWVudUVsZW1lbnQnLFxuICAnSFRNTERMaXN0RWxlbWVudCcsXG4gICdIVE1MRGl2RWxlbWVudCcsXG4gICdIVE1MQW5jaG9yRWxlbWVudCcsXG4gICdIVE1MQXJlYUVsZW1lbnQnLFxuICAnSFRNTEJSRWxlbWVudCcsXG4gICdIVE1MQnV0dG9uRWxlbWVudCcsXG4gICdIVE1MQ2FudmFzRWxlbWVudCcsXG4gICdIVE1MRGF0YUVsZW1lbnQnLFxuICAnSFRNTERhdGFMaXN0RWxlbWVudCcsXG4gICdIVE1MRGV0YWlsc0VsZW1lbnQnLFxuICAnSFRNTERpYWxvZ0VsZW1lbnQnLFxuICAnSFRNTERpcmVjdG9yeUVsZW1lbnQnLFxuICAnSFRNTEZpZWxkU2V0RWxlbWVudCcsXG4gICdIVE1MRm9udEVsZW1lbnQnLFxuICAnSFRNTEZvcm1FbGVtZW50JyxcbiAgJ0hUTUxIdG1sRWxlbWVudCcsXG4gICdIVE1MSW1hZ2VFbGVtZW50JyxcbiAgJ0hUTUxJbnB1dEVsZW1lbnQnLFxuICAnSFRNTExhYmVsRWxlbWVudCcsXG4gICdIVE1MTGVnZW5kRWxlbWVudCcsXG4gICdIVE1MTWFwRWxlbWVudCcsXG4gICdIVE1MTWFycXVlZUVsZW1lbnQnLFxuICAnSFRNTE1lZGlhRWxlbWVudCcsXG4gICdIVE1MTWV0ZXJFbGVtZW50JyxcbiAgJ0hUTUxNb2RFbGVtZW50JyxcbiAgJ0hUTUxPcHRHcm91cEVsZW1lbnQnLFxuICAnSFRNTE9wdGlvbkVsZW1lbnQnLFxuICAnSFRNTE91dHB1dEVsZW1lbnQnLFxuICAnSFRNTFBpY3R1cmVFbGVtZW50JyxcbiAgJ0hUTUxQcm9ncmVzc0VsZW1lbnQnLFxuICAnSFRNTFF1b3RlRWxlbWVudCcsXG4gICdIVE1MU2NyaXB0RWxlbWVudCcsXG4gICdIVE1MU2VsZWN0RWxlbWVudCcsXG4gICdIVE1MU2xvdEVsZW1lbnQnLFxuICAnSFRNTFNvdXJjZUVsZW1lbnQnLFxuICAnSFRNTFNwYW5FbGVtZW50JyxcbiAgJ0hUTUxUYWJsZUNhcHRpb25FbGVtZW50JyxcbiAgJ0hUTUxUYWJsZUNlbGxFbGVtZW50JyxcbiAgJ0hUTUxUYWJsZUNvbEVsZW1lbnQnLFxuICAnSFRNTFRhYmxlRWxlbWVudCcsXG4gICdIVE1MVGltZUVsZW1lbnQnLFxuICAnSFRNTFRhYmxlUm93RWxlbWVudCcsXG4gICdIVE1MVGFibGVTZWN0aW9uRWxlbWVudCcsXG4gICdIVE1MVGVtcGxhdGVFbGVtZW50JyxcbiAgJ0hUTUxUZXh0QXJlYUVsZW1lbnQnLFxuICAnSFRNTFVua25vd25FbGVtZW50JyxcbiAgJ0hUTUxGcmFtZUVsZW1lbnQnLFxuICAnSFRNTEZyYW1lU2V0RWxlbWVudCcsXG4gICdIVE1MSUZyYW1lRWxlbWVudCcsXG4gICdIVE1MRW1iZWRFbGVtZW50JyxcbiAgJ0hUTUxPYmplY3RFbGVtZW50JyxcbiAgJ0hUTUxQYXJhbUVsZW1lbnQnLFxuICAnSFRNTFZpZGVvRWxlbWVudCcsXG4gICdIVE1MQXVkaW9FbGVtZW50JyxcbiAgJ0hUTUxUcmFja0VsZW1lbnQnLFxuICAnU1ZHRWxlbWVudCcsXG4gICdTVkdHcmFwaGljc0VsZW1lbnQnLFxuICAnU1ZHU1ZHRWxlbWVudCcsXG4gICdTVkdUaXRsZUVsZW1lbnQnLFxuICAnU1ZHQW5pbWF0ZWRTdHJpbmcnLFxuICAnU1ZHTnVtYmVyJyxcbiAgJ1NWR1N0cmluZ0xpc3QnLFxuICAnRXZlbnQnLFxuICAnQ2xvc2VFdmVudCcsXG4gICdDdXN0b21FdmVudCcsXG4gICdNZXNzYWdlRXZlbnQnLFxuICAnRXJyb3JFdmVudCcsXG4gICdIYXNoQ2hhbmdlRXZlbnQnLFxuICAnUG9wU3RhdGVFdmVudCcsXG4gICdTdG9yYWdlRXZlbnQnLFxuICAnUHJvZ3Jlc3NFdmVudCcsXG4gICdQYWdlVHJhbnNpdGlvbkV2ZW50JyxcbiAgJ1VJRXZlbnQnLFxuICAnRm9jdXNFdmVudCcsXG4gICdJbnB1dEV2ZW50JyxcbiAgJ01vdXNlRXZlbnQnLFxuICAnS2V5Ym9hcmRFdmVudCcsXG4gICdUb3VjaEV2ZW50JyxcbiAgJ0NvbXBvc2l0aW9uRXZlbnQnLFxuICAnV2hlZWxFdmVudCcsXG4gICdCYXJQcm9wJyxcbiAgJ0V4dGVybmFsJyxcbiAgJ0xvY2F0aW9uJyxcbiAgJ0hpc3RvcnknLFxuICAnU2NyZWVuJyxcbiAgJ1BlcmZvcm1hbmNlJyxcbiAgJ05hdmlnYXRvcicsXG4gICdQbHVnaW5BcnJheScsXG4gICdNaW1lVHlwZUFycmF5JyxcbiAgJ1BsdWdpbicsXG4gICdNaW1lVHlwZScsXG4gICdGaWxlUmVhZGVyJyxcbiAgJ0Jsb2InLFxuICAnRmlsZScsXG4gICdGaWxlTGlzdCcsXG4gICdWYWxpZGl0eVN0YXRlJyxcbiAgJ0RPTVBhcnNlcicsXG4gICdYTUxTZXJpYWxpemVyJyxcbiAgJ0Zvcm1EYXRhJyxcbiAgJ1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQnLFxuICAnWE1MSHR0cFJlcXVlc3RVcGxvYWQnLFxuICAnWE1MSHR0cFJlcXVlc3QnLFxuICAnV2ViU29ja2V0JyxcbiAgJ05vZGVGaWx0ZXInLFxuICAnTm9kZUl0ZXJhdG9yJyxcbiAgJ1RyZWVXYWxrZXInLFxuICAnQWJzdHJhY3RSYW5nZScsXG4gICdSYW5nZScsXG4gICdTdGF0aWNSYW5nZScsXG4gICdTZWxlY3Rpb24nLFxuICAnU3RvcmFnZScsXG4gICdDdXN0b21FbGVtZW50UmVnaXN0cnknLFxuICAnU2hhZG93Um9vdCcsXG4gICdNdXRhdGlvbk9ic2VydmVyJyxcbiAgJ011dGF0aW9uUmVjb3JkJyxcbiAgJ0hlYWRlcnMnLFxuICAnQWJvcnRDb250cm9sbGVyJyxcbiAgJ0Fib3J0U2lnbmFsJyxcbl1cblxuY29uc3QgT1RIRVJfS0VZUyA9IFtcbiAgJ2FkZEV2ZW50TGlzdGVuZXInLFxuICAnYWxlcnQnLFxuICAnYXRvYicsXG4gICdibHVyJyxcbiAgJ2J0b2EnLFxuICAvKiAnY2xlYXJJbnRlcnZhbCcsICovXG4gIC8qICdjbGVhclRpbWVvdXQnLCAqL1xuICAnY2xvc2UnLFxuICAnY29uZmlybScsXG4gIC8qICdjb25zb2xlJywgKi9cbiAgJ2NyZWF0ZVBvcHVwJyxcbiAgJ2Rpc3BhdGNoRXZlbnQnLFxuICAnZG9jdW1lbnQnLFxuICAnZm9jdXMnLFxuICAnZnJhbWVzJyxcbiAgJ2dldENvbXB1dGVkU3R5bGUnLFxuICAnaGlzdG9yeScsXG4gICdpbm5lckhlaWdodCcsXG4gICdpbm5lcldpZHRoJyxcbiAgJ2xlbmd0aCcsXG4gICdsb2NhdGlvbicsXG4gICdtYXRjaE1lZGlhJyxcbiAgJ21vdmVCeScsXG4gICdtb3ZlVG8nLFxuICAnbmFtZScsXG4gICduYXZpZ2F0b3InLFxuICAnb3BlbicsXG4gICdvdXRlckhlaWdodCcsXG4gICdvdXRlcldpZHRoJyxcbiAgJ3BhZ2VYT2Zmc2V0JyxcbiAgJ3BhZ2VZT2Zmc2V0JyxcbiAgJ3BhcmVudCcsXG4gICdwb3N0TWVzc2FnZScsXG4gICdwcmludCcsXG4gICdwcm9tcHQnLFxuICAncmVtb3ZlRXZlbnRMaXN0ZW5lcicsXG4gICdyZXNpemVCeScsXG4gICdyZXNpemVUbycsXG4gICdzY3JlZW4nLFxuICAnc2NyZWVuTGVmdCcsXG4gICdzY3JlZW5Ub3AnLFxuICAnc2NyZWVuWCcsXG4gICdzY3JlZW5ZJyxcbiAgJ3Njcm9sbCcsXG4gICdzY3JvbGxCeScsXG4gICdzY3JvbGxMZWZ0JyxcbiAgJ3Njcm9sbFRvJyxcbiAgJ3Njcm9sbFRvcCcsXG4gICdzY3JvbGxYJyxcbiAgJ3Njcm9sbFknLFxuICAnc2VsZicsXG4gIC8qICdzZXRJbnRlcnZhbCcsICovXG4gIC8qICdzZXRUaW1lb3V0JywgKi9cbiAgJ3N0b3AnLFxuICAvKiAndG9TdHJpbmcnLCAqL1xuICAndG9wJyxcbiAgJ3dpbmRvdycsXG5dXG5cbmV4cG9ydCBjb25zdCBLRVlTID0gTElWSU5HX0tFWVMuY29uY2F0KE9USEVSX0tFWVMpXG4iLCJpbXBvcnQgeyBpbXBvcnRNb2R1bGUgfSBmcm9tICdsb2NhbC1wa2cnXG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50LCBKU0RPTU9wdGlvbnMgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IEtFWVMgfSBmcm9tICcuL2pzZG9tLWtleXMnXG5cbmV4cG9ydCBkZWZhdWx0IDxFbnZpcm9ubWVudD4oe1xuICBuYW1lOiAnanNkb20nLFxuICBhc3luYyBzZXR1cChnbG9iYWwsIHsganNkb20gPSB7fSB9KSB7XG4gICAgY29uc3Qge1xuICAgICAgQ29va2llSmFyLFxuICAgICAgSlNET00sXG4gICAgICBSZXNvdXJjZUxvYWRlcixcbiAgICAgIFZpcnR1YWxDb25zb2xlLFxuICAgIH0gPSBhd2FpdCBpbXBvcnRNb2R1bGUoJ2pzZG9tJykgYXMgdHlwZW9mIGltcG9ydCgnanNkb20nKVxuICAgIGNvbnN0IHtcbiAgICAgIGh0bWwgPSAnPCFET0NUWVBFIGh0bWw+JyxcbiAgICAgIHVzZXJBZ2VudCxcbiAgICAgIHVybCA9ICdodHRwOi8vbG9jYWxob3N0OjMwMDAnLFxuICAgICAgY29udGVudFR5cGUgPSAndGV4dC9odG1sJyxcbiAgICAgIHByZXRlbmRUb0JlVmlzdWFsID0gdHJ1ZSxcbiAgICAgIGluY2x1ZGVOb2RlTG9jYXRpb25zID0gZmFsc2UsXG4gICAgICBydW5TY3JpcHRzID0gJ2Rhbmdlcm91c2x5JyxcbiAgICAgIHJlc291cmNlcyxcbiAgICAgIGNvbnNvbGUgPSBmYWxzZSxcbiAgICAgIGNvb2tpZUphciA9IGZhbHNlLFxuICAgICAgLi4ucmVzdE9wdGlvbnNcbiAgICB9ID0ganNkb20gYXMgSlNET01PcHRpb25zXG4gICAgY29uc3QgZG9tID0gbmV3IEpTRE9NKFxuICAgICAgaHRtbCxcbiAgICAgIHtcbiAgICAgICAgcHJldGVuZFRvQmVWaXN1YWwsXG4gICAgICAgIHJlc291cmNlczogcmVzb3VyY2VzID8/ICh1c2VyQWdlbnQgPyBuZXcgUmVzb3VyY2VMb2FkZXIoeyB1c2VyQWdlbnQgfSkgOiB1bmRlZmluZWQpLFxuICAgICAgICBydW5TY3JpcHRzLFxuICAgICAgICB1cmwsXG4gICAgICAgIHZpcnR1YWxDb25zb2xlOiBjb25zb2xlICYmIGdsb2JhbC5jb25zb2xlID8gbmV3IFZpcnR1YWxDb25zb2xlKCkuc2VuZFRvKGdsb2JhbC5jb25zb2xlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgY29va2llSmFyOiBjb29raWVKYXIgPyBuZXcgQ29va2llSmFyKCkgOiB1bmRlZmluZWQsXG4gICAgICAgIGluY2x1ZGVOb2RlTG9jYXRpb25zLFxuICAgICAgICBjb250ZW50VHlwZSxcbiAgICAgICAgdXNlckFnZW50LFxuICAgICAgICAuLi5yZXN0T3B0aW9ucyxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgY29uc3Qga2V5cyA9IEtFWVMuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGRvbS53aW5kb3cpKVxuICAgICAgLmZpbHRlcihrID0+ICFrLnN0YXJ0c1dpdGgoJ18nKSlcbiAgICAgIC5maWx0ZXIoayA9PiAhKGsgaW4gZ2xvYmFsKSlcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9iYWwsIGtleSwge1xuICAgICAgICBnZXQoKSB7IHJldHVybiBkb20ud2luZG93W2tleV0gfSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBnbG9iYWwud2luZG93ID0gZ2xvYmFsXG5cbiAgICByZXR1cm4ge1xuICAgICAgdGVhcmRvd24oZ2xvYmFsKSB7XG4gICAgICAgIGtleXMuZm9yRWFjaChrZXkgPT4gZGVsZXRlIGdsb2JhbFtrZXldKVxuICAgICAgfSxcbiAgICB9XG4gIH0sXG59KVxuIiwiaW1wb3J0IHsgaW1wb3J0TW9kdWxlIH0gZnJvbSAnbG9jYWwtcGtnJ1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgS0VZUyB9IGZyb20gJy4vanNkb20ta2V5cydcblxuZXhwb3J0IGRlZmF1bHQgPEVudmlyb25tZW50Pih7XG4gIG5hbWU6ICdoYXBweS1kb20nLFxuICBhc3luYyBzZXR1cChnbG9iYWwpIHtcbiAgICBjb25zdCB7IFdpbmRvdyB9ID0gYXdhaXQgaW1wb3J0TW9kdWxlKCdoYXBweS1kb20nKSBhcyB0eXBlb2YgaW1wb3J0KCdoYXBweS1kb20nKVxuICAgIGNvbnN0IHdpbjogYW55ID0gbmV3IFdpbmRvdygpXG5cbiAgICBjb25zdCBrZXlzID0gS0VZUy5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luKSlcbiAgICAgIC5maWx0ZXIoayA9PiAhay5zdGFydHNXaXRoKCdfJykpXG4gICAgICAuZmlsdGVyKGsgPT4gIShrIGluIGdsb2JhbCkpXG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsLCBrZXksIHtcbiAgICAgICAgZ2V0KCkgeyByZXR1cm4gd2luW2tleV0gfSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBnbG9iYWwud2luZG93ID0gZ2xvYmFsXG5cbiAgICByZXR1cm4ge1xuICAgICAgdGVhcmRvd24oZ2xvYmFsKSB7XG4gICAgICAgIHdpbi5oYXBweURPTS5jYW5jZWxBc3luYygpXG4gICAgICAgIGtleXMuZm9yRWFjaChrZXkgPT4gZGVsZXRlIGdsb2JhbFtrZXldKVxuICAgICAgfSxcbiAgICB9XG4gIH0sXG59KVxuIiwiaW1wb3J0IG5vZGUgZnJvbSAnLi9ub2RlJ1xuaW1wb3J0IGpzZG9tIGZyb20gJy4vanNkb20nXG5pbXBvcnQgaGFwcHkgZnJvbSAnLi9oYXBweS1kb20nXG5cbmV4cG9ydCBjb25zdCBlbnZpcm9ubWVudHMgPSB7XG4gIG5vZGUsXG4gIGpzZG9tLFxuICAnaGFwcHktZG9tJzogaGFwcHksXG59XG4iLCIoZnVuY3Rpb24oKSB7XG5cdChmdW5jdGlvbihjaGFpU3Vic2V0KSB7XG5cdFx0aWYgKHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzID0gY2hhaVN1YnNldDtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuXHRcdFx0cmV0dXJuIGRlZmluZShmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIGNoYWlTdWJzZXQ7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGNoYWkudXNlKGNoYWlTdWJzZXQpO1xuXHRcdH1cblx0fSkoZnVuY3Rpb24oY2hhaSwgdXRpbHMpIHtcblx0XHR2YXIgQXNzZXJ0aW9uID0gY2hhaS5Bc3NlcnRpb247XG5cdFx0dmFyIGFzc2VydGlvblByb3RvdHlwZSA9IEFzc2VydGlvbi5wcm90b3R5cGU7XG5cblx0XHRBc3NlcnRpb24uYWRkTWV0aG9kKCdjb250YWluU3Vic2V0JywgZnVuY3Rpb24gKGV4cGVjdGVkKSB7XG5cdFx0XHR2YXIgYWN0dWFsID0gdXRpbHMuZmxhZyh0aGlzLCAnb2JqZWN0Jyk7XG5cdFx0XHR2YXIgc2hvd0RpZmYgPSBjaGFpLmNvbmZpZy5zaG93RGlmZjtcblxuXHRcdFx0YXNzZXJ0aW9uUHJvdG90eXBlLmFzc2VydC5jYWxsKHRoaXMsXG5cdFx0XHRcdGNvbXBhcmUoZXhwZWN0ZWQsIGFjdHVhbCksXG5cdFx0XHRcdCdleHBlY3RlZCAje2FjdH0gdG8gY29udGFpbiBzdWJzZXQgI3tleHB9Jyxcblx0XHRcdFx0J2V4cGVjdGVkICN7YWN0fSB0byBub3QgY29udGFpbiBzdWJzZXQgI3tleHB9Jyxcblx0XHRcdFx0ZXhwZWN0ZWQsXG5cdFx0XHRcdGFjdHVhbCxcblx0XHRcdFx0c2hvd0RpZmZcblx0XHRcdCk7XG5cdFx0fSk7XG5cblx0XHRjaGFpLmFzc2VydC5jb250YWluU3Vic2V0ID0gZnVuY3Rpb24odmFsLCBleHAsIG1zZykge1xuXHRcdFx0bmV3IGNoYWkuQXNzZXJ0aW9uKHZhbCwgbXNnKS50by5iZS5jb250YWluU3Vic2V0KGV4cCk7XG5cdFx0fTtcblxuXHRcdGZ1bmN0aW9uIGNvbXBhcmUoZXhwZWN0ZWQsIGFjdHVhbCkge1xuXHRcdFx0aWYgKGV4cGVjdGVkID09PSBhY3R1YWwpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAodHlwZW9mKGFjdHVhbCkgIT09IHR5cGVvZihleHBlY3RlZCkpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHR5cGVvZihleHBlY3RlZCkgIT09ICdvYmplY3QnIHx8IGV4cGVjdGVkID09PSBudWxsKSB7XG5cdFx0XHRcdHJldHVybiBleHBlY3RlZCA9PT0gYWN0dWFsO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCEhZXhwZWN0ZWQgJiYgIWFjdHVhbCkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGV4cGVjdGVkKSkge1xuXHRcdFx0XHRpZiAodHlwZW9mKGFjdHVhbC5sZW5ndGgpICE9PSAnbnVtYmVyJykge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgYWEgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhY3R1YWwpO1xuXHRcdFx0XHRyZXR1cm4gZXhwZWN0ZWQuZXZlcnkoZnVuY3Rpb24gKGV4cCkge1xuXHRcdFx0XHRcdHJldHVybiBhYS5zb21lKGZ1bmN0aW9uIChhY3QpIHtcblx0XHRcdFx0XHRcdHJldHVybiBjb21wYXJlKGV4cCwgYWN0KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChleHBlY3RlZCBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRcdFx0aWYgKGFjdHVhbCBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRcdFx0XHRyZXR1cm4gZXhwZWN0ZWQuZ2V0VGltZSgpID09PSBhY3R1YWwuZ2V0VGltZSgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gT2JqZWN0LmtleXMoZXhwZWN0ZWQpLmV2ZXJ5KGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdFx0dmFyIGVvID0gZXhwZWN0ZWRba2V5XTtcblx0XHRcdFx0dmFyIGFvID0gYWN0dWFsW2tleV07XG5cdFx0XHRcdGlmICh0eXBlb2YoZW8pID09PSAnb2JqZWN0JyAmJiBlbyAhPT0gbnVsbCAmJiBhbyAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdHJldHVybiBjb21wYXJlKGVvLCBhbyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHR5cGVvZihlbykgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRyZXR1cm4gZW8oYW8pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhbyA9PT0gZW87XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0pO1xuXG59KS5jYWxsKHRoaXMpO1xuXG4iLCJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJ1xuaW1wb3J0IHR5cGUgTWFnaWNTdHJpbmcgZnJvbSAnbWFnaWMtc3RyaW5nJ1xuaW1wb3J0IHsgcnBjIH0gZnJvbSAnLi4vLi4vLi4vcnVudGltZS9ycGMnXG5pbXBvcnQgeyBnZXRPcmlnaW5hbFBvcywgcG9zVG9OdW1iZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zb3VyY2UtbWFwJ1xuXG5leHBvcnQgdHlwZSBJbmxpbmVTbmFwc2hvdCA9IHtcbiAgc25hcHNob3Q6IHN0cmluZ1xuICBmaWxlOiBzdHJpbmdcbiAgbGluZTogbnVtYmVyXG4gIGNvbHVtbjogbnVtYmVyXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYXZlSW5saW5lU25hcHNob3RzKFxuICBzbmFwc2hvdHM6IEFycmF5PElubGluZVNuYXBzaG90Pixcbikge1xuICBjb25zdCBNYWdpY1N0cmluZyA9IChhd2FpdCBpbXBvcnQoJ21hZ2ljLXN0cmluZycpKS5kZWZhdWx0XG4gIGNvbnN0IGZpbGVzID0gbmV3IFNldChzbmFwc2hvdHMubWFwKGkgPT4gaS5maWxlKSlcbiAgYXdhaXQgUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShmaWxlcykubWFwKGFzeW5jKGZpbGUpID0+IHtcbiAgICBjb25zdCBtYXAgPSBhd2FpdCBycGMoKS5nZXRTb3VyY2VNYXAoZmlsZSlcbiAgICBjb25zdCBzbmFwcyA9IHNuYXBzaG90cy5maWx0ZXIoaSA9PiBpLmZpbGUgPT09IGZpbGUpXG4gICAgY29uc3QgY29kZSA9IGF3YWl0IGZzLnJlYWRGaWxlKGZpbGUsICd1dGY4JylcbiAgICBjb25zdCBzID0gbmV3IE1hZ2ljU3RyaW5nKGNvZGUpXG5cbiAgICBmb3IgKGNvbnN0IHNuYXAgb2Ygc25hcHMpIHtcbiAgICAgIGNvbnN0IHBvcyA9IGF3YWl0IGdldE9yaWdpbmFsUG9zKG1hcCwgc25hcClcbiAgICAgIGNvbnN0IGluZGV4ID0gcG9zVG9OdW1iZXIoY29kZSwgcG9zISlcbiAgICAgIHJlcGxhY2VJbmxpbmVTbmFwKGNvZGUsIHMsIGluZGV4LCBzbmFwLnNuYXBzaG90KSAvLyBUT0RPOiBzdXBwb3J0IGluZGVudDogJyAnLnJlcGVhdCg0KSlcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IHMudG9TdHJpbmcoKVxuICAgIGlmICh0cmFuc2Zvcm1lZCAhPT0gY29kZSlcbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShmaWxlLCB0cmFuc2Zvcm1lZCwgJ3V0Zi04JylcbiAgfSkpXG59XG5cbmNvbnN0IHN0YXJ0T2JqZWN0UmVnZXggPSAvKD86dG9NYXRjaElubGluZVNuYXBzaG90fHRvVGhyb3dFcnJvck1hdGNoaW5nSW5saW5lU25hcHNob3QpXFxzKlxcKFxccyooeykvbVxuXG5mdW5jdGlvbiBnZXRFbmRJbmRleChjb2RlOiBzdHJpbmcpIHtcbiAgbGV0IGNoYXJJbmRleCA9IC0xXG4gIGxldCBpblN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGwgLy9cbiAgbGV0IHN0YXJ0ZWRCcmFjZXJzID0gMFxuICBsZXQgZW5kZWRCcmFjZXJzID0gMFxuICBsZXQgYmVmb3JlQ2hhcjogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgd2hpbGUgKGNoYXJJbmRleCA8PSBjb2RlLmxlbmd0aCkge1xuICAgIGJlZm9yZUNoYXIgPSBjb2RlW2NoYXJJbmRleF1cbiAgICBjaGFySW5kZXgrK1xuICAgIGNvbnN0IGNoYXIgPSBjb2RlW2NoYXJJbmRleF1cblxuICAgIGNvbnN0IGlzQ2hhclN0cmluZyA9IGNoYXIgPT09ICdcIicgfHwgY2hhciA9PT0gJ1xcJycgfHwgY2hhciA9PT0gJ2AnXG5cbiAgICBpZiAoaXNDaGFyU3RyaW5nICYmIGJlZm9yZUNoYXIgIT09ICdcXFxcJylcbiAgICAgIGluU3RyaW5nID0gaW5TdHJpbmcgPT09IGNoYXIgPyBudWxsIDogY2hhclxuXG4gICAgaWYgKCFpblN0cmluZykge1xuICAgICAgaWYgKGNoYXIgPT09ICcoJylcbiAgICAgICAgc3RhcnRlZEJyYWNlcnMrK1xuICAgICAgaWYgKGNoYXIgPT09ICcpJylcbiAgICAgICAgZW5kZWRCcmFjZXJzKytcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRlZEJyYWNlcnMgJiYgZW5kZWRCcmFjZXJzICYmIHN0YXJ0ZWRCcmFjZXJzID09PSBlbmRlZEJyYWNlcnMpXG4gICAgICByZXR1cm4gY2hhckluZGV4XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZnVuY3Rpb24gcmVwbGFjZU9iamVjdFNuYXAoY29kZTogc3RyaW5nLCBzOiBNYWdpY1N0cmluZywgaW5kZXg6IG51bWJlciwgbmV3U25hcDogc3RyaW5nLCBpbmRlbnQgPSAnJykge1xuICBjb2RlID0gY29kZS5zbGljZShpbmRleClcbiAgY29uc3Qgc3RhcnRNYXRjaCA9IHN0YXJ0T2JqZWN0UmVnZXguZXhlYyhjb2RlKVxuICBpZiAoIXN0YXJ0TWF0Y2gpXG4gICAgcmV0dXJuIGZhbHNlXG5cbiAgY29uc3QgY2hhckluZGV4ID0gZ2V0RW5kSW5kZXgoY29kZSlcbiAgaWYgKGNoYXJJbmRleCA9PT0gbnVsbClcbiAgICByZXR1cm4gZmFsc2VcblxuICBzLmFwcGVuZExlZnQoaW5kZXggKyBjaGFySW5kZXgsIGAsICR7cHJlcGFyZVNuYXBTdHJpbmcobmV3U25hcCwgaW5kZW50KX1gKVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIHByZXBhcmVTbmFwU3RyaW5nKHNuYXA6IHN0cmluZywgaW5kZW50OiBzdHJpbmcpIHtcbiAgc25hcCA9IHNuYXAucmVwbGFjZSgvXFxcXC9nLCAnXFxcXFxcXFwnKVxuICAgIC5zcGxpdCgnXFxuJylcbiAgICAubWFwKGkgPT4gKGluZGVudCArIGkpLnRyaW1FbmQoKSlcbiAgICAuam9pbignXFxuJylcbiAgY29uc3QgaXNPbmVsaW5lID0gIXNuYXAuaW5jbHVkZXMoJ1xcbicpXG4gIHJldHVybiBpc09uZWxpbmVcbiAgICA/IGAnJHtzbmFwLnJlcGxhY2UoLycvZywgJ1xcXFxcXCcnKS50cmltKCl9J2BcbiAgICA6IGBcXGAke3NuYXAucmVwbGFjZSgvYC9nLCAnXFxcXGAnKS50cmltRW5kKCl9XFxgYFxufVxuXG5jb25zdCBzdGFydFJlZ2V4ID0gLyg/OnRvTWF0Y2hJbmxpbmVTbmFwc2hvdHx0b1Rocm93RXJyb3JNYXRjaGluZ0lubGluZVNuYXBzaG90KVxccypcXChcXHMqKFsnXCJgXFwpXSkvbVxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VJbmxpbmVTbmFwKGNvZGU6IHN0cmluZywgczogTWFnaWNTdHJpbmcsIGluZGV4OiBudW1iZXIsIG5ld1NuYXA6IHN0cmluZywgaW5kZW50ID0gJycpIHtcbiAgY29uc3Qgc3RhcnRNYXRjaCA9IHN0YXJ0UmVnZXguZXhlYyhjb2RlLnNsaWNlKGluZGV4KSlcbiAgaWYgKCFzdGFydE1hdGNoKVxuICAgIHJldHVybiByZXBsYWNlT2JqZWN0U25hcChjb2RlLCBzLCBpbmRleCwgbmV3U25hcCwgaW5kZW50KVxuXG4gIGNvbnN0IHNuYXBTdHJpbmcgPSBwcmVwYXJlU25hcFN0cmluZyhuZXdTbmFwLCBpbmRlbnQpXG5cbiAgY29uc3QgcXVvdGUgPSBzdGFydE1hdGNoWzFdXG5cbiAgY29uc3Qgc3RhcnRJbmRleCA9IGluZGV4ICsgc3RhcnRNYXRjaC5pbmRleCEgKyBzdGFydE1hdGNoWzBdLmxlbmd0aFxuXG4gIGlmIChxdW90ZSA9PT0gJyknKSB7XG4gICAgcy5hcHBlbmRSaWdodChzdGFydEluZGV4IC0gMSwgc25hcFN0cmluZylcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgY29uc3QgcXVvdGVFbmRSRSA9IG5ldyBSZWdFeHAoYCg/Ol58W15cXFxcXFxcXF0pJHtxdW90ZX1gKVxuICBjb25zdCBlbmRNYXRjaCA9IHF1b3RlRW5kUkUuZXhlYyhjb2RlLnNsaWNlKHN0YXJ0SW5kZXgpKVxuICBpZiAoIWVuZE1hdGNoKVxuICAgIHJldHVybiBmYWxzZVxuICBjb25zdCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBlbmRNYXRjaC5pbmRleCEgKyBlbmRNYXRjaFswXS5sZW5ndGhcbiAgcy5vdmVyd3JpdGUoc3RhcnRJbmRleCAtIDEsIGVuZEluZGV4LCBzbmFwU3RyaW5nKVxuXG4gIHJldHVybiB0cnVlXG59XG4iLCJcblxuXG4vKlxuICogQHZlcnNpb24gICAgMS40LjBcbiAqIEBkYXRlICAgICAgIDIwMTUtMTAtMjZcbiAqIEBzdGFiaWxpdHkgIDMgLSBTdGFibGVcbiAqIEBhdXRob3IgICAgIExhdXJpIFJvb2RlbiAoaHR0cHM6Ly9naXRodWIuY29tL2xpdGVqcy9uYXR1cmFsLWNvbXBhcmUtbGl0ZSlcbiAqIEBsaWNlbnNlICAgIE1JVCBMaWNlbnNlXG4gKi9cblxuXG52YXIgbmF0dXJhbENvbXBhcmUgPSBmdW5jdGlvbihhLCBiKSB7XG5cdHZhciBpLCBjb2RlQVxuXHQsIGNvZGVCID0gMVxuXHQsIHBvc0EgPSAwXG5cdCwgcG9zQiA9IDBcblx0LCBhbHBoYWJldCA9IFN0cmluZy5hbHBoYWJldFxuXG5cdGZ1bmN0aW9uIGdldENvZGUoc3RyLCBwb3MsIGNvZGUpIHtcblx0XHRpZiAoY29kZSkge1xuXHRcdFx0Zm9yIChpID0gcG9zOyBjb2RlID0gZ2V0Q29kZShzdHIsIGkpLCBjb2RlIDwgNzYgJiYgY29kZSA+IDY1OykgKytpO1xuXHRcdFx0cmV0dXJuICtzdHIuc2xpY2UocG9zIC0gMSwgaSlcblx0XHR9XG5cdFx0Y29kZSA9IGFscGhhYmV0ICYmIGFscGhhYmV0LmluZGV4T2Yoc3RyLmNoYXJBdChwb3MpKVxuXHRcdHJldHVybiBjb2RlID4gLTEgPyBjb2RlICsgNzYgOiAoKGNvZGUgPSBzdHIuY2hhckNvZGVBdChwb3MpIHx8IDApLCBjb2RlIDwgNDUgfHwgY29kZSA+IDEyNykgPyBjb2RlXG5cdFx0XHQ6IGNvZGUgPCA0NiA/IDY1ICAgICAgICAgICAgICAgLy8gLVxuXHRcdFx0OiBjb2RlIDwgNDggPyBjb2RlIC0gMVxuXHRcdFx0OiBjb2RlIDwgNTggPyBjb2RlICsgMTggICAgICAgIC8vIDAtOVxuXHRcdFx0OiBjb2RlIDwgNjUgPyBjb2RlIC0gMTFcblx0XHRcdDogY29kZSA8IDkxID8gY29kZSArIDExICAgICAgICAvLyBBLVpcblx0XHRcdDogY29kZSA8IDk3ID8gY29kZSAtIDM3XG5cdFx0XHQ6IGNvZGUgPCAxMjMgPyBjb2RlICsgNSAgICAgICAgLy8gYS16XG5cdFx0XHQ6IGNvZGUgLSA2M1xuXHR9XG5cblxuXHRpZiAoKGErPVwiXCIpICE9IChiKz1cIlwiKSkgZm9yICg7Y29kZUI7KSB7XG5cdFx0Y29kZUEgPSBnZXRDb2RlKGEsIHBvc0ErKylcblx0XHRjb2RlQiA9IGdldENvZGUoYiwgcG9zQisrKVxuXG5cdFx0aWYgKGNvZGVBIDwgNzYgJiYgY29kZUIgPCA3NiAmJiBjb2RlQSA+IDY2ICYmIGNvZGVCID4gNjYpIHtcblx0XHRcdGNvZGVBID0gZ2V0Q29kZShhLCBwb3NBLCBwb3NBKVxuXHRcdFx0Y29kZUIgPSBnZXRDb2RlKGIsIHBvc0IsIHBvc0EgPSBpKVxuXHRcdFx0cG9zQiA9IGlcblx0XHR9XG5cblx0XHRpZiAoY29kZUEgIT0gY29kZUIpIHJldHVybiAoY29kZUEgPCBjb2RlQikgPyAtMSA6IDFcblx0fVxuXHRyZXR1cm4gMFxufVxuXG50cnkge1xuXHRtb2R1bGUuZXhwb3J0cyA9IG5hdHVyYWxDb21wYXJlO1xufSBjYXRjaCAoZSkge1xuXHRTdHJpbmcubmF0dXJhbENvbXBhcmUgPSBuYXR1cmFsQ29tcGFyZTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaW1wb3J0IGZzLCB7IHByb21pc2VzIGFzIGZzcCB9IGZyb20gJ2ZzJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aGUnXG5pbXBvcnQgbmF0dXJhbENvbXBhcmUgZnJvbSAnbmF0dXJhbC1jb21wYXJlJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zUmVjZWl2ZWQgYXMgUHJldHR5Rm9ybWF0T3B0aW9ucyB9IGZyb20gJ3ByZXR0eS1mb3JtYXQnXG5pbXBvcnQge1xuICBmb3JtYXQgYXMgcHJldHR5Rm9ybWF0LFxufSBmcm9tICdwcmV0dHktZm9ybWF0J1xuaW1wb3J0IHR5cGUgeyBTbmFwc2hvdERhdGEsIFNuYXBzaG90VXBkYXRlU3RhdGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcydcbmltcG9ydCB7IGdldFNlcmlhbGl6ZXJzIH0gZnJvbSAnLi9wbHVnaW5zJ1xuXG4vLyBUT0RPOiByZXdyaXRlIGFuZCBjbGVhbiB1cFxuXG5leHBvcnQgY29uc3QgU05BUFNIT1RfVkVSU0lPTiA9ICcxJ1xuXG5jb25zdCB3cml0ZVNuYXBzaG90VmVyc2lvbiA9ICgpID0+IGAvLyBWaXRlc3QgU25hcHNob3QgdiR7U05BUFNIT1RfVkVSU0lPTn1gXG5cbmV4cG9ydCBjb25zdCB0ZXN0TmFtZVRvS2V5ID0gKHRlc3ROYW1lOiBzdHJpbmcsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcgPT5cbiAgYCR7dGVzdE5hbWV9ICR7Y291bnR9YFxuXG5leHBvcnQgY29uc3Qga2V5VG9UZXN0TmFtZSA9IChrZXk6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGlmICghLyBcXGQrJC8udGVzdChrZXkpKVxuICAgIHRocm93IG5ldyBFcnJvcignU25hcHNob3Qga2V5cyBtdXN0IGVuZCB3aXRoIGEgbnVtYmVyLicpXG5cbiAgcmV0dXJuIGtleS5yZXBsYWNlKC8gXFxkKyQvLCAnJylcbn1cblxuZXhwb3J0IGNvbnN0IGdldFNuYXBzaG90RGF0YSA9IChcbiAgc25hcHNob3RQYXRoOiBzdHJpbmcsXG4gIHVwZGF0ZTogU25hcHNob3RVcGRhdGVTdGF0ZSxcbik6IHtcbiAgZGF0YTogU25hcHNob3REYXRhXG4gIGRpcnR5OiBib29sZWFuXG59ID0+IHtcbiAgY29uc3QgZGF0YSA9IE9iamVjdC5jcmVhdGUobnVsbClcbiAgbGV0IHNuYXBzaG90Q29udGVudHMgPSAnJ1xuICBsZXQgZGlydHkgPSBmYWxzZVxuXG4gIGlmIChmcy5leGlzdHNTeW5jKHNuYXBzaG90UGF0aCkpIHtcbiAgICB0cnkge1xuICAgICAgc25hcHNob3RDb250ZW50cyA9IGZzLnJlYWRGaWxlU3luYyhzbmFwc2hvdFBhdGgsICd1dGY4JylcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgICAgY29uc3QgcG9wdWxhdGUgPSBuZXcgRnVuY3Rpb24oJ2V4cG9ydHMnLCBzbmFwc2hvdENvbnRlbnRzKVxuICAgICAgcG9wdWxhdGUoZGF0YSlcbiAgICB9XG4gICAgY2F0Y2gge31cbiAgfVxuXG4gIC8vIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSB2YWxpZGF0ZVNuYXBzaG90VmVyc2lvbihzbmFwc2hvdENvbnRlbnRzKVxuICBjb25zdCBpc0ludmFsaWQgPSBzbmFwc2hvdENvbnRlbnRzIC8vICYmIHZhbGlkYXRpb25SZXN1bHRcblxuICAvLyBpZiAodXBkYXRlID09PSAnbm9uZScgJiYgaXNJbnZhbGlkKVxuICAvLyAgIHRocm93IHZhbGlkYXRpb25SZXN1bHRcblxuICBpZiAoKHVwZGF0ZSA9PT0gJ2FsbCcgfHwgdXBkYXRlID09PSAnbmV3JykgJiYgaXNJbnZhbGlkKVxuICAgIGRpcnR5ID0gdHJ1ZVxuXG4gIHJldHVybiB7IGRhdGEsIGRpcnR5IH1cbn1cblxuLy8gQWRkIGV4dHJhIGxpbmUgYnJlYWtzIGF0IGJlZ2lubmluZyBhbmQgZW5kIG9mIG11bHRpbGluZSBzbmFwc2hvdFxuLy8gdG8gbWFrZSB0aGUgY29udGVudCBlYXNpZXIgdG8gcmVhZC5cbmV4cG9ydCBjb25zdCBhZGRFeHRyYUxpbmVCcmVha3MgPSAoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgc3RyaW5nLmluY2x1ZGVzKCdcXG4nKSA/IGBcXG4ke3N0cmluZ31cXG5gIDogc3RyaW5nXG5cbi8vIFJlbW92ZSBleHRyYSBsaW5lIGJyZWFrcyBhdCBiZWdpbm5pbmcgYW5kIGVuZCBvZiBtdWx0aWxpbmUgc25hcHNob3QuXG4vLyBJbnN0ZWFkIG9mIHRyaW0sIHdoaWNoIGNhbiByZW1vdmUgYWRkaXRpb25hbCBuZXdsaW5lcyBvciBzcGFjZXNcbi8vIGF0IGJlZ2lubmluZyBvciBlbmQgb2YgdGhlIGNvbnRlbnQgZnJvbSBhIGN1c3RvbSBzZXJpYWxpemVyLlxuZXhwb3J0IGNvbnN0IHJlbW92ZUV4dHJhTGluZUJyZWFrcyA9IChzdHJpbmc6IHN0cmluZyk6IHN0cmluZyA9PlxuICBzdHJpbmcubGVuZ3RoID4gMiAmJiBzdHJpbmcuc3RhcnRzV2l0aCgnXFxuJykgJiYgc3RyaW5nLmVuZHNXaXRoKCdcXG4nKVxuICAgID8gc3RyaW5nLnNsaWNlKDEsIC0xKVxuICAgIDogc3RyaW5nXG5cbi8vIGV4cG9ydCBjb25zdCByZW1vdmVMaW5lc0JlZm9yZUV4dGVybmFsTWF0Y2hlclRyYXAgPSAoc3RhY2s6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4vLyAgIGNvbnN0IGxpbmVzID0gc3RhY2suc3BsaXQoJ1xcbicpXG5cbi8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkgKz0gMSkge1xuLy8gICAgIC8vIEl0J3MgYSBmdW5jdGlvbiBuYW1lIHNwZWNpZmllZCBpbiBgcGFja2FnZXMvZXhwZWN0L3NyYy9pbmRleC50c2Bcbi8vICAgICAvLyBmb3IgZXh0ZXJuYWwgY3VzdG9tIG1hdGNoZXJzLlxuLy8gICAgIGlmIChsaW5lc1tpXS5pbmNsdWRlcygnX19FWFRFUk5BTF9NQVRDSEVSX1RSQVBfXycpKVxuLy8gICAgICAgcmV0dXJuIGxpbmVzLnNsaWNlKGkgKyAxKS5qb2luKCdcXG4nKVxuLy8gICB9XG5cbi8vICAgcmV0dXJuIHN0YWNrXG4vLyB9XG5cbmNvbnN0IGVzY2FwZVJlZ2V4ID0gdHJ1ZVxuY29uc3QgcHJpbnRGdW5jdGlvbk5hbWUgPSBmYWxzZVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplKHZhbDogdW5rbm93bixcbiAgaW5kZW50ID0gMixcbiAgZm9ybWF0T3ZlcnJpZGVzOiBQcmV0dHlGb3JtYXRPcHRpb25zID0ge30pOiBzdHJpbmcge1xuICByZXR1cm4gbm9ybWFsaXplTmV3bGluZXMoXG4gICAgcHJldHR5Rm9ybWF0KHZhbCwge1xuICAgICAgZXNjYXBlUmVnZXgsXG4gICAgICBpbmRlbnQsXG4gICAgICBwbHVnaW5zOiBnZXRTZXJpYWxpemVycygpLFxuICAgICAgcHJpbnRGdW5jdGlvbk5hbWUsXG4gICAgICAuLi5mb3JtYXRPdmVycmlkZXMsXG4gICAgfSksXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pbmlmeSh2YWw6IHVua25vd24pOiBzdHJpbmcge1xuICByZXR1cm4gcHJldHR5Rm9ybWF0KHZhbCwge1xuICAgIGVzY2FwZVJlZ2V4LFxuICAgIG1pbjogdHJ1ZSxcbiAgICBwbHVnaW5zOiBnZXRTZXJpYWxpemVycygpLFxuICAgIHByaW50RnVuY3Rpb25OYW1lLFxuICB9KVxufVxuXG4vLyBSZW1vdmUgZG91YmxlIHF1b3RlIG1hcmtzIGFuZCB1bmVzY2FwZSBkb3VibGUgcXVvdGVzIGFuZCBiYWNrc2xhc2hlcy5cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZVN0cmluZyhzdHJpbmdpZmllZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0cmluZ2lmaWVkLnNsaWNlKDEsIC0xKS5yZXBsYWNlKC9cXFxcKFwifFxcXFwpL2csICckMScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVCYWNrdGlja1N0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvYHxcXFxcfFxcJHsvZywgJ1xcXFwkJicpXG59XG5cbmZ1bmN0aW9uIHByaW50QmFja3RpY2tTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYFxcYCR7ZXNjYXBlQmFja3RpY2tTdHJpbmcoc3RyKX1cXGBgXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVEaXJlY3RvcnlFeGlzdHMoZmlsZVBhdGg6IHN0cmluZyk6IHZvaWQge1xuICB0cnkge1xuICAgIGZzLm1rZGlyU3luYyhwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIH1cbiAgY2F0Y2ggeyB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5ld2xpbmVzKHN0cmluZzogc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxyXFxufFxcci9nLCAnXFxuJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNhdmVTbmFwc2hvdEZpbGUoXG4gIHNuYXBzaG90RGF0YTogU25hcHNob3REYXRhLFxuICBzbmFwc2hvdFBhdGg6IHN0cmluZyxcbikge1xuICBjb25zdCBzbmFwc2hvdHMgPSBPYmplY3Qua2V5cyhzbmFwc2hvdERhdGEpXG4gICAgLnNvcnQobmF0dXJhbENvbXBhcmUpXG4gICAgLm1hcChcbiAgICAgIGtleSA9PiBgZXhwb3J0c1ske3ByaW50QmFja3RpY2tTdHJpbmcoa2V5KX1dID0gJHtwcmludEJhY2t0aWNrU3RyaW5nKG5vcm1hbGl6ZU5ld2xpbmVzKHNuYXBzaG90RGF0YVtrZXldKSl9O2AsXG4gICAgKVxuXG4gIGVuc3VyZURpcmVjdG9yeUV4aXN0cyhzbmFwc2hvdFBhdGgpXG4gIGF3YWl0IGZzcC53cml0ZUZpbGUoXG4gICAgc25hcHNob3RQYXRoLFxuICAgIGAke3dyaXRlU25hcHNob3RWZXJzaW9uKCl9XFxuXFxuJHtzbmFwc2hvdHMuam9pbignXFxuXFxuJyl9XFxuYCxcbiAgICAndXRmLTgnLFxuICApXG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCB0eXBlIHsgQ29uZmlnIH0gZnJvbSAnQGplc3QvdHlwZXMnXG4vLyBpbXBvcnQgeyBnZXRTdGFja1RyYWNlTGluZXMsIGdldFRvcEZyYW1lIH0gZnJvbSAnamVzdC1tZXNzYWdlLXV0aWwnXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnNSZWNlaXZlZCBhcyBQcmV0dHlGb3JtYXRPcHRpb25zIH0gZnJvbSAncHJldHR5LWZvcm1hdCdcbmltcG9ydCB0eXBlIHsgU25hcHNob3REYXRhLCBTbmFwc2hvdE1hdGNoT3B0aW9ucywgU25hcHNob3RTdGF0ZU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcydcbmltcG9ydCB7IHNsYXNoIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBwYXJzZVN0YWNrdHJhY2UgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zb3VyY2UtbWFwJ1xuaW1wb3J0IHR5cGUgeyBJbmxpbmVTbmFwc2hvdCB9IGZyb20gJy4vaW5saW5lU25hcHNob3QnXG5pbXBvcnQgeyBzYXZlSW5saW5lU25hcHNob3RzIH0gZnJvbSAnLi9pbmxpbmVTbmFwc2hvdCdcblxuaW1wb3J0IHtcbiAgYWRkRXh0cmFMaW5lQnJlYWtzLFxuICBnZXRTbmFwc2hvdERhdGEsXG4gIGtleVRvVGVzdE5hbWUsXG4gIHJlbW92ZUV4dHJhTGluZUJyZWFrcyxcbiAgc2F2ZVNuYXBzaG90RmlsZSxcbiAgc2VyaWFsaXplLFxuICB0ZXN0TmFtZVRvS2V5LFxufSBmcm9tICcuL3V0aWxzJ1xuXG50eXBlIFNuYXBzaG90UmV0dXJuT3B0aW9ucyA9IHtcbiAgYWN0dWFsOiBzdHJpbmdcbiAgY291bnQ6IG51bWJlclxuICBleHBlY3RlZD86IHN0cmluZ1xuICBrZXk6IHN0cmluZ1xuICBwYXNzOiBib29sZWFuXG59XG5cbnR5cGUgU2F2ZVN0YXR1cyA9IHtcbiAgZGVsZXRlZDogYm9vbGVhblxuICBzYXZlZDogYm9vbGVhblxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbmFwc2hvdFN0YXRlIHtcbiAgcHJpdmF0ZSBfY291bnRlcnM6IE1hcDxzdHJpbmcsIG51bWJlcj5cbiAgcHJpdmF0ZSBfZGlydHk6IGJvb2xlYW5cbiAgcHJpdmF0ZSBfdXBkYXRlU25hcHNob3Q6IENvbmZpZy5TbmFwc2hvdFVwZGF0ZVN0YXRlXG4gIHByaXZhdGUgX3NuYXBzaG90RGF0YTogU25hcHNob3REYXRhXG4gIHByaXZhdGUgX2luaXRpYWxEYXRhOiBTbmFwc2hvdERhdGFcbiAgcHJpdmF0ZSBfc25hcHNob3RQYXRoOiBzdHJpbmdcbiAgcHJpdmF0ZSBfaW5saW5lU25hcHNob3RzOiBBcnJheTxJbmxpbmVTbmFwc2hvdD5cbiAgcHJpdmF0ZSBfdW5jaGVja2VkS2V5czogU2V0PHN0cmluZz5cbiAgcHJpdmF0ZSBfc25hcHNob3RGb3JtYXQ6IFByZXR0eUZvcm1hdE9wdGlvbnNcblxuICBhZGRlZDogbnVtYmVyXG4gIGV4cGFuZDogYm9vbGVhblxuICBtYXRjaGVkOiBudW1iZXJcbiAgdW5tYXRjaGVkOiBudW1iZXJcbiAgdXBkYXRlZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3Ioc25hcHNob3RQYXRoOiBzdHJpbmcsIG9wdGlvbnM6IFNuYXBzaG90U3RhdGVPcHRpb25zKSB7XG4gICAgdGhpcy5fc25hcHNob3RQYXRoID0gc25hcHNob3RQYXRoXG4gICAgY29uc3QgeyBkYXRhLCBkaXJ0eSB9ID0gZ2V0U25hcHNob3REYXRhKFxuICAgICAgdGhpcy5fc25hcHNob3RQYXRoLFxuICAgICAgb3B0aW9ucy51cGRhdGVTbmFwc2hvdCxcbiAgICApXG4gICAgdGhpcy5faW5pdGlhbERhdGEgPSBkYXRhXG4gICAgdGhpcy5fc25hcHNob3REYXRhID0gZGF0YVxuICAgIHRoaXMuX2RpcnR5ID0gZGlydHlcbiAgICB0aGlzLl9pbmxpbmVTbmFwc2hvdHMgPSBbXVxuICAgIHRoaXMuX3VuY2hlY2tlZEtleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKHRoaXMuX3NuYXBzaG90RGF0YSkpXG4gICAgdGhpcy5fY291bnRlcnMgPSBuZXcgTWFwKClcbiAgICB0aGlzLmV4cGFuZCA9IG9wdGlvbnMuZXhwYW5kIHx8IGZhbHNlXG4gICAgdGhpcy5hZGRlZCA9IDBcbiAgICB0aGlzLm1hdGNoZWQgPSAwXG4gICAgdGhpcy51bm1hdGNoZWQgPSAwXG4gICAgdGhpcy5fdXBkYXRlU25hcHNob3QgPSBvcHRpb25zLnVwZGF0ZVNuYXBzaG90XG4gICAgdGhpcy51cGRhdGVkID0gMFxuICAgIHRoaXMuX3NuYXBzaG90Rm9ybWF0ID0ge1xuICAgICAgcHJpbnRCYXNpY1Byb3RvdHlwZTogZmFsc2UsXG4gICAgICAuLi5vcHRpb25zLnNuYXBzaG90Rm9ybWF0LFxuICAgIH1cbiAgfVxuXG4gIG1hcmtTbmFwc2hvdHNBc0NoZWNrZWRGb3JUZXN0KHRlc3ROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl91bmNoZWNrZWRLZXlzLmZvckVhY2goKHVuY2hlY2tlZEtleSkgPT4ge1xuICAgICAgaWYgKGtleVRvVGVzdE5hbWUodW5jaGVja2VkS2V5KSA9PT0gdGVzdE5hbWUpXG4gICAgICAgIHRoaXMuX3VuY2hlY2tlZEtleXMuZGVsZXRlKHVuY2hlY2tlZEtleSlcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBfYWRkU25hcHNob3QoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgcmVjZWl2ZWRTZXJpYWxpemVkOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge2lzSW5saW5lOiBib29sZWFuOyBlcnJvcj86IEVycm9yfSxcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5fZGlydHkgPSB0cnVlXG4gICAgaWYgKG9wdGlvbnMuaXNJbmxpbmUpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gb3B0aW9ucy5lcnJvciB8fCBuZXcgRXJyb3IoJ1Vua25vd24gZXJyb3InKVxuICAgICAgY29uc3Qgc3RhY2tzID0gcGFyc2VTdGFja3RyYWNlKGVycm9yKVxuICAgICAgc3RhY2tzLmZvckVhY2goaSA9PiBpLmZpbGUgPSBzbGFzaChpLmZpbGUpKVxuICAgICAgY29uc3Qgc3RhY2sgPSBzdGFja3MuZmluZChpID0+IHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18uY3R4LmZpbGVzLmluY2x1ZGVzKGkuZmlsZSkpXG4gICAgICBpZiAoIXN0YWNrKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnVml0ZXN0OiBDb3VsZG5cXCd0IGluZmVyIHN0YWNrIGZyYW1lIGZvciBpbmxpbmUgc25hcHNob3QuJyxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgdGhpcy5faW5saW5lU25hcHNob3RzLnB1c2goe1xuICAgICAgICBzbmFwc2hvdDogcmVjZWl2ZWRTZXJpYWxpemVkLFxuICAgICAgICAuLi5zdGFjayxcbiAgICAgIH0pXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fc25hcHNob3REYXRhW2tleV0gPSByZWNlaXZlZFNlcmlhbGl6ZWRcbiAgICB9XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLl9zbmFwc2hvdERhdGEgPSB0aGlzLl9pbml0aWFsRGF0YVxuICAgIC8vIHRoaXMuX2lubGluZVNuYXBzaG90cyA9IFtdXG4gICAgdGhpcy5fY291bnRlcnMgPSBuZXcgTWFwKClcbiAgICB0aGlzLmFkZGVkID0gMFxuICAgIHRoaXMubWF0Y2hlZCA9IDBcbiAgICB0aGlzLnVubWF0Y2hlZCA9IDBcbiAgICB0aGlzLnVwZGF0ZWQgPSAwXG4gIH1cblxuICBhc3luYyBzYXZlKCk6IFByb21pc2U8U2F2ZVN0YXR1cz4ge1xuICAgIGNvbnN0IGhhc0V4dGVybmFsU25hcHNob3RzID0gT2JqZWN0LmtleXModGhpcy5fc25hcHNob3REYXRhKS5sZW5ndGhcbiAgICBjb25zdCBoYXNJbmxpbmVTbmFwc2hvdHMgPSB0aGlzLl9pbmxpbmVTbmFwc2hvdHMubGVuZ3RoXG4gICAgY29uc3QgaXNFbXB0eSA9ICFoYXNFeHRlcm5hbFNuYXBzaG90cyAmJiAhaGFzSW5saW5lU25hcHNob3RzXG5cbiAgICBjb25zdCBzdGF0dXM6IFNhdmVTdGF0dXMgPSB7XG4gICAgICBkZWxldGVkOiBmYWxzZSxcbiAgICAgIHNhdmVkOiBmYWxzZSxcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMuX2RpcnR5IHx8IHRoaXMuX3VuY2hlY2tlZEtleXMuc2l6ZSkgJiYgIWlzRW1wdHkpIHtcbiAgICAgIGlmIChoYXNFeHRlcm5hbFNuYXBzaG90cylcbiAgICAgICAgYXdhaXQgc2F2ZVNuYXBzaG90RmlsZSh0aGlzLl9zbmFwc2hvdERhdGEsIHRoaXMuX3NuYXBzaG90UGF0aClcbiAgICAgIGlmIChoYXNJbmxpbmVTbmFwc2hvdHMpXG4gICAgICAgIGF3YWl0IHNhdmVJbmxpbmVTbmFwc2hvdHModGhpcy5faW5saW5lU25hcHNob3RzKVxuXG4gICAgICBzdGF0dXMuc2F2ZWQgPSB0cnVlXG4gICAgfVxuICAgIGVsc2UgaWYgKCFoYXNFeHRlcm5hbFNuYXBzaG90cyAmJiBmcy5leGlzdHNTeW5jKHRoaXMuX3NuYXBzaG90UGF0aCkpIHtcbiAgICAgIGlmICh0aGlzLl91cGRhdGVTbmFwc2hvdCA9PT0gJ2FsbCcpXG4gICAgICAgIGZzLnVubGlua1N5bmModGhpcy5fc25hcHNob3RQYXRoKVxuXG4gICAgICBzdGF0dXMuZGVsZXRlZCA9IHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdHVzXG4gIH1cblxuICBnZXRVbmNoZWNrZWRDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl91bmNoZWNrZWRLZXlzLnNpemUgfHwgMFxuICB9XG5cbiAgZ2V0VW5jaGVja2VkS2V5cygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl91bmNoZWNrZWRLZXlzKVxuICB9XG5cbiAgcmVtb3ZlVW5jaGVja2VkS2V5cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdXBkYXRlU25hcHNob3QgPT09ICdhbGwnICYmIHRoaXMuX3VuY2hlY2tlZEtleXMuc2l6ZSkge1xuICAgICAgdGhpcy5fZGlydHkgPSB0cnVlXG4gICAgICB0aGlzLl91bmNoZWNrZWRLZXlzLmZvckVhY2goa2V5ID0+IGRlbGV0ZSB0aGlzLl9zbmFwc2hvdERhdGFba2V5XSlcbiAgICAgIHRoaXMuX3VuY2hlY2tlZEtleXMuY2xlYXIoKVxuICAgIH1cbiAgfVxuXG4gIG1hdGNoKHtcbiAgICB0ZXN0TmFtZSxcbiAgICByZWNlaXZlZCxcbiAgICBrZXksXG4gICAgaW5saW5lU25hcHNob3QsXG4gICAgaXNJbmxpbmUsXG4gICAgZXJyb3IsXG4gIH06IFNuYXBzaG90TWF0Y2hPcHRpb25zKTogU25hcHNob3RSZXR1cm5PcHRpb25zIHtcbiAgICB0aGlzLl9jb3VudGVycy5zZXQodGVzdE5hbWUsICh0aGlzLl9jb3VudGVycy5nZXQodGVzdE5hbWUpIHx8IDApICsgMSlcbiAgICBjb25zdCBjb3VudCA9IE51bWJlcih0aGlzLl9jb3VudGVycy5nZXQodGVzdE5hbWUpKVxuXG4gICAgaWYgKCFrZXkpXG4gICAgICBrZXkgPSB0ZXN0TmFtZVRvS2V5KHRlc3ROYW1lLCBjb3VudClcblxuICAgIC8vIERvIG5vdCBtYXJrIHRoZSBzbmFwc2hvdCBhcyBcImNoZWNrZWRcIiBpZiB0aGUgc25hcHNob3QgaXMgaW5saW5lIGFuZFxuICAgIC8vIHRoZXJlJ3MgYW4gZXh0ZXJuYWwgc25hcHNob3QuIFRoaXMgd2F5IHRoZSBleHRlcm5hbCBzbmFwc2hvdCBjYW4gYmVcbiAgICAvLyByZW1vdmVkIHdpdGggYC0tdXBkYXRlU25hcHNob3RgLlxuICAgIGlmICghKGlzSW5saW5lICYmIHRoaXMuX3NuYXBzaG90RGF0YVtrZXldICE9PSB1bmRlZmluZWQpKVxuICAgICAgdGhpcy5fdW5jaGVja2VkS2V5cy5kZWxldGUoa2V5KVxuXG4gICAgY29uc3QgcmVjZWl2ZWRTZXJpYWxpemVkID0gYWRkRXh0cmFMaW5lQnJlYWtzKHNlcmlhbGl6ZShyZWNlaXZlZCwgdW5kZWZpbmVkLCB0aGlzLl9zbmFwc2hvdEZvcm1hdCkpXG4gICAgY29uc3QgZXhwZWN0ZWQgPSBpc0lubGluZSA/IGlubGluZVNuYXBzaG90IDogdGhpcy5fc25hcHNob3REYXRhW2tleV1cbiAgICBjb25zdCBwYXNzID0gZXhwZWN0ZWQ/LnRyaW0oKSA9PT0gcmVjZWl2ZWRTZXJpYWxpemVkPy50cmltKClcbiAgICBjb25zdCBoYXNTbmFwc2hvdCA9IGV4cGVjdGVkICE9PSB1bmRlZmluZWRcbiAgICBjb25zdCBzbmFwc2hvdElzUGVyc2lzdGVkID0gaXNJbmxpbmUgfHwgZnMuZXhpc3RzU3luYyh0aGlzLl9zbmFwc2hvdFBhdGgpXG5cbiAgICBpZiAocGFzcyAmJiAhaXNJbmxpbmUpIHtcbiAgICAgIC8vIEV4ZWN1dGluZyBhIHNuYXBzaG90IGZpbGUgYXMgSmF2YVNjcmlwdCBhbmQgd3JpdGluZyB0aGUgc3RyaW5ncyBiYWNrXG4gICAgICAvLyB3aGVuIG90aGVyIHNuYXBzaG90cyBoYXZlIGNoYW5nZWQgbG9zZXMgdGhlIHByb3BlciBlc2NhcGluZyBmb3Igc29tZVxuICAgICAgLy8gY2hhcmFjdGVycy4gU2luY2Ugd2UgY2hlY2sgZXZlcnkgc25hcHNob3QgaW4gZXZlcnkgdGVzdCwgdXNlIHRoZSBuZXdseVxuICAgICAgLy8gZ2VuZXJhdGVkIGZvcm1hdHRlZCBzdHJpbmcuXG4gICAgICAvLyBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IHJlbGV2YW50IHdoZW4gYSBzbmFwc2hvdCBpcyBhZGRlZCBhbmQgdGhlIGRpcnR5XG4gICAgICAvLyBmbGFnIGlzIHNldC5cbiAgICAgIHRoaXMuX3NuYXBzaG90RGF0YVtrZXldID0gcmVjZWl2ZWRTZXJpYWxpemVkXG4gICAgfVxuXG4gICAgLy8gVGhlc2UgYXJlIHRoZSBjb25kaXRpb25zIG9uIHdoZW4gdG8gd3JpdGUgc25hcHNob3RzOlxuICAgIC8vICAqIFRoZXJlJ3Mgbm8gc25hcHNob3QgZmlsZSBpbiBhIG5vbi1DSSBlbnZpcm9ubWVudC5cbiAgICAvLyAgKiBUaGVyZSBpcyBhIHNuYXBzaG90IGZpbGUgYW5kIHdlIGRlY2lkZWQgdG8gdXBkYXRlIHRoZSBzbmFwc2hvdC5cbiAgICAvLyAgKiBUaGVyZSBpcyBhIHNuYXBzaG90IGZpbGUsIGJ1dCBpdCBkb2Vzbid0IGhhdmUgdGhpcyBzbmFwaHNvdC5cbiAgICAvLyBUaGVzZSBhcmUgdGhlIGNvbmRpdGlvbnMgb24gd2hlbiBub3QgdG8gd3JpdGUgc25hcHNob3RzOlxuICAgIC8vICAqIFRoZSB1cGRhdGUgZmxhZyBpcyBzZXQgdG8gJ25vbmUnLlxuICAgIC8vICAqIFRoZXJlJ3Mgbm8gc25hcHNob3QgZmlsZSBvciBhIGZpbGUgd2l0aG91dCB0aGlzIHNuYXBzaG90IG9uIGEgQ0kgZW52aXJvbm1lbnQuXG4gICAgaWYgKFxuICAgICAgKGhhc1NuYXBzaG90ICYmIHRoaXMuX3VwZGF0ZVNuYXBzaG90ID09PSAnYWxsJylcbiAgICAgICB8fCAoKCFoYXNTbmFwc2hvdCB8fCAhc25hcHNob3RJc1BlcnNpc3RlZClcbiAgICAgICAgICYmICh0aGlzLl91cGRhdGVTbmFwc2hvdCA9PT0gJ25ldycgfHwgdGhpcy5fdXBkYXRlU25hcHNob3QgPT09ICdhbGwnKSlcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLl91cGRhdGVTbmFwc2hvdCA9PT0gJ2FsbCcpIHtcbiAgICAgICAgaWYgKCFwYXNzKSB7XG4gICAgICAgICAgaWYgKGhhc1NuYXBzaG90KVxuICAgICAgICAgICAgdGhpcy51cGRhdGVkKytcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmFkZGVkKytcblxuICAgICAgICAgIHRoaXMuX2FkZFNuYXBzaG90KGtleSwgcmVjZWl2ZWRTZXJpYWxpemVkLCB7IGVycm9yLCBpc0lubGluZSB9KVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMubWF0Y2hlZCsrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9hZGRTbmFwc2hvdChrZXksIHJlY2VpdmVkU2VyaWFsaXplZCwgeyBlcnJvciwgaXNJbmxpbmUgfSlcbiAgICAgICAgdGhpcy5hZGRlZCsrXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjdHVhbDogJycsXG4gICAgICAgIGNvdW50LFxuICAgICAgICBleHBlY3RlZDogJycsXG4gICAgICAgIGtleSxcbiAgICAgICAgcGFzczogdHJ1ZSxcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZiAoIXBhc3MpIHtcbiAgICAgICAgdGhpcy51bm1hdGNoZWQrK1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGFjdHVhbDogcmVtb3ZlRXh0cmFMaW5lQnJlYWtzKHJlY2VpdmVkU2VyaWFsaXplZCksXG4gICAgICAgICAgY291bnQsXG4gICAgICAgICAgZXhwZWN0ZWQ6XG4gICAgICAgICAgICAgZXhwZWN0ZWQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgPyByZW1vdmVFeHRyYUxpbmVCcmVha3MoZXhwZWN0ZWQpXG4gICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcGFzczogZmFsc2UsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLm1hdGNoZWQrK1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGFjdHVhbDogJycsXG4gICAgICAgICAgY291bnQsXG4gICAgICAgICAgZXhwZWN0ZWQ6ICcnLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBwYXNzOiB0cnVlLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdwYXRoZSdcbmltcG9ydCB7IGV4cGVjdCB9IGZyb20gJ2NoYWknXG5pbXBvcnQgdHlwZSB7IFNuYXBzaG90UmVzdWx0LCBUZXN0IH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBycGMgfSBmcm9tICcuLi8uLi9ydW50aW1lL3JwYydcbmltcG9ydCB7IGRlZXBNZXJnZSwgZ2V0TmFtZXMgfSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IGVxdWFscywgaXRlcmFibGVFcXVhbGl0eSwgc3Vic2V0RXF1YWxpdHkgfSBmcm9tICcuLi9jaGFpL2plc3QtdXRpbHMnXG5pbXBvcnQgU25hcHNob3RTdGF0ZSBmcm9tICcuL3BvcnQvc3RhdGUnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dCB7XG4gIGZpbGU6IHN0cmluZ1xuICB0aXRsZT86IHN0cmluZ1xuICBmdWxsVGl0bGU/OiBzdHJpbmdcbn1cblxuY29uc3QgcmVzb2x2ZVNuYXBzaG90UGF0aCA9ICh0ZXN0UGF0aDogc3RyaW5nKSA9PlxuICBwYXRoLmpvaW4oXG4gICAgcGF0aC5qb2luKHBhdGguZGlybmFtZSh0ZXN0UGF0aCksICdfX3NuYXBzaG90c19fJyksXG4gICAgYCR7cGF0aC5iYXNlbmFtZSh0ZXN0UGF0aCl9LnNuYXBgLFxuICApXG5cbmV4cG9ydCBjbGFzcyBTbmFwc2hvdENsaWVudCB7XG4gIHRlc3Q6IFRlc3QgfCB1bmRlZmluZWRcbiAgdGVzdEZpbGUgPSAnJ1xuICBzbmFwc2hvdFN0YXRlOiBTbmFwc2hvdFN0YXRlIHwgdW5kZWZpbmVkXG5cbiAgc2V0VGVzdCh0ZXN0OiBUZXN0KSB7XG4gICAgdGhpcy50ZXN0ID0gdGVzdFxuXG4gICAgaWYgKHRoaXMudGVzdEZpbGUgIT09IHRoaXMudGVzdC5maWxlIS5maWxlcGF0aCkge1xuICAgICAgaWYgKHRoaXMuc25hcHNob3RTdGF0ZSlcbiAgICAgICAgdGhpcy5zYXZlU25hcCgpXG5cbiAgICAgIHRoaXMudGVzdEZpbGUgPSB0aGlzLnRlc3QhLmZpbGUhLmZpbGVwYXRoXG4gICAgICB0aGlzLnNuYXBzaG90U3RhdGUgPSBuZXcgU25hcHNob3RTdGF0ZShcbiAgICAgICAgcmVzb2x2ZVNuYXBzaG90UGF0aCh0aGlzLnRlc3RGaWxlKSxcbiAgICAgICAgcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXyEuY29uZmlnLnNuYXBzaG90T3B0aW9ucyxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBjbGVhclRlc3QoKSB7XG4gICAgdGhpcy50ZXN0ID0gdW5kZWZpbmVkXG4gIH1cblxuICBhc3NlcnQocmVjZWl2ZWQ6IHVua25vd24sIG1lc3NhZ2U/OiBzdHJpbmcsIGlzSW5saW5lID0gZmFsc2UsIHByb3BlcnRpZXM/OiBvYmplY3QsIGlubGluZVNuYXBzaG90Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRlc3QpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NuYXBzaG90IGNhbm5vdCBiZSB1c2VkIG91dHNpZGUgb2YgdGVzdCcpXG5cbiAgICBpZiAodHlwZW9mIHByb3BlcnRpZXMgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAodHlwZW9mIHJlY2VpdmVkICE9PSAnb2JqZWN0JyB8fCAhcmVjZWl2ZWQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUmVjZWl2ZWQgdmFsdWUgbXVzdCBiZSBhbiBvYmplY3Qgd2hlbiB0aGUgbWF0Y2hlciBoYXMgcHJvcGVydGllcycpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBhc3MgPSBlcXVhbHMocmVjZWl2ZWQsIHByb3BlcnRpZXMsIFtpdGVyYWJsZUVxdWFsaXR5LCBzdWJzZXRFcXVhbGl0eV0pXG4gICAgICAgIGlmICghcGFzcylcbiAgICAgICAgICBleHBlY3QocmVjZWl2ZWQpLnRvQmUocHJvcGVydGllcylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlY2VpdmVkID0gZGVlcE1lcmdlKHJlY2VpdmVkLCBwcm9wZXJ0aWVzKVxuICAgICAgfVxuICAgICAgY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgIGVyci5tZXNzYWdlID0gJ1NuYXBzaG90IG1pc21hdGNoZWQnXG4gICAgICAgIHRocm93IGVyclxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHRlc3ROYW1lID0gW1xuICAgICAgLi4uZ2V0TmFtZXModGhpcy50ZXN0KS5zbGljZSgxKSxcbiAgICAgIC4uLihtZXNzYWdlID8gW21lc3NhZ2VdIDogW10pLFxuICAgIF0uam9pbignID4gJylcblxuICAgIGNvbnN0IHsgYWN0dWFsLCBleHBlY3RlZCwga2V5LCBwYXNzIH0gPSB0aGlzLnNuYXBzaG90U3RhdGUhLm1hdGNoKHtcbiAgICAgIHRlc3ROYW1lLFxuICAgICAgcmVjZWl2ZWQsXG4gICAgICBpc0lubGluZSxcbiAgICAgIGlubGluZVNuYXBzaG90OiBpbmxpbmVTbmFwc2hvdD8udHJpbSgpLFxuICAgIH0pXG5cbiAgICBpZiAoIXBhc3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGV4cGVjdChhY3R1YWwudHJpbSgpKS5lcXVhbHMoZXhwZWN0ZWQgPyBleHBlY3RlZC50cmltKCkgOiAnJylcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIGVycm9yLm1lc3NhZ2UgPSBgU25hcHNob3QgXFxgJHtrZXkgfHwgJ3Vua25vd24nfVxcYCBtaXNtYXRjaGVkYFxuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmVTbmFwKCkge1xuICAgIGlmICghdGhpcy50ZXN0RmlsZSB8fCAhdGhpcy5zbmFwc2hvdFN0YXRlKSByZXR1cm5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYWNrU25hcHNob3RTdGF0ZSh0aGlzLnRlc3RGaWxlLCB0aGlzLnNuYXBzaG90U3RhdGUpXG4gICAgYXdhaXQgcnBjKCkuc25hcHNob3RTYXZlZChyZXN1bHQpXG5cbiAgICB0aGlzLnRlc3RGaWxlID0gJydcbiAgICB0aGlzLnNuYXBzaG90U3RhdGUgPSB1bmRlZmluZWRcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFja1NuYXBzaG90U3RhdGUoZmlsZXBhdGg6IHN0cmluZywgc3RhdGU6IFNuYXBzaG90U3RhdGUpOiBQcm9taXNlPFNuYXBzaG90UmVzdWx0PiB7XG4gIGNvbnN0IHNuYXBzaG90OiBTbmFwc2hvdFJlc3VsdCA9IHtcbiAgICBmaWxlcGF0aCxcbiAgICBhZGRlZDogMCxcbiAgICBmaWxlRGVsZXRlZDogZmFsc2UsXG4gICAgbWF0Y2hlZDogMCxcbiAgICB1bmNoZWNrZWQ6IDAsXG4gICAgdW5jaGVja2VkS2V5czogW10sXG4gICAgdW5tYXRjaGVkOiAwLFxuICAgIHVwZGF0ZWQ6IDAsXG4gIH1cbiAgY29uc3QgdW5jaGVja2VkQ291bnQgPSBzdGF0ZS5nZXRVbmNoZWNrZWRDb3VudCgpXG4gIGNvbnN0IHVuY2hlY2tlZEtleXMgPSBzdGF0ZS5nZXRVbmNoZWNrZWRLZXlzKClcbiAgaWYgKHVuY2hlY2tlZENvdW50KVxuICAgIHN0YXRlLnJlbW92ZVVuY2hlY2tlZEtleXMoKVxuXG4gIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHN0YXRlLnNhdmUoKVxuICBzbmFwc2hvdC5maWxlRGVsZXRlZCA9IHN0YXR1cy5kZWxldGVkXG4gIHNuYXBzaG90LmFkZGVkID0gc3RhdGUuYWRkZWRcbiAgc25hcHNob3QubWF0Y2hlZCA9IHN0YXRlLm1hdGNoZWRcbiAgc25hcHNob3QudW5tYXRjaGVkID0gc3RhdGUudW5tYXRjaGVkXG4gIHNuYXBzaG90LnVwZGF0ZWQgPSBzdGF0ZS51cGRhdGVkXG4gIHNuYXBzaG90LnVuY2hlY2tlZCA9ICFzdGF0dXMuZGVsZXRlZCA/IHVuY2hlY2tlZENvdW50IDogMFxuICBzbmFwc2hvdC51bmNoZWNrZWRLZXlzID0gQXJyYXkuZnJvbSh1bmNoZWNrZWRLZXlzKVxuXG4gIHJldHVybiBzbmFwc2hvdFxufVxuIiwiaW1wb3J0IHR5cGUgeyBDaGFpUGx1Z2luIH0gZnJvbSAnLi4vY2hhaS90eXBlcydcbmltcG9ydCB7IFNuYXBzaG90Q2xpZW50IH0gZnJvbSAnLi9jbGllbnQnXG5cbmxldCBfY2xpZW50OiBTbmFwc2hvdENsaWVudFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U25hcHNob3RDbGllbnQoKTogU25hcHNob3RDbGllbnQge1xuICBpZiAoIV9jbGllbnQpXG4gICAgX2NsaWVudCA9IG5ldyBTbmFwc2hvdENsaWVudCgpXG4gIHJldHVybiBfY2xpZW50XG59XG5cbmNvbnN0IGdldEVycm9yU3RyaW5nID0gKGV4cGVjdGVkOiAoKSA9PiB2b2lkKSA9PiB7XG4gIHRyeSB7XG4gICAgZXhwZWN0ZWQoKVxuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcilcbiAgICAgIHJldHVybiBlLm1lc3NhZ2VcblxuICAgIHJldHVybiBlXG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ3NuYXBzaG90IGZ1bmN0aW9uIGRpZG5cXCd0IHRocmV3Jylcbn1cblxuZXhwb3J0IGNvbnN0IFNuYXBzaG90UGx1Z2luOiBDaGFpUGx1Z2luID0gKGNoYWksIHV0aWxzKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IG9mIFsnbWF0Y2hTbmFwc2hvdCcsICd0b01hdGNoU25hcHNob3QnXSkge1xuICAgIHV0aWxzLmFkZE1ldGhvZChcbiAgICAgIGNoYWkuQXNzZXJ0aW9uLnByb3RvdHlwZSxcbiAgICAgIGtleSxcbiAgICAgIGZ1bmN0aW9uKHRoaXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwcm9wZXJ0aWVzPzogb2JqZWN0LCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGV4cGVjdGVkID0gdXRpbHMuZmxhZyh0aGlzLCAnb2JqZWN0JylcbiAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0aWVzID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgbWVzc2FnZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBtZXNzYWdlID0gcHJvcGVydGllc1xuICAgICAgICAgIHByb3BlcnRpZXMgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBnZXRTbmFwc2hvdENsaWVudCgpLmFzc2VydChleHBlY3RlZCwgbWVzc2FnZSwgZmFsc2UsIHByb3BlcnRpZXMpXG4gICAgICB9LFxuICAgIClcbiAgfVxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5Bc3NlcnRpb24ucHJvdG90eXBlLFxuICAgICd0b01hdGNoSW5saW5lU25hcHNob3QnLFxuICAgIGZ1bmN0aW9uKHRoaXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwcm9wZXJ0aWVzPzogb2JqZWN0LCBpbmxpbmVTbmFwc2hvdD86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB1dGlscy5mbGFnKHRoaXMsICdvYmplY3QnKVxuICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0aWVzID09PSAnc3RyaW5nJykge1xuICAgICAgICBtZXNzYWdlID0gaW5saW5lU25hcHNob3RcbiAgICAgICAgaW5saW5lU25hcHNob3QgPSBwcm9wZXJ0aWVzXG4gICAgICAgIHByb3BlcnRpZXMgPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIGdldFNuYXBzaG90Q2xpZW50KCkuYXNzZXJ0KGV4cGVjdGVkLCBtZXNzYWdlLCB0cnVlLCBwcm9wZXJ0aWVzLCBpbmxpbmVTbmFwc2hvdClcbiAgICB9LFxuICApXG4gIHV0aWxzLmFkZE1ldGhvZChcbiAgICBjaGFpLkFzc2VydGlvbi5wcm90b3R5cGUsXG4gICAgJ3RvVGhyb3dFcnJvck1hdGNoaW5nU25hcHNob3QnLFxuICAgIGZ1bmN0aW9uKHRoaXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHV0aWxzLmZsYWcodGhpcywgJ29iamVjdCcpXG4gICAgICBnZXRTbmFwc2hvdENsaWVudCgpLmFzc2VydChnZXRFcnJvclN0cmluZyhleHBlY3RlZCksIG1lc3NhZ2UpXG4gICAgfSxcbiAgKVxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5Bc3NlcnRpb24ucHJvdG90eXBlLFxuICAgICd0b1Rocm93RXJyb3JNYXRjaGluZ0lubGluZVNuYXBzaG90JyxcbiAgICBmdW5jdGlvbih0aGlzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgaW5saW5lU25hcHNob3Q6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHV0aWxzLmZsYWcodGhpcywgJ29iamVjdCcpXG4gICAgICBnZXRTbmFwc2hvdENsaWVudCgpLmFzc2VydChnZXRFcnJvclN0cmluZyhleHBlY3RlZCksIG1lc3NhZ2UsIHRydWUsIHVuZGVmaW5lZCwgaW5saW5lU25hcHNob3QpXG4gICAgfSxcbiAgKVxufVxuIiwiLy8gd2UgYXJlIHVzaW5nIG9ubHkgdGhlIG9uZXMgbmVlZGVkIGJ5IEB0ZXN0aW5nLWxpYnJhcnkvamVzdC1kb21cbi8vIGlmIHlvdSBuZWVkIG1vcmUsIGp1c3QgYXNrXG5cbmltcG9ydCBjIGZyb20gJ3BpY29jb2xvcnMnXG5pbXBvcnQgdHlwZSB7IEZvcm1hdHRlciB9IGZyb20gJ3BpY29jb2xvcnMvdHlwZXMnXG5pbXBvcnQgeyBmb3JtYXQgYXMgcHJldHR5Rm9ybWF0LCBwbHVnaW5zIGFzIHByZXR0eUZvcm1hdFBsdWdpbnMgfSBmcm9tICdwcmV0dHktZm9ybWF0J1xuaW1wb3J0IHsgdW5pZmllZERpZmYgfSBmcm9tICcuLi8uLi9yZXBvcnRlcnMvcmVuZGVyZXJzL2RpZmYnXG5cbmV4cG9ydCBjb25zdCBFWFBFQ1RFRF9DT0xPUiA9IGMuZ3JlZW5cbmV4cG9ydCBjb25zdCBSRUNFSVZFRF9DT0xPUiA9IGMucmVkXG5leHBvcnQgY29uc3QgSU5WRVJURURfQ09MT1IgPSBjLmludmVyc2VcbmV4cG9ydCBjb25zdCBCT0xEX1dFSUdIVCA9IGMuYm9sZFxuZXhwb3J0IGNvbnN0IERJTV9DT0xPUiA9IGMuZGltXG5cbmNvbnN0IHtcbiAgQXN5bW1ldHJpY01hdGNoZXIsXG4gIERPTUNvbGxlY3Rpb24sXG4gIERPTUVsZW1lbnQsXG4gIEltbXV0YWJsZSxcbiAgUmVhY3RFbGVtZW50LFxuICBSZWFjdFRlc3RDb21wb25lbnQsXG59ID0gcHJldHR5Rm9ybWF0UGx1Z2luc1xuXG5jb25zdCBQTFVHSU5TID0gW1xuICBSZWFjdFRlc3RDb21wb25lbnQsXG4gIFJlYWN0RWxlbWVudCxcbiAgRE9NRWxlbWVudCxcbiAgRE9NQ29sbGVjdGlvbixcbiAgSW1tdXRhYmxlLFxuICBBc3ltbWV0cmljTWF0Y2hlcixcbl1cblxuZXhwb3J0IHR5cGUgTWF0Y2hlckhpbnRPcHRpb25zID0ge1xuICBjb21tZW50Pzogc3RyaW5nXG4gIGV4cGVjdGVkQ29sb3I/OiBGb3JtYXR0ZXJcbiAgaXNEaXJlY3RFeHBlY3RDYWxsPzogYm9vbGVhblxuICBpc05vdD86IGJvb2xlYW5cbiAgcHJvbWlzZT86IHN0cmluZ1xuICByZWNlaXZlZENvbG9yPzogRm9ybWF0dGVyXG4gIHNlY29uZEFyZ3VtZW50Pzogc3RyaW5nXG4gIHNlY29uZEFyZ3VtZW50Q29sb3I/OiBGb3JtYXR0ZXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoZXJIaW50KFxuICBtYXRjaGVyTmFtZTogc3RyaW5nLFxuICByZWNlaXZlZCA9ICdyZWNlaXZlZCcsXG4gIGV4cGVjdGVkID0gJ2V4cGVjdGVkJyxcbiAgb3B0aW9uczogTWF0Y2hlckhpbnRPcHRpb25zID0ge30sXG4pIHtcbiAgY29uc3Qge1xuICAgIGNvbW1lbnQgPSAnJyxcbiAgICBleHBlY3RlZENvbG9yID0gRVhQRUNURURfQ09MT1IsXG4gICAgaXNEaXJlY3RFeHBlY3RDYWxsID0gZmFsc2UsIC8vIHNlZW1zIHJlZHVuZGFudCB3aXRoIHJlY2VpdmVkID09PSAnJ1xuICAgIGlzTm90ID0gZmFsc2UsXG4gICAgcHJvbWlzZSA9ICcnLFxuICAgIHJlY2VpdmVkQ29sb3IgPSBSRUNFSVZFRF9DT0xPUixcbiAgICBzZWNvbmRBcmd1bWVudCA9ICcnLFxuICAgIHNlY29uZEFyZ3VtZW50Q29sb3IgPSBFWFBFQ1RFRF9DT0xPUixcbiAgfSA9IG9wdGlvbnNcbiAgbGV0IGhpbnQgPSAnJ1xuICBsZXQgZGltU3RyaW5nID0gJ2V4cGVjdCcgLy8gY29uY2F0ZW5hdGUgYWRqYWNlbnQgZGltIHN1YnN0cmluZ3NcblxuICBpZiAoIWlzRGlyZWN0RXhwZWN0Q2FsbCAmJiByZWNlaXZlZCAhPT0gJycpIHtcbiAgICBoaW50ICs9IERJTV9DT0xPUihgJHtkaW1TdHJpbmd9KGApICsgcmVjZWl2ZWRDb2xvcihyZWNlaXZlZClcbiAgICBkaW1TdHJpbmcgPSAnKSdcbiAgfVxuXG4gIGlmIChwcm9taXNlICE9PSAnJykge1xuICAgIGhpbnQgKz0gRElNX0NPTE9SKGAke2RpbVN0cmluZ30uYCkgKyBwcm9taXNlXG4gICAgZGltU3RyaW5nID0gJydcbiAgfVxuXG4gIGlmIChpc05vdCkge1xuICAgIGhpbnQgKz0gYCR7RElNX0NPTE9SKGAke2RpbVN0cmluZ30uYCl9bm90YFxuICAgIGRpbVN0cmluZyA9ICcnXG4gIH1cblxuICBpZiAobWF0Y2hlck5hbWUuaW5jbHVkZXMoJy4nKSkge1xuICAgIC8vIE9sZCBmb3JtYXQ6IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LFxuICAgIC8vIGVzcGVjaWFsbHkgd2l0aG91dCBwcm9taXNlIG9yIGlzTm90IG9wdGlvbnNcbiAgICBkaW1TdHJpbmcgKz0gbWF0Y2hlck5hbWVcbiAgfVxuICBlbHNlIHtcbiAgICAvLyBOZXcgZm9ybWF0OiBvbWl0IHBlcmlvZCBmcm9tIG1hdGNoZXJOYW1lIGFyZ1xuICAgIGhpbnQgKz0gRElNX0NPTE9SKGAke2RpbVN0cmluZ30uYCkgKyBtYXRjaGVyTmFtZVxuICAgIGRpbVN0cmluZyA9ICcnXG4gIH1cblxuICBpZiAoZXhwZWN0ZWQgPT09ICcnKSB7XG4gICAgZGltU3RyaW5nICs9ICcoKSdcbiAgfVxuICBlbHNlIHtcbiAgICBoaW50ICs9IERJTV9DT0xPUihgJHtkaW1TdHJpbmd9KGApICsgZXhwZWN0ZWRDb2xvcihleHBlY3RlZClcbiAgICBpZiAoc2Vjb25kQXJndW1lbnQpXG4gICAgICBoaW50ICs9IERJTV9DT0xPUignLCAnKSArIHNlY29uZEFyZ3VtZW50Q29sb3Ioc2Vjb25kQXJndW1lbnQpXG4gICAgZGltU3RyaW5nID0gJyknXG4gIH1cblxuICBpZiAoY29tbWVudCAhPT0gJycpXG4gICAgZGltU3RyaW5nICs9IGAgLy8gJHtjb21tZW50fWBcblxuICBpZiAoZGltU3RyaW5nICE9PSAnJylcbiAgICBoaW50ICs9IERJTV9DT0xPUihkaW1TdHJpbmcpXG5cbiAgcmV0dXJuIGhpbnRcbn1cblxuY29uc3QgU1BBQ0VfU1lNQk9MID0gJ1xcdXswMEI3fScgLy8gbWlkZGxlIGRvdFxuXG4vLyBJbnN0ZWFkIG9mIGludmVyc2UgaGlnaGxpZ2h0IHdoaWNoIG5vdyBpbXBsaWVzIGEgY2hhbmdlLFxuLy8gcmVwbGFjZSBjb21tb24gc3BhY2VzIHdpdGggbWlkZGxlIGRvdCBhdCB0aGUgZW5kIG9mIGFueSBsaW5lLlxuY29uc3QgcmVwbGFjZVRyYWlsaW5nU3BhY2VzID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICB0ZXh0LnJlcGxhY2UoL1xccyskL2dtLCBzcGFjZXMgPT4gU1BBQ0VfU1lNQk9MLnJlcGVhdChzcGFjZXMubGVuZ3RoKSlcblxuZXhwb3J0IGNvbnN0IHN0cmluZ2lmeSA9IChvYmplY3Q6IHVua25vd24sIG1heERlcHRoID0gMTApOiBzdHJpbmcgPT4ge1xuICBjb25zdCBNQVhfTEVOR1RIID0gMTAwMDBcbiAgbGV0IHJlc3VsdFxuXG4gIHRyeSB7XG4gICAgcmVzdWx0ID0gcHJldHR5Rm9ybWF0KG9iamVjdCwge1xuICAgICAgbWF4RGVwdGgsXG4gICAgICAvLyBtaW46IHRydWUsXG4gICAgICBwbHVnaW5zOiBQTFVHSU5TLFxuICAgIH0pXG4gIH1cbiAgY2F0Y2gge1xuICAgIHJlc3VsdCA9IHByZXR0eUZvcm1hdChvYmplY3QsIHtcbiAgICAgIGNhbGxUb0pTT046IGZhbHNlLFxuICAgICAgbWF4RGVwdGgsXG4gICAgICAvLyBtaW46IHRydWUsXG4gICAgICBwbHVnaW5zOiBQTFVHSU5TLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA+PSBNQVhfTEVOR1RIICYmIG1heERlcHRoID4gMVxuICAgID8gc3RyaW5naWZ5KG9iamVjdCwgTWF0aC5mbG9vcihtYXhEZXB0aCAvIDIpKVxuICAgIDogcmVzdWx0XG59XG5cbmV4cG9ydCBjb25zdCBwcmludFJlY2VpdmVkID0gKG9iamVjdDogdW5rbm93bik6IHN0cmluZyA9PlxuICBSRUNFSVZFRF9DT0xPUihyZXBsYWNlVHJhaWxpbmdTcGFjZXMoc3RyaW5naWZ5KG9iamVjdCkpKVxuZXhwb3J0IGNvbnN0IHByaW50RXhwZWN0ZWQgPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgPT5cbiAgRVhQRUNURURfQ09MT1IocmVwbGFjZVRyYWlsaW5nU3BhY2VzKHN0cmluZ2lmeSh2YWx1ZSkpKVxuXG5leHBvcnQgdHlwZSBEaWZmT3B0aW9ucyA9IHtcbiAgYUFubm90YXRpb24/OiBzdHJpbmdcbiAgYUNvbG9yPzogRm9ybWF0dGVyXG4gIGFJbmRpY2F0b3I/OiBzdHJpbmdcbiAgYkFubm90YXRpb24/OiBzdHJpbmdcbiAgYkNvbG9yPzogRm9ybWF0dGVyXG4gIGJJbmRpY2F0b3I/OiBzdHJpbmdcbiAgY2hhbmdlQ29sb3I/OiBGb3JtYXR0ZXJcbiAgY2hhbmdlTGluZVRyYWlsaW5nU3BhY2VDb2xvcj86IEZvcm1hdHRlclxuICBjb21tb25Db2xvcj86IEZvcm1hdHRlclxuICBjb21tb25JbmRpY2F0b3I/OiBzdHJpbmdcbiAgY29tbW9uTGluZVRyYWlsaW5nU3BhY2VDb2xvcj86IEZvcm1hdHRlclxuICBjb250ZXh0TGluZXM/OiBudW1iZXJcbiAgZW1wdHlGaXJzdE9yTGFzdExpbmVQbGFjZWhvbGRlcj86IHN0cmluZ1xuICBleHBhbmQ/OiBib29sZWFuXG4gIGluY2x1ZGVDaGFuZ2VDb3VudHM/OiBib29sZWFuXG4gIG9taXRBbm5vdGF0aW9uTGluZXM/OiBib29sZWFuXG4gIHBhdGNoQ29sb3I/OiBGb3JtYXR0ZXJcbiAgLy8gcHJldHR5LWZvcm1hdCB0eXBlXG4gIGNvbXBhcmVLZXlzPzogYW55XG59XG5cbi8vIFRPRE86IGRvIHNvbWV0aGluZyB3aXRoIG9wdGlvbnNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmV4cG9ydCBmdW5jdGlvbiBkaWZmKGE6IGFueSwgYjogYW55LCBvcHRpb25zPzogRGlmZk9wdGlvbnMpIHtcbiAgcmV0dXJuIHVuaWZpZWREaWZmKHN0cmluZ2lmeShhKSwgc3RyaW5naWZ5KGIpKVxufVxuIiwiaW1wb3J0IGNoYWksIHsgdXRpbCB9IGZyb20gJ2NoYWknXG5pbXBvcnQgeyBnZXRTdGF0ZSB9IGZyb20gJy4vamVzdC1leHBlY3QnXG5cbmltcG9ydCAqIGFzIG1hdGNoZXJVdGlscyBmcm9tICcuL2plc3QtbWF0Y2hlci11dGlscydcblxuaW1wb3J0IHtcbiAgZXF1YWxzLFxuICBpdGVyYWJsZUVxdWFsaXR5LFxuICBzdWJzZXRFcXVhbGl0eSxcbn0gZnJvbSAnLi9qZXN0LXV0aWxzJ1xuaW1wb3J0IHR5cGUge1xuICBDaGFpUGx1Z2luLFxuICBNYXRjaGVyU3RhdGUsXG4gIE1hdGNoZXJzT2JqZWN0LFxuICBTeW5jRXhwZWN0YXRpb25SZXN1bHQsXG59IGZyb20gJy4vdHlwZXMnXG5cbmNvbnN0IGlzQXN5bmNGdW5jdGlvbiA9IChmbjogdW5rbm93bikgPT5cbiAgdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nICYmIChmbiBhcyBhbnkpW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdBc3luY0Z1bmN0aW9uJ1xuXG5jb25zdCBnZXRNYXRjaGVyU3RhdGUgPSAoYXNzZXJ0aW9uOiBDaGFpLkFzc2VydGlvblN0YXRpYyAmIENoYWkuQXNzZXJ0aW9uKSA9PiB7XG4gIGNvbnN0IG9iaiA9IGFzc2VydGlvbi5fb2JqXG4gIGNvbnN0IGlzTm90ID0gdXRpbC5mbGFnKGFzc2VydGlvbiwgJ25lZ2F0ZScpIGFzIGJvb2xlYW5cbiAgY29uc3QgcHJvbWlzZSA9IHV0aWwuZmxhZyhhc3NlcnRpb24sICdwcm9taXNlJykgfHwgJydcbiAgY29uc3QgamVzdFV0aWxzID0ge1xuICAgIC4uLm1hdGNoZXJVdGlscyxcbiAgICBpdGVyYWJsZUVxdWFsaXR5LFxuICAgIHN1YnNldEVxdWFsaXR5LFxuICB9XG5cbiAgY29uc3QgbWF0Y2hlclN0YXRlOiBNYXRjaGVyU3RhdGUgPSB7XG4gICAgLi4uZ2V0U3RhdGUoKSxcbiAgICBpc05vdCxcbiAgICB1dGlsczogamVzdFV0aWxzLFxuICAgIHByb21pc2UsXG4gICAgZXF1YWxzLFxuICAgIC8vIG5lZWRlZCBmb3IgYnVpbHQtaW4gamVzdC1zbmFwc2hvdHMsIGJ1dCB3ZSBkb24ndCB1c2UgaXRcbiAgICBzdXBwcmVzc2VkRXJyb3JzOiBbXSxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RhdGU6IG1hdGNoZXJTdGF0ZSxcbiAgICBpc05vdCxcbiAgICBvYmosXG4gIH1cbn1cblxuY2xhc3MgSmVzdEV4dGVuZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHB1YmxpYyBhY3R1YWw/OiBhbnksIHB1YmxpYyBleHBlY3RlZD86IGFueSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gIH1cbn1cblxuZnVuY3Rpb24gSmVzdEV4dGVuZFBsdWdpbihleHBlY3RzOiBNYXRjaGVyc09iamVjdCk6IENoYWlQbHVnaW4ge1xuICByZXR1cm4gKGMsIHV0aWxzKSA9PiB7XG4gICAgT2JqZWN0LmVudHJpZXMoZXhwZWN0cykuZm9yRWFjaCgoW2V4cGVjdEFzc2VydGlvbk5hbWUsIGV4cGVjdEFzc2VydGlvbl0pID0+IHtcbiAgICAgIGZ1bmN0aW9uIGV4cGVjdFN5bmNXcmFwcGVyKHRoaXM6IENoYWkuQXNzZXJ0aW9uU3RhdGljICYgQ2hhaS5Bc3NlcnRpb24sIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIGNvbnN0IHsgc3RhdGUsIGlzTm90LCBvYmogfSA9IGdldE1hdGNoZXJTdGF0ZSh0aGlzKVxuXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYXJncyB3YW50aW5nIHR1cGxlXG4gICAgICAgIGNvbnN0IHsgcGFzcywgbWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCB9ID0gZXhwZWN0QXNzZXJ0aW9uLmNhbGwoc3RhdGUsIG9iaiwgLi4uYXJncykgYXMgU3luY0V4cGVjdGF0aW9uUmVzdWx0XG5cbiAgICAgICAgaWYgKChwYXNzICYmIGlzTm90KSB8fCAoIXBhc3MgJiYgIWlzTm90KSlcbiAgICAgICAgICB0aHJvdyBuZXcgSmVzdEV4dGVuZEVycm9yKG1lc3NhZ2UoKSwgYWN0dWFsLCBleHBlY3RlZClcbiAgICAgIH1cblxuICAgICAgYXN5bmMgZnVuY3Rpb24gZXhwZWN0QXN5bmNXcmFwcGVyKHRoaXM6IENoYWkuQXNzZXJ0aW9uU3RhdGljICYgQ2hhaS5Bc3NlcnRpb24sIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIGNvbnN0IHsgc3RhdGUsIGlzTm90LCBvYmogfSA9IGdldE1hdGNoZXJTdGF0ZSh0aGlzKVxuXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYXJncyB3YW50aW5nIHR1cGxlXG4gICAgICAgIGNvbnN0IHsgcGFzcywgbWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCB9ID0gYXdhaXQgZXhwZWN0QXNzZXJ0aW9uLmNhbGwoc3RhdGUsIG9iaiwgLi4uYXJncykgYXMgU3luY0V4cGVjdGF0aW9uUmVzdWx0XG5cbiAgICAgICAgaWYgKChwYXNzICYmIGlzTm90KSB8fCAoIXBhc3MgJiYgIWlzTm90KSlcbiAgICAgICAgICB0aHJvdyBuZXcgSmVzdEV4dGVuZEVycm9yKG1lc3NhZ2UoKSwgYWN0dWFsLCBleHBlY3RlZClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXhwZWN0QXNzZXJ0aW9uV3JhcHBlciA9IGlzQXN5bmNGdW5jdGlvbihleHBlY3RBc3NlcnRpb24pID8gZXhwZWN0QXN5bmNXcmFwcGVyIDogZXhwZWN0U3luY1dyYXBwZXJcblxuICAgICAgdXRpbHMuYWRkTWV0aG9kKGNoYWkuQXNzZXJ0aW9uLnByb3RvdHlwZSwgZXhwZWN0QXNzZXJ0aW9uTmFtZSwgZXhwZWN0QXNzZXJ0aW9uV3JhcHBlcilcbiAgICB9KVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBKZXN0RXh0ZW5kOiBDaGFpUGx1Z2luID0gKGNoYWksIHV0aWxzKSA9PiB7XG4gIHV0aWxzLmFkZE1ldGhvZChjaGFpLmV4cGVjdCwgJ2V4dGVuZCcsIChleHBlY3RzOiBNYXRjaGVyc09iamVjdCkgPT4ge1xuICAgIGNoYWkudXNlKEplc3RFeHRlbmRQbHVnaW4oZXhwZWN0cykpXG4gIH0pXG59XG4iLCJpbXBvcnQgKiBhcyBtYXRjaGVyVXRpbHMgZnJvbSAnLi9qZXN0LW1hdGNoZXItdXRpbHMnXG5cbmltcG9ydCB7IGVxdWFscywgaXNBIH0gZnJvbSAnLi9qZXN0LXV0aWxzJ1xuaW1wb3J0IHR5cGUgeyBDaGFpUGx1Z2luLCBNYXRjaGVyU3RhdGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzeW1tZXRyaWNNYXRjaGVySW50ZXJmYWNlIHtcbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiB1bmtub3duKTogYm9vbGVhblxuICB0b1N0cmluZygpOiBzdHJpbmdcbiAgZ2V0RXhwZWN0ZWRUeXBlPygpOiBzdHJpbmdcbiAgdG9Bc3ltbWV0cmljTWF0Y2hlcj8oKTogc3RyaW5nXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBc3ltbWV0cmljTWF0Y2hlcjxcbiAgVCxcbiAgU3RhdGUgZXh0ZW5kcyBNYXRjaGVyU3RhdGUgPSBNYXRjaGVyU3RhdGUsXG4+IGltcGxlbWVudHMgQXN5bW1ldHJpY01hdGNoZXJJbnRlcmZhY2Uge1xuICAkJHR5cGVvZiA9IFN5bWJvbC5mb3IoJ2plc3QuYXN5bW1ldHJpY01hdGNoZXInKVxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzYW1wbGU6IFQsIHByb3RlY3RlZCBpbnZlcnNlID0gZmFsc2UpIHt9XG5cbiAgcHJvdGVjdGVkIGdldE1hdGNoZXJDb250ZXh0KCk6IFN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXF1YWxzLFxuICAgICAgaXNOb3Q6IHRoaXMuaW52ZXJzZSxcbiAgICAgIHV0aWxzOiBtYXRjaGVyVXRpbHMsXG4gICAgfSBhcyBhbnlcbiAgfVxuXG4gIGFic3RyYWN0IGFzeW1tZXRyaWNNYXRjaChvdGhlcjogdW5rbm93bik6IGJvb2xlYW5cbiAgYWJzdHJhY3QgdG9TdHJpbmcoKTogc3RyaW5nXG4gIGdldEV4cGVjdGVkVHlwZT8oKTogc3RyaW5nXG4gIHRvQXN5bW1ldHJpY01hdGNoZXI/KCk6IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgU3RyaW5nQ29udGFpbmluZyBleHRlbmRzIEFzeW1tZXRyaWNNYXRjaGVyPHN0cmluZz4ge1xuICBjb25zdHJ1Y3RvcihzYW1wbGU6IHN0cmluZywgaW52ZXJzZSA9IGZhbHNlKSB7XG4gICAgaWYgKCFpc0EoJ1N0cmluZycsIHNhbXBsZSkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGlzIG5vdCBhIHN0cmluZycpXG5cbiAgICBzdXBlcihzYW1wbGUsIGludmVyc2UpXG4gIH1cblxuICBhc3ltbWV0cmljTWF0Y2gob3RoZXI6IHN0cmluZykge1xuICAgIGNvbnN0IHJlc3VsdCA9IGlzQSgnU3RyaW5nJywgb3RoZXIpICYmIG90aGVyLmluY2x1ZGVzKHRoaXMuc2FtcGxlKVxuXG4gICAgcmV0dXJuIHRoaXMuaW52ZXJzZSA/ICFyZXN1bHQgOiByZXN1bHRcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBgU3RyaW5nJHt0aGlzLmludmVyc2UgPyAnTm90JyA6ICcnfUNvbnRhaW5pbmdgXG4gIH1cblxuICBnZXRFeHBlY3RlZFR5cGUoKSB7XG4gICAgcmV0dXJuICdzdHJpbmcnXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFueXRoaW5nIGV4dGVuZHMgQXN5bW1ldHJpY01hdGNoZXI8dm9pZD4ge1xuICBhc3ltbWV0cmljTWF0Y2gob3RoZXI6IHVua25vd24pIHtcbiAgICByZXR1cm4gb3RoZXIgIT0gbnVsbFxuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdBbnl0aGluZydcbiAgfVxuXG4gIHRvQXN5bW1ldHJpY01hdGNoZXIoKSB7XG4gICAgcmV0dXJuICdBbnl0aGluZydcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT2JqZWN0Q29udGFpbmluZyBleHRlbmRzIEFzeW1tZXRyaWNNYXRjaGVyPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIGNvbnN0cnVjdG9yKHNhbXBsZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGludmVyc2UgPSBmYWxzZSkge1xuICAgIHN1cGVyKHNhbXBsZSwgaW52ZXJzZSlcbiAgfVxuXG4gIGdldFByb3RvdHlwZShvYmo6IG9iamVjdCkge1xuICAgIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpXG4gICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iailcblxuICAgIGlmIChvYmouY29uc3RydWN0b3IucHJvdG90eXBlID09PSBvYmopXG4gICAgICByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIG9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgfVxuXG4gIGhhc1Byb3BlcnR5KG9iajogb2JqZWN0IHwgbnVsbCwgcHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghb2JqKVxuICAgICAgcmV0dXJuIGZhbHNlXG5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcGVydHkpKVxuICAgICAgcmV0dXJuIHRydWVcblxuICAgIHJldHVybiB0aGlzLmhhc1Byb3BlcnR5KHRoaXMuZ2V0UHJvdG90eXBlKG9iaiksIHByb3BlcnR5KVxuICB9XG5cbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuc2FtcGxlICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFlvdSBtdXN0IHByb3ZpZGUgYW4gb2JqZWN0IHRvICR7dGhpcy50b1N0cmluZygpfSwgbm90ICcke1xuICAgICAgICAgIHR5cGVvZiB0aGlzLnNhbXBsZVxuICAgICAgICB9Jy5gLFxuICAgICAgKVxuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSB0cnVlXG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIHRoaXMuc2FtcGxlKSB7XG4gICAgICBpZiAoIXRoaXMuaGFzUHJvcGVydHkob3RoZXIsIHByb3BlcnR5KSB8fCAhZXF1YWxzKHRoaXMuc2FtcGxlW3Byb3BlcnR5XSwgb3RoZXJbcHJvcGVydHldKSkge1xuICAgICAgICByZXN1bHQgPSBmYWxzZVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmludmVyc2UgPyAhcmVzdWx0IDogcmVzdWx0XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYE9iamVjdCR7dGhpcy5pbnZlcnNlID8gJ05vdCcgOiAnJ31Db250YWluaW5nYFxuICB9XG5cbiAgZ2V0RXhwZWN0ZWRUeXBlKCkge1xuICAgIHJldHVybiAnb2JqZWN0J1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcnJheUNvbnRhaW5pbmcgZXh0ZW5kcyBBc3ltbWV0cmljTWF0Y2hlcjxBcnJheTx1bmtub3duPj4ge1xuICBjb25zdHJ1Y3RvcihzYW1wbGU6IEFycmF5PHVua25vd24+LCBpbnZlcnNlID0gZmFsc2UpIHtcbiAgICBzdXBlcihzYW1wbGUsIGludmVyc2UpXG4gIH1cblxuICBhc3ltbWV0cmljTWF0Y2gob3RoZXI6IEFycmF5PHVua25vd24+KSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuc2FtcGxlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFlvdSBtdXN0IHByb3ZpZGUgYW4gYXJyYXkgdG8gJHt0aGlzLnRvU3RyaW5nKCl9LCBub3QgJyR7XG4gICAgICAgICAgdHlwZW9mIHRoaXMuc2FtcGxlXG4gICAgICAgIH0nLmAsXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0XG4gICAgICA9IHRoaXMuc2FtcGxlLmxlbmd0aCA9PT0gMFxuICAgICAgfHwgKEFycmF5LmlzQXJyYXkob3RoZXIpXG4gICAgICAgICYmIHRoaXMuc2FtcGxlLmV2ZXJ5KGl0ZW0gPT5cbiAgICAgICAgICBvdGhlci5zb21lKGFub3RoZXIgPT4gZXF1YWxzKGl0ZW0sIGFub3RoZXIpKSxcbiAgICAgICAgKSlcblxuICAgIHJldHVybiB0aGlzLmludmVyc2UgPyAhcmVzdWx0IDogcmVzdWx0XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYEFycmF5JHt0aGlzLmludmVyc2UgPyAnTm90JyA6ICcnfUNvbnRhaW5pbmdgXG4gIH1cblxuICBnZXRFeHBlY3RlZFR5cGUoKSB7XG4gICAgcmV0dXJuICdhcnJheSdcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQW55IGV4dGVuZHMgQXN5bW1ldHJpY01hdGNoZXI8YW55PiB7XG4gIGNvbnN0cnVjdG9yKHNhbXBsZTogdW5rbm93bikge1xuICAgIGlmICh0eXBlb2Ygc2FtcGxlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ2FueSgpIGV4cGVjdHMgdG8gYmUgcGFzc2VkIGEgY29uc3RydWN0b3IgZnVuY3Rpb24uICdcbiAgICAgICAgICArICdQbGVhc2UgcGFzcyBvbmUgb3IgdXNlIGFueXRoaW5nKCkgdG8gbWF0Y2ggYW55IG9iamVjdC4nLFxuICAgICAgKVxuICAgIH1cbiAgICBzdXBlcihzYW1wbGUpXG4gIH1cblxuICBmbk5hbWVGb3IoZnVuYzogRnVuY3Rpb24pIHtcbiAgICBpZiAoZnVuYy5uYW1lKVxuICAgICAgcmV0dXJuIGZ1bmMubmFtZVxuXG4gICAgY29uc3QgZnVuY3Rpb25Ub1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZ1xuXG4gICAgY29uc3QgbWF0Y2hlcyA9IGZ1bmN0aW9uVG9TdHJpbmdcbiAgICAgIC5jYWxsKGZ1bmMpXG4gICAgICAubWF0Y2goL14oPzphc3luYyk/XFxzKmZ1bmN0aW9uXFxzKlxcKj9cXHMqKFtcXHckXSspXFxzKlxcKC8pXG4gICAgcmV0dXJuIG1hdGNoZXMgPyBtYXRjaGVzWzFdIDogJzxhbm9ueW1vdXM+J1xuICB9XG5cbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiB1bmtub3duKSB7XG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBTdHJpbmcpXG4gICAgICByZXR1cm4gdHlwZW9mIG90aGVyID09ICdzdHJpbmcnIHx8IG90aGVyIGluc3RhbmNlb2YgU3RyaW5nXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IE51bWJlcilcbiAgICAgIHJldHVybiB0eXBlb2Ygb3RoZXIgPT0gJ251bWJlcicgfHwgb3RoZXIgaW5zdGFuY2VvZiBOdW1iZXJcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gRnVuY3Rpb24pXG4gICAgICByZXR1cm4gdHlwZW9mIG90aGVyID09ICdmdW5jdGlvbicgfHwgb3RoZXIgaW5zdGFuY2VvZiBGdW5jdGlvblxuXG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBCb29sZWFuKVxuICAgICAgcmV0dXJuIHR5cGVvZiBvdGhlciA9PSAnYm9vbGVhbicgfHwgb3RoZXIgaW5zdGFuY2VvZiBCb29sZWFuXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IEJpZ0ludClcbiAgICAgIHJldHVybiB0eXBlb2Ygb3RoZXIgPT0gJ2JpZ2ludCcgfHwgb3RoZXIgaW5zdGFuY2VvZiBCaWdJbnRcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gU3ltYm9sKVxuICAgICAgcmV0dXJuIHR5cGVvZiBvdGhlciA9PSAnc3ltYm9sJyB8fCBvdGhlciBpbnN0YW5jZW9mIFN5bWJvbFxuXG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBPYmplY3QpXG4gICAgICByZXR1cm4gdHlwZW9mIG90aGVyID09ICdvYmplY3QnXG5cbiAgICByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiB0aGlzLnNhbXBsZVxuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdBbnknXG4gIH1cblxuICBnZXRFeHBlY3RlZFR5cGUoKSB7XG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBTdHJpbmcpXG4gICAgICByZXR1cm4gJ3N0cmluZydcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gTnVtYmVyKVxuICAgICAgcmV0dXJuICdudW1iZXInXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IEZ1bmN0aW9uKVxuICAgICAgcmV0dXJuICdmdW5jdGlvbidcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gT2JqZWN0KVxuICAgICAgcmV0dXJuICdvYmplY3QnXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IEJvb2xlYW4pXG4gICAgICByZXR1cm4gJ2Jvb2xlYW4nXG5cbiAgICByZXR1cm4gdGhpcy5mbk5hbWVGb3IodGhpcy5zYW1wbGUpXG4gIH1cblxuICB0b0FzeW1tZXRyaWNNYXRjaGVyKCkge1xuICAgIHJldHVybiBgQW55PCR7dGhpcy5mbk5hbWVGb3IodGhpcy5zYW1wbGUpfT5gXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0cmluZ01hdGNoaW5nIGV4dGVuZHMgQXN5bW1ldHJpY01hdGNoZXI8UmVnRXhwPiB7XG4gIGNvbnN0cnVjdG9yKHNhbXBsZTogc3RyaW5nIHwgUmVnRXhwLCBpbnZlcnNlID0gZmFsc2UpIHtcbiAgICBpZiAoIWlzQSgnU3RyaW5nJywgc2FtcGxlKSAmJiAhaXNBKCdSZWdFeHAnLCBzYW1wbGUpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBpcyBub3QgYSBTdHJpbmcgb3IgYSBSZWdFeHAnKVxuXG4gICAgc3VwZXIobmV3IFJlZ0V4cChzYW1wbGUpLCBpbnZlcnNlKVxuICB9XG5cbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXN1bHQgPSBpc0EoJ1N0cmluZycsIG90aGVyKSAmJiB0aGlzLnNhbXBsZS50ZXN0KG90aGVyKVxuXG4gICAgcmV0dXJuIHRoaXMuaW52ZXJzZSA/ICFyZXN1bHQgOiByZXN1bHRcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBgU3RyaW5nJHt0aGlzLmludmVyc2UgPyAnTm90JyA6ICcnfU1hdGNoaW5nYFxuICB9XG5cbiAgZ2V0RXhwZWN0ZWRUeXBlKCkge1xuICAgIHJldHVybiAnc3RyaW5nJ1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBKZXN0QXN5bW1ldHJpY01hdGNoZXJzOiBDaGFpUGx1Z2luID0gKGNoYWksIHV0aWxzKSA9PiB7XG4gIHV0aWxzLmFkZE1ldGhvZChcbiAgICBjaGFpLmV4cGVjdCxcbiAgICAnYW55dGhpbmcnLFxuICAgICgpID0+IG5ldyBBbnl0aGluZygpLFxuICApXG5cbiAgdXRpbHMuYWRkTWV0aG9kKFxuICAgIGNoYWkuZXhwZWN0LFxuICAgICdhbnknLFxuICAgIChleHBlY3RlZDogdW5rbm93bikgPT4gbmV3IEFueShleHBlY3RlZCksXG4gIClcblxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5leHBlY3QsXG4gICAgJ3N0cmluZ0NvbnRhaW5pbmcnLFxuICAgIChleHBlY3RlZDogc3RyaW5nKSA9PiBuZXcgU3RyaW5nQ29udGFpbmluZyhleHBlY3RlZCksXG4gIClcblxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5leHBlY3QsXG4gICAgJ29iamVjdENvbnRhaW5pbmcnLFxuICAgIChleHBlY3RlZDogYW55KSA9PiBuZXcgT2JqZWN0Q29udGFpbmluZyhleHBlY3RlZCksXG4gIClcblxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5leHBlY3QsXG4gICAgJ2FycmF5Q29udGFpbmluZycsXG4gICAgKGV4cGVjdGVkOiBhbnkpID0+IG5ldyBBcnJheUNvbnRhaW5pbmcoZXhwZWN0ZWQpLFxuICApXG5cbiAgdXRpbHMuYWRkTWV0aG9kKFxuICAgIGNoYWkuZXhwZWN0LFxuICAgICdzdHJpbmdNYXRjaGluZycsXG4gICAgKGV4cGVjdGVkOiBhbnkpID0+IG5ldyBTdHJpbmdNYXRjaGluZyhleHBlY3RlZCksXG4gIClcblxuICBjaGFpLmV4cGVjdC5ub3QgPSB7XG4gICAgc3RyaW5nQ29udGFpbmluZzogKGV4cGVjdGVkOiBzdHJpbmcpID0+IG5ldyBTdHJpbmdDb250YWluaW5nKGV4cGVjdGVkLCB0cnVlKSxcbiAgICBvYmplY3RDb250YWluaW5nOiAoZXhwZWN0ZWQ6IGFueSkgPT4gbmV3IE9iamVjdENvbnRhaW5pbmcoZXhwZWN0ZWQsIHRydWUpLFxuICAgIGFycmF5Q29udGFpbmluZzogKGV4cGVjdGVkOiB1bmtub3duW10pID0+IG5ldyBBcnJheUNvbnRhaW5pbmcoZXhwZWN0ZWQsIHRydWUpLFxuICAgIHN0cmluZ01hdGNoaW5nOiAoZXhwZWN0ZWQ6IHN0cmluZyB8IFJlZ0V4cCkgPT4gbmV3IFN0cmluZ01hdGNoaW5nKGV4cGVjdGVkLCB0cnVlKSxcbiAgfVxufVxuIiwiaW1wb3J0IGNoYWkgZnJvbSAnY2hhaSdcbmltcG9ydCBTdWJzZXQgZnJvbSAnY2hhaS1zdWJzZXQnXG5pbXBvcnQgeyBTbmFwc2hvdFBsdWdpbiB9IGZyb20gJy4uL3NuYXBzaG90L2NoYWknXG5pbXBvcnQgeyBKZXN0RXh0ZW5kIH0gZnJvbSAnLi9qZXN0LWV4dGVuZCdcbmltcG9ydCB7IEplc3RDaGFpRXhwZWN0IH0gZnJvbSAnLi9qZXN0LWV4cGVjdCdcbmltcG9ydCB7IEplc3RBc3ltbWV0cmljTWF0Y2hlcnMgfSBmcm9tICcuL2plc3QtYXN5bW1ldHJpYy1tYXRjaGVycydcblxubGV0IGluc3RhbGxlZCA9IGZhbHNlXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0dXBDaGFpKCkge1xuICBpZiAoaW5zdGFsbGVkKVxuICAgIHJldHVyblxuXG4gIGNoYWkudXNlKEplc3RFeHRlbmQpXG4gIGNoYWkudXNlKEplc3RDaGFpRXhwZWN0KVxuICBjaGFpLnVzZShTdWJzZXQpXG4gIGNoYWkudXNlKFNuYXBzaG90UGx1Z2luKVxuICBjaGFpLnVzZShKZXN0QXN5bW1ldHJpY01hdGNoZXJzKVxuICBpbnN0YWxsZWQgPSB0cnVlXG59XG4iLCJpbXBvcnQgeyBDb25zb2xlIH0gZnJvbSAnY29uc29sZSdcbmltcG9ydCB7IFdyaXRhYmxlIH0gZnJvbSAnc3RyZWFtJ1xuaW1wb3J0IHsgZW52aXJvbm1lbnRzIH0gZnJvbSAnLi4vZW52J1xuaW1wb3J0IHsgc2V0dXBDaGFpIH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL2NoYWkvc2V0dXAnXG5pbXBvcnQgdHlwZSB7IFJlc29sdmVkQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgeyBycGMgfSBmcm9tICcuL3JwYydcblxubGV0IGdsb2JhbFNldHVwID0gZmFsc2VcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXR1cEdsb2JhbEVudihjb25maWc6IFJlc29sdmVkQ29uZmlnKSB7XG4gIGlmIChnbG9iYWxTZXR1cClcbiAgICByZXR1cm5cblxuICBnbG9iYWxTZXR1cCA9IHRydWVcblxuICBzZXR1cENvbnNvbGVMb2dTcHkoKVxuICBhd2FpdCBzZXR1cENoYWkoKVxuXG4gIGlmIChjb25maWcuZ2xvYmFsKVxuICAgIChhd2FpdCBpbXBvcnQoJy4uL2ludGVncmF0aW9ucy9nbG9iYWwnKSkucmVnaXN0ZXJBcGlHbG9iYWxseSgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cENvbnNvbGVMb2dTcHkoKSB7XG4gIGNvbnN0IHN0ZG91dCA9IG5ldyBXcml0YWJsZSh7XG4gICAgd3JpdGUoZGF0YSwgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gICAgICBycGMoKS5vblVzZXJMb2coe1xuICAgICAgICB0eXBlOiAnc3Rkb3V0JyxcbiAgICAgICAgY29udGVudDogU3RyaW5nKGRhdGEpLFxuICAgICAgICB0YXNrSWQ6IHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18uY3VycmVudD8uaWQsXG4gICAgICB9KVxuICAgICAgY2FsbGJhY2soKVxuICAgIH0sXG4gIH0pXG4gIGNvbnN0IHN0ZGVyciA9IG5ldyBXcml0YWJsZSh7XG4gICAgd3JpdGUoZGF0YSwgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gICAgICBycGMoKS5vblVzZXJMb2coe1xuICAgICAgICB0eXBlOiAnc3RkZXJyJyxcbiAgICAgICAgY29udGVudDogU3RyaW5nKGRhdGEpLFxuICAgICAgICB0YXNrSWQ6IHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18uY3VycmVudD8uaWQsXG4gICAgICB9KVxuICAgICAgY2FsbGJhY2soKVxuICAgIH0sXG4gIH0pXG4gIGdsb2JhbFRoaXMuY29uc29sZSA9IG5ldyBDb25zb2xlKHtcbiAgICBzdGRvdXQsXG4gICAgc3RkZXJyLFxuICAgIGNvbG9yTW9kZTogdHJ1ZSxcbiAgICBncm91cEluZGVudGF0aW9uOiAyLFxuICB9KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2l0aEVudihcbiAgbmFtZTogUmVzb2x2ZWRDb25maWdbJ2Vudmlyb25tZW50J10sXG4gIG9wdGlvbnM6IFJlc29sdmVkQ29uZmlnWydlbnZpcm9ubWVudE9wdGlvbnMnXSxcbiAgZm46ICgpID0+IFByb21pc2U8dm9pZD4sXG4pIHtcbiAgY29uc3QgZW52ID0gYXdhaXQgZW52aXJvbm1lbnRzW25hbWVdLnNldHVwKGdsb2JhbFRoaXMsIG9wdGlvbnMpXG4gIHRyeSB7XG4gICAgYXdhaXQgZm4oKVxuICB9XG4gIGZpbmFsbHkge1xuICAgIGF3YWl0IGVudi50ZWFyZG93bihnbG9iYWxUaGlzKVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5TZXR1cEZpbGVzKGNvbmZpZzogUmVzb2x2ZWRDb25maWcpIHtcbiAgY29uc3QgZmlsZXMgPSB0b0FycmF5KGNvbmZpZy5zZXR1cEZpbGVzKVxuICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBmaWxlcy5tYXAoYXN5bmMoZmlsZSkgPT4ge1xuICAgICAgcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5tb2R1bGVDYWNoZS5kZWxldGUoZmlsZSlcbiAgICAgIGF3YWl0IGltcG9ydChmaWxlKVxuICAgIH0pLFxuICApXG59XG4iLCJpbXBvcnQgeyBmb3JtYXQgfSBmcm9tICd1dGlsJ1xuaW1wb3J0IHsgc3RyaW5naWZ5IH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL2NoYWkvamVzdC1tYXRjaGVyLXV0aWxzJ1xuXG5jb25zdCBPQkpFQ1RfUFJPVE8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoe30pXG5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XZWJfV29ya2Vyc19BUEkvU3RydWN0dXJlZF9jbG9uZV9hbGdvcml0aG1cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVFcnJvcih2YWw6IGFueSwgc2VlbiA9IG5ldyBXZWFrTWFwKCkpOiBhbnkge1xuICBpZiAoIXZhbCB8fCB0eXBlb2YgdmFsID09PSAnc3RyaW5nJylcbiAgICByZXR1cm4gdmFsXG4gIGlmICh0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nKVxuICAgIHJldHVybiBgRnVuY3Rpb248JHt2YWwubmFtZX0+YFxuICBpZiAodHlwZW9mIHZhbCAhPT0gJ29iamVjdCcpXG4gICAgcmV0dXJuIHZhbFxuICBpZiAodmFsIGluc3RhbmNlb2YgUHJvbWlzZSB8fCAndGhlbicgaW4gdmFsIHx8ICh2YWwuY29uc3RydWN0b3IgJiYgdmFsLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gJ0FzeW5jRnVuY3Rpb24nKSlcbiAgICByZXR1cm4gJ1Byb21pc2UnXG4gIGlmICh0eXBlb2YgRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsIGluc3RhbmNlb2YgRWxlbWVudClcbiAgICByZXR1cm4gdmFsLnRhZ05hbWVcbiAgaWYgKHR5cGVvZiB2YWwuYXN5bW1ldHJpY01hdGNoID09PSAnZnVuY3Rpb24nKVxuICAgIHJldHVybiBgJHt2YWwudG9TdHJpbmcoKX0gJHtmb3JtYXQodmFsLnNhbXBsZSl9YFxuXG4gIGlmIChzZWVuLmhhcyh2YWwpKVxuICAgIHJldHVybiBzZWVuLmdldCh2YWwpXG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgIGNvbnN0IGNsb25lOiBhbnlbXSA9IG5ldyBBcnJheSh2YWwubGVuZ3RoKVxuICAgIHNlZW4uc2V0KHZhbCwgY2xvbmUpXG4gICAgdmFsLmZvckVhY2goKGUsIGkpID0+IHtcbiAgICAgIGNsb25lW2ldID0gc2VyaWFsaXplRXJyb3IoZSwgc2VlbilcbiAgICB9KVxuICAgIHJldHVybiBjbG9uZVxuICB9XG4gIGVsc2Uge1xuICAgIC8vIE9iamVjdHMgd2l0aCBgRXJyb3JgIGNvbnN0cnVjdG9ycyBhcHBlYXIgdG8gY2F1c2UgcHJvYmxlbXMgZHVyaW5nIHdvcmtlciBjb21tdW5pY2F0aW9uXG4gICAgLy8gdXNpbmcgYE1lc3NhZ2VQb3J0YCwgc28gdGhlIHNlcmlhbGl6ZWQgZXJyb3Igb2JqZWN0IGlzIGJlaW5nIHJlY3JlYXRlZCBhcyBwbGFpbiBvYmplY3QuXG4gICAgY29uc3QgY2xvbmUgPSBPYmplY3QuY3JlYXRlKG51bGwpXG4gICAgc2Vlbi5zZXQodmFsLCBjbG9uZSlcblxuICAgIGxldCBvYmogPSB2YWxcbiAgICB3aGlsZSAob2JqICYmIG9iaiAhPT0gT0JKRUNUX1BST1RPKSB7XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoIShrZXkgaW4gY2xvbmUpKVxuICAgICAgICAgIGNsb25lW2tleV0gPSBzZXJpYWxpemVFcnJvcihvYmpba2V5XSwgc2VlbilcbiAgICAgIH0pXG4gICAgICBvYmogPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKVxuICAgIH1cbiAgICByZXR1cm4gY2xvbmVcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0Vycm9yKGVycjogYW55KSB7XG4gIGlmICghZXJyKVxuICAgIHJldHVybiBlcnJcbiAgLy8gc3RhY2sgaXMgbm90IHNlcmlhbGl6ZWQgaW4gd29ya2VyIGNvbW11bmljYXRpb25cbiAgLy8gd2Ugc3RyaW5naWZ5IGl0IGZpcnN0XG4gIGlmIChlcnIuc3RhY2spXG4gICAgZXJyLnN0YWNrU3RyID0gU3RyaW5nKGVyci5zdGFjaylcbiAgaWYgKGVyci5uYW1lKVxuICAgIGVyci5uYW1lU3RyID0gU3RyaW5nKGVyci5uYW1lKVxuXG4gIGlmICh0eXBlb2YgZXJyLmV4cGVjdGVkICE9PSAnc3RyaW5nJylcbiAgICBlcnIuZXhwZWN0ZWQgPSBzdHJpbmdpZnkoZXJyLmV4cGVjdGVkKVxuICBpZiAodHlwZW9mIGVyci5hY3R1YWwgIT09ICdzdHJpbmcnKVxuICAgIGVyci5hY3R1YWwgPSBzdHJpbmdpZnkoZXJyLmFjdHVhbClcblxuICByZXR1cm4gc2VyaWFsaXplRXJyb3IoZXJyKVxufVxuIiwiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0bydcbmltcG9ydCB7IHJlbGF0aXZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgdHlwZSB7IEZpbGUsIFJlc29sdmVkQ29uZmlnLCBTdWl0ZSB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgY2xlYXJDb250ZXh0LCBkZWZhdWx0U3VpdGUgfSBmcm9tICcuL3N1aXRlJ1xuaW1wb3J0IHsgZ2V0SG9va3MsIHNldEhvb2tzIH0gZnJvbSAnLi9tYXAnXG5pbXBvcnQgeyBwcm9jZXNzRXJyb3IgfSBmcm9tICcuL2Vycm9yJ1xuaW1wb3J0IHsgY29udGV4dCB9IGZyb20gJy4vY29udGV4dCdcbmltcG9ydCB7IHJ1blNldHVwRmlsZXMgfSBmcm9tICcuL3NldHVwJ1xuXG5mdW5jdGlvbiBoYXNoKHN0cjogc3RyaW5nLCBsZW5ndGggPSAxMCkge1xuICByZXR1cm4gY3JlYXRlSGFzaCgnbWQ1JylcbiAgICAudXBkYXRlKHN0cilcbiAgICAuZGlnZXN0KCdoZXgnKVxuICAgIC5zbGljZSgwLCBsZW5ndGgpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb2xsZWN0VGVzdHMocGF0aHM6IHN0cmluZ1tdLCBjb25maWc6IFJlc29sdmVkQ29uZmlnKSB7XG4gIGNvbnN0IGZpbGVzOiBGaWxlW10gPSBbXVxuXG4gIGZvciAoY29uc3QgZmlsZXBhdGggb2YgcGF0aHMpIHtcbiAgICBjb25zdCBwYXRoID0gcmVsYXRpdmUoY29uZmlnLnJvb3QsIGZpbGVwYXRoKVxuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSB7XG4gICAgICBpZDogaGFzaChwYXRoKSxcbiAgICAgIG5hbWU6IHBhdGgsXG4gICAgICB0eXBlOiAnc3VpdGUnLFxuICAgICAgbW9kZTogJ3J1bicsXG4gICAgICBmaWxlcGF0aCxcbiAgICAgIHRhc2tzOiBbXSxcbiAgICB9XG5cbiAgICBjbGVhckNvbnRleHQoKVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBydW5TZXR1cEZpbGVzKGNvbmZpZylcbiAgICAgIGF3YWl0IGltcG9ydChmaWxlcGF0aClcblxuICAgICAgY29uc3QgZGVmYXVsdFRhc2tzID0gYXdhaXQgZGVmYXVsdFN1aXRlLmNvbGxlY3QoZmlsZSlcblxuICAgICAgc2V0SG9va3MoZmlsZSwgZ2V0SG9va3MoZGVmYXVsdFRhc2tzKSlcblxuICAgICAgZm9yIChjb25zdCBjIG9mIFsuLi5kZWZhdWx0VGFza3MudGFza3MsIC4uLmNvbnRleHQudGFza3NdKSB7XG4gICAgICAgIGlmIChjLnR5cGUgPT09ICd0ZXN0Jykge1xuICAgICAgICAgIGZpbGUudGFza3MucHVzaChjKVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGMudHlwZSA9PT0gJ3N1aXRlJykge1xuICAgICAgICAgIGZpbGUudGFza3MucHVzaChjKVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KClcbiAgICAgICAgICBjb25zdCBzdWl0ZSA9IGF3YWl0IGMuY29sbGVjdChmaWxlKVxuICAgICAgICAgIGZpbGUuY29sbGVjdER1cmF0aW9uID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFxuICAgICAgICAgIGlmIChzdWl0ZS5uYW1lIHx8IHN1aXRlLnRhc2tzLmxlbmd0aClcbiAgICAgICAgICAgIGZpbGUudGFza3MucHVzaChzdWl0ZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgZmlsZS5yZXN1bHQgPSB7XG4gICAgICAgIHN0YXRlOiAnZmFpbCcsXG4gICAgICAgIGVycm9yOiBwcm9jZXNzRXJyb3IoZSksXG4gICAgICB9XG4gICAgICAvLyBub3Qgc3VyZSB0aHksIHRoaXMgdGhpcyBsaW5lIGlzIG5lZWRlZCB0byB0cmlnZ2VyIHRoZSBlcnJvclxuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xcMCcpXG4gICAgfVxuXG4gICAgY2FsY3VsYXRlSGFzaChmaWxlKVxuXG4gICAgaW50ZXJwcmV0VGFza01vZGVzKGZpbGUsIGNvbmZpZy50ZXN0TmFtZVBhdHRlcm4pXG5cbiAgICBmaWxlcy5wdXNoKGZpbGUpXG4gIH1cblxuICByZXR1cm4gZmlsZXNcbn1cblxuLyoqXG4gKiBJZiBhbnkgdGFza3MgYmVlbiBtYXJrZWQgYXMgYG9ubHlgLCBtYXJrIGFsbCBvdGhlciB0YXNrcyBhcyBgc2tpcGAuXG4gKi9cbmZ1bmN0aW9uIGludGVycHJldFRhc2tNb2RlcyhzdWl0ZTogU3VpdGUsIG5hbWVQYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwLCBvbmx5TW9kZT86IGJvb2xlYW4pIHtcbiAgaWYgKG9ubHlNb2RlID09PSB1bmRlZmluZWQpXG4gICAgb25seU1vZGUgPSBzb21lVGFza3NBcmVPbmx5KHN1aXRlKVxuXG4gIHN1aXRlLnRhc2tzLmZvckVhY2goKHQpID0+IHtcbiAgICBpZiAob25seU1vZGUpIHtcbiAgICAgIGlmICh0LnR5cGUgPT09ICdzdWl0ZScgJiYgc29tZVRhc2tzQXJlT25seSh0KSkge1xuICAgICAgICAvLyBEb24ndCBza2lwIHRoaXMgc3VpdGVcbiAgICAgICAgaWYgKHQubW9kZSA9PT0gJ29ubHknKVxuICAgICAgICAgIHQubW9kZSA9ICdydW4nXG4gICAgICAgIGludGVycHJldFRhc2tNb2Rlcyh0LCBuYW1lUGF0dGVybiwgb25seU1vZGUpXG4gICAgICB9XG4gICAgICBlbHNlIGlmICh0Lm1vZGUgPT09ICdydW4nKSB7IHQubW9kZSA9ICdza2lwJyB9XG4gICAgICBlbHNlIGlmICh0Lm1vZGUgPT09ICdvbmx5JykgeyB0Lm1vZGUgPSAncnVuJyB9XG4gICAgfVxuICAgIGlmICh0LnR5cGUgPT09ICd0ZXN0Jykge1xuICAgICAgaWYgKG5hbWVQYXR0ZXJuICYmICF0Lm5hbWUubWF0Y2gobmFtZVBhdHRlcm4pKVxuICAgICAgICB0Lm1vZGUgPSAnc2tpcCdcbiAgICB9XG4gICAgZWxzZSBpZiAodC50eXBlID09PSAnc3VpdGUnKSB7XG4gICAgICBpZiAodC5tb2RlID09PSAnc2tpcCcpXG4gICAgICAgIHNraXBBbGxUYXNrcyh0KVxuXG4gICAgICAvLyBpZiBhbGwgc3VidGFza3MgYXJlIHNraXBwZWQsIG1hcmtlZCBhcyBza2lwXG4gICAgICBpZiAodC5tb2RlID09PSAncnVuJykge1xuICAgICAgICBpZiAodC50YXNrcy5ldmVyeShpID0+IGkubW9kZSAhPT0gJ3J1bicpKVxuICAgICAgICAgIHQubW9kZSA9ICdza2lwJ1xuICAgICAgfVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gc29tZVRhc2tzQXJlT25seShzdWl0ZTogU3VpdGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN1aXRlLnRhc2tzLnNvbWUodCA9PiB0Lm1vZGUgPT09ICdvbmx5JyB8fCAodC50eXBlID09PSAnc3VpdGUnICYmIHNvbWVUYXNrc0FyZU9ubHkodCkpKVxufVxuXG5mdW5jdGlvbiBza2lwQWxsVGFza3Moc3VpdGU6IFN1aXRlKSB7XG4gIHN1aXRlLnRhc2tzLmZvckVhY2goKHQpID0+IHtcbiAgICBpZiAodC5tb2RlID09PSAncnVuJykge1xuICAgICAgdC5tb2RlID0gJ3NraXAnXG4gICAgICBpZiAodC50eXBlID09PSAnc3VpdGUnKVxuICAgICAgICBza2lwQWxsVGFza3ModClcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZUhhc2gocGFyZW50OiBTdWl0ZSkge1xuICBwYXJlbnQudGFza3MuZm9yRWFjaCgodCwgaWR4KSA9PiB7XG4gICAgdC5pZCA9IGAke3BhcmVudC5pZH1fJHtpZHh9YFxuICAgIGlmICh0LnR5cGUgPT09ICdzdWl0ZScpXG4gICAgICBjYWxjdWxhdGVIYXNoKHQpXG4gIH0pXG59XG4iLCJpbXBvcnQgeyBwZXJmb3JtYW5jZSB9IGZyb20gJ3BlcmZfaG9va3MnXG5pbXBvcnQgdHlwZSB7IEhvb2tMaXN0ZW5lciwgUmVzb2x2ZWRDb25maWcsIFN1aXRlLCBTdWl0ZUhvb2tzLCBUYXNrLCBUYXNrUmVzdWx0LCBUZXN0IH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyB2aSB9IGZyb20gJy4uL2ludGVncmF0aW9ucy92aSdcbmltcG9ydCB7IGdldFNuYXBzaG90Q2xpZW50IH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL3NuYXBzaG90L2NoYWknXG5pbXBvcnQgeyBnZXRGdWxsTmFtZSwgaGFzRmFpbGVkLCBoYXNUZXN0cywgcGFydGl0aW9uU3VpdGVDaGlsZHJlbiB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgZ2V0U3RhdGUsIHNldFN0YXRlIH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL2NoYWkvamVzdC1leHBlY3QnXG5pbXBvcnQgeyBnZXRGbiwgZ2V0SG9va3MgfSBmcm9tICcuL21hcCdcbmltcG9ydCB7IHJwYyB9IGZyb20gJy4vcnBjJ1xuaW1wb3J0IHsgY29sbGVjdFRlc3RzIH0gZnJvbSAnLi9jb2xsZWN0J1xuaW1wb3J0IHsgcHJvY2Vzc0Vycm9yIH0gZnJvbSAnLi9lcnJvcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNhbGxTdWl0ZUhvb2s8VCBleHRlbmRzIGtleW9mIFN1aXRlSG9va3M+KHN1aXRlOiBTdWl0ZSwgbmFtZTogVCwgYXJnczogU3VpdGVIb29rc1tUXVswXSBleHRlbmRzIEhvb2tMaXN0ZW5lcjxpbmZlciBBPiA/IEEgOiBuZXZlcikge1xuICBpZiAobmFtZSA9PT0gJ2JlZm9yZUVhY2gnICYmIHN1aXRlLnN1aXRlKVxuICAgIGF3YWl0IGNhbGxTdWl0ZUhvb2soc3VpdGUuc3VpdGUsIG5hbWUsIGFyZ3MpXG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoZ2V0SG9va3Moc3VpdGUpW25hbWVdLm1hcChmbiA9PiBmbiguLi4oYXJncyBhcyBhbnkpKSkpXG5cbiAgaWYgKG5hbWUgPT09ICdhZnRlckVhY2gnICYmIHN1aXRlLnN1aXRlKVxuICAgIGF3YWl0IGNhbGxTdWl0ZUhvb2soc3VpdGUuc3VpdGUsIG5hbWUsIGFyZ3MpXG59XG5cbmNvbnN0IHBhY2tzID0gbmV3IE1hcDxzdHJpbmcsIFRhc2tSZXN1bHR8dW5kZWZpbmVkPigpXG5sZXQgdXBkYXRlVGltZXI6IGFueVxubGV0IHByZXZpb3VzVXBkYXRlOiBQcm9taXNlPHZvaWQ+fHVuZGVmaW5lZFxuXG5mdW5jdGlvbiB1cGRhdGVUYXNrKHRhc2s6IFRhc2spIHtcbiAgcGFja3Muc2V0KHRhc2suaWQsIHRhc2sucmVzdWx0KVxuXG4gIGNsZWFyVGltZW91dCh1cGRhdGVUaW1lcilcbiAgdXBkYXRlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBwcmV2aW91c1VwZGF0ZSA9IHNlbmRUYXNrc1VwZGF0ZSgpXG4gIH0sIDEwKVxufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kVGFza3NVcGRhdGUoKSB7XG4gIGNsZWFyVGltZW91dCh1cGRhdGVUaW1lcilcbiAgYXdhaXQgcHJldmlvdXNVcGRhdGVcblxuICBpZiAocGFja3Muc2l6ZSkge1xuICAgIGNvbnN0IHAgPSBycGMoKS5vblRhc2tVcGRhdGUoQXJyYXkuZnJvbShwYWNrcykpXG4gICAgcGFja3MuY2xlYXIoKVxuICAgIHJldHVybiBwXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QodGVzdDogVGVzdCkge1xuICBpZiAodGVzdC5tb2RlICE9PSAncnVuJylcbiAgICByZXR1cm5cblxuICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpXG5cbiAgdGVzdC5yZXN1bHQgPSB7XG4gICAgc3RhdGU6ICdydW4nLFxuICB9XG4gIHVwZGF0ZVRhc2sodGVzdClcblxuICBjbGVhck1vZHVsZU1vY2tzKClcblxuICBnZXRTbmFwc2hvdENsaWVudCgpLnNldFRlc3QodGVzdClcblxuICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmN1cnJlbnQgPSB0ZXN0XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBjYWxsU3VpdGVIb29rKHRlc3Quc3VpdGUsICdiZWZvcmVFYWNoJywgW3Rlc3QsIHRlc3Quc3VpdGVdKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIGFzc2VydGlvbkNhbGxzOiAwLFxuICAgICAgaXNFeHBlY3RpbmdBc3NlcnRpb25zOiBmYWxzZSxcbiAgICAgIGlzRXhwZWN0aW5nQXNzZXJ0aW9uc0Vycm9yOiBudWxsLFxuICAgICAgZXhwZWN0ZWRBc3NlcnRpb25zTnVtYmVyOiBudWxsLFxuICAgICAgZXhwZWN0ZWRBc3NlcnRpb25zTnVtYmVyRXJyb3I6IG51bGwsXG4gICAgICB0ZXN0UGF0aDogdGVzdC5zdWl0ZS5maWxlPy5maWxlcGF0aCxcbiAgICAgIGN1cnJlbnRUZXN0TmFtZTogZ2V0RnVsbE5hbWUodGVzdCksXG4gICAgfSlcbiAgICBhd2FpdCBnZXRGbih0ZXN0KSgpXG4gICAgY29uc3QgeyBhc3NlcnRpb25DYWxscywgZXhwZWN0ZWRBc3NlcnRpb25zTnVtYmVyLCBleHBlY3RlZEFzc2VydGlvbnNOdW1iZXJFcnJvciwgaXNFeHBlY3RpbmdBc3NlcnRpb25zLCBpc0V4cGVjdGluZ0Fzc2VydGlvbnNFcnJvciB9ID0gZ2V0U3RhdGUoKVxuICAgIGlmIChleHBlY3RlZEFzc2VydGlvbnNOdW1iZXIgIT09IG51bGwgJiYgYXNzZXJ0aW9uQ2FsbHMgIT09IGV4cGVjdGVkQXNzZXJ0aW9uc051bWJlcilcbiAgICAgIHRocm93IGV4cGVjdGVkQXNzZXJ0aW9uc051bWJlckVycm9yXG4gICAgaWYgKGlzRXhwZWN0aW5nQXNzZXJ0aW9ucyA9PT0gdHJ1ZSAmJiBhc3NlcnRpb25DYWxscyA9PT0gMClcbiAgICAgIHRocm93IGlzRXhwZWN0aW5nQXNzZXJ0aW9uc0Vycm9yXG5cbiAgICB0ZXN0LnJlc3VsdC5zdGF0ZSA9ICdwYXNzJ1xuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgdGVzdC5yZXN1bHQuc3RhdGUgPSAnZmFpbCdcbiAgICB0ZXN0LnJlc3VsdC5lcnJvciA9IHByb2Nlc3NFcnJvcihlKVxuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBjYWxsU3VpdGVIb29rKHRlc3Quc3VpdGUsICdhZnRlckVhY2gnLCBbdGVzdCwgdGVzdC5zdWl0ZV0pXG4gIH1cbiAgY2F0Y2ggKGUpIHtcbiAgICB0ZXN0LnJlc3VsdC5zdGF0ZSA9ICdmYWlsJ1xuICAgIHRlc3QucmVzdWx0LmVycm9yID0gcHJvY2Vzc0Vycm9yKGUpXG4gIH1cblxuICAvLyBpZiB0ZXN0IGlzIG1hcmtlZCB0byBiZSBmYWlsZWQsIGZsaXAgdGhlIHJlc3VsdFxuICBpZiAodGVzdC5mYWlscykge1xuICAgIGlmICh0ZXN0LnJlc3VsdC5zdGF0ZSA9PT0gJ3Bhc3MnKSB7XG4gICAgICB0ZXN0LnJlc3VsdC5zdGF0ZSA9ICdmYWlsJ1xuICAgICAgdGVzdC5yZXN1bHQuZXJyb3IgPSBwcm9jZXNzRXJyb3IobmV3IEVycm9yKCdFeHBlY3QgdGVzdCB0byBmYWlsJykpXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGVzdC5yZXN1bHQuc3RhdGUgPSAncGFzcydcbiAgICAgIHRlc3QucmVzdWx0LmVycm9yID0gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgZ2V0U25hcHNob3RDbGllbnQoKS5jbGVhclRlc3QoKVxuXG4gIHRlc3QucmVzdWx0LmR1cmF0aW9uID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFxuXG4gIHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18uY3VycmVudCA9IHVuZGVmaW5lZFxuXG4gIHVwZGF0ZVRhc2sodGVzdClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blN1aXRlKHN1aXRlOiBTdWl0ZSkge1xuICBpZiAoc3VpdGUucmVzdWx0Py5zdGF0ZSA9PT0gJ2ZhaWwnKVxuICAgIHJldHVyblxuXG4gIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KClcblxuICBzdWl0ZS5yZXN1bHQgPSB7XG4gICAgc3RhdGU6ICdydW4nLFxuICB9XG5cbiAgdXBkYXRlVGFzayhzdWl0ZSlcblxuICBpZiAoc3VpdGUubW9kZSA9PT0gJ3NraXAnKSB7XG4gICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ3NraXAnXG4gIH1cbiAgZWxzZSBpZiAoc3VpdGUubW9kZSA9PT0gJ3RvZG8nKSB7XG4gICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ3RvZG8nXG4gIH1cbiAgZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNhbGxTdWl0ZUhvb2soc3VpdGUsICdiZWZvcmVBbGwnLCBbc3VpdGVdKVxuXG4gICAgICBmb3IgKGNvbnN0IHRhc2tzR3JvdXAgb2YgcGFydGl0aW9uU3VpdGVDaGlsZHJlbihzdWl0ZSkpIHtcbiAgICAgICAgaWYgKHRhc2tzR3JvdXBbMF0uY29uY3VycmVudCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHRhc2tzR3JvdXAubWFwKGMgPT4gcnVuU3VpdGVDaGlsZChjKSkpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZm9yIChjb25zdCBjIG9mIHRhc2tzR3JvdXApXG4gICAgICAgICAgICBhd2FpdCBydW5TdWl0ZUNoaWxkKGMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXdhaXQgY2FsbFN1aXRlSG9vayhzdWl0ZSwgJ2FmdGVyQWxsJywgW3N1aXRlXSlcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgIHN1aXRlLnJlc3VsdC5zdGF0ZSA9ICdmYWlsJ1xuICAgICAgc3VpdGUucmVzdWx0LmVycm9yID0gcHJvY2Vzc0Vycm9yKGUpXG4gICAgfVxuICB9XG4gIHN1aXRlLnJlc3VsdC5kdXJhdGlvbiA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRcblxuICBpZiAoc3VpdGUubW9kZSA9PT0gJ3J1bicpIHtcbiAgICBpZiAoIWhhc1Rlc3RzKHN1aXRlKSkge1xuICAgICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ2ZhaWwnXG4gICAgICBpZiAoIXN1aXRlLnJlc3VsdC5lcnJvcilcbiAgICAgICAgc3VpdGUucmVzdWx0LmVycm9yID0gbmV3IEVycm9yKGBObyB0ZXN0cyBmb3VuZCBpbiBzdWl0ZSAke3N1aXRlLm5hbWV9YClcbiAgICB9XG4gICAgZWxzZSBpZiAoaGFzRmFpbGVkKHN1aXRlKSkge1xuICAgICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ2ZhaWwnXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ3Bhc3MnXG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVGFzayhzdWl0ZSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuU3VpdGVDaGlsZChjOiBUYXNrKSB7XG4gIHJldHVybiBjLnR5cGUgPT09ICd0ZXN0J1xuICAgID8gcnVuVGVzdChjKVxuICAgIDogcnVuU3VpdGUoYylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blN1aXRlcyhzdWl0ZXM6IFN1aXRlW10pIHtcbiAgZm9yIChjb25zdCBzdWl0ZSBvZiBzdWl0ZXMpXG4gICAgYXdhaXQgcnVuU3VpdGUoc3VpdGUpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydFRlc3RzKHBhdGhzOiBzdHJpbmdbXSwgY29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICBjb25zdCBmaWxlcyA9IGF3YWl0IGNvbGxlY3RUZXN0cyhwYXRocywgY29uZmlnKVxuXG4gIHJwYygpLm9uQ29sbGVjdGVkKGZpbGVzKVxuXG4gIGF3YWl0IHJ1blN1aXRlcyhmaWxlcylcblxuICBhd2FpdCBnZXRTbmFwc2hvdENsaWVudCgpLnNhdmVTbmFwKClcblxuICBhd2FpdCBzZW5kVGFza3NVcGRhdGUoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJNb2R1bGVNb2NrcygpIHtcbiAgY29uc3QgeyBjbGVhck1vY2tzLCBtb2NrUmVzZXQsIHJlc3RvcmVNb2NrcyB9ID0gcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5jb25maWdcblxuICAvLyBzaW5jZSBlYWNoIGZ1bmN0aW9uIGNhbGxzIGFub3RoZXIsIHdlIGNhbiBqdXN0IGNhbGwgb25lXG4gIGlmIChyZXN0b3JlTW9ja3MpXG4gICAgdmkucmVzdG9yZUFsbE1vY2tzKClcbiAgZWxzZSBpZiAobW9ja1Jlc2V0KVxuICAgIHZpLnJlc2V0QWxsTW9ja3MoKVxuICBlbHNlIGlmIChjbGVhck1vY2tzKVxuICAgIHZpLmNsZWFyQWxsTW9ja3MoKVxufVxuIiwiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcydcbmltcG9ydCB0eXBlIHsgQnVpbHRpbkVudmlyb25tZW50LCBSZXNvbHZlZENvbmZpZyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgdmkgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbnMvdmknXG5pbXBvcnQgeyBzZXR1cEdsb2JhbEVudiwgd2l0aEVudiB9IGZyb20gJy4vc2V0dXAnXG5pbXBvcnQgeyBzdGFydFRlc3RzIH0gZnJvbSAnLi9ydW4nXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW4oZmlsZXM6IHN0cmluZ1tdLCBjb25maWc6IFJlc29sdmVkQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHNldHVwR2xvYmFsRW52KGNvbmZpZylcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBjb25zdCBjb2RlID0gYXdhaXQgZnMucmVhZEZpbGUoZmlsZSwgJ3V0Zi04JylcblxuICAgIGNvbnN0IGVudiA9IGNvZGUubWF0Y2goL0AoPzp2aXRlc3R8amVzdCktZW52aXJvbm1lbnRcXHMrPyhbXFx3LV0rKVxcYi8pPy5bMV0gfHwgY29uZmlnLmVudmlyb25tZW50IHx8ICdub2RlJ1xuXG4gICAgaWYgKCFbJ25vZGUnLCAnanNkb20nLCAnaGFwcHktZG9tJ10uaW5jbHVkZXMoZW52KSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZW52aXJvbm1lbnQ6ICR7ZW52fWApXG5cbiAgICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmZpbGVwYXRoID0gZmlsZVxuXG4gICAgdmkucmVzdG9yZUFsbE1vY2tzKClcblxuICAgIGF3YWl0IHdpdGhFbnYoZW52IGFzIEJ1aWx0aW5FbnZpcm9ubWVudCwgY29uZmlnLmVudmlyb25tZW50T3B0aW9ucyB8fCB7fSwgYXN5bmMoKSA9PiB7XG4gICAgICBhd2FpdCBzdGFydFRlc3RzKFtmaWxlXSwgY29uZmlnKVxuICAgIH0pXG5cbiAgICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmZpbGVwYXRoID0gdW5kZWZpbmVkXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfX2RlZlByb3AiLCJfX2dldE93blByb3BTeW1ib2xzIiwiX19oYXNPd25Qcm9wIiwiX19wcm9wSXNFbnVtIiwiX19kZWZOb3JtYWxQcm9wIiwiX19zcHJlYWRWYWx1ZXMiLCJyZXF1aXJlIiwidGhpcyIsImZzIiwibmF0dXJhbENvbXBhcmVNb2R1bGUiLCJwcmV0dHlGb3JtYXQiLCJwYXRoIiwibmF0dXJhbENvbXBhcmUiLCJmc3AiLCJBc3ltbWV0cmljTWF0Y2hlciIsInByZXR0eUZvcm1hdFBsdWdpbnMiLCJjaGFpIiwicGVyZm9ybWFuY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxXQUFlO0FBQ2YsRUFBRSxJQUFJLEVBQUUsTUFBTTtBQUNkLEVBQUUsTUFBTSxLQUFLLEdBQUc7QUFDaEIsSUFBSSxPQUFPO0FBQ1gsTUFBTSxRQUFRLEdBQUc7QUFDakIsT0FBTztBQUNQLEtBQUssQ0FBQztBQUNOLEdBQUc7QUFDSCxDQUFDOztBQ1JELE1BQU0sV0FBVyxHQUFHO0FBQ3BCLEVBQUUsY0FBYztBQUNoQixFQUFFLEtBQUs7QUFDUCxFQUFFLGlCQUFpQjtBQUNuQixFQUFFLGFBQWE7QUFDZixFQUFFLGNBQWM7QUFDaEIsRUFBRSxNQUFNO0FBQ1IsRUFBRSxNQUFNO0FBQ1IsRUFBRSxTQUFTO0FBQ1gsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxVQUFVO0FBQ1osRUFBRSxhQUFhO0FBQ2YsRUFBRSxlQUFlO0FBQ2pCLEVB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
|
|
1711
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnkuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9lbnYvbm9kZS50cyIsIi4uL3NyYy9lbnYvanNkb20ta2V5cy50cyIsIi4uL3NyYy9lbnYvanNkb20udHMiLCIuLi9zcmMvZW52L2hhcHB5LWRvbS50cyIsIi4uL3NyYy9lbnYvaW5kZXgudHMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhaS1zdWJzZXRAMS42LjAvbm9kZV9tb2R1bGVzL2NoYWktc3Vic2V0L2xpYi9jaGFpLXN1YnNldC5qcyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvc25hcHNob3QvcG9ydC9pbmxpbmVTbmFwc2hvdC50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9uYXR1cmFsLWNvbXBhcmVAMS40LjAvbm9kZV9tb2R1bGVzL25hdHVyYWwtY29tcGFyZS9pbmRleC5qcyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvc25hcHNob3QvcG9ydC91dGlscy50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvc25hcHNob3QvcG9ydC9zdGF0ZS50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvc25hcHNob3QvY2xpZW50LnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9zbmFwc2hvdC9jaGFpLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9jaGFpL2plc3QtbWF0Y2hlci11dGlscy50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvY2hhaS9qZXN0LWV4dGVuZC50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvY2hhaS9qZXN0LWFzeW1tZXRyaWMtbWF0Y2hlcnMudHMiLCIuLi9zcmMvaW50ZWdyYXRpb25zL2NoYWkvc2V0dXAudHMiLCIuLi9zcmMvcnVudGltZS9zZXR1cC50cyIsIi4uL3NyYy9ydW50aW1lL2Vycm9yLnRzIiwiLi4vc3JjL3J1bnRpbWUvY29sbGVjdC50cyIsIi4uL3NyYy9ydW50aW1lL3J1bi50cyIsIi4uL3NyYy9ydW50aW1lL2VudHJ5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi90eXBlcydcblxuZXhwb3J0IGRlZmF1bHQgPEVudmlyb25tZW50Pih7XG4gIG5hbWU6ICdub2RlJyxcbiAgYXN5bmMgc2V0dXAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRlYXJkb3duKCkge1xuICAgICAgfSxcbiAgICB9XG4gIH0sXG59KVxuIiwiLy8gU0VFIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2RvbS9qc2RvbS9ibG9iL21hc3Rlci9saWIvanNkb20vbGl2aW5nL2ludGVyZmFjZXMuanNcblxuY29uc3QgTElWSU5HX0tFWVMgPSBbXG4gICdET01FeGNlcHRpb24nLFxuICAnVVJMJyxcbiAgJ1VSTFNlYXJjaFBhcmFtcycsXG4gICdFdmVudFRhcmdldCcsXG4gICdOYW1lZE5vZGVNYXAnLFxuICAnTm9kZScsXG4gICdBdHRyJyxcbiAgJ0VsZW1lbnQnLFxuICAnRG9jdW1lbnRGcmFnbWVudCcsXG4gICdET01JbXBsZW1lbnRhdGlvbicsXG4gICdEb2N1bWVudCcsXG4gICdYTUxEb2N1bWVudCcsXG4gICdDaGFyYWN0ZXJEYXRhJyxcbiAgJ1RleHQnLFxuICAnQ0RBVEFTZWN0aW9uJyxcbiAgJ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbicsXG4gICdDb21tZW50JyxcbiAgJ0RvY3VtZW50VHlwZScsXG4gICdOb2RlTGlzdCcsXG4gICdIVE1MQ29sbGVjdGlvbicsXG4gICdIVE1MT3B0aW9uc0NvbGxlY3Rpb24nLFxuICAnRE9NU3RyaW5nTWFwJyxcbiAgJ0RPTVRva2VuTGlzdCcsXG4gICdTdHlsZVNoZWV0TGlzdCcsXG4gICdIVE1MRWxlbWVudCcsXG4gICdIVE1MSGVhZEVsZW1lbnQnLFxuICAnSFRNTFRpdGxlRWxlbWVudCcsXG4gICdIVE1MQmFzZUVsZW1lbnQnLFxuICAnSFRNTExpbmtFbGVtZW50JyxcbiAgJ0hUTUxNZXRhRWxlbWVudCcsXG4gICdIVE1MU3R5bGVFbGVtZW50JyxcbiAgJ0hUTUxCb2R5RWxlbWVudCcsXG4gICdIVE1MSGVhZGluZ0VsZW1lbnQnLFxuICAnSFRNTFBhcmFncmFwaEVsZW1lbnQnLFxuICAnSFRNTEhSRWxlbWVudCcsXG4gICdIVE1MUHJlRWxlbWVudCcsXG4gICdIVE1MVUxpc3RFbGVtZW50JyxcbiAgJ0hUTUxPTGlzdEVsZW1lbnQnLFxuICAnSFRNTExJRWxlbWVudCcsXG4gICdIVE1MTWVudUVsZW1lbnQnLFxuICAnSFRNTERMaXN0RWxlbWVudCcsXG4gICdIVE1MRGl2RWxlbWVudCcsXG4gICdIVE1MQW5jaG9yRWxlbWVudCcsXG4gICdIVE1MQXJlYUVsZW1lbnQnLFxuICAnSFRNTEJSRWxlbWVudCcsXG4gICdIVE1MQnV0dG9uRWxlbWVudCcsXG4gICdIVE1MQ2FudmFzRWxlbWVudCcsXG4gICdIVE1MRGF0YUVsZW1lbnQnLFxuICAnSFRNTERhdGFMaXN0RWxlbWVudCcsXG4gICdIVE1MRGV0YWlsc0VsZW1lbnQnLFxuICAnSFRNTERpYWxvZ0VsZW1lbnQnLFxuICAnSFRNTERpcmVjdG9yeUVsZW1lbnQnLFxuICAnSFRNTEZpZWxkU2V0RWxlbWVudCcsXG4gICdIVE1MRm9udEVsZW1lbnQnLFxuICAnSFRNTEZvcm1FbGVtZW50JyxcbiAgJ0hUTUxIdG1sRWxlbWVudCcsXG4gICdIVE1MSW1hZ2VFbGVtZW50JyxcbiAgJ0hUTUxJbnB1dEVsZW1lbnQnLFxuICAnSFRNTExhYmVsRWxlbWVudCcsXG4gICdIVE1MTGVnZW5kRWxlbWVudCcsXG4gICdIVE1MTWFwRWxlbWVudCcsXG4gICdIVE1MTWFycXVlZUVsZW1lbnQnLFxuICAnSFRNTE1lZGlhRWxlbWVudCcsXG4gICdIVE1MTWV0ZXJFbGVtZW50JyxcbiAgJ0hUTUxNb2RFbGVtZW50JyxcbiAgJ0hUTUxPcHRHcm91cEVsZW1lbnQnLFxuICAnSFRNTE9wdGlvbkVsZW1lbnQnLFxuICAnSFRNTE91dHB1dEVsZW1lbnQnLFxuICAnSFRNTFBpY3R1cmVFbGVtZW50JyxcbiAgJ0hUTUxQcm9ncmVzc0VsZW1lbnQnLFxuICAnSFRNTFF1b3RlRWxlbWVudCcsXG4gICdIVE1MU2NyaXB0RWxlbWVudCcsXG4gICdIVE1MU2VsZWN0RWxlbWVudCcsXG4gICdIVE1MU2xvdEVsZW1lbnQnLFxuICAnSFRNTFNvdXJjZUVsZW1lbnQnLFxuICAnSFRNTFNwYW5FbGVtZW50JyxcbiAgJ0hUTUxUYWJsZUNhcHRpb25FbGVtZW50JyxcbiAgJ0hUTUxUYWJsZUNlbGxFbGVtZW50JyxcbiAgJ0hUTUxUYWJsZUNvbEVsZW1lbnQnLFxuICAnSFRNTFRhYmxlRWxlbWVudCcsXG4gICdIVE1MVGltZUVsZW1lbnQnLFxuICAnSFRNTFRhYmxlUm93RWxlbWVudCcsXG4gICdIVE1MVGFibGVTZWN0aW9uRWxlbWVudCcsXG4gICdIVE1MVGVtcGxhdGVFbGVtZW50JyxcbiAgJ0hUTUxUZXh0QXJlYUVsZW1lbnQnLFxuICAnSFRNTFVua25vd25FbGVtZW50JyxcbiAgJ0hUTUxGcmFtZUVsZW1lbnQnLFxuICAnSFRNTEZyYW1lU2V0RWxlbWVudCcsXG4gICdIVE1MSUZyYW1lRWxlbWVudCcsXG4gICdIVE1MRW1iZWRFbGVtZW50JyxcbiAgJ0hUTUxPYmplY3RFbGVtZW50JyxcbiAgJ0hUTUxQYXJhbUVsZW1lbnQnLFxuICAnSFRNTFZpZGVvRWxlbWVudCcsXG4gICdIVE1MQXVkaW9FbGVtZW50JyxcbiAgJ0hUTUxUcmFja0VsZW1lbnQnLFxuICAnU1ZHRWxlbWVudCcsXG4gICdTVkdHcmFwaGljc0VsZW1lbnQnLFxuICAnU1ZHU1ZHRWxlbWVudCcsXG4gICdTVkdUaXRsZUVsZW1lbnQnLFxuICAnU1ZHQW5pbWF0ZWRTdHJpbmcnLFxuICAnU1ZHTnVtYmVyJyxcbiAgJ1NWR1N0cmluZ0xpc3QnLFxuICAnRXZlbnQnLFxuICAnQ2xvc2VFdmVudCcsXG4gICdDdXN0b21FdmVudCcsXG4gICdNZXNzYWdlRXZlbnQnLFxuICAnRXJyb3JFdmVudCcsXG4gICdIYXNoQ2hhbmdlRXZlbnQnLFxuICAnUG9wU3RhdGVFdmVudCcsXG4gICdTdG9yYWdlRXZlbnQnLFxuICAnUHJvZ3Jlc3NFdmVudCcsXG4gICdQYWdlVHJhbnNpdGlvbkV2ZW50JyxcbiAgJ1VJRXZlbnQnLFxuICAnRm9jdXNFdmVudCcsXG4gICdJbnB1dEV2ZW50JyxcbiAgJ01vdXNlRXZlbnQnLFxuICAnS2V5Ym9hcmRFdmVudCcsXG4gICdUb3VjaEV2ZW50JyxcbiAgJ0NvbXBvc2l0aW9uRXZlbnQnLFxuICAnV2hlZWxFdmVudCcsXG4gICdCYXJQcm9wJyxcbiAgJ0V4dGVybmFsJyxcbiAgJ0xvY2F0aW9uJyxcbiAgJ0hpc3RvcnknLFxuICAnU2NyZWVuJyxcbiAgJ1BlcmZvcm1hbmNlJyxcbiAgJ05hdmlnYXRvcicsXG4gICdQbHVnaW5BcnJheScsXG4gICdNaW1lVHlwZUFycmF5JyxcbiAgJ1BsdWdpbicsXG4gICdNaW1lVHlwZScsXG4gICdGaWxlUmVhZGVyJyxcbiAgJ0Jsb2InLFxuICAnRmlsZScsXG4gICdGaWxlTGlzdCcsXG4gICdWYWxpZGl0eVN0YXRlJyxcbiAgJ0RPTVBhcnNlcicsXG4gICdYTUxTZXJpYWxpemVyJyxcbiAgJ0Zvcm1EYXRhJyxcbiAgJ1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQnLFxuICAnWE1MSHR0cFJlcXVlc3RVcGxvYWQnLFxuICAnWE1MSHR0cFJlcXVlc3QnLFxuICAnV2ViU29ja2V0JyxcbiAgJ05vZGVGaWx0ZXInLFxuICAnTm9kZUl0ZXJhdG9yJyxcbiAgJ1RyZWVXYWxrZXInLFxuICAnQWJzdHJhY3RSYW5nZScsXG4gICdSYW5nZScsXG4gICdTdGF0aWNSYW5nZScsXG4gICdTZWxlY3Rpb24nLFxuICAnU3RvcmFnZScsXG4gICdDdXN0b21FbGVtZW50UmVnaXN0cnknLFxuICAnU2hhZG93Um9vdCcsXG4gICdNdXRhdGlvbk9ic2VydmVyJyxcbiAgJ011dGF0aW9uUmVjb3JkJyxcbiAgJ0hlYWRlcnMnLFxuICAnQWJvcnRDb250cm9sbGVyJyxcbiAgJ0Fib3J0U2lnbmFsJyxcblxuICAvLyBub3Qgc3BlY2lmaWVkIGluIGRvY3MsIGJ1dCBpcyBhdmFpbGFibGVcbiAgJ0ltYWdlJyxcbl1cblxuY29uc3QgT1RIRVJfS0VZUyA9IFtcbiAgJ2FkZEV2ZW50TGlzdGVuZXInLFxuICAnYWxlcnQnLFxuICAnYXRvYicsXG4gICdibHVyJyxcbiAgJ2J0b2EnLFxuICAvKiAnY2xlYXJJbnRlcnZhbCcsICovXG4gIC8qICdjbGVhclRpbWVvdXQnLCAqL1xuICAnY2xvc2UnLFxuICAnY29uZmlybScsXG4gIC8qICdjb25zb2xlJywgKi9cbiAgJ2NyZWF0ZVBvcHVwJyxcbiAgJ2Rpc3BhdGNoRXZlbnQnLFxuICAnZG9jdW1lbnQnLFxuICAnZm9jdXMnLFxuICAnZnJhbWVzJyxcbiAgJ2dldENvbXB1dGVkU3R5bGUnLFxuICAnaGlzdG9yeScsXG4gICdpbm5lckhlaWdodCcsXG4gICdpbm5lcldpZHRoJyxcbiAgJ2xlbmd0aCcsXG4gICdsb2NhdGlvbicsXG4gICdtYXRjaE1lZGlhJyxcbiAgJ21vdmVCeScsXG4gICdtb3ZlVG8nLFxuICAnbmFtZScsXG4gICduYXZpZ2F0b3InLFxuICAnb3BlbicsXG4gICdvdXRlckhlaWdodCcsXG4gICdvdXRlcldpZHRoJyxcbiAgJ3BhZ2VYT2Zmc2V0JyxcbiAgJ3BhZ2VZT2Zmc2V0JyxcbiAgJ3BhcmVudCcsXG4gICdwb3N0TWVzc2FnZScsXG4gICdwcmludCcsXG4gICdwcm9tcHQnLFxuICAncmVtb3ZlRXZlbnRMaXN0ZW5lcicsXG4gICdyZXNpemVCeScsXG4gICdyZXNpemVUbycsXG4gICdzY3JlZW4nLFxuICAnc2NyZWVuTGVmdCcsXG4gICdzY3JlZW5Ub3AnLFxuICAnc2NyZWVuWCcsXG4gICdzY3JlZW5ZJyxcbiAgJ3Njcm9sbCcsXG4gICdzY3JvbGxCeScsXG4gICdzY3JvbGxMZWZ0JyxcbiAgJ3Njcm9sbFRvJyxcbiAgJ3Njcm9sbFRvcCcsXG4gICdzY3JvbGxYJyxcbiAgJ3Njcm9sbFknLFxuICAnc2VsZicsXG4gIC8qICdzZXRJbnRlcnZhbCcsICovXG4gIC8qICdzZXRUaW1lb3V0JywgKi9cbiAgJ3N0b3AnLFxuICAvKiAndG9TdHJpbmcnLCAqL1xuICAndG9wJyxcbiAgJ3dpbmRvdycsXG5dXG5cbmV4cG9ydCBjb25zdCBLRVlTID0gTElWSU5HX0tFWVMuY29uY2F0KE9USEVSX0tFWVMpXG4iLCJpbXBvcnQgeyBpbXBvcnRNb2R1bGUgfSBmcm9tICdsb2NhbC1wa2cnXG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50LCBKU0RPTU9wdGlvbnMgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IEtFWVMgfSBmcm9tICcuL2pzZG9tLWtleXMnXG5cbmV4cG9ydCBkZWZhdWx0IDxFbnZpcm9ubWVudD4oe1xuICBuYW1lOiAnanNkb20nLFxuICBhc3luYyBzZXR1cChnbG9iYWwsIHsganNkb20gPSB7fSB9KSB7XG4gICAgY29uc3Qge1xuICAgICAgQ29va2llSmFyLFxuICAgICAgSlNET00sXG4gICAgICBSZXNvdXJjZUxvYWRlcixcbiAgICAgIFZpcnR1YWxDb25zb2xlLFxuICAgIH0gPSBhd2FpdCBpbXBvcnRNb2R1bGUoJ2pzZG9tJykgYXMgdHlwZW9mIGltcG9ydCgnanNkb20nKVxuICAgIGNvbnN0IHtcbiAgICAgIGh0bWwgPSAnPCFET0NUWVBFIGh0bWw+JyxcbiAgICAgIHVzZXJBZ2VudCxcbiAgICAgIHVybCA9ICdodHRwOi8vbG9jYWxob3N0OjMwMDAnLFxuICAgICAgY29udGVudFR5cGUgPSAndGV4dC9odG1sJyxcbiAgICAgIHByZXRlbmRUb0JlVmlzdWFsID0gdHJ1ZSxcbiAgICAgIGluY2x1ZGVOb2RlTG9jYXRpb25zID0gZmFsc2UsXG4gICAgICBydW5TY3JpcHRzID0gJ2Rhbmdlcm91c2x5JyxcbiAgICAgIHJlc291cmNlcyxcbiAgICAgIGNvbnNvbGUgPSBmYWxzZSxcbiAgICAgIGNvb2tpZUphciA9IGZhbHNlLFxuICAgICAgLi4ucmVzdE9wdGlvbnNcbiAgICB9ID0ganNkb20gYXMgSlNET01PcHRpb25zXG4gICAgY29uc3QgZG9tID0gbmV3IEpTRE9NKFxuICAgICAgaHRtbCxcbiAgICAgIHtcbiAgICAgICAgcHJldGVuZFRvQmVWaXN1YWwsXG4gICAgICAgIHJlc291cmNlczogcmVzb3VyY2VzID8/ICh1c2VyQWdlbnQgPyBuZXcgUmVzb3VyY2VMb2FkZXIoeyB1c2VyQWdlbnQgfSkgOiB1bmRlZmluZWQpLFxuICAgICAgICBydW5TY3JpcHRzLFxuICAgICAgICB1cmwsXG4gICAgICAgIHZpcnR1YWxDb25zb2xlOiBjb25zb2xlICYmIGdsb2JhbC5jb25zb2xlID8gbmV3IFZpcnR1YWxDb25zb2xlKCkuc2VuZFRvKGdsb2JhbC5jb25zb2xlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgY29va2llSmFyOiBjb29raWVKYXIgPyBuZXcgQ29va2llSmFyKCkgOiB1bmRlZmluZWQsXG4gICAgICAgIGluY2x1ZGVOb2RlTG9jYXRpb25zLFxuICAgICAgICBjb250ZW50VHlwZSxcbiAgICAgICAgdXNlckFnZW50LFxuICAgICAgICAuLi5yZXN0T3B0aW9ucyxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgY29uc3Qga2V5cyA9IEtFWVMuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGRvbS53aW5kb3cpKVxuICAgICAgLmZpbHRlcihrID0+ICFrLnN0YXJ0c1dpdGgoJ18nKSAmJiAhKGsgaW4gZ2xvYmFsKSlcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9iYWwsIGtleSwge1xuICAgICAgICBnZXQoKSB7IHJldHVybiBkb20ud2luZG93W2tleV0gfSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBnbG9iYWwud2luZG93ID0gZ2xvYmFsXG5cbiAgICByZXR1cm4ge1xuICAgICAgdGVhcmRvd24oZ2xvYmFsKSB7XG4gICAgICAgIGtleXMuZm9yRWFjaChrZXkgPT4gZGVsZXRlIGdsb2JhbFtrZXldKVxuICAgICAgfSxcbiAgICB9XG4gIH0sXG59KVxuIiwiaW1wb3J0IHsgaW1wb3J0TW9kdWxlIH0gZnJvbSAnbG9jYWwtcGtnJ1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgS0VZUyB9IGZyb20gJy4vanNkb20ta2V5cydcblxuZXhwb3J0IGRlZmF1bHQgPEVudmlyb25tZW50Pih7XG4gIG5hbWU6ICdoYXBweS1kb20nLFxuICBhc3luYyBzZXR1cChnbG9iYWwpIHtcbiAgICBjb25zdCB7IFdpbmRvdyB9ID0gYXdhaXQgaW1wb3J0TW9kdWxlKCdoYXBweS1kb20nKSBhcyB0eXBlb2YgaW1wb3J0KCdoYXBweS1kb20nKVxuICAgIGNvbnN0IHdpbjogYW55ID0gbmV3IFdpbmRvdygpXG5cbiAgICBjb25zdCBrZXlzID0gS0VZUy5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luKSlcbiAgICAgIC5maWx0ZXIoayA9PiAhay5zdGFydHNXaXRoKCdfJykgJiYgIShrIGluIGdsb2JhbCkpXG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsLCBrZXksIHtcbiAgICAgICAgZ2V0KCkgeyByZXR1cm4gd2luW2tleV0gfSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBnbG9iYWwud2luZG93ID0gZ2xvYmFsXG5cbiAgICByZXR1cm4ge1xuICAgICAgdGVhcmRvd24oZ2xvYmFsKSB7XG4gICAgICAgIHdpbi5oYXBweURPTS5jYW5jZWxBc3luYygpXG4gICAgICAgIGtleXMuZm9yRWFjaChrZXkgPT4gZGVsZXRlIGdsb2JhbFtrZXldKVxuICAgICAgfSxcbiAgICB9XG4gIH0sXG59KVxuIiwiaW1wb3J0IG5vZGUgZnJvbSAnLi9ub2RlJ1xuaW1wb3J0IGpzZG9tIGZyb20gJy4vanNkb20nXG5pbXBvcnQgaGFwcHkgZnJvbSAnLi9oYXBweS1kb20nXG5cbmV4cG9ydCBjb25zdCBlbnZpcm9ubWVudHMgPSB7XG4gIG5vZGUsXG4gIGpzZG9tLFxuICAnaGFwcHktZG9tJzogaGFwcHksXG59XG4iLCIoZnVuY3Rpb24oKSB7XG5cdChmdW5jdGlvbihjaGFpU3Vic2V0KSB7XG5cdFx0aWYgKHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzID0gY2hhaVN1YnNldDtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuXHRcdFx0cmV0dXJuIGRlZmluZShmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIGNoYWlTdWJzZXQ7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGNoYWkudXNlKGNoYWlTdWJzZXQpO1xuXHRcdH1cblx0fSkoZnVuY3Rpb24oY2hhaSwgdXRpbHMpIHtcblx0XHR2YXIgQXNzZXJ0aW9uID0gY2hhaS5Bc3NlcnRpb247XG5cdFx0dmFyIGFzc2VydGlvblByb3RvdHlwZSA9IEFzc2VydGlvbi5wcm90b3R5cGU7XG5cblx0XHRBc3NlcnRpb24uYWRkTWV0aG9kKCdjb250YWluU3Vic2V0JywgZnVuY3Rpb24gKGV4cGVjdGVkKSB7XG5cdFx0XHR2YXIgYWN0dWFsID0gdXRpbHMuZmxhZyh0aGlzLCAnb2JqZWN0Jyk7XG5cdFx0XHR2YXIgc2hvd0RpZmYgPSBjaGFpLmNvbmZpZy5zaG93RGlmZjtcblxuXHRcdFx0YXNzZXJ0aW9uUHJvdG90eXBlLmFzc2VydC5jYWxsKHRoaXMsXG5cdFx0XHRcdGNvbXBhcmUoZXhwZWN0ZWQsIGFjdHVhbCksXG5cdFx0XHRcdCdleHBlY3RlZCAje2FjdH0gdG8gY29udGFpbiBzdWJzZXQgI3tleHB9Jyxcblx0XHRcdFx0J2V4cGVjdGVkICN7YWN0fSB0byBub3QgY29udGFpbiBzdWJzZXQgI3tleHB9Jyxcblx0XHRcdFx0ZXhwZWN0ZWQsXG5cdFx0XHRcdGFjdHVhbCxcblx0XHRcdFx0c2hvd0RpZmZcblx0XHRcdCk7XG5cdFx0fSk7XG5cblx0XHRjaGFpLmFzc2VydC5jb250YWluU3Vic2V0ID0gZnVuY3Rpb24odmFsLCBleHAsIG1zZykge1xuXHRcdFx0bmV3IGNoYWkuQXNzZXJ0aW9uKHZhbCwgbXNnKS50by5iZS5jb250YWluU3Vic2V0KGV4cCk7XG5cdFx0fTtcblxuXHRcdGZ1bmN0aW9uIGNvbXBhcmUoZXhwZWN0ZWQsIGFjdHVhbCkge1xuXHRcdFx0aWYgKGV4cGVjdGVkID09PSBhY3R1YWwpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAodHlwZW9mKGFjdHVhbCkgIT09IHR5cGVvZihleHBlY3RlZCkpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHR5cGVvZihleHBlY3RlZCkgIT09ICdvYmplY3QnIHx8IGV4cGVjdGVkID09PSBudWxsKSB7XG5cdFx0XHRcdHJldHVybiBleHBlY3RlZCA9PT0gYWN0dWFsO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCEhZXhwZWN0ZWQgJiYgIWFjdHVhbCkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGV4cGVjdGVkKSkge1xuXHRcdFx0XHRpZiAodHlwZW9mKGFjdHVhbC5sZW5ndGgpICE9PSAnbnVtYmVyJykge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgYWEgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhY3R1YWwpO1xuXHRcdFx0XHRyZXR1cm4gZXhwZWN0ZWQuZXZlcnkoZnVuY3Rpb24gKGV4cCkge1xuXHRcdFx0XHRcdHJldHVybiBhYS5zb21lKGZ1bmN0aW9uIChhY3QpIHtcblx0XHRcdFx0XHRcdHJldHVybiBjb21wYXJlKGV4cCwgYWN0KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChleHBlY3RlZCBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRcdFx0aWYgKGFjdHVhbCBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRcdFx0XHRyZXR1cm4gZXhwZWN0ZWQuZ2V0VGltZSgpID09PSBhY3R1YWwuZ2V0VGltZSgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gT2JqZWN0LmtleXMoZXhwZWN0ZWQpLmV2ZXJ5KGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdFx0dmFyIGVvID0gZXhwZWN0ZWRba2V5XTtcblx0XHRcdFx0dmFyIGFvID0gYWN0dWFsW2tleV07XG5cdFx0XHRcdGlmICh0eXBlb2YoZW8pID09PSAnb2JqZWN0JyAmJiBlbyAhPT0gbnVsbCAmJiBhbyAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdHJldHVybiBjb21wYXJlKGVvLCBhbyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHR5cGVvZihlbykgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRyZXR1cm4gZW8oYW8pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhbyA9PT0gZW87XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0pO1xuXG59KS5jYWxsKHRoaXMpO1xuXG4iLCJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJ1xuaW1wb3J0IHR5cGUgTWFnaWNTdHJpbmcgZnJvbSAnbWFnaWMtc3RyaW5nJ1xuaW1wb3J0IHsgcnBjIH0gZnJvbSAnLi4vLi4vLi4vcnVudGltZS9ycGMnXG5pbXBvcnQgeyBnZXRPcmlnaW5hbFBvcywgcG9zVG9OdW1iZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zb3VyY2UtbWFwJ1xuXG5leHBvcnQgdHlwZSBJbmxpbmVTbmFwc2hvdCA9IHtcbiAgc25hcHNob3Q6IHN0cmluZ1xuICBmaWxlOiBzdHJpbmdcbiAgbGluZTogbnVtYmVyXG4gIGNvbHVtbjogbnVtYmVyXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYXZlSW5saW5lU25hcHNob3RzKFxuICBzbmFwc2hvdHM6IEFycmF5PElubGluZVNuYXBzaG90Pixcbikge1xuICBjb25zdCBNYWdpY1N0cmluZyA9IChhd2FpdCBpbXBvcnQoJ21hZ2ljLXN0cmluZycpKS5kZWZhdWx0XG4gIGNvbnN0IGZpbGVzID0gbmV3IFNldChzbmFwc2hvdHMubWFwKGkgPT4gaS5maWxlKSlcbiAgYXdhaXQgUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShmaWxlcykubWFwKGFzeW5jKGZpbGUpID0+IHtcbiAgICBjb25zdCBtYXAgPSBhd2FpdCBycGMoKS5nZXRTb3VyY2VNYXAoZmlsZSlcbiAgICBjb25zdCBzbmFwcyA9IHNuYXBzaG90cy5maWx0ZXIoaSA9PiBpLmZpbGUgPT09IGZpbGUpXG4gICAgY29uc3QgY29kZSA9IGF3YWl0IGZzLnJlYWRGaWxlKGZpbGUsICd1dGY4JylcbiAgICBjb25zdCBzID0gbmV3IE1hZ2ljU3RyaW5nKGNvZGUpXG5cbiAgICBmb3IgKGNvbnN0IHNuYXAgb2Ygc25hcHMpIHtcbiAgICAgIGNvbnN0IHBvcyA9IGF3YWl0IGdldE9yaWdpbmFsUG9zKG1hcCwgc25hcClcbiAgICAgIGNvbnN0IGluZGV4ID0gcG9zVG9OdW1iZXIoY29kZSwgcG9zISlcbiAgICAgIHJlcGxhY2VJbmxpbmVTbmFwKGNvZGUsIHMsIGluZGV4LCBzbmFwLnNuYXBzaG90KSAvLyBUT0RPOiBzdXBwb3J0IGluZGVudDogJyAnLnJlcGVhdCg0KSlcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IHMudG9TdHJpbmcoKVxuICAgIGlmICh0cmFuc2Zvcm1lZCAhPT0gY29kZSlcbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShmaWxlLCB0cmFuc2Zvcm1lZCwgJ3V0Zi04JylcbiAgfSkpXG59XG5cbmNvbnN0IHN0YXJ0T2JqZWN0UmVnZXggPSAvKD86dG9NYXRjaElubGluZVNuYXBzaG90fHRvVGhyb3dFcnJvck1hdGNoaW5nSW5saW5lU25hcHNob3QpXFxzKlxcKFxccyooeykvbVxuXG5mdW5jdGlvbiBnZXRFbmRJbmRleChjb2RlOiBzdHJpbmcpIHtcbiAgbGV0IGNoYXJJbmRleCA9IC0xXG4gIGxldCBpblN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGwgLy9cbiAgbGV0IHN0YXJ0ZWRCcmFjZXJzID0gMFxuICBsZXQgZW5kZWRCcmFjZXJzID0gMFxuICBsZXQgYmVmb3JlQ2hhcjogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgd2hpbGUgKGNoYXJJbmRleCA8PSBjb2RlLmxlbmd0aCkge1xuICAgIGJlZm9yZUNoYXIgPSBjb2RlW2NoYXJJbmRleF1cbiAgICBjaGFySW5kZXgrK1xuICAgIGNvbnN0IGNoYXIgPSBjb2RlW2NoYXJJbmRleF1cblxuICAgIGNvbnN0IGlzQ2hhclN0cmluZyA9IGNoYXIgPT09ICdcIicgfHwgY2hhciA9PT0gJ1xcJycgfHwgY2hhciA9PT0gJ2AnXG5cbiAgICBpZiAoaXNDaGFyU3RyaW5nICYmIGJlZm9yZUNoYXIgIT09ICdcXFxcJylcbiAgICAgIGluU3RyaW5nID0gaW5TdHJpbmcgPT09IGNoYXIgPyBudWxsIDogY2hhclxuXG4gICAgaWYgKCFpblN0cmluZykge1xuICAgICAgaWYgKGNoYXIgPT09ICcoJylcbiAgICAgICAgc3RhcnRlZEJyYWNlcnMrK1xuICAgICAgaWYgKGNoYXIgPT09ICcpJylcbiAgICAgICAgZW5kZWRCcmFjZXJzKytcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRlZEJyYWNlcnMgJiYgZW5kZWRCcmFjZXJzICYmIHN0YXJ0ZWRCcmFjZXJzID09PSBlbmRlZEJyYWNlcnMpXG4gICAgICByZXR1cm4gY2hhckluZGV4XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZnVuY3Rpb24gcmVwbGFjZU9iamVjdFNuYXAoY29kZTogc3RyaW5nLCBzOiBNYWdpY1N0cmluZywgaW5kZXg6IG51bWJlciwgbmV3U25hcDogc3RyaW5nLCBpbmRlbnQgPSAnJykge1xuICBjb2RlID0gY29kZS5zbGljZShpbmRleClcbiAgY29uc3Qgc3RhcnRNYXRjaCA9IHN0YXJ0T2JqZWN0UmVnZXguZXhlYyhjb2RlKVxuICBpZiAoIXN0YXJ0TWF0Y2gpXG4gICAgcmV0dXJuIGZhbHNlXG5cbiAgY29uc3QgY2hhckluZGV4ID0gZ2V0RW5kSW5kZXgoY29kZSlcbiAgaWYgKGNoYXJJbmRleCA9PT0gbnVsbClcbiAgICByZXR1cm4gZmFsc2VcblxuICBzLmFwcGVuZExlZnQoaW5kZXggKyBjaGFySW5kZXgsIGAsICR7cHJlcGFyZVNuYXBTdHJpbmcobmV3U25hcCwgaW5kZW50KX1gKVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIHByZXBhcmVTbmFwU3RyaW5nKHNuYXA6IHN0cmluZywgaW5kZW50OiBzdHJpbmcpIHtcbiAgc25hcCA9IHNuYXAucmVwbGFjZSgvXFxcXC9nLCAnXFxcXFxcXFwnKVxuICAgIC5zcGxpdCgnXFxuJylcbiAgICAubWFwKGkgPT4gKGluZGVudCArIGkpLnRyaW1FbmQoKSlcbiAgICAuam9pbignXFxuJylcbiAgY29uc3QgaXNPbmVsaW5lID0gIXNuYXAuaW5jbHVkZXMoJ1xcbicpXG4gIHJldHVybiBpc09uZWxpbmVcbiAgICA/IGAnJHtzbmFwLnJlcGxhY2UoLycvZywgJ1xcXFxcXCcnKS50cmltKCl9J2BcbiAgICA6IGBcXGAke3NuYXAucmVwbGFjZSgvYC9nLCAnXFxcXGAnKS50cmltRW5kKCl9XFxgYFxufVxuXG5jb25zdCBzdGFydFJlZ2V4ID0gLyg/OnRvTWF0Y2hJbmxpbmVTbmFwc2hvdHx0b1Rocm93RXJyb3JNYXRjaGluZ0lubGluZVNuYXBzaG90KVxccypcXChcXHMqKFsnXCJgXFwpXSkvbVxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VJbmxpbmVTbmFwKGNvZGU6IHN0cmluZywgczogTWFnaWNTdHJpbmcsIGluZGV4OiBudW1iZXIsIG5ld1NuYXA6IHN0cmluZywgaW5kZW50ID0gJycpIHtcbiAgY29uc3Qgc3RhcnRNYXRjaCA9IHN0YXJ0UmVnZXguZXhlYyhjb2RlLnNsaWNlKGluZGV4KSlcbiAgaWYgKCFzdGFydE1hdGNoKVxuICAgIHJldHVybiByZXBsYWNlT2JqZWN0U25hcChjb2RlLCBzLCBpbmRleCwgbmV3U25hcCwgaW5kZW50KVxuXG4gIGNvbnN0IHNuYXBTdHJpbmcgPSBwcmVwYXJlU25hcFN0cmluZyhuZXdTbmFwLCBpbmRlbnQpXG5cbiAgY29uc3QgcXVvdGUgPSBzdGFydE1hdGNoWzFdXG5cbiAgY29uc3Qgc3RhcnRJbmRleCA9IGluZGV4ICsgc3RhcnRNYXRjaC5pbmRleCEgKyBzdGFydE1hdGNoWzBdLmxlbmd0aFxuXG4gIGlmIChxdW90ZSA9PT0gJyknKSB7XG4gICAgcy5hcHBlbmRSaWdodChzdGFydEluZGV4IC0gMSwgc25hcFN0cmluZylcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgY29uc3QgcXVvdGVFbmRSRSA9IG5ldyBSZWdFeHAoYCg/Ol58W15cXFxcXFxcXF0pJHtxdW90ZX1gKVxuICBjb25zdCBlbmRNYXRjaCA9IHF1b3RlRW5kUkUuZXhlYyhjb2RlLnNsaWNlKHN0YXJ0SW5kZXgpKVxuICBpZiAoIWVuZE1hdGNoKVxuICAgIHJldHVybiBmYWxzZVxuICBjb25zdCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBlbmRNYXRjaC5pbmRleCEgKyBlbmRNYXRjaFswXS5sZW5ndGhcbiAgcy5vdmVyd3JpdGUoc3RhcnRJbmRleCAtIDEsIGVuZEluZGV4LCBzbmFwU3RyaW5nKVxuXG4gIHJldHVybiB0cnVlXG59XG4iLCJcblxuXG4vKlxuICogQHZlcnNpb24gICAgMS40LjBcbiAqIEBkYXRlICAgICAgIDIwMTUtMTAtMjZcbiAqIEBzdGFiaWxpdHkgIDMgLSBTdGFibGVcbiAqIEBhdXRob3IgICAgIExhdXJpIFJvb2RlbiAoaHR0cHM6Ly9naXRodWIuY29tL2xpdGVqcy9uYXR1cmFsLWNvbXBhcmUtbGl0ZSlcbiAqIEBsaWNlbnNlICAgIE1JVCBMaWNlbnNlXG4gKi9cblxuXG52YXIgbmF0dXJhbENvbXBhcmUgPSBmdW5jdGlvbihhLCBiKSB7XG5cdHZhciBpLCBjb2RlQVxuXHQsIGNvZGVCID0gMVxuXHQsIHBvc0EgPSAwXG5cdCwgcG9zQiA9IDBcblx0LCBhbHBoYWJldCA9IFN0cmluZy5hbHBoYWJldFxuXG5cdGZ1bmN0aW9uIGdldENvZGUoc3RyLCBwb3MsIGNvZGUpIHtcblx0XHRpZiAoY29kZSkge1xuXHRcdFx0Zm9yIChpID0gcG9zOyBjb2RlID0gZ2V0Q29kZShzdHIsIGkpLCBjb2RlIDwgNzYgJiYgY29kZSA+IDY1OykgKytpO1xuXHRcdFx0cmV0dXJuICtzdHIuc2xpY2UocG9zIC0gMSwgaSlcblx0XHR9XG5cdFx0Y29kZSA9IGFscGhhYmV0ICYmIGFscGhhYmV0LmluZGV4T2Yoc3RyLmNoYXJBdChwb3MpKVxuXHRcdHJldHVybiBjb2RlID4gLTEgPyBjb2RlICsgNzYgOiAoKGNvZGUgPSBzdHIuY2hhckNvZGVBdChwb3MpIHx8IDApLCBjb2RlIDwgNDUgfHwgY29kZSA+IDEyNykgPyBjb2RlXG5cdFx0XHQ6IGNvZGUgPCA0NiA/IDY1ICAgICAgICAgICAgICAgLy8gLVxuXHRcdFx0OiBjb2RlIDwgNDggPyBjb2RlIC0gMVxuXHRcdFx0OiBjb2RlIDwgNTggPyBjb2RlICsgMTggICAgICAgIC8vIDAtOVxuXHRcdFx0OiBjb2RlIDwgNjUgPyBjb2RlIC0gMTFcblx0XHRcdDogY29kZSA8IDkxID8gY29kZSArIDExICAgICAgICAvLyBBLVpcblx0XHRcdDogY29kZSA8IDk3ID8gY29kZSAtIDM3XG5cdFx0XHQ6IGNvZGUgPCAxMjMgPyBjb2RlICsgNSAgICAgICAgLy8gYS16XG5cdFx0XHQ6IGNvZGUgLSA2M1xuXHR9XG5cblxuXHRpZiAoKGErPVwiXCIpICE9IChiKz1cIlwiKSkgZm9yICg7Y29kZUI7KSB7XG5cdFx0Y29kZUEgPSBnZXRDb2RlKGEsIHBvc0ErKylcblx0XHRjb2RlQiA9IGdldENvZGUoYiwgcG9zQisrKVxuXG5cdFx0aWYgKGNvZGVBIDwgNzYgJiYgY29kZUIgPCA3NiAmJiBjb2RlQSA+IDY2ICYmIGNvZGVCID4gNjYpIHtcblx0XHRcdGNvZGVBID0gZ2V0Q29kZShhLCBwb3NBLCBwb3NBKVxuXHRcdFx0Y29kZUIgPSBnZXRDb2RlKGIsIHBvc0IsIHBvc0EgPSBpKVxuXHRcdFx0cG9zQiA9IGlcblx0XHR9XG5cblx0XHRpZiAoY29kZUEgIT0gY29kZUIpIHJldHVybiAoY29kZUEgPCBjb2RlQikgPyAtMSA6IDFcblx0fVxuXHRyZXR1cm4gMFxufVxuXG50cnkge1xuXHRtb2R1bGUuZXhwb3J0cyA9IG5hdHVyYWxDb21wYXJlO1xufSBjYXRjaCAoZSkge1xuXHRTdHJpbmcubmF0dXJhbENvbXBhcmUgPSBuYXR1cmFsQ29tcGFyZTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaW1wb3J0IGZzLCB7IHByb21pc2VzIGFzIGZzcCB9IGZyb20gJ2ZzJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aGUnXG5pbXBvcnQgbmF0dXJhbENvbXBhcmUgZnJvbSAnbmF0dXJhbC1jb21wYXJlJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zUmVjZWl2ZWQgYXMgUHJldHR5Rm9ybWF0T3B0aW9ucyB9IGZyb20gJ3ByZXR0eS1mb3JtYXQnXG5pbXBvcnQge1xuICBmb3JtYXQgYXMgcHJldHR5Rm9ybWF0LFxufSBmcm9tICdwcmV0dHktZm9ybWF0J1xuaW1wb3J0IHR5cGUgeyBTbmFwc2hvdERhdGEsIFNuYXBzaG90VXBkYXRlU3RhdGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcydcbmltcG9ydCB7IGdldFNlcmlhbGl6ZXJzIH0gZnJvbSAnLi9wbHVnaW5zJ1xuXG4vLyBUT0RPOiByZXdyaXRlIGFuZCBjbGVhbiB1cFxuXG5leHBvcnQgY29uc3QgU05BUFNIT1RfVkVSU0lPTiA9ICcxJ1xuXG5jb25zdCB3cml0ZVNuYXBzaG90VmVyc2lvbiA9ICgpID0+IGAvLyBWaXRlc3QgU25hcHNob3QgdiR7U05BUFNIT1RfVkVSU0lPTn1gXG5cbmV4cG9ydCBjb25zdCB0ZXN0TmFtZVRvS2V5ID0gKHRlc3ROYW1lOiBzdHJpbmcsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcgPT5cbiAgYCR7dGVzdE5hbWV9ICR7Y291bnR9YFxuXG5leHBvcnQgY29uc3Qga2V5VG9UZXN0TmFtZSA9IChrZXk6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGlmICghLyBcXGQrJC8udGVzdChrZXkpKVxuICAgIHRocm93IG5ldyBFcnJvcignU25hcHNob3Qga2V5cyBtdXN0IGVuZCB3aXRoIGEgbnVtYmVyLicpXG5cbiAgcmV0dXJuIGtleS5yZXBsYWNlKC8gXFxkKyQvLCAnJylcbn1cblxuZXhwb3J0IGNvbnN0IGdldFNuYXBzaG90RGF0YSA9IChcbiAgc25hcHNob3RQYXRoOiBzdHJpbmcsXG4gIHVwZGF0ZTogU25hcHNob3RVcGRhdGVTdGF0ZSxcbik6IHtcbiAgZGF0YTogU25hcHNob3REYXRhXG4gIGRpcnR5OiBib29sZWFuXG59ID0+IHtcbiAgY29uc3QgZGF0YSA9IE9iamVjdC5jcmVhdGUobnVsbClcbiAgbGV0IHNuYXBzaG90Q29udGVudHMgPSAnJ1xuICBsZXQgZGlydHkgPSBmYWxzZVxuXG4gIGlmIChmcy5leGlzdHNTeW5jKHNuYXBzaG90UGF0aCkpIHtcbiAgICB0cnkge1xuICAgICAgc25hcHNob3RDb250ZW50cyA9IGZzLnJlYWRGaWxlU3luYyhzbmFwc2hvdFBhdGgsICd1dGY4JylcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgICAgY29uc3QgcG9wdWxhdGUgPSBuZXcgRnVuY3Rpb24oJ2V4cG9ydHMnLCBzbmFwc2hvdENvbnRlbnRzKVxuICAgICAgcG9wdWxhdGUoZGF0YSlcbiAgICB9XG4gICAgY2F0Y2gge31cbiAgfVxuXG4gIC8vIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSB2YWxpZGF0ZVNuYXBzaG90VmVyc2lvbihzbmFwc2hvdENvbnRlbnRzKVxuICBjb25zdCBpc0ludmFsaWQgPSBzbmFwc2hvdENvbnRlbnRzIC8vICYmIHZhbGlkYXRpb25SZXN1bHRcblxuICAvLyBpZiAodXBkYXRlID09PSAnbm9uZScgJiYgaXNJbnZhbGlkKVxuICAvLyAgIHRocm93IHZhbGlkYXRpb25SZXN1bHRcblxuICBpZiAoKHVwZGF0ZSA9PT0gJ2FsbCcgfHwgdXBkYXRlID09PSAnbmV3JykgJiYgaXNJbnZhbGlkKVxuICAgIGRpcnR5ID0gdHJ1ZVxuXG4gIHJldHVybiB7IGRhdGEsIGRpcnR5IH1cbn1cblxuLy8gQWRkIGV4dHJhIGxpbmUgYnJlYWtzIGF0IGJlZ2lubmluZyBhbmQgZW5kIG9mIG11bHRpbGluZSBzbmFwc2hvdFxuLy8gdG8gbWFrZSB0aGUgY29udGVudCBlYXNpZXIgdG8gcmVhZC5cbmV4cG9ydCBjb25zdCBhZGRFeHRyYUxpbmVCcmVha3MgPSAoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgc3RyaW5nLmluY2x1ZGVzKCdcXG4nKSA/IGBcXG4ke3N0cmluZ31cXG5gIDogc3RyaW5nXG5cbi8vIFJlbW92ZSBleHRyYSBsaW5lIGJyZWFrcyBhdCBiZWdpbm5pbmcgYW5kIGVuZCBvZiBtdWx0aWxpbmUgc25hcHNob3QuXG4vLyBJbnN0ZWFkIG9mIHRyaW0sIHdoaWNoIGNhbiByZW1vdmUgYWRkaXRpb25hbCBuZXdsaW5lcyBvciBzcGFjZXNcbi8vIGF0IGJlZ2lubmluZyBvciBlbmQgb2YgdGhlIGNvbnRlbnQgZnJvbSBhIGN1c3RvbSBzZXJpYWxpemVyLlxuZXhwb3J0IGNvbnN0IHJlbW92ZUV4dHJhTGluZUJyZWFrcyA9IChzdHJpbmc6IHN0cmluZyk6IHN0cmluZyA9PlxuICBzdHJpbmcubGVuZ3RoID4gMiAmJiBzdHJpbmcuc3RhcnRzV2l0aCgnXFxuJykgJiYgc3RyaW5nLmVuZHNXaXRoKCdcXG4nKVxuICAgID8gc3RyaW5nLnNsaWNlKDEsIC0xKVxuICAgIDogc3RyaW5nXG5cbi8vIGV4cG9ydCBjb25zdCByZW1vdmVMaW5lc0JlZm9yZUV4dGVybmFsTWF0Y2hlclRyYXAgPSAoc3RhY2s6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4vLyAgIGNvbnN0IGxpbmVzID0gc3RhY2suc3BsaXQoJ1xcbicpXG5cbi8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkgKz0gMSkge1xuLy8gICAgIC8vIEl0J3MgYSBmdW5jdGlvbiBuYW1lIHNwZWNpZmllZCBpbiBgcGFja2FnZXMvZXhwZWN0L3NyYy9pbmRleC50c2Bcbi8vICAgICAvLyBmb3IgZXh0ZXJuYWwgY3VzdG9tIG1hdGNoZXJzLlxuLy8gICAgIGlmIChsaW5lc1tpXS5pbmNsdWRlcygnX19FWFRFUk5BTF9NQVRDSEVSX1RSQVBfXycpKVxuLy8gICAgICAgcmV0dXJuIGxpbmVzLnNsaWNlKGkgKyAxKS5qb2luKCdcXG4nKVxuLy8gICB9XG5cbi8vICAgcmV0dXJuIHN0YWNrXG4vLyB9XG5cbmNvbnN0IGVzY2FwZVJlZ2V4ID0gdHJ1ZVxuY29uc3QgcHJpbnRGdW5jdGlvbk5hbWUgPSBmYWxzZVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplKHZhbDogdW5rbm93bixcbiAgaW5kZW50ID0gMixcbiAgZm9ybWF0T3ZlcnJpZGVzOiBQcmV0dHlGb3JtYXRPcHRpb25zID0ge30pOiBzdHJpbmcge1xuICByZXR1cm4gbm9ybWFsaXplTmV3bGluZXMoXG4gICAgcHJldHR5Rm9ybWF0KHZhbCwge1xuICAgICAgZXNjYXBlUmVnZXgsXG4gICAgICBpbmRlbnQsXG4gICAgICBwbHVnaW5zOiBnZXRTZXJpYWxpemVycygpLFxuICAgICAgcHJpbnRGdW5jdGlvbk5hbWUsXG4gICAgICAuLi5mb3JtYXRPdmVycmlkZXMsXG4gICAgfSksXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pbmlmeSh2YWw6IHVua25vd24pOiBzdHJpbmcge1xuICByZXR1cm4gcHJldHR5Rm9ybWF0KHZhbCwge1xuICAgIGVzY2FwZVJlZ2V4LFxuICAgIG1pbjogdHJ1ZSxcbiAgICBwbHVnaW5zOiBnZXRTZXJpYWxpemVycygpLFxuICAgIHByaW50RnVuY3Rpb25OYW1lLFxuICB9KVxufVxuXG4vLyBSZW1vdmUgZG91YmxlIHF1b3RlIG1hcmtzIGFuZCB1bmVzY2FwZSBkb3VibGUgcXVvdGVzIGFuZCBiYWNrc2xhc2hlcy5cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZVN0cmluZyhzdHJpbmdpZmllZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0cmluZ2lmaWVkLnNsaWNlKDEsIC0xKS5yZXBsYWNlKC9cXFxcKFwifFxcXFwpL2csICckMScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVCYWNrdGlja1N0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvYHxcXFxcfFxcJHsvZywgJ1xcXFwkJicpXG59XG5cbmZ1bmN0aW9uIHByaW50QmFja3RpY2tTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYFxcYCR7ZXNjYXBlQmFja3RpY2tTdHJpbmcoc3RyKX1cXGBgXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVEaXJlY3RvcnlFeGlzdHMoZmlsZVBhdGg6IHN0cmluZyk6IHZvaWQge1xuICB0cnkge1xuICAgIGZzLm1rZGlyU3luYyhwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIH1cbiAgY2F0Y2ggeyB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5ld2xpbmVzKHN0cmluZzogc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxyXFxufFxcci9nLCAnXFxuJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNhdmVTbmFwc2hvdEZpbGUoXG4gIHNuYXBzaG90RGF0YTogU25hcHNob3REYXRhLFxuICBzbmFwc2hvdFBhdGg6IHN0cmluZyxcbikge1xuICBjb25zdCBzbmFwc2hvdHMgPSBPYmplY3Qua2V5cyhzbmFwc2hvdERhdGEpXG4gICAgLnNvcnQobmF0dXJhbENvbXBhcmUpXG4gICAgLm1hcChcbiAgICAgIGtleSA9PiBgZXhwb3J0c1ske3ByaW50QmFja3RpY2tTdHJpbmcoa2V5KX1dID0gJHtwcmludEJhY2t0aWNrU3RyaW5nKG5vcm1hbGl6ZU5ld2xpbmVzKHNuYXBzaG90RGF0YVtrZXldKSl9O2AsXG4gICAgKVxuXG4gIGVuc3VyZURpcmVjdG9yeUV4aXN0cyhzbmFwc2hvdFBhdGgpXG4gIGF3YWl0IGZzcC53cml0ZUZpbGUoXG4gICAgc25hcHNob3RQYXRoLFxuICAgIGAke3dyaXRlU25hcHNob3RWZXJzaW9uKCl9XFxuXFxuJHtzbmFwc2hvdHMuam9pbignXFxuXFxuJyl9XFxuYCxcbiAgICAndXRmLTgnLFxuICApXG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCB0eXBlIHsgQ29uZmlnIH0gZnJvbSAnQGplc3QvdHlwZXMnXG4vLyBpbXBvcnQgeyBnZXRTdGFja1RyYWNlTGluZXMsIGdldFRvcEZyYW1lIH0gZnJvbSAnamVzdC1tZXNzYWdlLXV0aWwnXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnNSZWNlaXZlZCBhcyBQcmV0dHlGb3JtYXRPcHRpb25zIH0gZnJvbSAncHJldHR5LWZvcm1hdCdcbmltcG9ydCB0eXBlIHsgU25hcHNob3REYXRhLCBTbmFwc2hvdE1hdGNoT3B0aW9ucywgU25hcHNob3RTdGF0ZU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi90eXBlcydcbmltcG9ydCB7IHNsYXNoIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBwYXJzZVN0YWNrdHJhY2UgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zb3VyY2UtbWFwJ1xuaW1wb3J0IHR5cGUgeyBJbmxpbmVTbmFwc2hvdCB9IGZyb20gJy4vaW5saW5lU25hcHNob3QnXG5pbXBvcnQgeyBzYXZlSW5saW5lU25hcHNob3RzIH0gZnJvbSAnLi9pbmxpbmVTbmFwc2hvdCdcblxuaW1wb3J0IHtcbiAgYWRkRXh0cmFMaW5lQnJlYWtzLFxuICBnZXRTbmFwc2hvdERhdGEsXG4gIGtleVRvVGVzdE5hbWUsXG4gIHJlbW92ZUV4dHJhTGluZUJyZWFrcyxcbiAgc2F2ZVNuYXBzaG90RmlsZSxcbiAgc2VyaWFsaXplLFxuICB0ZXN0TmFtZVRvS2V5LFxufSBmcm9tICcuL3V0aWxzJ1xuXG50eXBlIFNuYXBzaG90UmV0dXJuT3B0aW9ucyA9IHtcbiAgYWN0dWFsOiBzdHJpbmdcbiAgY291bnQ6IG51bWJlclxuICBleHBlY3RlZD86IHN0cmluZ1xuICBrZXk6IHN0cmluZ1xuICBwYXNzOiBib29sZWFuXG59XG5cbnR5cGUgU2F2ZVN0YXR1cyA9IHtcbiAgZGVsZXRlZDogYm9vbGVhblxuICBzYXZlZDogYm9vbGVhblxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbmFwc2hvdFN0YXRlIHtcbiAgcHJpdmF0ZSBfY291bnRlcnM6IE1hcDxzdHJpbmcsIG51bWJlcj5cbiAgcHJpdmF0ZSBfZGlydHk6IGJvb2xlYW5cbiAgcHJpdmF0ZSBfdXBkYXRlU25hcHNob3Q6IENvbmZpZy5TbmFwc2hvdFVwZGF0ZVN0YXRlXG4gIHByaXZhdGUgX3NuYXBzaG90RGF0YTogU25hcHNob3REYXRhXG4gIHByaXZhdGUgX2luaXRpYWxEYXRhOiBTbmFwc2hvdERhdGFcbiAgcHJpdmF0ZSBfc25hcHNob3RQYXRoOiBzdHJpbmdcbiAgcHJpdmF0ZSBfaW5saW5lU25hcHNob3RzOiBBcnJheTxJbmxpbmVTbmFwc2hvdD5cbiAgcHJpdmF0ZSBfdW5jaGVja2VkS2V5czogU2V0PHN0cmluZz5cbiAgcHJpdmF0ZSBfc25hcHNob3RGb3JtYXQ6IFByZXR0eUZvcm1hdE9wdGlvbnNcblxuICBhZGRlZDogbnVtYmVyXG4gIGV4cGFuZDogYm9vbGVhblxuICBtYXRjaGVkOiBudW1iZXJcbiAgdW5tYXRjaGVkOiBudW1iZXJcbiAgdXBkYXRlZDogbnVtYmVyXG5cbiAgY29uc3RydWN0b3Ioc25hcHNob3RQYXRoOiBzdHJpbmcsIG9wdGlvbnM6IFNuYXBzaG90U3RhdGVPcHRpb25zKSB7XG4gICAgdGhpcy5fc25hcHNob3RQYXRoID0gc25hcHNob3RQYXRoXG4gICAgY29uc3QgeyBkYXRhLCBkaXJ0eSB9ID0gZ2V0U25hcHNob3REYXRhKFxuICAgICAgdGhpcy5fc25hcHNob3RQYXRoLFxuICAgICAgb3B0aW9ucy51cGRhdGVTbmFwc2hvdCxcbiAgICApXG4gICAgdGhpcy5faW5pdGlhbERhdGEgPSBkYXRhXG4gICAgdGhpcy5fc25hcHNob3REYXRhID0gZGF0YVxuICAgIHRoaXMuX2RpcnR5ID0gZGlydHlcbiAgICB0aGlzLl9pbmxpbmVTbmFwc2hvdHMgPSBbXVxuICAgIHRoaXMuX3VuY2hlY2tlZEtleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKHRoaXMuX3NuYXBzaG90RGF0YSkpXG4gICAgdGhpcy5fY291bnRlcnMgPSBuZXcgTWFwKClcbiAgICB0aGlzLmV4cGFuZCA9IG9wdGlvbnMuZXhwYW5kIHx8IGZhbHNlXG4gICAgdGhpcy5hZGRlZCA9IDBcbiAgICB0aGlzLm1hdGNoZWQgPSAwXG4gICAgdGhpcy51bm1hdGNoZWQgPSAwXG4gICAgdGhpcy5fdXBkYXRlU25hcHNob3QgPSBvcHRpb25zLnVwZGF0ZVNuYXBzaG90XG4gICAgdGhpcy51cGRhdGVkID0gMFxuICAgIHRoaXMuX3NuYXBzaG90Rm9ybWF0ID0ge1xuICAgICAgcHJpbnRCYXNpY1Byb3RvdHlwZTogZmFsc2UsXG4gICAgICAuLi5vcHRpb25zLnNuYXBzaG90Rm9ybWF0LFxuICAgIH1cbiAgfVxuXG4gIG1hcmtTbmFwc2hvdHNBc0NoZWNrZWRGb3JUZXN0KHRlc3ROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl91bmNoZWNrZWRLZXlzLmZvckVhY2goKHVuY2hlY2tlZEtleSkgPT4ge1xuICAgICAgaWYgKGtleVRvVGVzdE5hbWUodW5jaGVja2VkS2V5KSA9PT0gdGVzdE5hbWUpXG4gICAgICAgIHRoaXMuX3VuY2hlY2tlZEtleXMuZGVsZXRlKHVuY2hlY2tlZEtleSlcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBfYWRkU25hcHNob3QoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgcmVjZWl2ZWRTZXJpYWxpemVkOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge2lzSW5saW5lOiBib29sZWFuOyBlcnJvcj86IEVycm9yfSxcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5fZGlydHkgPSB0cnVlXG4gICAgaWYgKG9wdGlvbnMuaXNJbmxpbmUpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gb3B0aW9ucy5lcnJvciB8fCBuZXcgRXJyb3IoJ1Vua25vd24gZXJyb3InKVxuICAgICAgY29uc3Qgc3RhY2tzID0gcGFyc2VTdGFja3RyYWNlKGVycm9yKVxuICAgICAgc3RhY2tzLmZvckVhY2goaSA9PiBpLmZpbGUgPSBzbGFzaChpLmZpbGUpKVxuICAgICAgY29uc3Qgc3RhY2sgPSBzdGFja3MuZmluZChpID0+IHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18uY3R4LmZpbGVzLmluY2x1ZGVzKGkuZmlsZSkpXG4gICAgICBpZiAoIXN0YWNrKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnVml0ZXN0OiBDb3VsZG5cXCd0IGluZmVyIHN0YWNrIGZyYW1lIGZvciBpbmxpbmUgc25hcHNob3QuJyxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgdGhpcy5faW5saW5lU25hcHNob3RzLnB1c2goe1xuICAgICAgICBzbmFwc2hvdDogcmVjZWl2ZWRTZXJpYWxpemVkLFxuICAgICAgICAuLi5zdGFjayxcbiAgICAgIH0pXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fc25hcHNob3REYXRhW2tleV0gPSByZWNlaXZlZFNlcmlhbGl6ZWRcbiAgICB9XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLl9zbmFwc2hvdERhdGEgPSB0aGlzLl9pbml0aWFsRGF0YVxuICAgIC8vIHRoaXMuX2lubGluZVNuYXBzaG90cyA9IFtdXG4gICAgdGhpcy5fY291bnRlcnMgPSBuZXcgTWFwKClcbiAgICB0aGlzLmFkZGVkID0gMFxuICAgIHRoaXMubWF0Y2hlZCA9IDBcbiAgICB0aGlzLnVubWF0Y2hlZCA9IDBcbiAgICB0aGlzLnVwZGF0ZWQgPSAwXG4gIH1cblxuICBhc3luYyBzYXZlKCk6IFByb21pc2U8U2F2ZVN0YXR1cz4ge1xuICAgIGNvbnN0IGhhc0V4dGVybmFsU25hcHNob3RzID0gT2JqZWN0LmtleXModGhpcy5fc25hcHNob3REYXRhKS5sZW5ndGhcbiAgICBjb25zdCBoYXNJbmxpbmVTbmFwc2hvdHMgPSB0aGlzLl9pbmxpbmVTbmFwc2hvdHMubGVuZ3RoXG4gICAgY29uc3QgaXNFbXB0eSA9ICFoYXNFeHRlcm5hbFNuYXBzaG90cyAmJiAhaGFzSW5saW5lU25hcHNob3RzXG5cbiAgICBjb25zdCBzdGF0dXM6IFNhdmVTdGF0dXMgPSB7XG4gICAgICBkZWxldGVkOiBmYWxzZSxcbiAgICAgIHNhdmVkOiBmYWxzZSxcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMuX2RpcnR5IHx8IHRoaXMuX3VuY2hlY2tlZEtleXMuc2l6ZSkgJiYgIWlzRW1wdHkpIHtcbiAgICAgIGlmIChoYXNFeHRlcm5hbFNuYXBzaG90cylcbiAgICAgICAgYXdhaXQgc2F2ZVNuYXBzaG90RmlsZSh0aGlzLl9zbmFwc2hvdERhdGEsIHRoaXMuX3NuYXBzaG90UGF0aClcbiAgICAgIGlmIChoYXNJbmxpbmVTbmFwc2hvdHMpXG4gICAgICAgIGF3YWl0IHNhdmVJbmxpbmVTbmFwc2hvdHModGhpcy5faW5saW5lU25hcHNob3RzKVxuXG4gICAgICBzdGF0dXMuc2F2ZWQgPSB0cnVlXG4gICAgfVxuICAgIGVsc2UgaWYgKCFoYXNFeHRlcm5hbFNuYXBzaG90cyAmJiBmcy5leGlzdHNTeW5jKHRoaXMuX3NuYXBzaG90UGF0aCkpIHtcbiAgICAgIGlmICh0aGlzLl91cGRhdGVTbmFwc2hvdCA9PT0gJ2FsbCcpXG4gICAgICAgIGZzLnVubGlua1N5bmModGhpcy5fc25hcHNob3RQYXRoKVxuXG4gICAgICBzdGF0dXMuZGVsZXRlZCA9IHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdHVzXG4gIH1cblxuICBnZXRVbmNoZWNrZWRDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl91bmNoZWNrZWRLZXlzLnNpemUgfHwgMFxuICB9XG5cbiAgZ2V0VW5jaGVja2VkS2V5cygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl91bmNoZWNrZWRLZXlzKVxuICB9XG5cbiAgcmVtb3ZlVW5jaGVja2VkS2V5cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdXBkYXRlU25hcHNob3QgPT09ICdhbGwnICYmIHRoaXMuX3VuY2hlY2tlZEtleXMuc2l6ZSkge1xuICAgICAgdGhpcy5fZGlydHkgPSB0cnVlXG4gICAgICB0aGlzLl91bmNoZWNrZWRLZXlzLmZvckVhY2goa2V5ID0+IGRlbGV0ZSB0aGlzLl9zbmFwc2hvdERhdGFba2V5XSlcbiAgICAgIHRoaXMuX3VuY2hlY2tlZEtleXMuY2xlYXIoKVxuICAgIH1cbiAgfVxuXG4gIG1hdGNoKHtcbiAgICB0ZXN0TmFtZSxcbiAgICByZWNlaXZlZCxcbiAgICBrZXksXG4gICAgaW5saW5lU25hcHNob3QsXG4gICAgaXNJbmxpbmUsXG4gICAgZXJyb3IsXG4gIH06IFNuYXBzaG90TWF0Y2hPcHRpb25zKTogU25hcHNob3RSZXR1cm5PcHRpb25zIHtcbiAgICB0aGlzLl9jb3VudGVycy5zZXQodGVzdE5hbWUsICh0aGlzLl9jb3VudGVycy5nZXQodGVzdE5hbWUpIHx8IDApICsgMSlcbiAgICBjb25zdCBjb3VudCA9IE51bWJlcih0aGlzLl9jb3VudGVycy5nZXQodGVzdE5hbWUpKVxuXG4gICAgaWYgKCFrZXkpXG4gICAgICBrZXkgPSB0ZXN0TmFtZVRvS2V5KHRlc3ROYW1lLCBjb3VudClcblxuICAgIC8vIERvIG5vdCBtYXJrIHRoZSBzbmFwc2hvdCBhcyBcImNoZWNrZWRcIiBpZiB0aGUgc25hcHNob3QgaXMgaW5saW5lIGFuZFxuICAgIC8vIHRoZXJlJ3MgYW4gZXh0ZXJuYWwgc25hcHNob3QuIFRoaXMgd2F5IHRoZSBleHRlcm5hbCBzbmFwc2hvdCBjYW4gYmVcbiAgICAvLyByZW1vdmVkIHdpdGggYC0tdXBkYXRlU25hcHNob3RgLlxuICAgIGlmICghKGlzSW5saW5lICYmIHRoaXMuX3NuYXBzaG90RGF0YVtrZXldICE9PSB1bmRlZmluZWQpKVxuICAgICAgdGhpcy5fdW5jaGVja2VkS2V5cy5kZWxldGUoa2V5KVxuXG4gICAgY29uc3QgcmVjZWl2ZWRTZXJpYWxpemVkID0gYWRkRXh0cmFMaW5lQnJlYWtzKHNlcmlhbGl6ZShyZWNlaXZlZCwgdW5kZWZpbmVkLCB0aGlzLl9zbmFwc2hvdEZvcm1hdCkpXG4gICAgY29uc3QgZXhwZWN0ZWQgPSBpc0lubGluZSA/IGlubGluZVNuYXBzaG90IDogdGhpcy5fc25hcHNob3REYXRhW2tleV1cbiAgICBjb25zdCBwYXNzID0gZXhwZWN0ZWQ/LnRyaW0oKSA9PT0gcmVjZWl2ZWRTZXJpYWxpemVkPy50cmltKClcbiAgICBjb25zdCBoYXNTbmFwc2hvdCA9IGV4cGVjdGVkICE9PSB1bmRlZmluZWRcbiAgICBjb25zdCBzbmFwc2hvdElzUGVyc2lzdGVkID0gaXNJbmxpbmUgfHwgZnMuZXhpc3RzU3luYyh0aGlzLl9zbmFwc2hvdFBhdGgpXG5cbiAgICBpZiAocGFzcyAmJiAhaXNJbmxpbmUpIHtcbiAgICAgIC8vIEV4ZWN1dGluZyBhIHNuYXBzaG90IGZpbGUgYXMgSmF2YVNjcmlwdCBhbmQgd3JpdGluZyB0aGUgc3RyaW5ncyBiYWNrXG4gICAgICAvLyB3aGVuIG90aGVyIHNuYXBzaG90cyBoYXZlIGNoYW5nZWQgbG9zZXMgdGhlIHByb3BlciBlc2NhcGluZyBmb3Igc29tZVxuICAgICAgLy8gY2hhcmFjdGVycy4gU2luY2Ugd2UgY2hlY2sgZXZlcnkgc25hcHNob3QgaW4gZXZlcnkgdGVzdCwgdXNlIHRoZSBuZXdseVxuICAgICAgLy8gZ2VuZXJhdGVkIGZvcm1hdHRlZCBzdHJpbmcuXG4gICAgICAvLyBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IHJlbGV2YW50IHdoZW4gYSBzbmFwc2hvdCBpcyBhZGRlZCBhbmQgdGhlIGRpcnR5XG4gICAgICAvLyBmbGFnIGlzIHNldC5cbiAgICAgIHRoaXMuX3NuYXBzaG90RGF0YVtrZXldID0gcmVjZWl2ZWRTZXJpYWxpemVkXG4gICAgfVxuXG4gICAgLy8gVGhlc2UgYXJlIHRoZSBjb25kaXRpb25zIG9uIHdoZW4gdG8gd3JpdGUgc25hcHNob3RzOlxuICAgIC8vICAqIFRoZXJlJ3Mgbm8gc25hcHNob3QgZmlsZSBpbiBhIG5vbi1DSSBlbnZpcm9ubWVudC5cbiAgICAvLyAgKiBUaGVyZSBpcyBhIHNuYXBzaG90IGZpbGUgYW5kIHdlIGRlY2lkZWQgdG8gdXBkYXRlIHRoZSBzbmFwc2hvdC5cbiAgICAvLyAgKiBUaGVyZSBpcyBhIHNuYXBzaG90IGZpbGUsIGJ1dCBpdCBkb2Vzbid0IGhhdmUgdGhpcyBzbmFwaHNvdC5cbiAgICAvLyBUaGVzZSBhcmUgdGhlIGNvbmRpdGlvbnMgb24gd2hlbiBub3QgdG8gd3JpdGUgc25hcHNob3RzOlxuICAgIC8vICAqIFRoZSB1cGRhdGUgZmxhZyBpcyBzZXQgdG8gJ25vbmUnLlxuICAgIC8vICAqIFRoZXJlJ3Mgbm8gc25hcHNob3QgZmlsZSBvciBhIGZpbGUgd2l0aG91dCB0aGlzIHNuYXBzaG90IG9uIGEgQ0kgZW52aXJvbm1lbnQuXG4gICAgaWYgKFxuICAgICAgKGhhc1NuYXBzaG90ICYmIHRoaXMuX3VwZGF0ZVNuYXBzaG90ID09PSAnYWxsJylcbiAgICAgICB8fCAoKCFoYXNTbmFwc2hvdCB8fCAhc25hcHNob3RJc1BlcnNpc3RlZClcbiAgICAgICAgICYmICh0aGlzLl91cGRhdGVTbmFwc2hvdCA9PT0gJ25ldycgfHwgdGhpcy5fdXBkYXRlU25hcHNob3QgPT09ICdhbGwnKSlcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLl91cGRhdGVTbmFwc2hvdCA9PT0gJ2FsbCcpIHtcbiAgICAgICAgaWYgKCFwYXNzKSB7XG4gICAgICAgICAgaWYgKGhhc1NuYXBzaG90KVxuICAgICAgICAgICAgdGhpcy51cGRhdGVkKytcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmFkZGVkKytcblxuICAgICAgICAgIHRoaXMuX2FkZFNuYXBzaG90KGtleSwgcmVjZWl2ZWRTZXJpYWxpemVkLCB7IGVycm9yLCBpc0lubGluZSB9KVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMubWF0Y2hlZCsrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLl9hZGRTbmFwc2hvdChrZXksIHJlY2VpdmVkU2VyaWFsaXplZCwgeyBlcnJvciwgaXNJbmxpbmUgfSlcbiAgICAgICAgdGhpcy5hZGRlZCsrXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjdHVhbDogJycsXG4gICAgICAgIGNvdW50LFxuICAgICAgICBleHBlY3RlZDogJycsXG4gICAgICAgIGtleSxcbiAgICAgICAgcGFzczogdHJ1ZSxcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZiAoIXBhc3MpIHtcbiAgICAgICAgdGhpcy51bm1hdGNoZWQrK1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGFjdHVhbDogcmVtb3ZlRXh0cmFMaW5lQnJlYWtzKHJlY2VpdmVkU2VyaWFsaXplZCksXG4gICAgICAgICAgY291bnQsXG4gICAgICAgICAgZXhwZWN0ZWQ6XG4gICAgICAgICAgICAgZXhwZWN0ZWQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgPyByZW1vdmVFeHRyYUxpbmVCcmVha3MoZXhwZWN0ZWQpXG4gICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcGFzczogZmFsc2UsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLm1hdGNoZWQrK1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGFjdHVhbDogJycsXG4gICAgICAgICAgY291bnQsXG4gICAgICAgICAgZXhwZWN0ZWQ6ICcnLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBwYXNzOiB0cnVlLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdwYXRoZSdcbmltcG9ydCB7IGV4cGVjdCB9IGZyb20gJ2NoYWknXG5pbXBvcnQgdHlwZSB7IFNuYXBzaG90UmVzdWx0LCBUZXN0IH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBycGMgfSBmcm9tICcuLi8uLi9ydW50aW1lL3JwYydcbmltcG9ydCB7IGRlZXBNZXJnZSwgZ2V0TmFtZXMgfSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IGVxdWFscywgaXRlcmFibGVFcXVhbGl0eSwgc3Vic2V0RXF1YWxpdHkgfSBmcm9tICcuLi9jaGFpL2plc3QtdXRpbHMnXG5pbXBvcnQgU25hcHNob3RTdGF0ZSBmcm9tICcuL3BvcnQvc3RhdGUnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dCB7XG4gIGZpbGU6IHN0cmluZ1xuICB0aXRsZT86IHN0cmluZ1xuICBmdWxsVGl0bGU/OiBzdHJpbmdcbn1cblxuY29uc3QgcmVzb2x2ZVNuYXBzaG90UGF0aCA9ICh0ZXN0UGF0aDogc3RyaW5nKSA9PlxuICBwYXRoLmpvaW4oXG4gICAgcGF0aC5qb2luKHBhdGguZGlybmFtZSh0ZXN0UGF0aCksICdfX3NuYXBzaG90c19fJyksXG4gICAgYCR7cGF0aC5iYXNlbmFtZSh0ZXN0UGF0aCl9LnNuYXBgLFxuICApXG5cbmV4cG9ydCBjbGFzcyBTbmFwc2hvdENsaWVudCB7XG4gIHRlc3Q6IFRlc3QgfCB1bmRlZmluZWRcbiAgdGVzdEZpbGUgPSAnJ1xuICBzbmFwc2hvdFN0YXRlOiBTbmFwc2hvdFN0YXRlIHwgdW5kZWZpbmVkXG5cbiAgc2V0VGVzdCh0ZXN0OiBUZXN0KSB7XG4gICAgdGhpcy50ZXN0ID0gdGVzdFxuXG4gICAgaWYgKHRoaXMudGVzdEZpbGUgIT09IHRoaXMudGVzdC5maWxlIS5maWxlcGF0aCkge1xuICAgICAgaWYgKHRoaXMuc25hcHNob3RTdGF0ZSlcbiAgICAgICAgdGhpcy5zYXZlU25hcCgpXG5cbiAgICAgIHRoaXMudGVzdEZpbGUgPSB0aGlzLnRlc3QhLmZpbGUhLmZpbGVwYXRoXG4gICAgICB0aGlzLnNuYXBzaG90U3RhdGUgPSBuZXcgU25hcHNob3RTdGF0ZShcbiAgICAgICAgcmVzb2x2ZVNuYXBzaG90UGF0aCh0aGlzLnRlc3RGaWxlKSxcbiAgICAgICAgcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXyEuY29uZmlnLnNuYXBzaG90T3B0aW9ucyxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBjbGVhclRlc3QoKSB7XG4gICAgdGhpcy50ZXN0ID0gdW5kZWZpbmVkXG4gIH1cblxuICBhc3NlcnQocmVjZWl2ZWQ6IHVua25vd24sIG1lc3NhZ2U/OiBzdHJpbmcsIGlzSW5saW5lID0gZmFsc2UsIHByb3BlcnRpZXM/OiBvYmplY3QsIGlubGluZVNuYXBzaG90Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRlc3QpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NuYXBzaG90IGNhbm5vdCBiZSB1c2VkIG91dHNpZGUgb2YgdGVzdCcpXG5cbiAgICBpZiAodHlwZW9mIHByb3BlcnRpZXMgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAodHlwZW9mIHJlY2VpdmVkICE9PSAnb2JqZWN0JyB8fCAhcmVjZWl2ZWQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUmVjZWl2ZWQgdmFsdWUgbXVzdCBiZSBhbiBvYmplY3Qgd2hlbiB0aGUgbWF0Y2hlciBoYXMgcHJvcGVydGllcycpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBhc3MgPSBlcXVhbHMocmVjZWl2ZWQsIHByb3BlcnRpZXMsIFtpdGVyYWJsZUVxdWFsaXR5LCBzdWJzZXRFcXVhbGl0eV0pXG4gICAgICAgIGlmICghcGFzcylcbiAgICAgICAgICBleHBlY3QocmVjZWl2ZWQpLnRvQmUocHJvcGVydGllcylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlY2VpdmVkID0gZGVlcE1lcmdlKHJlY2VpdmVkLCBwcm9wZXJ0aWVzKVxuICAgICAgfVxuICAgICAgY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgIGVyci5tZXNzYWdlID0gJ1NuYXBzaG90IG1pc21hdGNoZWQnXG4gICAgICAgIHRocm93IGVyclxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHRlc3ROYW1lID0gW1xuICAgICAgLi4uZ2V0TmFtZXModGhpcy50ZXN0KS5zbGljZSgxKSxcbiAgICAgIC4uLihtZXNzYWdlID8gW21lc3NhZ2VdIDogW10pLFxuICAgIF0uam9pbignID4gJylcblxuICAgIGNvbnN0IHsgYWN0dWFsLCBleHBlY3RlZCwga2V5LCBwYXNzIH0gPSB0aGlzLnNuYXBzaG90U3RhdGUhLm1hdGNoKHtcbiAgICAgIHRlc3ROYW1lLFxuICAgICAgcmVjZWl2ZWQsXG4gICAgICBpc0lubGluZSxcbiAgICAgIGlubGluZVNuYXBzaG90OiBpbmxpbmVTbmFwc2hvdD8udHJpbSgpLFxuICAgIH0pXG5cbiAgICBpZiAoIXBhc3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGV4cGVjdChhY3R1YWwudHJpbSgpKS5lcXVhbHMoZXhwZWN0ZWQgPyBleHBlY3RlZC50cmltKCkgOiAnJylcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIGVycm9yLm1lc3NhZ2UgPSBgU25hcHNob3QgXFxgJHtrZXkgfHwgJ3Vua25vd24nfVxcYCBtaXNtYXRjaGVkYFxuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmVTbmFwKCkge1xuICAgIGlmICghdGhpcy50ZXN0RmlsZSB8fCAhdGhpcy5zbmFwc2hvdFN0YXRlKSByZXR1cm5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYWNrU25hcHNob3RTdGF0ZSh0aGlzLnRlc3RGaWxlLCB0aGlzLnNuYXBzaG90U3RhdGUpXG4gICAgYXdhaXQgcnBjKCkuc25hcHNob3RTYXZlZChyZXN1bHQpXG5cbiAgICB0aGlzLnRlc3RGaWxlID0gJydcbiAgICB0aGlzLnNuYXBzaG90U3RhdGUgPSB1bmRlZmluZWRcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFja1NuYXBzaG90U3RhdGUoZmlsZXBhdGg6IHN0cmluZywgc3RhdGU6IFNuYXBzaG90U3RhdGUpOiBQcm9taXNlPFNuYXBzaG90UmVzdWx0PiB7XG4gIGNvbnN0IHNuYXBzaG90OiBTbmFwc2hvdFJlc3VsdCA9IHtcbiAgICBmaWxlcGF0aCxcbiAgICBhZGRlZDogMCxcbiAgICBmaWxlRGVsZXRlZDogZmFsc2UsXG4gICAgbWF0Y2hlZDogMCxcbiAgICB1bmNoZWNrZWQ6IDAsXG4gICAgdW5jaGVja2VkS2V5czogW10sXG4gICAgdW5tYXRjaGVkOiAwLFxuICAgIHVwZGF0ZWQ6IDAsXG4gIH1cbiAgY29uc3QgdW5jaGVja2VkQ291bnQgPSBzdGF0ZS5nZXRVbmNoZWNrZWRDb3VudCgpXG4gIGNvbnN0IHVuY2hlY2tlZEtleXMgPSBzdGF0ZS5nZXRVbmNoZWNrZWRLZXlzKClcbiAgaWYgKHVuY2hlY2tlZENvdW50KVxuICAgIHN0YXRlLnJlbW92ZVVuY2hlY2tlZEtleXMoKVxuXG4gIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHN0YXRlLnNhdmUoKVxuICBzbmFwc2hvdC5maWxlRGVsZXRlZCA9IHN0YXR1cy5kZWxldGVkXG4gIHNuYXBzaG90LmFkZGVkID0gc3RhdGUuYWRkZWRcbiAgc25hcHNob3QubWF0Y2hlZCA9IHN0YXRlLm1hdGNoZWRcbiAgc25hcHNob3QudW5tYXRjaGVkID0gc3RhdGUudW5tYXRjaGVkXG4gIHNuYXBzaG90LnVwZGF0ZWQgPSBzdGF0ZS51cGRhdGVkXG4gIHNuYXBzaG90LnVuY2hlY2tlZCA9ICFzdGF0dXMuZGVsZXRlZCA/IHVuY2hlY2tlZENvdW50IDogMFxuICBzbmFwc2hvdC51bmNoZWNrZWRLZXlzID0gQXJyYXkuZnJvbSh1bmNoZWNrZWRLZXlzKVxuXG4gIHJldHVybiBzbmFwc2hvdFxufVxuIiwiaW1wb3J0IHR5cGUgeyBDaGFpUGx1Z2luIH0gZnJvbSAnLi4vY2hhaS90eXBlcydcbmltcG9ydCB7IFNuYXBzaG90Q2xpZW50IH0gZnJvbSAnLi9jbGllbnQnXG5cbmxldCBfY2xpZW50OiBTbmFwc2hvdENsaWVudFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U25hcHNob3RDbGllbnQoKTogU25hcHNob3RDbGllbnQge1xuICBpZiAoIV9jbGllbnQpXG4gICAgX2NsaWVudCA9IG5ldyBTbmFwc2hvdENsaWVudCgpXG4gIHJldHVybiBfY2xpZW50XG59XG5cbmNvbnN0IGdldEVycm9yU3RyaW5nID0gKGV4cGVjdGVkOiAoKSA9PiB2b2lkKSA9PiB7XG4gIHRyeSB7XG4gICAgZXhwZWN0ZWQoKVxuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcilcbiAgICAgIHJldHVybiBlLm1lc3NhZ2VcblxuICAgIHJldHVybiBlXG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ3NuYXBzaG90IGZ1bmN0aW9uIGRpZG5cXCd0IHRocmV3Jylcbn1cblxuZXhwb3J0IGNvbnN0IFNuYXBzaG90UGx1Z2luOiBDaGFpUGx1Z2luID0gKGNoYWksIHV0aWxzKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IG9mIFsnbWF0Y2hTbmFwc2hvdCcsICd0b01hdGNoU25hcHNob3QnXSkge1xuICAgIHV0aWxzLmFkZE1ldGhvZChcbiAgICAgIGNoYWkuQXNzZXJ0aW9uLnByb3RvdHlwZSxcbiAgICAgIGtleSxcbiAgICAgIGZ1bmN0aW9uKHRoaXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwcm9wZXJ0aWVzPzogb2JqZWN0LCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGV4cGVjdGVkID0gdXRpbHMuZmxhZyh0aGlzLCAnb2JqZWN0JylcbiAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0aWVzID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgbWVzc2FnZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBtZXNzYWdlID0gcHJvcGVydGllc1xuICAgICAgICAgIHByb3BlcnRpZXMgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBnZXRTbmFwc2hvdENsaWVudCgpLmFzc2VydChleHBlY3RlZCwgbWVzc2FnZSwgZmFsc2UsIHByb3BlcnRpZXMpXG4gICAgICB9LFxuICAgIClcbiAgfVxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5Bc3NlcnRpb24ucHJvdG90eXBlLFxuICAgICd0b01hdGNoSW5saW5lU25hcHNob3QnLFxuICAgIGZ1bmN0aW9uKHRoaXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwcm9wZXJ0aWVzPzogb2JqZWN0LCBpbmxpbmVTbmFwc2hvdD86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB1dGlscy5mbGFnKHRoaXMsICdvYmplY3QnKVxuICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0aWVzID09PSAnc3RyaW5nJykge1xuICAgICAgICBtZXNzYWdlID0gaW5saW5lU25hcHNob3RcbiAgICAgICAgaW5saW5lU25hcHNob3QgPSBwcm9wZXJ0aWVzXG4gICAgICAgIHByb3BlcnRpZXMgPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIGdldFNuYXBzaG90Q2xpZW50KCkuYXNzZXJ0KGV4cGVjdGVkLCBtZXNzYWdlLCB0cnVlLCBwcm9wZXJ0aWVzLCBpbmxpbmVTbmFwc2hvdClcbiAgICB9LFxuICApXG4gIHV0aWxzLmFkZE1ldGhvZChcbiAgICBjaGFpLkFzc2VydGlvbi5wcm90b3R5cGUsXG4gICAgJ3RvVGhyb3dFcnJvck1hdGNoaW5nU25hcHNob3QnLFxuICAgIGZ1bmN0aW9uKHRoaXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHV0aWxzLmZsYWcodGhpcywgJ29iamVjdCcpXG4gICAgICBnZXRTbmFwc2hvdENsaWVudCgpLmFzc2VydChnZXRFcnJvclN0cmluZyhleHBlY3RlZCksIG1lc3NhZ2UpXG4gICAgfSxcbiAgKVxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5Bc3NlcnRpb24ucHJvdG90eXBlLFxuICAgICd0b1Rocm93RXJyb3JNYXRjaGluZ0lubGluZVNuYXBzaG90JyxcbiAgICBmdW5jdGlvbih0aGlzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgaW5saW5lU25hcHNob3Q6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHV0aWxzLmZsYWcodGhpcywgJ29iamVjdCcpXG4gICAgICBnZXRTbmFwc2hvdENsaWVudCgpLmFzc2VydChnZXRFcnJvclN0cmluZyhleHBlY3RlZCksIG1lc3NhZ2UsIHRydWUsIHVuZGVmaW5lZCwgaW5saW5lU25hcHNob3QpXG4gICAgfSxcbiAgKVxufVxuIiwiLy8gd2UgYXJlIHVzaW5nIG9ubHkgdGhlIG9uZXMgbmVlZGVkIGJ5IEB0ZXN0aW5nLWxpYnJhcnkvamVzdC1kb21cbi8vIGlmIHlvdSBuZWVkIG1vcmUsIGp1c3QgYXNrXG5cbmltcG9ydCBjIGZyb20gJ3BpY29jb2xvcnMnXG5pbXBvcnQgdHlwZSB7IEZvcm1hdHRlciB9IGZyb20gJ3BpY29jb2xvcnMvdHlwZXMnXG5pbXBvcnQgeyBmb3JtYXQgYXMgcHJldHR5Rm9ybWF0LCBwbHVnaW5zIGFzIHByZXR0eUZvcm1hdFBsdWdpbnMgfSBmcm9tICdwcmV0dHktZm9ybWF0J1xuaW1wb3J0IHsgdW5pZmllZERpZmYgfSBmcm9tICcuLi8uLi9yZXBvcnRlcnMvcmVuZGVyZXJzL2RpZmYnXG5cbmV4cG9ydCBjb25zdCBFWFBFQ1RFRF9DT0xPUiA9IGMuZ3JlZW5cbmV4cG9ydCBjb25zdCBSRUNFSVZFRF9DT0xPUiA9IGMucmVkXG5leHBvcnQgY29uc3QgSU5WRVJURURfQ09MT1IgPSBjLmludmVyc2VcbmV4cG9ydCBjb25zdCBCT0xEX1dFSUdIVCA9IGMuYm9sZFxuZXhwb3J0IGNvbnN0IERJTV9DT0xPUiA9IGMuZGltXG5cbmNvbnN0IHtcbiAgQXN5bW1ldHJpY01hdGNoZXIsXG4gIERPTUNvbGxlY3Rpb24sXG4gIERPTUVsZW1lbnQsXG4gIEltbXV0YWJsZSxcbiAgUmVhY3RFbGVtZW50LFxuICBSZWFjdFRlc3RDb21wb25lbnQsXG59ID0gcHJldHR5Rm9ybWF0UGx1Z2luc1xuXG5jb25zdCBQTFVHSU5TID0gW1xuICBSZWFjdFRlc3RDb21wb25lbnQsXG4gIFJlYWN0RWxlbWVudCxcbiAgRE9NRWxlbWVudCxcbiAgRE9NQ29sbGVjdGlvbixcbiAgSW1tdXRhYmxlLFxuICBBc3ltbWV0cmljTWF0Y2hlcixcbl1cblxuZXhwb3J0IHR5cGUgTWF0Y2hlckhpbnRPcHRpb25zID0ge1xuICBjb21tZW50Pzogc3RyaW5nXG4gIGV4cGVjdGVkQ29sb3I/OiBGb3JtYXR0ZXJcbiAgaXNEaXJlY3RFeHBlY3RDYWxsPzogYm9vbGVhblxuICBpc05vdD86IGJvb2xlYW5cbiAgcHJvbWlzZT86IHN0cmluZ1xuICByZWNlaXZlZENvbG9yPzogRm9ybWF0dGVyXG4gIHNlY29uZEFyZ3VtZW50Pzogc3RyaW5nXG4gIHNlY29uZEFyZ3VtZW50Q29sb3I/OiBGb3JtYXR0ZXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoZXJIaW50KFxuICBtYXRjaGVyTmFtZTogc3RyaW5nLFxuICByZWNlaXZlZCA9ICdyZWNlaXZlZCcsXG4gIGV4cGVjdGVkID0gJ2V4cGVjdGVkJyxcbiAgb3B0aW9uczogTWF0Y2hlckhpbnRPcHRpb25zID0ge30sXG4pIHtcbiAgY29uc3Qge1xuICAgIGNvbW1lbnQgPSAnJyxcbiAgICBleHBlY3RlZENvbG9yID0gRVhQRUNURURfQ09MT1IsXG4gICAgaXNEaXJlY3RFeHBlY3RDYWxsID0gZmFsc2UsIC8vIHNlZW1zIHJlZHVuZGFudCB3aXRoIHJlY2VpdmVkID09PSAnJ1xuICAgIGlzTm90ID0gZmFsc2UsXG4gICAgcHJvbWlzZSA9ICcnLFxuICAgIHJlY2VpdmVkQ29sb3IgPSBSRUNFSVZFRF9DT0xPUixcbiAgICBzZWNvbmRBcmd1bWVudCA9ICcnLFxuICAgIHNlY29uZEFyZ3VtZW50Q29sb3IgPSBFWFBFQ1RFRF9DT0xPUixcbiAgfSA9IG9wdGlvbnNcbiAgbGV0IGhpbnQgPSAnJ1xuICBsZXQgZGltU3RyaW5nID0gJ2V4cGVjdCcgLy8gY29uY2F0ZW5hdGUgYWRqYWNlbnQgZGltIHN1YnN0cmluZ3NcblxuICBpZiAoIWlzRGlyZWN0RXhwZWN0Q2FsbCAmJiByZWNlaXZlZCAhPT0gJycpIHtcbiAgICBoaW50ICs9IERJTV9DT0xPUihgJHtkaW1TdHJpbmd9KGApICsgcmVjZWl2ZWRDb2xvcihyZWNlaXZlZClcbiAgICBkaW1TdHJpbmcgPSAnKSdcbiAgfVxuXG4gIGlmIChwcm9taXNlICE9PSAnJykge1xuICAgIGhpbnQgKz0gRElNX0NPTE9SKGAke2RpbVN0cmluZ30uYCkgKyBwcm9taXNlXG4gICAgZGltU3RyaW5nID0gJydcbiAgfVxuXG4gIGlmIChpc05vdCkge1xuICAgIGhpbnQgKz0gYCR7RElNX0NPTE9SKGAke2RpbVN0cmluZ30uYCl9bm90YFxuICAgIGRpbVN0cmluZyA9ICcnXG4gIH1cblxuICBpZiAobWF0Y2hlck5hbWUuaW5jbHVkZXMoJy4nKSkge1xuICAgIC8vIE9sZCBmb3JtYXQ6IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LFxuICAgIC8vIGVzcGVjaWFsbHkgd2l0aG91dCBwcm9taXNlIG9yIGlzTm90IG9wdGlvbnNcbiAgICBkaW1TdHJpbmcgKz0gbWF0Y2hlck5hbWVcbiAgfVxuICBlbHNlIHtcbiAgICAvLyBOZXcgZm9ybWF0OiBvbWl0IHBlcmlvZCBmcm9tIG1hdGNoZXJOYW1lIGFyZ1xuICAgIGhpbnQgKz0gRElNX0NPTE9SKGAke2RpbVN0cmluZ30uYCkgKyBtYXRjaGVyTmFtZVxuICAgIGRpbVN0cmluZyA9ICcnXG4gIH1cblxuICBpZiAoZXhwZWN0ZWQgPT09ICcnKSB7XG4gICAgZGltU3RyaW5nICs9ICcoKSdcbiAgfVxuICBlbHNlIHtcbiAgICBoaW50ICs9IERJTV9DT0xPUihgJHtkaW1TdHJpbmd9KGApICsgZXhwZWN0ZWRDb2xvcihleHBlY3RlZClcbiAgICBpZiAoc2Vjb25kQXJndW1lbnQpXG4gICAgICBoaW50ICs9IERJTV9DT0xPUignLCAnKSArIHNlY29uZEFyZ3VtZW50Q29sb3Ioc2Vjb25kQXJndW1lbnQpXG4gICAgZGltU3RyaW5nID0gJyknXG4gIH1cblxuICBpZiAoY29tbWVudCAhPT0gJycpXG4gICAgZGltU3RyaW5nICs9IGAgLy8gJHtjb21tZW50fWBcblxuICBpZiAoZGltU3RyaW5nICE9PSAnJylcbiAgICBoaW50ICs9IERJTV9DT0xPUihkaW1TdHJpbmcpXG5cbiAgcmV0dXJuIGhpbnRcbn1cblxuY29uc3QgU1BBQ0VfU1lNQk9MID0gJ1xcdXswMEI3fScgLy8gbWlkZGxlIGRvdFxuXG4vLyBJbnN0ZWFkIG9mIGludmVyc2UgaGlnaGxpZ2h0IHdoaWNoIG5vdyBpbXBsaWVzIGEgY2hhbmdlLFxuLy8gcmVwbGFjZSBjb21tb24gc3BhY2VzIHdpdGggbWlkZGxlIGRvdCBhdCB0aGUgZW5kIG9mIGFueSBsaW5lLlxuY29uc3QgcmVwbGFjZVRyYWlsaW5nU3BhY2VzID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICB0ZXh0LnJlcGxhY2UoL1xccyskL2dtLCBzcGFjZXMgPT4gU1BBQ0VfU1lNQk9MLnJlcGVhdChzcGFjZXMubGVuZ3RoKSlcblxuZXhwb3J0IGNvbnN0IHN0cmluZ2lmeSA9IChvYmplY3Q6IHVua25vd24sIG1heERlcHRoID0gMTApOiBzdHJpbmcgPT4ge1xuICBjb25zdCBNQVhfTEVOR1RIID0gMTAwMDBcbiAgbGV0IHJlc3VsdFxuXG4gIHRyeSB7XG4gICAgcmVzdWx0ID0gcHJldHR5Rm9ybWF0KG9iamVjdCwge1xuICAgICAgbWF4RGVwdGgsXG4gICAgICAvLyBtaW46IHRydWUsXG4gICAgICBwbHVnaW5zOiBQTFVHSU5TLFxuICAgIH0pXG4gIH1cbiAgY2F0Y2gge1xuICAgIHJlc3VsdCA9IHByZXR0eUZvcm1hdChvYmplY3QsIHtcbiAgICAgIGNhbGxUb0pTT046IGZhbHNlLFxuICAgICAgbWF4RGVwdGgsXG4gICAgICAvLyBtaW46IHRydWUsXG4gICAgICBwbHVnaW5zOiBQTFVHSU5TLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA+PSBNQVhfTEVOR1RIICYmIG1heERlcHRoID4gMVxuICAgID8gc3RyaW5naWZ5KG9iamVjdCwgTWF0aC5mbG9vcihtYXhEZXB0aCAvIDIpKVxuICAgIDogcmVzdWx0XG59XG5cbmV4cG9ydCBjb25zdCBwcmludFJlY2VpdmVkID0gKG9iamVjdDogdW5rbm93bik6IHN0cmluZyA9PlxuICBSRUNFSVZFRF9DT0xPUihyZXBsYWNlVHJhaWxpbmdTcGFjZXMoc3RyaW5naWZ5KG9iamVjdCkpKVxuZXhwb3J0IGNvbnN0IHByaW50RXhwZWN0ZWQgPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgPT5cbiAgRVhQRUNURURfQ09MT1IocmVwbGFjZVRyYWlsaW5nU3BhY2VzKHN0cmluZ2lmeSh2YWx1ZSkpKVxuXG5leHBvcnQgdHlwZSBEaWZmT3B0aW9ucyA9IHtcbiAgYUFubm90YXRpb24/OiBzdHJpbmdcbiAgYUNvbG9yPzogRm9ybWF0dGVyXG4gIGFJbmRpY2F0b3I/OiBzdHJpbmdcbiAgYkFubm90YXRpb24/OiBzdHJpbmdcbiAgYkNvbG9yPzogRm9ybWF0dGVyXG4gIGJJbmRpY2F0b3I/OiBzdHJpbmdcbiAgY2hhbmdlQ29sb3I/OiBGb3JtYXR0ZXJcbiAgY2hhbmdlTGluZVRyYWlsaW5nU3BhY2VDb2xvcj86IEZvcm1hdHRlclxuICBjb21tb25Db2xvcj86IEZvcm1hdHRlclxuICBjb21tb25JbmRpY2F0b3I/OiBzdHJpbmdcbiAgY29tbW9uTGluZVRyYWlsaW5nU3BhY2VDb2xvcj86IEZvcm1hdHRlclxuICBjb250ZXh0TGluZXM/OiBudW1iZXJcbiAgZW1wdHlGaXJzdE9yTGFzdExpbmVQbGFjZWhvbGRlcj86IHN0cmluZ1xuICBleHBhbmQ/OiBib29sZWFuXG4gIGluY2x1ZGVDaGFuZ2VDb3VudHM/OiBib29sZWFuXG4gIG9taXRBbm5vdGF0aW9uTGluZXM/OiBib29sZWFuXG4gIHBhdGNoQ29sb3I/OiBGb3JtYXR0ZXJcbiAgLy8gcHJldHR5LWZvcm1hdCB0eXBlXG4gIGNvbXBhcmVLZXlzPzogYW55XG59XG5cbi8vIFRPRE86IGRvIHNvbWV0aGluZyB3aXRoIG9wdGlvbnNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmV4cG9ydCBmdW5jdGlvbiBkaWZmKGE6IGFueSwgYjogYW55LCBvcHRpb25zPzogRGlmZk9wdGlvbnMpIHtcbiAgcmV0dXJuIHVuaWZpZWREaWZmKHN0cmluZ2lmeShhKSwgc3RyaW5naWZ5KGIpKVxufVxuIiwiaW1wb3J0IGNoYWksIHsgdXRpbCB9IGZyb20gJ2NoYWknXG5pbXBvcnQgeyBnZXRTdGF0ZSB9IGZyb20gJy4vamVzdC1leHBlY3QnXG5cbmltcG9ydCAqIGFzIG1hdGNoZXJVdGlscyBmcm9tICcuL2plc3QtbWF0Y2hlci11dGlscydcblxuaW1wb3J0IHtcbiAgZXF1YWxzLFxuICBpdGVyYWJsZUVxdWFsaXR5LFxuICBzdWJzZXRFcXVhbGl0eSxcbn0gZnJvbSAnLi9qZXN0LXV0aWxzJ1xuaW1wb3J0IHR5cGUge1xuICBDaGFpUGx1Z2luLFxuICBNYXRjaGVyU3RhdGUsXG4gIE1hdGNoZXJzT2JqZWN0LFxuICBTeW5jRXhwZWN0YXRpb25SZXN1bHQsXG59IGZyb20gJy4vdHlwZXMnXG5cbmNvbnN0IGlzQXN5bmNGdW5jdGlvbiA9IChmbjogdW5rbm93bikgPT5cbiAgdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nICYmIChmbiBhcyBhbnkpW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdBc3luY0Z1bmN0aW9uJ1xuXG5jb25zdCBnZXRNYXRjaGVyU3RhdGUgPSAoYXNzZXJ0aW9uOiBDaGFpLkFzc2VydGlvblN0YXRpYyAmIENoYWkuQXNzZXJ0aW9uKSA9PiB7XG4gIGNvbnN0IG9iaiA9IGFzc2VydGlvbi5fb2JqXG4gIGNvbnN0IGlzTm90ID0gdXRpbC5mbGFnKGFzc2VydGlvbiwgJ25lZ2F0ZScpIGFzIGJvb2xlYW5cbiAgY29uc3QgcHJvbWlzZSA9IHV0aWwuZmxhZyhhc3NlcnRpb24sICdwcm9taXNlJykgfHwgJydcbiAgY29uc3QgamVzdFV0aWxzID0ge1xuICAgIC4uLm1hdGNoZXJVdGlscyxcbiAgICBpdGVyYWJsZUVxdWFsaXR5LFxuICAgIHN1YnNldEVxdWFsaXR5LFxuICB9XG5cbiAgY29uc3QgbWF0Y2hlclN0YXRlOiBNYXRjaGVyU3RhdGUgPSB7XG4gICAgLi4uZ2V0U3RhdGUoKSxcbiAgICBpc05vdCxcbiAgICB1dGlsczogamVzdFV0aWxzLFxuICAgIHByb21pc2UsXG4gICAgZXF1YWxzLFxuICAgIC8vIG5lZWRlZCBmb3IgYnVpbHQtaW4gamVzdC1zbmFwc2hvdHMsIGJ1dCB3ZSBkb24ndCB1c2UgaXRcbiAgICBzdXBwcmVzc2VkRXJyb3JzOiBbXSxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RhdGU6IG1hdGNoZXJTdGF0ZSxcbiAgICBpc05vdCxcbiAgICBvYmosXG4gIH1cbn1cblxuY2xhc3MgSmVzdEV4dGVuZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHB1YmxpYyBhY3R1YWw/OiBhbnksIHB1YmxpYyBleHBlY3RlZD86IGFueSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gIH1cbn1cblxuZnVuY3Rpb24gSmVzdEV4dGVuZFBsdWdpbihleHBlY3RzOiBNYXRjaGVyc09iamVjdCk6IENoYWlQbHVnaW4ge1xuICByZXR1cm4gKGMsIHV0aWxzKSA9PiB7XG4gICAgT2JqZWN0LmVudHJpZXMoZXhwZWN0cykuZm9yRWFjaCgoW2V4cGVjdEFzc2VydGlvbk5hbWUsIGV4cGVjdEFzc2VydGlvbl0pID0+IHtcbiAgICAgIGZ1bmN0aW9uIGV4cGVjdFN5bmNXcmFwcGVyKHRoaXM6IENoYWkuQXNzZXJ0aW9uU3RhdGljICYgQ2hhaS5Bc3NlcnRpb24sIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIGNvbnN0IHsgc3RhdGUsIGlzTm90LCBvYmogfSA9IGdldE1hdGNoZXJTdGF0ZSh0aGlzKVxuXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYXJncyB3YW50aW5nIHR1cGxlXG4gICAgICAgIGNvbnN0IHsgcGFzcywgbWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCB9ID0gZXhwZWN0QXNzZXJ0aW9uLmNhbGwoc3RhdGUsIG9iaiwgLi4uYXJncykgYXMgU3luY0V4cGVjdGF0aW9uUmVzdWx0XG5cbiAgICAgICAgaWYgKChwYXNzICYmIGlzTm90KSB8fCAoIXBhc3MgJiYgIWlzTm90KSlcbiAgICAgICAgICB0aHJvdyBuZXcgSmVzdEV4dGVuZEVycm9yKG1lc3NhZ2UoKSwgYWN0dWFsLCBleHBlY3RlZClcbiAgICAgIH1cblxuICAgICAgYXN5bmMgZnVuY3Rpb24gZXhwZWN0QXN5bmNXcmFwcGVyKHRoaXM6IENoYWkuQXNzZXJ0aW9uU3RhdGljICYgQ2hhaS5Bc3NlcnRpb24sIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIGNvbnN0IHsgc3RhdGUsIGlzTm90LCBvYmogfSA9IGdldE1hdGNoZXJTdGF0ZSh0aGlzKVxuXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYXJncyB3YW50aW5nIHR1cGxlXG4gICAgICAgIGNvbnN0IHsgcGFzcywgbWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCB9ID0gYXdhaXQgZXhwZWN0QXNzZXJ0aW9uLmNhbGwoc3RhdGUsIG9iaiwgLi4uYXJncykgYXMgU3luY0V4cGVjdGF0aW9uUmVzdWx0XG5cbiAgICAgICAgaWYgKChwYXNzICYmIGlzTm90KSB8fCAoIXBhc3MgJiYgIWlzTm90KSlcbiAgICAgICAgICB0aHJvdyBuZXcgSmVzdEV4dGVuZEVycm9yKG1lc3NhZ2UoKSwgYWN0dWFsLCBleHBlY3RlZClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXhwZWN0QXNzZXJ0aW9uV3JhcHBlciA9IGlzQXN5bmNGdW5jdGlvbihleHBlY3RBc3NlcnRpb24pID8gZXhwZWN0QXN5bmNXcmFwcGVyIDogZXhwZWN0U3luY1dyYXBwZXJcblxuICAgICAgdXRpbHMuYWRkTWV0aG9kKGNoYWkuQXNzZXJ0aW9uLnByb3RvdHlwZSwgZXhwZWN0QXNzZXJ0aW9uTmFtZSwgZXhwZWN0QXNzZXJ0aW9uV3JhcHBlcilcbiAgICB9KVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBKZXN0RXh0ZW5kOiBDaGFpUGx1Z2luID0gKGNoYWksIHV0aWxzKSA9PiB7XG4gIHV0aWxzLmFkZE1ldGhvZChjaGFpLmV4cGVjdCwgJ2V4dGVuZCcsIChleHBlY3RzOiBNYXRjaGVyc09iamVjdCkgPT4ge1xuICAgIGNoYWkudXNlKEplc3RFeHRlbmRQbHVnaW4oZXhwZWN0cykpXG4gIH0pXG59XG4iLCJpbXBvcnQgKiBhcyBtYXRjaGVyVXRpbHMgZnJvbSAnLi9qZXN0LW1hdGNoZXItdXRpbHMnXG5cbmltcG9ydCB7IGVxdWFscywgaXNBIH0gZnJvbSAnLi9qZXN0LXV0aWxzJ1xuaW1wb3J0IHR5cGUgeyBDaGFpUGx1Z2luLCBNYXRjaGVyU3RhdGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzeW1tZXRyaWNNYXRjaGVySW50ZXJmYWNlIHtcbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiB1bmtub3duKTogYm9vbGVhblxuICB0b1N0cmluZygpOiBzdHJpbmdcbiAgZ2V0RXhwZWN0ZWRUeXBlPygpOiBzdHJpbmdcbiAgdG9Bc3ltbWV0cmljTWF0Y2hlcj8oKTogc3RyaW5nXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBc3ltbWV0cmljTWF0Y2hlcjxcbiAgVCxcbiAgU3RhdGUgZXh0ZW5kcyBNYXRjaGVyU3RhdGUgPSBNYXRjaGVyU3RhdGUsXG4+IGltcGxlbWVudHMgQXN5bW1ldHJpY01hdGNoZXJJbnRlcmZhY2Uge1xuICAkJHR5cGVvZiA9IFN5bWJvbC5mb3IoJ2plc3QuYXN5bW1ldHJpY01hdGNoZXInKVxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzYW1wbGU6IFQsIHByb3RlY3RlZCBpbnZlcnNlID0gZmFsc2UpIHt9XG5cbiAgcHJvdGVjdGVkIGdldE1hdGNoZXJDb250ZXh0KCk6IFN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXF1YWxzLFxuICAgICAgaXNOb3Q6IHRoaXMuaW52ZXJzZSxcbiAgICAgIHV0aWxzOiBtYXRjaGVyVXRpbHMsXG4gICAgfSBhcyBhbnlcbiAgfVxuXG4gIGFic3RyYWN0IGFzeW1tZXRyaWNNYXRjaChvdGhlcjogdW5rbm93bik6IGJvb2xlYW5cbiAgYWJzdHJhY3QgdG9TdHJpbmcoKTogc3RyaW5nXG4gIGdldEV4cGVjdGVkVHlwZT8oKTogc3RyaW5nXG4gIHRvQXN5bW1ldHJpY01hdGNoZXI/KCk6IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgU3RyaW5nQ29udGFpbmluZyBleHRlbmRzIEFzeW1tZXRyaWNNYXRjaGVyPHN0cmluZz4ge1xuICBjb25zdHJ1Y3RvcihzYW1wbGU6IHN0cmluZywgaW52ZXJzZSA9IGZhbHNlKSB7XG4gICAgaWYgKCFpc0EoJ1N0cmluZycsIHNhbXBsZSkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGlzIG5vdCBhIHN0cmluZycpXG5cbiAgICBzdXBlcihzYW1wbGUsIGludmVyc2UpXG4gIH1cblxuICBhc3ltbWV0cmljTWF0Y2gob3RoZXI6IHN0cmluZykge1xuICAgIGNvbnN0IHJlc3VsdCA9IGlzQSgnU3RyaW5nJywgb3RoZXIpICYmIG90aGVyLmluY2x1ZGVzKHRoaXMuc2FtcGxlKVxuXG4gICAgcmV0dXJuIHRoaXMuaW52ZXJzZSA/ICFyZXN1bHQgOiByZXN1bHRcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBgU3RyaW5nJHt0aGlzLmludmVyc2UgPyAnTm90JyA6ICcnfUNvbnRhaW5pbmdgXG4gIH1cblxuICBnZXRFeHBlY3RlZFR5cGUoKSB7XG4gICAgcmV0dXJuICdzdHJpbmcnXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFueXRoaW5nIGV4dGVuZHMgQXN5bW1ldHJpY01hdGNoZXI8dm9pZD4ge1xuICBhc3ltbWV0cmljTWF0Y2gob3RoZXI6IHVua25vd24pIHtcbiAgICByZXR1cm4gb3RoZXIgIT0gbnVsbFxuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdBbnl0aGluZydcbiAgfVxuXG4gIHRvQXN5bW1ldHJpY01hdGNoZXIoKSB7XG4gICAgcmV0dXJuICdBbnl0aGluZydcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT2JqZWN0Q29udGFpbmluZyBleHRlbmRzIEFzeW1tZXRyaWNNYXRjaGVyPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIGNvbnN0cnVjdG9yKHNhbXBsZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGludmVyc2UgPSBmYWxzZSkge1xuICAgIHN1cGVyKHNhbXBsZSwgaW52ZXJzZSlcbiAgfVxuXG4gIGdldFByb3RvdHlwZShvYmo6IG9iamVjdCkge1xuICAgIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpXG4gICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iailcblxuICAgIGlmIChvYmouY29uc3RydWN0b3IucHJvdG90eXBlID09PSBvYmopXG4gICAgICByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIG9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgfVxuXG4gIGhhc1Byb3BlcnR5KG9iajogb2JqZWN0IHwgbnVsbCwgcHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghb2JqKVxuICAgICAgcmV0dXJuIGZhbHNlXG5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcGVydHkpKVxuICAgICAgcmV0dXJuIHRydWVcblxuICAgIHJldHVybiB0aGlzLmhhc1Byb3BlcnR5KHRoaXMuZ2V0UHJvdG90eXBlKG9iaiksIHByb3BlcnR5KVxuICB9XG5cbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuc2FtcGxlICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFlvdSBtdXN0IHByb3ZpZGUgYW4gb2JqZWN0IHRvICR7dGhpcy50b1N0cmluZygpfSwgbm90ICcke1xuICAgICAgICAgIHR5cGVvZiB0aGlzLnNhbXBsZVxuICAgICAgICB9Jy5gLFxuICAgICAgKVxuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSB0cnVlXG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIHRoaXMuc2FtcGxlKSB7XG4gICAgICBpZiAoIXRoaXMuaGFzUHJvcGVydHkob3RoZXIsIHByb3BlcnR5KSB8fCAhZXF1YWxzKHRoaXMuc2FtcGxlW3Byb3BlcnR5XSwgb3RoZXJbcHJvcGVydHldKSkge1xuICAgICAgICByZXN1bHQgPSBmYWxzZVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmludmVyc2UgPyAhcmVzdWx0IDogcmVzdWx0XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYE9iamVjdCR7dGhpcy5pbnZlcnNlID8gJ05vdCcgOiAnJ31Db250YWluaW5nYFxuICB9XG5cbiAgZ2V0RXhwZWN0ZWRUeXBlKCkge1xuICAgIHJldHVybiAnb2JqZWN0J1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcnJheUNvbnRhaW5pbmcgZXh0ZW5kcyBBc3ltbWV0cmljTWF0Y2hlcjxBcnJheTx1bmtub3duPj4ge1xuICBjb25zdHJ1Y3RvcihzYW1wbGU6IEFycmF5PHVua25vd24+LCBpbnZlcnNlID0gZmFsc2UpIHtcbiAgICBzdXBlcihzYW1wbGUsIGludmVyc2UpXG4gIH1cblxuICBhc3ltbWV0cmljTWF0Y2gob3RoZXI6IEFycmF5PHVua25vd24+KSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuc2FtcGxlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFlvdSBtdXN0IHByb3ZpZGUgYW4gYXJyYXkgdG8gJHt0aGlzLnRvU3RyaW5nKCl9LCBub3QgJyR7XG4gICAgICAgICAgdHlwZW9mIHRoaXMuc2FtcGxlXG4gICAgICAgIH0nLmAsXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0XG4gICAgICA9IHRoaXMuc2FtcGxlLmxlbmd0aCA9PT0gMFxuICAgICAgfHwgKEFycmF5LmlzQXJyYXkob3RoZXIpXG4gICAgICAgICYmIHRoaXMuc2FtcGxlLmV2ZXJ5KGl0ZW0gPT5cbiAgICAgICAgICBvdGhlci5zb21lKGFub3RoZXIgPT4gZXF1YWxzKGl0ZW0sIGFub3RoZXIpKSxcbiAgICAgICAgKSlcblxuICAgIHJldHVybiB0aGlzLmludmVyc2UgPyAhcmVzdWx0IDogcmVzdWx0XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYEFycmF5JHt0aGlzLmludmVyc2UgPyAnTm90JyA6ICcnfUNvbnRhaW5pbmdgXG4gIH1cblxuICBnZXRFeHBlY3RlZFR5cGUoKSB7XG4gICAgcmV0dXJuICdhcnJheSdcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQW55IGV4dGVuZHMgQXN5bW1ldHJpY01hdGNoZXI8YW55PiB7XG4gIGNvbnN0cnVjdG9yKHNhbXBsZTogdW5rbm93bikge1xuICAgIGlmICh0eXBlb2Ygc2FtcGxlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ2FueSgpIGV4cGVjdHMgdG8gYmUgcGFzc2VkIGEgY29uc3RydWN0b3IgZnVuY3Rpb24uICdcbiAgICAgICAgICArICdQbGVhc2UgcGFzcyBvbmUgb3IgdXNlIGFueXRoaW5nKCkgdG8gbWF0Y2ggYW55IG9iamVjdC4nLFxuICAgICAgKVxuICAgIH1cbiAgICBzdXBlcihzYW1wbGUpXG4gIH1cblxuICBmbk5hbWVGb3IoZnVuYzogRnVuY3Rpb24pIHtcbiAgICBpZiAoZnVuYy5uYW1lKVxuICAgICAgcmV0dXJuIGZ1bmMubmFtZVxuXG4gICAgY29uc3QgZnVuY3Rpb25Ub1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZ1xuXG4gICAgY29uc3QgbWF0Y2hlcyA9IGZ1bmN0aW9uVG9TdHJpbmdcbiAgICAgIC5jYWxsKGZ1bmMpXG4gICAgICAubWF0Y2goL14oPzphc3luYyk/XFxzKmZ1bmN0aW9uXFxzKlxcKj9cXHMqKFtcXHckXSspXFxzKlxcKC8pXG4gICAgcmV0dXJuIG1hdGNoZXMgPyBtYXRjaGVzWzFdIDogJzxhbm9ueW1vdXM+J1xuICB9XG5cbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiB1bmtub3duKSB7XG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBTdHJpbmcpXG4gICAgICByZXR1cm4gdHlwZW9mIG90aGVyID09ICdzdHJpbmcnIHx8IG90aGVyIGluc3RhbmNlb2YgU3RyaW5nXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IE51bWJlcilcbiAgICAgIHJldHVybiB0eXBlb2Ygb3RoZXIgPT0gJ251bWJlcicgfHwgb3RoZXIgaW5zdGFuY2VvZiBOdW1iZXJcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gRnVuY3Rpb24pXG4gICAgICByZXR1cm4gdHlwZW9mIG90aGVyID09ICdmdW5jdGlvbicgfHwgb3RoZXIgaW5zdGFuY2VvZiBGdW5jdGlvblxuXG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBCb29sZWFuKVxuICAgICAgcmV0dXJuIHR5cGVvZiBvdGhlciA9PSAnYm9vbGVhbicgfHwgb3RoZXIgaW5zdGFuY2VvZiBCb29sZWFuXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IEJpZ0ludClcbiAgICAgIHJldHVybiB0eXBlb2Ygb3RoZXIgPT0gJ2JpZ2ludCcgfHwgb3RoZXIgaW5zdGFuY2VvZiBCaWdJbnRcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gU3ltYm9sKVxuICAgICAgcmV0dXJuIHR5cGVvZiBvdGhlciA9PSAnc3ltYm9sJyB8fCBvdGhlciBpbnN0YW5jZW9mIFN5bWJvbFxuXG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBPYmplY3QpXG4gICAgICByZXR1cm4gdHlwZW9mIG90aGVyID09ICdvYmplY3QnXG5cbiAgICByZXR1cm4gb3RoZXIgaW5zdGFuY2VvZiB0aGlzLnNhbXBsZVxuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdBbnknXG4gIH1cblxuICBnZXRFeHBlY3RlZFR5cGUoKSB7XG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBTdHJpbmcpXG4gICAgICByZXR1cm4gJ3N0cmluZydcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gTnVtYmVyKVxuICAgICAgcmV0dXJuICdudW1iZXInXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IEZ1bmN0aW9uKVxuICAgICAgcmV0dXJuICdmdW5jdGlvbidcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gT2JqZWN0KVxuICAgICAgcmV0dXJuICdvYmplY3QnXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IEJvb2xlYW4pXG4gICAgICByZXR1cm4gJ2Jvb2xlYW4nXG5cbiAgICByZXR1cm4gdGhpcy5mbk5hbWVGb3IodGhpcy5zYW1wbGUpXG4gIH1cblxuICB0b0FzeW1tZXRyaWNNYXRjaGVyKCkge1xuICAgIHJldHVybiBgQW55PCR7dGhpcy5mbk5hbWVGb3IodGhpcy5zYW1wbGUpfT5gXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0cmluZ01hdGNoaW5nIGV4dGVuZHMgQXN5bW1ldHJpY01hdGNoZXI8UmVnRXhwPiB7XG4gIGNvbnN0cnVjdG9yKHNhbXBsZTogc3RyaW5nIHwgUmVnRXhwLCBpbnZlcnNlID0gZmFsc2UpIHtcbiAgICBpZiAoIWlzQSgnU3RyaW5nJywgc2FtcGxlKSAmJiAhaXNBKCdSZWdFeHAnLCBzYW1wbGUpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBpcyBub3QgYSBTdHJpbmcgb3IgYSBSZWdFeHAnKVxuXG4gICAgc3VwZXIobmV3IFJlZ0V4cChzYW1wbGUpLCBpbnZlcnNlKVxuICB9XG5cbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXN1bHQgPSBpc0EoJ1N0cmluZycsIG90aGVyKSAmJiB0aGlzLnNhbXBsZS50ZXN0KG90aGVyKVxuXG4gICAgcmV0dXJuIHRoaXMuaW52ZXJzZSA/ICFyZXN1bHQgOiByZXN1bHRcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBgU3RyaW5nJHt0aGlzLmludmVyc2UgPyAnTm90JyA6ICcnfU1hdGNoaW5nYFxuICB9XG5cbiAgZ2V0RXhwZWN0ZWRUeXBlKCkge1xuICAgIHJldHVybiAnc3RyaW5nJ1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBKZXN0QXN5bW1ldHJpY01hdGNoZXJzOiBDaGFpUGx1Z2luID0gKGNoYWksIHV0aWxzKSA9PiB7XG4gIHV0aWxzLmFkZE1ldGhvZChcbiAgICBjaGFpLmV4cGVjdCxcbiAgICAnYW55dGhpbmcnLFxuICAgICgpID0+IG5ldyBBbnl0aGluZygpLFxuICApXG5cbiAgdXRpbHMuYWRkTWV0aG9kKFxuICAgIGNoYWkuZXhwZWN0LFxuICAgICdhbnknLFxuICAgIChleHBlY3RlZDogdW5rbm93bikgPT4gbmV3IEFueShleHBlY3RlZCksXG4gIClcblxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5leHBlY3QsXG4gICAgJ3N0cmluZ0NvbnRhaW5pbmcnLFxuICAgIChleHBlY3RlZDogc3RyaW5nKSA9PiBuZXcgU3RyaW5nQ29udGFpbmluZyhleHBlY3RlZCksXG4gIClcblxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5leHBlY3QsXG4gICAgJ29iamVjdENvbnRhaW5pbmcnLFxuICAgIChleHBlY3RlZDogYW55KSA9PiBuZXcgT2JqZWN0Q29udGFpbmluZyhleHBlY3RlZCksXG4gIClcblxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5leHBlY3QsXG4gICAgJ2FycmF5Q29udGFpbmluZycsXG4gICAgKGV4cGVjdGVkOiBhbnkpID0+IG5ldyBBcnJheUNvbnRhaW5pbmcoZXhwZWN0ZWQpLFxuICApXG5cbiAgdXRpbHMuYWRkTWV0aG9kKFxuICAgIGNoYWkuZXhwZWN0LFxuICAgICdzdHJpbmdNYXRjaGluZycsXG4gICAgKGV4cGVjdGVkOiBhbnkpID0+IG5ldyBTdHJpbmdNYXRjaGluZyhleHBlY3RlZCksXG4gIClcblxuICBjaGFpLmV4cGVjdC5ub3QgPSB7XG4gICAgc3RyaW5nQ29udGFpbmluZzogKGV4cGVjdGVkOiBzdHJpbmcpID0+IG5ldyBTdHJpbmdDb250YWluaW5nKGV4cGVjdGVkLCB0cnVlKSxcbiAgICBvYmplY3RDb250YWluaW5nOiAoZXhwZWN0ZWQ6IGFueSkgPT4gbmV3IE9iamVjdENvbnRhaW5pbmcoZXhwZWN0ZWQsIHRydWUpLFxuICAgIGFycmF5Q29udGFpbmluZzogKGV4cGVjdGVkOiB1bmtub3duW10pID0+IG5ldyBBcnJheUNvbnRhaW5pbmcoZXhwZWN0ZWQsIHRydWUpLFxuICAgIHN0cmluZ01hdGNoaW5nOiAoZXhwZWN0ZWQ6IHN0cmluZyB8IFJlZ0V4cCkgPT4gbmV3IFN0cmluZ01hdGNoaW5nKGV4cGVjdGVkLCB0cnVlKSxcbiAgfVxufVxuIiwiaW1wb3J0IGNoYWkgZnJvbSAnY2hhaSdcbmltcG9ydCBTdWJzZXQgZnJvbSAnY2hhaS1zdWJzZXQnXG5pbXBvcnQgeyBTbmFwc2hvdFBsdWdpbiB9IGZyb20gJy4uL3NuYXBzaG90L2NoYWknXG5pbXBvcnQgeyBKZXN0RXh0ZW5kIH0gZnJvbSAnLi9qZXN0LWV4dGVuZCdcbmltcG9ydCB7IEplc3RDaGFpRXhwZWN0IH0gZnJvbSAnLi9qZXN0LWV4cGVjdCdcbmltcG9ydCB7IEplc3RBc3ltbWV0cmljTWF0Y2hlcnMgfSBmcm9tICcuL2plc3QtYXN5bW1ldHJpYy1tYXRjaGVycydcblxubGV0IGluc3RhbGxlZCA9IGZhbHNlXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0dXBDaGFpKCkge1xuICBpZiAoaW5zdGFsbGVkKVxuICAgIHJldHVyblxuXG4gIGNoYWkudXNlKEplc3RFeHRlbmQpXG4gIGNoYWkudXNlKEplc3RDaGFpRXhwZWN0KVxuICBjaGFpLnVzZShTdWJzZXQpXG4gIGNoYWkudXNlKFNuYXBzaG90UGx1Z2luKVxuICBjaGFpLnVzZShKZXN0QXN5bW1ldHJpY01hdGNoZXJzKVxuICBpbnN0YWxsZWQgPSB0cnVlXG59XG4iLCJpbXBvcnQgeyBDb25zb2xlIH0gZnJvbSAnY29uc29sZSdcbmltcG9ydCB7IFdyaXRhYmxlIH0gZnJvbSAnc3RyZWFtJ1xuaW1wb3J0IHsgZW52aXJvbm1lbnRzIH0gZnJvbSAnLi4vZW52J1xuaW1wb3J0IHsgc2V0dXBDaGFpIH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL2NoYWkvc2V0dXAnXG5pbXBvcnQgdHlwZSB7IFJlc29sdmVkQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgeyBycGMgfSBmcm9tICcuL3JwYydcblxubGV0IGdsb2JhbFNldHVwID0gZmFsc2VcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXR1cEdsb2JhbEVudihjb25maWc6IFJlc29sdmVkQ29uZmlnKSB7XG4gIGlmIChnbG9iYWxTZXR1cClcbiAgICByZXR1cm5cblxuICBnbG9iYWxTZXR1cCA9IHRydWVcblxuICBzZXR1cENvbnNvbGVMb2dTcHkoKVxuICBhd2FpdCBzZXR1cENoYWkoKVxuXG4gIGlmIChjb25maWcuZ2xvYmFsKVxuICAgIChhd2FpdCBpbXBvcnQoJy4uL2ludGVncmF0aW9ucy9nbG9iYWwnKSkucmVnaXN0ZXJBcGlHbG9iYWxseSgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cENvbnNvbGVMb2dTcHkoKSB7XG4gIGNvbnN0IHN0ZG91dCA9IG5ldyBXcml0YWJsZSh7XG4gICAgd3JpdGUoZGF0YSwgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gICAgICBycGMoKS5vblVzZXJMb2coe1xuICAgICAgICB0eXBlOiAnc3Rkb3V0JyxcbiAgICAgICAgY29udGVudDogU3RyaW5nKGRhdGEpLFxuICAgICAgICB0YXNrSWQ6IHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18uY3VycmVudD8uaWQsXG4gICAgICB9KVxuICAgICAgY2FsbGJhY2soKVxuICAgIH0sXG4gIH0pXG4gIGNvbnN0IHN0ZGVyciA9IG5ldyBXcml0YWJsZSh7XG4gICAgd3JpdGUoZGF0YSwgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gICAgICBycGMoKS5vblVzZXJMb2coe1xuICAgICAgICB0eXBlOiAnc3RkZXJyJyxcbiAgICAgICAgY29udGVudDogU3RyaW5nKGRhdGEpLFxuICAgICAgICB0YXNrSWQ6IHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18uY3VycmVudD8uaWQsXG4gICAgICB9KVxuICAgICAgY2FsbGJhY2soKVxuICAgIH0sXG4gIH0pXG4gIGdsb2JhbFRoaXMuY29uc29sZSA9IG5ldyBDb25zb2xlKHtcbiAgICBzdGRvdXQsXG4gICAgc3RkZXJyLFxuICAgIGNvbG9yTW9kZTogdHJ1ZSxcbiAgICBncm91cEluZGVudGF0aW9uOiAyLFxuICB9KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2l0aEVudihcbiAgbmFtZTogUmVzb2x2ZWRDb25maWdbJ2Vudmlyb25tZW50J10sXG4gIG9wdGlvbnM6IFJlc29sdmVkQ29uZmlnWydlbnZpcm9ubWVudE9wdGlvbnMnXSxcbiAgZm46ICgpID0+IFByb21pc2U8dm9pZD4sXG4pIHtcbiAgY29uc3QgZW52ID0gYXdhaXQgZW52aXJvbm1lbnRzW25hbWVdLnNldHVwKGdsb2JhbFRoaXMsIG9wdGlvbnMpXG4gIHRyeSB7XG4gICAgYXdhaXQgZm4oKVxuICB9XG4gIGZpbmFsbHkge1xuICAgIGF3YWl0IGVudi50ZWFyZG93bihnbG9iYWxUaGlzKVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5TZXR1cEZpbGVzKGNvbmZpZzogUmVzb2x2ZWRDb25maWcpIHtcbiAgY29uc3QgZmlsZXMgPSB0b0FycmF5KGNvbmZpZy5zZXR1cEZpbGVzKVxuICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBmaWxlcy5tYXAoYXN5bmMoZmlsZSkgPT4ge1xuICAgICAgcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5tb2R1bGVDYWNoZS5kZWxldGUoZmlsZSlcbiAgICAgIGF3YWl0IGltcG9ydChmaWxlKVxuICAgIH0pLFxuICApXG59XG4iLCJpbXBvcnQgeyBmb3JtYXQgfSBmcm9tICd1dGlsJ1xuaW1wb3J0IHsgc3RyaW5naWZ5IH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL2NoYWkvamVzdC1tYXRjaGVyLXV0aWxzJ1xuXG5jb25zdCBPQkpFQ1RfUFJPVE8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoe30pXG5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XZWJfV29ya2Vyc19BUEkvU3RydWN0dXJlZF9jbG9uZV9hbGdvcml0aG1cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVFcnJvcih2YWw6IGFueSwgc2VlbiA9IG5ldyBXZWFrTWFwKCkpOiBhbnkge1xuICBpZiAoIXZhbCB8fCB0eXBlb2YgdmFsID09PSAnc3RyaW5nJylcbiAgICByZXR1cm4gdmFsXG4gIGlmICh0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nKVxuICAgIHJldHVybiBgRnVuY3Rpb248JHt2YWwubmFtZX0+YFxuICBpZiAodHlwZW9mIHZhbCAhPT0gJ29iamVjdCcpXG4gICAgcmV0dXJuIHZhbFxuICBpZiAodmFsIGluc3RhbmNlb2YgUHJvbWlzZSB8fCAndGhlbicgaW4gdmFsIHx8ICh2YWwuY29uc3RydWN0b3IgJiYgdmFsLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gJ0FzeW5jRnVuY3Rpb24nKSlcbiAgICByZXR1cm4gJ1Byb21pc2UnXG4gIGlmICh0eXBlb2YgRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsIGluc3RhbmNlb2YgRWxlbWVudClcbiAgICByZXR1cm4gdmFsLnRhZ05hbWVcbiAgaWYgKHR5cGVvZiB2YWwuYXN5bW1ldHJpY01hdGNoID09PSAnZnVuY3Rpb24nKVxuICAgIHJldHVybiBgJHt2YWwudG9TdHJpbmcoKX0gJHtmb3JtYXQodmFsLnNhbXBsZSl9YFxuXG4gIGlmIChzZWVuLmhhcyh2YWwpKVxuICAgIHJldHVybiBzZWVuLmdldCh2YWwpXG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgIGNvbnN0IGNsb25lOiBhbnlbXSA9IG5ldyBBcnJheSh2YWwubGVuZ3RoKVxuICAgIHNlZW4uc2V0KHZhbCwgY2xvbmUpXG4gICAgdmFsLmZvckVhY2goKGUsIGkpID0+IHtcbiAgICAgIGNsb25lW2ldID0gc2VyaWFsaXplRXJyb3IoZSwgc2VlbilcbiAgICB9KVxuICAgIHJldHVybiBjbG9uZVxuICB9XG4gIGVsc2Uge1xuICAgIC8vIE9iamVjdHMgd2l0aCBgRXJyb3JgIGNvbnN0cnVjdG9ycyBhcHBlYXIgdG8gY2F1c2UgcHJvYmxlbXMgZHVyaW5nIHdvcmtlciBjb21tdW5pY2F0aW9uXG4gICAgLy8gdXNpbmcgYE1lc3NhZ2VQb3J0YCwgc28gdGhlIHNlcmlhbGl6ZWQgZXJyb3Igb2JqZWN0IGlzIGJlaW5nIHJlY3JlYXRlZCBhcyBwbGFpbiBvYmplY3QuXG4gICAgY29uc3QgY2xvbmUgPSBPYmplY3QuY3JlYXRlKG51bGwpXG4gICAgc2Vlbi5zZXQodmFsLCBjbG9uZSlcblxuICAgIGxldCBvYmogPSB2YWxcbiAgICB3aGlsZSAob2JqICYmIG9iaiAhPT0gT0JKRUNUX1BST1RPKSB7XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoIShrZXkgaW4gY2xvbmUpKVxuICAgICAgICAgIGNsb25lW2tleV0gPSBzZXJpYWxpemVFcnJvcihvYmpba2V5XSwgc2VlbilcbiAgICAgIH0pXG4gICAgICBvYmogPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKVxuICAgIH1cbiAgICByZXR1cm4gY2xvbmVcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0Vycm9yKGVycjogYW55KSB7XG4gIGlmICghZXJyKVxuICAgIHJldHVybiBlcnJcbiAgLy8gc3RhY2sgaXMgbm90IHNlcmlhbGl6ZWQgaW4gd29ya2VyIGNvbW11bmljYXRpb25cbiAgLy8gd2Ugc3RyaW5naWZ5IGl0IGZpcnN0XG4gIGlmIChlcnIuc3RhY2spXG4gICAgZXJyLnN0YWNrU3RyID0gU3RyaW5nKGVyci5zdGFjaylcbiAgaWYgKGVyci5uYW1lKVxuICAgIGVyci5uYW1lU3RyID0gU3RyaW5nKGVyci5uYW1lKVxuXG4gIGlmICh0eXBlb2YgZXJyLmV4cGVjdGVkICE9PSAnc3RyaW5nJylcbiAgICBlcnIuZXhwZWN0ZWQgPSBzdHJpbmdpZnkoZXJyLmV4cGVjdGVkKVxuICBpZiAodHlwZW9mIGVyci5hY3R1YWwgIT09ICdzdHJpbmcnKVxuICAgIGVyci5hY3R1YWwgPSBzdHJpbmdpZnkoZXJyLmFjdHVhbClcblxuICByZXR1cm4gc2VyaWFsaXplRXJyb3IoZXJyKVxufVxuIiwiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0bydcbmltcG9ydCB7IHJlbGF0aXZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgdHlwZSB7IEZpbGUsIFJlc29sdmVkQ29uZmlnLCBTdWl0ZSB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgY2xlYXJDb250ZXh0LCBkZWZhdWx0U3VpdGUgfSBmcm9tICcuL3N1aXRlJ1xuaW1wb3J0IHsgZ2V0SG9va3MsIHNldEhvb2tzIH0gZnJvbSAnLi9tYXAnXG5pbXBvcnQgeyBwcm9jZXNzRXJyb3IgfSBmcm9tICcuL2Vycm9yJ1xuaW1wb3J0IHsgY29udGV4dCB9IGZyb20gJy4vY29udGV4dCdcbmltcG9ydCB7IHJ1blNldHVwRmlsZXMgfSBmcm9tICcuL3NldHVwJ1xuXG5mdW5jdGlvbiBoYXNoKHN0cjogc3RyaW5nLCBsZW5ndGggPSAxMCkge1xuICByZXR1cm4gY3JlYXRlSGFzaCgnbWQ1JylcbiAgICAudXBkYXRlKHN0cilcbiAgICAuZGlnZXN0KCdoZXgnKVxuICAgIC5zbGljZSgwLCBsZW5ndGgpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb2xsZWN0VGVzdHMocGF0aHM6IHN0cmluZ1tdLCBjb25maWc6IFJlc29sdmVkQ29uZmlnKSB7XG4gIGNvbnN0IGZpbGVzOiBGaWxlW10gPSBbXVxuXG4gIGZvciAoY29uc3QgZmlsZXBhdGggb2YgcGF0aHMpIHtcbiAgICBjb25zdCBwYXRoID0gcmVsYXRpdmUoY29uZmlnLnJvb3QsIGZpbGVwYXRoKVxuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSB7XG4gICAgICBpZDogaGFzaChwYXRoKSxcbiAgICAgIG5hbWU6IHBhdGgsXG4gICAgICB0eXBlOiAnc3VpdGUnLFxuICAgICAgbW9kZTogJ3J1bicsXG4gICAgICBmaWxlcGF0aCxcbiAgICAgIHRhc2tzOiBbXSxcbiAgICB9XG5cbiAgICBjbGVhckNvbnRleHQoKVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBydW5TZXR1cEZpbGVzKGNvbmZpZylcbiAgICAgIGF3YWl0IGltcG9ydChmaWxlcGF0aClcblxuICAgICAgY29uc3QgZGVmYXVsdFRhc2tzID0gYXdhaXQgZGVmYXVsdFN1aXRlLmNvbGxlY3QoZmlsZSlcblxuICAgICAgc2V0SG9va3MoZmlsZSwgZ2V0SG9va3MoZGVmYXVsdFRhc2tzKSlcblxuICAgICAgZm9yIChjb25zdCBjIG9mIFsuLi5kZWZhdWx0VGFza3MudGFza3MsIC4uLmNvbnRleHQudGFza3NdKSB7XG4gICAgICAgIGlmIChjLnR5cGUgPT09ICd0ZXN0Jykge1xuICAgICAgICAgIGZpbGUudGFza3MucHVzaChjKVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGMudHlwZSA9PT0gJ3N1aXRlJykge1xuICAgICAgICAgIGZpbGUudGFza3MucHVzaChjKVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KClcbiAgICAgICAgICBjb25zdCBzdWl0ZSA9IGF3YWl0IGMuY29sbGVjdChmaWxlKVxuICAgICAgICAgIGZpbGUuY29sbGVjdER1cmF0aW9uID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFxuICAgICAgICAgIGlmIChzdWl0ZS5uYW1lIHx8IHN1aXRlLnRhc2tzLmxlbmd0aClcbiAgICAgICAgICAgIGZpbGUudGFza3MucHVzaChzdWl0ZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgZmlsZS5yZXN1bHQgPSB7XG4gICAgICAgIHN0YXRlOiAnZmFpbCcsXG4gICAgICAgIGVycm9yOiBwcm9jZXNzRXJyb3IoZSksXG4gICAgICB9XG4gICAgICAvLyBub3Qgc3VyZSB0aHksIHRoaXMgdGhpcyBsaW5lIGlzIG5lZWRlZCB0byB0cmlnZ2VyIHRoZSBlcnJvclxuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xcMCcpXG4gICAgfVxuXG4gICAgY2FsY3VsYXRlSGFzaChmaWxlKVxuXG4gICAgaW50ZXJwcmV0VGFza01vZGVzKGZpbGUsIGNvbmZpZy50ZXN0TmFtZVBhdHRlcm4pXG5cbiAgICBmaWxlcy5wdXNoKGZpbGUpXG4gIH1cblxuICByZXR1cm4gZmlsZXNcbn1cblxuLyoqXG4gKiBJZiBhbnkgdGFza3MgYmVlbiBtYXJrZWQgYXMgYG9ubHlgLCBtYXJrIGFsbCBvdGhlciB0YXNrcyBhcyBgc2tpcGAuXG4gKi9cbmZ1bmN0aW9uIGludGVycHJldFRhc2tNb2RlcyhzdWl0ZTogU3VpdGUsIG5hbWVQYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwLCBvbmx5TW9kZT86IGJvb2xlYW4pIHtcbiAgaWYgKG9ubHlNb2RlID09PSB1bmRlZmluZWQpXG4gICAgb25seU1vZGUgPSBzb21lVGFza3NBcmVPbmx5KHN1aXRlKVxuXG4gIHN1aXRlLnRhc2tzLmZvckVhY2goKHQpID0+IHtcbiAgICBpZiAob25seU1vZGUpIHtcbiAgICAgIGlmICh0LnR5cGUgPT09ICdzdWl0ZScgJiYgc29tZVRhc2tzQXJlT25seSh0KSkge1xuICAgICAgICAvLyBEb24ndCBza2lwIHRoaXMgc3VpdGVcbiAgICAgICAgaWYgKHQubW9kZSA9PT0gJ29ubHknKVxuICAgICAgICAgIHQubW9kZSA9ICdydW4nXG4gICAgICAgIGludGVycHJldFRhc2tNb2Rlcyh0LCBuYW1lUGF0dGVybiwgb25seU1vZGUpXG4gICAgICB9XG4gICAgICBlbHNlIGlmICh0Lm1vZGUgPT09ICdydW4nKSB7IHQubW9kZSA9ICdza2lwJyB9XG4gICAgICBlbHNlIGlmICh0Lm1vZGUgPT09ICdvbmx5JykgeyB0Lm1vZGUgPSAncnVuJyB9XG4gICAgfVxuICAgIGlmICh0LnR5cGUgPT09ICd0ZXN0Jykge1xuICAgICAgaWYgKG5hbWVQYXR0ZXJuICYmICF0Lm5hbWUubWF0Y2gobmFtZVBhdHRlcm4pKVxuICAgICAgICB0Lm1vZGUgPSAnc2tpcCdcbiAgICB9XG4gICAgZWxzZSBpZiAodC50eXBlID09PSAnc3VpdGUnKSB7XG4gICAgICBpZiAodC5tb2RlID09PSAnc2tpcCcpXG4gICAgICAgIHNraXBBbGxUYXNrcyh0KVxuXG4gICAgICAvLyBpZiBhbGwgc3VidGFza3MgYXJlIHNraXBwZWQsIG1hcmtlZCBhcyBza2lwXG4gICAgICBpZiAodC5tb2RlID09PSAncnVuJykge1xuICAgICAgICBpZiAodC50YXNrcy5ldmVyeShpID0+IGkubW9kZSAhPT0gJ3J1bicpKVxuICAgICAgICAgIHQubW9kZSA9ICdza2lwJ1xuICAgICAgfVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gc29tZVRhc2tzQXJlT25seShzdWl0ZTogU3VpdGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN1aXRlLnRhc2tzLnNvbWUodCA9PiB0Lm1vZGUgPT09ICdvbmx5JyB8fCAodC50eXBlID09PSAnc3VpdGUnICYmIHNvbWVUYXNrc0FyZU9ubHkodCkpKVxufVxuXG5mdW5jdGlvbiBza2lwQWxsVGFza3Moc3VpdGU6IFN1aXRlKSB7XG4gIHN1aXRlLnRhc2tzLmZvckVhY2goKHQpID0+IHtcbiAgICBpZiAodC5tb2RlID09PSAncnVuJykge1xuICAgICAgdC5tb2RlID0gJ3NraXAnXG4gICAgICBpZiAodC50eXBlID09PSAnc3VpdGUnKVxuICAgICAgICBza2lwQWxsVGFza3ModClcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZUhhc2gocGFyZW50OiBTdWl0ZSkge1xuICBwYXJlbnQudGFza3MuZm9yRWFjaCgodCwgaWR4KSA9PiB7XG4gICAgdC5pZCA9IGAke3BhcmVudC5pZH1fJHtpZHh9YFxuICAgIGlmICh0LnR5cGUgPT09ICdzdWl0ZScpXG4gICAgICBjYWxjdWxhdGVIYXNoKHQpXG4gIH0pXG59XG4iLCJpbXBvcnQgeyBwZXJmb3JtYW5jZSB9IGZyb20gJ3BlcmZfaG9va3MnXG5pbXBvcnQgdHlwZSB7IEhvb2tMaXN0ZW5lciwgUmVzb2x2ZWRDb25maWcsIFN1aXRlLCBTdWl0ZUhvb2tzLCBUYXNrLCBUYXNrUmVzdWx0LCBUZXN0IH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyB2aSB9IGZyb20gJy4uL2ludGVncmF0aW9ucy92aSdcbmltcG9ydCB7IGdldFNuYXBzaG90Q2xpZW50IH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL3NuYXBzaG90L2NoYWknXG5pbXBvcnQgeyBnZXRGdWxsTmFtZSwgaGFzRmFpbGVkLCBoYXNUZXN0cywgcGFydGl0aW9uU3VpdGVDaGlsZHJlbiB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgZ2V0U3RhdGUsIHNldFN0YXRlIH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL2NoYWkvamVzdC1leHBlY3QnXG5pbXBvcnQgeyBnZXRGbiwgZ2V0SG9va3MgfSBmcm9tICcuL21hcCdcbmltcG9ydCB7IHJwYyB9IGZyb20gJy4vcnBjJ1xuaW1wb3J0IHsgY29sbGVjdFRlc3RzIH0gZnJvbSAnLi9jb2xsZWN0J1xuaW1wb3J0IHsgcHJvY2Vzc0Vycm9yIH0gZnJvbSAnLi9lcnJvcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNhbGxTdWl0ZUhvb2s8VCBleHRlbmRzIGtleW9mIFN1aXRlSG9va3M+KHN1aXRlOiBTdWl0ZSwgbmFtZTogVCwgYXJnczogU3VpdGVIb29rc1tUXVswXSBleHRlbmRzIEhvb2tMaXN0ZW5lcjxpbmZlciBBPiA/IEEgOiBuZXZlcikge1xuICBpZiAobmFtZSA9PT0gJ2JlZm9yZUVhY2gnICYmIHN1aXRlLnN1aXRlKVxuICAgIGF3YWl0IGNhbGxTdWl0ZUhvb2soc3VpdGUuc3VpdGUsIG5hbWUsIGFyZ3MpXG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoZ2V0SG9va3Moc3VpdGUpW25hbWVdLm1hcChmbiA9PiBmbiguLi4oYXJncyBhcyBhbnkpKSkpXG5cbiAgaWYgKG5hbWUgPT09ICdhZnRlckVhY2gnICYmIHN1aXRlLnN1aXRlKVxuICAgIGF3YWl0IGNhbGxTdWl0ZUhvb2soc3VpdGUuc3VpdGUsIG5hbWUsIGFyZ3MpXG59XG5cbmNvbnN0IHBhY2tzID0gbmV3IE1hcDxzdHJpbmcsIFRhc2tSZXN1bHR8dW5kZWZpbmVkPigpXG5sZXQgdXBkYXRlVGltZXI6IGFueVxubGV0IHByZXZpb3VzVXBkYXRlOiBQcm9taXNlPHZvaWQ+fHVuZGVmaW5lZFxuXG5mdW5jdGlvbiB1cGRhdGVUYXNrKHRhc2s6IFRhc2spIHtcbiAgcGFja3Muc2V0KHRhc2suaWQsIHRhc2sucmVzdWx0KVxuXG4gIGNsZWFyVGltZW91dCh1cGRhdGVUaW1lcilcbiAgdXBkYXRlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBwcmV2aW91c1VwZGF0ZSA9IHNlbmRUYXNrc1VwZGF0ZSgpXG4gIH0sIDEwKVxufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kVGFza3NVcGRhdGUoKSB7XG4gIGNsZWFyVGltZW91dCh1cGRhdGVUaW1lcilcbiAgYXdhaXQgcHJldmlvdXNVcGRhdGVcblxuICBpZiAocGFja3Muc2l6ZSkge1xuICAgIGNvbnN0IHAgPSBycGMoKS5vblRhc2tVcGRhdGUoQXJyYXkuZnJvbShwYWNrcykpXG4gICAgcGFja3MuY2xlYXIoKVxuICAgIHJldHVybiBwXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QodGVzdDogVGVzdCkge1xuICBpZiAodGVzdC5tb2RlICE9PSAncnVuJylcbiAgICByZXR1cm5cblxuICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpXG5cbiAgdGVzdC5yZXN1bHQgPSB7XG4gICAgc3RhdGU6ICdydW4nLFxuICB9XG4gIHVwZGF0ZVRhc2sodGVzdClcblxuICBjbGVhck1vZHVsZU1vY2tzKClcblxuICBnZXRTbmFwc2hvdENsaWVudCgpLnNldFRlc3QodGVzdClcblxuICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmN1cnJlbnQgPSB0ZXN0XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBjYWxsU3VpdGVIb29rKHRlc3Quc3VpdGUsICdiZWZvcmVFYWNoJywgW3Rlc3QsIHRlc3Quc3VpdGVdKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIGFzc2VydGlvbkNhbGxzOiAwLFxuICAgICAgaXNFeHBlY3RpbmdBc3NlcnRpb25zOiBmYWxzZSxcbiAgICAgIGlzRXhwZWN0aW5nQXNzZXJ0aW9uc0Vycm9yOiBudWxsLFxuICAgICAgZXhwZWN0ZWRBc3NlcnRpb25zTnVtYmVyOiBudWxsLFxuICAgICAgZXhwZWN0ZWRBc3NlcnRpb25zTnVtYmVyRXJyb3I6IG51bGwsXG4gICAgICB0ZXN0UGF0aDogdGVzdC5zdWl0ZS5maWxlPy5maWxlcGF0aCxcbiAgICAgIGN1cnJlbnRUZXN0TmFtZTogZ2V0RnVsbE5hbWUodGVzdCksXG4gICAgfSlcbiAgICBhd2FpdCBnZXRGbih0ZXN0KSgpXG4gICAgY29uc3QgeyBhc3NlcnRpb25DYWxscywgZXhwZWN0ZWRBc3NlcnRpb25zTnVtYmVyLCBleHBlY3RlZEFzc2VydGlvbnNOdW1iZXJFcnJvciwgaXNFeHBlY3RpbmdBc3NlcnRpb25zLCBpc0V4cGVjdGluZ0Fzc2VydGlvbnNFcnJvciB9ID0gZ2V0U3RhdGUoKVxuICAgIGlmIChleHBlY3RlZEFzc2VydGlvbnNOdW1iZXIgIT09IG51bGwgJiYgYXNzZXJ0aW9uQ2FsbHMgIT09IGV4cGVjdGVkQXNzZXJ0aW9uc051bWJlcilcbiAgICAgIHRocm93IGV4cGVjdGVkQXNzZXJ0aW9uc051bWJlckVycm9yXG4gICAgaWYgKGlzRXhwZWN0aW5nQXNzZXJ0aW9ucyA9PT0gdHJ1ZSAmJiBhc3NlcnRpb25DYWxscyA9PT0gMClcbiAgICAgIHRocm93IGlzRXhwZWN0aW5nQXNzZXJ0aW9uc0Vycm9yXG5cbiAgICB0ZXN0LnJlc3VsdC5zdGF0ZSA9ICdwYXNzJ1xuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgdGVzdC5yZXN1bHQuc3RhdGUgPSAnZmFpbCdcbiAgICB0ZXN0LnJlc3VsdC5lcnJvciA9IHByb2Nlc3NFcnJvcihlKVxuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBjYWxsU3VpdGVIb29rKHRlc3Quc3VpdGUsICdhZnRlckVhY2gnLCBbdGVzdCwgdGVzdC5zdWl0ZV0pXG4gIH1cbiAgY2F0Y2ggKGUpIHtcbiAgICB0ZXN0LnJlc3VsdC5zdGF0ZSA9ICdmYWlsJ1xuICAgIHRlc3QucmVzdWx0LmVycm9yID0gcHJvY2Vzc0Vycm9yKGUpXG4gIH1cblxuICAvLyBpZiB0ZXN0IGlzIG1hcmtlZCB0byBiZSBmYWlsZWQsIGZsaXAgdGhlIHJlc3VsdFxuICBpZiAodGVzdC5mYWlscykge1xuICAgIGlmICh0ZXN0LnJlc3VsdC5zdGF0ZSA9PT0gJ3Bhc3MnKSB7XG4gICAgICB0ZXN0LnJlc3VsdC5zdGF0ZSA9ICdmYWlsJ1xuICAgICAgdGVzdC5yZXN1bHQuZXJyb3IgPSBwcm9jZXNzRXJyb3IobmV3IEVycm9yKCdFeHBlY3QgdGVzdCB0byBmYWlsJykpXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGVzdC5yZXN1bHQuc3RhdGUgPSAncGFzcydcbiAgICAgIHRlc3QucmVzdWx0LmVycm9yID0gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgZ2V0U25hcHNob3RDbGllbnQoKS5jbGVhclRlc3QoKVxuXG4gIHRlc3QucmVzdWx0LmR1cmF0aW9uID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFxuXG4gIHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18uY3VycmVudCA9IHVuZGVmaW5lZFxuXG4gIHVwZGF0ZVRhc2sodGVzdClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blN1aXRlKHN1aXRlOiBTdWl0ZSkge1xuICBpZiAoc3VpdGUucmVzdWx0Py5zdGF0ZSA9PT0gJ2ZhaWwnKVxuICAgIHJldHVyblxuXG4gIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KClcblxuICBzdWl0ZS5yZXN1bHQgPSB7XG4gICAgc3RhdGU6ICdydW4nLFxuICB9XG5cbiAgdXBkYXRlVGFzayhzdWl0ZSlcblxuICBpZiAoc3VpdGUubW9kZSA9PT0gJ3NraXAnKSB7XG4gICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ3NraXAnXG4gIH1cbiAgZWxzZSBpZiAoc3VpdGUubW9kZSA9PT0gJ3RvZG8nKSB7XG4gICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ3RvZG8nXG4gIH1cbiAgZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNhbGxTdWl0ZUhvb2soc3VpdGUsICdiZWZvcmVBbGwnLCBbc3VpdGVdKVxuXG4gICAgICBmb3IgKGNvbnN0IHRhc2tzR3JvdXAgb2YgcGFydGl0aW9uU3VpdGVDaGlsZHJlbihzdWl0ZSkpIHtcbiAgICAgICAgaWYgKHRhc2tzR3JvdXBbMF0uY29uY3VycmVudCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHRhc2tzR3JvdXAubWFwKGMgPT4gcnVuU3VpdGVDaGlsZChjKSkpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZm9yIChjb25zdCBjIG9mIHRhc2tzR3JvdXApXG4gICAgICAgICAgICBhd2FpdCBydW5TdWl0ZUNoaWxkKGMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXdhaXQgY2FsbFN1aXRlSG9vayhzdWl0ZSwgJ2FmdGVyQWxsJywgW3N1aXRlXSlcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgIHN1aXRlLnJlc3VsdC5zdGF0ZSA9ICdmYWlsJ1xuICAgICAgc3VpdGUucmVzdWx0LmVycm9yID0gcHJvY2Vzc0Vycm9yKGUpXG4gICAgfVxuICB9XG4gIHN1aXRlLnJlc3VsdC5kdXJhdGlvbiA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRcblxuICBpZiAoc3VpdGUubW9kZSA9PT0gJ3J1bicpIHtcbiAgICBpZiAoIWhhc1Rlc3RzKHN1aXRlKSkge1xuICAgICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ2ZhaWwnXG4gICAgICBpZiAoIXN1aXRlLnJlc3VsdC5lcnJvcilcbiAgICAgICAgc3VpdGUucmVzdWx0LmVycm9yID0gbmV3IEVycm9yKGBObyB0ZXN0cyBmb3VuZCBpbiBzdWl0ZSAke3N1aXRlLm5hbWV9YClcbiAgICB9XG4gICAgZWxzZSBpZiAoaGFzRmFpbGVkKHN1aXRlKSkge1xuICAgICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ2ZhaWwnXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ3Bhc3MnXG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVGFzayhzdWl0ZSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuU3VpdGVDaGlsZChjOiBUYXNrKSB7XG4gIHJldHVybiBjLnR5cGUgPT09ICd0ZXN0J1xuICAgID8gcnVuVGVzdChjKVxuICAgIDogcnVuU3VpdGUoYylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blN1aXRlcyhzdWl0ZXM6IFN1aXRlW10pIHtcbiAgZm9yIChjb25zdCBzdWl0ZSBvZiBzdWl0ZXMpXG4gICAgYXdhaXQgcnVuU3VpdGUoc3VpdGUpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydFRlc3RzKHBhdGhzOiBzdHJpbmdbXSwgY29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICBjb25zdCBmaWxlcyA9IGF3YWl0IGNvbGxlY3RUZXN0cyhwYXRocywgY29uZmlnKVxuXG4gIHJwYygpLm9uQ29sbGVjdGVkKGZpbGVzKVxuXG4gIGF3YWl0IHJ1blN1aXRlcyhmaWxlcylcblxuICBhd2FpdCBnZXRTbmFwc2hvdENsaWVudCgpLnNhdmVTbmFwKClcblxuICBhd2FpdCBzZW5kVGFza3NVcGRhdGUoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJNb2R1bGVNb2NrcygpIHtcbiAgY29uc3QgeyBjbGVhck1vY2tzLCBtb2NrUmVzZXQsIHJlc3RvcmVNb2NrcyB9ID0gcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5jb25maWdcblxuICAvLyBzaW5jZSBlYWNoIGZ1bmN0aW9uIGNhbGxzIGFub3RoZXIsIHdlIGNhbiBqdXN0IGNhbGwgb25lXG4gIGlmIChyZXN0b3JlTW9ja3MpXG4gICAgdmkucmVzdG9yZUFsbE1vY2tzKClcbiAgZWxzZSBpZiAobW9ja1Jlc2V0KVxuICAgIHZpLnJlc2V0QWxsTW9ja3MoKVxuICBlbHNlIGlmIChjbGVhck1vY2tzKVxuICAgIHZpLmNsZWFyQWxsTW9ja3MoKVxufVxuIiwiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcydcbmltcG9ydCB0eXBlIHsgQnVpbHRpbkVudmlyb25tZW50LCBSZXNvbHZlZENvbmZpZyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgdmkgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbnMvdmknXG5pbXBvcnQgeyBzZXR1cEdsb2JhbEVudiwgd2l0aEVudiB9IGZyb20gJy4vc2V0dXAnXG5pbXBvcnQgeyBzdGFydFRlc3RzIH0gZnJvbSAnLi9ydW4nXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW4oZmlsZXM6IHN0cmluZ1tdLCBjb25maWc6IFJlc29sdmVkQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHNldHVwR2xvYmFsRW52KGNvbmZpZylcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBjb25zdCBjb2RlID0gYXdhaXQgZnMucmVhZEZpbGUoZmlsZSwgJ3V0Zi04JylcblxuICAgIGNvbnN0IGVudiA9IGNvZGUubWF0Y2goL0AoPzp2aXRlc3R8amVzdCktZW52aXJvbm1lbnRcXHMrPyhbXFx3LV0rKVxcYi8pPy5bMV0gfHwgY29uZmlnLmVudmlyb25tZW50IHx8ICdub2RlJ1xuXG4gICAgaWYgKCFbJ25vZGUnLCAnanNkb20nLCAnaGFwcHktZG9tJ10uaW5jbHVkZXMoZW52KSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZW52aXJvbm1lbnQ6ICR7ZW52fWApXG5cbiAgICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmZpbGVwYXRoID0gZmlsZVxuXG4gICAgdmkucmVzdG9yZUFsbE1vY2tzKClcblxuICAgIGF3YWl0IHdpdGhFbnYoZW52IGFzIEJ1aWx0aW5FbnZpcm9ubWVudCwgY29uZmlnLmVudmlyb25tZW50T3B0aW9ucyB8fCB7fSwgYXN5bmMoKSA9PiB7XG4gICAgICBhd2FpdCBzdGFydFRlc3RzKFtmaWxlXSwgY29uZmlnKVxuICAgIH0pXG5cbiAgICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmZpbGVwYXRoID0gdW5kZWZpbmVkXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfX2RlZlByb3AiLCJfX2dldE93blByb3BTeW1ib2xzIiwiX19oYXNPd25Qcm9wIiwiX19wcm9wSXNFbnVtIiwiX19kZWZOb3JtYWxQcm9wIiwiX19zcHJlYWRWYWx1ZXMiLCJyZXF1aXJlIiwidGhpcyIsImZzIiwibmF0dXJhbENvbXBhcmVNb2R1bGUiLCJwcmV0dHlGb3JtYXQiLCJwYXRoIiwibmF0dXJhbENvbXBhcmUiLCJmc3AiLCJBc3ltbWV0cmljTWF0Y2hlciIsInByZXR0eUZvcm1hdFBsdWdpbnMiLCJjaGFpIiwicGVyZm9ybWFuY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxXQUFlO0FBQ2YsRUFBRSxJQUFJLEVBQUUsTUFBTTtBQUNkLEVBQUUsTUFBTSxLQUFLLEdBQUc7QUFDaEIsSUFBSSxPQUFPO0FBQ1gsTUFBTSxRQUFRLEdBQUc7QUFDakIsT0FBTztBQUNQLEtBQUssQ0FBQztBQUNOLEdBQUc7QUFDSCxDQUFDOztBQ1JELE1BQU0sV0FBVyxHQUFHO0FBQ3BCLEVBQUUsY0FBYztBQUNoQixFQUFFLEtBQUs7QUFDUCxFQUFFLGlCQUFpQjtBQUNuQixFQUFFLGFBQWE7QUFDZixFQUFFLGNBQWM7QUFDaEIsRUFBRSxNQUFNO0FBQ1IsRUFBRSxNQUFNO0FBQ1IsRUFBRSxTQUFTO0FBQ1gsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxVQUFVO0FBQ1osRUFBRSxhQUFh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
|