vitest 0.0.130 → 0.0.131
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/_commonjsHelpers-c9e3b764.js +1 -0
- package/dist/cli.js +4 -3
- package/dist/constants-5b9c0d41.js +1 -0
- package/dist/diff-aa2146ff.js +4750 -0
- package/dist/entry.js +2 -1
- package/dist/externalize-2f63779d.js +1 -0
- package/dist/global-4d67a585.js +1 -0
- package/dist/index-648e7ab2.js +1 -0
- package/dist/index-6e709f57.js +1 -0
- package/dist/index-6f5d03b2.js +1 -0
- package/dist/index-98403570.js +8480 -0
- package/dist/index-9fdde2e8.js +1 -0
- package/dist/index-ce49e384.js +1 -0
- package/dist/index-e909c175.js +1 -0
- package/dist/index-fa899e66.js +1 -0
- package/dist/index.js +1 -0
- package/dist/jest-mock-30625866.js +1 -0
- package/dist/magic-string.es-94000aea.js +1 -0
- package/dist/node.js +3 -2
- package/dist/rpc-8c7cc374.js +1 -0
- package/dist/setup-b212370d.js +4365 -0
- package/dist/vi-8ac1afa2.js +1 -0
- package/dist/worker.js +1 -0
- package/package.json +6 -6
- package/dist/diff-3adb959a.js +0 -4751
- package/dist/index-bc2183ca.js +0 -8473
- package/dist/setup-a6f22d64.js +0 -4364
package/dist/entry.js
CHANGED
|
@@ -7,7 +7,7 @@ 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, v as getNames, c, t as toArray, r as relative, w as partitionSuiteChildren, x as hasTests, h as hasFailed } from './index-9fdde2e8.js';
|
|
9
9
|
import { r as rpc } from './rpc-8c7cc374.js';
|
|
10
|
-
import { l as getOriginalPos, m as posToNumber, n as parseStacktrace, u as unifiedDiff } from './diff-
|
|
10
|
+
import { l as getOriginalPos, m as posToNumber, n as parseStacktrace, u as unifiedDiff } from './diff-aa2146ff.js';
|
|
11
11
|
import { performance as performance$1 } from 'perf_hooks';
|
|
12
12
|
import { createHash } from 'crypto';
|
|
13
13
|
import { format } from 'util';
|
|
@@ -1582,3 +1582,4 @@ async function run(files, config) {
|
|
|
1582
1582
|
}
|
|
1583
1583
|
|
|
1584
1584
|
export { run };
|
|
1585
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnkuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9lbnYvbm9kZS50cyIsIi4uL3NyYy9lbnYvanNkb20ta2V5cy50cyIsIi4uL3NyYy9lbnYvanNkb20udHMiLCIuLi9zcmMvZW52L2hhcHB5LWRvbS50cyIsIi4uL3NyYy9lbnYvaW5kZXgudHMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY2hhaS1zdWJzZXRAMS42LjAvbm9kZV9tb2R1bGVzL2NoYWktc3Vic2V0L2xpYi9jaGFpLXN1YnNldC5qcyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvc25hcHNob3QvcG9ydC9pbmxpbmVTbmFwc2hvdC50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9uYXR1cmFsLWNvbXBhcmVAMS40LjAvbm9kZV9tb2R1bGVzL25hdHVyYWwtY29tcGFyZS9pbmRleC5qcyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvc25hcHNob3QvcG9ydC91dGlscy50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvc25hcHNob3QvcG9ydC9zdGF0ZS50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvc25hcHNob3QvY2xpZW50LnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9zbmFwc2hvdC9jaGFpLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9jaGFpL2plc3QtbWF0Y2hlci11dGlscy50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvY2hhaS9qZXN0LWV4dGVuZC50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvY2hhaS9qZXN0LWFzeW1tZXRyaWMtbWF0Y2hlcnMudHMiLCIuLi9zcmMvaW50ZWdyYXRpb25zL2NoYWkvc2V0dXAudHMiLCIuLi9zcmMvcnVudGltZS9zZXR1cC50cyIsIi4uL3NyYy9ydW50aW1lL2Vycm9yLnRzIiwiLi4vc3JjL3J1bnRpbWUvY29sbGVjdC50cyIsIi4uL3NyYy9ydW50aW1lL3J1bi50cyIsIi4uL3NyYy9ydW50aW1lL2VudHJ5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi90eXBlcydcblxuZXhwb3J0IGRlZmF1bHQgPEVudmlyb25tZW50Pih7XG4gIG5hbWU6ICdub2RlJyxcbiAgYXN5bmMgc2V0dXAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRlYXJkb3duKCkge1xuICAgICAgfSxcbiAgICB9XG4gIH0sXG59KVxuIiwiLy8gU0VFIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2RvbS9qc2RvbS9ibG9iL21hc3Rlci9saWIvanNkb20vbGl2aW5nL2ludGVyZmFjZXMuanNcblxuY29uc3QgTElWSU5HX0tFWVMgPSBbXG4gICdET01FeGNlcHRpb24nLFxuICAnVVJMJyxcbiAgJ1VSTFNlYXJjaFBhcmFtcycsXG4gICdFdmVudFRhcmdldCcsXG4gICdOYW1lZE5vZGVNYXAnLFxuICAnTm9kZScsXG4gICdBdHRyJyxcbiAgJ0VsZW1lbnQnLFxuICAnRG9jdW1lbnRGcmFnbWVudCcsXG4gICdET01JbXBsZW1lbnRhdGlvbicsXG4gICdEb2N1bWVudCcsXG4gICdYTUxEb2N1bWVudCcsXG4gICdDaGFyYWN0ZXJEYXRhJyxcbiAgJ1RleHQnLFxuICAnQ0RBVEFTZWN0aW9uJyxcbiAgJ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbicsXG4gICdDb21tZW50JyxcbiAgJ0RvY3VtZW50VHlwZScsXG4gICdOb2RlTGlzdCcsXG4gICdIVE1MQ29sbGVjdGlvbicsXG4gICdIVE1MT3B0aW9uc0NvbGxlY3Rpb24nLFxuICAnRE9NU3RyaW5nTWFwJyxcbiAgJ0RPTVRva2VuTGlzdCcsXG4gICdTdHlsZVNoZWV0TGlzdCcsXG4gICdIVE1MRWxlbWVudCcsXG4gICdIVE1MSGVhZEVsZW1lbnQnLFxuICAnSFRNTFRpdGxlRWxlbWVudCcsXG4gICdIVE1MQmFzZUVsZW1lbnQnLFxuICAnSFRNTExpbmtFbGVtZW50JyxcbiAgJ0hUTUxNZXRhRWxlbWVudCcsXG4gICdIVE1MU3R5bGVFbGVtZW50JyxcbiAgJ0hUTUxCb2R5RWxlbWVudCcsXG4gICdIVE1MSGVhZGluZ0VsZW1lbnQnLFxuICAnSFRNTFBhcmFncmFwaEVsZW1lbnQnLFxuICAnSFRNTEhSRWxlbWVudCcsXG4gICdIVE1MUHJlRWxlbWVudCcsXG4gICdIVE1MVUxpc3RFbGVtZW50JyxcbiAgJ0hUTUxPTGlzdEVsZW1lbnQnLFxuICAnSFRNTExJRWxlbWVudCcsXG4gICdIVE1MTWVudUVsZW1lbnQnLFxuICAnSFRNTERMaXN0RWxlbWVudCcsXG4gICdIVE1MRGl2RWxlbWVudCcsXG4gICdIVE1MQW5jaG9yRWxlbWVudCcsXG4gICdIVE1MQXJlYUVsZW1lbnQnLFxuICAnSFRNTEJSRWxlbWVudCcsXG4gICdIVE1MQnV0dG9uRWxlbWVudCcsXG4gICdIVE1MQ2FudmFzRWxlbWVudCcsXG4gICdIVE1MRGF0YUVsZW1lbnQnLFxuICAnSFRNTERhdGFMaXN0RWxlbWVudCcsXG4gICdIVE1MRGV0YWlsc0VsZW1lbnQnLFxuICAnSFRNTERpYWxvZ0VsZW1lbnQnLFxuICAnSFRNTERpcmVjdG9yeUVsZW1lbnQnLFxuICAnSFRNTEZpZWxkU2V0RWxlbWVudCcsXG4gICdIVE1MRm9udEVsZW1lbnQnLFxuICAnSFRNTEZvcm1FbGVtZW50JyxcbiAgJ0hUTUxIdG1sRWxlbWVudCcsXG4gICdIVE1MSW1hZ2VFbGVtZW50JyxcbiAgJ0hUTUxJbnB1dEVsZW1lbnQnLFxuICAnSFRNTExhYmVsRWxlbWVudCcsXG4gICdIVE1MTGVnZW5kRWxlbWVudCcsXG4gICdIVE1MTWFwRWxlbWVudCcsXG4gICdIVE1MTWFycXVlZUVsZW1lbnQnLFxuICAnSFRNTE1lZGlhRWxlbWVudCcsXG4gICdIVE1MTWV0ZXJFbGVtZW50JyxcbiAgJ0hUTUxNb2RFbGVtZW50JyxcbiAgJ0hUTUxPcHRHcm91cEVsZW1lbnQnLFxuICAnSFRNTE9wdGlvbkVsZW1lbnQnLFxuICAnSFRNTE91dHB1dEVsZW1lbnQnLFxuICAnSFRNTFBpY3R1cmVFbGVtZW50JyxcbiAgJ0hUTUxQcm9ncmVzc0VsZW1lbnQnLFxuICAnSFRNTFF1b3RlRWxlbWVudCcsXG4gICdIVE1MU2NyaXB0RWxlbWVudCcsXG4gICdIVE1MU2VsZWN0RWxlbWVudCcsXG4gICdIVE1MU2xvdEVsZW1lbnQnLFxuICAnSFRNTFNvdXJjZUVsZW1lbnQnLFxuICAnSFRNTFNwYW5FbGVtZW50JyxcbiAgJ0hUTUxUYWJsZUNhcHRpb25FbGVtZW50JyxcbiAgJ0hUTUxUYWJsZUNlbGxFbGVtZW50JyxcbiAgJ0hUTUxUYWJsZUNvbEVsZW1lbnQnLFxuICAnSFRNTFRhYmxlRWxlbWVudCcsXG4gICdIVE1MVGltZUVsZW1lbnQnLFxuICAnSFRNTFRhYmxlUm93RWxlbWVudCcsXG4gICdIVE1MVGFibGVTZWN0aW9uRWxlbWVudCcsXG4gICdIVE1MVGVtcGxhdGVFbGVtZW50JyxcbiAgJ0hUTUxUZXh0QXJlYUVsZW1lbnQnLFxuICAnSFRNTFVua25vd25FbGVtZW50JyxcbiAgJ0hUTUxGcmFtZUVsZW1lbnQnLFxuICAnSFRNTEZyYW1lU2V0RWxlbWVudCcsXG4gICdIVE1MSUZyYW1lRWxlbWVudCcsXG4gICdIVE1MRW1iZWRFbGVtZW50JyxcbiAgJ0hUTUxPYmplY3RFbGVtZW50JyxcbiAgJ0hUTUxQYXJhbUVsZW1lbnQnLFxuICAnSFRNTFZpZGVvRWxlbWVudCcsXG4gICdIVE1MQXVkaW9FbGVtZW50JyxcbiAgJ0hUTUxUcmFja0VsZW1lbnQnLFxuICAnU1ZHRWxlbWVudCcsXG4gICdTVkdHcmFwaGljc0VsZW1lbnQnLFxuICAnU1ZHU1ZHRWxlbWVudCcsXG4gICdTVkdUaXRsZUVsZW1lbnQnLFxuICAnU1ZHQW5pbWF0ZWRTdHJpbmcnLFxuICAnU1ZHTnVtYmVyJyxcbiAgJ1NWR1N0cmluZ0xpc3QnLFxuICAnRXZlbnQnLFxuICAnQ2xvc2VFdmVudCcsXG4gICdDdXN0b21FdmVudCcsXG4gICdNZXNzYWdlRXZlbnQnLFxuICAnRXJyb3JFdmVudCcsXG4gICdIYXNoQ2hhbmdlRXZlbnQnLFxuICAnUG9wU3RhdGVFdmVudCcsXG4gICdTdG9yYWdlRXZlbnQnLFxuICAnUHJvZ3Jlc3NFdmVudCcsXG4gICdQYWdlVHJhbnNpdGlvbkV2ZW50JyxcbiAgJ1VJRXZlbnQnLFxuICAnRm9jdXNFdmVudCcsXG4gICdJbnB1dEV2ZW50JyxcbiAgJ01vdXNlRXZlbnQnLFxuICAnS2V5Ym9hcmRFdmVudCcsXG4gICdUb3VjaEV2ZW50JyxcbiAgJ0NvbXBvc2l0aW9uRXZlbnQnLFxuICAnV2hlZWxFdmVudCcsXG4gICdCYXJQcm9wJyxcbiAgJ0V4dGVybmFsJyxcbiAgJ0xvY2F0aW9uJyxcbiAgJ0hpc3RvcnknLFxuICAnU2NyZWVuJyxcbiAgJ1BlcmZvcm1hbmNlJyxcbiAgJ05hdmlnYXRvcicsXG4gICdQbHVnaW5BcnJheScsXG4gICdNaW1lVHlwZUFycmF5JyxcbiAgJ1BsdWdpbicsXG4gICdNaW1lVHlwZScsXG4gICdGaWxlUmVhZGVyJyxcbiAgJ0Jsb2InLFxuICAnRmlsZScsXG4gICdGaWxlTGlzdCcsXG4gICdWYWxpZGl0eVN0YXRlJyxcbiAgJ0RPTVBhcnNlcicsXG4gICdYTUxTZXJpYWxpemVyJyxcbiAgJ0Zvcm1EYXRhJyxcbiAgJ1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQnLFxuICAnWE1MSHR0cFJlcXVlc3RVcGxvYWQnLFxuICAnWE1MSHR0cFJlcXVlc3QnLFxuICAnV2ViU29ja2V0JyxcbiAgJ05vZGVGaWx0ZXInLFxuICAnTm9kZUl0ZXJhdG9yJyxcbiAgJ1RyZWVXYWxrZXInLFxuICAnQWJzdHJhY3RSYW5nZScsXG4gICdSYW5nZScsXG4gICdTdGF0aWNSYW5nZScsXG4gICdTZWxlY3Rpb24nLFxuICAnU3RvcmFnZScsXG4gICdDdXN0b21FbGVtZW50UmVnaXN0cnknLFxuICAnU2hhZG93Um9vdCcsXG4gICdNdXRhdGlvbk9ic2VydmVyJyxcbiAgJ011dGF0aW9uUmVjb3JkJyxcbiAgJ0hlYWRlcnMnLFxuICAnQWJvcnRDb250cm9sbGVyJyxcbiAgJ0Fib3J0U2lnbmFsJyxcbl1cblxuY29uc3QgT1RIRVJfS0VZUyA9IFtcbiAgJ2FkZEV2ZW50TGlzdGVuZXInLFxuICAnYWxlcnQnLFxuICAnYXRvYicsXG4gICdibHVyJyxcbiAgJ2J0b2EnLFxuICAvKiAnY2xlYXJJbnRlcnZhbCcsICovXG4gIC8qICdjbGVhclRpbWVvdXQnLCAqL1xuICAnY2xvc2UnLFxuICAnY29uZmlybScsXG4gIC8qICdjb25zb2xlJywgKi9cbiAgJ2NyZWF0ZVBvcHVwJyxcbiAgJ2Rpc3BhdGNoRXZlbnQnLFxuICAnZG9jdW1lbnQnLFxuICAnZm9jdXMnLFxuICAnZnJhbWVzJyxcbiAgJ2dldENvbXB1dGVkU3R5bGUnLFxuICAnaGlzdG9yeScsXG4gICdpbm5lckhlaWdodCcsXG4gICdpbm5lcldpZHRoJyxcbiAgJ2xlbmd0aCcsXG4gICdsb2NhdGlvbicsXG4gICdtYXRjaE1lZGlhJyxcbiAgJ21vdmVCeScsXG4gICdtb3ZlVG8nLFxuICAnbmFtZScsXG4gICduYXZpZ2F0b3InLFxuICAnb3BlbicsXG4gICdvdXRlckhlaWdodCcsXG4gICdvdXRlcldpZHRoJyxcbiAgJ3BhZ2VYT2Zmc2V0JyxcbiAgJ3BhZ2VZT2Zmc2V0JyxcbiAgJ3BhcmVudCcsXG4gICdwb3N0TWVzc2FnZScsXG4gICdwcmludCcsXG4gICdwcm9tcHQnLFxuICAncmVtb3ZlRXZlbnRMaXN0ZW5lcicsXG4gICdyZXNpemVCeScsXG4gICdyZXNpemVUbycsXG4gICdzY3JlZW4nLFxuICAnc2NyZWVuTGVmdCcsXG4gICdzY3JlZW5Ub3AnLFxuICAnc2NyZWVuWCcsXG4gICdzY3JlZW5ZJyxcbiAgJ3Njcm9sbCcsXG4gICdzY3JvbGxCeScsXG4gICdzY3JvbGxMZWZ0JyxcbiAgJ3Njcm9sbFRvJyxcbiAgJ3Njcm9sbFRvcCcsXG4gICdzY3JvbGxYJyxcbiAgJ3Njcm9sbFknLFxuICAnc2VsZicsXG4gIC8qICdzZXRJbnRlcnZhbCcsICovXG4gIC8qICdzZXRUaW1lb3V0JywgKi9cbiAgJ3N0b3AnLFxuICAvKiAndG9TdHJpbmcnLCAqL1xuICAndG9wJyxcbiAgJ3dpbmRvdycsXG5dXG5cbmV4cG9ydCBjb25zdCBLRVlTID0gTElWSU5HX0tFWVMuY29uY2F0KE9USEVSX0tFWVMpXG4iLCJpbXBvcnQgeyBpbXBvcnRNb2R1bGUgfSBmcm9tICdsb2NhbC1wa2cnXG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBLRVlTIH0gZnJvbSAnLi9qc2RvbS1rZXlzJ1xuXG5leHBvcnQgZGVmYXVsdCA8RW52aXJvbm1lbnQ+KHtcbiAgbmFtZTogJ2pzZG9tJyxcbiAgYXN5bmMgc2V0dXAoZ2xvYmFsKSB7XG4gICAgY29uc3QgeyBKU0RPTSB9ID0gYXdhaXQgaW1wb3J0TW9kdWxlKCdqc2RvbScpIGFzIHR5cGVvZiBpbXBvcnQoJ2pzZG9tJylcbiAgICBjb25zdCBkb20gPSBuZXcgSlNET00oJzwhRE9DVFlQRSBodG1sPicsXG4gICAgICB7XG4gICAgICAgIHByZXRlbmRUb0JlVmlzdWFsOiB0cnVlLFxuICAgICAgICBydW5TY3JpcHRzOiAnZGFuZ2Vyb3VzbHknLFxuICAgICAgICAvLyBUT0RPOiBvcHRpb25zXG4gICAgICAgIHVybDogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCcsXG4gICAgICB9LFxuICAgIClcblxuICAgIGNvbnN0IGtleXMgPSBLRVlTLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhkb20ud2luZG93KSlcbiAgICAgIC5maWx0ZXIoayA9PiAhay5zdGFydHNXaXRoKCdfJykpXG4gICAgICAuZmlsdGVyKGsgPT4gIShrIGluIGdsb2JhbCkpXG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsLCBrZXksIHtcbiAgICAgICAgZ2V0KCkgeyByZXR1cm4gZG9tLndpbmRvd1trZXldIH0sXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2xvYmFsLndpbmRvdyA9IGdsb2JhbFxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRlYXJkb3duKGdsb2JhbCkge1xuICAgICAgICBrZXlzLmZvckVhY2goa2V5ID0+IGRlbGV0ZSBnbG9iYWxba2V5XSlcbiAgICAgIH0sXG4gICAgfVxuICB9LFxufSlcbiIsImltcG9ydCB7IGltcG9ydE1vZHVsZSB9IGZyb20gJ2xvY2FsLXBrZydcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IEtFWVMgfSBmcm9tICcuL2pzZG9tLWtleXMnXG5cbmV4cG9ydCBkZWZhdWx0IDxFbnZpcm9ubWVudD4oe1xuICBuYW1lOiAnaGFwcHktZG9tJyxcbiAgYXN5bmMgc2V0dXAoZ2xvYmFsKSB7XG4gICAgY29uc3QgeyBXaW5kb3cgfSA9IGF3YWl0IGltcG9ydE1vZHVsZSgnaGFwcHktZG9tJykgYXMgdHlwZW9mIGltcG9ydCgnaGFwcHktZG9tJylcbiAgICBjb25zdCB3aW46IGFueSA9IG5ldyBXaW5kb3coKVxuXG4gICAgY29uc3Qga2V5cyA9IEtFWVMuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbikpXG4gICAgICAuZmlsdGVyKGsgPT4gIWsuc3RhcnRzV2l0aCgnXycpKVxuICAgICAgLmZpbHRlcihrID0+ICEoayBpbiBnbG9iYWwpKVxuXG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGdsb2JhbCwga2V5LCB7XG4gICAgICAgIGdldCgpIHsgcmV0dXJuIHdpbltrZXldIH0sXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2xvYmFsLndpbmRvdyA9IGdsb2JhbFxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRlYXJkb3duKGdsb2JhbCkge1xuICAgICAgICB3aW4uaGFwcHlET00uY2FuY2VsQXN5bmMoKVxuICAgICAgICBrZXlzLmZvckVhY2goa2V5ID0+IGRlbGV0ZSBnbG9iYWxba2V5XSlcbiAgICAgIH0sXG4gICAgfVxuICB9LFxufSlcbiIsImltcG9ydCBub2RlIGZyb20gJy4vbm9kZSdcbmltcG9ydCBqc2RvbSBmcm9tICcuL2pzZG9tJ1xuaW1wb3J0IGhhcHB5IGZyb20gJy4vaGFwcHktZG9tJ1xuXG5leHBvcnQgY29uc3QgZW52aXJvbm1lbnRzID0ge1xuICBub2RlLFxuICBqc2RvbSxcbiAgJ2hhcHB5LWRvbSc6IGhhcHB5LFxufVxuIiwiKGZ1bmN0aW9uKCkge1xuXHQoZnVuY3Rpb24oY2hhaVN1YnNldCkge1xuXHRcdGlmICh0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IGNoYWlTdWJzZXQ7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcblx0XHRcdHJldHVybiBkZWZpbmUoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBjaGFpU3Vic2V0O1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBjaGFpLnVzZShjaGFpU3Vic2V0KTtcblx0XHR9XG5cdH0pKGZ1bmN0aW9uKGNoYWksIHV0aWxzKSB7XG5cdFx0dmFyIEFzc2VydGlvbiA9IGNoYWkuQXNzZXJ0aW9uO1xuXHRcdHZhciBhc3NlcnRpb25Qcm90b3R5cGUgPSBBc3NlcnRpb24ucHJvdG90eXBlO1xuXG5cdFx0QXNzZXJ0aW9uLmFkZE1ldGhvZCgnY29udGFpblN1YnNldCcsIGZ1bmN0aW9uIChleHBlY3RlZCkge1xuXHRcdFx0dmFyIGFjdHVhbCA9IHV0aWxzLmZsYWcodGhpcywgJ29iamVjdCcpO1xuXHRcdFx0dmFyIHNob3dEaWZmID0gY2hhaS5jb25maWcuc2hvd0RpZmY7XG5cblx0XHRcdGFzc2VydGlvblByb3RvdHlwZS5hc3NlcnQuY2FsbCh0aGlzLFxuXHRcdFx0XHRjb21wYXJlKGV4cGVjdGVkLCBhY3R1YWwpLFxuXHRcdFx0XHQnZXhwZWN0ZWQgI3thY3R9IHRvIGNvbnRhaW4gc3Vic2V0ICN7ZXhwfScsXG5cdFx0XHRcdCdleHBlY3RlZCAje2FjdH0gdG8gbm90IGNvbnRhaW4gc3Vic2V0ICN7ZXhwfScsXG5cdFx0XHRcdGV4cGVjdGVkLFxuXHRcdFx0XHRhY3R1YWwsXG5cdFx0XHRcdHNob3dEaWZmXG5cdFx0XHQpO1xuXHRcdH0pO1xuXG5cdFx0Y2hhaS5hc3NlcnQuY29udGFpblN1YnNldCA9IGZ1bmN0aW9uKHZhbCwgZXhwLCBtc2cpIHtcblx0XHRcdG5ldyBjaGFpLkFzc2VydGlvbih2YWwsIG1zZykudG8uYmUuY29udGFpblN1YnNldChleHApO1xuXHRcdH07XG5cblx0XHRmdW5jdGlvbiBjb21wYXJlKGV4cGVjdGVkLCBhY3R1YWwpIHtcblx0XHRcdGlmIChleHBlY3RlZCA9PT0gYWN0dWFsKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHR5cGVvZihhY3R1YWwpICE9PSB0eXBlb2YoZXhwZWN0ZWQpKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGlmICh0eXBlb2YoZXhwZWN0ZWQpICE9PSAnb2JqZWN0JyB8fCBleHBlY3RlZCA9PT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm4gZXhwZWN0ZWQgPT09IGFjdHVhbDtcblx0XHRcdH1cblx0XHRcdGlmICghIWV4cGVjdGVkICYmICFhY3R1YWwpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShleHBlY3RlZCkpIHtcblx0XHRcdFx0aWYgKHR5cGVvZihhY3R1YWwubGVuZ3RoKSAhPT0gJ251bWJlcicpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGFhID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYWN0dWFsKTtcblx0XHRcdFx0cmV0dXJuIGV4cGVjdGVkLmV2ZXJ5KGZ1bmN0aW9uIChleHApIHtcblx0XHRcdFx0XHRyZXR1cm4gYWEuc29tZShmdW5jdGlvbiAoYWN0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gY29tcGFyZShleHAsIGFjdCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZXhwZWN0ZWQgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdGlmIChhY3R1YWwgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGV4cGVjdGVkLmdldFRpbWUoKSA9PT0gYWN0dWFsLmdldFRpbWUoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIE9iamVjdC5rZXlzKGV4cGVjdGVkKS5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRcdHZhciBlbyA9IGV4cGVjdGVkW2tleV07XG5cdFx0XHRcdHZhciBhbyA9IGFjdHVhbFtrZXldO1xuXHRcdFx0XHRpZiAodHlwZW9mKGVvKSA9PT0gJ29iamVjdCcgJiYgZW8gIT09IG51bGwgJiYgYW8gIT09IG51bGwpIHtcblx0XHRcdFx0XHRyZXR1cm4gY29tcGFyZShlbywgYW8pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0eXBlb2YoZW8pID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGVvKGFvKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYW8gPT09IGVvO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9KTtcblxufSkuY2FsbCh0aGlzKTtcblxuIiwiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcydcbmltcG9ydCB0eXBlIE1hZ2ljU3RyaW5nIGZyb20gJ21hZ2ljLXN0cmluZydcbmltcG9ydCB7IHJwYyB9IGZyb20gJy4uLy4uLy4uL3J1bnRpbWUvcnBjJ1xuaW1wb3J0IHsgZ2V0T3JpZ2luYWxQb3MsIHBvc1RvTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc291cmNlLW1hcCdcblxuZXhwb3J0IHR5cGUgSW5saW5lU25hcHNob3QgPSB7XG4gIHNuYXBzaG90OiBzdHJpbmdcbiAgZmlsZTogc3RyaW5nXG4gIGxpbmU6IG51bWJlclxuICBjb2x1bW46IG51bWJlclxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZUlubGluZVNuYXBzaG90cyhcbiAgc25hcHNob3RzOiBBcnJheTxJbmxpbmVTbmFwc2hvdD4sXG4pIHtcbiAgY29uc3QgTWFnaWNTdHJpbmcgPSAoYXdhaXQgaW1wb3J0KCdtYWdpYy1zdHJpbmcnKSkuZGVmYXVsdFxuICBjb25zdCBmaWxlcyA9IG5ldyBTZXQoc25hcHNob3RzLm1hcChpID0+IGkuZmlsZSkpXG4gIGF3YWl0IFByb21pc2UuYWxsKEFycmF5LmZyb20oZmlsZXMpLm1hcChhc3luYyhmaWxlKSA9PiB7XG4gICAgY29uc3QgbWFwID0gYXdhaXQgcnBjKCkuZ2V0U291cmNlTWFwKGZpbGUpXG4gICAgY29uc3Qgc25hcHMgPSBzbmFwc2hvdHMuZmlsdGVyKGkgPT4gaS5maWxlID09PSBmaWxlKVxuICAgIGNvbnN0IGNvZGUgPSBhd2FpdCBmcy5yZWFkRmlsZShmaWxlLCAndXRmOCcpXG4gICAgY29uc3QgcyA9IG5ldyBNYWdpY1N0cmluZyhjb2RlKVxuXG4gICAgZm9yIChjb25zdCBzbmFwIG9mIHNuYXBzKSB7XG4gICAgICBjb25zdCBwb3MgPSBhd2FpdCBnZXRPcmlnaW5hbFBvcyhtYXAsIHNuYXApXG4gICAgICBjb25zdCBpbmRleCA9IHBvc1RvTnVtYmVyKGNvZGUsIHBvcyEpXG4gICAgICByZXBsYWNlSW5saW5lU25hcChjb2RlLCBzLCBpbmRleCwgc25hcC5zbmFwc2hvdCkgLy8gVE9ETzogc3VwcG9ydCBpbmRlbnQ6ICcgJy5yZXBlYXQoNCkpXG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNmb3JtZWQgPSBzLnRvU3RyaW5nKClcbiAgICBpZiAodHJhbnNmb3JtZWQgIT09IGNvZGUpXG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUoZmlsZSwgdHJhbnNmb3JtZWQsICd1dGYtOCcpXG4gIH0pKVxufVxuXG5jb25zdCBzdGFydFJlZ2V4ID0gL3RvTWF0Y2hJbmxpbmVTbmFwc2hvdFxccypcXChcXHMqKFsnXCJgXFwpXSkvbVxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VJbmxpbmVTbmFwKGNvZGU6IHN0cmluZywgczogTWFnaWNTdHJpbmcsIGluZGV4OiBudW1iZXIsIG5ld1NuYXA6IHN0cmluZywgaW5kZW50ID0gJycpIHtcbiAgY29uc3Qgc3RhcnRNYXRjaCA9IHN0YXJ0UmVnZXguZXhlYyhjb2RlLnNsaWNlKGluZGV4KSlcbiAgaWYgKCFzdGFydE1hdGNoKVxuICAgIHJldHVybiBmYWxzZVxuXG4gIG5ld1NuYXAgPSBuZXdTbmFwLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJylcbiAgICAuc3BsaXQoJ1xcbicpXG4gICAgLm1hcChpID0+IChpbmRlbnQgKyBpKS50cmltRW5kKCkpXG4gICAgLmpvaW4oJ1xcbicpXG5cbiAgY29uc3QgaXNPbmVsaW5lID0gIW5ld1NuYXAuaW5jbHVkZXMoJ1xcbicpXG4gIGNvbnN0IHNuYXBTdHJpbmcgPSBpc09uZWxpbmVcbiAgICA/IGAnJHtuZXdTbmFwLnJlcGxhY2UoLycvZywgJ1xcXFxcXCcnKS50cmltKCl9J2BcbiAgICA6IGBcXGAke25ld1NuYXAucmVwbGFjZSgvYC9nLCAnXFxcXGAnKS50cmltRW5kKCl9XFxgYFxuXG4gIGNvbnN0IHF1b3RlID0gc3RhcnRNYXRjaFsxXVxuXG4gIGNvbnN0IHN0YXJ0SW5kZXggPSBpbmRleCArIHN0YXJ0TWF0Y2guaW5kZXghICsgc3RhcnRNYXRjaFswXS5sZW5ndGhcblxuICBpZiAocXVvdGUgPT09ICcpJykge1xuICAgIHMuYXBwZW5kUmlnaHQoc3RhcnRJbmRleCAtIDEsIHNuYXBTdHJpbmcpXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGNvbnN0IHF1b3RlRW5kUkUgPSBuZXcgUmVnRXhwKGAoPzpefFteXFxcXFxcXFxdKSR7cXVvdGV9YClcbiAgY29uc3QgZW5kTWF0Y2ggPSBxdW90ZUVuZFJFLmV4ZWMoY29kZS5zbGljZShzdGFydEluZGV4KSlcbiAgaWYgKCFlbmRNYXRjaClcbiAgICByZXR1cm4gZmFsc2VcbiAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZW5kTWF0Y2guaW5kZXghICsgZW5kTWF0Y2hbMF0ubGVuZ3RoXG4gIHMub3ZlcndyaXRlKHN0YXJ0SW5kZXggLSAxLCBlbmRJbmRleCwgc25hcFN0cmluZylcblxuICByZXR1cm4gdHJ1ZVxufVxuIiwiXG5cblxuLypcbiAqIEB2ZXJzaW9uICAgIDEuNC4wXG4gKiBAZGF0ZSAgICAgICAyMDE1LTEwLTI2XG4gKiBAc3RhYmlsaXR5ICAzIC0gU3RhYmxlXG4gKiBAYXV0aG9yICAgICBMYXVyaSBSb29kZW4gKGh0dHBzOi8vZ2l0aHViLmNvbS9saXRlanMvbmF0dXJhbC1jb21wYXJlLWxpdGUpXG4gKiBAbGljZW5zZSAgICBNSVQgTGljZW5zZVxuICovXG5cblxudmFyIG5hdHVyYWxDb21wYXJlID0gZnVuY3Rpb24oYSwgYikge1xuXHR2YXIgaSwgY29kZUFcblx0LCBjb2RlQiA9IDFcblx0LCBwb3NBID0gMFxuXHQsIHBvc0IgPSAwXG5cdCwgYWxwaGFiZXQgPSBTdHJpbmcuYWxwaGFiZXRcblxuXHRmdW5jdGlvbiBnZXRDb2RlKHN0ciwgcG9zLCBjb2RlKSB7XG5cdFx0aWYgKGNvZGUpIHtcblx0XHRcdGZvciAoaSA9IHBvczsgY29kZSA9IGdldENvZGUoc3RyLCBpKSwgY29kZSA8IDc2ICYmIGNvZGUgPiA2NTspICsraTtcblx0XHRcdHJldHVybiArc3RyLnNsaWNlKHBvcyAtIDEsIGkpXG5cdFx0fVxuXHRcdGNvZGUgPSBhbHBoYWJldCAmJiBhbHBoYWJldC5pbmRleE9mKHN0ci5jaGFyQXQocG9zKSlcblx0XHRyZXR1cm4gY29kZSA+IC0xID8gY29kZSArIDc2IDogKChjb2RlID0gc3RyLmNoYXJDb2RlQXQocG9zKSB8fCAwKSwgY29kZSA8IDQ1IHx8IGNvZGUgPiAxMjcpID8gY29kZVxuXHRcdFx0OiBjb2RlIDwgNDYgPyA2NSAgICAgICAgICAgICAgIC8vIC1cblx0XHRcdDogY29kZSA8IDQ4ID8gY29kZSAtIDFcblx0XHRcdDogY29kZSA8IDU4ID8gY29kZSArIDE4ICAgICAgICAvLyAwLTlcblx0XHRcdDogY29kZSA8IDY1ID8gY29kZSAtIDExXG5cdFx0XHQ6IGNvZGUgPCA5MSA/IGNvZGUgKyAxMSAgICAgICAgLy8gQS1aXG5cdFx0XHQ6IGNvZGUgPCA5NyA/IGNvZGUgLSAzN1xuXHRcdFx0OiBjb2RlIDwgMTIzID8gY29kZSArIDUgICAgICAgIC8vIGEtelxuXHRcdFx0OiBjb2RlIC0gNjNcblx0fVxuXG5cblx0aWYgKChhKz1cIlwiKSAhPSAoYis9XCJcIikpIGZvciAoO2NvZGVCOykge1xuXHRcdGNvZGVBID0gZ2V0Q29kZShhLCBwb3NBKyspXG5cdFx0Y29kZUIgPSBnZXRDb2RlKGIsIHBvc0IrKylcblxuXHRcdGlmIChjb2RlQSA8IDc2ICYmIGNvZGVCIDwgNzYgJiYgY29kZUEgPiA2NiAmJiBjb2RlQiA+IDY2KSB7XG5cdFx0XHRjb2RlQSA9IGdldENvZGUoYSwgcG9zQSwgcG9zQSlcblx0XHRcdGNvZGVCID0gZ2V0Q29kZShiLCBwb3NCLCBwb3NBID0gaSlcblx0XHRcdHBvc0IgPSBpXG5cdFx0fVxuXG5cdFx0aWYgKGNvZGVBICE9IGNvZGVCKSByZXR1cm4gKGNvZGVBIDwgY29kZUIpID8gLTEgOiAxXG5cdH1cblx0cmV0dXJuIDBcbn1cblxudHJ5IHtcblx0bW9kdWxlLmV4cG9ydHMgPSBuYXR1cmFsQ29tcGFyZTtcbn0gY2F0Y2ggKGUpIHtcblx0U3RyaW5nLm5hdHVyYWxDb21wYXJlID0gbmF0dXJhbENvbXBhcmU7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBmcywgeyBwcm9taXNlcyBhcyBmc3AgfSBmcm9tICdmcydcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGhlJ1xuaW1wb3J0IG5hdHVyYWxDb21wYXJlIGZyb20gJ25hdHVyYWwtY29tcGFyZSdcbmltcG9ydCB0eXBlIHsgT3B0aW9uc1JlY2VpdmVkIGFzIFByZXR0eUZvcm1hdE9wdGlvbnMgfSBmcm9tICdwcmV0dHktZm9ybWF0J1xuaW1wb3J0IHtcbiAgZm9ybWF0IGFzIHByZXR0eUZvcm1hdCxcbn0gZnJvbSAncHJldHR5LWZvcm1hdCdcbmltcG9ydCB0eXBlIHsgU25hcHNob3REYXRhLCBTbmFwc2hvdFVwZGF0ZVN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXRTZXJpYWxpemVycyB9IGZyb20gJy4vcGx1Z2lucydcblxuLy8gVE9ETzogcmV3cml0ZSBhbmQgY2xlYW4gdXBcblxuZXhwb3J0IGNvbnN0IFNOQVBTSE9UX1ZFUlNJT04gPSAnMSdcblxuY29uc3Qgd3JpdGVTbmFwc2hvdFZlcnNpb24gPSAoKSA9PiBgLy8gVml0ZXN0IFNuYXBzaG90IHYke1NOQVBTSE9UX1ZFUlNJT059YFxuXG5leHBvcnQgY29uc3QgdGVzdE5hbWVUb0tleSA9ICh0ZXN0TmFtZTogc3RyaW5nLCBjb3VudDogbnVtYmVyKTogc3RyaW5nID0+XG4gIGAke3Rlc3ROYW1lfSAke2NvdW50fWBcblxuZXhwb3J0IGNvbnN0IGtleVRvVGVzdE5hbWUgPSAoa2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAoIS8gXFxkKyQvLnRlc3Qoa2V5KSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NuYXBzaG90IGtleXMgbXVzdCBlbmQgd2l0aCBhIG51bWJlci4nKVxuXG4gIHJldHVybiBrZXkucmVwbGFjZSgvIFxcZCskLywgJycpXG59XG5cbmV4cG9ydCBjb25zdCBnZXRTbmFwc2hvdERhdGEgPSAoXG4gIHNuYXBzaG90UGF0aDogc3RyaW5nLFxuICB1cGRhdGU6IFNuYXBzaG90VXBkYXRlU3RhdGUsXG4pOiB7XG4gIGRhdGE6IFNuYXBzaG90RGF0YVxuICBkaXJ0eTogYm9vbGVhblxufSA9PiB7XG4gIGNvbnN0IGRhdGEgPSBPYmplY3QuY3JlYXRlKG51bGwpXG4gIGxldCBzbmFwc2hvdENvbnRlbnRzID0gJydcbiAgbGV0IGRpcnR5ID0gZmFsc2VcblxuICBpZiAoZnMuZXhpc3RzU3luYyhzbmFwc2hvdFBhdGgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIHNuYXBzaG90Q29udGVudHMgPSBmcy5yZWFkRmlsZVN5bmMoc25hcHNob3RQYXRoLCAndXRmOCcpXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgICAgIGNvbnN0IHBvcHVsYXRlID0gbmV3IEZ1bmN0aW9uKCdleHBvcnRzJywgc25hcHNob3RDb250ZW50cylcbiAgICAgIHBvcHVsYXRlKGRhdGEpXG4gICAgfVxuICAgIGNhdGNoIHt9XG4gIH1cblxuICAvLyBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVTbmFwc2hvdFZlcnNpb24oc25hcHNob3RDb250ZW50cylcbiAgY29uc3QgaXNJbnZhbGlkID0gc25hcHNob3RDb250ZW50cyAvLyAmJiB2YWxpZGF0aW9uUmVzdWx0XG5cbiAgLy8gaWYgKHVwZGF0ZSA9PT0gJ25vbmUnICYmIGlzSW52YWxpZClcbiAgLy8gICB0aHJvdyB2YWxpZGF0aW9uUmVzdWx0XG5cbiAgaWYgKCh1cGRhdGUgPT09ICdhbGwnIHx8IHVwZGF0ZSA9PT0gJ25ldycpICYmIGlzSW52YWxpZClcbiAgICBkaXJ0eSA9IHRydWVcblxuICByZXR1cm4geyBkYXRhLCBkaXJ0eSB9XG59XG5cbi8vIEFkZCBleHRyYSBsaW5lIGJyZWFrcyBhdCBiZWdpbm5pbmcgYW5kIGVuZCBvZiBtdWx0aWxpbmUgc25hcHNob3Rcbi8vIHRvIG1ha2UgdGhlIGNvbnRlbnQgZWFzaWVyIHRvIHJlYWQuXG5leHBvcnQgY29uc3QgYWRkRXh0cmFMaW5lQnJlYWtzID0gKHN0cmluZzogc3RyaW5nKTogc3RyaW5nID0+XG4gIHN0cmluZy5pbmNsdWRlcygnXFxuJykgPyBgXFxuJHtzdHJpbmd9XFxuYCA6IHN0cmluZ1xuXG4vLyBSZW1vdmUgZXh0cmEgbGluZSBicmVha3MgYXQgYmVnaW5uaW5nIGFuZCBlbmQgb2YgbXVsdGlsaW5lIHNuYXBzaG90LlxuLy8gSW5zdGVhZCBvZiB0cmltLCB3aGljaCBjYW4gcmVtb3ZlIGFkZGl0aW9uYWwgbmV3bGluZXMgb3Igc3BhY2VzXG4vLyBhdCBiZWdpbm5pbmcgb3IgZW5kIG9mIHRoZSBjb250ZW50IGZyb20gYSBjdXN0b20gc2VyaWFsaXplci5cbmV4cG9ydCBjb25zdCByZW1vdmVFeHRyYUxpbmVCcmVha3MgPSAoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgc3RyaW5nLmxlbmd0aCA+IDIgJiYgc3RyaW5nLnN0YXJ0c1dpdGgoJ1xcbicpICYmIHN0cmluZy5lbmRzV2l0aCgnXFxuJylcbiAgICA/IHN0cmluZy5zbGljZSgxLCAtMSlcbiAgICA6IHN0cmluZ1xuXG4vLyBleHBvcnQgY29uc3QgcmVtb3ZlTGluZXNCZWZvcmVFeHRlcm5hbE1hdGNoZXJUcmFwID0gKHN0YWNrOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuLy8gICBjb25zdCBsaW5lcyA9IHN0YWNrLnNwbGl0KCdcXG4nKVxuXG4vLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpICs9IDEpIHtcbi8vICAgICAvLyBJdCdzIGEgZnVuY3Rpb24gbmFtZSBzcGVjaWZpZWQgaW4gYHBhY2thZ2VzL2V4cGVjdC9zcmMvaW5kZXgudHNgXG4vLyAgICAgLy8gZm9yIGV4dGVybmFsIGN1c3RvbSBtYXRjaGVycy5cbi8vICAgICBpZiAobGluZXNbaV0uaW5jbHVkZXMoJ19fRVhURVJOQUxfTUFUQ0hFUl9UUkFQX18nKSlcbi8vICAgICAgIHJldHVybiBsaW5lcy5zbGljZShpICsgMSkuam9pbignXFxuJylcbi8vICAgfVxuXG4vLyAgIHJldHVybiBzdGFja1xuLy8gfVxuXG5jb25zdCBlc2NhcGVSZWdleCA9IHRydWVcbmNvbnN0IHByaW50RnVuY3Rpb25OYW1lID0gZmFsc2VcblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSh2YWw6IHVua25vd24sXG4gIGluZGVudCA9IDIsXG4gIGZvcm1hdE92ZXJyaWRlczogUHJldHR5Rm9ybWF0T3B0aW9ucyA9IHt9KTogc3RyaW5nIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZU5ld2xpbmVzKFxuICAgIHByZXR0eUZvcm1hdCh2YWwsIHtcbiAgICAgIGVzY2FwZVJlZ2V4LFxuICAgICAgaW5kZW50LFxuICAgICAgcGx1Z2luczogZ2V0U2VyaWFsaXplcnMoKSxcbiAgICAgIHByaW50RnVuY3Rpb25OYW1lLFxuICAgICAgLi4uZm9ybWF0T3ZlcnJpZGVzLFxuICAgIH0pLFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW5pZnkodmFsOiB1bmtub3duKTogc3RyaW5nIHtcbiAgcmV0dXJuIHByZXR0eUZvcm1hdCh2YWwsIHtcbiAgICBlc2NhcGVSZWdleCxcbiAgICBtaW46IHRydWUsXG4gICAgcGx1Z2luczogZ2V0U2VyaWFsaXplcnMoKSxcbiAgICBwcmludEZ1bmN0aW9uTmFtZSxcbiAgfSlcbn1cblxuLy8gUmVtb3ZlIGRvdWJsZSBxdW90ZSBtYXJrcyBhbmQgdW5lc2NhcGUgZG91YmxlIHF1b3RlcyBhbmQgYmFja3NsYXNoZXMuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVTdHJpbmcoc3RyaW5naWZpZWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHJpbmdpZmllZC5zbGljZSgxLCAtMSkucmVwbGFjZSgvXFxcXChcInxcXFxcKS9nLCAnJDEnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlQmFja3RpY2tTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL2B8XFxcXHxcXCR7L2csICdcXFxcJCYnKVxufVxuXG5mdW5jdGlvbiBwcmludEJhY2t0aWNrU3RyaW5nKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBcXGAke2VzY2FwZUJhY2t0aWNrU3RyaW5nKHN0cil9XFxgYFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlRGlyZWN0b3J5RXhpc3RzKGZpbGVQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICBmcy5ta2RpclN5bmMocGF0aC5qb2luKHBhdGguZGlybmFtZShmaWxlUGF0aCkpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICB9XG4gIGNhdGNoIHsgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVOZXdsaW5lcyhzdHJpbmc6IHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcclxcbnxcXHIvZywgJ1xcbicpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYXZlU25hcHNob3RGaWxlKFxuICBzbmFwc2hvdERhdGE6IFNuYXBzaG90RGF0YSxcbiAgc25hcHNob3RQYXRoOiBzdHJpbmcsXG4pIHtcbiAgY29uc3Qgc25hcHNob3RzID0gT2JqZWN0LmtleXMoc25hcHNob3REYXRhKVxuICAgIC5zb3J0KG5hdHVyYWxDb21wYXJlKVxuICAgIC5tYXAoXG4gICAgICBrZXkgPT4gYGV4cG9ydHNbJHtwcmludEJhY2t0aWNrU3RyaW5nKGtleSl9XSA9ICR7cHJpbnRCYWNrdGlja1N0cmluZyhub3JtYWxpemVOZXdsaW5lcyhzbmFwc2hvdERhdGFba2V5XSkpfTtgLFxuICAgIClcblxuICBlbnN1cmVEaXJlY3RvcnlFeGlzdHMoc25hcHNob3RQYXRoKVxuICBhd2FpdCBmc3Aud3JpdGVGaWxlKFxuICAgIHNuYXBzaG90UGF0aCxcbiAgICBgJHt3cml0ZVNuYXBzaG90VmVyc2lvbigpfVxcblxcbiR7c25hcHNob3RzLmpvaW4oJ1xcblxcbicpfVxcbmAsXG4gICAgJ3V0Zi04JyxcbiAgKVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgZnMgZnJvbSAnZnMnXG5pbXBvcnQgdHlwZSB7IENvbmZpZyB9IGZyb20gJ0BqZXN0L3R5cGVzJ1xuLy8gaW1wb3J0IHsgZ2V0U3RhY2tUcmFjZUxpbmVzLCBnZXRUb3BGcmFtZSB9IGZyb20gJ2plc3QtbWVzc2FnZS11dGlsJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zUmVjZWl2ZWQgYXMgUHJldHR5Rm9ybWF0T3B0aW9ucyB9IGZyb20gJ3ByZXR0eS1mb3JtYXQnXG5pbXBvcnQgdHlwZSB7IFNuYXBzaG90RGF0YSwgU25hcHNob3RNYXRjaE9wdGlvbnMsIFNuYXBzaG90U3RhdGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBzbGFzaCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgcGFyc2VTdGFja3RyYWNlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc291cmNlLW1hcCdcbmltcG9ydCB0eXBlIHsgSW5saW5lU25hcHNob3QgfSBmcm9tICcuL2lubGluZVNuYXBzaG90J1xuaW1wb3J0IHsgc2F2ZUlubGluZVNuYXBzaG90cyB9IGZyb20gJy4vaW5saW5lU25hcHNob3QnXG5cbmltcG9ydCB7XG4gIGFkZEV4dHJhTGluZUJyZWFrcyxcbiAgZ2V0U25hcHNob3REYXRhLFxuICBrZXlUb1Rlc3ROYW1lLFxuICByZW1vdmVFeHRyYUxpbmVCcmVha3MsXG4gIHNhdmVTbmFwc2hvdEZpbGUsXG4gIHNlcmlhbGl6ZSxcbiAgdGVzdE5hbWVUb0tleSxcbn0gZnJvbSAnLi91dGlscydcblxudHlwZSBTbmFwc2hvdFJldHVybk9wdGlvbnMgPSB7XG4gIGFjdHVhbDogc3RyaW5nXG4gIGNvdW50OiBudW1iZXJcbiAgZXhwZWN0ZWQ/OiBzdHJpbmdcbiAga2V5OiBzdHJpbmdcbiAgcGFzczogYm9vbGVhblxufVxuXG50eXBlIFNhdmVTdGF0dXMgPSB7XG4gIGRlbGV0ZWQ6IGJvb2xlYW5cbiAgc2F2ZWQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU25hcHNob3RTdGF0ZSB7XG4gIHByaXZhdGUgX2NvdW50ZXJzOiBNYXA8c3RyaW5nLCBudW1iZXI+XG4gIHByaXZhdGUgX2RpcnR5OiBib29sZWFuXG4gIHByaXZhdGUgX3VwZGF0ZVNuYXBzaG90OiBDb25maWcuU25hcHNob3RVcGRhdGVTdGF0ZVxuICBwcml2YXRlIF9zbmFwc2hvdERhdGE6IFNuYXBzaG90RGF0YVxuICBwcml2YXRlIF9pbml0aWFsRGF0YTogU25hcHNob3REYXRhXG4gIHByaXZhdGUgX3NuYXBzaG90UGF0aDogc3RyaW5nXG4gIHByaXZhdGUgX2lubGluZVNuYXBzaG90czogQXJyYXk8SW5saW5lU25hcHNob3Q+XG4gIHByaXZhdGUgX3VuY2hlY2tlZEtleXM6IFNldDxzdHJpbmc+XG4gIHByaXZhdGUgX3NuYXBzaG90Rm9ybWF0OiBQcmV0dHlGb3JtYXRPcHRpb25zXG5cbiAgYWRkZWQ6IG51bWJlclxuICBleHBhbmQ6IGJvb2xlYW5cbiAgbWF0Y2hlZDogbnVtYmVyXG4gIHVubWF0Y2hlZDogbnVtYmVyXG4gIHVwZGF0ZWQ6IG51bWJlclxuXG4gIGNvbnN0cnVjdG9yKHNuYXBzaG90UGF0aDogc3RyaW5nLCBvcHRpb25zOiBTbmFwc2hvdFN0YXRlT3B0aW9ucykge1xuICAgIHRoaXMuX3NuYXBzaG90UGF0aCA9IHNuYXBzaG90UGF0aFxuICAgIGNvbnN0IHsgZGF0YSwgZGlydHkgfSA9IGdldFNuYXBzaG90RGF0YShcbiAgICAgIHRoaXMuX3NuYXBzaG90UGF0aCxcbiAgICAgIG9wdGlvbnMudXBkYXRlU25hcHNob3QsXG4gICAgKVxuICAgIHRoaXMuX2luaXRpYWxEYXRhID0gZGF0YVxuICAgIHRoaXMuX3NuYXBzaG90RGF0YSA9IGRhdGFcbiAgICB0aGlzLl9kaXJ0eSA9IGRpcnR5XG4gICAgdGhpcy5faW5saW5lU25hcHNob3RzID0gW11cbiAgICB0aGlzLl91bmNoZWNrZWRLZXlzID0gbmV3IFNldChPYmplY3Qua2V5cyh0aGlzLl9zbmFwc2hvdERhdGEpKVxuICAgIHRoaXMuX2NvdW50ZXJzID0gbmV3IE1hcCgpXG4gICAgdGhpcy5leHBhbmQgPSBvcHRpb25zLmV4cGFuZCB8fCBmYWxzZVxuICAgIHRoaXMuYWRkZWQgPSAwXG4gICAgdGhpcy5tYXRjaGVkID0gMFxuICAgIHRoaXMudW5tYXRjaGVkID0gMFxuICAgIHRoaXMuX3VwZGF0ZVNuYXBzaG90ID0gb3B0aW9ucy51cGRhdGVTbmFwc2hvdFxuICAgIHRoaXMudXBkYXRlZCA9IDBcbiAgICB0aGlzLl9zbmFwc2hvdEZvcm1hdCA9IHtcbiAgICAgIHByaW50QmFzaWNQcm90b3R5cGU6IGZhbHNlLFxuICAgICAgLi4ub3B0aW9ucy5zbmFwc2hvdEZvcm1hdCxcbiAgICB9XG4gIH1cblxuICBtYXJrU25hcHNob3RzQXNDaGVja2VkRm9yVGVzdCh0ZXN0TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fdW5jaGVja2VkS2V5cy5mb3JFYWNoKCh1bmNoZWNrZWRLZXkpID0+IHtcbiAgICAgIGlmIChrZXlUb1Rlc3ROYW1lKHVuY2hlY2tlZEtleSkgPT09IHRlc3ROYW1lKVxuICAgICAgICB0aGlzLl91bmNoZWNrZWRLZXlzLmRlbGV0ZSh1bmNoZWNrZWRLZXkpXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgX2FkZFNuYXBzaG90KFxuICAgIGtleTogc3RyaW5nLFxuICAgIHJlY2VpdmVkU2VyaWFsaXplZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtpc0lubGluZTogYm9vbGVhbjsgZXJyb3I/OiBFcnJvcn0sXG4gICk6IHZvaWQge1xuICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZVxuICAgIGlmIChvcHRpb25zLmlzSW5saW5lKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG9wdGlvbnMuZXJyb3IgfHwgbmV3IEVycm9yKCdVbmtub3duIGVycm9yJylcbiAgICAgIGNvbnN0IHN0YWNrcyA9IHBhcnNlU3RhY2t0cmFjZShlcnJvcilcbiAgICAgIHN0YWNrcy5mb3JFYWNoKGkgPT4gaS5maWxlID0gc2xhc2goaS5maWxlKSlcbiAgICAgIGNvbnN0IHN0YWNrID0gc3RhY2tzLmZpbmQoaSA9PiBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmN0eC5maWxlcy5pbmNsdWRlcyhpLmZpbGUpKVxuICAgICAgaWYgKCFzdGFjaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1ZpdGVzdDogQ291bGRuXFwndCBpbmZlciBzdGFjayBmcmFtZSBmb3IgaW5saW5lIHNuYXBzaG90LicsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIHRoaXMuX2lubGluZVNuYXBzaG90cy5wdXNoKHtcbiAgICAgICAgc25hcHNob3Q6IHJlY2VpdmVkU2VyaWFsaXplZCxcbiAgICAgICAgLi4uc3RhY2ssXG4gICAgICB9KVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX3NuYXBzaG90RGF0YVtrZXldID0gcmVjZWl2ZWRTZXJpYWxpemVkXG4gICAgfVxuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5fc25hcHNob3REYXRhID0gdGhpcy5faW5pdGlhbERhdGFcbiAgICAvLyB0aGlzLl9pbmxpbmVTbmFwc2hvdHMgPSBbXVxuICAgIHRoaXMuX2NvdW50ZXJzID0gbmV3IE1hcCgpXG4gICAgdGhpcy5hZGRlZCA9IDBcbiAgICB0aGlzLm1hdGNoZWQgPSAwXG4gICAgdGhpcy51bm1hdGNoZWQgPSAwXG4gICAgdGhpcy51cGRhdGVkID0gMFxuICB9XG5cbiAgYXN5bmMgc2F2ZSgpOiBQcm9taXNlPFNhdmVTdGF0dXM+IHtcbiAgICBjb25zdCBoYXNFeHRlcm5hbFNuYXBzaG90cyA9IE9iamVjdC5rZXlzKHRoaXMuX3NuYXBzaG90RGF0YSkubGVuZ3RoXG4gICAgY29uc3QgaGFzSW5saW5lU25hcHNob3RzID0gdGhpcy5faW5saW5lU25hcHNob3RzLmxlbmd0aFxuICAgIGNvbnN0IGlzRW1wdHkgPSAhaGFzRXh0ZXJuYWxTbmFwc2hvdHMgJiYgIWhhc0lubGluZVNuYXBzaG90c1xuXG4gICAgY29uc3Qgc3RhdHVzOiBTYXZlU3RhdHVzID0ge1xuICAgICAgZGVsZXRlZDogZmFsc2UsXG4gICAgICBzYXZlZDogZmFsc2UsXG4gICAgfVxuXG4gICAgaWYgKCh0aGlzLl9kaXJ0eSB8fCB0aGlzLl91bmNoZWNrZWRLZXlzLnNpemUpICYmICFpc0VtcHR5KSB7XG4gICAgICBpZiAoaGFzRXh0ZXJuYWxTbmFwc2hvdHMpXG4gICAgICAgIGF3YWl0IHNhdmVTbmFwc2hvdEZpbGUodGhpcy5fc25hcHNob3REYXRhLCB0aGlzLl9zbmFwc2hvdFBhdGgpXG4gICAgICBpZiAoaGFzSW5saW5lU25hcHNob3RzKVxuICAgICAgICBhd2FpdCBzYXZlSW5saW5lU25hcHNob3RzKHRoaXMuX2lubGluZVNuYXBzaG90cylcblxuICAgICAgc3RhdHVzLnNhdmVkID0gdHJ1ZVxuICAgIH1cbiAgICBlbHNlIGlmICghaGFzRXh0ZXJuYWxTbmFwc2hvdHMgJiYgZnMuZXhpc3RzU3luYyh0aGlzLl9zbmFwc2hvdFBhdGgpKSB7XG4gICAgICBpZiAodGhpcy5fdXBkYXRlU25hcHNob3QgPT09ICdhbGwnKVxuICAgICAgICBmcy51bmxpbmtTeW5jKHRoaXMuX3NuYXBzaG90UGF0aClcblxuICAgICAgc3RhdHVzLmRlbGV0ZWQgPSB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXR1c1xuICB9XG5cbiAgZ2V0VW5jaGVja2VkQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdW5jaGVja2VkS2V5cy5zaXplIHx8IDBcbiAgfVxuXG4gIGdldFVuY2hlY2tlZEtleXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fdW5jaGVja2VkS2V5cylcbiAgfVxuXG4gIHJlbW92ZVVuY2hlY2tlZEtleXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3VwZGF0ZVNuYXBzaG90ID09PSAnYWxsJyAmJiB0aGlzLl91bmNoZWNrZWRLZXlzLnNpemUpIHtcbiAgICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZVxuICAgICAgdGhpcy5fdW5jaGVja2VkS2V5cy5mb3JFYWNoKGtleSA9PiBkZWxldGUgdGhpcy5fc25hcHNob3REYXRhW2tleV0pXG4gICAgICB0aGlzLl91bmNoZWNrZWRLZXlzLmNsZWFyKClcbiAgICB9XG4gIH1cblxuICBtYXRjaCh7XG4gICAgdGVzdE5hbWUsXG4gICAgcmVjZWl2ZWQsXG4gICAga2V5LFxuICAgIGlubGluZVNuYXBzaG90LFxuICAgIGlzSW5saW5lLFxuICAgIGVycm9yLFxuICB9OiBTbmFwc2hvdE1hdGNoT3B0aW9ucyk6IFNuYXBzaG90UmV0dXJuT3B0aW9ucyB7XG4gICAgdGhpcy5fY291bnRlcnMuc2V0KHRlc3ROYW1lLCAodGhpcy5fY291bnRlcnMuZ2V0KHRlc3ROYW1lKSB8fCAwKSArIDEpXG4gICAgY29uc3QgY291bnQgPSBOdW1iZXIodGhpcy5fY291bnRlcnMuZ2V0KHRlc3ROYW1lKSlcblxuICAgIGlmICgha2V5KVxuICAgICAga2V5ID0gdGVzdE5hbWVUb0tleSh0ZXN0TmFtZSwgY291bnQpXG5cbiAgICAvLyBEbyBub3QgbWFyayB0aGUgc25hcHNob3QgYXMgXCJjaGVja2VkXCIgaWYgdGhlIHNuYXBzaG90IGlzIGlubGluZSBhbmRcbiAgICAvLyB0aGVyZSdzIGFuIGV4dGVybmFsIHNuYXBzaG90LiBUaGlzIHdheSB0aGUgZXh0ZXJuYWwgc25hcHNob3QgY2FuIGJlXG4gICAgLy8gcmVtb3ZlZCB3aXRoIGAtLXVwZGF0ZVNuYXBzaG90YC5cbiAgICBpZiAoIShpc0lubGluZSAmJiB0aGlzLl9zbmFwc2hvdERhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSlcbiAgICAgIHRoaXMuX3VuY2hlY2tlZEtleXMuZGVsZXRlKGtleSlcblxuICAgIGNvbnN0IHJlY2VpdmVkU2VyaWFsaXplZCA9IGFkZEV4dHJhTGluZUJyZWFrcyhzZXJpYWxpemUocmVjZWl2ZWQsIHVuZGVmaW5lZCwgdGhpcy5fc25hcHNob3RGb3JtYXQpKVxuICAgIGNvbnN0IGV4cGVjdGVkID0gaXNJbmxpbmUgPyBpbmxpbmVTbmFwc2hvdCA6IHRoaXMuX3NuYXBzaG90RGF0YVtrZXldXG4gICAgY29uc3QgcGFzcyA9IGV4cGVjdGVkPy50cmltKCkgPT09IHJlY2VpdmVkU2VyaWFsaXplZD8udHJpbSgpXG4gICAgY29uc3QgaGFzU25hcHNob3QgPSBleHBlY3RlZCAhPT0gdW5kZWZpbmVkXG4gICAgY29uc3Qgc25hcHNob3RJc1BlcnNpc3RlZCA9IGlzSW5saW5lIHx8IGZzLmV4aXN0c1N5bmModGhpcy5fc25hcHNob3RQYXRoKVxuXG4gICAgaWYgKHBhc3MgJiYgIWlzSW5saW5lKSB7XG4gICAgICAvLyBFeGVjdXRpbmcgYSBzbmFwc2hvdCBmaWxlIGFzIEphdmFTY3JpcHQgYW5kIHdyaXRpbmcgdGhlIHN0cmluZ3MgYmFja1xuICAgICAgLy8gd2hlbiBvdGhlciBzbmFwc2hvdHMgaGF2ZSBjaGFuZ2VkIGxvc2VzIHRoZSBwcm9wZXIgZXNjYXBpbmcgZm9yIHNvbWVcbiAgICAgIC8vIGNoYXJhY3RlcnMuIFNpbmNlIHdlIGNoZWNrIGV2ZXJ5IHNuYXBzaG90IGluIGV2ZXJ5IHRlc3QsIHVzZSB0aGUgbmV3bHlcbiAgICAgIC8vIGdlbmVyYXRlZCBmb3JtYXR0ZWQgc3RyaW5nLlxuICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIGEgc25hcHNob3QgaXMgYWRkZWQgYW5kIHRoZSBkaXJ0eVxuICAgICAgLy8gZmxhZyBpcyBzZXQuXG4gICAgICB0aGlzLl9zbmFwc2hvdERhdGFba2V5XSA9IHJlY2VpdmVkU2VyaWFsaXplZFxuICAgIH1cblxuICAgIC8vIFRoZXNlIGFyZSB0aGUgY29uZGl0aW9ucyBvbiB3aGVuIHRvIHdyaXRlIHNuYXBzaG90czpcbiAgICAvLyAgKiBUaGVyZSdzIG5vIHNuYXBzaG90IGZpbGUgaW4gYSBub24tQ0kgZW52aXJvbm1lbnQuXG4gICAgLy8gICogVGhlcmUgaXMgYSBzbmFwc2hvdCBmaWxlIGFuZCB3ZSBkZWNpZGVkIHRvIHVwZGF0ZSB0aGUgc25hcHNob3QuXG4gICAgLy8gICogVGhlcmUgaXMgYSBzbmFwc2hvdCBmaWxlLCBidXQgaXQgZG9lc24ndCBoYXZlIHRoaXMgc25hcGhzb3QuXG4gICAgLy8gVGhlc2UgYXJlIHRoZSBjb25kaXRpb25zIG9uIHdoZW4gbm90IHRvIHdyaXRlIHNuYXBzaG90czpcbiAgICAvLyAgKiBUaGUgdXBkYXRlIGZsYWcgaXMgc2V0IHRvICdub25lJy5cbiAgICAvLyAgKiBUaGVyZSdzIG5vIHNuYXBzaG90IGZpbGUgb3IgYSBmaWxlIHdpdGhvdXQgdGhpcyBzbmFwc2hvdCBvbiBhIENJIGVudmlyb25tZW50LlxuICAgIGlmIChcbiAgICAgIChoYXNTbmFwc2hvdCAmJiB0aGlzLl91cGRhdGVTbmFwc2hvdCA9PT0gJ2FsbCcpXG4gICAgICAgfHwgKCghaGFzU25hcHNob3QgfHwgIXNuYXBzaG90SXNQZXJzaXN0ZWQpXG4gICAgICAgICAmJiAodGhpcy5fdXBkYXRlU25hcHNob3QgPT09ICduZXcnIHx8IHRoaXMuX3VwZGF0ZVNuYXBzaG90ID09PSAnYWxsJykpXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5fdXBkYXRlU25hcHNob3QgPT09ICdhbGwnKSB7XG4gICAgICAgIGlmICghcGFzcykge1xuICAgICAgICAgIGlmIChoYXNTbmFwc2hvdClcbiAgICAgICAgICAgIHRoaXMudXBkYXRlZCsrXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5hZGRlZCsrXG5cbiAgICAgICAgICB0aGlzLl9hZGRTbmFwc2hvdChrZXksIHJlY2VpdmVkU2VyaWFsaXplZCwgeyBlcnJvciwgaXNJbmxpbmUgfSlcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1hdGNoZWQrK1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5fYWRkU25hcHNob3Qoa2V5LCByZWNlaXZlZFNlcmlhbGl6ZWQsIHsgZXJyb3IsIGlzSW5saW5lIH0pXG4gICAgICAgIHRoaXMuYWRkZWQrK1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY3R1YWw6ICcnLFxuICAgICAgICBjb3VudCxcbiAgICAgICAgZXhwZWN0ZWQ6ICcnLFxuICAgICAgICBrZXksXG4gICAgICAgIHBhc3M6IHRydWUsXG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYgKCFwYXNzKSB7XG4gICAgICAgIHRoaXMudW5tYXRjaGVkKytcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhY3R1YWw6IHJlbW92ZUV4dHJhTGluZUJyZWFrcyhyZWNlaXZlZFNlcmlhbGl6ZWQpLFxuICAgICAgICAgIGNvdW50LFxuICAgICAgICAgIGV4cGVjdGVkOlxuICAgICAgICAgICAgIGV4cGVjdGVkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgID8gcmVtb3ZlRXh0cmFMaW5lQnJlYWtzKGV4cGVjdGVkKVxuICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHBhc3M6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5tYXRjaGVkKytcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhY3R1YWw6ICcnLFxuICAgICAgICAgIGNvdW50LFxuICAgICAgICAgIGV4cGVjdGVkOiAnJyxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcGFzczogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZhaWwodGVzdE5hbWU6IHN0cmluZywgX3JlY2VpdmVkOiB1bmtub3duLCBrZXk/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRoaXMuX2NvdW50ZXJzLnNldCh0ZXN0TmFtZSwgKHRoaXMuX2NvdW50ZXJzLmdldCh0ZXN0TmFtZSkgfHwgMCkgKyAxKVxuICAgIGNvbnN0IGNvdW50ID0gTnVtYmVyKHRoaXMuX2NvdW50ZXJzLmdldCh0ZXN0TmFtZSkpXG5cbiAgICBpZiAoIWtleSlcbiAgICAgIGtleSA9IHRlc3ROYW1lVG9LZXkodGVzdE5hbWUsIGNvdW50KVxuXG4gICAgdGhpcy5fdW5jaGVja2VkS2V5cy5kZWxldGUoa2V5KVxuICAgIHRoaXMudW5tYXRjaGVkKytcbiAgICByZXR1cm4ga2V5XG4gIH1cbn1cbiIsImltcG9ydCBwYXRoIGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHsgZXhwZWN0IH0gZnJvbSAnY2hhaSdcbmltcG9ydCB0eXBlIHsgU25hcHNob3RSZXN1bHQsIFRlc3QgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7IHJwYyB9IGZyb20gJy4uLy4uL3J1bnRpbWUvcnBjJ1xuaW1wb3J0IHsgZ2V0TmFtZXMgfSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCBTbmFwc2hvdFN0YXRlIGZyb20gJy4vcG9ydC9zdGF0ZSdcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0IHtcbiAgZmlsZTogc3RyaW5nXG4gIHRpdGxlPzogc3RyaW5nXG4gIGZ1bGxUaXRsZT86IHN0cmluZ1xufVxuXG5jb25zdCByZXNvbHZlU25hcHNob3RQYXRoID0gKHRlc3RQYXRoOiBzdHJpbmcpID0+XG4gIHBhdGguam9pbihcbiAgICBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKHRlc3RQYXRoKSwgJ19fc25hcHNob3RzX18nKSxcbiAgICBgJHtwYXRoLmJhc2VuYW1lKHRlc3RQYXRoKX0uc25hcGAsXG4gIClcblxuZXhwb3J0IGNsYXNzIFNuYXBzaG90Q2xpZW50IHtcbiAgdGVzdDogVGVzdCB8IHVuZGVmaW5lZFxuICB0ZXN0RmlsZSA9ICcnXG4gIHNuYXBzaG90U3RhdGU6IFNuYXBzaG90U3RhdGUgfCB1bmRlZmluZWRcblxuICBzZXRUZXN0KHRlc3Q6IFRlc3QpIHtcbiAgICB0aGlzLnRlc3QgPSB0ZXN0XG5cbiAgICBpZiAodGhpcy50ZXN0RmlsZSAhPT0gdGhpcy50ZXN0LmZpbGUhLmZpbGVwYXRoKSB7XG4gICAgICBpZiAodGhpcy5zbmFwc2hvdFN0YXRlKVxuICAgICAgICB0aGlzLnNhdmVTbmFwKClcblxuICAgICAgdGhpcy50ZXN0RmlsZSA9IHRoaXMudGVzdCEuZmlsZSEuZmlsZXBhdGhcbiAgICAgIHRoaXMuc25hcHNob3RTdGF0ZSA9IG5ldyBTbmFwc2hvdFN0YXRlKFxuICAgICAgICByZXNvbHZlU25hcHNob3RQYXRoKHRoaXMudGVzdEZpbGUpLFxuICAgICAgICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fIS5jb25maWcuc25hcHNob3RPcHRpb25zLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGNsZWFyVGVzdCgpIHtcbiAgICB0aGlzLnRlc3QgPSB1bmRlZmluZWRcbiAgfVxuXG4gIGFzc2VydChyZWNlaXZlZDogdW5rbm93biwgbWVzc2FnZT86IHN0cmluZywgaXNJbmxpbmUgPSBmYWxzZSwgaW5saW5lU25hcHNob3Q/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGVzdClcbiAgICAgIHRocm93IG5ldyBFcnJvcignU25hcHNob3QgY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBvZiB0ZXN0JylcblxuICAgIGNvbnN0IHRlc3ROYW1lID0gW1xuICAgICAgLi4uZ2V0TmFtZXModGhpcy50ZXN0KS5zbGljZSgxKSxcbiAgICAgIC4uLihtZXNzYWdlID8gW21lc3NhZ2VdIDogW10pLFxuICAgIF0uam9pbignID4gJylcblxuICAgIGNvbnN0IHsgYWN0dWFsLCBleHBlY3RlZCwga2V5LCBwYXNzIH0gPSB0aGlzLnNuYXBzaG90U3RhdGUhLm1hdGNoKHtcbiAgICAgIHRlc3ROYW1lLFxuICAgICAgcmVjZWl2ZWQsXG4gICAgICBpc0lubGluZSxcbiAgICAgIGlubGluZVNuYXBzaG90OiBpbmxpbmVTbmFwc2hvdD8udHJpbSgpLFxuICAgIH0pXG5cbiAgICBpZiAoIXBhc3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGV4cGVjdChhY3R1YWwudHJpbSgpKS5lcXVhbHMoZXhwZWN0ZWQgPyBleHBlY3RlZC50cmltKCkgOiAnJylcbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIGVycm9yLm1lc3NhZ2UgPSBgU25hcHNob3QgXFxgJHtrZXkgfHwgJ3Vua25vd24nfVxcYCBtaXNtYXRjaGVkYFxuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmVTbmFwKCkge1xuICAgIGlmICghdGhpcy50ZXN0RmlsZSB8fCAhdGhpcy5zbmFwc2hvdFN0YXRlKSByZXR1cm5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYWNrU25hcHNob3RTdGF0ZSh0aGlzLnRlc3RGaWxlLCB0aGlzLnNuYXBzaG90U3RhdGUpXG4gICAgYXdhaXQgcnBjKCkuc25hcHNob3RTYXZlZChyZXN1bHQpXG5cbiAgICB0aGlzLnRlc3RGaWxlID0gJydcbiAgICB0aGlzLnNuYXBzaG90U3RhdGUgPSB1bmRlZmluZWRcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFja1NuYXBzaG90U3RhdGUoZmlsZXBhdGg6IHN0cmluZywgc3RhdGU6IFNuYXBzaG90U3RhdGUpOiBQcm9taXNlPFNuYXBzaG90UmVzdWx0PiB7XG4gIGNvbnN0IHNuYXBzaG90OiBTbmFwc2hvdFJlc3VsdCA9IHtcbiAgICBmaWxlcGF0aCxcbiAgICBhZGRlZDogMCxcbiAgICBmaWxlRGVsZXRlZDogZmFsc2UsXG4gICAgbWF0Y2hlZDogMCxcbiAgICB1bmNoZWNrZWQ6IDAsXG4gICAgdW5jaGVja2VkS2V5czogW10sXG4gICAgdW5tYXRjaGVkOiAwLFxuICAgIHVwZGF0ZWQ6IDAsXG4gIH1cbiAgY29uc3QgdW5jaGVja2VkQ291bnQgPSBzdGF0ZS5nZXRVbmNoZWNrZWRDb3VudCgpXG4gIGNvbnN0IHVuY2hlY2tlZEtleXMgPSBzdGF0ZS5nZXRVbmNoZWNrZWRLZXlzKClcbiAgaWYgKHVuY2hlY2tlZENvdW50KVxuICAgIHN0YXRlLnJlbW92ZVVuY2hlY2tlZEtleXMoKVxuXG4gIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHN0YXRlLnNhdmUoKVxuICBzbmFwc2hvdC5maWxlRGVsZXRlZCA9IHN0YXR1cy5kZWxldGVkXG4gIHNuYXBzaG90LmFkZGVkID0gc3RhdGUuYWRkZWRcbiAgc25hcHNob3QubWF0Y2hlZCA9IHN0YXRlLm1hdGNoZWRcbiAgc25hcHNob3QudW5tYXRjaGVkID0gc3RhdGUudW5tYXRjaGVkXG4gIHNuYXBzaG90LnVwZGF0ZWQgPSBzdGF0ZS51cGRhdGVkXG4gIHNuYXBzaG90LnVuY2hlY2tlZCA9ICFzdGF0dXMuZGVsZXRlZCA/IHVuY2hlY2tlZENvdW50IDogMFxuICBzbmFwc2hvdC51bmNoZWNrZWRLZXlzID0gQXJyYXkuZnJvbSh1bmNoZWNrZWRLZXlzKVxuXG4gIHJldHVybiBzbmFwc2hvdFxufVxuIiwiaW1wb3J0IHR5cGUgeyBDaGFpUGx1Z2luIH0gZnJvbSAnLi4vY2hhaS90eXBlcydcbmltcG9ydCB7IFNuYXBzaG90Q2xpZW50IH0gZnJvbSAnLi9jbGllbnQnXG5cbmxldCBfY2xpZW50OiBTbmFwc2hvdENsaWVudFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U25hcHNob3RDbGllbnQoKTogU25hcHNob3RDbGllbnQge1xuICBpZiAoIV9jbGllbnQpXG4gICAgX2NsaWVudCA9IG5ldyBTbmFwc2hvdENsaWVudCgpXG4gIHJldHVybiBfY2xpZW50XG59XG5cbmNvbnN0IGdldEVycm9yU3RyaW5nID0gKGV4cGVjdGVkOiAoKSA9PiB2b2lkKSA9PiB7XG4gIHRyeSB7XG4gICAgZXhwZWN0ZWQoKVxuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcilcbiAgICAgIHJldHVybiBlLm1lc3NhZ2VcblxuICAgIHJldHVybiBlXG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ3NuYXBzaG90IGZ1bmN0aW9uIGRpZG5cXCd0IHRocmV3Jylcbn1cblxuZXhwb3J0IGNvbnN0IFNuYXBzaG90UGx1Z2luOiBDaGFpUGx1Z2luID0gKGNoYWksIHV0aWxzKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IG9mIFsnbWF0Y2hTbmFwc2hvdCcsICd0b01hdGNoU25hcHNob3QnXSkge1xuICAgIHV0aWxzLmFkZE1ldGhvZChcbiAgICAgIGNoYWkuQXNzZXJ0aW9uLnByb3RvdHlwZSxcbiAgICAgIGtleSxcbiAgICAgIGZ1bmN0aW9uKHRoaXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGV4cGVjdGVkID0gdXRpbHMuZmxhZyh0aGlzLCAnb2JqZWN0JylcbiAgICAgICAgZ2V0U25hcHNob3RDbGllbnQoKS5hc3NlcnQoZXhwZWN0ZWQsIG1lc3NhZ2UpXG4gICAgICB9LFxuICAgIClcbiAgfVxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5Bc3NlcnRpb24ucHJvdG90eXBlLFxuICAgICd0b01hdGNoSW5saW5lU25hcHNob3QnLFxuICAgIGZ1bmN0aW9uKHRoaXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBpbmxpbmVTbmFwc2hvdDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0gdXRpbHMuZmxhZyh0aGlzLCAnb2JqZWN0JylcbiAgICAgIGdldFNuYXBzaG90Q2xpZW50KCkuYXNzZXJ0KGV4cGVjdGVkLCBtZXNzYWdlLCB0cnVlLCBpbmxpbmVTbmFwc2hvdClcbiAgICB9LFxuICApXG4gIHV0aWxzLmFkZE1ldGhvZChcbiAgICBjaGFpLkFzc2VydGlvbi5wcm90b3R5cGUsXG4gICAgJ3RvVGhyb3dFcnJvck1hdGNoaW5nU25hcHNob3QnLFxuICAgIGZ1bmN0aW9uKHRoaXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHV0aWxzLmZsYWcodGhpcywgJ29iamVjdCcpXG4gICAgICBnZXRTbmFwc2hvdENsaWVudCgpLmFzc2VydChnZXRFcnJvclN0cmluZyhleHBlY3RlZCksIG1lc3NhZ2UpXG4gICAgfSxcbiAgKVxuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5Bc3NlcnRpb24ucHJvdG90eXBlLFxuICAgICd0b1Rocm93RXJyb3JNYXRjaGluZ0lubGluZVNuYXBzaG90JyxcbiAgICBmdW5jdGlvbih0aGlzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgaW5saW5lU25hcHNob3Q6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHV0aWxzLmZsYWcodGhpcywgJ29iamVjdCcpXG4gICAgICBnZXRTbmFwc2hvdENsaWVudCgpLmFzc2VydChnZXRFcnJvclN0cmluZyhleHBlY3RlZCksIG1lc3NhZ2UsIHRydWUsIGlubGluZVNuYXBzaG90KVxuICAgIH0sXG4gIClcbn1cbiIsIi8vIHdlIGFyZSB1c2luZyBvbmx5IHRoZSBvbmVzIG5lZWRlZCBieSBAdGVzdGluZy1saWJyYXJ5L2plc3QtZG9tXG4vLyBpZiB5b3UgbmVlZCBtb3JlLCBqdXN0IGFza1xuXG5pbXBvcnQgYyBmcm9tICdwaWNvY29sb3JzJ1xuaW1wb3J0IHR5cGUgeyBGb3JtYXR0ZXIgfSBmcm9tICdwaWNvY29sb3JzL3R5cGVzJ1xuaW1wb3J0IHsgZm9ybWF0IGFzIHByZXR0eUZvcm1hdCwgcGx1Z2lucyBhcyBwcmV0dHlGb3JtYXRQbHVnaW5zIH0gZnJvbSAncHJldHR5LWZvcm1hdCdcbmltcG9ydCB7IHVuaWZpZWREaWZmIH0gZnJvbSAnLi4vLi4vcmVwb3J0ZXJzL3JlbmRlcmVycy9kaWZmJ1xuXG5leHBvcnQgY29uc3QgRVhQRUNURURfQ09MT1IgPSBjLmdyZWVuXG5leHBvcnQgY29uc3QgUkVDRUlWRURfQ09MT1IgPSBjLnJlZFxuZXhwb3J0IGNvbnN0IElOVkVSVEVEX0NPTE9SID0gYy5pbnZlcnNlXG5leHBvcnQgY29uc3QgQk9MRF9XRUlHSFQgPSBjLmJvbGRcbmV4cG9ydCBjb25zdCBESU1fQ09MT1IgPSBjLmRpbVxuXG5jb25zdCB7XG4gIEFzeW1tZXRyaWNNYXRjaGVyLFxuICBET01Db2xsZWN0aW9uLFxuICBET01FbGVtZW50LFxuICBJbW11dGFibGUsXG4gIFJlYWN0RWxlbWVudCxcbiAgUmVhY3RUZXN0Q29tcG9uZW50LFxufSA9IHByZXR0eUZvcm1hdFBsdWdpbnNcblxuY29uc3QgUExVR0lOUyA9IFtcbiAgUmVhY3RUZXN0Q29tcG9uZW50LFxuICBSZWFjdEVsZW1lbnQsXG4gIERPTUVsZW1lbnQsXG4gIERPTUNvbGxlY3Rpb24sXG4gIEltbXV0YWJsZSxcbiAgQXN5bW1ldHJpY01hdGNoZXIsXG5dXG5cbmV4cG9ydCB0eXBlIE1hdGNoZXJIaW50T3B0aW9ucyA9IHtcbiAgY29tbWVudD86IHN0cmluZ1xuICBleHBlY3RlZENvbG9yPzogRm9ybWF0dGVyXG4gIGlzRGlyZWN0RXhwZWN0Q2FsbD86IGJvb2xlYW5cbiAgaXNOb3Q/OiBib29sZWFuXG4gIHByb21pc2U/OiBzdHJpbmdcbiAgcmVjZWl2ZWRDb2xvcj86IEZvcm1hdHRlclxuICBzZWNvbmRBcmd1bWVudD86IHN0cmluZ1xuICBzZWNvbmRBcmd1bWVudENvbG9yPzogRm9ybWF0dGVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaGVySGludChcbiAgbWF0Y2hlck5hbWU6IHN0cmluZyxcbiAgcmVjZWl2ZWQgPSAncmVjZWl2ZWQnLFxuICBleHBlY3RlZCA9ICdleHBlY3RlZCcsXG4gIG9wdGlvbnM6IE1hdGNoZXJIaW50T3B0aW9ucyA9IHt9LFxuKSB7XG4gIGNvbnN0IHtcbiAgICBjb21tZW50ID0gJycsXG4gICAgZXhwZWN0ZWRDb2xvciA9IEVYUEVDVEVEX0NPTE9SLFxuICAgIGlzRGlyZWN0RXhwZWN0Q2FsbCA9IGZhbHNlLCAvLyBzZWVtcyByZWR1bmRhbnQgd2l0aCByZWNlaXZlZCA9PT0gJydcbiAgICBpc05vdCA9IGZhbHNlLFxuICAgIHByb21pc2UgPSAnJyxcbiAgICByZWNlaXZlZENvbG9yID0gUkVDRUlWRURfQ09MT1IsXG4gICAgc2Vjb25kQXJndW1lbnQgPSAnJyxcbiAgICBzZWNvbmRBcmd1bWVudENvbG9yID0gRVhQRUNURURfQ09MT1IsXG4gIH0gPSBvcHRpb25zXG4gIGxldCBoaW50ID0gJydcbiAgbGV0IGRpbVN0cmluZyA9ICdleHBlY3QnIC8vIGNvbmNhdGVuYXRlIGFkamFjZW50IGRpbSBzdWJzdHJpbmdzXG5cbiAgaWYgKCFpc0RpcmVjdEV4cGVjdENhbGwgJiYgcmVjZWl2ZWQgIT09ICcnKSB7XG4gICAgaGludCArPSBESU1fQ09MT1IoYCR7ZGltU3RyaW5nfShgKSArIHJlY2VpdmVkQ29sb3IocmVjZWl2ZWQpXG4gICAgZGltU3RyaW5nID0gJyknXG4gIH1cblxuICBpZiAocHJvbWlzZSAhPT0gJycpIHtcbiAgICBoaW50ICs9IERJTV9DT0xPUihgJHtkaW1TdHJpbmd9LmApICsgcHJvbWlzZVxuICAgIGRpbVN0cmluZyA9ICcnXG4gIH1cblxuICBpZiAoaXNOb3QpIHtcbiAgICBoaW50ICs9IGAke0RJTV9DT0xPUihgJHtkaW1TdHJpbmd9LmApfW5vdGBcbiAgICBkaW1TdHJpbmcgPSAnJ1xuICB9XG5cbiAgaWYgKG1hdGNoZXJOYW1lLmluY2x1ZGVzKCcuJykpIHtcbiAgICAvLyBPbGQgZm9ybWF0OiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSxcbiAgICAvLyBlc3BlY2lhbGx5IHdpdGhvdXQgcHJvbWlzZSBvciBpc05vdCBvcHRpb25zXG4gICAgZGltU3RyaW5nICs9IG1hdGNoZXJOYW1lXG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gTmV3IGZvcm1hdDogb21pdCBwZXJpb2QgZnJvbSBtYXRjaGVyTmFtZSBhcmdcbiAgICBoaW50ICs9IERJTV9DT0xPUihgJHtkaW1TdHJpbmd9LmApICsgbWF0Y2hlck5hbWVcbiAgICBkaW1TdHJpbmcgPSAnJ1xuICB9XG5cbiAgaWYgKGV4cGVjdGVkID09PSAnJykge1xuICAgIGRpbVN0cmluZyArPSAnKCknXG4gIH1cbiAgZWxzZSB7XG4gICAgaGludCArPSBESU1fQ09MT1IoYCR7ZGltU3RyaW5nfShgKSArIGV4cGVjdGVkQ29sb3IoZXhwZWN0ZWQpXG4gICAgaWYgKHNlY29uZEFyZ3VtZW50KVxuICAgICAgaGludCArPSBESU1fQ09MT1IoJywgJykgKyBzZWNvbmRBcmd1bWVudENvbG9yKHNlY29uZEFyZ3VtZW50KVxuICAgIGRpbVN0cmluZyA9ICcpJ1xuICB9XG5cbiAgaWYgKGNvbW1lbnQgIT09ICcnKVxuICAgIGRpbVN0cmluZyArPSBgIC8vICR7Y29tbWVudH1gXG5cbiAgaWYgKGRpbVN0cmluZyAhPT0gJycpXG4gICAgaGludCArPSBESU1fQ09MT1IoZGltU3RyaW5nKVxuXG4gIHJldHVybiBoaW50XG59XG5cbmNvbnN0IFNQQUNFX1NZTUJPTCA9ICdcXHV7MDBCN30nIC8vIG1pZGRsZSBkb3RcblxuLy8gSW5zdGVhZCBvZiBpbnZlcnNlIGhpZ2hsaWdodCB3aGljaCBub3cgaW1wbGllcyBhIGNoYW5nZSxcbi8vIHJlcGxhY2UgY29tbW9uIHNwYWNlcyB3aXRoIG1pZGRsZSBkb3QgYXQgdGhlIGVuZCBvZiBhbnkgbGluZS5cbmNvbnN0IHJlcGxhY2VUcmFpbGluZ1NwYWNlcyA9ICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgdGV4dC5yZXBsYWNlKC9cXHMrJC9nbSwgc3BhY2VzID0+IFNQQUNFX1NZTUJPTC5yZXBlYXQoc3BhY2VzLmxlbmd0aCkpXG5cbmV4cG9ydCBjb25zdCBzdHJpbmdpZnkgPSAob2JqZWN0OiB1bmtub3duLCBtYXhEZXB0aCA9IDEwKTogc3RyaW5nID0+IHtcbiAgY29uc3QgTUFYX0xFTkdUSCA9IDEwMDAwXG4gIGxldCByZXN1bHRcblxuICB0cnkge1xuICAgIHJlc3VsdCA9IHByZXR0eUZvcm1hdChvYmplY3QsIHtcbiAgICAgIG1heERlcHRoLFxuICAgICAgLy8gbWluOiB0cnVlLFxuICAgICAgcGx1Z2luczogUExVR0lOUyxcbiAgICB9KVxuICB9XG4gIGNhdGNoIHtcbiAgICByZXN1bHQgPSBwcmV0dHlGb3JtYXQob2JqZWN0LCB7XG4gICAgICBjYWxsVG9KU09OOiBmYWxzZSxcbiAgICAgIG1heERlcHRoLFxuICAgICAgLy8gbWluOiB0cnVlLFxuICAgICAgcGx1Z2luczogUExVR0lOUyxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5sZW5ndGggPj0gTUFYX0xFTkdUSCAmJiBtYXhEZXB0aCA+IDFcbiAgICA/IHN0cmluZ2lmeShvYmplY3QsIE1hdGguZmxvb3IobWF4RGVwdGggLyAyKSlcbiAgICA6IHJlc3VsdFxufVxuXG5leHBvcnQgY29uc3QgcHJpbnRSZWNlaXZlZCA9IChvYmplY3Q6IHVua25vd24pOiBzdHJpbmcgPT5cbiAgUkVDRUlWRURfQ09MT1IocmVwbGFjZVRyYWlsaW5nU3BhY2VzKHN0cmluZ2lmeShvYmplY3QpKSlcbmV4cG9ydCBjb25zdCBwcmludEV4cGVjdGVkID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+XG4gIEVYUEVDVEVEX0NPTE9SKHJlcGxhY2VUcmFpbGluZ1NwYWNlcyhzdHJpbmdpZnkodmFsdWUpKSlcblxuZXhwb3J0IHR5cGUgRGlmZk9wdGlvbnMgPSB7XG4gIGFBbm5vdGF0aW9uPzogc3RyaW5nXG4gIGFDb2xvcj86IEZvcm1hdHRlclxuICBhSW5kaWNhdG9yPzogc3RyaW5nXG4gIGJBbm5vdGF0aW9uPzogc3RyaW5nXG4gIGJDb2xvcj86IEZvcm1hdHRlclxuICBiSW5kaWNhdG9yPzogc3RyaW5nXG4gIGNoYW5nZUNvbG9yPzogRm9ybWF0dGVyXG4gIGNoYW5nZUxpbmVUcmFpbGluZ1NwYWNlQ29sb3I/OiBGb3JtYXR0ZXJcbiAgY29tbW9uQ29sb3I/OiBGb3JtYXR0ZXJcbiAgY29tbW9uSW5kaWNhdG9yPzogc3RyaW5nXG4gIGNvbW1vbkxpbmVUcmFpbGluZ1NwYWNlQ29sb3I/OiBGb3JtYXR0ZXJcbiAgY29udGV4dExpbmVzPzogbnVtYmVyXG4gIGVtcHR5Rmlyc3RPckxhc3RMaW5lUGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgZXhwYW5kPzogYm9vbGVhblxuICBpbmNsdWRlQ2hhbmdlQ291bnRzPzogYm9vbGVhblxuICBvbWl0QW5ub3RhdGlvbkxpbmVzPzogYm9vbGVhblxuICBwYXRjaENvbG9yPzogRm9ybWF0dGVyXG4gIC8vIHByZXR0eS1mb3JtYXQgdHlwZVxuICBjb21wYXJlS2V5cz86IGFueVxufVxuXG4vLyBUT0RPOiBkbyBzb21ldGhpbmcgd2l0aCBvcHRpb25zXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5leHBvcnQgZnVuY3Rpb24gZGlmZihhOiBhbnksIGI6IGFueSwgb3B0aW9ucz86IERpZmZPcHRpb25zKSB7XG4gIHJldHVybiB1bmlmaWVkRGlmZihzdHJpbmdpZnkoYSksIHN0cmluZ2lmeShiKSlcbn1cbiIsImltcG9ydCBjaGFpLCB7IHV0aWwgfSBmcm9tICdjaGFpJ1xuaW1wb3J0IHsgZ2V0U3RhdGUgfSBmcm9tICcuL2plc3QtZXhwZWN0J1xuXG5pbXBvcnQgKiBhcyBtYXRjaGVyVXRpbHMgZnJvbSAnLi9qZXN0LW1hdGNoZXItdXRpbHMnXG5cbmltcG9ydCB7XG4gIGVxdWFscyxcbiAgaXRlcmFibGVFcXVhbGl0eSxcbiAgc3Vic2V0RXF1YWxpdHksXG59IGZyb20gJy4vamVzdC11dGlscydcbmltcG9ydCB0eXBlIHtcbiAgQ2hhaVBsdWdpbixcbiAgTWF0Y2hlclN0YXRlLFxuICBNYXRjaGVyc09iamVjdCxcbiAgU3luY0V4cGVjdGF0aW9uUmVzdWx0LFxufSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBpc0FzeW5jRnVuY3Rpb24gPSAoZm46IHVua25vd24pID0+XG4gIHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyAmJiAoZm4gYXMgYW55KVtTeW1ib2wudG9TdHJpbmdUYWddID09PSAnQXN5bmNGdW5jdGlvbidcblxuY29uc3QgZ2V0TWF0Y2hlclN0YXRlID0gKGFzc2VydGlvbjogQ2hhaS5Bc3NlcnRpb25TdGF0aWMgJiBDaGFpLkFzc2VydGlvbikgPT4ge1xuICBjb25zdCBhY3R1YWwgPSBhc3NlcnRpb24uX29ialxuICBjb25zdCBpc05vdCA9IHV0aWwuZmxhZyhhc3NlcnRpb24sICduZWdhdGUnKSBhcyBib29sZWFuXG4gIGNvbnN0IHByb21pc2UgPSB1dGlsLmZsYWcoYXNzZXJ0aW9uLCAncHJvbWlzZScpIHx8ICcnXG4gIGNvbnN0IGplc3RVdGlscyA9IHtcbiAgICAuLi5tYXRjaGVyVXRpbHMsXG4gICAgaXRlcmFibGVFcXVhbGl0eSxcbiAgICBzdWJzZXRFcXVhbGl0eSxcbiAgfVxuXG4gIGNvbnN0IG1hdGNoZXJTdGF0ZTogTWF0Y2hlclN0YXRlID0ge1xuICAgIC4uLmdldFN0YXRlKCksXG4gICAgaXNOb3QsXG4gICAgdXRpbHM6IGplc3RVdGlscyxcbiAgICBwcm9taXNlLFxuICAgIGVxdWFscyxcbiAgICAvLyBuZWVkZWQgZm9yIGJ1aWx0LWluIGplc3Qtc25hcHNob3RzLCBidXQgd2UgZG9uJ3QgdXNlIGl0XG4gICAgc3VwcHJlc3NlZEVycm9yczogW10sXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0YXRlOiBtYXRjaGVyU3RhdGUsXG4gICAgaXNOb3QsXG4gICAgYWN0dWFsLFxuICB9XG59XG5cbmZ1bmN0aW9uIEplc3RFeHRlbmRQbHVnaW4oZXhwZWN0czogTWF0Y2hlcnNPYmplY3QpOiBDaGFpUGx1Z2luIHtcbiAgcmV0dXJuIChjLCB1dGlscykgPT4ge1xuICAgIE9iamVjdC5lbnRyaWVzKGV4cGVjdHMpLmZvckVhY2goKFtleHBlY3RBc3NlcnRpb25OYW1lLCBleHBlY3RBc3NlcnRpb25dKSA9PiB7XG4gICAgICBmdW5jdGlvbiBleHBlY3RTeW5jV3JhcHBlcih0aGlzOiBDaGFpLkFzc2VydGlvblN0YXRpYyAmIENoYWkuQXNzZXJ0aW9uLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICBjb25zdCB7IHN0YXRlLCBpc05vdCwgYWN0dWFsIH0gPSBnZXRNYXRjaGVyU3RhdGUodGhpcylcblxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGFyZ3Mgd2FudGluZyB0dXBsZVxuICAgICAgICBjb25zdCB7IHBhc3MsIG1lc3NhZ2UgfSA9IGV4cGVjdEFzc2VydGlvbi5jYWxsKHN0YXRlLCBhY3R1YWwsIC4uLmFyZ3MpIGFzIFN5bmNFeHBlY3RhdGlvblJlc3VsdFxuXG4gICAgICAgIGlmICgocGFzcyAmJiBpc05vdCkgfHwgKCFwYXNzICYmICFpc05vdCkpXG4gICAgICAgICAgYy5leHBlY3QuZmFpbChtZXNzYWdlKCkpXG4gICAgICB9XG5cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIGV4cGVjdEFzeW5jV3JhcHBlcih0aGlzOiBDaGFpLkFzc2VydGlvblN0YXRpYyAmIENoYWkuQXNzZXJ0aW9uLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICBjb25zdCB7IHN0YXRlLCBpc05vdCwgYWN0dWFsIH0gPSBnZXRNYXRjaGVyU3RhdGUodGhpcylcblxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGFyZ3Mgd2FudGluZyB0dXBsZVxuICAgICAgICBjb25zdCB7IHBhc3MsIG1lc3NhZ2UgfSA9IGF3YWl0IGV4cGVjdEFzc2VydGlvbi5jYWxsKHN0YXRlLCBhY3R1YWwsIC4uLmFyZ3MpIGFzIFN5bmNFeHBlY3RhdGlvblJlc3VsdFxuXG4gICAgICAgIGlmICgocGFzcyAmJiBpc05vdCkgfHwgKCFwYXNzICYmICFpc05vdCkpXG4gICAgICAgICAgYy5leHBlY3QuZmFpbChtZXNzYWdlKCkpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGV4cGVjdEFzc2VydGlvbldyYXBwZXIgPSBpc0FzeW5jRnVuY3Rpb24oZXhwZWN0QXNzZXJ0aW9uKSA/IGV4cGVjdEFzeW5jV3JhcHBlciA6IGV4cGVjdFN5bmNXcmFwcGVyXG5cbiAgICAgIHV0aWxzLmFkZE1ldGhvZChjaGFpLkFzc2VydGlvbi5wcm90b3R5cGUsIGV4cGVjdEFzc2VydGlvbk5hbWUsIGV4cGVjdEFzc2VydGlvbldyYXBwZXIpXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgSmVzdEV4dGVuZDogQ2hhaVBsdWdpbiA9IChjaGFpLCB1dGlscykgPT4ge1xuICB1dGlscy5hZGRNZXRob2QoY2hhaS5leHBlY3QsICdleHRlbmQnLCAoZXhwZWN0czogTWF0Y2hlcnNPYmplY3QpID0+IHtcbiAgICBjaGFpLnVzZShKZXN0RXh0ZW5kUGx1Z2luKGV4cGVjdHMpKVxuICB9KVxufVxuIiwiaW1wb3J0ICogYXMgbWF0Y2hlclV0aWxzIGZyb20gJy4vamVzdC1tYXRjaGVyLXV0aWxzJ1xuXG5pbXBvcnQgeyBlcXVhbHMsIGlzQSB9IGZyb20gJy4vamVzdC11dGlscydcbmltcG9ydCB0eXBlIHsgQ2hhaVBsdWdpbiwgTWF0Y2hlclN0YXRlIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGludGVyZmFjZSBBc3ltbWV0cmljTWF0Y2hlckludGVyZmFjZSB7XG4gIGFzeW1tZXRyaWNNYXRjaChvdGhlcjogdW5rbm93bik6IGJvb2xlYW5cbiAgdG9TdHJpbmcoKTogc3RyaW5nXG4gIGdldEV4cGVjdGVkVHlwZT8oKTogc3RyaW5nXG4gIHRvQXN5bW1ldHJpY01hdGNoZXI/KCk6IHN0cmluZ1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXN5bW1ldHJpY01hdGNoZXI8XG4gIFQsXG4gIFN0YXRlIGV4dGVuZHMgTWF0Y2hlclN0YXRlID0gTWF0Y2hlclN0YXRlLFxuPiBpbXBsZW1lbnRzIEFzeW1tZXRyaWNNYXRjaGVySW50ZXJmYWNlIHtcbiAgJCR0eXBlb2YgPSBTeW1ib2wuZm9yKCdqZXN0LmFzeW1tZXRyaWNNYXRjaGVyJylcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc2FtcGxlOiBULCBwcm90ZWN0ZWQgaW52ZXJzZSA9IGZhbHNlKSB7fVxuXG4gIHByb3RlY3RlZCBnZXRNYXRjaGVyQ29udGV4dCgpOiBTdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVxdWFscyxcbiAgICAgIGlzTm90OiB0aGlzLmludmVyc2UsXG4gICAgICB1dGlsczogbWF0Y2hlclV0aWxzLFxuICAgIH0gYXMgYW55XG4gIH1cblxuICBhYnN0cmFjdCBhc3ltbWV0cmljTWF0Y2gob3RoZXI6IHVua25vd24pOiBib29sZWFuXG4gIGFic3RyYWN0IHRvU3RyaW5nKCk6IHN0cmluZ1xuICBnZXRFeHBlY3RlZFR5cGU/KCk6IHN0cmluZ1xuICB0b0FzeW1tZXRyaWNNYXRjaGVyPygpOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNsYXNzIFN0cmluZ0NvbnRhaW5pbmcgZXh0ZW5kcyBBc3ltbWV0cmljTWF0Y2hlcjxzdHJpbmc+IHtcbiAgY29uc3RydWN0b3Ioc2FtcGxlOiBzdHJpbmcsIGludmVyc2UgPSBmYWxzZSkge1xuICAgIGlmICghaXNBKCdTdHJpbmcnLCBzYW1wbGUpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBpcyBub3QgYSBzdHJpbmcnKVxuXG4gICAgc3VwZXIoc2FtcGxlLCBpbnZlcnNlKVxuICB9XG5cbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXN1bHQgPSBpc0EoJ1N0cmluZycsIG90aGVyKSAmJiBvdGhlci5pbmNsdWRlcyh0aGlzLnNhbXBsZSlcblxuICAgIHJldHVybiB0aGlzLmludmVyc2UgPyAhcmVzdWx0IDogcmVzdWx0XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYFN0cmluZyR7dGhpcy5pbnZlcnNlID8gJ05vdCcgOiAnJ31Db250YWluaW5nYFxuICB9XG5cbiAgZ2V0RXhwZWN0ZWRUeXBlKCkge1xuICAgIHJldHVybiAnc3RyaW5nJ1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBbnl0aGluZyBleHRlbmRzIEFzeW1tZXRyaWNNYXRjaGVyPHZvaWQ+IHtcbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiB1bmtub3duKSB7XG4gICAgcmV0dXJuIG90aGVyICE9IG51bGxcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAnQW55dGhpbmcnXG4gIH1cblxuICB0b0FzeW1tZXRyaWNNYXRjaGVyKCkge1xuICAgIHJldHVybiAnQW55dGhpbmcnXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9iamVjdENvbnRhaW5pbmcgZXh0ZW5kcyBBc3ltbWV0cmljTWF0Y2hlcjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICBjb25zdHJ1Y3RvcihzYW1wbGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBpbnZlcnNlID0gZmFsc2UpIHtcbiAgICBzdXBlcihzYW1wbGUsIGludmVyc2UpXG4gIH1cblxuICBnZXRQcm90b3R5cGUob2JqOiBvYmplY3QpIHtcbiAgICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKVxuICAgICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopXG5cbiAgICBpZiAob2JqLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gb2JqKVxuICAgICAgcmV0dXJuIG51bGxcblxuICAgIHJldHVybiBvYmouY29uc3RydWN0b3IucHJvdG90eXBlXG4gIH1cblxuICBoYXNQcm9wZXJ0eShvYmo6IG9iamVjdCB8IG51bGwsIHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIW9iailcbiAgICAgIHJldHVybiBmYWxzZVxuXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3BlcnR5KSlcbiAgICAgIHJldHVybiB0cnVlXG5cbiAgICByZXR1cm4gdGhpcy5oYXNQcm9wZXJ0eSh0aGlzLmdldFByb3RvdHlwZShvYmopLCBwcm9wZXJ0eSlcbiAgfVxuXG4gIGFzeW1tZXRyaWNNYXRjaChvdGhlcjogYW55KSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnNhbXBsZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIGBZb3UgbXVzdCBwcm92aWRlIGFuIG9iamVjdCB0byAke3RoaXMudG9TdHJpbmcoKX0sIG5vdCAnJHtcbiAgICAgICAgICB0eXBlb2YgdGhpcy5zYW1wbGVcbiAgICAgICAgfScuYCxcbiAgICAgIClcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gdHJ1ZVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiB0aGlzLnNhbXBsZSkge1xuICAgICAgaWYgKCF0aGlzLmhhc1Byb3BlcnR5KG90aGVyLCBwcm9wZXJ0eSkgfHwgIWVxdWFscyh0aGlzLnNhbXBsZVtwcm9wZXJ0eV0sIG90aGVyW3Byb3BlcnR5XSkpIHtcbiAgICAgICAgcmVzdWx0ID0gZmFsc2VcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5pbnZlcnNlID8gIXJlc3VsdCA6IHJlc3VsdFxuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIGBPYmplY3Qke3RoaXMuaW52ZXJzZSA/ICdOb3QnIDogJyd9Q29udGFpbmluZ2BcbiAgfVxuXG4gIGdldEV4cGVjdGVkVHlwZSgpIHtcbiAgICByZXR1cm4gJ29iamVjdCdcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXJyYXlDb250YWluaW5nIGV4dGVuZHMgQXN5bW1ldHJpY01hdGNoZXI8QXJyYXk8dW5rbm93bj4+IHtcbiAgY29uc3RydWN0b3Ioc2FtcGxlOiBBcnJheTx1bmtub3duPiwgaW52ZXJzZSA9IGZhbHNlKSB7XG4gICAgc3VwZXIoc2FtcGxlLCBpbnZlcnNlKVxuICB9XG5cbiAgYXN5bW1ldHJpY01hdGNoKG90aGVyOiBBcnJheTx1bmtub3duPikge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLnNhbXBsZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIGBZb3UgbXVzdCBwcm92aWRlIGFuIGFycmF5IHRvICR7dGhpcy50b1N0cmluZygpfSwgbm90ICcke1xuICAgICAgICAgIHR5cGVvZiB0aGlzLnNhbXBsZVxuICAgICAgICB9Jy5gLFxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdFxuICAgICAgPSB0aGlzLnNhbXBsZS5sZW5ndGggPT09IDBcbiAgICAgIHx8IChBcnJheS5pc0FycmF5KG90aGVyKVxuICAgICAgICAmJiB0aGlzLnNhbXBsZS5ldmVyeShpdGVtID0+XG4gICAgICAgICAgb3RoZXIuc29tZShhbm90aGVyID0+IGVxdWFscyhpdGVtLCBhbm90aGVyKSksXG4gICAgICAgICkpXG5cbiAgICByZXR1cm4gdGhpcy5pbnZlcnNlID8gIXJlc3VsdCA6IHJlc3VsdFxuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIGBBcnJheSR7dGhpcy5pbnZlcnNlID8gJ05vdCcgOiAnJ31Db250YWluaW5nYFxuICB9XG5cbiAgZ2V0RXhwZWN0ZWRUeXBlKCkge1xuICAgIHJldHVybiAnYXJyYXknXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFueSBleHRlbmRzIEFzeW1tZXRyaWNNYXRjaGVyPGFueT4ge1xuICBjb25zdHJ1Y3RvcihzYW1wbGU6IHVua25vd24pIHtcbiAgICBpZiAodHlwZW9mIHNhbXBsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICdhbnkoKSBleHBlY3RzIHRvIGJlIHBhc3NlZCBhIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLiAnXG4gICAgICAgICAgKyAnUGxlYXNlIHBhc3Mgb25lIG9yIHVzZSBhbnl0aGluZygpIHRvIG1hdGNoIGFueSBvYmplY3QuJyxcbiAgICAgIClcbiAgICB9XG4gICAgc3VwZXIoc2FtcGxlKVxuICB9XG5cbiAgZm5OYW1lRm9yKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gICAgaWYgKGZ1bmMubmFtZSlcbiAgICAgIHJldHVybiBmdW5jLm5hbWVcblxuICAgIGNvbnN0IGZ1bmN0aW9uVG9TdHJpbmcgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmdcblxuICAgIGNvbnN0IG1hdGNoZXMgPSBmdW5jdGlvblRvU3RyaW5nXG4gICAgICAuY2FsbChmdW5jKVxuICAgICAgLm1hdGNoKC9eKD86YXN5bmMpP1xccypmdW5jdGlvblxccypcXCo/XFxzKihbXFx3JF0rKVxccypcXCgvKVxuICAgIHJldHVybiBtYXRjaGVzID8gbWF0Y2hlc1sxXSA6ICc8YW5vbnltb3VzPidcbiAgfVxuXG4gIGFzeW1tZXRyaWNNYXRjaChvdGhlcjogdW5rbm93bikge1xuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gU3RyaW5nKVxuICAgICAgcmV0dXJuIHR5cGVvZiBvdGhlciA9PSAnc3RyaW5nJyB8fCBvdGhlciBpbnN0YW5jZW9mIFN0cmluZ1xuXG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBOdW1iZXIpXG4gICAgICByZXR1cm4gdHlwZW9mIG90aGVyID09ICdudW1iZXInIHx8IG90aGVyIGluc3RhbmNlb2YgTnVtYmVyXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IEZ1bmN0aW9uKVxuICAgICAgcmV0dXJuIHR5cGVvZiBvdGhlciA9PSAnZnVuY3Rpb24nIHx8IG90aGVyIGluc3RhbmNlb2YgRnVuY3Rpb25cblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gQm9vbGVhbilcbiAgICAgIHJldHVybiB0eXBlb2Ygb3RoZXIgPT0gJ2Jvb2xlYW4nIHx8IG90aGVyIGluc3RhbmNlb2YgQm9vbGVhblxuXG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBCaWdJbnQpXG4gICAgICByZXR1cm4gdHlwZW9mIG90aGVyID09ICdiaWdpbnQnIHx8IG90aGVyIGluc3RhbmNlb2YgQmlnSW50XG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IFN5bWJvbClcbiAgICAgIHJldHVybiB0eXBlb2Ygb3RoZXIgPT0gJ3N5bWJvbCcgfHwgb3RoZXIgaW5zdGFuY2VvZiBTeW1ib2xcblxuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gT2JqZWN0KVxuICAgICAgcmV0dXJuIHR5cGVvZiBvdGhlciA9PSAnb2JqZWN0J1xuXG4gICAgcmV0dXJuIG90aGVyIGluc3RhbmNlb2YgdGhpcy5zYW1wbGVcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAnQW55J1xuICB9XG5cbiAgZ2V0RXhwZWN0ZWRUeXBlKCkge1xuICAgIGlmICh0aGlzLnNhbXBsZSA9PT0gU3RyaW5nKVxuICAgICAgcmV0dXJuICdzdHJpbmcnXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IE51bWJlcilcbiAgICAgIHJldHVybiAnbnVtYmVyJ1xuXG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBGdW5jdGlvbilcbiAgICAgIHJldHVybiAnZnVuY3Rpb24nXG5cbiAgICBpZiAodGhpcy5zYW1wbGUgPT09IE9iamVjdClcbiAgICAgIHJldHVybiAnb2JqZWN0J1xuXG4gICAgaWYgKHRoaXMuc2FtcGxlID09PSBCb29sZWFuKVxuICAgICAgcmV0dXJuICdib29sZWFuJ1xuXG4gICAgcmV0dXJuIHRoaXMuZm5OYW1lRm9yKHRoaXMuc2FtcGxlKVxuICB9XG5cbiAgdG9Bc3ltbWV0cmljTWF0Y2hlcigpIHtcbiAgICByZXR1cm4gYEFueTwke3RoaXMuZm5OYW1lRm9yKHRoaXMuc2FtcGxlKX0+YFxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdHJpbmdNYXRjaGluZyBleHRlbmRzIEFzeW1tZXRyaWNNYXRjaGVyPFJlZ0V4cD4ge1xuICBjb25zdHJ1Y3RvcihzYW1wbGU6IHN0cmluZyB8IFJlZ0V4cCwgaW52ZXJzZSA9IGZhbHNlKSB7XG4gICAgaWYgKCFpc0EoJ1N0cmluZycsIHNhbXBsZSkgJiYgIWlzQSgnUmVnRXhwJywgc2FtcGxlKSlcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgaXMgbm90IGEgU3RyaW5nIG9yIGEgUmVnRXhwJylcblxuICAgIHN1cGVyKG5ldyBSZWdFeHAoc2FtcGxlKSwgaW52ZXJzZSlcbiAgfVxuXG4gIGFzeW1tZXRyaWNNYXRjaChvdGhlcjogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gaXNBKCdTdHJpbmcnLCBvdGhlcikgJiYgdGhpcy5zYW1wbGUudGVzdChvdGhlcilcblxuICAgIHJldHVybiB0aGlzLmludmVyc2UgPyAhcmVzdWx0IDogcmVzdWx0XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYFN0cmluZyR7dGhpcy5pbnZlcnNlID8gJ05vdCcgOiAnJ31NYXRjaGluZ2BcbiAgfVxuXG4gIGdldEV4cGVjdGVkVHlwZSgpIHtcbiAgICByZXR1cm4gJ3N0cmluZydcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgSmVzdEFzeW1tZXRyaWNNYXRjaGVyczogQ2hhaVBsdWdpbiA9IChjaGFpLCB1dGlscykgPT4ge1xuICB1dGlscy5hZGRNZXRob2QoXG4gICAgY2hhaS5leHBlY3QsXG4gICAgJ2FueXRoaW5nJyxcbiAgICAoKSA9PiBuZXcgQW55dGhpbmcoKSxcbiAgKVxuXG4gIHV0aWxzLmFkZE1ldGhvZChcbiAgICBjaGFpLmV4cGVjdCxcbiAgICAnYW55JyxcbiAgICAoZXhwZWN0ZWQ6IHVua25vd24pID0+IG5ldyBBbnkoZXhwZWN0ZWQpLFxuICApXG5cbiAgdXRpbHMuYWRkTWV0aG9kKFxuICAgIGNoYWkuZXhwZWN0LFxuICAgICdzdHJpbmdDb250YWluaW5nJyxcbiAgICAoZXhwZWN0ZWQ6IHN0cmluZykgPT4gbmV3IFN0cmluZ0NvbnRhaW5pbmcoZXhwZWN0ZWQpLFxuICApXG5cbiAgdXRpbHMuYWRkTWV0aG9kKFxuICAgIGNoYWkuZXhwZWN0LFxuICAgICdvYmplY3RDb250YWluaW5nJyxcbiAgICAoZXhwZWN0ZWQ6IGFueSkgPT4gbmV3IE9iamVjdENvbnRhaW5pbmcoZXhwZWN0ZWQpLFxuICApXG5cbiAgdXRpbHMuYWRkTWV0aG9kKFxuICAgIGNoYWkuZXhwZWN0LFxuICAgICdhcnJheUNvbnRhaW5pbmcnLFxuICAgIChleHBlY3RlZDogYW55KSA9PiBuZXcgQXJyYXlDb250YWluaW5nKGV4cGVjdGVkKSxcbiAgKVxuXG4gIHV0aWxzLmFkZE1ldGhvZChcbiAgICBjaGFpLmV4cGVjdCxcbiAgICAnc3RyaW5nTWF0Y2hpbmcnLFxuICAgIChleHBlY3RlZDogYW55KSA9PiBuZXcgU3RyaW5nTWF0Y2hpbmcoZXhwZWN0ZWQpLFxuICApXG5cbiAgY2hhaS5leHBlY3Qubm90ID0ge1xuICAgIHN0cmluZ0NvbnRhaW5pbmc6IChleHBlY3RlZDogc3RyaW5nKSA9PiBuZXcgU3RyaW5nQ29udGFpbmluZyhleHBlY3RlZCwgdHJ1ZSksXG4gICAgb2JqZWN0Q29udGFpbmluZzogKGV4cGVjdGVkOiBhbnkpID0+IG5ldyBPYmplY3RDb250YWluaW5nKGV4cGVjdGVkLCB0cnVlKSxcbiAgICBhcnJheUNvbnRhaW5pbmc6IChleHBlY3RlZDogdW5rbm93bltdKSA9PiBuZXcgQXJyYXlDb250YWluaW5nKGV4cGVjdGVkLCB0cnVlKSxcbiAgICBzdHJpbmdNYXRjaGluZzogKGV4cGVjdGVkOiBzdHJpbmcgfCBSZWdFeHApID0+IG5ldyBTdHJpbmdNYXRjaGluZyhleHBlY3RlZCwgdHJ1ZSksXG4gIH1cbn1cbiIsImltcG9ydCBjaGFpIGZyb20gJ2NoYWknXG5pbXBvcnQgU3Vic2V0IGZyb20gJ2NoYWktc3Vic2V0J1xuaW1wb3J0IHsgU25hcHNob3RQbHVnaW4gfSBmcm9tICcuLi9zbmFwc2hvdC9jaGFpJ1xuaW1wb3J0IHsgSmVzdEV4dGVuZCB9IGZyb20gJy4vamVzdC1leHRlbmQnXG5pbXBvcnQgeyBKZXN0Q2hhaUV4cGVjdCB9IGZyb20gJy4vamVzdC1leHBlY3QnXG5pbXBvcnQgeyBKZXN0QXN5bW1ldHJpY01hdGNoZXJzIH0gZnJvbSAnLi9qZXN0LWFzeW1tZXRyaWMtbWF0Y2hlcnMnXG5cbmxldCBpbnN0YWxsZWQgPSBmYWxzZVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldHVwQ2hhaSgpIHtcbiAgaWYgKGluc3RhbGxlZClcbiAgICByZXR1cm5cblxuICBjaGFpLnVzZShKZXN0RXh0ZW5kKVxuICBjaGFpLnVzZShKZXN0Q2hhaUV4cGVjdClcbiAgY2hhaS51c2UoU3Vic2V0KVxuICBjaGFpLnVzZShTbmFwc2hvdFBsdWdpbilcbiAgY2hhaS51c2UoSmVzdEFzeW1tZXRyaWNNYXRjaGVycylcbiAgaW5zdGFsbGVkID0gdHJ1ZVxufVxuIiwiaW1wb3J0IHsgQ29uc29sZSB9IGZyb20gJ2NvbnNvbGUnXG5pbXBvcnQgeyBXcml0YWJsZSB9IGZyb20gJ3N0cmVhbSdcbmltcG9ydCB7IGVudmlyb25tZW50cyB9IGZyb20gJy4uL2VudidcbmltcG9ydCB7IHNldHVwQ2hhaSB9IGZyb20gJy4uL2ludGVncmF0aW9ucy9jaGFpL3NldHVwJ1xuaW1wb3J0IHR5cGUgeyBSZXNvbHZlZENvbmZpZyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgdG9BcnJheSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgcnBjIH0gZnJvbSAnLi9ycGMnXG5cbmxldCBnbG9iYWxTZXR1cCA9IGZhbHNlXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0dXBHbG9iYWxFbnYoY29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICBpZiAoZ2xvYmFsU2V0dXApXG4gICAgcmV0dXJuXG5cbiAgZ2xvYmFsU2V0dXAgPSB0cnVlXG5cbiAgc2V0dXBDb25zb2xlTG9nU3B5KClcbiAgYXdhaXQgc2V0dXBDaGFpKClcblxuICBpZiAoY29uZmlnLmdsb2JhbClcbiAgICAoYXdhaXQgaW1wb3J0KCcuLi9pbnRlZ3JhdGlvbnMvZ2xvYmFsJykpLnJlZ2lzdGVyQXBpR2xvYmFsbHkoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBDb25zb2xlTG9nU3B5KCkge1xuICBjb25zdCBzdGRvdXQgPSBuZXcgV3JpdGFibGUoe1xuICAgIHdyaXRlKGRhdGEsIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICAgICAgcnBjKCkub25Vc2VyTG9nKHtcbiAgICAgICAgdHlwZTogJ3N0ZG91dCcsXG4gICAgICAgIGNvbnRlbnQ6IFN0cmluZyhkYXRhKSxcbiAgICAgICAgdGFza0lkOiBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmN1cnJlbnQ/LmlkLFxuICAgICAgfSlcbiAgICAgIGNhbGxiYWNrKClcbiAgICB9LFxuICB9KVxuICBjb25zdCBzdGRlcnIgPSBuZXcgV3JpdGFibGUoe1xuICAgIHdyaXRlKGRhdGEsIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICAgICAgcnBjKCkub25Vc2VyTG9nKHtcbiAgICAgICAgdHlwZTogJ3N0ZGVycicsXG4gICAgICAgIGNvbnRlbnQ6IFN0cmluZyhkYXRhKSxcbiAgICAgICAgdGFza0lkOiBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmN1cnJlbnQ/LmlkLFxuICAgICAgfSlcbiAgICAgIGNhbGxiYWNrKClcbiAgICB9LFxuICB9KVxuICBnbG9iYWxUaGlzLmNvbnNvbGUgPSBuZXcgQ29uc29sZSh7XG4gICAgc3Rkb3V0LFxuICAgIHN0ZGVycixcbiAgICBjb2xvck1vZGU6IHRydWUsXG4gICAgZ3JvdXBJbmRlbnRhdGlvbjogMixcbiAgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhFbnYobmFtZTogUmVzb2x2ZWRDb25maWdbJ2Vudmlyb25tZW50J10sIGZuOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gIGNvbnN0IGVudiA9IGF3YWl0IGVudmlyb25tZW50c1tuYW1lXS5zZXR1cChnbG9iYWxUaGlzKVxuICB0cnkge1xuICAgIGF3YWl0IGZuKClcbiAgfVxuICBmaW5hbGx5IHtcbiAgICBhd2FpdCBlbnYudGVhcmRvd24oZ2xvYmFsVGhpcylcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuU2V0dXBGaWxlcyhjb25maWc6IFJlc29sdmVkQ29uZmlnKSB7XG4gIGNvbnN0IGZpbGVzID0gdG9BcnJheShjb25maWcuc2V0dXBGaWxlcylcbiAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgZmlsZXMubWFwKGFzeW5jKGZpbGUpID0+IHtcbiAgICAgIHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18ubW9kdWxlQ2FjaGUuZGVsZXRlKGZpbGUpXG4gICAgICBhd2FpdCBpbXBvcnQoZmlsZSlcbiAgICB9KSxcbiAgKVxufVxuIiwiaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAndXRpbCdcbmltcG9ydCB7IHN0cmluZ2lmeSB9IGZyb20gJy4uL2ludGVncmF0aW9ucy9jaGFpL2plc3QtbWF0Y2hlci11dGlscydcblxuY29uc3QgT0JKRUNUX1BST1RPID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHt9KVxuXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2ViX1dvcmtlcnNfQVBJL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplRXJyb3IodmFsOiBhbnksIHNlZW4gPSBuZXcgV2Vha01hcCgpKTogYW55IHtcbiAgaWYgKCF2YWwgfHwgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpXG4gICAgcmV0dXJuIHZhbFxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJylcbiAgICByZXR1cm4gYEZ1bmN0aW9uPCR7dmFsLm5hbWV9PmBcbiAgaWYgKHR5cGVvZiB2YWwgIT09ICdvYmplY3QnKVxuICAgIHJldHVybiB2YWxcbiAgaWYgKHZhbCBpbnN0YW5jZW9mIFByb21pc2UgfHwgJ3RoZW4nIGluIHZhbCB8fCAodmFsLmNvbnN0cnVjdG9yICYmIHZhbC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgPT09ICdBc3luY0Z1bmN0aW9uJykpXG4gICAgcmV0dXJuICdQcm9taXNlJ1xuICBpZiAodHlwZW9mIEVsZW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHZhbCBpbnN0YW5jZW9mIEVsZW1lbnQpXG4gICAgcmV0dXJuIHZhbC50YWdOYW1lXG4gIGlmICh0eXBlb2YgdmFsLmFzeW1tZXRyaWNNYXRjaCA9PT0gJ2Z1bmN0aW9uJylcbiAgICByZXR1cm4gYCR7dmFsLnRvU3RyaW5nKCl9ICR7Zm9ybWF0KHZhbC5zYW1wbGUpfWBcblxuICBpZiAoc2Vlbi5oYXModmFsKSlcbiAgICByZXR1cm4gc2Vlbi5nZXQodmFsKVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICBjb25zdCBjbG9uZTogYW55W10gPSBuZXcgQXJyYXkodmFsLmxlbmd0aClcbiAgICBzZWVuLnNldCh2YWwsIGNsb25lKVxuICAgIHZhbC5mb3JFYWNoKChlLCBpKSA9PiB7XG4gICAgICBjbG9uZVtpXSA9IHNlcmlhbGl6ZUVycm9yKGUsIHNlZW4pXG4gICAgfSlcbiAgICByZXR1cm4gY2xvbmVcbiAgfVxuICBlbHNlIHtcbiAgICAvLyBPYmplY3RzIHdpdGggYEVycm9yYCBjb25zdHJ1Y3RvcnMgYXBwZWFyIHRvIGNhdXNlIHByb2JsZW1zIGR1cmluZyB3b3JrZXIgY29tbXVuaWNhdGlvblxuICAgIC8vIHVzaW5nIGBNZXNzYWdlUG9ydGAsIHNvIHRoZSBzZXJpYWxpemVkIGVycm9yIG9iamVjdCBpcyBiZWluZyByZWNyZWF0ZWQgYXMgcGxhaW4gb2JqZWN0LlxuICAgIGNvbnN0IGNsb25lID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuICAgIHNlZW4uc2V0KHZhbCwgY2xvbmUpXG5cbiAgICBsZXQgb2JqID0gdmFsXG4gICAgd2hpbGUgKG9iaiAmJiBvYmogIT09IE9CSkVDVF9QUk9UTykge1xuICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKCEoa2V5IGluIGNsb25lKSlcbiAgICAgICAgICBjbG9uZVtrZXldID0gc2VyaWFsaXplRXJyb3Iob2JqW2tleV0sIHNlZW4pXG4gICAgICB9KVxuICAgICAgb2JqID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iailcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NFcnJvcihlcnI6IGFueSkge1xuICBpZiAoIWVycilcbiAgICByZXR1cm4gZXJyXG4gIC8vIHN0YWNrIGlzIG5vdCBzZXJpYWxpemVkIGluIHdvcmtlciBjb21tdW5pY2F0aW9uXG4gIC8vIHdlIHN0cmluZ2lmeSBpdCBmaXJzdFxuICBpZiAoZXJyLnN0YWNrKVxuICAgIGVyci5zdGFja1N0ciA9IFN0cmluZyhlcnIuc3RhY2spXG4gIGlmIChlcnIubmFtZSlcbiAgICBlcnIubmFtZVN0ciA9IFN0cmluZyhlcnIubmFtZSlcblxuICBpZiAodHlwZW9mIGVyci5leHBlY3RlZCAhPT0gJ3N0cmluZycpXG4gICAgZXJyLmV4cGVjdGVkID0gc3RyaW5naWZ5KGVyci5leHBlY3RlZClcbiAgaWYgKHR5cGVvZiBlcnIuYWN0dWFsICE9PSAnc3RyaW5nJylcbiAgICBlcnIuYWN0dWFsID0gc3RyaW5naWZ5KGVyci5hY3R1YWwpXG5cbiAgcmV0dXJuIHNlcmlhbGl6ZUVycm9yKGVycilcbn1cbiIsImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nXG5pbXBvcnQgeyByZWxhdGl2ZSB9IGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHR5cGUgeyBGaWxlLCBSZXNvbHZlZENvbmZpZywgU3VpdGUgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGNsZWFyQ29udGV4dCwgZGVmYXVsdFN1aXRlIH0gZnJvbSAnLi9zdWl0ZSdcbmltcG9ydCB7IGdldEhvb2tzLCBzZXRIb29rcyB9IGZyb20gJy4vbWFwJ1xuaW1wb3J0IHsgcHJvY2Vzc0Vycm9yIH0gZnJvbSAnLi9lcnJvcidcbmltcG9ydCB7IGNvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnXG5pbXBvcnQgeyBydW5TZXR1cEZpbGVzIH0gZnJvbSAnLi9zZXR1cCdcblxuZnVuY3Rpb24gaGFzaChzdHI6IHN0cmluZywgbGVuZ3RoID0gMTApIHtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goJ21kNScpXG4gICAgLnVwZGF0ZShzdHIpXG4gICAgLmRpZ2VzdCgnaGV4JylcbiAgICAuc2xpY2UoMCwgbGVuZ3RoKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29sbGVjdFRlc3RzKHBhdGhzOiBzdHJpbmdbXSwgY29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICBjb25zdCBmaWxlczogRmlsZVtdID0gW11cblxuICBmb3IgKGNvbnN0IGZpbGVwYXRoIG9mIHBhdGhzKSB7XG4gICAgY29uc3QgcGF0aCA9IHJlbGF0aXZlKGNvbmZpZy5yb290LCBmaWxlcGF0aClcbiAgICBjb25zdCBmaWxlOiBGaWxlID0ge1xuICAgICAgaWQ6IGhhc2gocGF0aCksXG4gICAgICBuYW1lOiBwYXRoLFxuICAgICAgdHlwZTogJ3N1aXRlJyxcbiAgICAgIG1vZGU6ICdydW4nLFxuICAgICAgZmlsZXBhdGgsXG4gICAgICB0YXNrczogW10sXG4gICAgfVxuXG4gICAgY2xlYXJDb250ZXh0KClcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcnVuU2V0dXBGaWxlcyhjb25maWcpXG4gICAgICBhd2FpdCBpbXBvcnQoZmlsZXBhdGgpXG5cbiAgICAgIGNvbnN0IGRlZmF1bHRUYXNrcyA9IGF3YWl0IGRlZmF1bHRTdWl0ZS5jb2xsZWN0KGZpbGUpXG5cbiAgICAgIHNldEhvb2tzKGZpbGUsIGdldEhvb2tzKGRlZmF1bHRUYXNrcykpXG5cbiAgICAgIGZvciAoY29uc3QgYyBvZiBbLi4uZGVmYXVsdFRhc2tzLnRhc2tzLCAuLi5jb250ZXh0LnRhc2tzXSkge1xuICAgICAgICBpZiAoYy50eXBlID09PSAndGVzdCcpIHtcbiAgICAgICAgICBmaWxlLnRhc2tzLnB1c2goYylcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjLnR5cGUgPT09ICdzdWl0ZScpIHtcbiAgICAgICAgICBmaWxlLnRhc2tzLnB1c2goYylcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpXG4gICAgICAgICAgY29uc3Qgc3VpdGUgPSBhd2FpdCBjLmNvbGxlY3QoZmlsZSlcbiAgICAgICAgICBmaWxlLmNvbGxlY3REdXJhdGlvbiA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRcbiAgICAgICAgICBpZiAoc3VpdGUubmFtZSB8fCBzdWl0ZS50YXNrcy5sZW5ndGgpXG4gICAgICAgICAgICBmaWxlLnRhc2tzLnB1c2goc3VpdGUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgIGZpbGUucmVzdWx0ID0ge1xuICAgICAgICBzdGF0ZTogJ2ZhaWwnLFxuICAgICAgICBlcnJvcjogcHJvY2Vzc0Vycm9yKGUpLFxuICAgICAgfVxuICAgICAgLy8gbm90IHN1cmUgdGh5LCB0aGlzIHRoaXMgbGluZSBpcyBuZWVkZWQgdG8gdHJpZ2dlciB0aGUgZXJyb3JcbiAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcXDAnKVxuICAgIH1cblxuICAgIGNhbGN1bGF0ZUhhc2goZmlsZSlcblxuICAgIGludGVycHJldFRhc2tNb2RlcyhmaWxlLCBjb25maWcudGVzdE5hbWVQYXR0ZXJuKVxuXG4gICAgZmlsZXMucHVzaChmaWxlKVxuICB9XG5cbiAgcmV0dXJuIGZpbGVzXG59XG5cbi8qKlxuICogSWYgYW55IHRhc2tzIGJlZW4gbWFya2VkIGFzIGBvbmx5YCwgbWFyayBhbGwgb3RoZXIgdGFza3MgYXMgYHNraXBgLlxuICovXG5mdW5jdGlvbiBpbnRlcnByZXRUYXNrTW9kZXMoc3VpdGU6IFN1aXRlLCBuYW1lUGF0dGVybj86IHN0cmluZyB8IFJlZ0V4cCwgb25seU1vZGU/OiBib29sZWFuKSB7XG4gIGlmIChvbmx5TW9kZSA9PT0gdW5kZWZpbmVkKVxuICAgIG9ubHlNb2RlID0gc29tZVRhc2tzQXJlT25seShzdWl0ZSlcblxuICBzdWl0ZS50YXNrcy5mb3JFYWNoKCh0KSA9PiB7XG4gICAgaWYgKG9ubHlNb2RlKSB7XG4gICAgICBpZiAodC50eXBlID09PSAnc3VpdGUnICYmIHNvbWVUYXNrc0FyZU9ubHkodCkpIHtcbiAgICAgICAgLy8gRG9uJ3Qgc2tpcCB0aGlzIHN1aXRlXG4gICAgICAgIGlmICh0Lm1vZGUgPT09ICdvbmx5JylcbiAgICAgICAgICB0Lm1vZGUgPSAncnVuJ1xuICAgICAgICBpbnRlcnByZXRUYXNrTW9kZXModCwgbmFtZVBhdHRlcm4sIG9ubHlNb2RlKVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAodC5tb2RlID09PSAncnVuJykgeyB0Lm1vZGUgPSAnc2tpcCcgfVxuICAgICAgZWxzZSBpZiAodC5tb2RlID09PSAnb25seScpIHsgdC5tb2RlID0gJ3J1bicgfVxuICAgIH1cbiAgICBpZiAodC50eXBlID09PSAndGVzdCcpIHtcbiAgICAgIGlmIChuYW1lUGF0dGVybiAmJiAhdC5uYW1lLm1hdGNoKG5hbWVQYXR0ZXJuKSlcbiAgICAgICAgdC5tb2RlID0gJ3NraXAnXG4gICAgfVxuICAgIGVsc2UgaWYgKHQudHlwZSA9PT0gJ3N1aXRlJykge1xuICAgICAgaWYgKHQubW9kZSA9PT0gJ3NraXAnKVxuICAgICAgICBza2lwQWxsVGFza3ModClcblxuICAgICAgLy8gaWYgYWxsIHN1YnRhc2tzIGFyZSBza2lwcGVkLCBtYXJrZWQgYXMgc2tpcFxuICAgICAgaWYgKHQubW9kZSA9PT0gJ3J1bicpIHtcbiAgICAgICAgaWYgKHQudGFza3MuZXZlcnkoaSA9PiBpLm1vZGUgIT09ICdydW4nKSlcbiAgICAgICAgICB0Lm1vZGUgPSAnc2tpcCdcbiAgICAgIH1cbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIHNvbWVUYXNrc0FyZU9ubHkoc3VpdGU6IFN1aXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBzdWl0ZS50YXNrcy5zb21lKHQgPT4gdC5tb2RlID09PSAnb25seScgfHwgKHQudHlwZSA9PT0gJ3N1aXRlJyAmJiBzb21lVGFza3NBcmVPbmx5KHQpKSlcbn1cblxuZnVuY3Rpb24gc2tpcEFsbFRhc2tzKHN1aXRlOiBTdWl0ZSkge1xuICBzdWl0ZS50YXNrcy5mb3JFYWNoKCh0KSA9PiB7XG4gICAgaWYgKHQubW9kZSA9PT0gJ3J1bicpIHtcbiAgICAgIHQubW9kZSA9ICdza2lwJ1xuICAgICAgaWYgKHQudHlwZSA9PT0gJ3N1aXRlJylcbiAgICAgICAgc2tpcEFsbFRhc2tzKHQpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVIYXNoKHBhcmVudDogU3VpdGUpIHtcbiAgcGFyZW50LnRhc2tzLmZvckVhY2goKHQsIGlkeCkgPT4ge1xuICAgIHQuaWQgPSBgJHtwYXJlbnQuaWR9XyR7aWR4fWBcbiAgICBpZiAodC50eXBlID09PSAnc3VpdGUnKVxuICAgICAgY2FsY3VsYXRlSGFzaCh0KVxuICB9KVxufVxuIiwiaW1wb3J0IHsgcGVyZm9ybWFuY2UgfSBmcm9tICdwZXJmX2hvb2tzJ1xuaW1wb3J0IHR5cGUgeyBIb29rTGlzdGVuZXIsIFJlc29sdmVkQ29uZmlnLCBTdWl0ZSwgU3VpdGVIb29rcywgVGFzaywgVGFza1Jlc3VsdCwgVGVzdCB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgdmkgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbnMvdmknXG5pbXBvcnQgeyBnZXRTbmFwc2hvdENsaWVudCB9IGZyb20gJy4uL2ludGVncmF0aW9ucy9zbmFwc2hvdC9jaGFpJ1xuaW1wb3J0IHsgaGFzRmFpbGVkLCBoYXNUZXN0cywgcGFydGl0aW9uU3VpdGVDaGlsZHJlbiB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgZ2V0U3RhdGUsIHNldFN0YXRlIH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL2NoYWkvamVzdC1leHBlY3QnXG5pbXBvcnQgeyBnZXRGbiwgZ2V0SG9va3MgfSBmcm9tICcuL21hcCdcbmltcG9ydCB7IHJwYyB9IGZyb20gJy4vcnBjJ1xuaW1wb3J0IHsgY29sbGVjdFRlc3RzIH0gZnJvbSAnLi9jb2xsZWN0J1xuaW1wb3J0IHsgcHJvY2Vzc0Vycm9yIH0gZnJvbSAnLi9lcnJvcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNhbGxTdWl0ZUhvb2s8VCBleHRlbmRzIGtleW9mIFN1aXRlSG9va3M+KHN1aXRlOiBTdWl0ZSwgbmFtZTogVCwgYXJnczogU3VpdGVIb29rc1tUXVswXSBleHRlbmRzIEhvb2tMaXN0ZW5lcjxpbmZlciBBPiA/IEEgOiBuZXZlcikge1xuICBpZiAobmFtZSA9PT0gJ2JlZm9yZUVhY2gnICYmIHN1aXRlLnN1aXRlKVxuICAgIGF3YWl0IGNhbGxTdWl0ZUhvb2soc3VpdGUuc3VpdGUsIG5hbWUsIGFyZ3MpXG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoZ2V0SG9va3Moc3VpdGUpW25hbWVdLm1hcChmbiA9PiBmbiguLi4oYXJncyBhcyBhbnkpKSkpXG5cbiAgaWYgKG5hbWUgPT09ICdhZnRlckVhY2gnICYmIHN1aXRlLnN1aXRlKVxuICAgIGF3YWl0IGNhbGxTdWl0ZUhvb2soc3VpdGUuc3VpdGUsIG5hbWUsIGFyZ3MpXG59XG5cbmNvbnN0IHBhY2tzID0gbmV3IE1hcDxzdHJpbmcsIFRhc2tSZXN1bHR8dW5kZWZpbmVkPigpXG5sZXQgdXBkYXRlVGltZXI6IGFueVxubGV0IHByZXZpb3VzVXBkYXRlOiBQcm9taXNlPHZvaWQ+fHVuZGVmaW5lZFxuXG5mdW5jdGlvbiB1cGRhdGVUYXNrKHRhc2s6IFRhc2spIHtcbiAgcGFja3Muc2V0KHRhc2suaWQsIHRhc2sucmVzdWx0KVxuXG4gIGNsZWFyVGltZW91dCh1cGRhdGVUaW1lcilcbiAgdXBkYXRlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBwcmV2aW91c1VwZGF0ZSA9IHNlbmRUYXNrc1VwZGF0ZSgpXG4gIH0sIDEwKVxufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kVGFza3NVcGRhdGUoKSB7XG4gIGNsZWFyVGltZW91dCh1cGRhdGVUaW1lcilcbiAgYXdhaXQgcHJldmlvdXNVcGRhdGVcblxuICBpZiAocGFja3Muc2l6ZSkge1xuICAgIGNvbnN0IHAgPSBycGMoKS5vblRhc2tVcGRhdGUoQXJyYXkuZnJvbShwYWNrcykpXG4gICAgcGFja3MuY2xlYXIoKVxuICAgIHJldHVybiBwXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blRlc3QodGVzdDogVGVzdCkge1xuICBpZiAodGVzdC5tb2RlICE9PSAncnVuJylcbiAgICByZXR1cm5cblxuICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpXG5cbiAgdGVzdC5yZXN1bHQgPSB7XG4gICAgc3RhdGU6ICdydW4nLFxuICB9XG4gIHVwZGF0ZVRhc2sodGVzdClcblxuICBjbGVhck1vZHVsZU1vY2tzKClcblxuICBnZXRTbmFwc2hvdENsaWVudCgpLnNldFRlc3QodGVzdClcblxuICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmN1cnJlbnQgPSB0ZXN0XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBjYWxsU3VpdGVIb29rKHRlc3Quc3VpdGUsICdiZWZvcmVFYWNoJywgW3Rlc3QsIHRlc3Quc3VpdGVdKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIGFzc2VydGlvbkNhbGxzOiAwLFxuICAgICAgaXNFeHBlY3RpbmdBc3NlcnRpb25zOiBmYWxzZSxcbiAgICAgIGlzRXhwZWN0aW5nQXNzZXJ0aW9uc0Vycm9yOiBudWxsLFxuICAgICAgZXhwZWN0ZWRBc3NlcnRpb25zTnVtYmVyOiBudWxsLFxuICAgICAgZXhwZWN0ZWRBc3NlcnRpb25zTnVtYmVyRXJyb3I6IG51bGwsXG4gICAgfSlcbiAgICBhd2FpdCBnZXRGbih0ZXN0KSgpXG4gICAgY29uc3QgeyBhc3NlcnRpb25DYWxscywgZXhwZWN0ZWRBc3NlcnRpb25zTnVtYmVyLCBleHBlY3RlZEFzc2VydGlvbnNOdW1iZXJFcnJvciwgaXNFeHBlY3RpbmdBc3NlcnRpb25zLCBpc0V4cGVjdGluZ0Fzc2VydGlvbnNFcnJvciB9ID0gZ2V0U3RhdGUoKVxuICAgIGlmIChleHBlY3RlZEFzc2VydGlvbnNOdW1iZXIgIT09IG51bGwgJiYgYXNzZXJ0aW9uQ2FsbHMgIT09IGV4cGVjdGVkQXNzZXJ0aW9uc051bWJlcilcbiAgICAgIHRocm93IGV4cGVjdGVkQXNzZXJ0aW9uc051bWJlckVycm9yXG4gICAgaWYgKGlzRXhwZWN0aW5nQXNzZXJ0aW9ucyA9PT0gdHJ1ZSAmJiBhc3NlcnRpb25DYWxscyA9PT0gMClcbiAgICAgIHRocm93IGlzRXhwZWN0aW5nQXNzZXJ0aW9uc0Vycm9yXG5cbiAgICB0ZXN0LnJlc3VsdC5zdGF0ZSA9ICdwYXNzJ1xuICB9XG4gIGNhdGNoIChlKSB7XG4gICAgdGVzdC5yZXN1bHQuc3RhdGUgPSAnZmFpbCdcbiAgICB0ZXN0LnJlc3VsdC5lcnJvciA9IHByb2Nlc3NFcnJvcihlKVxuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBjYWxsU3VpdGVIb29rKHRlc3Quc3VpdGUsICdhZnRlckVhY2gnLCBbdGVzdCwgdGVzdC5zdWl0ZV0pXG4gIH1cbiAgY2F0Y2ggKGUpIHtcbiAgICB0ZXN0LnJlc3VsdC5zdGF0ZSA9ICdmYWlsJ1xuICAgIHRlc3QucmVzdWx0LmVycm9yID0gcHJvY2Vzc0Vycm9yKGUpXG4gIH1cblxuICAvLyBpZiB0ZXN0IGlzIG1hcmtlZCB0byBiZSBmYWlsZWQsIGZsaXAgdGhlIHJlc3VsdFxuICBpZiAodGVzdC5mYWlscykge1xuICAgIGlmICh0ZXN0LnJlc3VsdC5zdGF0ZSA9PT0gJ3Bhc3MnKSB7XG4gICAgICB0ZXN0LnJlc3VsdC5zdGF0ZSA9ICdmYWlsJ1xuICAgICAgdGVzdC5yZXN1bHQuZXJyb3IgPSBwcm9jZXNzRXJyb3IobmV3IEVycm9yKCdFeHBlY3QgdGVzdCB0byBmYWlsJykpXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGVzdC5yZXN1bHQuc3RhdGUgPSAncGFzcydcbiAgICAgIHRlc3QucmVzdWx0LmVycm9yID0gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgZ2V0U25hcHNob3RDbGllbnQoKS5jbGVhclRlc3QoKVxuXG4gIHRlc3QucmVzdWx0LmR1cmF0aW9uID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFxuXG4gIHByb2Nlc3MuX192aXRlc3Rfd29ya2VyX18uY3VycmVudCA9IHVuZGVmaW5lZFxuXG4gIHVwZGF0ZVRhc2sodGVzdClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blN1aXRlKHN1aXRlOiBTdWl0ZSkge1xuICBpZiAoc3VpdGUucmVzdWx0Py5zdGF0ZSA9PT0gJ2ZhaWwnKVxuICAgIHJldHVyblxuXG4gIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KClcblxuICBzdWl0ZS5yZXN1bHQgPSB7XG4gICAgc3RhdGU6ICdydW4nLFxuICB9XG5cbiAgdXBkYXRlVGFzayhzdWl0ZSlcblxuICBpZiAoc3VpdGUubW9kZSA9PT0gJ3NraXAnKSB7XG4gICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ3NraXAnXG4gIH1cbiAgZWxzZSBpZiAoc3VpdGUubW9kZSA9PT0gJ3RvZG8nKSB7XG4gICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ3RvZG8nXG4gIH1cbiAgZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNhbGxTdWl0ZUhvb2soc3VpdGUsICdiZWZvcmVBbGwnLCBbc3VpdGVdKVxuXG4gICAgICBmb3IgKGNvbnN0IHRhc2tzR3JvdXAgb2YgcGFydGl0aW9uU3VpdGVDaGlsZHJlbihzdWl0ZSkpIHtcbiAgICAgICAgaWYgKHRhc2tzR3JvdXBbMF0uY29uY3VycmVudCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHRhc2tzR3JvdXAubWFwKGMgPT4gcnVuU3VpdGVDaGlsZChjKSkpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZm9yIChjb25zdCBjIG9mIHRhc2tzR3JvdXApXG4gICAgICAgICAgICBhd2FpdCBydW5TdWl0ZUNoaWxkKGMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXdhaXQgY2FsbFN1aXRlSG9vayhzdWl0ZSwgJ2FmdGVyQWxsJywgW3N1aXRlXSlcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgIHN1aXRlLnJlc3VsdC5zdGF0ZSA9ICdmYWlsJ1xuICAgICAgc3VpdGUucmVzdWx0LmVycm9yID0gcHJvY2Vzc0Vycm9yKGUpXG4gICAgfVxuICB9XG4gIHN1aXRlLnJlc3VsdC5kdXJhdGlvbiA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRcblxuICBpZiAoc3VpdGUubW9kZSA9PT0gJ3J1bicpIHtcbiAgICBpZiAoIWhhc1Rlc3RzKHN1aXRlKSkge1xuICAgICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ2ZhaWwnXG4gICAgICBpZiAoIXN1aXRlLnJlc3VsdC5lcnJvcilcbiAgICAgICAgc3VpdGUucmVzdWx0LmVycm9yID0gbmV3IEVycm9yKGBObyB0ZXN0cyBmb3VuZCBpbiBzdWl0ZSAke3N1aXRlLm5hbWV9YClcbiAgICB9XG4gICAgZWxzZSBpZiAoaGFzRmFpbGVkKHN1aXRlKSkge1xuICAgICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ2ZhaWwnXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc3VpdGUucmVzdWx0LnN0YXRlID0gJ3Bhc3MnXG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVGFzayhzdWl0ZSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuU3VpdGVDaGlsZChjOiBUYXNrKSB7XG4gIHJldHVybiBjLnR5cGUgPT09ICd0ZXN0J1xuICAgID8gcnVuVGVzdChjKVxuICAgIDogcnVuU3VpdGUoYylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blN1aXRlcyhzdWl0ZXM6IFN1aXRlW10pIHtcbiAgZm9yIChjb25zdCBzdWl0ZSBvZiBzdWl0ZXMpXG4gICAgYXdhaXQgcnVuU3VpdGUoc3VpdGUpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydFRlc3RzKHBhdGhzOiBzdHJpbmdbXSwgY29uZmlnOiBSZXNvbHZlZENvbmZpZykge1xuICBjb25zdCBmaWxlcyA9IGF3YWl0IGNvbGxlY3RUZXN0cyhwYXRocywgY29uZmlnKVxuXG4gIHJwYygpLm9uQ29sbGVjdGVkKGZpbGVzKVxuXG4gIGF3YWl0IHJ1blN1aXRlcyhmaWxlcylcblxuICBhd2FpdCBnZXRTbmFwc2hvdENsaWVudCgpLnNhdmVTbmFwKClcblxuICBhd2FpdCBzZW5kVGFza3NVcGRhdGUoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJNb2R1bGVNb2NrcygpIHtcbiAgY29uc3QgeyBjbGVhck1vY2tzLCBtb2NrUmVzZXQsIHJlc3RvcmVNb2NrcyB9ID0gcHJvY2Vzcy5fX3ZpdGVzdF93b3JrZXJfXy5jb25maWdcblxuICAvLyBzaW5jZSBlYWNoIGZ1bmN0aW9uIGNhbGxzIGFub3RoZXIsIHdlIGNhbiBqdXN0IGNhbGwgb25lXG4gIGlmIChyZXN0b3JlTW9ja3MpXG4gICAgdmkucmVzdG9yZUFsbE1vY2tzKClcbiAgZWxzZSBpZiAobW9ja1Jlc2V0KVxuICAgIHZpLnJlc2V0QWxsTW9ja3MoKVxuICBlbHNlIGlmIChjbGVhck1vY2tzKVxuICAgIHZpLmNsZWFyQWxsTW9ja3MoKVxufVxuIiwiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcydcbmltcG9ydCB0eXBlIHsgQnVpbHRpbkVudmlyb25tZW50LCBSZXNvbHZlZENvbmZpZyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgdmkgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbnMvdmknXG5pbXBvcnQgeyBzZXR1cEdsb2JhbEVudiwgd2l0aEVudiB9IGZyb20gJy4vc2V0dXAnXG5pbXBvcnQgeyBzdGFydFRlc3RzIH0gZnJvbSAnLi9ydW4nXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW4oZmlsZXM6IHN0cmluZ1tdLCBjb25maWc6IFJlc29sdmVkQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHNldHVwR2xvYmFsRW52KGNvbmZpZylcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBjb25zdCBjb2RlID0gYXdhaXQgZnMucmVhZEZpbGUoZmlsZSwgJ3V0Zi04JylcblxuICAgIGNvbnN0IGVudiA9IGNvZGUubWF0Y2goL0AoPzp2aXRlc3R8amVzdCktZW52aXJvbm1lbnRcXHMrPyhbXFx3LV0rKVxcYi8pPy5bMV0gfHwgY29uZmlnLmVudmlyb25tZW50IHx8ICdub2RlJ1xuXG4gICAgaWYgKCFbJ25vZGUnLCAnanNkb20nLCAnaGFwcHktZG9tJ10uaW5jbHVkZXMoZW52KSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZW52aXJvbm1lbnQ6ICR7ZW52fWApXG5cbiAgICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmZpbGVwYXRoID0gZmlsZVxuXG4gICAgdmkucmVzdG9yZUFsbE1vY2tzKClcblxuICAgIGF3YWl0IHdpdGhFbnYoZW52IGFzIEJ1aWx0aW5FbnZpcm9ubWVudCwgYXN5bmMoKSA9PiB7XG4gICAgICBhd2FpdCBzdGFydFRlc3RzKFtmaWxlXSwgY29uZmlnKVxuICAgIH0pXG5cbiAgICBwcm9jZXNzLl9fdml0ZXN0X3dvcmtlcl9fLmZpbGVwYXRoID0gdW5kZWZpbmVkXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJyZXF1aXJlIiwidGhpcyIsImZzIiwibmF0dXJhbENvbXBhcmVNb2R1bGUiLCJfX2RlZlByb3AiLCJfX2dldE93blByb3BTeW1ib2xzIiwiX19oYXNPd25Qcm9wIiwiX19wcm9wSXNFbnVtIiwiX19kZWZOb3JtYWxQcm9wIiwiX19zcHJlYWRWYWx1ZXMiLCJwcmV0dHlGb3JtYXQiLCJwYXRoIiwibmF0dXJhbENvbXBhcmUiLCJmc3AiLCJBc3ltbWV0cmljTWF0Y2hlciIsInByZXR0eUZvcm1hdFBsdWdpbnMiLCJjaGFpIiwicGVyZm9ybWFuY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxXQUFlO0FBQ2YsRUFBRSxJQUFJLEVBQUUsTUFBTTtBQUNkLEVBQUUsTUFBTSxLQUFLLEdBQUc7QUFDaEIsSUFBSSxPQUFPO0FBQ1gsTUFBTSxRQUFRLEdBQUc7QUFDakIsT0FBTztB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
|